x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -6.186660797876992217305744119765362832497 \cdot 10^{-149}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{elif}\;a \le 1.686242959618626939016913009565689776441 \cdot 10^{-164}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\left(a - t\right) \cdot \frac{1}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r466764 = x;
double r466765 = y;
double r466766 = r466765 - r466764;
double r466767 = z;
double r466768 = t;
double r466769 = r466767 - r466768;
double r466770 = r466766 * r466769;
double r466771 = a;
double r466772 = r466771 - r466768;
double r466773 = r466770 / r466772;
double r466774 = r466764 + r466773;
return r466774;
}
double f(double x, double y, double z, double t, double a) {
double r466775 = a;
double r466776 = -6.186660797876992e-149;
bool r466777 = r466775 <= r466776;
double r466778 = x;
double r466779 = y;
double r466780 = r466779 - r466778;
double r466781 = z;
double r466782 = t;
double r466783 = r466781 - r466782;
double r466784 = r466775 - r466782;
double r466785 = r466783 / r466784;
double r466786 = r466780 * r466785;
double r466787 = r466778 + r466786;
double r466788 = 1.686242959618627e-164;
bool r466789 = r466775 <= r466788;
double r466790 = r466778 * r466781;
double r466791 = r466790 / r466782;
double r466792 = r466779 + r466791;
double r466793 = r466781 * r466779;
double r466794 = r466793 / r466782;
double r466795 = r466792 - r466794;
double r466796 = 1.0;
double r466797 = r466796 / r466783;
double r466798 = r466784 * r466797;
double r466799 = r466780 / r466798;
double r466800 = r466778 + r466799;
double r466801 = r466789 ? r466795 : r466800;
double r466802 = r466777 ? r466787 : r466801;
return r466802;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.5 |
|---|---|
| Target | 9.6 |
| Herbie | 10.6 |
if a < -6.186660797876992e-149Initial program 23.0
rmApplied *-un-lft-identity23.0
Applied times-frac10.0
Simplified10.0
if -6.186660797876992e-149 < a < 1.686242959618627e-164Initial program 29.7
Taylor expanded around inf 13.8
if 1.686242959618627e-164 < a Initial program 23.1
rmApplied associate-/l*9.4
rmApplied div-inv9.5
Final simplification10.6
herbie shell --seed 2019303
(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))))