Average Error: 24.1 → 12.6
Time: 21.1s
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{\mathsf{fma}\left(\frac{1}{\frac{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}{\beta - \alpha}}, \left(\alpha + \beta\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\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{\mathsf{fma}\left(\frac{1}{\frac{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2}{\beta - \alpha}}, \left(\alpha + \beta\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1\right)}{2}
double f(double alpha, double beta, double i) {
        double r87204 = alpha;
        double r87205 = beta;
        double r87206 = r87204 + r87205;
        double r87207 = r87205 - r87204;
        double r87208 = r87206 * r87207;
        double r87209 = 2.0;
        double r87210 = i;
        double r87211 = r87209 * r87210;
        double r87212 = r87206 + r87211;
        double r87213 = r87208 / r87212;
        double r87214 = r87212 + r87209;
        double r87215 = r87213 / r87214;
        double r87216 = 1.0;
        double r87217 = r87215 + r87216;
        double r87218 = r87217 / r87209;
        return r87218;
}

double f(double alpha, double beta, double i) {
        double r87219 = 1.0;
        double r87220 = 2.0;
        double r87221 = i;
        double r87222 = alpha;
        double r87223 = beta;
        double r87224 = r87222 + r87223;
        double r87225 = fma(r87220, r87221, r87224);
        double r87226 = r87225 + r87220;
        double r87227 = r87223 - r87222;
        double r87228 = r87226 / r87227;
        double r87229 = r87219 / r87228;
        double r87230 = r87219 / r87225;
        double r87231 = r87224 * r87230;
        double r87232 = 1.0;
        double r87233 = fma(r87229, r87231, r87232);
        double r87234 = r87233 / r87220;
        return r87234;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

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

    \[\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 div-inv12.6

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

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

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

Reproduce

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