x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -1.344676009041024767063435413969372278651 \cdot 10^{-176}:\\
\;\;\;\;x + \frac{y - x}{\frac{a - t}{z - t}}\\
\mathbf{elif}\;a \le 4.650934300689651493049628385431993780051 \cdot 10^{-155}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r866828 = x;
double r866829 = y;
double r866830 = r866829 - r866828;
double r866831 = z;
double r866832 = t;
double r866833 = r866831 - r866832;
double r866834 = r866830 * r866833;
double r866835 = a;
double r866836 = r866835 - r866832;
double r866837 = r866834 / r866836;
double r866838 = r866828 + r866837;
return r866838;
}
double f(double x, double y, double z, double t, double a) {
double r866839 = a;
double r866840 = -1.3446760090410248e-176;
bool r866841 = r866839 <= r866840;
double r866842 = x;
double r866843 = y;
double r866844 = r866843 - r866842;
double r866845 = t;
double r866846 = r866839 - r866845;
double r866847 = z;
double r866848 = r866847 - r866845;
double r866849 = r866846 / r866848;
double r866850 = r866844 / r866849;
double r866851 = r866842 + r866850;
double r866852 = 4.6509343006896515e-155;
bool r866853 = r866839 <= r866852;
double r866854 = r866842 * r866847;
double r866855 = r866854 / r866845;
double r866856 = r866843 + r866855;
double r866857 = r866847 * r866843;
double r866858 = r866857 / r866845;
double r866859 = r866856 - r866858;
double r866860 = r866848 / r866846;
double r866861 = r866844 * r866860;
double r866862 = r866842 + r866861;
double r866863 = r866853 ? r866859 : r866862;
double r866864 = r866841 ? r866851 : r866863;
return r866864;
}




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.6 |
| Herbie | 10.3 |
if a < -1.3446760090410248e-176Initial program 23.4
rmApplied associate-/l*9.2
if -1.3446760090410248e-176 < a < 4.6509343006896515e-155Initial program 29.8
Taylor expanded around inf 12.8
if 4.6509343006896515e-155 < a Initial program 24.1
rmApplied *-un-lft-identity24.1
Applied times-frac10.0
Simplified10.0
Final simplification10.3
herbie shell --seed 2019353
(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))))