Average Error: 0.2 → 0.2
Time: 5.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 r305812 = a;
        double r305813 = r305812 * r305812;
        double r305814 = b;
        double r305815 = r305814 * r305814;
        double r305816 = r305813 + r305815;
        double r305817 = 2.0;
        double r305818 = pow(r305816, r305817);
        double r305819 = 4.0;
        double r305820 = r305819 * r305815;
        double r305821 = r305818 + r305820;
        double r305822 = 1.0;
        double r305823 = r305821 - r305822;
        return r305823;
}

double f(double a, double b) {
        double r305824 = a;
        double r305825 = r305824 * r305824;
        double r305826 = b;
        double r305827 = r305826 * r305826;
        double r305828 = r305825 + r305827;
        double r305829 = 2.0;
        double r305830 = pow(r305828, r305829);
        double r305831 = 4.0;
        double r305832 = r305831 * r305827;
        double r305833 = r305830 + r305832;
        double r305834 = 1.0;
        double r305835 = r305833 - r305834;
        return r305835;
}

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 2019322 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))