commit db32818ba9ebe683fba199aba6cd0a7c7ca30fef
parent 46db111e949c4b36737f81fb217e5e72f4f198ba
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date: Tue, 30 Jun 2026 01:34:09 +0200
mhd_predict: minor code and description improvements
Diffstat:
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/mhd2/mhd_predict.h b/src/mhd2/mhd_predict.h
@@ -101,14 +101,16 @@
*
* Hint that @p cond is expected to be true with probability @p prob.
*
- * @param cond Boolean-like expression; evaluated exactly once.
- * @param prob Anticipated probability in the range [0.0, 1.0].
- * Only compile-time constants; avoid 0.0 or 1.0.
- *
* Expands to compiler-specific intrinsics when available; otherwise to
* a boolean normalisation of @p cond.
*
+ * @param cond Boolean-like expression; evaluated exactly once.
+ * @param prob Anticipated probability in the range (0.5, 1.0].
+ * Only compile-time constants; avoid 1.0.
+ *
* @see mhd_COND_PRED_FALSE_P
+ * @warning Technically, @a prob is accepted in the range [0.0, 1.0], but for
+ * values lower than 0.5 #mhd_COND_PRED_FALSE_P() must be used instead
*/
/**
@@ -116,14 +118,16 @@
*
* Hint that @p cond is expected to be false with probability @p prob.
*
- * @param cond Boolean-like expression; evaluated exactly once.
- * @param prob Anticipated probability in the range [0.0, 1.0].
- * Only compile-time constants; avoid 0.0 or 1.0.
- *
* Expands to compiler-specific intrinsics when available; otherwise to
* a boolean normalisation of @p cond.
*
+ * @param cond Boolean-like expression; evaluated exactly once.
+ * @param prob Anticipated probability in the range (0.5, 1.0].
+ * Only compile-time constants; avoid 1.0.
+ *
* @see mhd_COND_PRED_TRUE_P
+ * @warning Technically, @a prob is accepted in the range [0.0, 1.0], but for
+ * values lower than 0.5 #mhd_COND_PRED_TRUE_P() must be used instead
*/
@@ -133,8 +137,10 @@
# define mhd_COND_PRED_FALSE_P(cond,prob) \
__builtin_expect_with_probability (! ! (cond), 0, (prob))
#elif defined(MHD_HAVE___BUILTIN_EXPECT)
-# define mhd_COND_PRED_TRUE_P(cond,prob) __builtin_expect (! ! (cond), ! 0)
-# define mhd_COND_PRED_FALSE_P(cond,prob) __builtin_expect (! ! (cond), 0)
+# define mhd_COND_PRED_TRUE_P(cond,prob) \
+ (((prob) < 0.85) ? (! ! (cond)) : (__builtin_expect (! ! (cond), ! 0)))
+# define mhd_COND_PRED_FALSE_P(cond,prob) \
+ (((prob) < 0.85) ? (! ! (cond)) : (__builtin_expect (! ! (cond), 0)))
#else
# define mhd_COND_PRED_TRUE_P(cond,prob) (! ! (cond))
# define mhd_COND_PRED_FALSE_P(cond,prob) (! ! (cond))