x \cdot \left(1 - \left(1 - y\right) \cdot z\right)
\begin{array}{l}
\mathbf{if}\;x \cdot \left(1 - \left(1 - y\right) \cdot z\right) \le -4.194512825229324040414611934367407088033 \cdot 10^{-71}:\\
\;\;\;\;\left(z \cdot x\right) \cdot \left(y - 1\right) + x \cdot 1\\
\mathbf{elif}\;x \cdot \left(1 - \left(1 - y\right) \cdot z\right) \le 2.494010892277929670817330989669207182789 \cdot 10^{221}:\\
\;\;\;\;x \cdot \left(1 - \left(1 - y\right) \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\left(z \cdot x\right) \cdot \left(y - 1\right) + x \cdot 1\\
\end{array}double f(double x, double y, double z) {
double r26142549 = x;
double r26142550 = 1.0;
double r26142551 = y;
double r26142552 = r26142550 - r26142551;
double r26142553 = z;
double r26142554 = r26142552 * r26142553;
double r26142555 = r26142550 - r26142554;
double r26142556 = r26142549 * r26142555;
return r26142556;
}
double f(double x, double y, double z) {
double r26142557 = x;
double r26142558 = 1.0;
double r26142559 = y;
double r26142560 = r26142558 - r26142559;
double r26142561 = z;
double r26142562 = r26142560 * r26142561;
double r26142563 = r26142558 - r26142562;
double r26142564 = r26142557 * r26142563;
double r26142565 = -4.194512825229324e-71;
bool r26142566 = r26142564 <= r26142565;
double r26142567 = r26142561 * r26142557;
double r26142568 = r26142559 - r26142558;
double r26142569 = r26142567 * r26142568;
double r26142570 = r26142557 * r26142558;
double r26142571 = r26142569 + r26142570;
double r26142572 = 2.4940108922779297e+221;
bool r26142573 = r26142564 <= r26142572;
double r26142574 = r26142573 ? r26142564 : r26142571;
double r26142575 = r26142566 ? r26142571 : r26142574;
return r26142575;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if (* x (- 1.0 (* (- 1.0 y) z))) < -4.194512825229324e-71 or 2.4940108922779297e+221 < (* x (- 1.0 (* (- 1.0 y) z))) Initial program 7.7
rmApplied add-cube-cbrt8.8
Applied associate-*l*8.8
Taylor expanded around inf 7.7
Simplified0.2
if -4.194512825229324e-71 < (* x (- 1.0 (* (- 1.0 y) z))) < 2.4940108922779297e+221Initial program 0.1
Final simplification0.1
herbie shell --seed 2019179
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, J"
:herbie-target
(if (< (* x (- 1.0 (* (- 1.0 y) z))) -1.618195973607049e+50) (+ x (* (- 1.0 y) (* (- z) x))) (if (< (* x (- 1.0 (* (- 1.0 y) z))) 3.892237649663903e+134) (- (* (* x y) z) (- (* x z) x)) (+ x (* (- 1.0 y) (* (- z) x)))))
(* x (- 1.0 (* (- 1.0 y) z))))