Average Error: 0.2 → 0.2
Time: 6.0s
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(\left(a \cdot a\right) \cdot 1 + {a}^{3}\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(\left(a \cdot a\right) \cdot 1 + {a}^{3}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r216030 = a;
        double r216031 = r216030 * r216030;
        double r216032 = b;
        double r216033 = r216032 * r216032;
        double r216034 = r216031 + r216033;
        double r216035 = 2.0;
        double r216036 = pow(r216034, r216035);
        double r216037 = 4.0;
        double r216038 = 1.0;
        double r216039 = r216038 + r216030;
        double r216040 = r216031 * r216039;
        double r216041 = 3.0;
        double r216042 = r216041 * r216030;
        double r216043 = r216038 - r216042;
        double r216044 = r216033 * r216043;
        double r216045 = r216040 + r216044;
        double r216046 = r216037 * r216045;
        double r216047 = r216036 + r216046;
        double r216048 = r216047 - r216038;
        return r216048;
}

double f(double a, double b) {
        double r216049 = a;
        double r216050 = r216049 * r216049;
        double r216051 = b;
        double r216052 = r216051 * r216051;
        double r216053 = r216050 + r216052;
        double r216054 = 2.0;
        double r216055 = pow(r216053, r216054);
        double r216056 = 4.0;
        double r216057 = 1.0;
        double r216058 = r216050 * r216057;
        double r216059 = 3.0;
        double r216060 = pow(r216049, r216059);
        double r216061 = r216058 + r216060;
        double r216062 = 3.0;
        double r216063 = r216062 * r216049;
        double r216064 = r216057 - r216063;
        double r216065 = r216052 * r216064;
        double r216066 = r216061 + r216065;
        double r216067 = r216056 * r216066;
        double r216068 = r216055 + r216067;
        double r216069 = r216068 - r216057;
        return r216069;
}

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 distribute-lft-in0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\color{blue}{\left(\left(a \cdot a\right) \cdot 1 + \left(a \cdot a\right) \cdot a\right)} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  4. Simplified0.2

    \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\left(a \cdot a\right) \cdot 1 + \color{blue}{{a}^{3}}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  5. Final simplification0.2

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

Reproduce

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