Average Error: 0.2 → 0.7
Time: 20.3s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\begin{array}{l} \mathbf{if}\;b \cdot b \le 1.02236235983317489029397541438357559891 \cdot 10^{-37} \lor \neg \left(b \cdot b \le 15928146782686.330078125\right):\\ \;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\ \mathbf{else}:\\ \;\;\;\;\left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + \left(\sqrt[3]{4} \cdot \sqrt[3]{4}\right) \cdot \left(\sqrt[3]{4} \cdot \left(b \cdot b\right)\right)\right) - 1\\ \end{array}\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\begin{array}{l}
\mathbf{if}\;b \cdot b \le 1.02236235983317489029397541438357559891 \cdot 10^{-37} \lor \neg \left(b \cdot b \le 15928146782686.330078125\right):\\
\;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\

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

\end{array}
double f(double a, double b) {
        double r268298 = a;
        double r268299 = r268298 * r268298;
        double r268300 = b;
        double r268301 = r268300 * r268300;
        double r268302 = r268299 + r268301;
        double r268303 = 2.0;
        double r268304 = pow(r268302, r268303);
        double r268305 = 4.0;
        double r268306 = r268305 * r268301;
        double r268307 = r268304 + r268306;
        double r268308 = 1.0;
        double r268309 = r268307 - r268308;
        return r268309;
}

double f(double a, double b) {
        double r268310 = b;
        double r268311 = r268310 * r268310;
        double r268312 = 1.0223623598331749e-37;
        bool r268313 = r268311 <= r268312;
        double r268314 = 15928146782686.33;
        bool r268315 = r268311 <= r268314;
        double r268316 = !r268315;
        bool r268317 = r268313 || r268316;
        double r268318 = a;
        double r268319 = 4.0;
        double r268320 = pow(r268318, r268319);
        double r268321 = pow(r268310, r268319);
        double r268322 = 2.0;
        double r268323 = pow(r268318, r268322);
        double r268324 = pow(r268310, r268322);
        double r268325 = r268323 * r268324;
        double r268326 = r268322 * r268325;
        double r268327 = r268321 + r268326;
        double r268328 = r268320 + r268327;
        double r268329 = 1.0;
        double r268330 = r268328 - r268329;
        double r268331 = 2.0;
        double r268332 = r268331 * r268325;
        double r268333 = r268321 + r268332;
        double r268334 = 4.0;
        double r268335 = cbrt(r268334);
        double r268336 = r268335 * r268335;
        double r268337 = r268335 * r268311;
        double r268338 = r268336 * r268337;
        double r268339 = r268333 + r268338;
        double r268340 = r268339 - r268329;
        double r268341 = r268317 ? r268330 : r268340;
        return r268341;
}

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 (* b b) < 1.0223623598331749e-37 or 15928146782686.33 < (* b b)

    1. Initial program 0.2

      \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\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\]

    if 1.0223623598331749e-37 < (* b b) < 15928146782686.33

    1. Initial program 0.2

      \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
    2. Taylor expanded around 0 10.6

      \[\leadsto \left(\color{blue}{\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
    3. Using strategy rm
    4. Applied add-cube-cbrt10.6

      \[\leadsto \left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + \color{blue}{\left(\left(\sqrt[3]{4} \cdot \sqrt[3]{4}\right) \cdot \sqrt[3]{4}\right)} \cdot \left(b \cdot b\right)\right) - 1\]
    5. Applied associate-*l*10.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \cdot b \le 1.02236235983317489029397541438357559891 \cdot 10^{-37} \lor \neg \left(b \cdot b \le 15928146782686.330078125\right):\\ \;\;\;\;\left({a}^{4} + \left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right)\right) - 1\\ \mathbf{else}:\\ \;\;\;\;\left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + \left(\sqrt[3]{4} \cdot \sqrt[3]{4}\right) \cdot \left(\sqrt[3]{4} \cdot \left(b \cdot b\right)\right)\right) - 1\\ \end{array}\]

Reproduce

herbie shell --seed 2019326 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))