x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -4.2852583466209365 \cdot 10^{-144}:\\
\;\;\;\;x + \left(y - x\right) \cdot \left(\left(z - t\right) \cdot \frac{1}{a - t}\right)\\
\mathbf{elif}\;a \le 2.0695378041879823 \cdot 10^{-147}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{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 r666552 = x;
double r666553 = y;
double r666554 = r666553 - r666552;
double r666555 = z;
double r666556 = t;
double r666557 = r666555 - r666556;
double r666558 = r666554 * r666557;
double r666559 = a;
double r666560 = r666559 - r666556;
double r666561 = r666558 / r666560;
double r666562 = r666552 + r666561;
return r666562;
}
double f(double x, double y, double z, double t, double a) {
double r666563 = a;
double r666564 = -4.2852583466209365e-144;
bool r666565 = r666563 <= r666564;
double r666566 = x;
double r666567 = y;
double r666568 = r666567 - r666566;
double r666569 = z;
double r666570 = t;
double r666571 = r666569 - r666570;
double r666572 = 1.0;
double r666573 = r666563 - r666570;
double r666574 = r666572 / r666573;
double r666575 = r666571 * r666574;
double r666576 = r666568 * r666575;
double r666577 = r666566 + r666576;
double r666578 = 2.0695378041879823e-147;
bool r666579 = r666563 <= r666578;
double r666580 = r666566 * r666569;
double r666581 = r666580 / r666570;
double r666582 = r666567 + r666581;
double r666583 = r666569 * r666567;
double r666584 = r666583 / r666570;
double r666585 = r666582 - r666584;
double r666586 = r666573 / r666571;
double r666587 = r666568 / r666586;
double r666588 = r666566 + r666587;
double r666589 = r666579 ? r666585 : r666588;
double r666590 = r666565 ? r666577 : r666589;
return r666590;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 9.3 |
| Herbie | 10.4 |
if a < -4.2852583466209365e-144Initial program 23.0
rmApplied *-un-lft-identity23.0
Applied times-frac9.2
Simplified9.2
rmApplied div-inv9.3
if -4.2852583466209365e-144 < a < 2.0695378041879823e-147Initial program 30.0
Taylor expanded around inf 14.1
if 2.0695378041879823e-147 < a Initial program 21.8
rmApplied associate-/l*9.2
Final simplification10.4
herbie shell --seed 2020045
(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))))