\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.145387718787729 \cdot 10^{27}:\\
\;\;\;\;-1 \cdot \left(x \cdot y\right)\\
\mathbf{elif}\;z \le 1.68945971621676345 \cdot 10^{31}:\\
\;\;\;\;\frac{x \cdot \left(y \cdot z\right)}{\sqrt{z \cdot z - t \cdot a}}\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot y\right) \cdot 1\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r287417 = x;
double r287418 = y;
double r287419 = r287417 * r287418;
double r287420 = z;
double r287421 = r287419 * r287420;
double r287422 = r287420 * r287420;
double r287423 = t;
double r287424 = a;
double r287425 = r287423 * r287424;
double r287426 = r287422 - r287425;
double r287427 = sqrt(r287426);
double r287428 = r287421 / r287427;
return r287428;
}
double f(double x, double y, double z, double t, double a) {
double r287429 = z;
double r287430 = -1.1453877187877288e+27;
bool r287431 = r287429 <= r287430;
double r287432 = -1.0;
double r287433 = x;
double r287434 = y;
double r287435 = r287433 * r287434;
double r287436 = r287432 * r287435;
double r287437 = 1.6894597162167635e+31;
bool r287438 = r287429 <= r287437;
double r287439 = r287434 * r287429;
double r287440 = r287433 * r287439;
double r287441 = r287429 * r287429;
double r287442 = t;
double r287443 = a;
double r287444 = r287442 * r287443;
double r287445 = r287441 - r287444;
double r287446 = sqrt(r287445);
double r287447 = r287440 / r287446;
double r287448 = 1.0;
double r287449 = r287435 * r287448;
double r287450 = r287438 ? r287447 : r287449;
double r287451 = r287431 ? r287436 : r287450;
return r287451;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.6 |
|---|---|
| Target | 7.6 |
| Herbie | 7.5 |
if z < -1.1453877187877288e+27Initial program 34.6
rmApplied *-un-lft-identity34.6
Applied sqrt-prod34.6
Applied times-frac32.4
Simplified32.4
rmApplied fma-neg32.4
Taylor expanded around -inf 3.9
if -1.1453877187877288e+27 < z < 1.6894597162167635e+31Initial program 11.8
rmApplied associate-*l*11.6
if 1.6894597162167635e+31 < z Initial program 35.6
rmApplied *-un-lft-identity35.6
Applied sqrt-prod35.6
Applied times-frac32.8
Simplified32.8
rmApplied fma-neg32.8
Taylor expanded around inf 4.3
Final simplification7.5
herbie shell --seed 2020056 +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)))))