Average Error: 0.2 → 0.2
Time: 24.0s
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(\left(a + 1\right) \cdot \left(a \cdot a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4 + {\left(b \cdot b + a \cdot a\right)}^{2}\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(\left(a + 1\right) \cdot \left(a \cdot a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4 + {\left(b \cdot b + a \cdot a\right)}^{2}\right) - 1
double f(double a, double b) {
        double r120650 = a;
        double r120651 = r120650 * r120650;
        double r120652 = b;
        double r120653 = r120652 * r120652;
        double r120654 = r120651 + r120653;
        double r120655 = 2.0;
        double r120656 = pow(r120654, r120655);
        double r120657 = 4.0;
        double r120658 = 1.0;
        double r120659 = r120658 + r120650;
        double r120660 = r120651 * r120659;
        double r120661 = 3.0;
        double r120662 = r120661 * r120650;
        double r120663 = r120658 - r120662;
        double r120664 = r120653 * r120663;
        double r120665 = r120660 + r120664;
        double r120666 = r120657 * r120665;
        double r120667 = r120656 + r120666;
        double r120668 = r120667 - r120658;
        return r120668;
}

double f(double a, double b) {
        double r120669 = a;
        double r120670 = 1.0;
        double r120671 = r120669 + r120670;
        double r120672 = r120669 * r120669;
        double r120673 = r120671 * r120672;
        double r120674 = b;
        double r120675 = r120674 * r120674;
        double r120676 = 3.0;
        double r120677 = r120676 * r120669;
        double r120678 = r120670 - r120677;
        double r120679 = r120675 * r120678;
        double r120680 = r120673 + r120679;
        double r120681 = 4.0;
        double r120682 = r120680 * r120681;
        double r120683 = r120675 + r120672;
        double r120684 = 2.0;
        double r120685 = pow(r120683, r120684);
        double r120686 = r120682 + r120685;
        double r120687 = r120686 - r120670;
        return r120687;
}

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 +-commutative0.2

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

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

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))