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(1 - 3 \cdot 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(1 - 3 \cdot 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(1 - 3 \cdot 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(1 - 3 \cdot 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(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)} - 1
double f(double a, double b) {
        double r268717 = a;
        double r268718 = r268717 * r268717;
        double r268719 = b;
        double r268720 = r268719 * r268719;
        double r268721 = r268718 + r268720;
        double r268722 = 2.0;
        double r268723 = pow(r268721, r268722);
        double r268724 = 4.0;
        double r268725 = 1.0;
        double r268726 = r268725 + r268717;
        double r268727 = r268718 * r268726;
        double r268728 = 3.0;
        double r268729 = r268728 * r268717;
        double r268730 = r268725 - r268729;
        double r268731 = r268720 * r268730;
        double r268732 = r268727 + r268731;
        double r268733 = r268724 * r268732;
        double r268734 = r268723 + r268733;
        double r268735 = r268734 - r268725;
        return r268735;
}

double f(double a, double b) {
        double r268736 = a;
        double r268737 = r268736 * r268736;
        double r268738 = b;
        double r268739 = r268738 * r268738;
        double r268740 = r268737 + r268739;
        double r268741 = 2.0;
        double r268742 = pow(r268740, r268741);
        double r268743 = 4.0;
        double r268744 = 1.0;
        double r268745 = r268744 + r268736;
        double r268746 = r268737 * r268745;
        double r268747 = 3.0;
        double r268748 = r268747 * r268736;
        double r268749 = r268744 - r268748;
        double r268750 = r268739 * r268749;
        double r268751 = r268746 + r268750;
        double r268752 = r268743 * r268751;
        double r268753 = r268742 + r268752;
        double r268754 = sqrt(r268753);
        double r268755 = r268754 * r268754;
        double r268756 = r268755 - r268744;
        return r268756;
}

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

Reproduce

herbie shell --seed 2020001 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))