\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 r210483 = x;
double r210484 = y;
double r210485 = r210483 * r210484;
double r210486 = z;
double r210487 = r210485 * r210486;
double r210488 = r210486 * r210486;
double r210489 = t;
double r210490 = a;
double r210491 = r210489 * r210490;
double r210492 = r210488 - r210491;
double r210493 = sqrt(r210492);
double r210494 = r210487 / r210493;
return r210494;
}
double f(double x, double y, double z, double t, double a) {
double r210495 = z;
double r210496 = -2.7186746230671153e+135;
bool r210497 = r210495 <= r210496;
double r210498 = y;
double r210499 = x;
double r210500 = r210498 * r210499;
double r210501 = -r210500;
double r210502 = 2.130897152856616e+121;
bool r210503 = r210495 <= r210502;
double r210504 = r210495 * r210495;
double r210505 = t;
double r210506 = a;
double r210507 = r210505 * r210506;
double r210508 = r210504 - r210507;
double r210509 = sqrt(r210508);
double r210510 = cbrt(r210509);
double r210511 = r210510 * r210510;
double r210512 = fabs(r210511);
double r210513 = cbrt(r210495);
double r210514 = r210513 * r210513;
double r210515 = r210512 / r210514;
double r210516 = r210499 / r210515;
double r210517 = cbrt(r210508);
double r210518 = sqrt(r210517);
double r210519 = r210518 / r210513;
double r210520 = r210498 / r210519;
double r210521 = r210516 * r210520;
double r210522 = r210503 ? r210521 : r210500;
double r210523 = r210497 ? r210501 : r210522;
return r210523;
}




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)))))