Average Error: 0.2 → 0.2
Time: 3.0s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
double f(double a, double b) {
        double r301933 = a;
        double r301934 = r301933 * r301933;
        double r301935 = b;
        double r301936 = r301935 * r301935;
        double r301937 = r301934 + r301936;
        double r301938 = 2.0;
        double r301939 = pow(r301937, r301938);
        double r301940 = 4.0;
        double r301941 = r301940 * r301936;
        double r301942 = r301939 + r301941;
        double r301943 = 1.0;
        double r301944 = r301942 - r301943;
        return r301944;
}

double f(double a, double b) {
        double r301945 = a;
        double r301946 = r301945 * r301945;
        double r301947 = b;
        double r301948 = r301947 * r301947;
        double r301949 = r301946 + r301948;
        double r301950 = 2.0;
        double r301951 = pow(r301949, r301950);
        double r301952 = 4.0;
        double r301953 = r301952 * r301948;
        double r301954 = r301951 + r301953;
        double r301955 = 1.0;
        double r301956 = r301954 - r301955;
        return r301956;
}

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(b \cdot b\right)\right) - 1\]
  2. Final simplification0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]

Reproduce

herbie shell --seed 2020065 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))