x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -2.368254136616310484006967857427528249355 \cdot 10^{-48}:\\
\;\;\;\;x + \left(y - x\right) \cdot \left(\left(z - t\right) \cdot \frac{1}{a - t}\right)\\
\mathbf{elif}\;a \le 2.728706087853961537976531768816465205049 \cdot 10^{-108}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{1}{\frac{\frac{a - t}{z - t}}{y - x}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r432801 = x;
double r432802 = y;
double r432803 = r432802 - r432801;
double r432804 = z;
double r432805 = t;
double r432806 = r432804 - r432805;
double r432807 = r432803 * r432806;
double r432808 = a;
double r432809 = r432808 - r432805;
double r432810 = r432807 / r432809;
double r432811 = r432801 + r432810;
return r432811;
}
double f(double x, double y, double z, double t, double a) {
double r432812 = a;
double r432813 = -2.3682541366163105e-48;
bool r432814 = r432812 <= r432813;
double r432815 = x;
double r432816 = y;
double r432817 = r432816 - r432815;
double r432818 = z;
double r432819 = t;
double r432820 = r432818 - r432819;
double r432821 = 1.0;
double r432822 = r432812 - r432819;
double r432823 = r432821 / r432822;
double r432824 = r432820 * r432823;
double r432825 = r432817 * r432824;
double r432826 = r432815 + r432825;
double r432827 = 2.7287060878539615e-108;
bool r432828 = r432812 <= r432827;
double r432829 = r432815 * r432818;
double r432830 = r432829 / r432819;
double r432831 = r432816 + r432830;
double r432832 = r432818 * r432816;
double r432833 = r432832 / r432819;
double r432834 = r432831 - r432833;
double r432835 = r432822 / r432820;
double r432836 = r432835 / r432817;
double r432837 = r432821 / r432836;
double r432838 = r432815 + r432837;
double r432839 = r432828 ? r432834 : r432838;
double r432840 = r432814 ? r432826 : r432839;
return r432840;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.4 |
|---|---|
| Target | 9.3 |
| Herbie | 11.5 |
if a < -2.3682541366163105e-48Initial program 22.4
rmApplied *-un-lft-identity22.4
Applied times-frac7.7
Simplified7.7
rmApplied div-inv7.7
if -2.3682541366163105e-48 < a < 2.7287060878539615e-108Initial program 28.4
Taylor expanded around inf 18.2
if 2.7287060878539615e-108 < a Initial program 22.5
rmApplied associate-/l*8.5
rmApplied clear-num8.6
Final simplification11.5
herbie shell --seed 2019304
(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.7744031700831742e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))