\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;y \le -5.7998173554975605 \cdot 10^{32}:\\
\;\;\;\;\frac{\frac{\frac{1}{y}}{x}}{1 + z \cdot z}\\
\mathbf{elif}\;y \le 643945125486439.25:\\
\;\;\;\;\frac{\frac{1}{x}}{\frac{\mathsf{fma}\left(z, z, 1\right)}{1} \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{x \cdot y}}{1 + z \cdot z}\\
\end{array}double f(double x, double y, double z) {
double r419410 = 1.0;
double r419411 = x;
double r419412 = r419410 / r419411;
double r419413 = y;
double r419414 = z;
double r419415 = r419414 * r419414;
double r419416 = r419410 + r419415;
double r419417 = r419413 * r419416;
double r419418 = r419412 / r419417;
return r419418;
}
double f(double x, double y, double z) {
double r419419 = y;
double r419420 = -5.7998173554975605e+32;
bool r419421 = r419419 <= r419420;
double r419422 = 1.0;
double r419423 = r419422 / r419419;
double r419424 = x;
double r419425 = r419423 / r419424;
double r419426 = z;
double r419427 = r419426 * r419426;
double r419428 = r419422 + r419427;
double r419429 = r419425 / r419428;
double r419430 = 643945125486439.2;
bool r419431 = r419419 <= r419430;
double r419432 = 1.0;
double r419433 = r419432 / r419424;
double r419434 = fma(r419426, r419426, r419422);
double r419435 = r419434 / r419422;
double r419436 = r419435 * r419419;
double r419437 = r419433 / r419436;
double r419438 = r419424 * r419419;
double r419439 = r419422 / r419438;
double r419440 = r419439 / r419428;
double r419441 = r419431 ? r419437 : r419440;
double r419442 = r419421 ? r419429 : r419441;
return r419442;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.4 |
|---|---|
| Target | 5.8 |
| Herbie | 5.1 |
if y < -5.7998173554975605e+32Initial program 4.2
rmApplied associate-/r*1.2
Simplified1.2
if -5.7998173554975605e+32 < y < 643945125486439.2Initial program 8.9
rmApplied associate-/r*11.6
Simplified11.6
rmApplied div-inv11.6
Applied associate-/l*11.6
Simplified11.6
rmApplied *-un-lft-identity11.6
Applied times-frac11.6
Applied associate-/l*9.0
Simplified8.9
if 643945125486439.2 < y Initial program 3.7
rmApplied associate-/r*1.2
Simplified1.2
rmApplied div-inv1.2
Applied associate-/l*1.6
Simplified1.5
Final simplification5.1
herbie shell --seed 2020034 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< (* y (+ 1 (* z z))) #f) (/ (/ 1 y) (* (+ 1 (* z z)) x)) (if (< (* y (+ 1 (* z z))) 8.680743250567252e+305) (/ (/ 1 x) (* (+ 1 (* z z)) y)) (/ (/ 1 y) (* (+ 1 (* z z)) x))))
(/ (/ 1 x) (* y (+ 1 (* z z)))))