\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\
\mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le -3.407628243643392 \cdot 10^{-225}:\\
\;\;\;\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\\
\mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 0.0:\\
\;\;\;\;x\\
\mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 1.5005608759723991 \cdot 10^{291}:\\
\;\;\;\;\frac{\left(t - z\right) \cdot {\left({\left(\sqrt[3]{\sqrt[3]{y}}\right)}^{2}\right)}^{3}}{\frac{a - t}{\sqrt[3]{y}}} + \left(x + y\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r565350 = x;
double r565351 = y;
double r565352 = r565350 + r565351;
double r565353 = z;
double r565354 = t;
double r565355 = r565353 - r565354;
double r565356 = r565355 * r565351;
double r565357 = a;
double r565358 = r565357 - r565354;
double r565359 = r565356 / r565358;
double r565360 = r565352 - r565359;
return r565360;
}
double f(double x, double y, double z, double t, double a) {
double r565361 = x;
double r565362 = y;
double r565363 = r565361 + r565362;
double r565364 = z;
double r565365 = t;
double r565366 = r565364 - r565365;
double r565367 = r565366 * r565362;
double r565368 = a;
double r565369 = r565368 - r565365;
double r565370 = r565367 / r565369;
double r565371 = r565363 - r565370;
double r565372 = -inf.0;
bool r565373 = r565371 <= r565372;
double r565374 = r565362 / r565369;
double r565375 = r565365 - r565364;
double r565376 = fma(r565374, r565375, r565363);
double r565377 = -3.407628243643392e-225;
bool r565378 = r565371 <= r565377;
double r565379 = 0.0;
bool r565380 = r565371 <= r565379;
double r565381 = 1.500560875972399e+291;
bool r565382 = r565371 <= r565381;
double r565383 = cbrt(r565362);
double r565384 = cbrt(r565383);
double r565385 = 2.0;
double r565386 = pow(r565384, r565385);
double r565387 = 3.0;
double r565388 = pow(r565386, r565387);
double r565389 = r565375 * r565388;
double r565390 = r565369 / r565383;
double r565391 = r565389 / r565390;
double r565392 = r565391 + r565363;
double r565393 = r565382 ? r565392 : r565376;
double r565394 = r565380 ? r565361 : r565393;
double r565395 = r565378 ? r565371 : r565394;
double r565396 = r565373 ? r565376 : r565395;
return r565396;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 16.5 |
|---|---|
| Target | 8.1 |
| Herbie | 8.6 |
if (- (+ x y) (/ (* (- z t) y) (- a t))) < -inf.0 or 1.500560875972399e+291 < (- (+ x y) (/ (* (- z t) y) (- a t))) Initial program 58.6
Simplified24.4
if -inf.0 < (- (+ x y) (/ (* (- z t) y) (- a t))) < -3.407628243643392e-225Initial program 1.3
if -3.407628243643392e-225 < (- (+ x y) (/ (* (- z t) y) (- a t))) < 0.0Initial program 57.1
Simplified57.6
Taylor expanded around 0 35.0
if 0.0 < (- (+ x y) (/ (* (- z t) y) (- a t))) < 1.500560875972399e+291Initial program 1.3
Simplified3.1
rmApplied add-cube-cbrt3.3
Applied associate-/l*3.3
rmApplied add-cube-cbrt3.4
Applied associate-*l*3.4
Simplified3.5
rmApplied fma-udef3.5
Simplified1.8
Final simplification8.6
herbie shell --seed 2020056 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))