Average Error: 6.5 → 3.4
Time: 45.3s
Precision: 64
\[\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\]
\[\begin{array}{l} \mathbf{if}\;z \le -5.900492572730370817179964668919009617778 \cdot 10^{144} \lor \neg \left(z \le 1.857560841302853637939567429509783112487 \cdot 10^{140}\right):\\ \;\;\;\;\frac{\frac{1}{x}}{\left(z \cdot y\right) \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\sqrt{1}}{x}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y} \cdot \frac{\sqrt{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}\\ \end{array}\]
\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}
\begin{array}{l}
\mathbf{if}\;z \le -5.900492572730370817179964668919009617778 \cdot 10^{144} \lor \neg \left(z \le 1.857560841302853637939567429509783112487 \cdot 10^{140}\right):\\
\;\;\;\;\frac{\frac{1}{x}}{\left(z \cdot y\right) \cdot z}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{1}}{x}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y} \cdot \frac{\sqrt{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}\\

\end{array}
double f(double x, double y, double z) {
        double r357370 = 1.0;
        double r357371 = x;
        double r357372 = r357370 / r357371;
        double r357373 = y;
        double r357374 = z;
        double r357375 = r357374 * r357374;
        double r357376 = r357370 + r357375;
        double r357377 = r357373 * r357376;
        double r357378 = r357372 / r357377;
        return r357378;
}

double f(double x, double y, double z) {
        double r357379 = z;
        double r357380 = -5.900492572730371e+144;
        bool r357381 = r357379 <= r357380;
        double r357382 = 1.8575608413028536e+140;
        bool r357383 = r357379 <= r357382;
        double r357384 = !r357383;
        bool r357385 = r357381 || r357384;
        double r357386 = 1.0;
        double r357387 = x;
        double r357388 = r357386 / r357387;
        double r357389 = y;
        double r357390 = r357379 * r357389;
        double r357391 = r357390 * r357379;
        double r357392 = r357388 / r357391;
        double r357393 = sqrt(r357386);
        double r357394 = r357393 / r357387;
        double r357395 = fma(r357379, r357379, r357386);
        double r357396 = sqrt(r357395);
        double r357397 = r357394 / r357396;
        double r357398 = r357397 / r357389;
        double r357399 = r357393 / r357396;
        double r357400 = r357398 * r357399;
        double r357401 = r357385 ? r357392 : r357400;
        return r357401;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original6.5
Target5.7
Herbie3.4
\[\begin{array}{l} \mathbf{if}\;y \cdot \left(1 + z \cdot z\right) \lt -\infty:\\ \;\;\;\;\frac{\frac{1}{y}}{\left(1 + z \cdot z\right) \cdot x}\\ \mathbf{elif}\;y \cdot \left(1 + z \cdot z\right) \lt 8.680743250567251617010582226806563373013 \cdot 10^{305}:\\ \;\;\;\;\frac{\frac{1}{x}}{\left(1 + z \cdot z\right) \cdot y}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{y}}{\left(1 + z \cdot z\right) \cdot x}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -5.900492572730371e+144 or 1.8575608413028536e+140 < z

    1. Initial program 17.3

      \[\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\]
    2. Simplified17.9

      \[\leadsto \color{blue}{\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}}\]
    3. Taylor expanded around inf 17.4

      \[\leadsto \color{blue}{\frac{1}{x \cdot \left({z}^{2} \cdot y\right)}}\]
    4. Simplified7.9

      \[\leadsto \color{blue}{\frac{\frac{1}{x}}{z \cdot \left(z \cdot y\right)}}\]

    if -5.900492572730371e+144 < z < 1.8575608413028536e+140

    1. Initial program 1.9

      \[\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\]
    2. Simplified1.9

      \[\leadsto \color{blue}{\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt2.0

      \[\leadsto \frac{\frac{\frac{1}{x}}{y}}{\color{blue}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1\right)}}}\]
    5. Applied *-un-lft-identity2.0

      \[\leadsto \frac{\frac{\frac{1}{x}}{\color{blue}{1 \cdot y}}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1\right)}}\]
    6. Applied *-un-lft-identity2.0

      \[\leadsto \frac{\frac{\frac{1}{\color{blue}{1 \cdot x}}}{1 \cdot y}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1\right)}}\]
    7. Applied add-sqr-sqrt2.0

      \[\leadsto \frac{\frac{\frac{\color{blue}{\sqrt{1} \cdot \sqrt{1}}}{1 \cdot x}}{1 \cdot y}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1\right)}}\]
    8. Applied times-frac2.0

      \[\leadsto \frac{\frac{\color{blue}{\frac{\sqrt{1}}{1} \cdot \frac{\sqrt{1}}{x}}}{1 \cdot y}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1\right)}}\]
    9. Applied times-frac2.0

      \[\leadsto \frac{\color{blue}{\frac{\frac{\sqrt{1}}{1}}{1} \cdot \frac{\frac{\sqrt{1}}{x}}{y}}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1\right)}}\]
    10. Applied times-frac2.0

      \[\leadsto \color{blue}{\frac{\frac{\frac{\sqrt{1}}{1}}{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}} \cdot \frac{\frac{\frac{\sqrt{1}}{x}}{y}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}\]
    11. Simplified2.0

      \[\leadsto \color{blue}{\frac{\sqrt{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}} \cdot \frac{\frac{\frac{\sqrt{1}}{x}}{y}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}\]
    12. Simplified1.5

      \[\leadsto \frac{\sqrt{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}} \cdot \color{blue}{\frac{\frac{\frac{\sqrt{1}}{x}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -5.900492572730370817179964668919009617778 \cdot 10^{144} \lor \neg \left(z \le 1.857560841302853637939567429509783112487 \cdot 10^{140}\right):\\ \;\;\;\;\frac{\frac{1}{x}}{\left(z \cdot y\right) \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\sqrt{1}}{x}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}}{y} \cdot \frac{\sqrt{1}}{\sqrt{\mathsf{fma}\left(z, z, 1\right)}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019174 +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)))))