x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -2.875824772447241737051070660174537380931 \cdot 10^{-80}:\\
\;\;\;\;x + \frac{y - x}{\frac{a - t}{z - t}}\\
\mathbf{elif}\;a \le 8.815256163235809252800222120819323493177 \cdot 10^{-151}:\\
\;\;\;\;\left(y + \frac{z \cdot x}{t}\right) - \frac{y \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\frac{a - t}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r29269516 = x;
double r29269517 = y;
double r29269518 = r29269517 - r29269516;
double r29269519 = z;
double r29269520 = t;
double r29269521 = r29269519 - r29269520;
double r29269522 = r29269518 * r29269521;
double r29269523 = a;
double r29269524 = r29269523 - r29269520;
double r29269525 = r29269522 / r29269524;
double r29269526 = r29269516 + r29269525;
return r29269526;
}
double f(double x, double y, double z, double t, double a) {
double r29269527 = a;
double r29269528 = -2.8758247724472417e-80;
bool r29269529 = r29269527 <= r29269528;
double r29269530 = x;
double r29269531 = y;
double r29269532 = r29269531 - r29269530;
double r29269533 = t;
double r29269534 = r29269527 - r29269533;
double r29269535 = z;
double r29269536 = r29269535 - r29269533;
double r29269537 = r29269534 / r29269536;
double r29269538 = r29269532 / r29269537;
double r29269539 = r29269530 + r29269538;
double r29269540 = 8.815256163235809e-151;
bool r29269541 = r29269527 <= r29269540;
double r29269542 = r29269535 * r29269530;
double r29269543 = r29269542 / r29269533;
double r29269544 = r29269531 + r29269543;
double r29269545 = r29269531 * r29269535;
double r29269546 = r29269545 / r29269533;
double r29269547 = r29269544 - r29269546;
double r29269548 = r29269541 ? r29269547 : r29269539;
double r29269549 = r29269529 ? r29269539 : r29269548;
return r29269549;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.3 |
|---|---|
| Target | 9.5 |
| Herbie | 10.8 |
if a < -2.8758247724472417e-80 or 8.815256163235809e-151 < a Initial program 22.7
rmApplied associate-/l*8.8
if -2.8758247724472417e-80 < a < 8.815256163235809e-151Initial program 28.3
Taylor expanded around inf 15.9
Final simplification10.8
herbie shell --seed 2019192
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))