Average Error: 0.2 → 0.2
Time: 15.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(3 + a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\left(a \cdot a\right) \cdot 1 + \left(-{a}^{3}\right)\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(\left(a \cdot a\right) \cdot 1 + \left(-{a}^{3}\right)\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
double f(double a, double b) {
        double r217613 = a;
        double r217614 = r217613 * r217613;
        double r217615 = b;
        double r217616 = r217615 * r217615;
        double r217617 = r217614 + r217616;
        double r217618 = 2.0;
        double r217619 = pow(r217617, r217618);
        double r217620 = 4.0;
        double r217621 = 1.0;
        double r217622 = r217621 - r217613;
        double r217623 = r217614 * r217622;
        double r217624 = 3.0;
        double r217625 = r217624 + r217613;
        double r217626 = r217616 * r217625;
        double r217627 = r217623 + r217626;
        double r217628 = r217620 * r217627;
        double r217629 = r217619 + r217628;
        double r217630 = r217629 - r217621;
        return r217630;
}

double f(double a, double b) {
        double r217631 = a;
        double r217632 = r217631 * r217631;
        double r217633 = b;
        double r217634 = r217633 * r217633;
        double r217635 = r217632 + r217634;
        double r217636 = 2.0;
        double r217637 = pow(r217635, r217636);
        double r217638 = 4.0;
        double r217639 = 1.0;
        double r217640 = r217632 * r217639;
        double r217641 = 3.0;
        double r217642 = pow(r217631, r217641);
        double r217643 = -r217642;
        double r217644 = r217640 + r217643;
        double r217645 = 3.0;
        double r217646 = r217645 + r217631;
        double r217647 = r217634 * r217646;
        double r217648 = r217644 + r217647;
        double r217649 = r217638 * r217648;
        double r217650 = r217637 + r217649;
        double r217651 = r217650 - r217639;
        return r217651;
}

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. Using strategy rm
  3. Applied sub-neg0.2

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

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

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

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

Reproduce

herbie shell --seed 2019235 
(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))