Average Error: 0.2 → 0.8
Time: 20.2s
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}\;b \cdot b \le 0.8726181648407301816305903230386320501566:\\ \;\;\;\;\left(\left(\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right) \cdot 2 + {a}^{4}\right) + \left(4 \cdot \left(1 + a\right)\right) \cdot \left(a \cdot a\right)\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right)\right) - 1\\ \mathbf{else}:\\ \;\;\;\;\left(\left({b}^{4} + \left(\left(a \cdot a\right) \cdot 2\right) \cdot {b}^{2}\right) + {a}^{4}\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}\;b \cdot b \le 0.8726181648407301816305903230386320501566:\\
\;\;\;\;\left(\left(\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right) \cdot 2 + {a}^{4}\right) + \left(4 \cdot \left(1 + a\right)\right) \cdot \left(a \cdot a\right)\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right)\right) - 1\\

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

\end{array}
double f(double a, double b) {
        double r170354 = a;
        double r170355 = r170354 * r170354;
        double r170356 = b;
        double r170357 = r170356 * r170356;
        double r170358 = r170355 + r170357;
        double r170359 = 2.0;
        double r170360 = pow(r170358, r170359);
        double r170361 = 4.0;
        double r170362 = 1.0;
        double r170363 = r170362 + r170354;
        double r170364 = r170355 * r170363;
        double r170365 = 3.0;
        double r170366 = r170365 * r170354;
        double r170367 = r170362 - r170366;
        double r170368 = r170357 * r170367;
        double r170369 = r170364 + r170368;
        double r170370 = r170361 * r170369;
        double r170371 = r170360 + r170370;
        double r170372 = r170371 - r170362;
        return r170372;
}

double f(double a, double b) {
        double r170373 = b;
        double r170374 = r170373 * r170373;
        double r170375 = 0.8726181648407302;
        bool r170376 = r170374 <= r170375;
        double r170377 = a;
        double r170378 = r170377 * r170377;
        double r170379 = r170378 * r170374;
        double r170380 = 2.0;
        double r170381 = r170379 * r170380;
        double r170382 = 4.0;
        double r170383 = pow(r170377, r170382);
        double r170384 = r170381 + r170383;
        double r170385 = 4.0;
        double r170386 = 1.0;
        double r170387 = r170386 + r170377;
        double r170388 = r170385 * r170387;
        double r170389 = r170388 * r170378;
        double r170390 = r170384 + r170389;
        double r170391 = 3.0;
        double r170392 = r170377 * r170391;
        double r170393 = r170386 - r170392;
        double r170394 = r170374 * r170393;
        double r170395 = r170385 * r170394;
        double r170396 = r170390 + r170395;
        double r170397 = r170396 - r170386;
        double r170398 = pow(r170373, r170382);
        double r170399 = 2.0;
        double r170400 = r170378 * r170399;
        double r170401 = pow(r170373, r170399);
        double r170402 = r170400 * r170401;
        double r170403 = r170398 + r170402;
        double r170404 = r170403 + r170383;
        double r170405 = r170404 - r170386;
        double r170406 = r170376 ? r170397 : r170405;
        return r170406;
}

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) < 0.8726181648407302

    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 distribute-lft-in0.1

      \[\leadsto \left({\left(a \cdot a + b \cdot b\right)}^{2} + \color{blue}{\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right)\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right)}\right) - 1\]
    4. Applied associate-+r+0.1

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

      \[\leadsto \left(\color{blue}{\left({\left({b}^{2} + a \cdot a\right)}^{2} + \left(a \cdot a\right) \cdot \left(\left(a + 1\right) \cdot 4\right)\right)} + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
    6. Taylor expanded around 0 0.3

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

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

    if 0.8726181648407302 < (* b b)

    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 2.5

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \cdot b \le 0.8726181648407301816305903230386320501566:\\ \;\;\;\;\left(\left(\left(\left(\left(a \cdot a\right) \cdot \left(b \cdot b\right)\right) \cdot 2 + {a}^{4}\right) + \left(4 \cdot \left(1 + a\right)\right) \cdot \left(a \cdot a\right)\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right)\right) - 1\\ \mathbf{else}:\\ \;\;\;\;\left(\left({b}^{4} + \left(\left(a \cdot a\right) \cdot 2\right) \cdot {b}^{2}\right) + {a}^{4}\right) - 1\\ \end{array}\]

Reproduce

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