x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -1.409051721433192 \cdot 10^{178} \lor \neg \left(z \le 1.251729592070978 \cdot 10^{156}\right):\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}{\sqrt[3]{\sqrt[3]{a - z}} \cdot \sqrt[3]{\sqrt[3]{a - z}}} \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 r515751 = x;
double r515752 = y;
double r515753 = z;
double r515754 = r515752 - r515753;
double r515755 = t;
double r515756 = r515755 - r515751;
double r515757 = r515754 * r515756;
double r515758 = a;
double r515759 = r515758 - r515753;
double r515760 = r515757 / r515759;
double r515761 = r515751 + r515760;
return r515761;
}
double f(double x, double y, double z, double t, double a) {
double r515762 = z;
double r515763 = -1.409051721433192e+178;
bool r515764 = r515762 <= r515763;
double r515765 = 1.2517295920709783e+156;
bool r515766 = r515762 <= r515765;
double r515767 = !r515766;
bool r515768 = r515764 || r515767;
double r515769 = t;
double r515770 = y;
double r515771 = x;
double r515772 = r515771 / r515762;
double r515773 = r515769 / r515762;
double r515774 = r515772 - r515773;
double r515775 = r515770 * r515774;
double r515776 = r515769 + r515775;
double r515777 = r515770 - r515762;
double r515778 = a;
double r515779 = r515778 - r515762;
double r515780 = cbrt(r515779);
double r515781 = r515780 * r515780;
double r515782 = r515777 / r515781;
double r515783 = cbrt(r515780);
double r515784 = r515783 * r515783;
double r515785 = r515782 / r515784;
double r515786 = r515769 - r515771;
double r515787 = r515786 / r515783;
double r515788 = r515785 * r515787;
double r515789 = r515771 + r515788;
double r515790 = r515768 ? r515776 : r515789;
return r515790;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 12.2 |
| Herbie | 10.3 |
if z < -1.409051721433192e+178 or 1.2517295920709783e+156 < z Initial program 47.8
rmApplied add-cube-cbrt48.1
Applied times-frac23.4
rmApplied add-cube-cbrt23.6
Applied *-un-lft-identity23.6
Applied times-frac23.6
Applied associate-*r*23.3
Simplified23.3
rmApplied add-cube-cbrt23.4
Applied associate-*l*23.4
Taylor expanded around inf 25.3
Simplified16.0
if -1.409051721433192e+178 < z < 1.2517295920709783e+156Initial program 16.3
rmApplied add-cube-cbrt16.8
Applied times-frac8.5
rmApplied add-cube-cbrt8.7
Applied *-un-lft-identity8.7
Applied times-frac8.7
Applied associate-*r*8.4
Simplified8.3
Final simplification10.3
herbie shell --seed 2019198
(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))))