x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -6.169776304608411520157249671206390746068 \cdot 10^{-256}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{elif}\;a \le 1.769639326006987274457462695533275354439 \cdot 10^{-255}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \left(\left(z - t\right) \cdot \frac{1}{a - t}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r651617 = x;
double r651618 = y;
double r651619 = r651618 - r651617;
double r651620 = z;
double r651621 = t;
double r651622 = r651620 - r651621;
double r651623 = r651619 * r651622;
double r651624 = a;
double r651625 = r651624 - r651621;
double r651626 = r651623 / r651625;
double r651627 = r651617 + r651626;
return r651627;
}
double f(double x, double y, double z, double t, double a) {
double r651628 = a;
double r651629 = -6.169776304608412e-256;
bool r651630 = r651628 <= r651629;
double r651631 = x;
double r651632 = y;
double r651633 = r651632 - r651631;
double r651634 = z;
double r651635 = t;
double r651636 = r651634 - r651635;
double r651637 = r651628 - r651635;
double r651638 = r651636 / r651637;
double r651639 = r651633 * r651638;
double r651640 = r651631 + r651639;
double r651641 = 1.7696393260069873e-255;
bool r651642 = r651628 <= r651641;
double r651643 = r651631 * r651634;
double r651644 = r651643 / r651635;
double r651645 = r651632 + r651644;
double r651646 = r651634 * r651632;
double r651647 = r651646 / r651635;
double r651648 = r651645 - r651647;
double r651649 = 1.0;
double r651650 = r651649 / r651637;
double r651651 = r651636 * r651650;
double r651652 = r651633 * r651651;
double r651653 = r651631 + r651652;
double r651654 = r651642 ? r651648 : r651653;
double r651655 = r651630 ? r651640 : r651654;
return r651655;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.0 |
|---|---|
| Target | 9.3 |
| Herbie | 10.7 |
if a < -6.169776304608412e-256Initial program 24.4
rmApplied *-un-lft-identity24.4
Applied times-frac11.2
Simplified11.2
if -6.169776304608412e-256 < a < 1.7696393260069873e-255Initial program 32.4
Taylor expanded around inf 7.6
if 1.7696393260069873e-255 < a Initial program 24.4
rmApplied *-un-lft-identity24.4
Applied times-frac10.6
Simplified10.6
rmApplied div-inv10.6
Final simplification10.7
herbie shell --seed 2020002
(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))))