Average Error: 0.2 → 0.5
Time: 25.6s
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.061383019026471481028624498784720164347 \cdot 10^{-13} \lor \neg \left(b \cdot b \le 911.531239174287975401966832578182220459\right):\\ \;\;\;\;\left(\mathsf{fma}\left(2, {a}^{2} \cdot {b}^{2}, {b}^{4}\right) + {a}^{4}\right) - 1\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{{\left({\left(\mathsf{fma}\left(a, a, {b}^{2}\right)\right)}^{2}\right)}^{3}} + 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}\;b \cdot b \le 1.061383019026471481028624498784720164347 \cdot 10^{-13} \lor \neg \left(b \cdot b \le 911.531239174287975401966832578182220459\right):\\
\;\;\;\;\left(\mathsf{fma}\left(2, {a}^{2} \cdot {b}^{2}, {b}^{4}\right) + {a}^{4}\right) - 1\\

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

\end{array}
double f(double a, double b) {
        double r176792 = a;
        double r176793 = r176792 * r176792;
        double r176794 = b;
        double r176795 = r176794 * r176794;
        double r176796 = r176793 + r176795;
        double r176797 = 2.0;
        double r176798 = pow(r176796, r176797);
        double r176799 = 4.0;
        double r176800 = r176799 * r176795;
        double r176801 = r176798 + r176800;
        double r176802 = 1.0;
        double r176803 = r176801 - r176802;
        return r176803;
}

double f(double a, double b) {
        double r176804 = b;
        double r176805 = r176804 * r176804;
        double r176806 = 1.0613830190264715e-13;
        bool r176807 = r176805 <= r176806;
        double r176808 = 911.531239174288;
        bool r176809 = r176805 <= r176808;
        double r176810 = !r176809;
        bool r176811 = r176807 || r176810;
        double r176812 = 2.0;
        double r176813 = a;
        double r176814 = pow(r176813, r176812);
        double r176815 = pow(r176804, r176812);
        double r176816 = r176814 * r176815;
        double r176817 = 4.0;
        double r176818 = pow(r176804, r176817);
        double r176819 = fma(r176812, r176816, r176818);
        double r176820 = pow(r176813, r176817);
        double r176821 = r176819 + r176820;
        double r176822 = 1.0;
        double r176823 = r176821 - r176822;
        double r176824 = fma(r176813, r176813, r176815);
        double r176825 = 2.0;
        double r176826 = pow(r176824, r176825);
        double r176827 = 3.0;
        double r176828 = pow(r176826, r176827);
        double r176829 = cbrt(r176828);
        double r176830 = 4.0;
        double r176831 = r176830 * r176805;
        double r176832 = r176829 + r176831;
        double r176833 = r176832 - r176822;
        double r176834 = r176811 ? r176823 : r176833;
        return r176834;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Split input into 2 regimes
  2. if (* b b) < 1.0613830190264715e-13 or 911.531239174288 < (* 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.3

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(b \cdot b, \mathsf{fma}\left(a \cdot a, 2, b \cdot b\right), {a}^{4}\right)} - 1\]
    4. Using strategy rm
    5. Applied fma-udef0.4

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

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

    if 1.0613830190264715e-13 < (* b b) < 911.531239174288

    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. Using strategy rm
    3. Applied add-cbrt-cube9.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \cdot b \le 1.061383019026471481028624498784720164347 \cdot 10^{-13} \lor \neg \left(b \cdot b \le 911.531239174287975401966832578182220459\right):\\ \;\;\;\;\left(\mathsf{fma}\left(2, {a}^{2} \cdot {b}^{2}, {b}^{4}\right) + {a}^{4}\right) - 1\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{{\left({\left(\mathsf{fma}\left(a, a, {b}^{2}\right)\right)}^{2}\right)}^{3}} + 4 \cdot \left(b \cdot b\right)\right) - 1\\ \end{array}\]

Reproduce

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