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 -7.90404110154511993349936181731768963248 \cdot 10^{122}:\\
\;\;\;\;\left(x \cdot z\right) \cdot \left(y - 1\right) + 1 \cdot x\\
\mathbf{elif}\;x \cdot \left(1 - \left(1 - y\right) \cdot z\right) \le 6.021354150296090950226088461595639164278 \cdot 10^{289}:\\
\;\;\;\;x \cdot \left(1 - \left(1 - y\right) \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left(x \cdot z\right) \cdot \left(y - 1\right)} \cdot \sqrt{\left(x \cdot z\right) \cdot \left(y - 1\right)} + 1 \cdot x\\
\end{array}double f(double x, double y, double z) {
double r560926 = x;
double r560927 = 1.0;
double r560928 = y;
double r560929 = r560927 - r560928;
double r560930 = z;
double r560931 = r560929 * r560930;
double r560932 = r560927 - r560931;
double r560933 = r560926 * r560932;
return r560933;
}
double f(double x, double y, double z) {
double r560934 = x;
double r560935 = 1.0;
double r560936 = y;
double r560937 = r560935 - r560936;
double r560938 = z;
double r560939 = r560937 * r560938;
double r560940 = r560935 - r560939;
double r560941 = r560934 * r560940;
double r560942 = -7.90404110154512e+122;
bool r560943 = r560941 <= r560942;
double r560944 = r560934 * r560938;
double r560945 = r560936 - r560935;
double r560946 = r560944 * r560945;
double r560947 = r560935 * r560934;
double r560948 = r560946 + r560947;
double r560949 = 6.021354150296091e+289;
bool r560950 = r560941 <= r560949;
double r560951 = sqrt(r560946);
double r560952 = r560951 * r560951;
double r560953 = r560952 + r560947;
double r560954 = r560950 ? r560941 : r560953;
double r560955 = r560943 ? r560948 : r560954;
return r560955;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if (* x (- 1.0 (* (- 1.0 y) z))) < -7.90404110154512e+122Initial program 9.7
rmApplied add-cube-cbrt10.7
Applied associate-*l*10.8
Taylor expanded around inf 9.7
Simplified0.1
if -7.90404110154512e+122 < (* x (- 1.0 (* (- 1.0 y) z))) < 6.021354150296091e+289Initial program 0.1
if 6.021354150296091e+289 < (* x (- 1.0 (* (- 1.0 y) z))) Initial program 41.1
rmApplied add-cube-cbrt41.6
Applied associate-*l*41.6
Taylor expanded around inf 41.1
Simplified0.2
rmApplied add-sqr-sqrt5.2
Final simplification0.3
herbie shell --seed 2019209
(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.618195973607049e50) (+ x (* (- 1 y) (* (- z) x))) (if (< (* x (- 1 (* (- 1 y) z))) 3.8922376496639029e134) (- (* (* x y) z) (- (* x z) x)) (+ x (* (- 1 y) (* (- z) x)))))
(* x (- 1 (* (- 1 y) z))))