Average Error: 0.2 → 0.2
Time: 20.1s
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(3 + a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(1 \cdot \left(a \cdot a\right) + \left(-{a}^{3}\right)\right) + \left(b \cdot b\right) \cdot \left(3 + 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(3 + a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(1 \cdot \left(a \cdot a\right) + \left(-{a}^{3}\right)\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r208591 = a;
        double r208592 = r208591 * r208591;
        double r208593 = b;
        double r208594 = r208593 * r208593;
        double r208595 = r208592 + r208594;
        double r208596 = 2.0;
        double r208597 = pow(r208595, r208596);
        double r208598 = 4.0;
        double r208599 = 1.0;
        double r208600 = r208599 - r208591;
        double r208601 = r208592 * r208600;
        double r208602 = 3.0;
        double r208603 = r208602 + r208591;
        double r208604 = r208594 * r208603;
        double r208605 = r208601 + r208604;
        double r208606 = r208598 * r208605;
        double r208607 = r208597 + r208606;
        double r208608 = r208607 - r208599;
        return r208608;
}

double f(double a, double b) {
        double r208609 = a;
        double r208610 = r208609 * r208609;
        double r208611 = b;
        double r208612 = r208611 * r208611;
        double r208613 = r208610 + r208612;
        double r208614 = 2.0;
        double r208615 = pow(r208613, r208614);
        double r208616 = 4.0;
        double r208617 = 1.0;
        double r208618 = r208617 * r208610;
        double r208619 = 3.0;
        double r208620 = pow(r208609, r208619);
        double r208621 = -r208620;
        double r208622 = r208618 + r208621;
        double r208623 = 3.0;
        double r208624 = r208623 + r208609;
        double r208625 = r208612 * r208624;
        double r208626 = r208622 + r208625;
        double r208627 = r208616 * r208626;
        double r208628 = r208615 + r208627;
        double r208629 = r208628 - r208617;
        return r208629;
}

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(3 + a\right)\right)\right) - 1\]
  2. Using strategy rm
  3. Applied sub-neg0.2

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

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

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

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

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

Reproduce

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