x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -1.0538724122977772 \cdot 10^{187} \lor \neg \left(z \le 2.80403393809698577 \cdot 10^{31}\right):\\
\;\;\;\;y \cdot \left(\frac{x}{z} - \frac{t}{z}\right) + t\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r699825 = x;
double r699826 = y;
double r699827 = z;
double r699828 = r699826 - r699827;
double r699829 = t;
double r699830 = r699829 - r699825;
double r699831 = r699828 * r699830;
double r699832 = a;
double r699833 = r699832 - r699827;
double r699834 = r699831 / r699833;
double r699835 = r699825 + r699834;
return r699835;
}
double f(double x, double y, double z, double t, double a) {
double r699836 = z;
double r699837 = -1.0538724122977772e+187;
bool r699838 = r699836 <= r699837;
double r699839 = 2.8040339380969858e+31;
bool r699840 = r699836 <= r699839;
double r699841 = !r699840;
bool r699842 = r699838 || r699841;
double r699843 = y;
double r699844 = x;
double r699845 = r699844 / r699836;
double r699846 = t;
double r699847 = r699846 / r699836;
double r699848 = r699845 - r699847;
double r699849 = r699843 * r699848;
double r699850 = r699849 + r699846;
double r699851 = r699843 - r699836;
double r699852 = cbrt(r699851);
double r699853 = r699852 * r699852;
double r699854 = a;
double r699855 = r699854 - r699836;
double r699856 = cbrt(r699855);
double r699857 = r699853 / r699856;
double r699858 = r699852 / r699856;
double r699859 = r699846 - r699844;
double r699860 = r699859 / r699856;
double r699861 = r699858 * r699860;
double r699862 = r699857 * r699861;
double r699863 = r699844 + r699862;
double r699864 = r699842 ? r699850 : r699863;
return r699864;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.8 |
|---|---|
| Target | 12.0 |
| Herbie | 11.7 |
if z < -1.0538724122977772e+187 or 2.8040339380969858e+31 < z Initial program 43.4
rmApplied add-cube-cbrt43.7
Applied times-frac22.2
rmApplied add-cube-cbrt21.9
Applied times-frac21.9
Applied associate-*l*21.9
Taylor expanded around inf 27.2
Simplified19.4
if -1.0538724122977772e+187 < z < 2.8040339380969858e+31Initial program 14.2
rmApplied add-cube-cbrt14.7
Applied times-frac7.7
rmApplied add-cube-cbrt7.7
Applied times-frac7.7
Applied associate-*l*7.3
Final simplification11.7
herbie shell --seed 2020056
(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))))