x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -1.44153430836384812 \cdot 10^{49} \lor \neg \left(z \le 3.9631796472276787 \cdot 10^{182}\right):\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r648354 = x;
double r648355 = y;
double r648356 = z;
double r648357 = r648355 - r648356;
double r648358 = t;
double r648359 = r648358 - r648354;
double r648360 = r648357 * r648359;
double r648361 = a;
double r648362 = r648361 - r648356;
double r648363 = r648360 / r648362;
double r648364 = r648354 + r648363;
return r648364;
}
double f(double x, double y, double z, double t, double a) {
double r648365 = z;
double r648366 = -1.441534308363848e+49;
bool r648367 = r648365 <= r648366;
double r648368 = 3.963179647227679e+182;
bool r648369 = r648365 <= r648368;
double r648370 = !r648369;
bool r648371 = r648367 || r648370;
double r648372 = t;
double r648373 = y;
double r648374 = x;
double r648375 = r648374 / r648365;
double r648376 = r648372 / r648365;
double r648377 = r648375 - r648376;
double r648378 = r648373 * r648377;
double r648379 = r648372 + r648378;
double r648380 = r648373 - r648365;
double r648381 = a;
double r648382 = r648381 - r648365;
double r648383 = cbrt(r648382);
double r648384 = r648383 * r648383;
double r648385 = r648380 / r648384;
double r648386 = r648372 - r648374;
double r648387 = cbrt(r648386);
double r648388 = r648387 * r648387;
double r648389 = cbrt(r648384);
double r648390 = r648388 / r648389;
double r648391 = r648385 * r648390;
double r648392 = cbrt(r648383);
double r648393 = r648387 / r648392;
double r648394 = r648391 * r648393;
double r648395 = r648374 + r648394;
double r648396 = r648371 ? r648379 : r648395;
return r648396;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.1 |
|---|---|
| Target | 11.7 |
| Herbie | 10.6 |
if z < -1.441534308363848e+49 or 3.963179647227679e+182 < z Initial program 43.7
rmApplied add-cube-cbrt44.0
Applied times-frac21.9
rmApplied add-cube-cbrt21.9
Applied cbrt-prod22.0
Applied add-cube-cbrt22.1
Applied times-frac22.1
Applied associate-*r*21.6
rmApplied add-cube-cbrt21.7
Taylor expanded around inf 25.9
Simplified17.9
if -1.441534308363848e+49 < z < 3.963179647227679e+182Initial program 13.7
rmApplied add-cube-cbrt14.2
Applied times-frac7.4
rmApplied add-cube-cbrt7.4
Applied cbrt-prod7.5
Applied add-cube-cbrt7.6
Applied times-frac7.6
Applied associate-*r*6.7
Final simplification10.6
herbie shell --seed 2020018
(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))))