Average Error: 0.2 → 0.2
Time: 6.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(1 - 3 \cdot a\right)\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\]
\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
\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
double f(double a, double b) {
        double r190731 = a;
        double r190732 = r190731 * r190731;
        double r190733 = b;
        double r190734 = r190733 * r190733;
        double r190735 = r190732 + r190734;
        double r190736 = 2.0;
        double r190737 = pow(r190735, r190736);
        double r190738 = 4.0;
        double r190739 = 1.0;
        double r190740 = r190739 + r190731;
        double r190741 = r190732 * r190740;
        double r190742 = 3.0;
        double r190743 = r190742 * r190731;
        double r190744 = r190739 - r190743;
        double r190745 = r190734 * r190744;
        double r190746 = r190741 + r190745;
        double r190747 = r190738 * r190746;
        double r190748 = r190737 + r190747;
        double r190749 = r190748 - r190739;
        return r190749;
}

double f(double a, double b) {
        double r190750 = a;
        double r190751 = r190750 * r190750;
        double r190752 = b;
        double r190753 = r190752 * r190752;
        double r190754 = r190751 + r190753;
        double r190755 = 2.0;
        double r190756 = pow(r190754, r190755);
        double r190757 = 4.0;
        double r190758 = 1.0;
        double r190759 = r190758 + r190750;
        double r190760 = r190751 * r190759;
        double r190761 = 3.0;
        double r190762 = r190761 * r190750;
        double r190763 = r190758 - r190762;
        double r190764 = r190753 * r190763;
        double r190765 = r190760 + r190764;
        double r190766 = r190757 * r190765;
        double r190767 = r190756 + r190766;
        double r190768 = r190767 - r190758;
        return r190768;
}

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. Final simplification0.2

    \[\leadsto \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\]

Reproduce

herbie shell --seed 2020057 
(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))