Average Error: 0.2 → 0.2
Time: 23.0s
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(3 + 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(3 + 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(3 + 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(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r178037 = a;
        double r178038 = r178037 * r178037;
        double r178039 = b;
        double r178040 = r178039 * r178039;
        double r178041 = r178038 + r178040;
        double r178042 = 2.0;
        double r178043 = pow(r178041, r178042);
        double r178044 = 4.0;
        double r178045 = 1.0;
        double r178046 = r178045 - r178037;
        double r178047 = r178038 * r178046;
        double r178048 = 3.0;
        double r178049 = r178048 + r178037;
        double r178050 = r178040 * r178049;
        double r178051 = r178047 + r178050;
        double r178052 = r178044 * r178051;
        double r178053 = r178043 + r178052;
        double r178054 = r178053 - r178045;
        return r178054;
}

double f(double a, double b) {
        double r178055 = a;
        double r178056 = r178055 * r178055;
        double r178057 = b;
        double r178058 = r178057 * r178057;
        double r178059 = r178056 + r178058;
        double r178060 = 2.0;
        double r178061 = pow(r178059, r178060);
        double r178062 = 4.0;
        double r178063 = 1.0;
        double r178064 = r178063 - r178055;
        double r178065 = r178056 * r178064;
        double r178066 = 3.0;
        double r178067 = r178066 + r178055;
        double r178068 = r178058 * r178067;
        double r178069 = r178065 + r178068;
        double r178070 = r178062 * r178069;
        double r178071 = r178061 + r178070;
        double r178072 = r178071 - r178063;
        return r178072;
}

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(3 + 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(3 + a\right)\right)\right) - 1\]

Reproduce

herbie shell --seed 2019325 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))