x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;y \le -8.06916043366223524 \cdot 10^{-64}:\\
\;\;\;\;x + \frac{y}{\frac{a - t}{z - t}}\\
\mathbf{elif}\;y \le 5.4933827527075371 \cdot 10^{24}:\\
\;\;\;\;x + 1 \cdot \frac{\left(z - t\right) \cdot y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r545960 = x;
double r545961 = y;
double r545962 = z;
double r545963 = t;
double r545964 = r545962 - r545963;
double r545965 = r545961 * r545964;
double r545966 = a;
double r545967 = r545966 - r545963;
double r545968 = r545965 / r545967;
double r545969 = r545960 + r545968;
return r545969;
}
double f(double x, double y, double z, double t, double a) {
double r545970 = y;
double r545971 = -8.069160433662235e-64;
bool r545972 = r545970 <= r545971;
double r545973 = x;
double r545974 = a;
double r545975 = t;
double r545976 = r545974 - r545975;
double r545977 = z;
double r545978 = r545977 - r545975;
double r545979 = r545976 / r545978;
double r545980 = r545970 / r545979;
double r545981 = r545973 + r545980;
double r545982 = 5.493382752707537e+24;
bool r545983 = r545970 <= r545982;
double r545984 = 1.0;
double r545985 = r545978 * r545970;
double r545986 = r545985 / r545976;
double r545987 = r545984 * r545986;
double r545988 = r545973 + r545987;
double r545989 = r545978 / r545976;
double r545990 = r545970 * r545989;
double r545991 = r545973 + r545990;
double r545992 = r545983 ? r545988 : r545991;
double r545993 = r545972 ? r545981 : r545992;
return r545993;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.1 |
| Herbie | 0.4 |
if y < -8.069160433662235e-64Initial program 17.7
rmApplied associate-/l*0.6
if -8.069160433662235e-64 < y < 5.493382752707537e+24Initial program 0.4
rmApplied associate-/l*1.7
rmApplied div-inv1.8
Applied add-cube-cbrt2.0
Applied times-frac2.6
Simplified2.6
rmApplied *-un-lft-identity2.6
Applied associate-*l*2.6
Simplified0.4
if 5.493382752707537e+24 < y Initial program 25.9
rmApplied *-un-lft-identity25.9
Applied times-frac0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020062
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))