Average Error: 15.1 → 0.5
Time: 15.8s
Precision: 64
\[\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\]
\[\begin{array}{l} \mathbf{if}\;x \cdot y = -\infty:\\ \;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\ \mathbf{elif}\;x \cdot y \le -7.653303258863243928721603622295786194715 \cdot 10^{-284}:\\ \;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\ \mathbf{elif}\;x \cdot y \le 1.378637074935772518390950338565754852981 \cdot 10^{-313}:\\ \;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\ \mathbf{elif}\;x \cdot y \le 1.343562516935530241649700044866050336514 \cdot 10^{184}:\\ \;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \frac{\frac{y}{z}}{z}}{z + 1}\\ \end{array}\]
\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}
\begin{array}{l}
\mathbf{if}\;x \cdot y = -\infty:\\
\;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\

\mathbf{elif}\;x \cdot y \le -7.653303258863243928721603622295786194715 \cdot 10^{-284}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\

\mathbf{elif}\;x \cdot y \le 1.378637074935772518390950338565754852981 \cdot 10^{-313}:\\
\;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\

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

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

\end{array}
double f(double x, double y, double z) {
        double r239730 = x;
        double r239731 = y;
        double r239732 = r239730 * r239731;
        double r239733 = z;
        double r239734 = r239733 * r239733;
        double r239735 = 1.0;
        double r239736 = r239733 + r239735;
        double r239737 = r239734 * r239736;
        double r239738 = r239732 / r239737;
        return r239738;
}

double f(double x, double y, double z) {
        double r239739 = x;
        double r239740 = y;
        double r239741 = r239739 * r239740;
        double r239742 = -inf.0;
        bool r239743 = r239741 <= r239742;
        double r239744 = z;
        double r239745 = r239739 / r239744;
        double r239746 = 1.0;
        double r239747 = r239744 + r239746;
        double r239748 = r239740 / r239744;
        double r239749 = r239747 / r239748;
        double r239750 = r239745 / r239749;
        double r239751 = -7.653303258863244e-284;
        bool r239752 = r239741 <= r239751;
        double r239753 = r239741 / r239744;
        double r239754 = r239753 / r239744;
        double r239755 = r239754 / r239747;
        double r239756 = 1.3786370749358e-313;
        bool r239757 = r239741 <= r239756;
        double r239758 = 1.3435625169355302e+184;
        bool r239759 = r239741 <= r239758;
        double r239760 = r239748 / r239744;
        double r239761 = r239739 * r239760;
        double r239762 = r239761 / r239747;
        double r239763 = r239759 ? r239755 : r239762;
        double r239764 = r239757 ? r239750 : r239763;
        double r239765 = r239752 ? r239755 : r239764;
        double r239766 = r239743 ? r239750 : r239765;
        return r239766;
}

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

Original15.1
Target4.0
Herbie0.5
\[\begin{array}{l} \mathbf{if}\;z \lt 249.6182814532307077115547144785523414612:\\ \;\;\;\;\frac{y \cdot \frac{x}{z}}{z + z \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{y}{z}}{1 + z} \cdot x}{z}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (* x y) < -inf.0 or -7.653303258863244e-284 < (* x y) < 1.3786370749358e-313

    1. Initial program 32.6

      \[\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\]
    2. Using strategy rm
    3. Applied associate-/r*32.6

      \[\leadsto \color{blue}{\frac{\frac{x \cdot y}{z \cdot z}}{z + 1}}\]
    4. Using strategy rm
    5. Applied times-frac0.8

      \[\leadsto \frac{\color{blue}{\frac{x}{z} \cdot \frac{y}{z}}}{z + 1}\]
    6. Using strategy rm
    7. Applied associate-*r/6.6

      \[\leadsto \frac{\color{blue}{\frac{\frac{x}{z} \cdot y}{z}}}{z + 1}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity6.6

      \[\leadsto \frac{\frac{\frac{x}{z} \cdot y}{\color{blue}{1 \cdot z}}}{z + 1}\]
    10. Applied times-frac0.8

      \[\leadsto \frac{\color{blue}{\frac{\frac{x}{z}}{1} \cdot \frac{y}{z}}}{z + 1}\]
    11. Applied associate-/l*0.3

      \[\leadsto \color{blue}{\frac{\frac{\frac{x}{z}}{1}}{\frac{z + 1}{\frac{y}{z}}}}\]

    if -inf.0 < (* x y) < -7.653303258863244e-284 or 1.3786370749358e-313 < (* x y) < 1.3435625169355302e+184

    1. Initial program 7.1

      \[\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\]
    2. Using strategy rm
    3. Applied associate-/r*5.2

      \[\leadsto \color{blue}{\frac{\frac{x \cdot y}{z \cdot z}}{z + 1}}\]
    4. Using strategy rm
    5. Applied times-frac3.2

      \[\leadsto \frac{\color{blue}{\frac{x}{z} \cdot \frac{y}{z}}}{z + 1}\]
    6. Using strategy rm
    7. Applied associate-*r/1.6

      \[\leadsto \frac{\color{blue}{\frac{\frac{x}{z} \cdot y}{z}}}{z + 1}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity1.6

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

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

      \[\leadsto \frac{\frac{1 \cdot \color{blue}{\frac{x \cdot y}{z}}}{z}}{z + 1}\]

    if 1.3435625169355302e+184 < (* x y)

    1. Initial program 37.5

      \[\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\]
    2. Using strategy rm
    3. Applied associate-/r*32.1

      \[\leadsto \color{blue}{\frac{\frac{x \cdot y}{z \cdot z}}{z + 1}}\]
    4. Using strategy rm
    5. Applied times-frac2.6

      \[\leadsto \frac{\color{blue}{\frac{x}{z} \cdot \frac{y}{z}}}{z + 1}\]
    6. Using strategy rm
    7. Applied div-inv2.7

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \cdot y = -\infty:\\ \;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\ \mathbf{elif}\;x \cdot y \le -7.653303258863243928721603622295786194715 \cdot 10^{-284}:\\ \;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\ \mathbf{elif}\;x \cdot y \le 1.378637074935772518390950338565754852981 \cdot 10^{-313}:\\ \;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\ \mathbf{elif}\;x \cdot y \le 1.343562516935530241649700044866050336514 \cdot 10^{184}:\\ \;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \frac{\frac{y}{z}}{z}}{z + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2019212 
(FPCore (x y z)
  :name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
  :precision binary64

  :herbie-target
  (if (< z 249.618281453230708) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))

  (/ (* x y) (* (* z z) (+ z 1))))