Average Error: 0.2 → 0.2
Time: 6.8s
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 r305627 = a;
        double r305628 = r305627 * r305627;
        double r305629 = b;
        double r305630 = r305629 * r305629;
        double r305631 = r305628 + r305630;
        double r305632 = 2.0;
        double r305633 = pow(r305631, r305632);
        double r305634 = 4.0;
        double r305635 = 1.0;
        double r305636 = r305635 - r305627;
        double r305637 = r305628 * r305636;
        double r305638 = 3.0;
        double r305639 = r305638 + r305627;
        double r305640 = r305630 * r305639;
        double r305641 = r305637 + r305640;
        double r305642 = r305634 * r305641;
        double r305643 = r305633 + r305642;
        double r305644 = r305643 - r305635;
        return r305644;
}

double f(double a, double b) {
        double r305645 = a;
        double r305646 = r305645 * r305645;
        double r305647 = b;
        double r305648 = r305647 * r305647;
        double r305649 = r305646 + r305648;
        double r305650 = 2.0;
        double r305651 = pow(r305649, r305650);
        double r305652 = 4.0;
        double r305653 = 1.0;
        double r305654 = r305653 - r305645;
        double r305655 = r305646 * r305654;
        double r305656 = 3.0;
        double r305657 = r305656 + r305645;
        double r305658 = r305648 * r305657;
        double r305659 = r305655 + r305658;
        double r305660 = r305652 * r305659;
        double r305661 = r305651 + r305660;
        double r305662 = r305661 - r305653;
        return r305662;
}

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