\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.002837198668899603186184426685314231232 \cdot 10^{60}:\\
\;\;\;\;-x \cdot y\\
\mathbf{elif}\;z \le 3.938152743281577115008790785650092236667 \cdot 10^{96}:\\
\;\;\;\;\frac{x}{\frac{\sqrt{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}} \cdot \frac{y}{\frac{\sqrt{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z}}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r365968 = x;
double r365969 = y;
double r365970 = r365968 * r365969;
double r365971 = z;
double r365972 = r365970 * r365971;
double r365973 = r365971 * r365971;
double r365974 = t;
double r365975 = a;
double r365976 = r365974 * r365975;
double r365977 = r365973 - r365976;
double r365978 = sqrt(r365977);
double r365979 = r365972 / r365978;
return r365979;
}
double f(double x, double y, double z, double t, double a) {
double r365980 = z;
double r365981 = -1.0028371986688996e+60;
bool r365982 = r365980 <= r365981;
double r365983 = x;
double r365984 = y;
double r365985 = r365983 * r365984;
double r365986 = -r365985;
double r365987 = 3.938152743281577e+96;
bool r365988 = r365980 <= r365987;
double r365989 = r365980 * r365980;
double r365990 = t;
double r365991 = a;
double r365992 = r365990 * r365991;
double r365993 = r365989 - r365992;
double r365994 = sqrt(r365993);
double r365995 = sqrt(r365994);
double r365996 = cbrt(r365980);
double r365997 = r365996 * r365996;
double r365998 = r365995 / r365997;
double r365999 = r365983 / r365998;
double r366000 = r365995 / r365996;
double r366001 = r365984 / r366000;
double r366002 = r365999 * r366001;
double r366003 = r365988 ? r366002 : r365985;
double r366004 = r365982 ? r365986 : r366003;
return r366004;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.0 |
|---|---|
| Target | 7.9 |
| Herbie | 6.4 |
if z < -1.0028371986688996e+60Initial program 39.0
Taylor expanded around -inf 3.4
Simplified3.4
if -1.0028371986688996e+60 < z < 3.938152743281577e+96Initial program 11.4
rmApplied associate-/l*10.1
rmApplied add-cube-cbrt10.8
Applied add-sqr-sqrt10.8
Applied sqrt-prod10.8
Applied times-frac10.8
Applied times-frac9.1
if 3.938152743281577e+96 < z Initial program 43.9
Taylor expanded around inf 2.7
Final simplification6.4
herbie shell --seed 2019350
(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)))))