x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -6.8292046976100912 \cdot 10^{155} \lor \neg \left(z \le 7.37344260106273469 \cdot 10^{217}\right):\\
\;\;\;\;\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \left(t - x\right)\right) + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r583788 = x;
double r583789 = y;
double r583790 = z;
double r583791 = r583789 - r583790;
double r583792 = t;
double r583793 = r583792 - r583788;
double r583794 = r583791 * r583793;
double r583795 = a;
double r583796 = r583795 - r583790;
double r583797 = r583794 / r583796;
double r583798 = r583788 + r583797;
return r583798;
}
double f(double x, double y, double z, double t, double a) {
double r583799 = z;
double r583800 = -6.829204697610091e+155;
bool r583801 = r583799 <= r583800;
double r583802 = 7.373442601062735e+217;
bool r583803 = r583799 <= r583802;
double r583804 = !r583803;
bool r583805 = r583801 || r583804;
double r583806 = y;
double r583807 = x;
double r583808 = r583807 / r583799;
double r583809 = t;
double r583810 = r583809 / r583799;
double r583811 = r583808 - r583810;
double r583812 = fma(r583806, r583811, r583809);
double r583813 = r583806 - r583799;
double r583814 = cbrt(r583813);
double r583815 = r583814 * r583814;
double r583816 = a;
double r583817 = r583816 - r583799;
double r583818 = cbrt(r583817);
double r583819 = r583818 * r583818;
double r583820 = r583815 / r583819;
double r583821 = r583814 / r583818;
double r583822 = r583809 - r583807;
double r583823 = r583821 * r583822;
double r583824 = r583820 * r583823;
double r583825 = r583824 + r583807;
double r583826 = r583805 ? r583812 : r583825;
return r583826;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 24.5 |
|---|---|
| Target | 11.5 |
| Herbie | 9.5 |
if z < -6.829204697610091e+155 or 7.373442601062735e+217 < z Initial program 49.2
Simplified23.2
Taylor expanded around inf 24.4
Simplified15.1
if -6.829204697610091e+155 < z < 7.373442601062735e+217Initial program 17.1
Simplified8.2
rmApplied fma-udef8.2
rmApplied add-cube-cbrt8.8
Applied add-cube-cbrt8.8
Applied times-frac8.8
Applied associate-*l*7.8
Final simplification9.5
herbie shell --seed 2020081 +o rules:numerics
(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))))