Average Error: 0.2 → 0.2
Time: 5.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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(a \cdot \left(a \cdot \left(1 + a\right)\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 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(a \cdot \left(a \cdot \left(1 + a\right)\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r205807 = a;
        double r205808 = r205807 * r205807;
        double r205809 = b;
        double r205810 = r205809 * r205809;
        double r205811 = r205808 + r205810;
        double r205812 = 2.0;
        double r205813 = pow(r205811, r205812);
        double r205814 = 4.0;
        double r205815 = 1.0;
        double r205816 = r205815 + r205807;
        double r205817 = r205808 * r205816;
        double r205818 = 3.0;
        double r205819 = r205818 * r205807;
        double r205820 = r205815 - r205819;
        double r205821 = r205810 * r205820;
        double r205822 = r205817 + r205821;
        double r205823 = r205814 * r205822;
        double r205824 = r205813 + r205823;
        double r205825 = r205824 - r205815;
        return r205825;
}

double f(double a, double b) {
        double r205826 = a;
        double r205827 = r205826 * r205826;
        double r205828 = b;
        double r205829 = r205828 * r205828;
        double r205830 = r205827 + r205829;
        double r205831 = 2.0;
        double r205832 = pow(r205830, r205831);
        double r205833 = 4.0;
        double r205834 = 1.0;
        double r205835 = r205834 + r205826;
        double r205836 = r205826 * r205835;
        double r205837 = r205826 * r205836;
        double r205838 = 3.0;
        double r205839 = r205838 * r205826;
        double r205840 = r205834 - r205839;
        double r205841 = r205829 * r205840;
        double r205842 = r205837 + r205841;
        double r205843 = r205833 * r205842;
        double r205844 = r205832 + r205843;
        double r205845 = r205844 - r205834;
        return r205845;
}

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 associate-*l*0.2

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

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

Reproduce

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