Average Error: 0.2 → 0.2
Time: 10.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 r194018 = a;
        double r194019 = r194018 * r194018;
        double r194020 = b;
        double r194021 = r194020 * r194020;
        double r194022 = r194019 + r194021;
        double r194023 = 2.0;
        double r194024 = pow(r194022, r194023);
        double r194025 = 4.0;
        double r194026 = 1.0;
        double r194027 = r194026 + r194018;
        double r194028 = r194019 * r194027;
        double r194029 = 3.0;
        double r194030 = r194029 * r194018;
        double r194031 = r194026 - r194030;
        double r194032 = r194021 * r194031;
        double r194033 = r194028 + r194032;
        double r194034 = r194025 * r194033;
        double r194035 = r194024 + r194034;
        double r194036 = r194035 - r194026;
        return r194036;
}

double f(double a, double b) {
        double r194037 = 4.0;
        double r194038 = a;
        double r194039 = r194038 * r194038;
        double r194040 = 1.0;
        double r194041 = r194040 + r194038;
        double r194042 = r194039 * r194041;
        double r194043 = b;
        double r194044 = r194043 * r194043;
        double r194045 = 3.0;
        double r194046 = r194045 * r194038;
        double r194047 = r194040 - r194046;
        double r194048 = r194044 * r194047;
        double r194049 = r194042 + r194048;
        double r194050 = r194037 * r194049;
        double r194051 = r194039 + r194044;
        double r194052 = 2.0;
        double r194053 = pow(r194051, r194052);
        double r194054 = r194050 + r194053;
        double r194055 = r194054 - r194040;
        return r194055;
}

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