Average Error: 0.2 → 0.2
Time: 19.9s
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(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(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(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r212646 = a;
        double r212647 = r212646 * r212646;
        double r212648 = b;
        double r212649 = r212648 * r212648;
        double r212650 = r212647 + r212649;
        double r212651 = 2.0;
        double r212652 = pow(r212650, r212651);
        double r212653 = 4.0;
        double r212654 = 1.0;
        double r212655 = r212654 - r212646;
        double r212656 = r212647 * r212655;
        double r212657 = 3.0;
        double r212658 = r212657 + r212646;
        double r212659 = r212649 * r212658;
        double r212660 = r212656 + r212659;
        double r212661 = r212653 * r212660;
        double r212662 = r212652 + r212661;
        double r212663 = r212662 - r212654;
        return r212663;
}

double f(double a, double b) {
        double r212664 = a;
        double r212665 = r212664 * r212664;
        double r212666 = b;
        double r212667 = r212666 * r212666;
        double r212668 = r212665 + r212667;
        double r212669 = 2.0;
        double r212670 = pow(r212668, r212669);
        double r212671 = 4.0;
        double r212672 = 1.0;
        double r212673 = r212672 - r212664;
        double r212674 = r212665 * r212673;
        double r212675 = 3.0;
        double r212676 = r212675 + r212664;
        double r212677 = r212667 * r212676;
        double r212678 = r212674 + r212677;
        double r212679 = r212671 * r212678;
        double r212680 = r212670 + r212679;
        double r212681 = r212680 - r212672;
        return r212681;
}

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. 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(3 + a\right)\right)\right) - 1\]

Reproduce

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