\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -6.341587143310155927610127187698487770803 \cdot 10^{119}:\\
\;\;\;\;-1 \cdot \left(x \cdot y\right)\\
\mathbf{elif}\;z \le 1.874715117526437905041862577558668025639 \cdot 10^{146}:\\
\;\;\;\;x \cdot \frac{y}{\frac{\sqrt{z \cdot z - t \cdot a}}{z}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r268929 = x;
double r268930 = y;
double r268931 = r268929 * r268930;
double r268932 = z;
double r268933 = r268931 * r268932;
double r268934 = r268932 * r268932;
double r268935 = t;
double r268936 = a;
double r268937 = r268935 * r268936;
double r268938 = r268934 - r268937;
double r268939 = sqrt(r268938);
double r268940 = r268933 / r268939;
return r268940;
}
double f(double x, double y, double z, double t, double a) {
double r268941 = z;
double r268942 = -6.341587143310156e+119;
bool r268943 = r268941 <= r268942;
double r268944 = -1.0;
double r268945 = x;
double r268946 = y;
double r268947 = r268945 * r268946;
double r268948 = r268944 * r268947;
double r268949 = 1.874715117526438e+146;
bool r268950 = r268941 <= r268949;
double r268951 = r268941 * r268941;
double r268952 = t;
double r268953 = a;
double r268954 = r268952 * r268953;
double r268955 = r268951 - r268954;
double r268956 = sqrt(r268955);
double r268957 = r268956 / r268941;
double r268958 = r268946 / r268957;
double r268959 = r268945 * r268958;
double r268960 = r268950 ? r268959 : r268947;
double r268961 = r268943 ? r268948 : r268960;
return r268961;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.3 |
|---|---|
| Target | 7.7 |
| Herbie | 6.1 |
if z < -6.341587143310156e+119Initial program 47.4
Taylor expanded around -inf 1.8
if -6.341587143310156e+119 < z < 1.874715117526438e+146Initial program 11.1
rmApplied associate-/l*8.9
rmApplied *-un-lft-identity8.9
Applied *-un-lft-identity8.9
Applied sqrt-prod8.9
Applied times-frac8.9
Applied times-frac8.5
Simplified8.5
if 1.874715117526438e+146 < z Initial program 52.8
Taylor expanded around inf 1.7
Final simplification6.1
herbie shell --seed 2019353
(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)))))