Average Error: 0.2 → 0.1
Time: 50.4s
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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right)\right) - 1
double f(double a, double b) {
        double r18850512 = a;
        double r18850513 = r18850512 * r18850512;
        double r18850514 = b;
        double r18850515 = r18850514 * r18850514;
        double r18850516 = r18850513 + r18850515;
        double r18850517 = 2.0;
        double r18850518 = pow(r18850516, r18850517);
        double r18850519 = 4.0;
        double r18850520 = 1.0;
        double r18850521 = r18850520 + r18850512;
        double r18850522 = r18850513 * r18850521;
        double r18850523 = 3.0;
        double r18850524 = r18850523 * r18850512;
        double r18850525 = r18850520 - r18850524;
        double r18850526 = r18850515 * r18850525;
        double r18850527 = r18850522 + r18850526;
        double r18850528 = r18850519 * r18850527;
        double r18850529 = r18850518 + r18850528;
        double r18850530 = r18850529 - r18850520;
        return r18850530;
}

double f(double a, double b) {
        double r18850531 = 4.0;
        double r18850532 = a;
        double r18850533 = r18850532 * r18850532;
        double r18850534 = 1.0;
        double r18850535 = r18850534 + r18850532;
        double r18850536 = r18850533 * r18850535;
        double r18850537 = b;
        double r18850538 = r18850537 * r18850537;
        double r18850539 = 3.0;
        double r18850540 = r18850532 * r18850539;
        double r18850541 = r18850534 - r18850540;
        double r18850542 = r18850538 * r18850541;
        double r18850543 = r18850536 + r18850542;
        double r18850544 = r18850531 * r18850543;
        double r18850545 = 2.0;
        double r18850546 = r18850533 * r18850545;
        double r18850547 = fma(r18850537, r18850537, r18850546);
        double r18850548 = r18850547 * r18850537;
        double r18850549 = pow(r18850532, r18850531);
        double r18850550 = fma(r18850537, r18850548, r18850549);
        double r18850551 = r18850544 + r18850550;
        double r18850552 = r18850551 - r18850534;
        return r18850552;
}

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 0 0.0

    \[\leadsto \left(\color{blue}{\left({b}^{4} + \left(2 \cdot \left({a}^{2} \cdot {b}^{2}\right) + {a}^{4}\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left(\left(a \cdot a\right) \cdot \left(a \cdot a\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left(\left(a \cdot a\right) \cdot \left(a \cdot \color{blue}{{a}^{1}}\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left(\left(a \cdot a\right) \cdot \left(\color{blue}{{a}^{1}} \cdot {a}^{1}\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left(\left(a \cdot a\right) \cdot \color{blue}{{a}^{\left(1 + 1\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left(\color{blue}{{a}^{2}} \cdot {a}^{\left(1 + 1\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \color{blue}{\left({a}^{\left(2 + \left(1 + 1\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(b, \left(b \cdot \mathsf{fma}\left(b, b, \left(2 \cdot \left(a \cdot a\right)\right)\right)\right), \left({a}^{\color{blue}{4}}\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + \mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right)\right) - 1\]

Reproduce

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