x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a - t} \le -1.611599144545034992288746807936135012432 \cdot 10^{-25} \lor \neg \left(\frac{y \cdot \left(z - t\right)}{a - t} \le 1.054258060746243275263708971660933948259 \cdot 10^{299}\right):\\
\;\;\;\;\frac{z - t}{\frac{a - t}{y}} + x\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r384265 = x;
double r384266 = y;
double r384267 = z;
double r384268 = t;
double r384269 = r384267 - r384268;
double r384270 = r384266 * r384269;
double r384271 = a;
double r384272 = r384271 - r384268;
double r384273 = r384270 / r384272;
double r384274 = r384265 + r384273;
return r384274;
}
double f(double x, double y, double z, double t, double a) {
double r384275 = y;
double r384276 = z;
double r384277 = t;
double r384278 = r384276 - r384277;
double r384279 = r384275 * r384278;
double r384280 = a;
double r384281 = r384280 - r384277;
double r384282 = r384279 / r384281;
double r384283 = -1.611599144545035e-25;
bool r384284 = r384282 <= r384283;
double r384285 = 1.0542580607462433e+299;
bool r384286 = r384282 <= r384285;
double r384287 = !r384286;
bool r384288 = r384284 || r384287;
double r384289 = r384281 / r384275;
double r384290 = r384278 / r384289;
double r384291 = x;
double r384292 = r384290 + r384291;
double r384293 = r384291 + r384282;
double r384294 = r384288 ? r384292 : r384293;
return r384294;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.9 |
|---|---|
| Target | 1.3 |
| Herbie | 0.7 |
if (/ (* y (- z t)) (- a t)) < -1.611599144545035e-25 or 1.0542580607462433e+299 < (/ (* y (- z t)) (- a t)) Initial program 32.2
Simplified1.8
rmApplied clear-num1.9
rmApplied fma-udef1.9
Simplified1.7
if -1.611599144545035e-25 < (/ (* y (- z t)) (- a t)) < 1.0542580607462433e+299Initial program 0.2
Final simplification0.7
herbie shell --seed 2019323 +o rules:numerics
(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))))