\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -2.79622158684895449 \cdot 10^{111}:\\
\;\;\;\;x \cdot \left(-1 \cdot y\right)\\
\mathbf{elif}\;z \le 2.3472884937339154 \cdot 10^{-9}:\\
\;\;\;\;\frac{x}{\frac{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}} \cdot \sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}} \cdot \frac{y}{\frac{\sqrt[3]{\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 r251630 = x;
double r251631 = y;
double r251632 = r251630 * r251631;
double r251633 = z;
double r251634 = r251632 * r251633;
double r251635 = r251633 * r251633;
double r251636 = t;
double r251637 = a;
double r251638 = r251636 * r251637;
double r251639 = r251635 - r251638;
double r251640 = sqrt(r251639);
double r251641 = r251634 / r251640;
return r251641;
}
double f(double x, double y, double z, double t, double a) {
double r251642 = z;
double r251643 = -2.7962215868489545e+111;
bool r251644 = r251642 <= r251643;
double r251645 = x;
double r251646 = -1.0;
double r251647 = y;
double r251648 = r251646 * r251647;
double r251649 = r251645 * r251648;
double r251650 = 2.3472884937339154e-09;
bool r251651 = r251642 <= r251650;
double r251652 = r251642 * r251642;
double r251653 = t;
double r251654 = a;
double r251655 = r251653 * r251654;
double r251656 = r251652 - r251655;
double r251657 = sqrt(r251656);
double r251658 = cbrt(r251657);
double r251659 = r251658 * r251658;
double r251660 = cbrt(r251642);
double r251661 = r251660 * r251660;
double r251662 = r251659 / r251661;
double r251663 = r251645 / r251662;
double r251664 = r251658 / r251660;
double r251665 = r251647 / r251664;
double r251666 = r251663 * r251665;
double r251667 = r251645 * r251647;
double r251668 = r251651 ? r251666 : r251667;
double r251669 = r251644 ? r251649 : r251668;
return r251669;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.8 |
|---|---|
| Target | 7.7 |
| Herbie | 6.6 |
if z < -2.7962215868489545e+111Initial program 45.7
rmApplied associate-/l*43.6
rmApplied *-un-lft-identity43.6
Applied *-un-lft-identity43.6
Applied sqrt-prod43.6
Applied times-frac43.6
Applied times-frac43.6
Simplified43.6
Taylor expanded around -inf 2.3
if -2.7962215868489545e+111 < z < 2.3472884937339154e-09Initial program 12.0
rmApplied associate-/l*10.9
rmApplied add-cube-cbrt11.6
Applied add-cube-cbrt11.3
Applied times-frac11.3
Applied times-frac8.8
if 2.3472884937339154e-09 < z Initial program 31.8
Taylor expanded around inf 5.8
Final simplification6.6
herbie shell --seed 2020033 +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.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)))))