x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -4.8101418718325989 \cdot 10^{-48} \lor \neg \left(a \le 1.72111488913343407 \cdot 10^{-177}\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 r650468 = x;
double r650469 = y;
double r650470 = r650469 - r650468;
double r650471 = z;
double r650472 = t;
double r650473 = r650471 - r650472;
double r650474 = r650470 * r650473;
double r650475 = a;
double r650476 = r650475 - r650472;
double r650477 = r650474 / r650476;
double r650478 = r650468 + r650477;
return r650478;
}
double f(double x, double y, double z, double t, double a) {
double r650479 = a;
double r650480 = -4.810141871832599e-48;
bool r650481 = r650479 <= r650480;
double r650482 = 1.721114889133434e-177;
bool r650483 = r650479 <= r650482;
double r650484 = !r650483;
bool r650485 = r650481 || r650484;
double r650486 = x;
double r650487 = y;
double r650488 = r650487 - r650486;
double r650489 = z;
double r650490 = t;
double r650491 = r650489 - r650490;
double r650492 = r650479 - r650490;
double r650493 = r650491 / r650492;
double r650494 = r650488 * r650493;
double r650495 = r650486 + r650494;
double r650496 = r650486 * r650489;
double r650497 = r650496 / r650490;
double r650498 = r650487 + r650497;
double r650499 = r650489 * r650487;
double r650500 = r650499 / r650490;
double r650501 = r650498 - r650500;
double r650502 = r650485 ? r650495 : r650501;
return r650502;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.9 |
|---|---|
| Target | 9.3 |
| Herbie | 11.4 |
if a < -4.810141871832599e-48 or 1.721114889133434e-177 < a Initial program 23.0
rmApplied *-un-lft-identity23.0
Applied times-frac9.0
Simplified9.0
if -4.810141871832599e-48 < a < 1.721114889133434e-177Initial program 29.4
Taylor expanded around inf 17.1
Final simplification11.4
herbie shell --seed 2020036
(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))))