\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;t \le -1.8666316459197392 \cdot 10^{+129}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, y, x\right)\\
\mathbf{elif}\;t \le 3.963652201301505 \cdot 10^{+142}:\\
\;\;\;\;\mathsf{fma}\left(\left(\frac{\sqrt[3]{y}}{\sqrt[3]{a - t}} \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a - t}}\right) \cdot \left(t - z\right), \frac{\sqrt[3]{y}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}, 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 r23488603 = x;
double r23488604 = y;
double r23488605 = r23488603 + r23488604;
double r23488606 = z;
double r23488607 = t;
double r23488608 = r23488606 - r23488607;
double r23488609 = r23488608 * r23488604;
double r23488610 = a;
double r23488611 = r23488610 - r23488607;
double r23488612 = r23488609 / r23488611;
double r23488613 = r23488605 - r23488612;
return r23488613;
}
double f(double x, double y, double z, double t, double a) {
double r23488614 = t;
double r23488615 = -1.8666316459197392e+129;
bool r23488616 = r23488614 <= r23488615;
double r23488617 = z;
double r23488618 = r23488617 / r23488614;
double r23488619 = y;
double r23488620 = x;
double r23488621 = fma(r23488618, r23488619, r23488620);
double r23488622 = 3.963652201301505e+142;
bool r23488623 = r23488614 <= r23488622;
double r23488624 = cbrt(r23488619);
double r23488625 = a;
double r23488626 = r23488625 - r23488614;
double r23488627 = cbrt(r23488626);
double r23488628 = r23488624 / r23488627;
double r23488629 = r23488628 * r23488628;
double r23488630 = r23488614 - r23488617;
double r23488631 = r23488629 * r23488630;
double r23488632 = r23488627 * r23488627;
double r23488633 = cbrt(r23488632);
double r23488634 = cbrt(r23488627);
double r23488635 = r23488633 * r23488634;
double r23488636 = r23488624 / r23488635;
double r23488637 = r23488619 + r23488620;
double r23488638 = fma(r23488631, r23488636, r23488637);
double r23488639 = r23488623 ? r23488638 : r23488621;
double r23488640 = r23488616 ? r23488621 : r23488639;
return r23488640;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 15.9 |
|---|---|
| Target | 8.6 |
| Herbie | 7.6 |
if t < -1.8666316459197392e+129 or 3.963652201301505e+142 < t Initial program 31.4
Simplified23.6
Taylor expanded around inf 16.7
Simplified11.5
if -1.8666316459197392e+129 < t < 3.963652201301505e+142Initial program 9.3
Simplified7.1
rmApplied fma-udef7.1
rmApplied add-cube-cbrt7.3
Applied add-cube-cbrt7.4
Applied times-frac7.4
Applied associate-*r*5.9
Simplified5.9
rmApplied add-cube-cbrt5.9
Applied cbrt-prod5.9
rmApplied fma-def5.9
Final simplification7.6
herbie shell --seed 2019164 +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 (- 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))))