Average Error: 0.2 → 0.1
Time: 22.8s
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 r3048659 = a;
        double r3048660 = r3048659 * r3048659;
        double r3048661 = b;
        double r3048662 = r3048661 * r3048661;
        double r3048663 = r3048660 + r3048662;
        double r3048664 = 2.0;
        double r3048665 = pow(r3048663, r3048664);
        double r3048666 = 4.0;
        double r3048667 = 1.0;
        double r3048668 = r3048667 + r3048659;
        double r3048669 = r3048660 * r3048668;
        double r3048670 = 3.0;
        double r3048671 = r3048670 * r3048659;
        double r3048672 = r3048667 - r3048671;
        double r3048673 = r3048662 * r3048672;
        double r3048674 = r3048669 + r3048673;
        double r3048675 = r3048666 * r3048674;
        double r3048676 = r3048665 + r3048675;
        double r3048677 = r3048676 - r3048667;
        return r3048677;
}

double f(double a, double b) {
        double r3048678 = b;
        double r3048679 = r3048678 * r3048678;
        double r3048680 = a;
        double r3048681 = r3048680 * r3048680;
        double r3048682 = r3048681 * r3048679;
        double r3048683 = 2.0;
        double r3048684 = 4.0;
        double r3048685 = pow(r3048680, r3048684);
        double r3048686 = fma(r3048682, r3048683, r3048685);
        double r3048687 = fma(r3048679, r3048679, r3048686);
        double r3048688 = 1.0;
        double r3048689 = 3.0;
        double r3048690 = r3048680 * r3048689;
        double r3048691 = r3048688 - r3048690;
        double r3048692 = r3048691 * r3048679;
        double r3048693 = r3048688 + r3048680;
        double r3048694 = r3048681 * r3048693;
        double r3048695 = r3048692 + r3048694;
        double r3048696 = r3048684 * r3048695;
        double r3048697 = r3048687 + r3048696;
        double r3048698 = r3048697 - r3048688;
        return r3048698;
}

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 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(\left(a \cdot a\right) \cdot \color{blue}{{a}^{2}}\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 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}^{2}\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.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 + 2\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. 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\]
  9. 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))