x + y \cdot \frac{z - t}{a - t}\begin{array}{l}
\mathbf{if}\;y \cdot \frac{z - t}{a - t} \le -4.753267398932855806255398723158550008719 \cdot 10^{44}:\\
\;\;\;\;x + \frac{y}{a - t} \cdot \left(z - t\right)\\
\mathbf{elif}\;y \cdot \frac{z - t}{a - t} \le 17792690225009492051485051387379712:\\
\;\;\;\;\frac{\left(z - t\right) \cdot y}{a - t} + x\\
\mathbf{else}:\\
\;\;\;\;y \cdot \frac{z - t}{a - t} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r14227061 = x;
double r14227062 = y;
double r14227063 = z;
double r14227064 = t;
double r14227065 = r14227063 - r14227064;
double r14227066 = a;
double r14227067 = r14227066 - r14227064;
double r14227068 = r14227065 / r14227067;
double r14227069 = r14227062 * r14227068;
double r14227070 = r14227061 + r14227069;
return r14227070;
}
double f(double x, double y, double z, double t, double a) {
double r14227071 = y;
double r14227072 = z;
double r14227073 = t;
double r14227074 = r14227072 - r14227073;
double r14227075 = a;
double r14227076 = r14227075 - r14227073;
double r14227077 = r14227074 / r14227076;
double r14227078 = r14227071 * r14227077;
double r14227079 = -4.753267398932856e+44;
bool r14227080 = r14227078 <= r14227079;
double r14227081 = x;
double r14227082 = r14227071 / r14227076;
double r14227083 = r14227082 * r14227074;
double r14227084 = r14227081 + r14227083;
double r14227085 = 1.7792690225009492e+34;
bool r14227086 = r14227078 <= r14227085;
double r14227087 = r14227074 * r14227071;
double r14227088 = r14227087 / r14227076;
double r14227089 = r14227088 + r14227081;
double r14227090 = r14227078 + r14227081;
double r14227091 = r14227086 ? r14227089 : r14227090;
double r14227092 = r14227080 ? r14227084 : r14227091;
return r14227092;
}




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 | 0.4 |
| Herbie | 1.5 |
if (* y (/ (- z t) (- a t))) < -4.753267398932856e+44Initial program 3.1
rmApplied div-inv3.2
rmApplied *-un-lft-identity3.2
Applied associate-*l*3.2
Simplified3.3
if -4.753267398932856e+44 < (* y (/ (- z t) (- a t))) < 1.7792690225009492e+34Initial program 0.3
rmApplied associate-*r/0.6
if 1.7792690225009492e+34 < (* y (/ (- z t) (- a t))) Initial program 2.6
Final simplification1.5
herbie shell --seed 2019171
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:herbie-target
(if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1.0 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))