Average Error: 0.2 → 0.2
Time: 29.4s
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 r150158 = a;
        double r150159 = r150158 * r150158;
        double r150160 = b;
        double r150161 = r150160 * r150160;
        double r150162 = r150159 + r150161;
        double r150163 = 2.0;
        double r150164 = pow(r150162, r150163);
        double r150165 = 4.0;
        double r150166 = 1.0;
        double r150167 = r150166 + r150158;
        double r150168 = r150159 * r150167;
        double r150169 = 3.0;
        double r150170 = r150169 * r150158;
        double r150171 = r150166 - r150170;
        double r150172 = r150161 * r150171;
        double r150173 = r150168 + r150172;
        double r150174 = r150165 * r150173;
        double r150175 = r150164 + r150174;
        double r150176 = r150175 - r150166;
        return r150176;
}

double f(double a, double b) {
        double r150177 = a;
        double r150178 = r150177 * r150177;
        double r150179 = b;
        double r150180 = r150179 * r150179;
        double r150181 = r150178 + r150180;
        double r150182 = 2.0;
        double r150183 = pow(r150181, r150182);
        double r150184 = 4.0;
        double r150185 = 1.0;
        double r150186 = r150185 + r150177;
        double r150187 = r150178 * r150186;
        double r150188 = 3.0;
        double r150189 = r150188 * r150177;
        double r150190 = r150185 - r150189;
        double r150191 = r150180 * r150190;
        double r150192 = r150187 + r150191;
        double r150193 = r150184 * r150192;
        double r150194 = r150183 + r150193;
        double r150195 = r150194 - r150185;
        return r150195;
}

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 2019306 +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))