Average Error: 3.6 → 2.2
Time: 10.1s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
\[\begin{array}{l} \mathbf{if}\;\alpha \le 3.21167442017789031 \cdot 10^{167}:\\ \;\;\;\;\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \frac{1}{\frac{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}{1}}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{0}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \end{array}\]
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}
\begin{array}{l}
\mathbf{if}\;\alpha \le 3.21167442017789031 \cdot 10^{167}:\\
\;\;\;\;\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \frac{1}{\frac{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}{1}}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{0}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\

\end{array}
double f(double alpha, double beta) {
        double r99921 = alpha;
        double r99922 = beta;
        double r99923 = r99921 + r99922;
        double r99924 = r99922 * r99921;
        double r99925 = r99923 + r99924;
        double r99926 = 1.0;
        double r99927 = r99925 + r99926;
        double r99928 = 2.0;
        double r99929 = r99928 * r99926;
        double r99930 = r99923 + r99929;
        double r99931 = r99927 / r99930;
        double r99932 = r99931 / r99930;
        double r99933 = r99930 + r99926;
        double r99934 = r99932 / r99933;
        return r99934;
}

double f(double alpha, double beta) {
        double r99935 = alpha;
        double r99936 = 3.2116744201778903e+167;
        bool r99937 = r99935 <= r99936;
        double r99938 = beta;
        double r99939 = r99935 + r99938;
        double r99940 = r99938 * r99935;
        double r99941 = r99939 + r99940;
        double r99942 = 1.0;
        double r99943 = r99941 + r99942;
        double r99944 = 2.0;
        double r99945 = r99944 * r99942;
        double r99946 = r99939 + r99945;
        double r99947 = r99943 / r99946;
        double r99948 = 1.0;
        double r99949 = fma(r99942, r99944, r99939);
        double r99950 = r99949 / r99948;
        double r99951 = r99948 / r99950;
        double r99952 = r99947 * r99951;
        double r99953 = r99946 + r99942;
        double r99954 = r99952 / r99953;
        double r99955 = 0.0;
        double r99956 = r99955 / r99953;
        double r99957 = r99937 ? r99954 : r99956;
        return r99957;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 3.2116744201778903e+167

    1. Initial program 1.4

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
    2. Using strategy rm
    3. Applied div-inv1.4

      \[\leadsto \frac{\color{blue}{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \frac{1}{\left(\alpha + \beta\right) + 2 \cdot 1}}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
    4. Simplified1.4

      \[\leadsto \frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \color{blue}{\frac{1}{\frac{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}{1}}}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]

    if 3.2116744201778903e+167 < alpha

    1. Initial program 15.9

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
    2. Taylor expanded around inf 6.8

      \[\leadsto \frac{\color{blue}{0}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 3.21167442017789031 \cdot 10^{167}:\\ \;\;\;\;\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1} \cdot \frac{1}{\frac{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}{1}}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{0}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2020046 +o rules:numerics
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/3"
  :precision binary64
  :pre (and (> alpha -1) (> beta -1))
  (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1) (+ (+ alpha beta) (* 2 1))) (+ (+ alpha beta) (* 2 1))) (+ (+ (+ alpha beta) (* 2 1)) 1)))