Average Error: 6.6 → 1.9
Time: 13.7s
Precision: 64
\[\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\]
\[\begin{array}{l} \mathbf{if}\;z \cdot z \le 2.15783729000789293969515717777497558388 \cdot 10^{171}:\\ \;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(z, y \cdot z, 1 \cdot y\right)}{1} \cdot x}\\ \mathbf{elif}\;z \cdot z \le 1.615097712573262344642135347155950762195 \cdot 10^{303}:\\ \;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{x}}{z}}{y \cdot z}\\ \end{array}\]
\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 2.15783729000789293969515717777497558388 \cdot 10^{171}:\\
\;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(z, y \cdot z, 1 \cdot y\right)}{1} \cdot x}\\

\mathbf{elif}\;z \cdot z \le 1.615097712573262344642135347155950762195 \cdot 10^{303}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{z}}{y \cdot z}\\

\end{array}
double f(double x, double y, double z) {
        double r234211 = 1.0;
        double r234212 = x;
        double r234213 = r234211 / r234212;
        double r234214 = y;
        double r234215 = z;
        double r234216 = r234215 * r234215;
        double r234217 = r234211 + r234216;
        double r234218 = r234214 * r234217;
        double r234219 = r234213 / r234218;
        return r234219;
}

double f(double x, double y, double z) {
        double r234220 = z;
        double r234221 = r234220 * r234220;
        double r234222 = 2.157837290007893e+171;
        bool r234223 = r234221 <= r234222;
        double r234224 = 1.0;
        double r234225 = y;
        double r234226 = r234225 * r234220;
        double r234227 = 1.0;
        double r234228 = r234227 * r234225;
        double r234229 = fma(r234220, r234226, r234228);
        double r234230 = r234229 / r234227;
        double r234231 = x;
        double r234232 = r234230 * r234231;
        double r234233 = r234224 / r234232;
        double r234234 = 1.6150977125732623e+303;
        bool r234235 = r234221 <= r234234;
        double r234236 = r234227 / r234231;
        double r234237 = r234236 / r234225;
        double r234238 = fma(r234220, r234220, r234227);
        double r234239 = r234237 / r234238;
        double r234240 = r234236 / r234220;
        double r234241 = r234240 / r234226;
        double r234242 = r234235 ? r234239 : r234241;
        double r234243 = r234223 ? r234233 : r234242;
        return r234243;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original6.6
Target5.9
Herbie1.9
\[\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 3 regimes
  2. if (* z z) < 2.157837290007893e+171

    1. Initial program 1.1

      \[\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\]
    2. Using strategy rm
    3. Applied distribute-rgt-in1.1

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

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

      \[\leadsto \frac{\frac{1}{x}}{y \cdot 1 + \color{blue}{z \cdot \left(z \cdot y\right)}}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt1.3

      \[\leadsto \frac{\frac{1}{x}}{y \cdot 1 + \color{blue}{\left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}\right)} \cdot \left(z \cdot y\right)}\]
    8. Applied associate-*l*1.3

      \[\leadsto \frac{\frac{1}{x}}{y \cdot 1 + \color{blue}{\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\sqrt[3]{z} \cdot \left(z \cdot y\right)\right)}}\]
    9. Simplified1.3

      \[\leadsto \frac{\frac{1}{x}}{y \cdot 1 + \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{z} \cdot y\right) \cdot z\right)}}\]
    10. Using strategy rm
    11. Applied *-un-lft-identity1.3

      \[\leadsto \frac{\frac{1}{\color{blue}{1 \cdot x}}}{y \cdot 1 + \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\left(\sqrt[3]{z} \cdot y\right) \cdot z\right)}\]
    12. Applied *-un-lft-identity1.3

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot 1}}{1 \cdot x}}{y \cdot 1 + \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\left(\sqrt[3]{z} \cdot y\right) \cdot z\right)}\]
    13. Applied times-frac1.3

      \[\leadsto \frac{\color{blue}{\frac{1}{1} \cdot \frac{1}{x}}}{y \cdot 1 + \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\left(\sqrt[3]{z} \cdot y\right) \cdot z\right)}\]
    14. Applied associate-/l*1.7

      \[\leadsto \color{blue}{\frac{\frac{1}{1}}{\frac{y \cdot 1 + \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\left(\sqrt[3]{z} \cdot y\right) \cdot z\right)}{\frac{1}{x}}}}\]
    15. Simplified1.5

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

    if 2.157837290007893e+171 < (* z z) < 1.6150977125732623e+303

    1. Initial program 8.3

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

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

    if 1.6150977125732623e+303 < (* z z)

    1. Initial program 17.7

      \[\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\]
    2. Taylor expanded around inf 17.7

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

      \[\leadsto \color{blue}{\frac{\frac{\frac{1}{x}}{z}}{y \cdot z}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \cdot z \le 2.15783729000789293969515717777497558388 \cdot 10^{171}:\\ \;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(z, y \cdot z, 1 \cdot y\right)}{1} \cdot x}\\ \mathbf{elif}\;z \cdot z \le 1.615097712573262344642135347155950762195 \cdot 10^{303}:\\ \;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{\mathsf{fma}\left(z, z, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{x}}{z}}{y \cdot z}\\ \end{array}\]

Reproduce

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