Average Error: 0.2 → 0.2
Time: 20.1s
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} + \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(\sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)} \cdot \sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)}\right) \cdot \sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\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(3 + a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(\sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)} \cdot \sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)}\right) \cdot \sqrt[3]{\left(a + 3\right) \cdot \left(b \cdot b\right)}\right) \cdot 4\right) - 1
double f(double a, double b) {
        double r9102132 = a;
        double r9102133 = r9102132 * r9102132;
        double r9102134 = b;
        double r9102135 = r9102134 * r9102134;
        double r9102136 = r9102133 + r9102135;
        double r9102137 = 2.0;
        double r9102138 = pow(r9102136, r9102137);
        double r9102139 = 4.0;
        double r9102140 = 1.0;
        double r9102141 = r9102140 - r9102132;
        double r9102142 = r9102133 * r9102141;
        double r9102143 = 3.0;
        double r9102144 = r9102143 + r9102132;
        double r9102145 = r9102135 * r9102144;
        double r9102146 = r9102142 + r9102145;
        double r9102147 = r9102139 * r9102146;
        double r9102148 = r9102138 + r9102147;
        double r9102149 = r9102148 - r9102140;
        return r9102149;
}

double f(double a, double b) {
        double r9102150 = a;
        double r9102151 = r9102150 * r9102150;
        double r9102152 = b;
        double r9102153 = r9102152 * r9102152;
        double r9102154 = r9102151 + r9102153;
        double r9102155 = 2.0;
        double r9102156 = pow(r9102154, r9102155);
        double r9102157 = 1.0;
        double r9102158 = r9102157 - r9102150;
        double r9102159 = r9102151 * r9102158;
        double r9102160 = 3.0;
        double r9102161 = r9102150 + r9102160;
        double r9102162 = r9102161 * r9102153;
        double r9102163 = cbrt(r9102162);
        double r9102164 = r9102163 * r9102163;
        double r9102165 = r9102164 * r9102163;
        double r9102166 = r9102159 + r9102165;
        double r9102167 = 4.0;
        double r9102168 = r9102166 * r9102167;
        double r9102169 = r9102156 + r9102168;
        double r9102170 = r9102169 - r9102157;
        return r9102170;
}

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 add-cube-cbrt0.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) + \color{blue}{\left(\sqrt[3]{\left(b \cdot b\right) \cdot \left(3 + a\right)} \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(3 + a\right)}\right) \cdot \sqrt[3]{\left(b \cdot b\right) \cdot \left(3 + a\right)}}\right)\right) - 1\]
  4. Final simplification0.2

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

Reproduce

herbie shell --seed 2019172 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))