\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -6.7050069327788126 \cdot 10^{76}:\\
\;\;\;\;\left(x \cdot y\right) \cdot -1\\
\mathbf{elif}\;z \le 6.2711743111954205 \cdot 10^{136}:\\
\;\;\;\;x \cdot \left(\left(y \cdot z\right) \cdot \frac{1}{\sqrt{z \cdot z - t \cdot a}}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r233231 = x;
double r233232 = y;
double r233233 = r233231 * r233232;
double r233234 = z;
double r233235 = r233233 * r233234;
double r233236 = r233234 * r233234;
double r233237 = t;
double r233238 = a;
double r233239 = r233237 * r233238;
double r233240 = r233236 - r233239;
double r233241 = sqrt(r233240);
double r233242 = r233235 / r233241;
return r233242;
}
double f(double x, double y, double z, double t, double a) {
double r233243 = z;
double r233244 = -6.705006932778813e+76;
bool r233245 = r233243 <= r233244;
double r233246 = x;
double r233247 = y;
double r233248 = r233246 * r233247;
double r233249 = -1.0;
double r233250 = r233248 * r233249;
double r233251 = 6.27117431119542e+136;
bool r233252 = r233243 <= r233251;
double r233253 = r233247 * r233243;
double r233254 = 1.0;
double r233255 = r233243 * r233243;
double r233256 = t;
double r233257 = a;
double r233258 = r233256 * r233257;
double r233259 = r233255 - r233258;
double r233260 = sqrt(r233259);
double r233261 = r233254 / r233260;
double r233262 = r233253 * r233261;
double r233263 = r233246 * r233262;
double r233264 = r233252 ? r233263 : r233248;
double r233265 = r233245 ? r233250 : r233264;
return r233265;
}




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.9 |
| Herbie | 7.3 |
if z < -6.705006932778813e+76Initial program 41.0
rmApplied *-un-lft-identity41.0
Applied sqrt-prod41.0
Applied times-frac38.1
Simplified38.1
Taylor expanded around -inf 2.9
if -6.705006932778813e+76 < z < 6.27117431119542e+136Initial program 11.0
rmApplied *-un-lft-identity11.0
Applied sqrt-prod11.0
Applied times-frac9.4
Simplified9.4
rmApplied associate-*l*9.2
rmApplied div-inv9.3
Applied associate-*r*10.6
if 6.27117431119542e+136 < z Initial program 50.5
Taylor expanded around inf 1.7
Final simplification7.3
herbie shell --seed 2020062
(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)))))