Average Error: 3.8 → 2.5
Time: 1.2m
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
\[\begin{array}{l} \mathbf{if}\;\beta \le 8.004231800207308 \cdot 10^{+201}:\\ \;\;\;\;\frac{\frac{\frac{1}{\sqrt{\left(\alpha + \beta\right) + 2}}}{\frac{\left(\alpha + \beta\right) + 2}{\frac{\mathsf{fma}\left(\beta, \alpha, \alpha + \beta\right) + 1.0}{\sqrt{\left(\alpha + \beta\right) + 2}}}}}{\left(\left(\alpha + \beta\right) + 2\right) + 1.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{\sqrt{\left(\alpha + \beta\right) + 2}}}{\mathsf{fma}\left(6.0, \frac{\alpha}{\sqrt{8}}, \mathsf{fma}\left(6.0, \sqrt{\frac{1}{8}} \cdot \beta, \sqrt{8} \cdot 1.0\right)\right) - 1.0 \cdot \left(\beta \cdot \sqrt{8} + \alpha \cdot \sqrt{8}\right)}}{\left(\left(\alpha + \beta\right) + 2\right) + 1.0}\\ \end{array}\]
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}
\begin{array}{l}
\mathbf{if}\;\beta \le 8.004231800207308 \cdot 10^{+201}:\\
\;\;\;\;\frac{\frac{\frac{1}{\sqrt{\left(\alpha + \beta\right) + 2}}}{\frac{\left(\alpha + \beta\right) + 2}{\frac{\mathsf{fma}\left(\beta, \alpha, \alpha + \beta\right) + 1.0}{\sqrt{\left(\alpha + \beta\right) + 2}}}}}{\left(\left(\alpha + \beta\right) + 2\right) + 1.0}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{\sqrt{\left(\alpha + \beta\right) + 2}}}{\mathsf{fma}\left(6.0, \frac{\alpha}{\sqrt{8}}, \mathsf{fma}\left(6.0, \sqrt{\frac{1}{8}} \cdot \beta, \sqrt{8} \cdot 1.0\right)\right) - 1.0 \cdot \left(\beta \cdot \sqrt{8} + \alpha \cdot \sqrt{8}\right)}}{\left(\left(\alpha + \beta\right) + 2\right) + 1.0}\\

\end{array}
double f(double alpha, double beta) {
        double r4645940 = alpha;
        double r4645941 = beta;
        double r4645942 = r4645940 + r4645941;
        double r4645943 = r4645941 * r4645940;
        double r4645944 = r4645942 + r4645943;
        double r4645945 = 1.0;
        double r4645946 = r4645944 + r4645945;
        double r4645947 = 2.0;
        double r4645948 = 1.0;
        double r4645949 = r4645947 * r4645948;
        double r4645950 = r4645942 + r4645949;
        double r4645951 = r4645946 / r4645950;
        double r4645952 = r4645951 / r4645950;
        double r4645953 = r4645950 + r4645945;
        double r4645954 = r4645952 / r4645953;
        return r4645954;
}

double f(double alpha, double beta) {
        double r4645955 = beta;
        double r4645956 = 8.004231800207308e+201;
        bool r4645957 = r4645955 <= r4645956;
        double r4645958 = 1.0;
        double r4645959 = alpha;
        double r4645960 = r4645959 + r4645955;
        double r4645961 = 2.0;
        double r4645962 = r4645960 + r4645961;
        double r4645963 = sqrt(r4645962);
        double r4645964 = r4645958 / r4645963;
        double r4645965 = fma(r4645955, r4645959, r4645960);
        double r4645966 = 1.0;
        double r4645967 = r4645965 + r4645966;
        double r4645968 = r4645967 / r4645963;
        double r4645969 = r4645962 / r4645968;
        double r4645970 = r4645964 / r4645969;
        double r4645971 = r4645962 + r4645966;
        double r4645972 = r4645970 / r4645971;
        double r4645973 = 6.0;
        double r4645974 = 8.0;
        double r4645975 = sqrt(r4645974);
        double r4645976 = r4645959 / r4645975;
        double r4645977 = 0.125;
        double r4645978 = sqrt(r4645977);
        double r4645979 = r4645978 * r4645955;
        double r4645980 = r4645975 * r4645966;
        double r4645981 = fma(r4645973, r4645979, r4645980);
        double r4645982 = fma(r4645973, r4645976, r4645981);
        double r4645983 = r4645955 * r4645975;
        double r4645984 = r4645959 * r4645975;
        double r4645985 = r4645983 + r4645984;
        double r4645986 = r4645966 * r4645985;
        double r4645987 = r4645982 - r4645986;
        double r4645988 = r4645964 / r4645987;
        double r4645989 = r4645988 / r4645971;
        double r4645990 = r4645957 ? r4645972 : r4645989;
        return r4645990;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if beta < 8.004231800207308e+201

    1. Initial program 1.9

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
    2. Simplified1.9

      \[\leadsto \color{blue}{\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt2.4

      \[\leadsto \frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\color{blue}{\sqrt{2 + \left(\beta + \alpha\right)} \cdot \sqrt{2 + \left(\beta + \alpha\right)}}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    5. Applied *-un-lft-identity2.4

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \left(1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)\right)}}{\sqrt{2 + \left(\beta + \alpha\right)} \cdot \sqrt{2 + \left(\beta + \alpha\right)}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    6. Applied times-frac2.4

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\sqrt{2 + \left(\beta + \alpha\right)}} \cdot \frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\sqrt{2 + \left(\beta + \alpha\right)}}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    7. Applied associate-/l*2.0

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

    if 8.004231800207308e+201 < beta

    1. Initial program 19.0

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1.0}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1.0}\]
    2. Simplified19.0

      \[\leadsto \color{blue}{\frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{2 + \left(\beta + \alpha\right)}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt19.0

      \[\leadsto \frac{\frac{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\color{blue}{\sqrt{2 + \left(\beta + \alpha\right)} \cdot \sqrt{2 + \left(\beta + \alpha\right)}}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    5. Applied *-un-lft-identity19.0

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \left(1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)\right)}}{\sqrt{2 + \left(\beta + \alpha\right)} \cdot \sqrt{2 + \left(\beta + \alpha\right)}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    6. Applied times-frac19.0

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\sqrt{2 + \left(\beta + \alpha\right)}} \cdot \frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\sqrt{2 + \left(\beta + \alpha\right)}}}}{2 + \left(\beta + \alpha\right)}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    7. Applied associate-/l*19.0

      \[\leadsto \frac{\color{blue}{\frac{\frac{1}{\sqrt{2 + \left(\beta + \alpha\right)}}}{\frac{2 + \left(\beta + \alpha\right)}{\frac{1.0 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\sqrt{2 + \left(\beta + \alpha\right)}}}}}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    8. Taylor expanded around 0 6.5

      \[\leadsto \frac{\frac{\frac{1}{\sqrt{2 + \left(\beta + \alpha\right)}}}{\color{blue}{\left(6.0 \cdot \frac{\alpha}{\sqrt{8}} + \left(6.0 \cdot \left(\sqrt{\frac{1}{8}} \cdot \beta\right) + 1.0 \cdot \sqrt{8}\right)\right) - \left(1.0 \cdot \left(\sqrt{8} \cdot \alpha\right) + 1.0 \cdot \left(\sqrt{8} \cdot \beta\right)\right)}}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
    9. Simplified6.5

      \[\leadsto \frac{\frac{\frac{1}{\sqrt{2 + \left(\beta + \alpha\right)}}}{\color{blue}{\mathsf{fma}\left(6.0, \frac{\alpha}{\sqrt{8}}, \mathsf{fma}\left(6.0, \sqrt{\frac{1}{8}} \cdot \beta, 1.0 \cdot \sqrt{8}\right)\right) - 1.0 \cdot \left(\alpha \cdot \sqrt{8} + \beta \cdot \sqrt{8}\right)}}}{\left(2 + \left(\beta + \alpha\right)\right) + 1.0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\beta \le 8.004231800207308 \cdot 10^{+201}:\\ \;\;\;\;\frac{\frac{\frac{1}{\sqrt{\left(\alpha + \beta\right) + 2}}}{\frac{\left(\alpha + \beta\right) + 2}{\frac{\mathsf{fma}\left(\beta, \alpha, \alpha + \beta\right) + 1.0}{\sqrt{\left(\alpha + \beta\right) + 2}}}}}{\left(\left(\alpha + \beta\right) + 2\right) + 1.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{\sqrt{\left(\alpha + \beta\right) + 2}}}{\mathsf{fma}\left(6.0, \frac{\alpha}{\sqrt{8}}, \mathsf{fma}\left(6.0, \sqrt{\frac{1}{8}} \cdot \beta, \sqrt{8} \cdot 1.0\right)\right) - 1.0 \cdot \left(\beta \cdot \sqrt{8} + \alpha \cdot \sqrt{8}\right)}}{\left(\left(\alpha + \beta\right) + 2\right) + 1.0}\\ \end{array}\]

Reproduce

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