\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -4.403812811655348436228482044852905985381 \cdot 10^{136}:\\
\;\;\;\;-1 \cdot \left(x \cdot y\right)\\
\mathbf{elif}\;z \le 2.130897152856615796932912078487397342387 \cdot 10^{121}:\\
\;\;\;\;\frac{x \cdot y}{\sqrt{1}} \cdot \left(z \cdot \frac{1}{\sqrt{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 r276701 = x;
double r276702 = y;
double r276703 = r276701 * r276702;
double r276704 = z;
double r276705 = r276703 * r276704;
double r276706 = r276704 * r276704;
double r276707 = t;
double r276708 = a;
double r276709 = r276707 * r276708;
double r276710 = r276706 - r276709;
double r276711 = sqrt(r276710);
double r276712 = r276705 / r276711;
return r276712;
}
double f(double x, double y, double z, double t, double a) {
double r276713 = z;
double r276714 = -4.4038128116553484e+136;
bool r276715 = r276713 <= r276714;
double r276716 = -1.0;
double r276717 = x;
double r276718 = y;
double r276719 = r276717 * r276718;
double r276720 = r276716 * r276719;
double r276721 = 2.130897152856616e+121;
bool r276722 = r276713 <= r276721;
double r276723 = 1.0;
double r276724 = sqrt(r276723);
double r276725 = r276719 / r276724;
double r276726 = r276713 * r276713;
double r276727 = t;
double r276728 = a;
double r276729 = r276727 * r276728;
double r276730 = r276726 - r276729;
double r276731 = sqrt(r276730);
double r276732 = r276723 / r276731;
double r276733 = r276713 * r276732;
double r276734 = r276725 * r276733;
double r276735 = r276722 ? r276734 : r276719;
double r276736 = r276715 ? r276720 : r276735;
return r276736;
}




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 | 6.1 |
if z < -4.4038128116553484e+136Initial program 51.0
rmApplied *-un-lft-identity51.0
Applied sqrt-prod51.0
Applied times-frac49.7
rmApplied div-inv49.7
Taylor expanded around -inf 1.5
if -4.4038128116553484e+136 < z < 2.130897152856616e+121Initial program 10.5
rmApplied *-un-lft-identity10.5
Applied sqrt-prod10.5
Applied times-frac8.5
rmApplied div-inv8.6
if 2.130897152856616e+121 < z Initial program 46.6
rmApplied associate-/l*44.6
Taylor expanded around inf 2.0
Final simplification6.1
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)))))