Average Error: 0.2 → 0.2
Time: 17.1s
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(1 + a\right) \cdot {a}^{2} + \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(1 + a\right) \cdot {a}^{2} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r165997 = a;
        double r165998 = r165997 * r165997;
        double r165999 = b;
        double r166000 = r165999 * r165999;
        double r166001 = r165998 + r166000;
        double r166002 = 2.0;
        double r166003 = pow(r166001, r166002);
        double r166004 = 4.0;
        double r166005 = 1.0;
        double r166006 = r166005 + r165997;
        double r166007 = r165998 * r166006;
        double r166008 = 3.0;
        double r166009 = r166008 * r165997;
        double r166010 = r166005 - r166009;
        double r166011 = r166000 * r166010;
        double r166012 = r166007 + r166011;
        double r166013 = r166004 * r166012;
        double r166014 = r166003 + r166013;
        double r166015 = r166014 - r166005;
        return r166015;
}

double f(double a, double b) {
        double r166016 = a;
        double r166017 = r166016 * r166016;
        double r166018 = b;
        double r166019 = r166018 * r166018;
        double r166020 = r166017 + r166019;
        double r166021 = 2.0;
        double r166022 = pow(r166020, r166021);
        double r166023 = 4.0;
        double r166024 = 1.0;
        double r166025 = r166024 + r166016;
        double r166026 = 2.0;
        double r166027 = pow(r166016, r166026);
        double r166028 = r166025 * r166027;
        double r166029 = 3.0;
        double r166030 = r166029 * r166016;
        double r166031 = r166024 - r166030;
        double r166032 = r166019 * r166031;
        double r166033 = r166028 + r166032;
        double r166034 = r166023 * r166033;
        double r166035 = r166022 + r166034;
        double r166036 = r166035 - r166024;
        return r166036;
}

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. Taylor expanded around 0 0.2

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

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

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

Reproduce

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