Average Error: 0.2 → 0.2
Time: 5.9s
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 r361608 = a;
        double r361609 = r361608 * r361608;
        double r361610 = b;
        double r361611 = r361610 * r361610;
        double r361612 = r361609 + r361611;
        double r361613 = 2.0;
        double r361614 = pow(r361612, r361613);
        double r361615 = 4.0;
        double r361616 = 1.0;
        double r361617 = r361616 - r361608;
        double r361618 = r361609 * r361617;
        double r361619 = 3.0;
        double r361620 = r361619 + r361608;
        double r361621 = r361611 * r361620;
        double r361622 = r361618 + r361621;
        double r361623 = r361615 * r361622;
        double r361624 = r361614 + r361623;
        double r361625 = r361624 - r361616;
        return r361625;
}

double f(double a, double b) {
        double r361626 = a;
        double r361627 = r361626 * r361626;
        double r361628 = b;
        double r361629 = r361628 * r361628;
        double r361630 = r361627 + r361629;
        double r361631 = 2.0;
        double r361632 = pow(r361630, r361631);
        double r361633 = 4.0;
        double r361634 = 1.0;
        double r361635 = r361634 - r361626;
        double r361636 = r361627 * r361635;
        double r361637 = 3.0;
        double r361638 = r361637 + r361626;
        double r361639 = r361629 * r361638;
        double r361640 = r361636 + r361639;
        double r361641 = r361633 * r361640;
        double r361642 = r361632 + r361641;
        double r361643 = sqrt(r361642);
        double r361644 = r361643 * r361643;
        double r361645 = r361644 - r361634;
        return r361645;
}

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