Average Error: 0.2 → 0.2
Time: 6.7s
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 r140761 = a;
        double r140762 = r140761 * r140761;
        double r140763 = b;
        double r140764 = r140763 * r140763;
        double r140765 = r140762 + r140764;
        double r140766 = 2.0;
        double r140767 = pow(r140765, r140766);
        double r140768 = 4.0;
        double r140769 = 1.0;
        double r140770 = r140769 + r140761;
        double r140771 = r140762 * r140770;
        double r140772 = 3.0;
        double r140773 = r140772 * r140761;
        double r140774 = r140769 - r140773;
        double r140775 = r140764 * r140774;
        double r140776 = r140771 + r140775;
        double r140777 = r140768 * r140776;
        double r140778 = r140767 + r140777;
        double r140779 = r140778 - r140769;
        return r140779;
}

double f(double a, double b) {
        double r140780 = a;
        double r140781 = r140780 * r140780;
        double r140782 = b;
        double r140783 = r140782 * r140782;
        double r140784 = r140781 + r140783;
        double r140785 = 2.0;
        double r140786 = pow(r140784, r140785);
        double r140787 = 4.0;
        double r140788 = 1.0;
        double r140789 = r140788 + r140780;
        double r140790 = r140781 * r140789;
        double r140791 = 3.0;
        double r140792 = r140791 * r140780;
        double r140793 = r140788 - r140792;
        double r140794 = r140783 * r140793;
        double r140795 = r140790 + r140794;
        double r140796 = r140787 * r140795;
        double r140797 = r140786 + r140796;
        double r140798 = r140797 - r140788;
        return r140798;
}

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 2019354 
(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))