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(3 + 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(3 + 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(3 + 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(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r300114 = a;
        double r300115 = r300114 * r300114;
        double r300116 = b;
        double r300117 = r300116 * r300116;
        double r300118 = r300115 + r300117;
        double r300119 = 2.0;
        double r300120 = pow(r300118, r300119);
        double r300121 = 4.0;
        double r300122 = 1.0;
        double r300123 = r300122 - r300114;
        double r300124 = r300115 * r300123;
        double r300125 = 3.0;
        double r300126 = r300125 + r300114;
        double r300127 = r300117 * r300126;
        double r300128 = r300124 + r300127;
        double r300129 = r300121 * r300128;
        double r300130 = r300120 + r300129;
        double r300131 = r300130 - r300122;
        return r300131;
}

double f(double a, double b) {
        double r300132 = a;
        double r300133 = r300132 * r300132;
        double r300134 = b;
        double r300135 = r300134 * r300134;
        double r300136 = r300133 + r300135;
        double r300137 = 2.0;
        double r300138 = pow(r300136, r300137);
        double r300139 = 4.0;
        double r300140 = 1.0;
        double r300141 = r300140 - r300132;
        double r300142 = r300133 * r300141;
        double r300143 = 3.0;
        double r300144 = r300143 + r300132;
        double r300145 = r300135 * r300144;
        double r300146 = r300142 + r300145;
        double r300147 = r300139 * r300146;
        double r300148 = r300138 + r300147;
        double r300149 = r300148 - r300140;
        return r300149;
}

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(3 + 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(3 + a\right)\right)\right) - 1\]

Reproduce

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