x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -4.197578146861638602955077028325016765581 \cdot 10^{197} \lor \neg \left(z \le 2.310700863718049801732465226256542133237 \cdot 10^{203}\right):\\
\;\;\;\;t + \left(\frac{x}{\frac{z}{y}} - \frac{t}{\frac{z}{y}}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(\left(\sqrt[3]{\frac{y - z}{a - z}} \cdot \sqrt[3]{\frac{y - z}{a - z}}\right) \cdot \sqrt[3]{\frac{y - z}{a - z}}\right) \cdot \left(t - x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r581101 = x;
double r581102 = y;
double r581103 = z;
double r581104 = r581102 - r581103;
double r581105 = t;
double r581106 = r581105 - r581101;
double r581107 = r581104 * r581106;
double r581108 = a;
double r581109 = r581108 - r581103;
double r581110 = r581107 / r581109;
double r581111 = r581101 + r581110;
return r581111;
}
double f(double x, double y, double z, double t, double a) {
double r581112 = z;
double r581113 = -4.1975781468616386e+197;
bool r581114 = r581112 <= r581113;
double r581115 = 2.3107008637180498e+203;
bool r581116 = r581112 <= r581115;
double r581117 = !r581116;
bool r581118 = r581114 || r581117;
double r581119 = t;
double r581120 = x;
double r581121 = y;
double r581122 = r581112 / r581121;
double r581123 = r581120 / r581122;
double r581124 = r581119 / r581122;
double r581125 = r581123 - r581124;
double r581126 = r581119 + r581125;
double r581127 = r581121 - r581112;
double r581128 = a;
double r581129 = r581128 - r581112;
double r581130 = r581127 / r581129;
double r581131 = cbrt(r581130);
double r581132 = r581131 * r581131;
double r581133 = r581132 * r581131;
double r581134 = r581119 - r581120;
double r581135 = r581133 * r581134;
double r581136 = r581120 + r581135;
double r581137 = r581118 ? r581126 : r581136;
return r581137;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.4 |
|---|---|
| Target | 12.2 |
| Herbie | 10.1 |
if z < -4.1975781468616386e+197 or 2.3107008637180498e+203 < z Initial program 49.6
Simplified24.5
rmApplied div-inv24.6
Taylor expanded around inf 24.3
Simplified14.5
if -4.1975781468616386e+197 < z < 2.3107008637180498e+203Initial program 18.0
Simplified8.5
rmApplied add-cube-cbrt9.0
Final simplification10.1
herbie shell --seed 2019194
(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))))