Average Error: 0.2 → 0.2
Time: 14.0s
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 r251613 = a;
        double r251614 = r251613 * r251613;
        double r251615 = b;
        double r251616 = r251615 * r251615;
        double r251617 = r251614 + r251616;
        double r251618 = 2.0;
        double r251619 = pow(r251617, r251618);
        double r251620 = 4.0;
        double r251621 = 1.0;
        double r251622 = r251621 - r251613;
        double r251623 = r251614 * r251622;
        double r251624 = 3.0;
        double r251625 = r251624 + r251613;
        double r251626 = r251616 * r251625;
        double r251627 = r251623 + r251626;
        double r251628 = r251620 * r251627;
        double r251629 = r251619 + r251628;
        double r251630 = r251629 - r251621;
        return r251630;
}

double f(double a, double b) {
        double r251631 = a;
        double r251632 = r251631 * r251631;
        double r251633 = b;
        double r251634 = r251633 * r251633;
        double r251635 = r251632 + r251634;
        double r251636 = 2.0;
        double r251637 = pow(r251635, r251636);
        double r251638 = 4.0;
        double r251639 = 1.0;
        double r251640 = r251639 - r251631;
        double r251641 = r251632 * r251640;
        double r251642 = 3.0;
        double r251643 = r251642 + r251631;
        double r251644 = r251634 * r251643;
        double r251645 = r251641 + r251644;
        double r251646 = r251638 * r251645;
        double r251647 = r251637 + r251646;
        double r251648 = r251647 - r251639;
        return r251648;
}

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