Average Error: 0.2 → 0.1
Time: 23.9s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left({a}^{4}\right)\right)\right)\right) + 4 \cdot \left(\left(1 - a \cdot 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 + a\right)\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
\left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left({a}^{4}\right)\right)\right)\right) + 4 \cdot \left(\left(1 - a \cdot 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r7650744 = a;
        double r7650745 = r7650744 * r7650744;
        double r7650746 = b;
        double r7650747 = r7650746 * r7650746;
        double r7650748 = r7650745 + r7650747;
        double r7650749 = 2.0;
        double r7650750 = pow(r7650748, r7650749);
        double r7650751 = 4.0;
        double r7650752 = 1.0;
        double r7650753 = r7650752 + r7650744;
        double r7650754 = r7650745 * r7650753;
        double r7650755 = 3.0;
        double r7650756 = r7650755 * r7650744;
        double r7650757 = r7650752 - r7650756;
        double r7650758 = r7650747 * r7650757;
        double r7650759 = r7650754 + r7650758;
        double r7650760 = r7650751 * r7650759;
        double r7650761 = r7650750 + r7650760;
        double r7650762 = r7650761 - r7650752;
        return r7650762;
}

double f(double a, double b) {
        double r7650763 = b;
        double r7650764 = r7650763 * r7650763;
        double r7650765 = a;
        double r7650766 = r7650765 * r7650765;
        double r7650767 = r7650766 * r7650764;
        double r7650768 = 2.0;
        double r7650769 = 4.0;
        double r7650770 = pow(r7650765, r7650769);
        double r7650771 = fma(r7650767, r7650768, r7650770);
        double r7650772 = fma(r7650764, r7650764, r7650771);
        double r7650773 = 1.0;
        double r7650774 = 3.0;
        double r7650775 = r7650765 * r7650774;
        double r7650776 = r7650773 - r7650775;
        double r7650777 = r7650776 * r7650764;
        double r7650778 = r7650773 + r7650765;
        double r7650779 = r7650766 * r7650778;
        double r7650780 = r7650777 + r7650779;
        double r7650781 = r7650769 * r7650780;
        double r7650782 = r7650772 + r7650781;
        double r7650783 = r7650782 - r7650773;
        return r7650783;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 0.2

    \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  2. Taylor expanded around inf 0.0

    \[\leadsto \left(\color{blue}{\left({b}^{4} + \left({a}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right)} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  3. Simplified0.2

    \[\leadsto \left(\color{blue}{\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left(\left(a \cdot a\right) \cdot \left(a \cdot a\right)\right)\right)\right)\right)} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  4. Using strategy rm
  5. Applied pow10.2

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left(\left(a \cdot a\right) \cdot \left(a \cdot \color{blue}{{a}^{1}}\right)\right)\right)\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  6. Applied pow10.2

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left(\left(a \cdot a\right) \cdot \left(\color{blue}{{a}^{1}} \cdot {a}^{1}\right)\right)\right)\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  7. Applied pow-prod-up0.2

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left(\left(a \cdot a\right) \cdot \color{blue}{{a}^{\left(1 + 1\right)}}\right)\right)\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  8. Applied pow20.2

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left(\color{blue}{{a}^{2}} \cdot {a}^{\left(1 + 1\right)}\right)\right)\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  9. Applied pow-prod-up0.1

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \color{blue}{\left({a}^{\left(2 + \left(1 + 1\right)\right)}\right)}\right)\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  10. Simplified0.1

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left({a}^{\color{blue}{4}}\right)\right)\right)\right) + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  11. Final simplification0.1

    \[\leadsto \left(\mathsf{fma}\left(\left(b \cdot b\right), \left(b \cdot b\right), \left(\mathsf{fma}\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right), 2, \left({a}^{4}\right)\right)\right)\right) + 4 \cdot \left(\left(1 - a \cdot 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 + a\right)\right)\right) - 1\]

Reproduce

herbie shell --seed 2019132 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))