Average Error: 23.8 → 12.1
Time: 24.4s
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{\frac{\mathsf{fma}\left(2, i, \beta\right) + \alpha}{\alpha + \beta}}{\beta - \alpha}}, \frac{1}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}, 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{\frac{\mathsf{fma}\left(2, i, \beta\right) + \alpha}{\alpha + \beta}}{\beta - \alpha}}, \frac{1}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}, 1\right)}{2}
double f(double alpha, double beta, double i) {
        double r148074 = alpha;
        double r148075 = beta;
        double r148076 = r148074 + r148075;
        double r148077 = r148075 - r148074;
        double r148078 = r148076 * r148077;
        double r148079 = 2.0;
        double r148080 = i;
        double r148081 = r148079 * r148080;
        double r148082 = r148076 + r148081;
        double r148083 = r148078 / r148082;
        double r148084 = r148082 + r148079;
        double r148085 = r148083 / r148084;
        double r148086 = 1.0;
        double r148087 = r148085 + r148086;
        double r148088 = r148087 / r148079;
        return r148088;
}

double f(double alpha, double beta, double i) {
        double r148089 = 1.0;
        double r148090 = 2.0;
        double r148091 = i;
        double r148092 = beta;
        double r148093 = fma(r148090, r148091, r148092);
        double r148094 = alpha;
        double r148095 = r148093 + r148094;
        double r148096 = r148094 + r148092;
        double r148097 = r148095 / r148096;
        double r148098 = r148092 - r148094;
        double r148099 = r148097 / r148098;
        double r148100 = r148089 / r148099;
        double r148101 = r148090 * r148091;
        double r148102 = r148096 + r148101;
        double r148103 = r148102 + r148090;
        double r148104 = r148089 / r148103;
        double r148105 = 1.0;
        double r148106 = fma(r148100, r148104, r148105);
        double r148107 = r148106 / r148090;
        return r148107;
}

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. Using strategy rm
  3. Applied clear-num23.8

    \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\]
  4. Simplified12.0

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

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

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

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

Reproduce

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