x \cdot \left(1 - \left(1 - y\right) \cdot z\right)
\begin{array}{l}
\mathbf{if}\;z \le -5.92882948200596562 \cdot 10^{90} \lor \neg \left(z \le 2.1856788904363955 \cdot 10^{-58}\right):\\
\;\;\;\;x \cdot 1 + \left(y \cdot \left(x \cdot z\right) + \left(-1\right) \cdot \left(x \cdot z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(1 + z \cdot y\right) + \left(x \cdot z\right) \cdot \left(-1\right)\\
\end{array}double f(double x, double y, double z) {
double r964253 = x;
double r964254 = 1.0;
double r964255 = y;
double r964256 = r964254 - r964255;
double r964257 = z;
double r964258 = r964256 * r964257;
double r964259 = r964254 - r964258;
double r964260 = r964253 * r964259;
return r964260;
}
double f(double x, double y, double z) {
double r964261 = z;
double r964262 = -5.928829482005966e+90;
bool r964263 = r964261 <= r964262;
double r964264 = 2.1856788904363955e-58;
bool r964265 = r964261 <= r964264;
double r964266 = !r964265;
bool r964267 = r964263 || r964266;
double r964268 = x;
double r964269 = 1.0;
double r964270 = r964268 * r964269;
double r964271 = y;
double r964272 = r964268 * r964261;
double r964273 = r964271 * r964272;
double r964274 = -r964269;
double r964275 = r964274 * r964272;
double r964276 = r964273 + r964275;
double r964277 = r964270 + r964276;
double r964278 = r964261 * r964271;
double r964279 = r964269 + r964278;
double r964280 = r964268 * r964279;
double r964281 = r964272 * r964274;
double r964282 = r964280 + r964281;
double r964283 = r964267 ? r964277 : r964282;
return r964283;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if z < -5.928829482005966e+90 or 2.1856788904363955e-58 < z Initial program 9.0
rmApplied sub-neg9.0
Applied distribute-lft-in9.0
Simplified0.2
rmApplied sub-neg0.2
Applied distribute-lft-in0.2
Simplified0.2
Simplified0.2
if -5.928829482005966e+90 < z < 2.1856788904363955e-58Initial program 0.4
rmApplied sub-neg0.4
Applied distribute-lft-in0.4
Simplified2.6
rmApplied sub-neg2.6
Applied distribute-lft-in2.6
Applied associate-+r+2.6
Simplified0.4
Final simplification0.3
herbie shell --seed 2020046
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, J"
:precision binary64
:herbie-target
(if (< (* x (- 1 (* (- 1 y) z))) -1.618195973607049e+50) (+ x (* (- 1 y) (* (- z) x))) (if (< (* x (- 1 (* (- 1 y) z))) 3.892237649663903e+134) (- (* (* x y) z) (- (* x z) x)) (+ x (* (- 1 y) (* (- z) x)))))
(* x (- 1 (* (- 1 y) z))))