Average Error: 23.1 → 12.1
Time: 23.7s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 0\]
\[\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}\]
\[\frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}, \frac{\alpha + \beta}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}} \cdot \frac{1}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}}, 1.0\right)\right)\right)}\right)}{2.0}\]
\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}
\frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}, \frac{\alpha + \beta}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}} \cdot \frac{1}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}}, 1.0\right)\right)\right)}\right)}{2.0}
double f(double alpha, double beta, double i) {
        double r6489753 = alpha;
        double r6489754 = beta;
        double r6489755 = r6489753 + r6489754;
        double r6489756 = r6489754 - r6489753;
        double r6489757 = r6489755 * r6489756;
        double r6489758 = 2.0;
        double r6489759 = i;
        double r6489760 = r6489758 * r6489759;
        double r6489761 = r6489755 + r6489760;
        double r6489762 = r6489757 / r6489761;
        double r6489763 = 2.0;
        double r6489764 = r6489761 + r6489763;
        double r6489765 = r6489762 / r6489764;
        double r6489766 = 1.0;
        double r6489767 = r6489765 + r6489766;
        double r6489768 = r6489767 / r6489763;
        return r6489768;
}

double f(double alpha, double beta, double i) {
        double r6489769 = beta;
        double r6489770 = alpha;
        double r6489771 = r6489769 - r6489770;
        double r6489772 = i;
        double r6489773 = 2.0;
        double r6489774 = r6489770 + r6489769;
        double r6489775 = fma(r6489772, r6489773, r6489774);
        double r6489776 = r6489771 / r6489775;
        double r6489777 = 2.0;
        double r6489778 = r6489775 + r6489777;
        double r6489779 = sqrt(r6489778);
        double r6489780 = r6489774 / r6489779;
        double r6489781 = 1.0;
        double r6489782 = r6489781 / r6489779;
        double r6489783 = r6489780 * r6489782;
        double r6489784 = 1.0;
        double r6489785 = fma(r6489776, r6489783, r6489784);
        double r6489786 = expm1(r6489785);
        double r6489787 = log(r6489786);
        double r6489788 = exp(r6489787);
        double r6489789 = log1p(r6489788);
        double r6489790 = r6489789 / r6489777;
        return r6489790;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.1

    \[\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}\]
  2. Simplified19.2

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

    \[\leadsto \frac{\color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2.0, \mathsf{fma}\left(2, i, \beta + \alpha\right), \mathsf{fma}\left(2, i, \beta + \alpha\right) \cdot \mathsf{fma}\left(2, i, \beta + \alpha\right)\right)}, \beta + \alpha, 1.0\right)\right)\right)}}{2.0}\]
  5. Simplified12.0

    \[\leadsto \frac{\mathsf{log1p}\left(\color{blue}{\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \frac{\beta + \alpha}{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}, 1.0\right)\right)}\right)}{2.0}\]
  6. Using strategy rm
  7. Applied add-exp-log12.0

    \[\leadsto \frac{\mathsf{log1p}\left(\color{blue}{e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \frac{\beta + \alpha}{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}, 1.0\right)\right)\right)}}\right)}{2.0}\]
  8. Using strategy rm
  9. Applied add-sqr-sqrt12.1

    \[\leadsto \frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \frac{\beta + \alpha}{\color{blue}{\sqrt{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)} \cdot \sqrt{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}}}, 1.0\right)\right)\right)}\right)}{2.0}\]
  10. Applied *-un-lft-identity12.1

    \[\leadsto \frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \frac{\color{blue}{1 \cdot \left(\beta + \alpha\right)}}{\sqrt{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)} \cdot \sqrt{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}}, 1.0\right)\right)\right)}\right)}{2.0}\]
  11. Applied times-frac12.1

    \[\leadsto \frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \color{blue}{\frac{1}{\sqrt{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}} \cdot \frac{\beta + \alpha}{\sqrt{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}}}, 1.0\right)\right)\right)}\right)}{2.0}\]
  12. Final simplification12.1

    \[\leadsto \frac{\mathsf{log1p}\left(e^{\log \left(\mathsf{expm1}\left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}, \frac{\alpha + \beta}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}} \cdot \frac{1}{\sqrt{\mathsf{fma}\left(i, 2, \alpha + \beta\right) + 2.0}}, 1.0\right)\right)\right)}\right)}{2.0}\]

Reproduce

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