Average Error: 0.2 → 0.2
Time: 6.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(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 r284094 = a;
        double r284095 = r284094 * r284094;
        double r284096 = b;
        double r284097 = r284096 * r284096;
        double r284098 = r284095 + r284097;
        double r284099 = 2.0;
        double r284100 = pow(r284098, r284099);
        double r284101 = 4.0;
        double r284102 = 1.0;
        double r284103 = r284102 - r284094;
        double r284104 = r284095 * r284103;
        double r284105 = 3.0;
        double r284106 = r284105 + r284094;
        double r284107 = r284097 * r284106;
        double r284108 = r284104 + r284107;
        double r284109 = r284101 * r284108;
        double r284110 = r284100 + r284109;
        double r284111 = r284110 - r284102;
        return r284111;
}

double f(double a, double b) {
        double r284112 = a;
        double r284113 = r284112 * r284112;
        double r284114 = b;
        double r284115 = r284114 * r284114;
        double r284116 = r284113 + r284115;
        double r284117 = 2.0;
        double r284118 = pow(r284116, r284117);
        double r284119 = 4.0;
        double r284120 = 1.0;
        double r284121 = r284120 - r284112;
        double r284122 = r284113 * r284121;
        double r284123 = 3.0;
        double r284124 = r284123 + r284112;
        double r284125 = r284115 * r284124;
        double r284126 = r284122 + r284125;
        double r284127 = r284119 * r284126;
        double r284128 = r284118 + r284127;
        double r284129 = sqrt(r284128);
        double r284130 = r284129 * r284129;
        double r284131 = r284130 - r284120;
        return r284131;
}

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 2020047 +o rules:numerics
(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))