Average Error: 0.2 → 0.2
Time: 22.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(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot \left(1 - 3 \cdot a\right)\right) \cdot b\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(1 - 3 \cdot 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 \left(1 - 3 \cdot a\right)\right) \cdot b\right)\right) - 1
double f(double a, double b) {
        double r215682 = a;
        double r215683 = r215682 * r215682;
        double r215684 = b;
        double r215685 = r215684 * r215684;
        double r215686 = r215683 + r215685;
        double r215687 = 2.0;
        double r215688 = pow(r215686, r215687);
        double r215689 = 4.0;
        double r215690 = 1.0;
        double r215691 = r215690 + r215682;
        double r215692 = r215683 * r215691;
        double r215693 = 3.0;
        double r215694 = r215693 * r215682;
        double r215695 = r215690 - r215694;
        double r215696 = r215685 * r215695;
        double r215697 = r215692 + r215696;
        double r215698 = r215689 * r215697;
        double r215699 = r215688 + r215698;
        double r215700 = r215699 - r215690;
        return r215700;
}

double f(double a, double b) {
        double r215701 = a;
        double r215702 = r215701 * r215701;
        double r215703 = b;
        double r215704 = r215703 * r215703;
        double r215705 = r215702 + r215704;
        double r215706 = 2.0;
        double r215707 = pow(r215705, r215706);
        double r215708 = 4.0;
        double r215709 = 1.0;
        double r215710 = r215709 + r215701;
        double r215711 = r215702 * r215710;
        double r215712 = 3.0;
        double r215713 = r215712 * r215701;
        double r215714 = r215709 - r215713;
        double r215715 = r215703 * r215714;
        double r215716 = r215715 * r215703;
        double r215717 = r215711 + r215716;
        double r215718 = r215708 * r215717;
        double r215719 = r215707 + r215718;
        double r215720 = r215719 - r215709;
        return r215720;
}

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. Taylor expanded around 0 0.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) + \color{blue}{\left(1 \cdot {b}^{2} - 3 \cdot \left(a \cdot {b}^{2}\right)\right)}\right)\right) - 1\]
  3. Simplified0.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) + \color{blue}{\left(b \cdot \left(1 - 3 \cdot a\right)\right) \cdot b}\right)\right) - 1\]
  4. 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 \left(1 - 3 \cdot a\right)\right) \cdot b\right)\right) - 1\]

Reproduce

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