x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -6.67116262087789056267941985149513120555 \cdot 10^{-184}:\\
\;\;\;\;x + \frac{\sqrt[3]{y - x}}{\frac{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}{\sqrt[3]{y - x}}} \cdot \frac{\sqrt[3]{y - x}}{\frac{\sqrt[3]{a - t}}{z - t}}\\
\mathbf{elif}\;a \le 2.379494482182929201880307111811788785007 \cdot 10^{-88}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r831511 = x;
double r831512 = y;
double r831513 = r831512 - r831511;
double r831514 = z;
double r831515 = t;
double r831516 = r831514 - r831515;
double r831517 = r831513 * r831516;
double r831518 = a;
double r831519 = r831518 - r831515;
double r831520 = r831517 / r831519;
double r831521 = r831511 + r831520;
return r831521;
}
double f(double x, double y, double z, double t, double a) {
double r831522 = a;
double r831523 = -6.671162620877891e-184;
bool r831524 = r831522 <= r831523;
double r831525 = x;
double r831526 = y;
double r831527 = r831526 - r831525;
double r831528 = cbrt(r831527);
double r831529 = t;
double r831530 = r831522 - r831529;
double r831531 = cbrt(r831530);
double r831532 = r831531 * r831531;
double r831533 = r831532 / r831528;
double r831534 = r831528 / r831533;
double r831535 = z;
double r831536 = r831535 - r831529;
double r831537 = r831531 / r831536;
double r831538 = r831528 / r831537;
double r831539 = r831534 * r831538;
double r831540 = r831525 + r831539;
double r831541 = 2.3794944821829292e-88;
bool r831542 = r831522 <= r831541;
double r831543 = r831525 * r831535;
double r831544 = r831543 / r831529;
double r831545 = r831526 + r831544;
double r831546 = r831535 * r831526;
double r831547 = r831546 / r831529;
double r831548 = r831545 - r831547;
double r831549 = r831536 / r831530;
double r831550 = r831527 * r831549;
double r831551 = r831525 + r831550;
double r831552 = r831542 ? r831548 : r831551;
double r831553 = r831524 ? r831540 : r831552;
return r831553;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.4 |
|---|---|
| Target | 9.0 |
| Herbie | 10.4 |
if a < -6.671162620877891e-184Initial program 22.3
rmApplied associate-/l*9.9
rmApplied *-un-lft-identity9.9
Applied add-cube-cbrt10.5
Applied times-frac10.5
Applied add-cube-cbrt10.7
Applied times-frac10.3
Simplified10.3
if -6.671162620877891e-184 < a < 2.3794944821829292e-88Initial program 28.6
Taylor expanded around inf 15.0
if 2.3794944821829292e-88 < a Initial program 21.0
rmApplied *-un-lft-identity21.0
Applied times-frac7.3
Simplified7.3
Final simplification10.4
herbie shell --seed 2019362
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))