\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.387037513954152204793629697523518119099 \cdot 10^{152}:\\
\;\;\;\;x \cdot \left(-y\right)\\
\mathbf{elif}\;z \le 2.81109844001032311849514459419925746028 \cdot 10^{123}:\\
\;\;\;\;x \cdot \left(y \cdot \frac{z}{\sqrt{{z}^{2} - a \cdot t}}\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r243729 = x;
double r243730 = y;
double r243731 = r243729 * r243730;
double r243732 = z;
double r243733 = r243731 * r243732;
double r243734 = r243732 * r243732;
double r243735 = t;
double r243736 = a;
double r243737 = r243735 * r243736;
double r243738 = r243734 - r243737;
double r243739 = sqrt(r243738);
double r243740 = r243733 / r243739;
return r243740;
}
double f(double x, double y, double z, double t, double a) {
double r243741 = z;
double r243742 = -1.3870375139541522e+152;
bool r243743 = r243741 <= r243742;
double r243744 = x;
double r243745 = y;
double r243746 = -r243745;
double r243747 = r243744 * r243746;
double r243748 = 2.811098440010323e+123;
bool r243749 = r243741 <= r243748;
double r243750 = 2.0;
double r243751 = pow(r243741, r243750);
double r243752 = a;
double r243753 = t;
double r243754 = r243752 * r243753;
double r243755 = r243751 - r243754;
double r243756 = sqrt(r243755);
double r243757 = r243741 / r243756;
double r243758 = r243745 * r243757;
double r243759 = r243744 * r243758;
double r243760 = r243745 * r243744;
double r243761 = r243749 ? r243759 : r243760;
double r243762 = r243743 ? r243747 : r243761;
return r243762;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.4 |
|---|---|
| Target | 7.5 |
| Herbie | 6.0 |
if z < -1.3870375139541522e+152Initial program 52.5
rmApplied associate-/l*52.1
rmApplied div-inv52.1
Simplified52.1
rmApplied associate-*l*52.1
Taylor expanded around -inf 1.5
Simplified1.5
if -1.3870375139541522e+152 < z < 2.811098440010323e+123Initial program 10.7
rmApplied associate-/l*8.7
rmApplied div-inv8.7
Simplified8.5
rmApplied associate-*l*8.4
if 2.811098440010323e+123 < z Initial program 47.9
rmApplied associate-/l*45.9
rmApplied div-inv45.9
Simplified45.9
Taylor expanded around inf 1.7
Simplified1.7
Final simplification6.0
herbie shell --seed 2019325 +o rules:numerics
(FPCore (x y z t a)
:name "Statistics.Math.RootFinding:ridders from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< z -3.1921305903852764e+46) (- (* y x)) (if (< z 5.976268120920894e+90) (/ (* x z) (/ (sqrt (- (* z z) (* a t))) y)) (* y x)))
(/ (* (* x y) z) (sqrt (- (* z z) (* t a)))))