\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.57340581174290523 \cdot 10^{140}:\\
\;\;\;\;\left(x \cdot y\right) \cdot -1\\
\mathbf{elif}\;z \le 1.0315608467704857 \cdot 10^{107}:\\
\;\;\;\;\frac{x}{\frac{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}} \cdot \sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}} \cdot \frac{y}{\frac{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z}}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r347378 = x;
double r347379 = y;
double r347380 = r347378 * r347379;
double r347381 = z;
double r347382 = r347380 * r347381;
double r347383 = r347381 * r347381;
double r347384 = t;
double r347385 = a;
double r347386 = r347384 * r347385;
double r347387 = r347383 - r347386;
double r347388 = sqrt(r347387);
double r347389 = r347382 / r347388;
return r347389;
}
double f(double x, double y, double z, double t, double a) {
double r347390 = z;
double r347391 = -1.5734058117429052e+140;
bool r347392 = r347390 <= r347391;
double r347393 = x;
double r347394 = y;
double r347395 = r347393 * r347394;
double r347396 = -1.0;
double r347397 = r347395 * r347396;
double r347398 = 1.0315608467704857e+107;
bool r347399 = r347390 <= r347398;
double r347400 = r347390 * r347390;
double r347401 = t;
double r347402 = a;
double r347403 = r347401 * r347402;
double r347404 = r347400 - r347403;
double r347405 = sqrt(r347404);
double r347406 = cbrt(r347405);
double r347407 = r347406 * r347406;
double r347408 = cbrt(r347390);
double r347409 = r347408 * r347408;
double r347410 = r347407 / r347409;
double r347411 = r347393 / r347410;
double r347412 = r347406 / r347408;
double r347413 = r347394 / r347412;
double r347414 = r347411 * r347413;
double r347415 = r347399 ? r347414 : r347395;
double r347416 = r347392 ? r347397 : r347415;
return r347416;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.5 |
|---|---|
| Target | 7.6 |
| Herbie | 5.3 |
if z < -1.5734058117429052e+140Initial program 50.9
rmApplied *-un-lft-identity50.9
Applied sqrt-prod50.9
Applied times-frac49.6
Simplified49.6
Taylor expanded around -inf 1.7
if -1.5734058117429052e+140 < z < 1.0315608467704857e+107Initial program 11.3
rmApplied associate-/l*9.1
rmApplied add-cube-cbrt9.9
Applied add-cube-cbrt9.4
Applied times-frac9.4
Applied times-frac7.4
if 1.0315608467704857e+107 < z Initial program 45.6
rmApplied *-un-lft-identity45.6
Applied sqrt-prod45.6
Applied times-frac43.3
Simplified43.3
rmApplied div-inv43.4
Taylor expanded around inf 2.2
Final simplification5.3
herbie shell --seed 2020046
(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)))))