x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -1.264122689569453656842879868519212174824 \cdot 10^{-228}:\\
\;\;\;\;x + \frac{y - x}{\frac{a - t}{z - t}}\\
\mathbf{elif}\;a \le 1.474978086208166197165144421451213606011 \cdot 10^{-72}:\\
\;\;\;\;\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 r439694 = x;
double r439695 = y;
double r439696 = r439695 - r439694;
double r439697 = z;
double r439698 = t;
double r439699 = r439697 - r439698;
double r439700 = r439696 * r439699;
double r439701 = a;
double r439702 = r439701 - r439698;
double r439703 = r439700 / r439702;
double r439704 = r439694 + r439703;
return r439704;
}
double f(double x, double y, double z, double t, double a) {
double r439705 = a;
double r439706 = -1.2641226895694537e-228;
bool r439707 = r439705 <= r439706;
double r439708 = x;
double r439709 = y;
double r439710 = r439709 - r439708;
double r439711 = t;
double r439712 = r439705 - r439711;
double r439713 = z;
double r439714 = r439713 - r439711;
double r439715 = r439712 / r439714;
double r439716 = r439710 / r439715;
double r439717 = r439708 + r439716;
double r439718 = 1.4749780862081662e-72;
bool r439719 = r439705 <= r439718;
double r439720 = r439708 * r439713;
double r439721 = r439720 / r439711;
double r439722 = r439709 + r439721;
double r439723 = r439713 * r439709;
double r439724 = r439723 / r439711;
double r439725 = r439722 - r439724;
double r439726 = r439714 / r439712;
double r439727 = r439710 * r439726;
double r439728 = r439708 + r439727;
double r439729 = r439719 ? r439725 : r439728;
double r439730 = r439707 ? r439717 : r439729;
return r439730;
}




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.9 |
if a < -1.2641226895694537e-228Initial program 23.4
rmApplied associate-/l*10.8
if -1.2641226895694537e-228 < a < 1.4749780862081662e-72Initial program 29.5
Taylor expanded around inf 15.4
if 1.4749780862081662e-72 < a Initial program 21.9
rmApplied *-un-lft-identity21.9
Applied times-frac7.9
Simplified7.9
Final simplification10.9
herbie shell --seed 2019326
(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))))