Average Error: 0.2 → 0.2
Time: 27.2s
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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) \cdot 4\right) + \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) \cdot 4\right) + \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r243121 = a;
        double r243122 = r243121 * r243121;
        double r243123 = b;
        double r243124 = r243123 * r243123;
        double r243125 = r243122 + r243124;
        double r243126 = 2.0;
        double r243127 = pow(r243125, r243126);
        double r243128 = 4.0;
        double r243129 = 1.0;
        double r243130 = r243129 + r243121;
        double r243131 = r243122 * r243130;
        double r243132 = 3.0;
        double r243133 = r243132 * r243121;
        double r243134 = r243129 - r243133;
        double r243135 = r243124 * r243134;
        double r243136 = r243131 + r243135;
        double r243137 = r243128 * r243136;
        double r243138 = r243127 + r243137;
        double r243139 = r243138 - r243129;
        return r243139;
}

double f(double a, double b) {
        double r243140 = a;
        double r243141 = r243140 * r243140;
        double r243142 = b;
        double r243143 = r243142 * r243142;
        double r243144 = r243141 + r243143;
        double r243145 = 2.0;
        double r243146 = pow(r243144, r243145);
        double r243147 = 1.0;
        double r243148 = r243147 + r243140;
        double r243149 = r243141 * r243148;
        double r243150 = 4.0;
        double r243151 = r243149 * r243150;
        double r243152 = r243146 + r243151;
        double r243153 = 3.0;
        double r243154 = r243153 * r243140;
        double r243155 = r243147 - r243154;
        double r243156 = r243143 * r243155;
        double r243157 = r243156 * r243150;
        double r243158 = r243152 + r243157;
        double r243159 = r243158 - r243147;
        return r243159;
}

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-rgt-in0.2

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

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

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

Reproduce

herbie shell --seed 2019199 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))