x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;z \le -2.3206655123942797 \cdot 10^{+53}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y - x}{t}, z, x\right)\\
\mathbf{elif}\;z \le 5.542680570447865 \cdot 10^{+157}:\\
\;\;\;\;\frac{\left(y - x\right) \cdot z}{t} + x\\
\mathbf{else}:\\
\;\;\;\;x + \frac{z}{t} \cdot \left(y - x\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r27581159 = x;
double r27581160 = y;
double r27581161 = r27581160 - r27581159;
double r27581162 = z;
double r27581163 = t;
double r27581164 = r27581162 / r27581163;
double r27581165 = r27581161 * r27581164;
double r27581166 = r27581159 + r27581165;
return r27581166;
}
double f(double x, double y, double z, double t) {
double r27581167 = z;
double r27581168 = -2.3206655123942797e+53;
bool r27581169 = r27581167 <= r27581168;
double r27581170 = y;
double r27581171 = x;
double r27581172 = r27581170 - r27581171;
double r27581173 = t;
double r27581174 = r27581172 / r27581173;
double r27581175 = fma(r27581174, r27581167, r27581171);
double r27581176 = 5.542680570447865e+157;
bool r27581177 = r27581167 <= r27581176;
double r27581178 = r27581172 * r27581167;
double r27581179 = r27581178 / r27581173;
double r27581180 = r27581179 + r27581171;
double r27581181 = r27581167 / r27581173;
double r27581182 = r27581181 * r27581172;
double r27581183 = r27581171 + r27581182;
double r27581184 = r27581177 ? r27581180 : r27581183;
double r27581185 = r27581169 ? r27581175 : r27581184;
return r27581185;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 2.1 |
|---|---|
| Target | 2.3 |
| Herbie | 2.5 |
if z < -2.3206655123942797e+53Initial program 5.6
Simplified2.0
if -2.3206655123942797e+53 < z < 5.542680570447865e+157Initial program 1.2
rmApplied associate-*r/2.3
if 5.542680570447865e+157 < z Initial program 5.2
Final simplification2.5
herbie shell --seed 2019158 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.8867) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))