Average Error: 0.2 → 0.1
Time: 3.8s
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}\;a \cdot a \le 1.0752595847695641 \cdot 10^{-43}:\\ \;\;\;\;\left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + 4 \cdot \left(b \cdot b\right)\right) - 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(b \cdot b\right)\right) - 1
\begin{array}{l}
\mathbf{if}\;a \cdot a \le 1.0752595847695641 \cdot 10^{-43}:\\
\;\;\;\;\left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + 4 \cdot \left(b \cdot b\right)\right) - 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 r341107 = a;
        double r341108 = r341107 * r341107;
        double r341109 = b;
        double r341110 = r341109 * r341109;
        double r341111 = r341108 + r341110;
        double r341112 = 2.0;
        double r341113 = pow(r341111, r341112);
        double r341114 = 4.0;
        double r341115 = r341114 * r341110;
        double r341116 = r341113 + r341115;
        double r341117 = 1.0;
        double r341118 = r341116 - r341117;
        return r341118;
}

double f(double a, double b) {
        double r341119 = a;
        double r341120 = r341119 * r341119;
        double r341121 = 1.075259584769564e-43;
        bool r341122 = r341120 <= r341121;
        double r341123 = b;
        double r341124 = 4.0;
        double r341125 = pow(r341123, r341124);
        double r341126 = 2.0;
        double r341127 = 2.0;
        double r341128 = pow(r341119, r341127);
        double r341129 = pow(r341123, r341127);
        double r341130 = r341128 * r341129;
        double r341131 = r341126 * r341130;
        double r341132 = r341125 + r341131;
        double r341133 = 4.0;
        double r341134 = r341123 * r341123;
        double r341135 = r341133 * r341134;
        double r341136 = r341132 + r341135;
        double r341137 = 1.0;
        double r341138 = r341136 - r341137;
        double r341139 = pow(r341119, r341124);
        double r341140 = r341127 * r341130;
        double r341141 = r341125 + r341140;
        double r341142 = r341139 + r341141;
        double r341143 = r341142 - r341137;
        double r341144 = r341122 ? r341138 : r341143;
        return r341144;
}

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 (* a a) < 1.075259584769564e-43

    1. Initial program 0.1

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

      \[\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\]

    if 1.075259584769564e-43 < (* a a)

    1. Initial program 0.4

      \[\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.3

      \[\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}\;a \cdot a \le 1.0752595847695641 \cdot 10^{-43}:\\ \;\;\;\;\left(\left({b}^{4} + 2 \cdot \left({a}^{2} \cdot {b}^{2}\right)\right) + 4 \cdot \left(b \cdot b\right)\right) - 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 2020049 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))