\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.105222870019657843764947192797768671913 \cdot 10^{88}:\\
\;\;\;\;\left(-x\right) \cdot y\\
\mathbf{elif}\;z \le 2.035196962814329099118871956199536142841 \cdot 10^{61}:\\
\;\;\;\;\frac{x \cdot \left(z \cdot y\right)}{\sqrt{z \cdot z - a \cdot t}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r240035 = x;
double r240036 = y;
double r240037 = r240035 * r240036;
double r240038 = z;
double r240039 = r240037 * r240038;
double r240040 = r240038 * r240038;
double r240041 = t;
double r240042 = a;
double r240043 = r240041 * r240042;
double r240044 = r240040 - r240043;
double r240045 = sqrt(r240044);
double r240046 = r240039 / r240045;
return r240046;
}
double f(double x, double y, double z, double t, double a) {
double r240047 = z;
double r240048 = -1.1052228700196578e+88;
bool r240049 = r240047 <= r240048;
double r240050 = x;
double r240051 = -r240050;
double r240052 = y;
double r240053 = r240051 * r240052;
double r240054 = 2.035196962814329e+61;
bool r240055 = r240047 <= r240054;
double r240056 = r240047 * r240052;
double r240057 = r240050 * r240056;
double r240058 = r240047 * r240047;
double r240059 = a;
double r240060 = t;
double r240061 = r240059 * r240060;
double r240062 = r240058 - r240061;
double r240063 = sqrt(r240062);
double r240064 = r240057 / r240063;
double r240065 = r240050 * r240052;
double r240066 = r240055 ? r240064 : r240065;
double r240067 = r240049 ? r240053 : r240066;
return r240067;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.5 |
|---|---|
| Target | 7.6 |
| Herbie | 7.6 |
if z < -1.1052228700196578e+88Initial program 41.3
Simplified41.8
rmApplied *-un-lft-identity41.8
Applied times-frac42.9
Applied associate-*l*41.2
Simplified41.7
Taylor expanded around -inf 2.9
Simplified2.9
if -1.1052228700196578e+88 < z < 2.035196962814329e+61Initial program 10.8
Simplified11.0
rmApplied *-un-lft-identity11.0
Applied times-frac11.9
Applied associate-*l*11.1
Simplified10.8
rmApplied add-sqr-sqrt10.8
Applied *-un-lft-identity10.8
Applied times-frac10.8
Applied associate-*l*10.8
Simplified11.6
if 2.035196962814329e+61 < z Initial program 39.1
Simplified38.0
Taylor expanded around inf 3.3
Simplified3.3
Final simplification7.6
herbie shell --seed 2019196
(FPCore (x y z t a)
:name "Statistics.Math.RootFinding:ridders from math-functions-0.1.5.2"
: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)))))