\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.145387718787729 \cdot 10^{27}:\\
\;\;\;\;x \cdot \left(-1 \cdot y\right)\\
\mathbf{elif}\;z \le 1.68945971621676345 \cdot 10^{31}:\\
\;\;\;\;\frac{x \cdot \left(y \cdot z\right)}{\sqrt{z \cdot z - t \cdot a}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r374012 = x;
double r374013 = y;
double r374014 = r374012 * r374013;
double r374015 = z;
double r374016 = r374014 * r374015;
double r374017 = r374015 * r374015;
double r374018 = t;
double r374019 = a;
double r374020 = r374018 * r374019;
double r374021 = r374017 - r374020;
double r374022 = sqrt(r374021);
double r374023 = r374016 / r374022;
return r374023;
}
double f(double x, double y, double z, double t, double a) {
double r374024 = z;
double r374025 = -1.1453877187877288e+27;
bool r374026 = r374024 <= r374025;
double r374027 = x;
double r374028 = -1.0;
double r374029 = y;
double r374030 = r374028 * r374029;
double r374031 = r374027 * r374030;
double r374032 = 1.6894597162167635e+31;
bool r374033 = r374024 <= r374032;
double r374034 = r374029 * r374024;
double r374035 = r374027 * r374034;
double r374036 = r374024 * r374024;
double r374037 = t;
double r374038 = a;
double r374039 = r374037 * r374038;
double r374040 = r374036 - r374039;
double r374041 = sqrt(r374040);
double r374042 = r374035 / r374041;
double r374043 = r374027 * r374029;
double r374044 = r374033 ? r374042 : r374043;
double r374045 = r374026 ? r374031 : r374044;
return r374045;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.6 |
|---|---|
| Target | 7.6 |
| Herbie | 7.5 |
if z < -1.1453877187877288e+27Initial program 34.6
rmApplied *-un-lft-identity34.6
Applied sqrt-prod34.6
Applied times-frac32.4
Simplified32.4
rmApplied associate-*l*32.4
Taylor expanded around -inf 3.9
if -1.1453877187877288e+27 < z < 1.6894597162167635e+31Initial program 11.8
rmApplied associate-*l*11.6
if 1.6894597162167635e+31 < z Initial program 35.6
Taylor expanded around inf 4.3
Final simplification7.5
herbie shell --seed 2020056
(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)))))