x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} = -\infty:\\
\;\;\;\;x + \frac{y - z}{\frac{a - z}{t - x}}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -2.83283552082506149 \cdot 10^{-308}:\\
\;\;\;\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \frac{\left(t - x\right) \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}}{{\left(\sqrt[3]{\sqrt[3]{a - z}}\right)}^{3}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r637955 = x;
double r637956 = y;
double r637957 = z;
double r637958 = r637956 - r637957;
double r637959 = t;
double r637960 = r637959 - r637955;
double r637961 = r637958 * r637960;
double r637962 = a;
double r637963 = r637962 - r637957;
double r637964 = r637961 / r637963;
double r637965 = r637955 + r637964;
return r637965;
}
double f(double x, double y, double z, double t, double a) {
double r637966 = x;
double r637967 = y;
double r637968 = z;
double r637969 = r637967 - r637968;
double r637970 = t;
double r637971 = r637970 - r637966;
double r637972 = r637969 * r637971;
double r637973 = a;
double r637974 = r637973 - r637968;
double r637975 = r637972 / r637974;
double r637976 = r637966 + r637975;
double r637977 = -inf.0;
bool r637978 = r637976 <= r637977;
double r637979 = r637974 / r637971;
double r637980 = r637969 / r637979;
double r637981 = r637966 + r637980;
double r637982 = -2.8328355208250615e-308;
bool r637983 = r637976 <= r637982;
double r637984 = 0.0;
bool r637985 = r637976 <= r637984;
double r637986 = r637966 * r637967;
double r637987 = r637986 / r637968;
double r637988 = r637987 + r637970;
double r637989 = r637970 * r637967;
double r637990 = r637989 / r637968;
double r637991 = r637988 - r637990;
double r637992 = cbrt(r637974);
double r637993 = r637992 * r637992;
double r637994 = r637969 / r637993;
double r637995 = cbrt(r637994);
double r637996 = r637995 * r637995;
double r637997 = r637971 * r637995;
double r637998 = cbrt(r637992);
double r637999 = 3.0;
double r638000 = pow(r637998, r637999);
double r638001 = r637997 / r638000;
double r638002 = r637996 * r638001;
double r638003 = r637966 + r638002;
double r638004 = r637985 ? r637991 : r638003;
double r638005 = r637983 ? r637976 : r638004;
double r638006 = r637978 ? r637981 : r638005;
return r638006;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.1 |
|---|---|
| Target | 11.9 |
| Herbie | 9.1 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -inf.0Initial program 64.0
rmApplied associate-/l*17.2
if -inf.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) < -2.8328355208250615e-308Initial program 1.9
rmApplied add-cube-cbrt2.6
Applied times-frac3.9
rmApplied pow13.9
rmApplied frac-times2.6
Simplified1.9
if -2.8328355208250615e-308 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 61.3
Taylor expanded around inf 20.0
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 21.1
rmApplied add-cube-cbrt21.6
Applied times-frac9.1
rmApplied add-cube-cbrt9.3
rmApplied add-cube-cbrt9.3
Applied associate-*l*9.3
Simplified9.8
Final simplification9.1
herbie shell --seed 2020062
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))