Average Error: 0.2 → 0.2
Time: 10.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(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 r258205 = a;
        double r258206 = r258205 * r258205;
        double r258207 = b;
        double r258208 = r258207 * r258207;
        double r258209 = r258206 + r258208;
        double r258210 = 2.0;
        double r258211 = pow(r258209, r258210);
        double r258212 = 4.0;
        double r258213 = 1.0;
        double r258214 = r258213 + r258205;
        double r258215 = r258206 * r258214;
        double r258216 = 3.0;
        double r258217 = r258216 * r258205;
        double r258218 = r258213 - r258217;
        double r258219 = r258208 * r258218;
        double r258220 = r258215 + r258219;
        double r258221 = r258212 * r258220;
        double r258222 = r258211 + r258221;
        double r258223 = r258222 - r258213;
        return r258223;
}

double f(double a, double b) {
        double r258224 = 4.0;
        double r258225 = a;
        double r258226 = r258225 * r258225;
        double r258227 = 1.0;
        double r258228 = r258227 + r258225;
        double r258229 = r258226 * r258228;
        double r258230 = b;
        double r258231 = r258230 * r258230;
        double r258232 = 3.0;
        double r258233 = r258232 * r258225;
        double r258234 = r258227 - r258233;
        double r258235 = r258231 * r258234;
        double r258236 = r258229 + r258235;
        double r258237 = r258224 * r258236;
        double r258238 = r258226 + r258231;
        double r258239 = 2.0;
        double r258240 = pow(r258238, r258239);
        double r258241 = r258237 + r258240;
        double r258242 = r258241 - r258227;
        return r258242;
}

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