Average Error: 0.2 → 0.2
Time: 7.6s
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 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(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r360794 = a;
        double r360795 = r360794 * r360794;
        double r360796 = b;
        double r360797 = r360796 * r360796;
        double r360798 = r360795 + r360797;
        double r360799 = 2.0;
        double r360800 = pow(r360798, r360799);
        double r360801 = 4.0;
        double r360802 = 1.0;
        double r360803 = r360802 + r360794;
        double r360804 = r360795 * r360803;
        double r360805 = 3.0;
        double r360806 = r360805 * r360794;
        double r360807 = r360802 - r360806;
        double r360808 = r360797 * r360807;
        double r360809 = r360804 + r360808;
        double r360810 = r360801 * r360809;
        double r360811 = r360800 + r360810;
        double r360812 = r360811 - r360802;
        return r360812;
}

double f(double a, double b) {
        double r360813 = a;
        double r360814 = r360813 * r360813;
        double r360815 = b;
        double r360816 = r360815 * r360815;
        double r360817 = r360814 + r360816;
        double r360818 = 2.0;
        double r360819 = pow(r360817, r360818);
        double r360820 = 4.0;
        double r360821 = 1.0;
        double r360822 = r360821 + r360813;
        double r360823 = r360814 * r360822;
        double r360824 = 3.0;
        double r360825 = r360824 * r360813;
        double r360826 = r360821 - r360825;
        double r360827 = r360816 * r360826;
        double r360828 = r360823 + r360827;
        double r360829 = r360820 * r360828;
        double r360830 = r360819 + r360829;
        double r360831 = r360830 - r360821;
        return r360831;
}

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. 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(1 - 3 \cdot a\right)\right)\right) - 1\]

Reproduce

herbie shell --seed 2020057 +o rules:numerics
(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))