Average Error: 0.2 → 0.0
Time: 5.0s
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 \le -6.7352231204874867757231848841570354125 \cdot 10^{-4} \lor \neg \left(a \le 9.001355373021340009814854300415620791398 \cdot 10^{-8}\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) + 4 \cdot \left(b \cdot b\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 \le -6.7352231204874867757231848841570354125 \cdot 10^{-4} \lor \neg \left(a \le 9.001355373021340009814854300415620791398 \cdot 10^{-8}\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) + 4 \cdot \left(b \cdot b\right)\right) - 1\\

\end{array}
double f(double a, double b) {
        double r248167 = a;
        double r248168 = r248167 * r248167;
        double r248169 = b;
        double r248170 = r248169 * r248169;
        double r248171 = r248168 + r248170;
        double r248172 = 2.0;
        double r248173 = pow(r248171, r248172);
        double r248174 = 4.0;
        double r248175 = r248174 * r248170;
        double r248176 = r248173 + r248175;
        double r248177 = 1.0;
        double r248178 = r248176 - r248177;
        return r248178;
}

double f(double a, double b) {
        double r248179 = a;
        double r248180 = -0.0006735223120487487;
        bool r248181 = r248179 <= r248180;
        double r248182 = 9.00135537302134e-08;
        bool r248183 = r248179 <= r248182;
        double r248184 = !r248183;
        bool r248185 = r248181 || r248184;
        double r248186 = 4.0;
        double r248187 = pow(r248179, r248186);
        double r248188 = b;
        double r248189 = pow(r248188, r248186);
        double r248190 = 2.0;
        double r248191 = pow(r248179, r248190);
        double r248192 = pow(r248188, r248190);
        double r248193 = r248191 * r248192;
        double r248194 = r248190 * r248193;
        double r248195 = r248189 + r248194;
        double r248196 = r248187 + r248195;
        double r248197 = 1.0;
        double r248198 = r248196 - r248197;
        double r248199 = 2.0;
        double r248200 = r248199 * r248193;
        double r248201 = r248189 + r248200;
        double r248202 = 4.0;
        double r248203 = r248188 * r248188;
        double r248204 = r248202 * r248203;
        double r248205 = r248201 + r248204;
        double r248206 = r248205 - r248197;
        double r248207 = r248185 ? r248198 : r248206;
        return r248207;
}

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 < -0.0006735223120487487 or 9.00135537302134e-08 < a

    1. Initial program 0.5

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

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

    if -0.0006735223120487487 < a < 9.00135537302134e-08

    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\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -6.7352231204874867757231848841570354125 \cdot 10^{-4} \lor \neg \left(a \le 9.001355373021340009814854300415620791398 \cdot 10^{-8}\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) + 4 \cdot \left(b \cdot b\right)\right) - 1\\ \end{array}\]

Reproduce

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