x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;t \le -1.642352366428419672760218965734387145992 \cdot 10^{49}:\\
\;\;\;\;x + \frac{y - x}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\\
\mathbf{elif}\;t \le 9.000444220027358670760165371832293801472 \cdot 10^{57}:\\
\;\;\;\;x + \left(\frac{z \cdot y}{t} - \frac{x \cdot z}{t}\right)\\
\mathbf{elif}\;t \le 3.879050157548418050555246632767665715378 \cdot 10^{258}:\\
\;\;\;\;x + \frac{y - x}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt{t}} \cdot \left(y - x\right)\right) \cdot \frac{\sqrt[3]{z}}{\sqrt{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r435509 = x;
double r435510 = y;
double r435511 = r435510 - r435509;
double r435512 = z;
double r435513 = t;
double r435514 = r435512 / r435513;
double r435515 = r435511 * r435514;
double r435516 = r435509 + r435515;
return r435516;
}
double f(double x, double y, double z, double t) {
double r435517 = t;
double r435518 = -1.6423523664284197e+49;
bool r435519 = r435517 <= r435518;
double r435520 = x;
double r435521 = y;
double r435522 = r435521 - r435520;
double r435523 = cbrt(r435517);
double r435524 = r435523 * r435523;
double r435525 = r435522 / r435524;
double r435526 = z;
double r435527 = r435526 / r435523;
double r435528 = r435525 * r435527;
double r435529 = r435520 + r435528;
double r435530 = 9.000444220027359e+57;
bool r435531 = r435517 <= r435530;
double r435532 = r435526 * r435521;
double r435533 = r435532 / r435517;
double r435534 = r435520 * r435526;
double r435535 = r435534 / r435517;
double r435536 = r435533 - r435535;
double r435537 = r435520 + r435536;
double r435538 = 3.879050157548418e+258;
bool r435539 = r435517 <= r435538;
double r435540 = cbrt(r435526);
double r435541 = r435540 * r435540;
double r435542 = sqrt(r435517);
double r435543 = r435541 / r435542;
double r435544 = r435543 * r435522;
double r435545 = r435540 / r435542;
double r435546 = r435544 * r435545;
double r435547 = r435520 + r435546;
double r435548 = r435539 ? r435529 : r435547;
double r435549 = r435531 ? r435537 : r435548;
double r435550 = r435519 ? r435529 : r435549;
return r435550;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.0 |
| Herbie | 1.3 |
if t < -1.6423523664284197e+49 or 9.000444220027359e+57 < t < 3.879050157548418e+258Initial program 1.0
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac1.4
Applied associate-*r*1.0
Simplified1.0
if -1.6423523664284197e+49 < t < 9.000444220027359e+57Initial program 2.8
rmApplied add-cube-cbrt3.5
Applied associate-*l*3.5
Taylor expanded around 0 1.6
if 3.879050157548418e+258 < t Initial program 1.2
rmApplied add-sqr-sqrt1.3
Applied add-cube-cbrt1.4
Applied times-frac1.4
Applied associate-*r*1.0
Simplified1.0
Final simplification1.3
herbie shell --seed 2019208
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))