x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;\frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t} + x\\
\mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{a - t} \le 3.5979176886514064 \cdot 10^{+307}:\\
\;\;\;\;\frac{\left(z - t\right) \cdot y}{a - t} + x\\
\mathbf{else}:\\
\;\;\;\;\frac{z - t}{\frac{a - t}{y}} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r29847353 = x;
double r29847354 = y;
double r29847355 = z;
double r29847356 = t;
double r29847357 = r29847355 - r29847356;
double r29847358 = r29847354 * r29847357;
double r29847359 = a;
double r29847360 = r29847359 - r29847356;
double r29847361 = r29847358 / r29847360;
double r29847362 = r29847353 + r29847361;
return r29847362;
}
double f(double x, double y, double z, double t, double a) {
double r29847363 = z;
double r29847364 = t;
double r29847365 = r29847363 - r29847364;
double r29847366 = y;
double r29847367 = r29847365 * r29847366;
double r29847368 = a;
double r29847369 = r29847368 - r29847364;
double r29847370 = r29847367 / r29847369;
double r29847371 = -inf.0;
bool r29847372 = r29847370 <= r29847371;
double r29847373 = r29847366 / r29847369;
double r29847374 = r29847365 * r29847373;
double r29847375 = x;
double r29847376 = r29847374 + r29847375;
double r29847377 = 3.5979176886514064e+307;
bool r29847378 = r29847370 <= r29847377;
double r29847379 = r29847370 + r29847375;
double r29847380 = r29847369 / r29847366;
double r29847381 = r29847365 / r29847380;
double r29847382 = r29847381 + r29847375;
double r29847383 = r29847378 ? r29847379 : r29847382;
double r29847384 = r29847372 ? r29847376 : r29847383;
return r29847384;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 9.8 |
|---|---|
| Target | 1.2 |
| Herbie | 0.2 |
if (/ (* y (- z t)) (- a t)) < -inf.0Initial program 60.2
rmApplied *-un-lft-identity60.2
Applied *-commutative60.2
Applied times-frac0.1
Simplified0.1
if -inf.0 < (/ (* y (- z t)) (- a t)) < 3.5979176886514064e+307Initial program 0.2
if 3.5979176886514064e+307 < (/ (* y (- z t)) (- a t)) Initial program 60.2
rmApplied *-commutative60.2
Applied associate-/l*0.2
Final simplification0.2
herbie shell --seed 2019158
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))