x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a - t} = -\infty \lor \neg \left(\frac{y \cdot \left(z - t\right)}{a - t} \le 3.11675203590587826 \cdot 10^{282}\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 r533316 = x;
double r533317 = y;
double r533318 = z;
double r533319 = t;
double r533320 = r533318 - r533319;
double r533321 = r533317 * r533320;
double r533322 = a;
double r533323 = r533322 - r533319;
double r533324 = r533321 / r533323;
double r533325 = r533316 + r533324;
return r533325;
}
double f(double x, double y, double z, double t, double a) {
double r533326 = y;
double r533327 = z;
double r533328 = t;
double r533329 = r533327 - r533328;
double r533330 = r533326 * r533329;
double r533331 = a;
double r533332 = r533331 - r533328;
double r533333 = r533330 / r533332;
double r533334 = -inf.0;
bool r533335 = r533333 <= r533334;
double r533336 = 3.1167520359058783e+282;
bool r533337 = r533333 <= r533336;
double r533338 = !r533337;
bool r533339 = r533335 || r533338;
double r533340 = r533332 / r533326;
double r533341 = r533329 / r533340;
double r533342 = x;
double r533343 = r533341 + r533342;
double r533344 = r533342 + r533333;
double r533345 = r533339 ? r533343 : r533344;
return r533345;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.3 |
| Herbie | 0.3 |
if (/ (* y (- z t)) (- a t)) < -inf.0 or 3.1167520359058783e+282 < (/ (* y (- z t)) (- a t)) Initial program 62.0
Simplified0.6
rmApplied clear-num0.7
rmApplied fma-udef0.7
Simplified0.6
if -inf.0 < (/ (* y (- z t)) (- a t)) < 3.1167520359058783e+282Initial program 0.2
Final simplification0.3
herbie shell --seed 2020065 +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))))