\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.1613085318430635 \cdot 10^{146}:\\
\;\;\;\;-1 \cdot \left(x \cdot y\right)\\
\mathbf{elif}\;z \le -1.15287383592906728 \cdot 10^{-189}:\\
\;\;\;\;\frac{x \cdot y}{\frac{\sqrt{z \cdot z - t \cdot a}}{z}}\\
\mathbf{elif}\;z \le 1.26365548077316353 \cdot 10^{101}:\\
\;\;\;\;\frac{x}{\sqrt{z \cdot z - t \cdot a}} \cdot \left(z \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot y\right) \cdot 1\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r299305 = x;
double r299306 = y;
double r299307 = r299305 * r299306;
double r299308 = z;
double r299309 = r299307 * r299308;
double r299310 = r299308 * r299308;
double r299311 = t;
double r299312 = a;
double r299313 = r299311 * r299312;
double r299314 = r299310 - r299313;
double r299315 = sqrt(r299314);
double r299316 = r299309 / r299315;
return r299316;
}
double f(double x, double y, double z, double t, double a) {
double r299317 = z;
double r299318 = -1.1613085318430635e+146;
bool r299319 = r299317 <= r299318;
double r299320 = -1.0;
double r299321 = x;
double r299322 = y;
double r299323 = r299321 * r299322;
double r299324 = r299320 * r299323;
double r299325 = -1.1528738359290673e-189;
bool r299326 = r299317 <= r299325;
double r299327 = r299317 * r299317;
double r299328 = t;
double r299329 = a;
double r299330 = r299328 * r299329;
double r299331 = r299327 - r299330;
double r299332 = sqrt(r299331);
double r299333 = r299332 / r299317;
double r299334 = r299323 / r299333;
double r299335 = 1.2636554807731635e+101;
bool r299336 = r299317 <= r299335;
double r299337 = r299321 / r299332;
double r299338 = r299317 * r299322;
double r299339 = r299337 * r299338;
double r299340 = 1.0;
double r299341 = r299323 * r299340;
double r299342 = r299336 ? r299339 : r299341;
double r299343 = r299326 ? r299334 : r299342;
double r299344 = r299319 ? r299324 : r299343;
return r299344;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.1 |
|---|---|
| Target | 8.1 |
| Herbie | 7.1 |
if z < -1.1613085318430635e+146Initial program 51.0
rmApplied associate-/l*50.1
rmApplied add-sqr-sqrt50.1
Applied sqrt-prod50.2
Taylor expanded around -inf 1.6
if -1.1613085318430635e+146 < z < -1.1528738359290673e-189Initial program 8.7
rmApplied associate-/l*5.4
if -1.1528738359290673e-189 < z < 1.2636554807731635e+101Initial program 13.0
rmApplied associate-/l*12.4
rmApplied div-inv12.5
Applied times-frac13.4
Simplified13.3
if 1.2636554807731635e+101 < z Initial program 43.2
rmApplied associate-/l*41.1
rmApplied div-inv41.1
Taylor expanded around inf 2.7
Final simplification7.1
herbie shell --seed 2020083 +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)))))