x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -1.50374357984312286 \cdot 10^{-108} \lor \neg \left(a \le -9.9251003126439114 \cdot 10^{-170}\right):\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{else}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r570498 = x;
double r570499 = y;
double r570500 = r570499 - r570498;
double r570501 = z;
double r570502 = t;
double r570503 = r570501 - r570502;
double r570504 = r570500 * r570503;
double r570505 = a;
double r570506 = r570505 - r570502;
double r570507 = r570504 / r570506;
double r570508 = r570498 + r570507;
return r570508;
}
double f(double x, double y, double z, double t, double a) {
double r570509 = a;
double r570510 = -1.5037435798431229e-108;
bool r570511 = r570509 <= r570510;
double r570512 = -9.925100312643911e-170;
bool r570513 = r570509 <= r570512;
double r570514 = !r570513;
bool r570515 = r570511 || r570514;
double r570516 = x;
double r570517 = y;
double r570518 = r570517 - r570516;
double r570519 = z;
double r570520 = t;
double r570521 = r570519 - r570520;
double r570522 = r570509 - r570520;
double r570523 = r570521 / r570522;
double r570524 = r570518 * r570523;
double r570525 = r570516 + r570524;
double r570526 = r570516 * r570519;
double r570527 = r570526 / r570520;
double r570528 = r570517 + r570527;
double r570529 = r570519 * r570517;
double r570530 = r570529 / r570520;
double r570531 = r570528 - r570530;
double r570532 = r570515 ? r570525 : r570531;
return r570532;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.2 |
|---|---|
| Target | 9.3 |
| Herbie | 12.1 |
if a < -1.5037435798431229e-108 or -9.925100312643911e-170 < a Initial program 25.1
rmApplied *-un-lft-identity25.1
Applied times-frac11.5
Simplified11.5
if -1.5037435798431229e-108 < a < -9.925100312643911e-170Initial program 28.1
Taylor expanded around inf 22.9
Final simplification12.1
herbie shell --seed 2020021
(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))))