\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;t \le -4.36754662391784781499062445922864415335 \cdot 10^{55}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, y, x\right)\\
\mathbf{elif}\;t \le 9.944888148073560836094682457240141243033 \cdot 10^{179}:\\
\;\;\;\;\left(t - z\right) \cdot \frac{y}{a - t} + \left(y + x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, y, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r23568979 = x;
double r23568980 = y;
double r23568981 = r23568979 + r23568980;
double r23568982 = z;
double r23568983 = t;
double r23568984 = r23568982 - r23568983;
double r23568985 = r23568984 * r23568980;
double r23568986 = a;
double r23568987 = r23568986 - r23568983;
double r23568988 = r23568985 / r23568987;
double r23568989 = r23568981 - r23568988;
return r23568989;
}
double f(double x, double y, double z, double t, double a) {
double r23568990 = t;
double r23568991 = -4.367546623917848e+55;
bool r23568992 = r23568990 <= r23568991;
double r23568993 = z;
double r23568994 = r23568993 / r23568990;
double r23568995 = y;
double r23568996 = x;
double r23568997 = fma(r23568994, r23568995, r23568996);
double r23568998 = 9.944888148073561e+179;
bool r23568999 = r23568990 <= r23568998;
double r23569000 = r23568990 - r23568993;
double r23569001 = a;
double r23569002 = r23569001 - r23568990;
double r23569003 = r23568995 / r23569002;
double r23569004 = r23569000 * r23569003;
double r23569005 = r23568995 + r23568996;
double r23569006 = r23569004 + r23569005;
double r23569007 = r23568999 ? r23569006 : r23568997;
double r23569008 = r23568992 ? r23568997 : r23569007;
return r23569008;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 16.3 |
|---|---|
| Target | 8.7 |
| Herbie | 9.1 |
if t < -4.367546623917848e+55 or 9.944888148073561e+179 < t Initial program 29.9
Simplified21.9
Taylor expanded around inf 17.8
Simplified12.7
if -4.367546623917848e+55 < t < 9.944888148073561e+179Initial program 9.7
Simplified7.3
rmApplied fma-udef7.4
Final simplification9.1
herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1.0 (- 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.0 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))