Average Error: 23.9 → 12.1
Time: 34.0s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 0.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} + 1}{2}\]
\[\frac{\log \left(e^{\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)}\right)}{2}\]
\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} + 1}{2}
\frac{\log \left(e^{\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)}\right)}{2}
double f(double alpha, double beta, double i) {
        double r80942 = alpha;
        double r80943 = beta;
        double r80944 = r80942 + r80943;
        double r80945 = r80943 - r80942;
        double r80946 = r80944 * r80945;
        double r80947 = 2.0;
        double r80948 = i;
        double r80949 = r80947 * r80948;
        double r80950 = r80944 + r80949;
        double r80951 = r80946 / r80950;
        double r80952 = r80950 + r80947;
        double r80953 = r80951 / r80952;
        double r80954 = 1.0;
        double r80955 = r80953 + r80954;
        double r80956 = r80955 / r80947;
        return r80956;
}

double f(double alpha, double beta, double i) {
        double r80957 = beta;
        double r80958 = alpha;
        double r80959 = r80957 - r80958;
        double r80960 = 2.0;
        double r80961 = i;
        double r80962 = r80958 + r80957;
        double r80963 = fma(r80960, r80961, r80962);
        double r80964 = r80963 + r80960;
        double r80965 = r80959 / r80964;
        double r80966 = r80962 / r80963;
        double r80967 = 1.0;
        double r80968 = fma(r80965, r80966, r80967);
        double r80969 = exp(r80968);
        double r80970 = log(r80969);
        double r80971 = r80970 / r80960;
        return r80971;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.9

    \[\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} + 1}{2}\]
  2. Simplified12.1

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

    \[\leadsto \frac{\color{blue}{\log \left(e^{\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)}\right)}}{2}\]
  5. Final simplification12.1

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

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(FPCore (alpha beta i)
  :name "Octave 3.8, jcobi/2"
  :precision binary64
  :pre (and (> alpha -1) (> beta -1) (> i 0.0))
  (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2)) 1) 2))