Average Error: 0.2 → 0.2
Time: 6.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 r198640 = a;
        double r198641 = r198640 * r198640;
        double r198642 = b;
        double r198643 = r198642 * r198642;
        double r198644 = r198641 + r198643;
        double r198645 = 2.0;
        double r198646 = pow(r198644, r198645);
        double r198647 = 4.0;
        double r198648 = 1.0;
        double r198649 = r198648 + r198640;
        double r198650 = r198641 * r198649;
        double r198651 = 3.0;
        double r198652 = r198651 * r198640;
        double r198653 = r198648 - r198652;
        double r198654 = r198643 * r198653;
        double r198655 = r198650 + r198654;
        double r198656 = r198647 * r198655;
        double r198657 = r198646 + r198656;
        double r198658 = r198657 - r198648;
        return r198658;
}

double f(double a, double b) {
        double r198659 = a;
        double r198660 = r198659 * r198659;
        double r198661 = b;
        double r198662 = r198661 * r198661;
        double r198663 = r198660 + r198662;
        double r198664 = 2.0;
        double r198665 = pow(r198663, r198664);
        double r198666 = 4.0;
        double r198667 = 1.0;
        double r198668 = r198667 + r198659;
        double r198669 = r198660 * r198668;
        double r198670 = 3.0;
        double r198671 = r198670 * r198659;
        double r198672 = r198667 - r198671;
        double r198673 = r198662 * r198672;
        double r198674 = r198669 + r198673;
        double r198675 = r198666 * r198674;
        double r198676 = r198665 + r198675;
        double r198677 = r198676 - r198667;
        return r198677;
}

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