\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\begin{array}{l}
\mathbf{if}\;y \le -3.307370655589997521046711449010723357855 \cdot 10^{-279}:\\
\;\;\;\;\frac{1}{y \cdot \mathsf{fma}\left(x \cdot z, z, 1 \cdot x\right)}\\
\mathbf{elif}\;y \le 5.552809287377704998861487931028038747128 \cdot 10^{-266}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{y}}{\mathsf{fma}\left(x \cdot z, z, 1 \cdot x\right)}\\
\end{array}double f(double x, double y, double z) {
double r11506466 = 1.0;
double r11506467 = x;
double r11506468 = r11506466 / r11506467;
double r11506469 = y;
double r11506470 = z;
double r11506471 = r11506470 * r11506470;
double r11506472 = r11506466 + r11506471;
double r11506473 = r11506469 * r11506472;
double r11506474 = r11506468 / r11506473;
return r11506474;
}
double f(double x, double y, double z) {
double r11506475 = y;
double r11506476 = -3.3073706555899975e-279;
bool r11506477 = r11506475 <= r11506476;
double r11506478 = 1.0;
double r11506479 = x;
double r11506480 = z;
double r11506481 = r11506479 * r11506480;
double r11506482 = r11506478 * r11506479;
double r11506483 = fma(r11506481, r11506480, r11506482);
double r11506484 = r11506475 * r11506483;
double r11506485 = r11506478 / r11506484;
double r11506486 = 5.552809287377705e-266;
bool r11506487 = r11506475 <= r11506486;
double r11506488 = r11506478 / r11506479;
double r11506489 = r11506488 / r11506475;
double r11506490 = fma(r11506480, r11506480, r11506478);
double r11506491 = r11506489 / r11506490;
double r11506492 = r11506478 / r11506475;
double r11506493 = r11506492 / r11506483;
double r11506494 = r11506487 ? r11506491 : r11506493;
double r11506495 = r11506477 ? r11506485 : r11506494;
return r11506495;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 6.5 |
|---|---|
| Target | 5.7 |
| Herbie | 3.9 |
if y < -3.3073706555899975e-279Initial program 6.6
rmApplied div-inv6.6
Applied associate-/l*6.8
Simplified6.8
Taylor expanded around inf 6.8
Simplified3.8
if -3.3073706555899975e-279 < y < 5.552809287377705e-266Initial program 16.9
Simplified22.7
if 5.552809287377705e-266 < y Initial program 5.5
rmApplied div-inv5.5
Applied associate-/l*5.7
Simplified5.6
Taylor expanded around inf 5.6
Simplified2.5
rmApplied associate-/r*2.3
Final simplification3.9
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:herbie-target
(if (< (* y (+ 1.0 (* z z))) -inf.0) (/ (/ 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)))))