Average Error: 0.2 → 0.2
Time: 15.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(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 r203127 = a;
        double r203128 = r203127 * r203127;
        double r203129 = b;
        double r203130 = r203129 * r203129;
        double r203131 = r203128 + r203130;
        double r203132 = 2.0;
        double r203133 = pow(r203131, r203132);
        double r203134 = 4.0;
        double r203135 = 1.0;
        double r203136 = r203135 - r203127;
        double r203137 = r203128 * r203136;
        double r203138 = 3.0;
        double r203139 = r203138 + r203127;
        double r203140 = r203130 * r203139;
        double r203141 = r203137 + r203140;
        double r203142 = r203134 * r203141;
        double r203143 = r203133 + r203142;
        double r203144 = r203143 - r203135;
        return r203144;
}

double f(double a, double b) {
        double r203145 = a;
        double r203146 = r203145 * r203145;
        double r203147 = b;
        double r203148 = r203147 * r203147;
        double r203149 = r203146 + r203148;
        double r203150 = 2.0;
        double r203151 = pow(r203149, r203150);
        double r203152 = 4.0;
        double r203153 = 1.0;
        double r203154 = r203153 - r203145;
        double r203155 = r203146 * r203154;
        double r203156 = 3.0;
        double r203157 = r203156 + r203145;
        double r203158 = r203148 * r203157;
        double r203159 = r203155 + r203158;
        double r203160 = r203152 * r203159;
        double r203161 = r203151 + r203160;
        double r203162 = r203161 - r203153;
        return r203162;
}

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 2019209 +o rules:numerics
(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))