x + y \cdot \frac{z - t}{z - a}\begin{array}{l}
\mathbf{if}\;y \le -8.96595528476415968 \cdot 10^{41}:\\
\;\;\;\;x + y \cdot \frac{z - t}{z - a}\\
\mathbf{elif}\;y \le 6.781252727543297 \cdot 10^{-83}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r434850 = x;
double r434851 = y;
double r434852 = z;
double r434853 = t;
double r434854 = r434852 - r434853;
double r434855 = a;
double r434856 = r434852 - r434855;
double r434857 = r434854 / r434856;
double r434858 = r434851 * r434857;
double r434859 = r434850 + r434858;
return r434859;
}
double f(double x, double y, double z, double t, double a) {
double r434860 = y;
double r434861 = -8.96595528476416e+41;
bool r434862 = r434860 <= r434861;
double r434863 = x;
double r434864 = z;
double r434865 = t;
double r434866 = r434864 - r434865;
double r434867 = a;
double r434868 = r434864 - r434867;
double r434869 = r434866 / r434868;
double r434870 = r434860 * r434869;
double r434871 = r434863 + r434870;
double r434872 = 6.781252727543297e-83;
bool r434873 = r434860 <= r434872;
double r434874 = r434866 * r434860;
double r434875 = r434874 / r434868;
double r434876 = r434863 + r434875;
double r434877 = r434860 / r434868;
double r434878 = r434877 * r434866;
double r434879 = r434863 + r434878;
double r434880 = r434873 ? r434876 : r434879;
double r434881 = r434862 ? r434871 : r434880;
return r434881;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.3 |
|---|---|
| Target | 1.2 |
| Herbie | 1.2 |
if y < -8.96595528476416e+41Initial program 0.5
if -8.96595528476416e+41 < y < 6.781252727543297e-83Initial program 2.0
rmApplied associate-*r/0.4
Simplified0.4
if 6.781252727543297e-83 < y Initial program 0.6
rmApplied clear-num0.7
rmApplied associate-/r/0.7
Applied associate-*r*2.9
Simplified2.9
Final simplification1.2
herbie shell --seed 2019199
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))