x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;t \le -5.710194955151591629493346688798012753313 \cdot 10^{144}:\\
\;\;\;\;x + \frac{y - x}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\\
\mathbf{elif}\;t \le 206588178.7833076417446136474609375:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r801351 = x;
double r801352 = y;
double r801353 = r801352 - r801351;
double r801354 = z;
double r801355 = t;
double r801356 = r801354 / r801355;
double r801357 = r801353 * r801356;
double r801358 = r801351 + r801357;
return r801358;
}
double f(double x, double y, double z, double t) {
double r801359 = t;
double r801360 = -5.7101949551515916e+144;
bool r801361 = r801359 <= r801360;
double r801362 = x;
double r801363 = y;
double r801364 = r801363 - r801362;
double r801365 = cbrt(r801359);
double r801366 = r801365 * r801365;
double r801367 = r801364 / r801366;
double r801368 = z;
double r801369 = r801368 / r801365;
double r801370 = r801367 * r801369;
double r801371 = r801362 + r801370;
double r801372 = 206588178.78330764;
bool r801373 = r801359 <= r801372;
double r801374 = r801364 * r801368;
double r801375 = r801374 / r801359;
double r801376 = r801362 + r801375;
double r801377 = r801368 / r801359;
double r801378 = r801364 * r801377;
double r801379 = r801362 + r801378;
double r801380 = r801373 ? r801376 : r801379;
double r801381 = r801361 ? r801371 : r801380;
return r801381;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.3 |
|---|---|
| Target | 2.3 |
| Herbie | 1.9 |
if t < -5.7101949551515916e+144Initial program 1.1
rmApplied add-cube-cbrt1.3
Applied *-un-lft-identity1.3
Applied times-frac1.3
Applied associate-*r*1.0
Simplified1.0
if -5.7101949551515916e+144 < t < 206588178.78330764Initial program 3.3
rmApplied associate-*r/2.6
if 206588178.78330764 < t Initial program 1.2
Final simplification1.9
herbie shell --seed 2019353
(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))))