Average Error: 6.4 → 5.9
Time: 1.1m
Precision: 64
\[\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}\]
\[\frac{\frac{\sqrt{1.0}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{1}{\frac{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}{\frac{\frac{\sqrt{1.0}}{x}}{\sqrt[3]{y}}}}\]
\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}
\frac{\frac{\sqrt{1.0}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{1}{\frac{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}{\frac{\frac{\sqrt{1.0}}{x}}{\sqrt[3]{y}}}}
double f(double x, double y, double z) {
        double r11890679 = 1.0;
        double r11890680 = x;
        double r11890681 = r11890679 / r11890680;
        double r11890682 = y;
        double r11890683 = z;
        double r11890684 = r11890683 * r11890683;
        double r11890685 = r11890679 + r11890684;
        double r11890686 = r11890682 * r11890685;
        double r11890687 = r11890681 / r11890686;
        return r11890687;
}

double f(double x, double y, double z) {
        double r11890688 = 1.0;
        double r11890689 = sqrt(r11890688);
        double r11890690 = z;
        double r11890691 = fma(r11890690, r11890690, r11890688);
        double r11890692 = sqrt(r11890691);
        double r11890693 = r11890689 / r11890692;
        double r11890694 = y;
        double r11890695 = cbrt(r11890694);
        double r11890696 = r11890695 * r11890695;
        double r11890697 = r11890693 / r11890696;
        double r11890698 = 1.0;
        double r11890699 = x;
        double r11890700 = r11890689 / r11890699;
        double r11890701 = r11890700 / r11890695;
        double r11890702 = r11890692 / r11890701;
        double r11890703 = r11890698 / r11890702;
        double r11890704 = r11890697 * r11890703;
        return r11890704;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

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

Derivation

  1. Initial program 6.4

    \[\frac{\frac{1.0}{x}}{y \cdot \left(1.0 + z \cdot z\right)}\]
  2. Simplified6.3

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

    \[\leadsto \frac{\frac{\frac{1.0}{x}}{y}}{\color{blue}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)} \cdot \sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}\]
  5. Applied add-cube-cbrt6.9

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

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

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

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

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

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

    \[\leadsto \color{blue}{\frac{\frac{\sqrt{1.0}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}} \cdot \frac{\frac{\frac{\sqrt{1.0}}{x}}{\sqrt[3]{y}}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}\]
  12. Using strategy rm
  13. Applied clear-num5.9

    \[\leadsto \frac{\frac{\sqrt{1.0}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \color{blue}{\frac{1}{\frac{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}{\frac{\frac{\sqrt{1.0}}{x}}{\sqrt[3]{y}}}}}\]
  14. Final simplification5.9

    \[\leadsto \frac{\frac{\sqrt{1.0}}{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{1}{\frac{\sqrt{\mathsf{fma}\left(z, z, 1.0\right)}}{\frac{\frac{\sqrt{1.0}}{x}}{\sqrt[3]{y}}}}\]

Reproduce

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