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.62009319526490299011545259872865617958 \cdot 10^{293}:\\
\;\;\;\;\left(y - z\right) \cdot \frac{t - x}{a - z} + x\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -3.956280165893758193874340988906388103674 \cdot 10^{-277}:\\
\;\;\;\;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(t + \frac{x \cdot y}{z}\right) - \frac{y \cdot t}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}} \cdot \left(\frac{y - z}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right)\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{\sqrt[3]{a - z}}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r31081762 = x;
double r31081763 = y;
double r31081764 = z;
double r31081765 = r31081763 - r31081764;
double r31081766 = t;
double r31081767 = r31081766 - r31081762;
double r31081768 = r31081765 * r31081767;
double r31081769 = a;
double r31081770 = r31081769 - r31081764;
double r31081771 = r31081768 / r31081770;
double r31081772 = r31081762 + r31081771;
return r31081772;
}
double f(double x, double y, double z, double t, double a) {
double r31081773 = x;
double r31081774 = y;
double r31081775 = z;
double r31081776 = r31081774 - r31081775;
double r31081777 = t;
double r31081778 = r31081777 - r31081773;
double r31081779 = r31081776 * r31081778;
double r31081780 = a;
double r31081781 = r31081780 - r31081775;
double r31081782 = r31081779 / r31081781;
double r31081783 = r31081773 + r31081782;
double r31081784 = -2.620093195264903e+293;
bool r31081785 = r31081783 <= r31081784;
double r31081786 = r31081778 / r31081781;
double r31081787 = r31081776 * r31081786;
double r31081788 = r31081787 + r31081773;
double r31081789 = -3.956280165893758e-277;
bool r31081790 = r31081783 <= r31081789;
double r31081791 = 0.0;
bool r31081792 = r31081783 <= r31081791;
double r31081793 = r31081773 * r31081774;
double r31081794 = r31081793 / r31081775;
double r31081795 = r31081777 + r31081794;
double r31081796 = r31081774 * r31081777;
double r31081797 = r31081796 / r31081775;
double r31081798 = r31081795 - r31081797;
double r31081799 = cbrt(r31081778);
double r31081800 = cbrt(r31081781);
double r31081801 = r31081800 * r31081800;
double r31081802 = cbrt(r31081801);
double r31081803 = cbrt(r31081802);
double r31081804 = r31081799 / r31081803;
double r31081805 = r31081776 / r31081802;
double r31081806 = r31081799 / r31081801;
double r31081807 = r31081805 * r31081806;
double r31081808 = r31081804 * r31081807;
double r31081809 = cbrt(r31081800);
double r31081810 = cbrt(r31081809);
double r31081811 = r31081799 / r31081810;
double r31081812 = r31081808 * r31081811;
double r31081813 = r31081773 + r31081812;
double r31081814 = r31081792 ? r31081798 : r31081813;
double r31081815 = r31081790 ? r31081783 : r31081814;
double r31081816 = r31081785 ? r31081788 : r31081815;
return r31081816;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.9 |
|---|---|
| Target | 11.8 |
| Herbie | 8.7 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -2.620093195264903e+293Initial program 62.2
rmApplied *-un-lft-identity62.2
Applied times-frac16.8
Simplified16.8
if -2.620093195264903e+293 < (+ x (/ (* (- y z) (- t x)) (- a z))) < -3.956280165893758e-277Initial program 2.3
if -3.956280165893758e-277 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 58.8
Taylor expanded around inf 20.7
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 20.9
rmApplied add-cube-cbrt21.4
Applied times-frac8.5
rmApplied add-cube-cbrt8.5
Applied cbrt-prod8.6
Applied *-un-lft-identity8.6
Applied times-frac8.6
Applied associate-*r*8.3
Simplified8.3
rmApplied add-cube-cbrt8.3
Applied cbrt-prod8.3
Applied cbrt-prod8.4
Applied add-cube-cbrt8.5
Applied times-frac8.5
Applied associate-*r*8.4
rmApplied *-un-lft-identity8.4
Applied cbrt-prod8.4
Applied times-frac8.4
Applied associate-*r*8.4
Simplified8.0
Final simplification8.7
herbie shell --seed 2019174
(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))))