Average Error: 3.6 → 2.2
Time: 20.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{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\frac{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(0\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\ \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{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\frac{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(0\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\

\end{array}
double f(double alpha, double beta) {
        double r175219 = alpha;
        double r175220 = beta;
        double r175221 = r175219 + r175220;
        double r175222 = r175220 * r175219;
        double r175223 = r175221 + r175222;
        double r175224 = 1.0;
        double r175225 = r175223 + r175224;
        double r175226 = 2.0;
        double r175227 = r175226 * r175224;
        double r175228 = r175221 + r175227;
        double r175229 = r175225 / r175228;
        double r175230 = r175229 / r175228;
        double r175231 = r175228 + r175224;
        double r175232 = r175230 / r175231;
        return r175232;
}

double f(double alpha, double beta) {
        double r175233 = alpha;
        double r175234 = 3.2116744201778903e+167;
        bool r175235 = r175233 <= r175234;
        double r175236 = 1.0;
        double r175237 = beta;
        double r175238 = r175233 + r175237;
        double r175239 = fma(r175233, r175237, r175238);
        double r175240 = r175236 + r175239;
        double r175241 = 2.0;
        double r175242 = fma(r175236, r175241, r175238);
        double r175243 = r175240 / r175242;
        double r175244 = r175243 / r175242;
        double r175245 = expm1(r175244);
        double r175246 = log1p(r175245);
        double r175247 = fma(r175241, r175236, r175236);
        double r175248 = r175238 + r175247;
        double r175249 = r175246 / r175248;
        double r175250 = 0.0;
        double r175251 = expm1(r175250);
        double r175252 = log1p(r175251);
        double r175253 = r175252 / r175248;
        double r175254 = r175235 ? r175249 : r175253;
        return r175254;
}

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

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

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

    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. Simplified15.9

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

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

      \[\leadsto \frac{\mathsf{log1p}\left(\mathsf{expm1}\left(\color{blue}{0}\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\]
  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{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\frac{1 + \mathsf{fma}\left(\alpha, \beta, \alpha + \beta\right)}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}}{\mathsf{fma}\left(1, 2, \alpha + \beta\right)}\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{log1p}\left(\mathsf{expm1}\left(0\right)\right)}{\left(\alpha + \beta\right) + \mathsf{fma}\left(2, 1, 1\right)}\\ \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)))