Average Error: 0.2 → 0.2
Time: 5.8s
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 r99161 = a;
        double r99162 = r99161 * r99161;
        double r99163 = b;
        double r99164 = r99163 * r99163;
        double r99165 = r99162 + r99164;
        double r99166 = 2.0;
        double r99167 = pow(r99165, r99166);
        double r99168 = 4.0;
        double r99169 = 1.0;
        double r99170 = r99169 + r99161;
        double r99171 = r99162 * r99170;
        double r99172 = 3.0;
        double r99173 = r99172 * r99161;
        double r99174 = r99169 - r99173;
        double r99175 = r99164 * r99174;
        double r99176 = r99171 + r99175;
        double r99177 = r99168 * r99176;
        double r99178 = r99167 + r99177;
        double r99179 = r99178 - r99169;
        return r99179;
}

double f(double a, double b) {
        double r99180 = a;
        double r99181 = r99180 * r99180;
        double r99182 = b;
        double r99183 = r99182 * r99182;
        double r99184 = r99181 + r99183;
        double r99185 = 2.0;
        double r99186 = pow(r99184, r99185);
        double r99187 = 4.0;
        double r99188 = 1.0;
        double r99189 = r99188 + r99180;
        double r99190 = r99181 * r99189;
        double r99191 = 3.0;
        double r99192 = r99191 * r99180;
        double r99193 = r99188 - r99192;
        double r99194 = r99183 * r99193;
        double r99195 = r99190 + r99194;
        double r99196 = r99187 * r99195;
        double r99197 = r99186 + r99196;
        double r99198 = r99197 - r99188;
        return r99198;
}

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 2020024 
(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))