Average Error: 0.2 → 0.2
Time: 12.5s
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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1
double f(double a, double b) {
        double r218109 = a;
        double r218110 = r218109 * r218109;
        double r218111 = b;
        double r218112 = r218111 * r218111;
        double r218113 = r218110 + r218112;
        double r218114 = 2.0;
        double r218115 = pow(r218113, r218114);
        double r218116 = 4.0;
        double r218117 = 1.0;
        double r218118 = r218117 - r218109;
        double r218119 = r218110 * r218118;
        double r218120 = 3.0;
        double r218121 = r218120 + r218109;
        double r218122 = r218112 * r218121;
        double r218123 = r218119 + r218122;
        double r218124 = r218116 * r218123;
        double r218125 = r218115 + r218124;
        double r218126 = r218125 - r218117;
        return r218126;
}

double f(double a, double b) {
        double r218127 = 4.0;
        double r218128 = a;
        double r218129 = r218128 * r218128;
        double r218130 = 1.0;
        double r218131 = r218130 - r218128;
        double r218132 = r218129 * r218131;
        double r218133 = b;
        double r218134 = r218133 * r218133;
        double r218135 = 3.0;
        double r218136 = r218135 + r218128;
        double r218137 = r218134 * r218136;
        double r218138 = r218132 + r218137;
        double r218139 = r218127 * r218138;
        double r218140 = r218129 + r218134;
        double r218141 = 2.0;
        double r218142 = pow(r218140, r218141);
        double r218143 = r218139 + r218142;
        double r218144 = r218143 - r218130;
        return r218144;
}

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. Using strategy rm
  3. Applied +-commutative0.2

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

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

Reproduce

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