\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -4.828914214900401987678134109339515859521 \cdot 10^{120}:\\
\;\;\;\;y \cdot \left(-x\right)\\
\mathbf{elif}\;z \le 1.239440162778036983903868388902715558197 \cdot 10^{98}:\\
\;\;\;\;\frac{\sqrt[3]{z}}{\sqrt{\sqrt[3]{\sqrt{z \cdot z - a \cdot t}} \cdot \sqrt[3]{\sqrt{z \cdot z - a \cdot t}}}} \cdot \left(y \cdot \left(x \cdot \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\left|\sqrt[3]{z \cdot z - a \cdot t}\right|}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{z}{\mathsf{fma}\left(\frac{-1}{2}, \frac{a}{\frac{z}{t}}, z\right)} \cdot \left(y \cdot x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r10939837 = x;
double r10939838 = y;
double r10939839 = r10939837 * r10939838;
double r10939840 = z;
double r10939841 = r10939839 * r10939840;
double r10939842 = r10939840 * r10939840;
double r10939843 = t;
double r10939844 = a;
double r10939845 = r10939843 * r10939844;
double r10939846 = r10939842 - r10939845;
double r10939847 = sqrt(r10939846);
double r10939848 = r10939841 / r10939847;
return r10939848;
}
double f(double x, double y, double z, double t, double a) {
double r10939849 = z;
double r10939850 = -4.828914214900402e+120;
bool r10939851 = r10939849 <= r10939850;
double r10939852 = y;
double r10939853 = x;
double r10939854 = -r10939853;
double r10939855 = r10939852 * r10939854;
double r10939856 = 1.239440162778037e+98;
bool r10939857 = r10939849 <= r10939856;
double r10939858 = cbrt(r10939849);
double r10939859 = r10939849 * r10939849;
double r10939860 = a;
double r10939861 = t;
double r10939862 = r10939860 * r10939861;
double r10939863 = r10939859 - r10939862;
double r10939864 = sqrt(r10939863);
double r10939865 = cbrt(r10939864);
double r10939866 = r10939865 * r10939865;
double r10939867 = sqrt(r10939866);
double r10939868 = r10939858 / r10939867;
double r10939869 = r10939858 * r10939858;
double r10939870 = cbrt(r10939863);
double r10939871 = fabs(r10939870);
double r10939872 = r10939869 / r10939871;
double r10939873 = r10939853 * r10939872;
double r10939874 = r10939852 * r10939873;
double r10939875 = r10939868 * r10939874;
double r10939876 = -0.5;
double r10939877 = r10939849 / r10939861;
double r10939878 = r10939860 / r10939877;
double r10939879 = fma(r10939876, r10939878, r10939849);
double r10939880 = r10939849 / r10939879;
double r10939881 = r10939852 * r10939853;
double r10939882 = r10939880 * r10939881;
double r10939883 = r10939857 ? r10939875 : r10939882;
double r10939884 = r10939851 ? r10939855 : r10939883;
return r10939884;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 24.7 |
|---|---|
| Target | 7.6 |
| Herbie | 5.8 |
if z < -4.828914214900402e+120Initial program 48.0
Taylor expanded around -inf 1.7
Simplified1.7
if -4.828914214900402e+120 < z < 1.239440162778037e+98Initial program 11.0
rmApplied *-un-lft-identity11.0
Applied sqrt-prod11.0
Applied times-frac9.6
Simplified9.6
rmApplied add-cube-cbrt10.0
Applied sqrt-prod10.0
Applied add-cube-cbrt10.3
Applied times-frac10.3
Applied associate-*r*9.5
Simplified8.4
rmApplied add-sqr-sqrt8.4
Applied cbrt-prod8.3
if 1.239440162778037e+98 < z Initial program 43.4
rmApplied *-un-lft-identity43.4
Applied sqrt-prod43.4
Applied times-frac40.9
Simplified40.9
Taylor expanded around inf 6.0
Simplified2.2
Final simplification5.8
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a)
:name "Statistics.Math.RootFinding:ridders from math-functions-0.1.5.2"
: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)))))