\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.0884743696281288 \cdot 10^{+48}:\\
\;\;\;\;y \cdot \left(-x\right)\\
\mathbf{elif}\;z \le 1.1088800579390318 \cdot 10^{+41}:\\
\;\;\;\;\frac{x}{\sqrt{z \cdot z - t \cdot a}} \cdot \left(y \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r14578173 = x;
double r14578174 = y;
double r14578175 = r14578173 * r14578174;
double r14578176 = z;
double r14578177 = r14578175 * r14578176;
double r14578178 = r14578176 * r14578176;
double r14578179 = t;
double r14578180 = a;
double r14578181 = r14578179 * r14578180;
double r14578182 = r14578178 - r14578181;
double r14578183 = sqrt(r14578182);
double r14578184 = r14578177 / r14578183;
return r14578184;
}
double f(double x, double y, double z, double t, double a) {
double r14578185 = z;
double r14578186 = -1.0884743696281288e+48;
bool r14578187 = r14578185 <= r14578186;
double r14578188 = y;
double r14578189 = x;
double r14578190 = -r14578189;
double r14578191 = r14578188 * r14578190;
double r14578192 = 1.1088800579390318e+41;
bool r14578193 = r14578185 <= r14578192;
double r14578194 = r14578185 * r14578185;
double r14578195 = t;
double r14578196 = a;
double r14578197 = r14578195 * r14578196;
double r14578198 = r14578194 - r14578197;
double r14578199 = sqrt(r14578198);
double r14578200 = r14578189 / r14578199;
double r14578201 = r14578188 * r14578185;
double r14578202 = r14578200 * r14578201;
double r14578203 = r14578188 * r14578189;
double r14578204 = r14578193 ? r14578202 : r14578203;
double r14578205 = r14578187 ? r14578191 : r14578204;
return r14578205;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.9 |
|---|---|
| Target | 7.5 |
| Herbie | 7.7 |
if z < -1.0884743696281288e+48Initial program 35.5
rmApplied *-un-lft-identity35.5
Applied sqrt-prod35.5
Applied times-frac33.2
Simplified33.2
rmApplied associate-*l*33.3
Taylor expanded around -inf 3.4
Simplified3.4
if -1.0884743696281288e+48 < z < 1.1088800579390318e+41Initial program 11.4
rmApplied associate-/l*10.3
rmApplied div-inv10.3
Applied times-frac11.9
Simplified11.9
if 1.1088800579390318e+41 < z Initial program 35.8
Taylor expanded around inf 3.9
Final simplification7.7
herbie shell --seed 2019158
(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)))))