\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -2.322501464893627557227599266531121403226 \cdot 10^{-115} \lor \neg \left(a \le 1.132547627968652530752459014111872971988 \cdot 10^{-26}\right):\\
\;\;\;\;\left(\sqrt[3]{\mathsf{fma}\left(\frac{t - z}{a - t}, y, y\right) + x} \cdot \sqrt[3]{\mathsf{fma}\left(\frac{t - z}{a - t}, y, y\right) + x}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\frac{t - z}{a - t}, y, y\right) + x}\\
\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 r349260 = x;
double r349261 = y;
double r349262 = r349260 + r349261;
double r349263 = z;
double r349264 = t;
double r349265 = r349263 - r349264;
double r349266 = r349265 * r349261;
double r349267 = a;
double r349268 = r349267 - r349264;
double r349269 = r349266 / r349268;
double r349270 = r349262 - r349269;
return r349270;
}
double f(double x, double y, double z, double t, double a) {
double r349271 = a;
double r349272 = -2.3225014648936276e-115;
bool r349273 = r349271 <= r349272;
double r349274 = 1.1325476279686525e-26;
bool r349275 = r349271 <= r349274;
double r349276 = !r349275;
bool r349277 = r349273 || r349276;
double r349278 = t;
double r349279 = z;
double r349280 = r349278 - r349279;
double r349281 = r349271 - r349278;
double r349282 = r349280 / r349281;
double r349283 = y;
double r349284 = fma(r349282, r349283, r349283);
double r349285 = x;
double r349286 = r349284 + r349285;
double r349287 = cbrt(r349286);
double r349288 = r349287 * r349287;
double r349289 = r349288 * r349287;
double r349290 = r349279 / r349278;
double r349291 = fma(r349290, r349283, r349285);
double r349292 = r349277 ? r349289 : r349291;
return r349292;
}




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.8 |
| Herbie | 8.8 |
if a < -2.3225014648936276e-115 or 1.1325476279686525e-26 < a Initial program 14.7
Simplified7.7
rmApplied fma-udef7.7
rmApplied add-cube-cbrt7.8
rmApplied add-cube-cbrt8.9
Simplified8.8
Simplified6.8
if -2.3225014648936276e-115 < a < 1.1325476279686525e-26Initial program 20.4
Simplified19.7
Taylor expanded around inf 13.8
Simplified12.4
Final simplification8.8
herbie shell --seed 2019306 +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-7) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.47542934445772333e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))