\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;y \cdot \left(1 + z \cdot z\right) \leq 1.031746313983288 \cdot 10^{+306}:\\
\;\;\;\;\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\sqrt[3]{x} \cdot \sqrt[3]{x}}}{y} \cdot \left(\frac{\frac{1}{\sqrt[3]{x}}}{z} \cdot \left(\frac{1}{z} - \frac{1}{{z}^{3}}\right)\right)\\
\end{array}(FPCore (x y z) :precision binary64 (/ (/ 1.0 x) (* y (+ 1.0 (* z z)))))
(FPCore (x y z)
:precision binary64
(if (<= (* y (+ 1.0 (* z z))) 1.031746313983288e+306)
(/ (/ 1.0 x) (* y (+ 1.0 (* z z))))
(*
(/ (/ 1.0 (* (cbrt x) (cbrt x))) y)
(* (/ (/ 1.0 (cbrt x)) z) (- (/ 1.0 z) (/ 1.0 (pow z 3.0)))))))double code(double x, double y, double z) {
return (1.0 / x) / (y * (1.0 + (z * z)));
}
double code(double x, double y, double z) {
double tmp;
if ((y * (1.0 + (z * z))) <= 1.031746313983288e+306) {
tmp = (1.0 / x) / (y * (1.0 + (z * z)));
} else {
tmp = ((1.0 / (cbrt(x) * cbrt(x))) / y) * (((1.0 / cbrt(x)) / z) * ((1.0 / z) - (1.0 / pow(z, 3.0))));
}
return tmp;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 4.6 |
| Herbie | 4.0 |
if (*.f64 y (+.f64 1 (*.f64 z z))) < 1.03174631398328803e306Initial program 2.0
if 1.03174631398328803e306 < (*.f64 y (+.f64 1 (*.f64 z z))) Initial program 17.8
rmApplied add-cube-cbrt_binary64_1000217.8
Applied add-sqr-sqrt_binary64_998917.8
Applied times-frac_binary64_997317.8
Applied times-frac_binary64_997312.5
Simplified12.5
Simplified12.5
Taylor expanded around inf 45.0
Simplified9.8
Final simplification4.0
herbie shell --seed 2020358
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< (* y (+ 1.0 (* z z))) (- INFINITY)) (/ (/ 1.0 y) (* (+ 1.0 (* z z)) x)) (if (< (* y (+ 1.0 (* z z))) 8.680743250567252e+305) (/ (/ 1.0 x) (* (+ 1.0 (* z z)) y)) (/ (/ 1.0 y) (* (+ 1.0 (* z z)) x))))
(/ (/ 1.0 x) (* y (+ 1.0 (* z z)))))