Average Error: 23.2 → 12.1
Time: 25.3s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 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.0} + 1.0}{2.0}\]
\[\frac{e^{\log \left(\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2.0}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1.0\right)\right)}}{2.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.0} + 1.0}{2.0}
\frac{e^{\log \left(\mathsf{fma}\left(\left(\beta - \alpha\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right) + 2.0}, \frac{\alpha + \beta}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}, 1.0\right)\right)}}{2.0}
double f(double alpha, double beta, double i) {
        double r3399018 = alpha;
        double r3399019 = beta;
        double r3399020 = r3399018 + r3399019;
        double r3399021 = r3399019 - r3399018;
        double r3399022 = r3399020 * r3399021;
        double r3399023 = 2.0;
        double r3399024 = i;
        double r3399025 = r3399023 * r3399024;
        double r3399026 = r3399020 + r3399025;
        double r3399027 = r3399022 / r3399026;
        double r3399028 = 2.0;
        double r3399029 = r3399026 + r3399028;
        double r3399030 = r3399027 / r3399029;
        double r3399031 = 1.0;
        double r3399032 = r3399030 + r3399031;
        double r3399033 = r3399032 / r3399028;
        return r3399033;
}

double f(double alpha, double beta, double i) {
        double r3399034 = beta;
        double r3399035 = alpha;
        double r3399036 = r3399034 - r3399035;
        double r3399037 = 1.0;
        double r3399038 = 2.0;
        double r3399039 = i;
        double r3399040 = r3399035 + r3399034;
        double r3399041 = fma(r3399038, r3399039, r3399040);
        double r3399042 = 2.0;
        double r3399043 = r3399041 + r3399042;
        double r3399044 = r3399037 / r3399043;
        double r3399045 = r3399036 * r3399044;
        double r3399046 = r3399040 / r3399041;
        double r3399047 = 1.0;
        double r3399048 = fma(r3399045, r3399046, r3399047);
        double r3399049 = log(r3399048);
        double r3399050 = exp(r3399049);
        double r3399051 = r3399050 / r3399042;
        return r3399051;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 23.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.0} + 1.0}{2.0}\]
  2. Simplified19.2

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2.0, \mathsf{fma}\left(2, i, \beta + \alpha\right), \mathsf{fma}\left(2, i, \beta + \alpha\right) \cdot \mathsf{fma}\left(2, i, \beta + \alpha\right)\right)}, \beta + \alpha, 1.0\right)}{2.0}}\]
  3. Using strategy rm
  4. Applied fma-udef19.3

    \[\leadsto \frac{\color{blue}{\frac{\beta - \alpha}{\mathsf{fma}\left(2.0, \mathsf{fma}\left(2, i, \beta + \alpha\right), \mathsf{fma}\left(2, i, \beta + \alpha\right) \cdot \mathsf{fma}\left(2, i, \beta + \alpha\right)\right)} \cdot \left(\beta + \alpha\right) + 1.0}}{2.0}\]
  5. Simplified12.1

    \[\leadsto \frac{\color{blue}{\frac{\beta + \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)} \cdot \frac{\beta - \alpha}{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)}} + 1.0}{2.0}\]
  6. Using strategy rm
  7. Applied add-exp-log12.1

    \[\leadsto \frac{\color{blue}{e^{\log \left(\frac{\beta + \alpha}{\mathsf{fma}\left(i, 2, \beta + \alpha\right)} \cdot \frac{\beta - \alpha}{2.0 + \mathsf{fma}\left(i, 2, \beta + \alpha\right)} + 1.0\right)}}}{2.0}\]
  8. Simplified12.1

    \[\leadsto \frac{e^{\color{blue}{\log \left(\mathsf{fma}\left(\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \beta + \alpha\right) + 2.0}, \frac{\beta + \alpha}{\mathsf{fma}\left(2, i, \beta + \alpha\right)}, 1.0\right)\right)}}}{2.0}\]
  9. Using strategy rm
  10. Applied div-inv12.1

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

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

Reproduce

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