\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}
\begin{array}{l}
\mathbf{if}\;z \leq -1.195058800664299 \cdot 10^{+154}:\\
\;\;\;\;-y \cdot x\\
\mathbf{elif}\;z \leq 1.6097388499861037 \cdot 10^{+83}:\\
\;\;\;\;x \cdot \frac{y}{\frac{\sqrt{z \cdot z - a \cdot t}}{z}}\\
\mathbf{else}:\\
\;\;\;\;y \cdot x\\
\end{array}
(FPCore (x y z t a) :precision binary64 (/ (* (* x y) z) (sqrt (- (* z z) (* t a)))))
(FPCore (x y z t a)
:precision binary64
(if (<= z -1.195058800664299e+154)
(- (* y x))
(if (<= z 1.6097388499861037e+83)
(* x (/ y (/ (sqrt (- (* z z) (* a t))) z)))
(* y x))))double code(double x, double y, double z, double t, double a) {
return ((x * y) * z) / sqrt((z * z) - (t * a));
}
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= -1.195058800664299e+154) {
tmp = -(y * x);
} else if (z <= 1.6097388499861037e+83) {
tmp = x * (y / (sqrt((z * z) - (a * t)) / z));
} else {
tmp = y * x;
}
return tmp;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.9 |
|---|---|
| Target | 7.5 |
| Herbie | 6.3 |
if z < -1.1950588006642989e154Initial program 52.7
Taylor expanded in z around -inf 1.3
Simplified1.3
if -1.1950588006642989e154 < z < 1.6097388499861037e83Initial program 11.5
Applied *-un-lft-identity_binary6411.5
Applied times-frac_binary649.0
Applied *-un-lft-identity_binary649.0
Applied times-frac_binary649.0
Applied associate-*l*_binary648.9
Simplified8.9
Applied associate-*r/_binary6410.7
Applied associate-/l*_binary649.0
if 1.6097388499861037e83 < z Initial program 41.1
Taylor expanded in z around inf 2.4
Final simplification6.3
herbie shell --seed 2022077
(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)))))