Average Error: 0.2 → 0.2
Time: 38.6s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 - a\right) + \left(b \cdot b\right) \cdot \left(3.0 + a\right)\right)\right) - 1.0\]
\[\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a + 3.0\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1.0 - a\right)\right) \cdot 4.0} \cdot \sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a + 3.0\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1.0 - a\right)\right) \cdot 4.0} - 1.0\]
\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 - a\right) + \left(b \cdot b\right) \cdot \left(3.0 + a\right)\right)\right) - 1.0
\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a + 3.0\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1.0 - a\right)\right) \cdot 4.0} \cdot \sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a + 3.0\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1.0 - a\right)\right) \cdot 4.0} - 1.0
double f(double a, double b) {
        double r8865131 = a;
        double r8865132 = r8865131 * r8865131;
        double r8865133 = b;
        double r8865134 = r8865133 * r8865133;
        double r8865135 = r8865132 + r8865134;
        double r8865136 = 2.0;
        double r8865137 = pow(r8865135, r8865136);
        double r8865138 = 4.0;
        double r8865139 = 1.0;
        double r8865140 = r8865139 - r8865131;
        double r8865141 = r8865132 * r8865140;
        double r8865142 = 3.0;
        double r8865143 = r8865142 + r8865131;
        double r8865144 = r8865134 * r8865143;
        double r8865145 = r8865141 + r8865144;
        double r8865146 = r8865138 * r8865145;
        double r8865147 = r8865137 + r8865146;
        double r8865148 = r8865147 - r8865139;
        return r8865148;
}

double f(double a, double b) {
        double r8865149 = a;
        double r8865150 = r8865149 * r8865149;
        double r8865151 = b;
        double r8865152 = r8865151 * r8865151;
        double r8865153 = r8865150 + r8865152;
        double r8865154 = 2.0;
        double r8865155 = pow(r8865153, r8865154);
        double r8865156 = 3.0;
        double r8865157 = r8865149 + r8865156;
        double r8865158 = r8865157 * r8865152;
        double r8865159 = 1.0;
        double r8865160 = r8865159 - r8865149;
        double r8865161 = r8865150 * r8865160;
        double r8865162 = r8865158 + r8865161;
        double r8865163 = 4.0;
        double r8865164 = r8865162 * r8865163;
        double r8865165 = r8865155 + r8865164;
        double r8865166 = sqrt(r8865165);
        double r8865167 = r8865166 * r8865166;
        double r8865168 = r8865167 - r8865159;
        return r8865168;
}

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.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 - a\right) + \left(b \cdot b\right) \cdot \left(3.0 + a\right)\right)\right) - 1.0\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.2

    \[\leadsto \color{blue}{\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 - a\right) + \left(b \cdot b\right) \cdot \left(3.0 + a\right)\right)} \cdot \sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 - a\right) + \left(b \cdot b\right) \cdot \left(3.0 + a\right)\right)}} - 1.0\]
  4. Final simplification0.2

    \[\leadsto \sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a + 3.0\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1.0 - a\right)\right) \cdot 4.0} \cdot \sqrt{{\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a + 3.0\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1.0 - a\right)\right) \cdot 4.0} - 1.0\]

Reproduce

herbie shell --seed 2019165 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))