Average Error: 23.8 → 12.1
Time: 49.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{1 + \frac{\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}}{2 + \mathsf{fma}\left(2, i, \alpha + \beta\right)} \cdot \left(\alpha + \beta\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{1 + \frac{\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}}{2 + \mathsf{fma}\left(2, i, \alpha + \beta\right)} \cdot \left(\alpha + \beta\right)}{2}
double f(double alpha, double beta, double i) {
        double r4665035 = alpha;
        double r4665036 = beta;
        double r4665037 = r4665035 + r4665036;
        double r4665038 = r4665036 - r4665035;
        double r4665039 = r4665037 * r4665038;
        double r4665040 = 2.0;
        double r4665041 = i;
        double r4665042 = r4665040 * r4665041;
        double r4665043 = r4665037 + r4665042;
        double r4665044 = r4665039 / r4665043;
        double r4665045 = r4665043 + r4665040;
        double r4665046 = r4665044 / r4665045;
        double r4665047 = 1.0;
        double r4665048 = r4665046 + r4665047;
        double r4665049 = r4665048 / r4665040;
        return r4665049;
}

double f(double alpha, double beta, double i) {
        double r4665050 = 1.0;
        double r4665051 = beta;
        double r4665052 = alpha;
        double r4665053 = r4665051 - r4665052;
        double r4665054 = 2.0;
        double r4665055 = i;
        double r4665056 = r4665052 + r4665051;
        double r4665057 = fma(r4665054, r4665055, r4665056);
        double r4665058 = r4665053 / r4665057;
        double r4665059 = r4665054 + r4665057;
        double r4665060 = r4665058 / r4665059;
        double r4665061 = r4665060 * r4665056;
        double r4665062 = r4665050 + r4665061;
        double r4665063 = r4665062 / r4665054;
        return r4665063;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.8

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

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \beta + \alpha\right) \cdot \left(2 + \mathsf{fma}\left(2, i, \beta + \alpha\right)\right)}, \beta + \alpha, 1\right)}{2}}\]
  3. Using strategy rm
  4. Applied associate-/r*12.2

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

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

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

Reproduce

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