x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;y \le -186062994224651239424:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t} + x\\
\mathbf{elif}\;y \le 1.296970934114568854164079327463464100023 \cdot 10^{-94}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a - t}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r426365 = x;
double r426366 = y;
double r426367 = z;
double r426368 = t;
double r426369 = r426367 - r426368;
double r426370 = r426366 * r426369;
double r426371 = a;
double r426372 = r426371 - r426368;
double r426373 = r426370 / r426372;
double r426374 = r426365 + r426373;
return r426374;
}
double f(double x, double y, double z, double t, double a) {
double r426375 = y;
double r426376 = -1.8606299422465124e+20;
bool r426377 = r426375 <= r426376;
double r426378 = z;
double r426379 = t;
double r426380 = r426378 - r426379;
double r426381 = a;
double r426382 = r426381 - r426379;
double r426383 = r426375 / r426382;
double r426384 = r426380 * r426383;
double r426385 = x;
double r426386 = r426384 + r426385;
double r426387 = 1.2969709341145689e-94;
bool r426388 = r426375 <= r426387;
double r426389 = r426380 * r426375;
double r426390 = r426389 / r426382;
double r426391 = r426385 + r426390;
double r426392 = r426382 / r426380;
double r426393 = r426375 / r426392;
double r426394 = r426385 + r426393;
double r426395 = r426388 ? r426391 : r426394;
double r426396 = r426377 ? r426386 : r426395;
return r426396;
}




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.9 |
if y < -1.8606299422465124e+20Initial program 24.5
rmApplied *-un-lft-identity24.5
Applied times-frac0.8
Simplified0.8
rmApplied *-un-lft-identity0.8
Applied associate-*l*0.8
Simplified3.0
if -1.8606299422465124e+20 < y < 1.2969709341145689e-94Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac2.2
Simplified2.2
rmApplied *-un-lft-identity2.2
Applied associate-*l*2.2
Simplified3.8
rmApplied associate-*r/0.3
if 1.2969709341145689e-94 < y Initial program 17.8
rmApplied associate-/l*0.4
Final simplification0.9
herbie shell --seed 2019323
(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))))