Average Error: 0.2 → 0.2
Time: 23.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(b \cdot b + a \cdot a\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\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(b \cdot b + a \cdot a\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r11048076 = a;
        double r11048077 = r11048076 * r11048076;
        double r11048078 = b;
        double r11048079 = r11048078 * r11048078;
        double r11048080 = r11048077 + r11048079;
        double r11048081 = 2.0;
        double r11048082 = pow(r11048080, r11048081);
        double r11048083 = 4.0;
        double r11048084 = 1.0;
        double r11048085 = r11048084 + r11048076;
        double r11048086 = r11048077 * r11048085;
        double r11048087 = 3.0;
        double r11048088 = r11048087 * r11048076;
        double r11048089 = r11048084 - r11048088;
        double r11048090 = r11048079 * r11048089;
        double r11048091 = r11048086 + r11048090;
        double r11048092 = r11048083 * r11048091;
        double r11048093 = r11048082 + r11048092;
        double r11048094 = r11048093 - r11048084;
        return r11048094;
}

double f(double a, double b) {
        double r11048095 = b;
        double r11048096 = r11048095 * r11048095;
        double r11048097 = a;
        double r11048098 = r11048097 * r11048097;
        double r11048099 = r11048096 + r11048098;
        double r11048100 = 2.0;
        double r11048101 = pow(r11048099, r11048100);
        double r11048102 = 1.0;
        double r11048103 = r11048102 + r11048097;
        double r11048104 = r11048098 * r11048103;
        double r11048105 = 3.0;
        double r11048106 = r11048105 * r11048097;
        double r11048107 = r11048102 - r11048106;
        double r11048108 = r11048096 * r11048107;
        double r11048109 = r11048104 + r11048108;
        double r11048110 = 4.0;
        double r11048111 = r11048109 * r11048110;
        double r11048112 = r11048101 + r11048111;
        double r11048113 = r11048112 - r11048102;
        return r11048113;
}

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 +-commutative0.2

    \[\leadsto \left({\color{blue}{\left(b \cdot b + a \cdot a\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\]
  4. Final simplification0.2

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

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))