Average Error: 0.2 → 0.2
Time: 6.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(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 r265960 = a;
        double r265961 = r265960 * r265960;
        double r265962 = b;
        double r265963 = r265962 * r265962;
        double r265964 = r265961 + r265963;
        double r265965 = 2.0;
        double r265966 = pow(r265964, r265965);
        double r265967 = 4.0;
        double r265968 = 1.0;
        double r265969 = r265968 - r265960;
        double r265970 = r265961 * r265969;
        double r265971 = 3.0;
        double r265972 = r265971 + r265960;
        double r265973 = r265963 * r265972;
        double r265974 = r265970 + r265973;
        double r265975 = r265967 * r265974;
        double r265976 = r265966 + r265975;
        double r265977 = r265976 - r265968;
        return r265977;
}

double f(double a, double b) {
        double r265978 = a;
        double r265979 = r265978 * r265978;
        double r265980 = b;
        double r265981 = r265980 * r265980;
        double r265982 = r265979 + r265981;
        double r265983 = 2.0;
        double r265984 = pow(r265982, r265983);
        double r265985 = 4.0;
        double r265986 = 1.0;
        double r265987 = r265986 - r265978;
        double r265988 = r265979 * r265987;
        double r265989 = 3.0;
        double r265990 = r265989 + r265978;
        double r265991 = r265981 * r265990;
        double r265992 = r265988 + r265991;
        double r265993 = r265985 * r265992;
        double r265994 = r265984 + r265993;
        double r265995 = r265994 - r265986;
        return r265995;
}

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 2020024 +o rules:numerics
(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))