Average Error: 0.2 → 0.2
Time: 1.0m
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 r21709053 = a;
        double r21709054 = r21709053 * r21709053;
        double r21709055 = b;
        double r21709056 = r21709055 * r21709055;
        double r21709057 = r21709054 + r21709056;
        double r21709058 = 2.0;
        double r21709059 = pow(r21709057, r21709058);
        double r21709060 = 4.0;
        double r21709061 = 1.0;
        double r21709062 = r21709061 + r21709053;
        double r21709063 = r21709054 * r21709062;
        double r21709064 = 3.0;
        double r21709065 = r21709064 * r21709053;
        double r21709066 = r21709061 - r21709065;
        double r21709067 = r21709056 * r21709066;
        double r21709068 = r21709063 + r21709067;
        double r21709069 = r21709060 * r21709068;
        double r21709070 = r21709059 + r21709069;
        double r21709071 = r21709070 - r21709061;
        return r21709071;
}

double f(double a, double b) {
        double r21709072 = a;
        double r21709073 = r21709072 * r21709072;
        double r21709074 = b;
        double r21709075 = r21709074 * r21709074;
        double r21709076 = r21709073 + r21709075;
        double r21709077 = 2.0;
        double r21709078 = pow(r21709076, r21709077);
        double r21709079 = 1.0;
        double r21709080 = r21709072 + r21709079;
        double r21709081 = r21709073 * r21709080;
        double r21709082 = 3.0;
        double r21709083 = r21709082 * r21709072;
        double r21709084 = r21709079 - r21709083;
        double r21709085 = r21709075 * r21709084;
        double r21709086 = r21709081 + r21709085;
        double r21709087 = 4.0;
        double r21709088 = r21709086 * r21709087;
        double r21709089 = r21709078 + r21709088;
        double r21709090 = r21709089 - r21709079;
        return r21709090;
}

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