Average Error: 0.2 → 0.1
Time: 19.9s
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\]
\[\begin{array}{l} \mathbf{if}\;{\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) \le 1.518149101387913421177978107255154532669 \cdot 10^{64}:\\ \;\;\;\;\sqrt[3]{{\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)}^{3}} - 1\\ \mathbf{else}:\\ \;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\ \end{array}\]
\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
\begin{array}{l}
\mathbf{if}\;{\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) \le 1.518149101387913421177978107255154532669 \cdot 10^{64}:\\
\;\;\;\;\sqrt[3]{{\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)}^{3}} - 1\\

\mathbf{else}:\\
\;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\

\end{array}
double f(double a, double b) {
        double r150237 = a;
        double r150238 = r150237 * r150237;
        double r150239 = b;
        double r150240 = r150239 * r150239;
        double r150241 = r150238 + r150240;
        double r150242 = 2.0;
        double r150243 = pow(r150241, r150242);
        double r150244 = 4.0;
        double r150245 = 1.0;
        double r150246 = r150245 + r150237;
        double r150247 = r150238 * r150246;
        double r150248 = 3.0;
        double r150249 = r150248 * r150237;
        double r150250 = r150245 - r150249;
        double r150251 = r150240 * r150250;
        double r150252 = r150247 + r150251;
        double r150253 = r150244 * r150252;
        double r150254 = r150243 + r150253;
        double r150255 = r150254 - r150245;
        return r150255;
}

double f(double a, double b) {
        double r150256 = a;
        double r150257 = r150256 * r150256;
        double r150258 = b;
        double r150259 = r150258 * r150258;
        double r150260 = r150257 + r150259;
        double r150261 = 2.0;
        double r150262 = pow(r150260, r150261);
        double r150263 = 4.0;
        double r150264 = 1.0;
        double r150265 = r150264 + r150256;
        double r150266 = r150257 * r150265;
        double r150267 = 3.0;
        double r150268 = r150267 * r150256;
        double r150269 = r150264 - r150268;
        double r150270 = r150259 * r150269;
        double r150271 = r150266 + r150270;
        double r150272 = r150263 * r150271;
        double r150273 = r150262 + r150272;
        double r150274 = 1.5181491013879134e+64;
        bool r150275 = r150273 <= r150274;
        double r150276 = 3.0;
        double r150277 = pow(r150273, r150276);
        double r150278 = cbrt(r150277);
        double r150279 = r150278 - r150264;
        double r150280 = 4.0;
        double r150281 = pow(r150256, r150280);
        double r150282 = pow(r150258, r150280);
        double r150283 = 2.0;
        double r150284 = pow(r150256, r150283);
        double r150285 = pow(r150258, r150283);
        double r150286 = r150284 * r150285;
        double r150287 = r150283 * r150286;
        double r150288 = r150282 + r150287;
        double r150289 = r150281 + r150288;
        double r150290 = r150289 - r150264;
        double r150291 = r150275 ? r150279 : r150290;
        return r150291;
}

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. Split input into 2 regimes
  2. if (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) < 1.5181491013879134e+64

    1. Initial program 0.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\]
    2. Using strategy rm
    3. Applied add-cbrt-cube0.1

      \[\leadsto \color{blue}{\sqrt[3]{\left(\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) \cdot \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)\right) \cdot \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\]
    4. Simplified0.1

      \[\leadsto \sqrt[3]{\color{blue}{{\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)}^{3}}} - 1\]

    if 1.5181491013879134e+64 < (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a))))))

    1. Initial program 0.5

      \[\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. Taylor expanded around inf 0.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;{\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) \le 1.518149101387913421177978107255154532669 \cdot 10^{64}:\\ \;\;\;\;\sqrt[3]{{\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)}^{3}} - 1\\ \mathbf{else}:\\ \;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\ \end{array}\]

Reproduce

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