Average Error: 0.2 → 0.2
Time: 5.5s
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 r132139 = a;
        double r132140 = r132139 * r132139;
        double r132141 = b;
        double r132142 = r132141 * r132141;
        double r132143 = r132140 + r132142;
        double r132144 = 2.0;
        double r132145 = pow(r132143, r132144);
        double r132146 = 4.0;
        double r132147 = 1.0;
        double r132148 = r132147 + r132139;
        double r132149 = r132140 * r132148;
        double r132150 = 3.0;
        double r132151 = r132150 * r132139;
        double r132152 = r132147 - r132151;
        double r132153 = r132142 * r132152;
        double r132154 = r132149 + r132153;
        double r132155 = r132146 * r132154;
        double r132156 = r132145 + r132155;
        double r132157 = r132156 - r132147;
        return r132157;
}

double f(double a, double b) {
        double r132158 = a;
        double r132159 = r132158 * r132158;
        double r132160 = b;
        double r132161 = r132160 * r132160;
        double r132162 = r132159 + r132161;
        double r132163 = 2.0;
        double r132164 = pow(r132162, r132163);
        double r132165 = 1.0;
        double r132166 = r132165 + r132158;
        double r132167 = r132159 * r132166;
        double r132168 = 4.0;
        double r132169 = r132167 * r132168;
        double r132170 = r132164 + r132169;
        double r132171 = 3.0;
        double r132172 = r132171 * r132158;
        double r132173 = r132165 - r132172;
        double r132174 = r132161 * r132173;
        double r132175 = r132174 * r132168;
        double r132176 = r132170 + r132175;
        double r132177 = r132176 - r132165;
        return r132177;
}

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