Average Error: 0.2 → 0.2
Time: 11.3s
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(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\]
\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(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
double f(double a, double b) {
        double r109666 = a;
        double r109667 = r109666 * r109666;
        double r109668 = b;
        double r109669 = r109668 * r109668;
        double r109670 = r109667 + r109669;
        double r109671 = 2.0;
        double r109672 = pow(r109670, r109671);
        double r109673 = 4.0;
        double r109674 = 1.0;
        double r109675 = r109674 + r109666;
        double r109676 = r109667 * r109675;
        double r109677 = 3.0;
        double r109678 = r109677 * r109666;
        double r109679 = r109674 - r109678;
        double r109680 = r109669 * r109679;
        double r109681 = r109676 + r109680;
        double r109682 = r109673 * r109681;
        double r109683 = r109672 + r109682;
        double r109684 = r109683 - r109674;
        return r109684;
}

double f(double a, double b) {
        double r109685 = 4.0;
        double r109686 = a;
        double r109687 = r109686 * r109686;
        double r109688 = 1.0;
        double r109689 = r109688 + r109686;
        double r109690 = r109687 * r109689;
        double r109691 = b;
        double r109692 = r109691 * r109691;
        double r109693 = 3.0;
        double r109694 = r109693 * r109686;
        double r109695 = r109688 - r109694;
        double r109696 = r109692 * r109695;
        double r109697 = r109690 + r109696;
        double r109698 = r109685 * r109697;
        double r109699 = r109687 + r109692;
        double r109700 = 2.0;
        double r109701 = pow(r109699, r109700);
        double r109702 = r109698 + r109701;
        double r109703 = r109702 - r109688;
        return r109703;
}

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(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\]

Reproduce

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