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} \le -6.35262688856634336 \cdot 10^{-298} \lor \neg \left(x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 9.92755 \cdot 10^{-256}\right):\\
\;\;\;\;x + \left(\left(y - z\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r741985 = x;
double r741986 = y;
double r741987 = z;
double r741988 = r741986 - r741987;
double r741989 = t;
double r741990 = r741989 - r741985;
double r741991 = r741988 * r741990;
double r741992 = a;
double r741993 = r741992 - r741987;
double r741994 = r741991 / r741993;
double r741995 = r741985 + r741994;
return r741995;
}
double f(double x, double y, double z, double t, double a) {
double r741996 = x;
double r741997 = y;
double r741998 = z;
double r741999 = r741997 - r741998;
double r742000 = t;
double r742001 = r742000 - r741996;
double r742002 = r741999 * r742001;
double r742003 = a;
double r742004 = r742003 - r741998;
double r742005 = r742002 / r742004;
double r742006 = r741996 + r742005;
double r742007 = -6.352626888566343e-298;
bool r742008 = r742006 <= r742007;
double r742009 = 9.92755017398561e-256;
bool r742010 = r742006 <= r742009;
double r742011 = !r742010;
bool r742012 = r742008 || r742011;
double r742013 = cbrt(r742001);
double r742014 = r742013 * r742013;
double r742015 = cbrt(r742004);
double r742016 = r742015 * r742015;
double r742017 = r742014 / r742016;
double r742018 = r741999 * r742017;
double r742019 = r742013 / r742015;
double r742020 = r742018 * r742019;
double r742021 = r741996 + r742020;
double r742022 = r741996 * r741997;
double r742023 = r742022 / r741998;
double r742024 = r742023 + r742000;
double r742025 = r742000 * r741997;
double r742026 = r742025 / r741998;
double r742027 = r742024 - r742026;
double r742028 = r742012 ? r742021 : r742027;
return r742028;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.2 |
|---|---|
| Target | 12.0 |
| Herbie | 8.9 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -6.352626888566343e-298 or 9.92755017398561e-256 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 22.0
rmApplied *-un-lft-identity22.0
Applied times-frac10.5
Simplified10.5
rmApplied add-cube-cbrt11.1
Applied add-cube-cbrt11.2
Applied times-frac11.2
Applied associate-*r*7.7
if -6.352626888566343e-298 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 9.92755017398561e-256Initial program 56.7
Taylor expanded around inf 20.3
Final simplification8.9
herbie shell --seed 2020025
(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))))