Average Error: 0.2 → 0.2
Time: 20.2s
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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r3362113 = a;
        double r3362114 = r3362113 * r3362113;
        double r3362115 = b;
        double r3362116 = r3362115 * r3362115;
        double r3362117 = r3362114 + r3362116;
        double r3362118 = 2.0;
        double r3362119 = pow(r3362117, r3362118);
        double r3362120 = 4.0;
        double r3362121 = 1.0;
        double r3362122 = r3362121 + r3362113;
        double r3362123 = r3362114 * r3362122;
        double r3362124 = 3.0;
        double r3362125 = r3362124 * r3362113;
        double r3362126 = r3362121 - r3362125;
        double r3362127 = r3362116 * r3362126;
        double r3362128 = r3362123 + r3362127;
        double r3362129 = r3362120 * r3362128;
        double r3362130 = r3362119 + r3362129;
        double r3362131 = r3362130 - r3362121;
        return r3362131;
}

double f(double a, double b) {
        double r3362132 = a;
        double r3362133 = r3362132 * r3362132;
        double r3362134 = b;
        double r3362135 = r3362134 * r3362134;
        double r3362136 = r3362133 + r3362135;
        double r3362137 = 2.0;
        double r3362138 = pow(r3362136, r3362137);
        double r3362139 = 1.0;
        double r3362140 = r3362132 + r3362139;
        double r3362141 = r3362133 * r3362140;
        double r3362142 = 3.0;
        double r3362143 = r3362142 * r3362132;
        double r3362144 = r3362139 - r3362143;
        double r3362145 = r3362135 * r3362144;
        double r3362146 = r3362141 + r3362145;
        double r3362147 = 4.0;
        double r3362148 = r3362146 * r3362147;
        double r3362149 = r3362138 + r3362148;
        double r3362150 = r3362149 - r3362139;
        return r3362150;
}

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} + \left(\left(a \cdot a\right) \cdot \left(a + 1\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1\]

Reproduce

herbie shell --seed 2019128 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))