\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.600257058432804334868295655130597155484 \cdot 10^{108}:\\
\;\;\;\;-x \cdot y\\
\mathbf{elif}\;z \le 2.112792157625963034500419357066115959074 \cdot 10^{83}:\\
\;\;\;\;\frac{1}{\frac{\sqrt{\left|\sqrt[3]{z \cdot z - t \cdot a}\right|}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}} \cdot \left(\frac{x}{\frac{\sqrt{\left|\sqrt[3]{z \cdot z - t \cdot a}\right|}}{\sqrt[3]{y}}} \cdot \frac{z}{\sqrt{\sqrt[3]{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 r212769 = x;
double r212770 = y;
double r212771 = r212769 * r212770;
double r212772 = z;
double r212773 = r212771 * r212772;
double r212774 = r212772 * r212772;
double r212775 = t;
double r212776 = a;
double r212777 = r212775 * r212776;
double r212778 = r212774 - r212777;
double r212779 = sqrt(r212778);
double r212780 = r212773 / r212779;
return r212780;
}
double f(double x, double y, double z, double t, double a) {
double r212781 = z;
double r212782 = -1.6002570584328043e+108;
bool r212783 = r212781 <= r212782;
double r212784 = x;
double r212785 = y;
double r212786 = r212784 * r212785;
double r212787 = -r212786;
double r212788 = 2.112792157625963e+83;
bool r212789 = r212781 <= r212788;
double r212790 = 1.0;
double r212791 = r212781 * r212781;
double r212792 = t;
double r212793 = a;
double r212794 = r212792 * r212793;
double r212795 = r212791 - r212794;
double r212796 = cbrt(r212795);
double r212797 = fabs(r212796);
double r212798 = sqrt(r212797);
double r212799 = cbrt(r212785);
double r212800 = r212799 * r212799;
double r212801 = r212798 / r212800;
double r212802 = r212790 / r212801;
double r212803 = r212798 / r212799;
double r212804 = r212784 / r212803;
double r212805 = sqrt(r212796);
double r212806 = r212781 / r212805;
double r212807 = r212804 * r212806;
double r212808 = r212802 * r212807;
double r212809 = r212789 ? r212808 : r212786;
double r212810 = r212783 ? r212787 : r212809;
return r212810;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.3 |
|---|---|
| Target | 7.4 |
| Herbie | 5.9 |
if z < -1.6002570584328043e+108Initial program 46.3
rmApplied *-un-lft-identity46.3
Applied sqrt-prod46.3
Applied times-frac44.2
Simplified44.2
Taylor expanded around -inf 2.1
if -1.6002570584328043e+108 < z < 2.112792157625963e+83Initial program 10.4
rmApplied add-cube-cbrt10.8
Applied sqrt-prod10.8
Applied times-frac10.1
Simplified10.7
rmApplied add-cube-cbrt11.0
Applied add-sqr-sqrt11.1
Applied times-frac11.1
Applied *-un-lft-identity11.1
Applied times-frac9.9
Applied associate-*l*8.3
if 2.112792157625963e+83 < z Initial program 40.7
rmApplied *-un-lft-identity40.7
Applied sqrt-prod40.7
Applied times-frac38.0
Simplified38.0
Taylor expanded around inf 2.9
Final simplification5.9
herbie shell --seed 2019303
(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.1921305903852764e46) (- (* y x)) (if (< z 5.9762681209208942e90) (/ (* x z) (/ (sqrt (- (* z z) (* a t))) y)) (* y x)))
(/ (* (* x y) z) (sqrt (- (* z z) (* t a)))))