\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;t \le -6.0989892354218388 \cdot 10^{126}:\\
\;\;\;\;x\\
\mathbf{elif}\;t \le 1.26285112774994464 \cdot 10^{220}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{a - t} \cdot y, t - z, x + y\right)\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r2549 = x;
double r2550 = y;
double r2551 = r2549 + r2550;
double r2552 = z;
double r2553 = t;
double r2554 = r2552 - r2553;
double r2555 = r2554 * r2550;
double r2556 = a;
double r2557 = r2556 - r2553;
double r2558 = r2555 / r2557;
double r2559 = r2551 - r2558;
return r2559;
}
double f(double x, double y, double z, double t, double a) {
double r2560 = t;
double r2561 = -6.098989235421839e+126;
bool r2562 = r2560 <= r2561;
double r2563 = x;
double r2564 = 1.2628511277499446e+220;
bool r2565 = r2560 <= r2564;
double r2566 = 1.0;
double r2567 = a;
double r2568 = r2567 - r2560;
double r2569 = r2566 / r2568;
double r2570 = y;
double r2571 = r2569 * r2570;
double r2572 = z;
double r2573 = r2560 - r2572;
double r2574 = r2563 + r2570;
double r2575 = fma(r2571, r2573, r2574);
double r2576 = r2565 ? r2575 : r2563;
double r2577 = r2562 ? r2563 : r2576;
return r2577;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 16.7 |
|---|---|
| Target | 8.5 |
| Herbie | 11.4 |
if t < -6.098989235421839e+126 or 1.2628511277499446e+220 < t Initial program 32.8
Simplified24.0
Taylor expanded around 0 21.1
if -6.098989235421839e+126 < t < 1.2628511277499446e+220Initial program 11.1
Simplified8.0
rmApplied clear-num8.1
rmApplied div-inv8.1
Applied add-cube-cbrt8.1
Applied times-frac8.0
Simplified8.0
Simplified8.0
Final simplification11.4
herbie shell --seed 2020025 +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))))