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 r557517 = x;
double r557518 = y;
double r557519 = z;
double r557520 = r557518 - r557519;
double r557521 = t;
double r557522 = r557521 - r557517;
double r557523 = r557520 * r557522;
double r557524 = a;
double r557525 = r557524 - r557519;
double r557526 = r557523 / r557525;
double r557527 = r557517 + r557526;
return r557527;
}
double f(double x, double y, double z, double t, double a) {
double r557528 = z;
double r557529 = -4.1975781468616386e+197;
bool r557530 = r557528 <= r557529;
double r557531 = 2.3107008637180498e+203;
bool r557532 = r557528 <= r557531;
double r557533 = !r557532;
bool r557534 = r557530 || r557533;
double r557535 = t;
double r557536 = x;
double r557537 = y;
double r557538 = r557528 / r557537;
double r557539 = r557536 / r557538;
double r557540 = r557535 / r557538;
double r557541 = r557539 - r557540;
double r557542 = r557535 + r557541;
double r557543 = r557537 - r557528;
double r557544 = a;
double r557545 = r557544 - r557528;
double r557546 = r557543 / r557545;
double r557547 = cbrt(r557546);
double r557548 = r557547 * r557547;
double r557549 = r557548 * r557547;
double r557550 = r557535 - r557536;
double r557551 = r557549 * r557550;
double r557552 = r557536 + r557551;
double r557553 = r557534 ? r557542 : r557552;
return r557553;
}




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))))