Average Error: 0.2 → 0.1
Time: 7.1s
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(3 + 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(3 + a\right)\right) \le 2.502137265250341240314415276099979861861 \cdot 10^{55}:\\ \;\;\;\;\sqrt[3]{\sqrt{{\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(3 + a\right)\right)\right)}^{3}} \cdot \sqrt{{\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(3 + 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(3 + 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(3 + a\right)\right) \le 2.502137265250341240314415276099979861861 \cdot 10^{55}:\\
\;\;\;\;\sqrt[3]{\sqrt{{\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(3 + a\right)\right)\right)}^{3}} \cdot \sqrt{{\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(3 + 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 r279063 = a;
        double r279064 = r279063 * r279063;
        double r279065 = b;
        double r279066 = r279065 * r279065;
        double r279067 = r279064 + r279066;
        double r279068 = 2.0;
        double r279069 = pow(r279067, r279068);
        double r279070 = 4.0;
        double r279071 = 1.0;
        double r279072 = r279071 - r279063;
        double r279073 = r279064 * r279072;
        double r279074 = 3.0;
        double r279075 = r279074 + r279063;
        double r279076 = r279066 * r279075;
        double r279077 = r279073 + r279076;
        double r279078 = r279070 * r279077;
        double r279079 = r279069 + r279078;
        double r279080 = r279079 - r279071;
        return r279080;
}

double f(double a, double b) {
        double r279081 = a;
        double r279082 = r279081 * r279081;
        double r279083 = b;
        double r279084 = r279083 * r279083;
        double r279085 = r279082 + r279084;
        double r279086 = 2.0;
        double r279087 = pow(r279085, r279086);
        double r279088 = 4.0;
        double r279089 = 1.0;
        double r279090 = r279089 - r279081;
        double r279091 = r279082 * r279090;
        double r279092 = 3.0;
        double r279093 = r279092 + r279081;
        double r279094 = r279084 * r279093;
        double r279095 = r279091 + r279094;
        double r279096 = r279088 * r279095;
        double r279097 = r279087 + r279096;
        double r279098 = 2.502137265250341e+55;
        bool r279099 = r279097 <= r279098;
        double r279100 = 3.0;
        double r279101 = pow(r279097, r279100);
        double r279102 = sqrt(r279101);
        double r279103 = r279102 * r279102;
        double r279104 = cbrt(r279103);
        double r279105 = r279104 - r279089;
        double r279106 = 4.0;
        double r279107 = pow(r279081, r279106);
        double r279108 = pow(r279083, r279106);
        double r279109 = 2.0;
        double r279110 = pow(r279081, r279109);
        double r279111 = pow(r279083, r279109);
        double r279112 = r279110 * r279111;
        double r279113 = r279109 * r279112;
        double r279114 = r279108 + r279113;
        double r279115 = r279107 + r279114;
        double r279116 = r279115 - r279089;
        double r279117 = r279099 ? r279105 : r279116;
        return r279117;
}

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) (+ 3.0 a))))) < 2.502137265250341e+55

    1. Initial program 0.0

      \[\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(3 + 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(3 + 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(3 + 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(3 + 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(3 + a\right)\right)\right)}^{3}}} - 1\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt0.1

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

    if 2.502137265250341e+55 < (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 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(3 + a\right)\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\]
  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(3 + a\right)\right) \le 2.502137265250341240314415276099979861861 \cdot 10^{55}:\\ \;\;\;\;\sqrt[3]{\sqrt{{\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(3 + a\right)\right)\right)}^{3}} \cdot \sqrt{{\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(3 + 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 2019362 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))