Average Error: 0.2 → 0.2
Time: 17.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({\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({\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({\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
double f(double a, double b) {
        double r96611 = a;
        double r96612 = r96611 * r96611;
        double r96613 = b;
        double r96614 = r96613 * r96613;
        double r96615 = r96612 + r96614;
        double r96616 = 2.0;
        double r96617 = pow(r96615, r96616);
        double r96618 = 4.0;
        double r96619 = 1.0;
        double r96620 = r96619 + r96611;
        double r96621 = r96612 * r96620;
        double r96622 = 3.0;
        double r96623 = r96622 * r96611;
        double r96624 = r96619 - r96623;
        double r96625 = r96614 * r96624;
        double r96626 = r96621 + r96625;
        double r96627 = r96618 * r96626;
        double r96628 = r96617 + r96627;
        double r96629 = r96628 - r96619;
        return r96629;
}

double f(double a, double b) {
        double r96630 = a;
        double r96631 = r96630 * r96630;
        double r96632 = b;
        double r96633 = r96632 * r96632;
        double r96634 = r96631 + r96633;
        double r96635 = 2.0;
        double r96636 = pow(r96634, r96635);
        double r96637 = 4.0;
        double r96638 = 1.0;
        double r96639 = r96638 + r96630;
        double r96640 = r96631 * r96639;
        double r96641 = 3.0;
        double r96642 = r96641 * r96630;
        double r96643 = r96638 - r96642;
        double r96644 = r96633 * r96643;
        double r96645 = r96640 + r96644;
        double r96646 = r96637 * r96645;
        double r96647 = r96636 + r96646;
        double r96648 = r96647 - r96638;
        return r96648;
}

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. Final simplification0.2

    \[\leadsto \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\]

Reproduce

herbie shell --seed 2019294 
(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))