\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -2.718674623067115332199814933152861240084 \cdot 10^{135}:\\
\;\;\;\;-y \cdot x\\
\mathbf{elif}\;z \le 2.130897152856615796932912078487397342387 \cdot 10^{121}:\\
\;\;\;\;\frac{x}{\frac{\left|\sqrt[3]{\sqrt{z \cdot z - t \cdot a}} \cdot \sqrt[3]{\sqrt{z \cdot z - t \cdot a}}\right|}{\sqrt[3]{z} \cdot \sqrt[3]{z}}} \cdot \frac{y}{\frac{\sqrt{\sqrt[3]{z \cdot z - t \cdot a}}}{\sqrt[3]{z}}}\\
\mathbf{else}:\\
\;\;\;\;y \cdot x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r233072 = x;
double r233073 = y;
double r233074 = r233072 * r233073;
double r233075 = z;
double r233076 = r233074 * r233075;
double r233077 = r233075 * r233075;
double r233078 = t;
double r233079 = a;
double r233080 = r233078 * r233079;
double r233081 = r233077 - r233080;
double r233082 = sqrt(r233081);
double r233083 = r233076 / r233082;
return r233083;
}
double f(double x, double y, double z, double t, double a) {
double r233084 = z;
double r233085 = -2.7186746230671153e+135;
bool r233086 = r233084 <= r233085;
double r233087 = y;
double r233088 = x;
double r233089 = r233087 * r233088;
double r233090 = -r233089;
double r233091 = 2.130897152856616e+121;
bool r233092 = r233084 <= r233091;
double r233093 = r233084 * r233084;
double r233094 = t;
double r233095 = a;
double r233096 = r233094 * r233095;
double r233097 = r233093 - r233096;
double r233098 = sqrt(r233097);
double r233099 = cbrt(r233098);
double r233100 = r233099 * r233099;
double r233101 = fabs(r233100);
double r233102 = cbrt(r233084);
double r233103 = r233102 * r233102;
double r233104 = r233101 / r233103;
double r233105 = r233088 / r233104;
double r233106 = cbrt(r233097);
double r233107 = sqrt(r233106);
double r233108 = r233107 / r233102;
double r233109 = r233087 / r233108;
double r233110 = r233105 * r233109;
double r233111 = r233092 ? r233110 : r233089;
double r233112 = r233086 ? r233090 : r233111;
return r233112;
}




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.3 |
if z < -2.7186746230671153e+135Initial program 50.6
Taylor expanded around -inf 1.5
Simplified1.5
if -2.7186746230671153e+135 < z < 2.130897152856616e+121Initial program 10.5
rmApplied associate-/l*8.7
rmApplied add-cube-cbrt9.4
Applied add-cube-cbrt9.4
Applied sqrt-prod9.4
Applied times-frac9.4
Applied times-frac7.6
Simplified7.6
rmApplied add-sqr-sqrt7.6
Applied cbrt-prod7.4
if 2.130897152856616e+121 < z Initial program 46.6
Taylor expanded around inf 2.0
Simplified2.0
Final simplification5.3
herbie shell --seed 2019303 +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.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)))))