Average Error: 0.2 → 0.2
Time: 18.5s
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\]
\[\sqrt{{\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)} \cdot \sqrt{{\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)} - 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
\sqrt{{\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)} \cdot \sqrt{{\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)} - 1
double f(double a, double b) {
        double r248036 = a;
        double r248037 = r248036 * r248036;
        double r248038 = b;
        double r248039 = r248038 * r248038;
        double r248040 = r248037 + r248039;
        double r248041 = 2.0;
        double r248042 = pow(r248040, r248041);
        double r248043 = 4.0;
        double r248044 = 1.0;
        double r248045 = r248044 - r248036;
        double r248046 = r248037 * r248045;
        double r248047 = 3.0;
        double r248048 = r248047 + r248036;
        double r248049 = r248039 * r248048;
        double r248050 = r248046 + r248049;
        double r248051 = r248043 * r248050;
        double r248052 = r248042 + r248051;
        double r248053 = r248052 - r248044;
        return r248053;
}

double f(double a, double b) {
        double r248054 = a;
        double r248055 = r248054 * r248054;
        double r248056 = b;
        double r248057 = r248056 * r248056;
        double r248058 = r248055 + r248057;
        double r248059 = 2.0;
        double r248060 = pow(r248058, r248059);
        double r248061 = 4.0;
        double r248062 = 1.0;
        double r248063 = r248062 - r248054;
        double r248064 = r248055 * r248063;
        double r248065 = 3.0;
        double r248066 = r248065 + r248054;
        double r248067 = r248057 * r248066;
        double r248068 = r248064 + r248067;
        double r248069 = r248061 * r248068;
        double r248070 = r248060 + r248069;
        double r248071 = sqrt(r248070);
        double r248072 = r248071 * r248071;
        double r248073 = r248072 - r248062;
        return r248073;
}

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. Using strategy rm
  3. Applied add-sqr-sqrt0.2

    \[\leadsto \color{blue}{\sqrt{{\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)} \cdot \sqrt{{\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)}} - 1\]
  4. Final simplification0.2

    \[\leadsto \sqrt{{\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)} \cdot \sqrt{{\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)} - 1\]

Reproduce

herbie shell --seed 2019326 
(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))