Average Error: 0.2 → 0.2
Time: 6.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({\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 r332197 = a;
        double r332198 = r332197 * r332197;
        double r332199 = b;
        double r332200 = r332199 * r332199;
        double r332201 = r332198 + r332200;
        double r332202 = 2.0;
        double r332203 = pow(r332201, r332202);
        double r332204 = 4.0;
        double r332205 = 1.0;
        double r332206 = r332205 + r332197;
        double r332207 = r332198 * r332206;
        double r332208 = 3.0;
        double r332209 = r332208 * r332197;
        double r332210 = r332205 - r332209;
        double r332211 = r332200 * r332210;
        double r332212 = r332207 + r332211;
        double r332213 = r332204 * r332212;
        double r332214 = r332203 + r332213;
        double r332215 = r332214 - r332205;
        return r332215;
}

double f(double a, double b) {
        double r332216 = a;
        double r332217 = r332216 * r332216;
        double r332218 = b;
        double r332219 = r332218 * r332218;
        double r332220 = r332217 + r332219;
        double r332221 = 2.0;
        double r332222 = pow(r332220, r332221);
        double r332223 = 4.0;
        double r332224 = 1.0;
        double r332225 = r332224 + r332216;
        double r332226 = r332217 * r332225;
        double r332227 = 3.0;
        double r332228 = r332227 * r332216;
        double r332229 = r332224 - r332228;
        double r332230 = r332219 * r332229;
        double r332231 = r332226 + r332230;
        double r332232 = r332223 * r332231;
        double r332233 = r332222 + r332232;
        double r332234 = r332233 - r332224;
        return r332234;
}

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 2020056 +o rules:numerics
(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))