\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}:\\
\;\;\;\;x \cdot \left(-1 \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}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r327566 = x;
double r327567 = y;
double r327568 = r327566 * r327567;
double r327569 = z;
double r327570 = r327568 * r327569;
double r327571 = r327569 * r327569;
double r327572 = t;
double r327573 = a;
double r327574 = r327572 * r327573;
double r327575 = r327571 - r327574;
double r327576 = sqrt(r327575);
double r327577 = r327570 / r327576;
return r327577;
}
double f(double x, double y, double z, double t, double a) {
double r327578 = z;
double r327579 = -6.705006932778813e+76;
bool r327580 = r327578 <= r327579;
double r327581 = x;
double r327582 = -1.0;
double r327583 = y;
double r327584 = r327582 * r327583;
double r327585 = r327581 * r327584;
double r327586 = 6.27117431119542e+136;
bool r327587 = r327578 <= r327586;
double r327588 = r327583 * r327578;
double r327589 = 1.0;
double r327590 = r327578 * r327578;
double r327591 = t;
double r327592 = a;
double r327593 = r327591 * r327592;
double r327594 = r327590 - r327593;
double r327595 = sqrt(r327594);
double r327596 = r327589 / r327595;
double r327597 = r327588 * r327596;
double r327598 = r327581 * r327597;
double r327599 = r327581 * r327583;
double r327600 = r327587 ? r327598 : r327599;
double r327601 = r327580 ? r327585 : r327600;
return r327601;
}




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
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)))))