Average Error: 24.4 → 12.1
Time: 23.8s
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{\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}\]
\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{\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}
double f(double alpha, double beta, double i) {
        double r90514 = alpha;
        double r90515 = beta;
        double r90516 = r90514 + r90515;
        double r90517 = r90515 - r90514;
        double r90518 = r90516 * r90517;
        double r90519 = 2.0;
        double r90520 = i;
        double r90521 = r90519 * r90520;
        double r90522 = r90516 + r90521;
        double r90523 = r90518 / r90522;
        double r90524 = r90522 + r90519;
        double r90525 = r90523 / r90524;
        double r90526 = 1.0;
        double r90527 = r90525 + r90526;
        double r90528 = r90527 / r90519;
        return r90528;
}

double f(double alpha, double beta, double i) {
        double r90529 = beta;
        double r90530 = alpha;
        double r90531 = r90529 - r90530;
        double r90532 = 2.0;
        double r90533 = i;
        double r90534 = r90530 + r90529;
        double r90535 = fma(r90532, r90533, r90534);
        double r90536 = r90535 + r90532;
        double r90537 = r90531 / r90536;
        double r90538 = r90534 / r90535;
        double r90539 = 1.0;
        double r90540 = fma(r90537, r90538, r90539);
        double r90541 = r90540 / r90532;
        return r90541;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 24.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} + 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. Final simplification12.1

    \[\leadsto \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}\]

Reproduce

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