\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -6.35321437481322989 \cdot 10^{-142}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a - t}, t - z, x + y\right)\\
\mathbf{elif}\;a \le -1.76342549420850578 \cdot 10^{-264}:\\
\;\;\;\;x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1}, \frac{\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}}{1} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y}}}{a - t} \cdot \left(t - z\right)\right), x + y\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r599727 = x;
double r599728 = y;
double r599729 = r599727 + r599728;
double r599730 = z;
double r599731 = t;
double r599732 = r599730 - r599731;
double r599733 = r599732 * r599728;
double r599734 = a;
double r599735 = r599734 - r599731;
double r599736 = r599733 / r599735;
double r599737 = r599729 - r599736;
return r599737;
}
double f(double x, double y, double z, double t, double a) {
double r599738 = a;
double r599739 = -6.35321437481323e-142;
bool r599740 = r599738 <= r599739;
double r599741 = y;
double r599742 = t;
double r599743 = r599738 - r599742;
double r599744 = r599741 / r599743;
double r599745 = z;
double r599746 = r599742 - r599745;
double r599747 = x;
double r599748 = r599747 + r599741;
double r599749 = fma(r599744, r599746, r599748);
double r599750 = -1.7634254942085058e-264;
bool r599751 = r599738 <= r599750;
double r599752 = cbrt(r599741);
double r599753 = r599752 * r599752;
double r599754 = 1.0;
double r599755 = r599753 / r599754;
double r599756 = cbrt(r599752);
double r599757 = r599756 * r599756;
double r599758 = r599757 / r599754;
double r599759 = r599756 / r599743;
double r599760 = r599759 * r599746;
double r599761 = r599758 * r599760;
double r599762 = fma(r599755, r599761, r599748);
double r599763 = r599751 ? r599747 : r599762;
double r599764 = r599740 ? r599749 : r599763;
return r599764;
}




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.6 |
| Herbie | 12.6 |
if a < -6.35321437481323e-142Initial program 15.6
Simplified10.1
rmApplied fma-udef10.2
rmApplied fma-def10.1
if -6.35321437481323e-142 < a < -1.7634254942085058e-264Initial program 17.6
Simplified18.3
Taylor expanded around 0 23.8
if -1.7634254942085058e-264 < a Initial program 17.3
Simplified12.4
rmApplied fma-udef12.4
rmApplied *-un-lft-identity12.4
Applied add-cube-cbrt12.6
Applied times-frac12.6
Applied associate-*l*11.9
rmApplied fma-def11.9
rmApplied *-un-lft-identity11.9
Applied add-cube-cbrt12.0
Applied times-frac12.0
Applied associate-*l*12.2
Final simplification12.6
herbie shell --seed 2020081 +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))))