\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -9.34194979807773912 \cdot 10^{151}:\\
\;\;\;\;-x \cdot y\\
\mathbf{elif}\;z \le 2.2349389384476415 \cdot 10^{125}:\\
\;\;\;\;x \cdot \left(y \cdot \frac{z}{\sqrt{z \cdot z - t \cdot a}}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r406794 = x;
double r406795 = y;
double r406796 = r406794 * r406795;
double r406797 = z;
double r406798 = r406796 * r406797;
double r406799 = r406797 * r406797;
double r406800 = t;
double r406801 = a;
double r406802 = r406800 * r406801;
double r406803 = r406799 - r406802;
double r406804 = sqrt(r406803);
double r406805 = r406798 / r406804;
return r406805;
}
double f(double x, double y, double z, double t, double a) {
double r406806 = z;
double r406807 = -9.341949798077739e+151;
bool r406808 = r406806 <= r406807;
double r406809 = x;
double r406810 = y;
double r406811 = r406809 * r406810;
double r406812 = -r406811;
double r406813 = 2.2349389384476415e+125;
bool r406814 = r406806 <= r406813;
double r406815 = r406806 * r406806;
double r406816 = t;
double r406817 = a;
double r406818 = r406816 * r406817;
double r406819 = r406815 - r406818;
double r406820 = sqrt(r406819);
double r406821 = r406806 / r406820;
double r406822 = r406810 * r406821;
double r406823 = r406809 * r406822;
double r406824 = r406814 ? r406823 : r406811;
double r406825 = r406808 ? r406812 : r406824;
return r406825;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.1 |
|---|---|
| Target | 7.5 |
| Herbie | 6.1 |
if z < -9.341949798077739e+151Initial program 53.6
Taylor expanded around -inf 1.5
Simplified1.5
if -9.341949798077739e+151 < z < 2.2349389384476415e+125Initial program 11.5
rmApplied *-un-lft-identity11.5
Applied sqrt-prod11.5
Applied times-frac9.3
Simplified9.3
rmApplied associate-*l*8.6
if 2.2349389384476415e+125 < z Initial program 47.2
Taylor expanded around inf 1.6
Final simplification6.1
herbie shell --seed 2020042 +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)))))