babl: make unified alpha conversion branchless
authorØyvind Kolås <pippin@gimp.org>
Wed, 26 Jan 2022 11:23:37 +0000 (12:23 +0100)
committerØyvind Kolås <pippin@gimp.org>
Wed, 26 Jan 2022 11:23:37 +0000 (12:23 +0100)
babl/base/util.h

index aba9c61f34c9ebade018d43a7ffdd23f60f27c05..9f46211519897d8eff2eec3d6901acc94d877b37 100644 (file)
 static inline double
 babl_epsilon_for_zero (double value)
 {
- if (value <=  BABL_ALPHA_FLOOR &&
-     value >= -BABL_ALPHA_FLOOR)
- {
-   return BABL_ALPHA_FLOOR;
- }
- return value;
+   return value * (value >  BABL_ALPHA_FLOOR || value < -BABL_ALPHA_FLOOR) +
+          BABL_ALPHA_FLOOR * (value <=  BABL_ALPHA_FLOOR &&
+                              value >= -BABL_ALPHA_FLOOR);
 }
 
 static inline float
 babl_epsilon_for_zero_float (float value)
 {
- if (value <= BABL_ALPHA_FLOOR_F &&
-     value >= -BABL_ALPHA_FLOOR_F)
- {
-   return BABL_ALPHA_FLOOR_F;
- }
- return value;
+   return value * (value >  BABL_ALPHA_FLOOR_F || value < -BABL_ALPHA_FLOOR_F) +
+          BABL_ALPHA_FLOOR * (value <=  BABL_ALPHA_FLOOR_F &&
+                              value >= -BABL_ALPHA_FLOOR_F);
 }