Average Error: 0.2 → 0.2
Time: 1.0m
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\]
\[\mathsf{fma}\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}, {\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}, 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right) + \sqrt[3]{a + 1} \cdot \left(\left(a \cdot a\right) \cdot \left(\sqrt[3]{a + 1} \cdot \sqrt[3]{a + 1}\right)\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
\mathsf{fma}\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}, {\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}, 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right) + \sqrt[3]{a + 1} \cdot \left(\left(a \cdot a\right) \cdot \left(\sqrt[3]{a + 1} \cdot \sqrt[3]{a + 1}\right)\right)\right)\right) - 1
double f(double a, double b) {
        double r6267522 = a;
        double r6267523 = r6267522 * r6267522;
        double r6267524 = b;
        double r6267525 = r6267524 * r6267524;
        double r6267526 = r6267523 + r6267525;
        double r6267527 = 2.0;
        double r6267528 = pow(r6267526, r6267527);
        double r6267529 = 4.0;
        double r6267530 = 1.0;
        double r6267531 = r6267530 + r6267522;
        double r6267532 = r6267523 * r6267531;
        double r6267533 = 3.0;
        double r6267534 = r6267533 * r6267522;
        double r6267535 = r6267530 - r6267534;
        double r6267536 = r6267525 * r6267535;
        double r6267537 = r6267532 + r6267536;
        double r6267538 = r6267529 * r6267537;
        double r6267539 = r6267528 + r6267538;
        double r6267540 = r6267539 - r6267530;
        return r6267540;
}

double f(double a, double b) {
        double r6267541 = a;
        double r6267542 = r6267541 * r6267541;
        double r6267543 = b;
        double r6267544 = r6267543 * r6267543;
        double r6267545 = r6267542 + r6267544;
        double r6267546 = sqrt(r6267545);
        double r6267547 = 2.0;
        double r6267548 = pow(r6267546, r6267547);
        double r6267549 = hypot(r6267541, r6267543);
        double r6267550 = pow(r6267549, r6267547);
        double r6267551 = 4.0;
        double r6267552 = 1.0;
        double r6267553 = 3.0;
        double r6267554 = r6267541 * r6267553;
        double r6267555 = r6267552 - r6267554;
        double r6267556 = r6267544 * r6267555;
        double r6267557 = r6267541 + r6267552;
        double r6267558 = cbrt(r6267557);
        double r6267559 = r6267558 * r6267558;
        double r6267560 = r6267542 * r6267559;
        double r6267561 = r6267558 * r6267560;
        double r6267562 = r6267556 + r6267561;
        double r6267563 = r6267551 * r6267562;
        double r6267564 = fma(r6267548, r6267550, r6267563);
        double r6267565 = r6267564 - r6267552;
        return r6267565;
}

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. Using strategy rm
  3. Applied add-sqr-sqrt0.2

    \[\leadsto \left({\color{blue}{\left(\sqrt{a \cdot a + b \cdot b} \cdot \sqrt{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\]
  4. Applied unpow-prod-down0.2

    \[\leadsto \left(\color{blue}{{\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2} \cdot {\left(\sqrt{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\]
  5. Applied fma-def0.2

    \[\leadsto \color{blue}{\mathsf{fma}\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}, {\left(\sqrt{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\]
  6. Using strategy rm
  7. Applied hypot-def0.2

    \[\leadsto \mathsf{fma}\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}, {\color{blue}{\left(\mathsf{hypot}\left(a, b\right)\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\]
  8. Using strategy rm
  9. Applied add-cube-cbrt0.2

    \[\leadsto \mathsf{fma}\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}, {\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}, 4 \cdot \left(\left(a \cdot a\right) \cdot \color{blue}{\left(\left(\sqrt[3]{1 + a} \cdot \sqrt[3]{1 + a}\right) \cdot \sqrt[3]{1 + a}\right)} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  10. Applied associate-*r*0.2

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

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

Reproduce

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