Factor Big Integers with the Parallel Quadratic Sieve
Features the multiple polynomial quadratic sieve (MPQS) algorithm
for factoring large integers and a vectorized factoring function that
returns the complete factorization of an integer. The MPQS is based off of
the seminal work of Carl Pomerance (1984) <doi:10.1007/3-540-39757-4_17>
along with the modification of multiple polynomials introduced by Peter
Montgomery and J. Davis as outlined by Robert D. Silverman (1987)
<doi:10.1090/S0025-5718-1987-0866119-8>. Utilizes the C library
GMP (GNU Multiple Precision Arithmetic) and 'RcppThread' for sieving
multiple polynomials in parallel. The Pollard's rho algorithm for
factoring smaller numbers is the same algorithm used by the factorize
function in the 'gmp' package.

Features the multiple polynomial quadratic sieve (MPQS) algorithm
for factoring large integers and a vectorized factoring function that
returns the complete factorization of an integer. The MPQS is based off of
the seminal work of Carl Pomerance (1984) <doi:10.1007/3-540-39757-4_17>
along with the modification of multiple polynomials introduced by Peter
Montgomery and J. Davis as outlined by Robert D. Silverman (1987)
<doi:10.1090/S0025-5718-1987-0866119-8>. Utilizes the C library
GMP (GNU Multiple Precision Arithmetic) and 'RcppThread' for factoring
integers in parallel. For smaller integers, a simple Elliptic
Curve algorithm is attempted followed by a constrained version of
Pollard's rho algorithm. The Pollard's rho algorithm is the same algorithm
used by the factorize function in the 'gmp' package.

'Rcpp' Integration for the 'Blaze' High-Performance C++ Math
Library
Ching-Chuan Chen, Klaus Iglberger, Georg Hager, Christian Godenschwager,
Tobias Scharpff
'Blaze' is an open-source, high-performance C++ math library
for dense and sparse arithmetic. With its state-of-the-art Smart Expression
Template implementation Blaze combines the elegance and ease of use of a
domain-specific language with HPC-grade performance, making it one of the most
intuitive and fastest C++ math libraries available. The Blaze library offers:
- high performance through the integration of BLAS libraries and manually
tuned HPC math kernels - vectorization by SSE, SSE2, SSE3, SSSE3, SSE4, AVX,
AVX2, AVX-512, FMA, and SVML - parallel execution by OpenMP, C++11 threads and
Boost threads (Boost threads is disables in RcppBlaze) - the intuitive and easy
to use API of a domain specific language - unified arithmetic with dense and
sparse vectors and matrices - thoroughly tested matrix and vector arithmetic -
completely portable, high quality C++ source code The RcppBlaze package includes
the header files from the Blaze library with disabling some functionalities
related to link to the thread and system libraries which make RcppBlaze be
a header-only library. Therefore, users do not need to install Blaze and the
dependency Boost. Blaze is licensed under the New (Revised) BSD license, while
RcppBlaze (the Rcpp bindings/bridge to Blaze) is licensed under the GNU GPL
version 2 or later, as is the rest of Rcpp. Note that since latest version of
Blaze (3.0) commit to C++14 which does not used by most R users, we will use the
version 2.6 of Blaze which is C++98 compatible to support the most compilers and
system.