x + \frac{y \cdot \left(z - t\right)}{z - a}\begin{array}{l}
\mathbf{if}\;y \le -29005.3023392045252:\\
\;\;\;\;x + \frac{y}{\frac{z - a}{z - t}}\\
\mathbf{elif}\;y \le 1.6173790047814861 \cdot 10^{38}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{z - a}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{z - t}{z - a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r584330 = x;
double r584331 = y;
double r584332 = z;
double r584333 = t;
double r584334 = r584332 - r584333;
double r584335 = r584331 * r584334;
double r584336 = a;
double r584337 = r584332 - r584336;
double r584338 = r584335 / r584337;
double r584339 = r584330 + r584338;
return r584339;
}
double f(double x, double y, double z, double t, double a) {
double r584340 = y;
double r584341 = -29005.302339204525;
bool r584342 = r584340 <= r584341;
double r584343 = x;
double r584344 = z;
double r584345 = a;
double r584346 = r584344 - r584345;
double r584347 = t;
double r584348 = r584344 - r584347;
double r584349 = r584346 / r584348;
double r584350 = r584340 / r584349;
double r584351 = r584343 + r584350;
double r584352 = 1.617379004781486e+38;
bool r584353 = r584340 <= r584352;
double r584354 = r584340 * r584348;
double r584355 = r584354 / r584346;
double r584356 = r584343 + r584355;
double r584357 = r584348 / r584346;
double r584358 = r584340 * r584357;
double r584359 = r584343 + r584358;
double r584360 = r584353 ? r584356 : r584359;
double r584361 = r584342 ? r584351 : r584360;
return r584361;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.7 |
|---|---|
| Target | 1.2 |
| Herbie | 0.5 |
if y < -29005.302339204525Initial program 22.8
rmApplied associate-/l*0.7
if -29005.302339204525 < y < 1.617379004781486e+38Initial program 0.3
if 1.617379004781486e+38 < y Initial program 26.5
rmApplied *-un-lft-identity26.5
Applied times-frac0.6
Simplified0.6
Final simplification0.5
herbie shell --seed 2020027 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (/ (* y (- z t)) (- z a))))