\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}:\\
\;\;\;\;-1 \cdot \left(x \cdot y\right)\\
\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}:\\
\;\;\;\;\left(x \cdot y\right) \cdot 1\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r266347 = x;
double r266348 = y;
double r266349 = r266347 * r266348;
double r266350 = z;
double r266351 = r266349 * r266350;
double r266352 = r266350 * r266350;
double r266353 = t;
double r266354 = a;
double r266355 = r266353 * r266354;
double r266356 = r266352 - r266355;
double r266357 = sqrt(r266356);
double r266358 = r266351 / r266357;
return r266358;
}
double f(double x, double y, double z, double t, double a) {
double r266359 = z;
double r266360 = -6.705006932778813e+76;
bool r266361 = r266359 <= r266360;
double r266362 = -1.0;
double r266363 = x;
double r266364 = y;
double r266365 = r266363 * r266364;
double r266366 = r266362 * r266365;
double r266367 = 6.27117431119542e+136;
bool r266368 = r266359 <= r266367;
double r266369 = r266364 * r266359;
double r266370 = 1.0;
double r266371 = r266359 * r266359;
double r266372 = t;
double r266373 = a;
double r266374 = r266372 * r266373;
double r266375 = r266371 - r266374;
double r266376 = sqrt(r266375);
double r266377 = r266370 / r266376;
double r266378 = r266369 * r266377;
double r266379 = r266363 * r266378;
double r266380 = r266365 * r266370;
double r266381 = r266368 ? r266379 : r266380;
double r266382 = r266361 ? r266366 : r266381;
return r266382;
}




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
rmApplied associate-*l*38.1
rmApplied add-sqr-sqrt38.1
Applied sqrt-prod38.2
Applied add-cube-cbrt38.4
Applied times-frac38.4
Applied associate-*r*38.6
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
rmApplied *-un-lft-identity50.5
Applied sqrt-prod50.5
Applied times-frac49.1
Simplified49.1
Taylor expanded around inf 1.7
Final simplification7.3
herbie shell --seed 2020062 +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)))))