Average Error: 0.2 → 0.2
Time: 4.4s
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(\left(a \cdot a\right) \cdot 1 + {a}^{3}\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(\left(\left(a \cdot a\right) \cdot 1 + {a}^{3}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r253770 = a;
        double r253771 = r253770 * r253770;
        double r253772 = b;
        double r253773 = r253772 * r253772;
        double r253774 = r253771 + r253773;
        double r253775 = 2.0;
        double r253776 = pow(r253774, r253775);
        double r253777 = 4.0;
        double r253778 = 1.0;
        double r253779 = r253778 + r253770;
        double r253780 = r253771 * r253779;
        double r253781 = 3.0;
        double r253782 = r253781 * r253770;
        double r253783 = r253778 - r253782;
        double r253784 = r253773 * r253783;
        double r253785 = r253780 + r253784;
        double r253786 = r253777 * r253785;
        double r253787 = r253776 + r253786;
        double r253788 = r253787 - r253778;
        return r253788;
}

double f(double a, double b) {
        double r253789 = a;
        double r253790 = r253789 * r253789;
        double r253791 = b;
        double r253792 = r253791 * r253791;
        double r253793 = r253790 + r253792;
        double r253794 = 2.0;
        double r253795 = pow(r253793, r253794);
        double r253796 = 4.0;
        double r253797 = 1.0;
        double r253798 = r253790 * r253797;
        double r253799 = 3.0;
        double r253800 = pow(r253789, r253799);
        double r253801 = r253798 + r253800;
        double r253802 = 3.0;
        double r253803 = r253802 * r253789;
        double r253804 = r253797 - r253803;
        double r253805 = r253792 * r253804;
        double r253806 = r253801 + r253805;
        double r253807 = r253796 * r253806;
        double r253808 = r253795 + r253807;
        double r253809 = r253808 - r253797;
        return r253809;
}

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 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 a\right)} + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  4. 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}{{a}^{3}}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
  5. 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 + {a}^{3}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

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