Average Error: 0.2 → 0.0
Time: 8.6s
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({1}^{2} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\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\]
\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({1}^{2} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\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
double f(double a, double b) {
        double r119598 = a;
        double r119599 = r119598 * r119598;
        double r119600 = b;
        double r119601 = r119600 * r119600;
        double r119602 = r119599 + r119601;
        double r119603 = 2.0;
        double r119604 = pow(r119602, r119603);
        double r119605 = 4.0;
        double r119606 = 1.0;
        double r119607 = r119606 + r119598;
        double r119608 = r119599 * r119607;
        double r119609 = 3.0;
        double r119610 = r119609 * r119598;
        double r119611 = r119606 - r119610;
        double r119612 = r119601 * r119611;
        double r119613 = r119608 + r119612;
        double r119614 = r119605 * r119613;
        double r119615 = r119604 + r119614;
        double r119616 = r119615 - r119606;
        return r119616;
}

double f(double a, double b) {
        double r119617 = 1.0;
        double r119618 = 2.0;
        double r119619 = pow(r119617, r119618);
        double r119620 = a;
        double r119621 = b;
        double r119622 = hypot(r119620, r119621);
        double r119623 = 2.0;
        double r119624 = r119623 * r119618;
        double r119625 = pow(r119622, r119624);
        double r119626 = r119619 * r119625;
        double r119627 = 4.0;
        double r119628 = r119620 * r119620;
        double r119629 = 1.0;
        double r119630 = r119629 + r119620;
        double r119631 = r119628 * r119630;
        double r119632 = r119621 * r119621;
        double r119633 = 3.0;
        double r119634 = r119633 * r119620;
        double r119635 = r119629 - r119634;
        double r119636 = r119632 * r119635;
        double r119637 = r119631 + r119636;
        double r119638 = r119627 * r119637;
        double r119639 = r119626 + r119638;
        double r119640 = r119639 - r119629;
        return r119640;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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. Simplified0.2

    \[\leadsto \left(\color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\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\]
  6. Simplified0.2

    \[\leadsto \left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{2} \cdot \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\]
  7. Using strategy rm
  8. Applied *-un-lft-identity0.2

    \[\leadsto \left({\color{blue}{\left(1 \cdot \mathsf{hypot}\left(a, b\right)\right)}}^{2} \cdot {\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\]
  9. Applied unpow-prod-down0.2

    \[\leadsto \left(\color{blue}{\left({1}^{2} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}\right)} \cdot {\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\]
  10. Applied associate-*l*0.2

    \[\leadsto \left(\color{blue}{{1}^{2} \cdot \left({\left(\mathsf{hypot}\left(a, b\right)\right)}^{2} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{2}\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. Simplified0.0

    \[\leadsto \left({1}^{2} \cdot \color{blue}{{\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\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\]
  12. Final simplification0.0

    \[\leadsto \left({1}^{2} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot 2\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\]

Reproduce

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