Average Error: 3.5 → 2.3
Time: 1.1m
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 5.248579992166404698947675881938820144266 \cdot 10^{165}:\\ \;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)} \cdot \frac{1 + \mathsf{fma}\left(\beta, \alpha, \alpha + \beta\right)}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)}}{\left(\alpha + \beta\right) + 3}\\ \mathbf{else}:\\ \;\;\;\;0\\ \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 5.248579992166404698947675881938820144266 \cdot 10^{165}:\\
\;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)} \cdot \frac{1 + \mathsf{fma}\left(\beta, \alpha, \alpha + \beta\right)}{\mathsf{fma}\left(2, 1, \alpha + \beta\right)}}{\left(\alpha + \beta\right) + 3}\\

\mathbf{else}:\\
\;\;\;\;0\\

\end{array}
double f(double alpha, double beta) {
        double r3230137 = alpha;
        double r3230138 = beta;
        double r3230139 = r3230137 + r3230138;
        double r3230140 = r3230138 * r3230137;
        double r3230141 = r3230139 + r3230140;
        double r3230142 = 1.0;
        double r3230143 = r3230141 + r3230142;
        double r3230144 = 2.0;
        double r3230145 = r3230144 * r3230142;
        double r3230146 = r3230139 + r3230145;
        double r3230147 = r3230143 / r3230146;
        double r3230148 = r3230147 / r3230146;
        double r3230149 = r3230146 + r3230142;
        double r3230150 = r3230148 / r3230149;
        return r3230150;
}

double f(double alpha, double beta) {
        double r3230151 = alpha;
        double r3230152 = 5.248579992166405e+165;
        bool r3230153 = r3230151 <= r3230152;
        double r3230154 = 1.0;
        double r3230155 = 2.0;
        double r3230156 = 1.0;
        double r3230157 = beta;
        double r3230158 = r3230151 + r3230157;
        double r3230159 = fma(r3230155, r3230156, r3230158);
        double r3230160 = r3230154 / r3230159;
        double r3230161 = fma(r3230157, r3230151, r3230158);
        double r3230162 = r3230156 + r3230161;
        double r3230163 = r3230162 / r3230159;
        double r3230164 = r3230160 * r3230163;
        double r3230165 = 3.0;
        double r3230166 = r3230158 + r3230165;
        double r3230167 = r3230164 / r3230166;
        double r3230168 = 0.0;
        double r3230169 = r3230153 ? r3230167 : r3230168;
        return r3230169;
}

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 5.248579992166405e+165

    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. Simplified1.4

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

      \[\leadsto \frac{\frac{\frac{1 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\mathsf{fma}\left(2, 1, \beta + \alpha\right)}}{\mathsf{fma}\left(2, 1, \beta + \alpha\right)}}{\color{blue}{3 + \left(\beta + \alpha\right)}}\]
    4. Using strategy rm
    5. Applied div-inv1.4

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

    if 5.248579992166405e+165 < 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. Simplified15.9

      \[\leadsto \color{blue}{\frac{\frac{\frac{1 + \mathsf{fma}\left(\beta, \alpha, \beta + \alpha\right)}{\mathsf{fma}\left(2, 1, \beta + \alpha\right)}}{\mathsf{fma}\left(2, 1, \beta + \alpha\right)}}{1 + \mathsf{fma}\left(2, 1, \beta + \alpha\right)}}\]
    3. Taylor expanded around inf 7.4

      \[\leadsto \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.3

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

Reproduce

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