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 -2.579613563212042932975206509009832764606 \cdot 10^{-257}:\\
\;\;\;\;x + \frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{\sqrt[3]{a - z}} \cdot \sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{\sqrt[3]{a - z}} \cdot \left(\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \sqrt[3]{\sqrt[3]{a - z}}\right)} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\right)\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(t + \frac{x \cdot y}{z}\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - z}{\left(\sqrt[3]{\sqrt[3]{a - z}} \cdot \sqrt[3]{a - z}\right) \cdot \left(\sqrt[3]{\sqrt[3]{a - z}} \cdot \sqrt[3]{a - z}\right)} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r107864011 = x;
double r107864012 = y;
double r107864013 = z;
double r107864014 = r107864012 - r107864013;
double r107864015 = t;
double r107864016 = r107864015 - r107864011;
double r107864017 = r107864014 * r107864016;
double r107864018 = a;
double r107864019 = r107864018 - r107864013;
double r107864020 = r107864017 / r107864019;
double r107864021 = r107864011 + r107864020;
return r107864021;
}
double f(double x, double y, double z, double t, double a) {
double r107864022 = x;
double r107864023 = y;
double r107864024 = z;
double r107864025 = r107864023 - r107864024;
double r107864026 = t;
double r107864027 = r107864026 - r107864022;
double r107864028 = r107864025 * r107864027;
double r107864029 = a;
double r107864030 = r107864029 - r107864024;
double r107864031 = r107864028 / r107864030;
double r107864032 = r107864022 + r107864031;
double r107864033 = -2.579613563212043e-257;
bool r107864034 = r107864032 <= r107864033;
double r107864035 = cbrt(r107864025);
double r107864036 = r107864035 * r107864035;
double r107864037 = cbrt(r107864030);
double r107864038 = cbrt(r107864037);
double r107864039 = r107864038 * r107864037;
double r107864040 = r107864036 / r107864039;
double r107864041 = r107864037 * r107864037;
double r107864042 = cbrt(r107864041);
double r107864043 = r107864042 * r107864038;
double r107864044 = r107864038 * r107864043;
double r107864045 = r107864035 / r107864044;
double r107864046 = r107864027 / r107864038;
double r107864047 = r107864045 * r107864046;
double r107864048 = r107864040 * r107864047;
double r107864049 = r107864022 + r107864048;
double r107864050 = 0.0;
bool r107864051 = r107864032 <= r107864050;
double r107864052 = r107864022 * r107864023;
double r107864053 = r107864052 / r107864024;
double r107864054 = r107864026 + r107864053;
double r107864055 = r107864026 * r107864023;
double r107864056 = r107864055 / r107864024;
double r107864057 = r107864054 - r107864056;
double r107864058 = r107864039 * r107864039;
double r107864059 = r107864025 / r107864058;
double r107864060 = r107864059 * r107864046;
double r107864061 = r107864022 + r107864060;
double r107864062 = r107864051 ? r107864057 : r107864061;
double r107864063 = r107864034 ? r107864049 : r107864062;
return r107864063;
}




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 | 12.1 |
| Herbie | 8.9 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -2.579613563212043e-257Initial program 21.2
rmApplied add-cube-cbrt21.8
Applied times-frac8.0
rmApplied add-cube-cbrt8.2
Applied *-un-lft-identity8.2
Applied times-frac8.3
Applied associate-*r*8.2
Simplified8.2
rmApplied add-cube-cbrt8.2
Applied cbrt-prod8.3
rmApplied add-cube-cbrt8.3
Applied times-frac8.3
Applied associate-*l*7.9
if -2.579613563212043e-257 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 57.1
Taylor expanded around inf 20.1
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 20.6
rmApplied add-cube-cbrt21.1
Applied times-frac7.8
rmApplied add-cube-cbrt7.9
Applied *-un-lft-identity7.9
Applied times-frac8.0
Applied associate-*r*7.6
Simplified7.6
Final simplification8.9
herbie shell --seed 2019173
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
: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))))