\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.340135447098756276910591543614756155713 \cdot 10^{154}:\\
\;\;\;\;-y \cdot x\\
\mathbf{elif}\;z \le 1.171929517275323183425491158459386867597 \cdot 10^{97}:\\
\;\;\;\;\left(\left(y \cdot x\right) \cdot \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}} \cdot \sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}\\
\mathbf{else}:\\
\;\;\;\;y \cdot x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r233024 = x;
double r233025 = y;
double r233026 = r233024 * r233025;
double r233027 = z;
double r233028 = r233026 * r233027;
double r233029 = r233027 * r233027;
double r233030 = t;
double r233031 = a;
double r233032 = r233030 * r233031;
double r233033 = r233029 - r233032;
double r233034 = sqrt(r233033);
double r233035 = r233028 / r233034;
return r233035;
}
double f(double x, double y, double z, double t, double a) {
double r233036 = z;
double r233037 = -1.3401354470987563e+154;
bool r233038 = r233036 <= r233037;
double r233039 = y;
double r233040 = x;
double r233041 = r233039 * r233040;
double r233042 = -r233041;
double r233043 = 1.1719295172753232e+97;
bool r233044 = r233036 <= r233043;
double r233045 = cbrt(r233036);
double r233046 = r233045 * r233045;
double r233047 = r233036 * r233036;
double r233048 = t;
double r233049 = a;
double r233050 = r233048 * r233049;
double r233051 = r233047 - r233050;
double r233052 = sqrt(r233051);
double r233053 = cbrt(r233052);
double r233054 = r233053 * r233053;
double r233055 = r233046 / r233054;
double r233056 = r233041 * r233055;
double r233057 = r233045 / r233053;
double r233058 = r233056 * r233057;
double r233059 = r233044 ? r233058 : r233041;
double r233060 = r233038 ? r233042 : r233059;
return r233060;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.3 |
|---|---|
| Target | 8.0 |
| Herbie | 6.3 |
if z < -1.3401354470987563e+154Initial program 53.4
rmApplied *-un-lft-identity53.4
Applied sqrt-prod53.4
Applied times-frac53.0
Simplified53.0
Taylor expanded around -inf 1.4
if -1.3401354470987563e+154 < z < 1.1719295172753232e+97Initial program 11.3
rmApplied *-un-lft-identity11.3
Applied sqrt-prod11.3
Applied times-frac9.1
Simplified9.1
rmApplied add-cube-cbrt9.8
Applied add-cube-cbrt9.4
Applied times-frac9.4
Applied associate-*r*8.7
if 1.1719295172753232e+97 < z Initial program 43.1
rmApplied *-un-lft-identity43.1
Applied sqrt-prod43.1
Applied times-frac40.1
Simplified40.1
Taylor expanded around inf 2.6
Final simplification6.3
herbie shell --seed 2019323 +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)))))