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(z \cdot y + 1\right) + \left(-1\right) \cdot \left(x \cdot z\right)\\
\end{array}double f(double x, double y, double z) {
double r929448 = x;
double r929449 = 1.0;
double r929450 = y;
double r929451 = r929449 - r929450;
double r929452 = z;
double r929453 = r929451 * r929452;
double r929454 = r929449 - r929453;
double r929455 = r929448 * r929454;
return r929455;
}
double f(double x, double y, double z) {
double r929456 = z;
double r929457 = -5.928829482005966e+90;
bool r929458 = r929456 <= r929457;
double r929459 = 2.1856788904363955e-58;
bool r929460 = r929456 <= r929459;
double r929461 = !r929460;
bool r929462 = r929458 || r929461;
double r929463 = x;
double r929464 = 1.0;
double r929465 = r929463 * r929464;
double r929466 = y;
double r929467 = r929463 * r929456;
double r929468 = r929466 * r929467;
double r929469 = -r929464;
double r929470 = r929469 * r929467;
double r929471 = r929468 + r929470;
double r929472 = r929465 + r929471;
double r929473 = r929456 * r929466;
double r929474 = r929473 + r929464;
double r929475 = r929463 * r929474;
double r929476 = r929475 + r929470;
double r929477 = r929462 ? r929472 : r929476;
return r929477;
}




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
Simplified2.6
Simplified2.6
rmApplied 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))))