Average Error: 6.6 → 1.8
Time: 15.5s
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{\frac{1}{x}}{\left(y \cdot z\right) \cdot z + y \cdot 1}\\ \mathbf{elif}\;z \cdot z \le 1.615097712573262344642135347155950762195 \cdot 10^{303}:\\ \;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{z \cdot z + 1}\\ \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{\frac{1}{x}}{\left(y \cdot z\right) \cdot z + y \cdot 1}\\

\mathbf{elif}\;z \cdot z \le 1.615097712573262344642135347155950762195 \cdot 10^{303}:\\
\;\;\;\;\frac{\frac{\frac{1}{x}}{y}}{z \cdot z + 1}\\

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

\end{array}
double f(double x, double y, double z) {
        double r239439 = 1.0;
        double r239440 = x;
        double r239441 = r239439 / r239440;
        double r239442 = y;
        double r239443 = z;
        double r239444 = r239443 * r239443;
        double r239445 = r239439 + r239444;
        double r239446 = r239442 * r239445;
        double r239447 = r239441 / r239446;
        return r239447;
}

double f(double x, double y, double z) {
        double r239448 = z;
        double r239449 = r239448 * r239448;
        double r239450 = 2.157837290007893e+171;
        bool r239451 = r239449 <= r239450;
        double r239452 = 1.0;
        double r239453 = x;
        double r239454 = r239452 / r239453;
        double r239455 = y;
        double r239456 = r239455 * r239448;
        double r239457 = r239456 * r239448;
        double r239458 = r239455 * r239452;
        double r239459 = r239457 + r239458;
        double r239460 = r239454 / r239459;
        double r239461 = 1.6150977125732623e+303;
        bool r239462 = r239449 <= r239461;
        double r239463 = r239454 / r239455;
        double r239464 = r239449 + r239452;
        double r239465 = r239463 / r239464;
        double r239466 = r239454 / r239448;
        double r239467 = r239466 / r239456;
        double r239468 = r239462 ? r239465 : r239467;
        double r239469 = r239451 ? r239460 : r239468;
        return r239469;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original6.6
Target5.9
Herbie1.8
\[\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-lft-in1.1

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

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

    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}}{z \cdot z + 1}}\]

    if 1.6150977125732623e+303 < (* z z)

    1. Initial program 17.7

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

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

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

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

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

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

Reproduce

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