Average Error: 23.4 → 12.1
Time: 20.2s
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{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{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{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{2.0}
double f(double alpha, double beta, double i) {
        double r4506750 = alpha;
        double r4506751 = beta;
        double r4506752 = r4506750 + r4506751;
        double r4506753 = r4506751 - r4506750;
        double r4506754 = r4506752 * r4506753;
        double r4506755 = 2.0;
        double r4506756 = i;
        double r4506757 = r4506755 * r4506756;
        double r4506758 = r4506752 + r4506757;
        double r4506759 = r4506754 / r4506758;
        double r4506760 = 2.0;
        double r4506761 = r4506758 + r4506760;
        double r4506762 = r4506759 / r4506761;
        double r4506763 = 1.0;
        double r4506764 = r4506762 + r4506763;
        double r4506765 = r4506764 / r4506760;
        return r4506765;
}

double f(double alpha, double beta, double i) {
        double r4506766 = beta;
        double r4506767 = alpha;
        double r4506768 = r4506766 - r4506767;
        double r4506769 = 1.0;
        double r4506770 = i;
        double r4506771 = 2.0;
        double r4506772 = r4506767 + r4506766;
        double r4506773 = fma(r4506770, r4506771, r4506772);
        double r4506774 = r4506769 / r4506773;
        double r4506775 = r4506768 * r4506774;
        double r4506776 = 2.0;
        double r4506777 = r4506773 + r4506776;
        double r4506778 = sqrt(r4506777);
        double r4506779 = r4506772 / r4506778;
        double r4506780 = r4506769 / r4506778;
        double r4506781 = r4506779 * r4506780;
        double r4506782 = 1.0;
        double r4506783 = fma(r4506775, r4506781, r4506782);
        double r4506784 = r4506783 / r4506776;
        return r4506784;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.4

    \[\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.4

    \[\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 add-log-exp19.5

    \[\leadsto \frac{\color{blue}{\log \left(e^{\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)}}{2.0}\]
  5. Simplified12.1

    \[\leadsto \frac{\log \color{blue}{\left(e^{\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)}}{2.0}\]
  6. Using strategy rm
  7. Applied div-inv12.1

    \[\leadsto \frac{\log \left(e^{\mathsf{fma}\left(\color{blue}{\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{2.0}\]
  8. Using strategy rm
  9. Applied rem-log-exp12.0

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)}, \frac{\beta + \alpha}{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}, 1.0\right)}}{2.0}\]
  10. Using strategy rm
  11. Applied add-sqr-sqrt12.1

    \[\leadsto \frac{\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{2.0}\]
  12. Applied *-un-lft-identity12.1

    \[\leadsto \frac{\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{2.0}\]
  13. Applied times-frac12.1

    \[\leadsto \frac{\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{2.0}\]
  14. Final simplification12.1

    \[\leadsto \frac{\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\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)}{2.0}\]

Reproduce

herbie shell --seed 2019168 +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))