Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > e8773dc1178a3ee82e29ab36424dc729 > files > 1141

libbeecrypt-devel-4.2.1-6.mga1.i586.rpm

\hypertarget{mp_8h}{
\section{include/beecrypt/mp.h File Reference}
\label{mp_8h}\index{include/beecrypt/mp.h@{include/beecrypt/mp.h}}
}


Multi-\/precision integer routines.  


{\ttfamily \#include \char`\"{}beecrypt/api.h\char`\"{}}\par
{\ttfamily \#include \char`\"{}beecrypt/mpopt.h\char`\"{}}\par
Include dependency graph for mp.h:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=268pt]{mp_8h__incl}
\end{center}
\end{figure}
\subsection*{Defines}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{mp_8h_a3317414bc77cc27f0c50d300fc93db7e}{MP\_\-HWBITS}~(MP\_\-WBITS $>$$>$ 1)
\item 
\#define \hyperlink{mp_8h_ac32fb614379620608d1c733a79132cfa}{MP\_\-WBYTES}~(MP\_\-WBITS $>$$>$ 3)
\item 
\#define \hyperlink{mp_8h_a3650f0cbb0aaa7100a4a7fba476920bf}{MP\_\-WNIBBLES}~(MP\_\-WBITS $>$$>$ 2)
\item 
\#define \hyperlink{mp_8h_a7a243883fb94433b237da964799fabcd}{MP\_\-WORDS\_\-TO\_\-BITS}(x)~((x) $<$$<$ 5)
\item 
\#define \hyperlink{mp_8h_ab77b2dd70af10d0705b6048dc732a4dc}{MP\_\-WORDS\_\-TO\_\-NIBBLES}(x)~((x) $<$$<$ 3)
\item 
\#define \hyperlink{mp_8h_a337d99143ec5b28671099a5ea022f3b9}{MP\_\-WORDS\_\-TO\_\-BYTES}(x)~((x) $<$$<$ 2)
\item 
\#define \hyperlink{mp_8h_ad05de288398b539cf645bec59d9f27e8}{MP\_\-BITS\_\-TO\_\-WORDS}(x)~((x) $>$$>$ 5)
\item 
\#define \hyperlink{mp_8h_a65dc4dd0b6906f36f66e42a55097b8b1}{MP\_\-NIBBLES\_\-TO\_\-WORDS}(x)~((x) $>$$>$ 3)
\item 
\#define \hyperlink{mp_8h_a9b78d45cecc26f578dc32c4ae2c803dd}{MP\_\-BYTES\_\-TO\_\-WORDS}(x)~((x) $>$$>$ 2)
\item 
\#define \hyperlink{mp_8h_a696235b870f5868d66258cbfc903affa}{MP\_\-MSBMASK}~(((\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw}) 0x1) $<$$<$ (MP\_\-WBITS-\/1))
\item 
\#define \hyperlink{mp_8h_a137aeb18139f4f7c871639eb67ecf7b9}{MP\_\-LSBMASK}~((\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw}) 0x1)
\item 
\#define \hyperlink{mp_8h_af5466aa801f08b6c63e02f54cfc7106b}{MP\_\-ALLMASK}~$\sim$((\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw}) 0x0)
\item 
\#define \hyperlink{mp_8h_afb750ee5bfe6cdd5a0ed87dccf981d80}{mpcopy}(size, dst, src)~memcpy(dst, src, MP\_\-WORDS\_\-TO\_\-BYTES(size))
\item 
\#define \hyperlink{mp_8h_abddd3139e57f9db0c67a896024bc9684}{mpmove}(size, dst, src)~memmove(dst, src, MP\_\-WORDS\_\-TO\_\-BYTES(size))
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{mp_8h_ae9fd060d4b6ce84404107a1523f34276}{mpzero} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function zeroes a multi-\/precision integer of a given size. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a1624fb65f4a9cac6f6246d64bb0189ea}{mpfill} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} fill)
\begin{DoxyCompactList}\small\item\em This function fills each word of a multi-\/precision integer with a given value. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a70c9ff9c0f765307214fb28d22cc2c23}{mpodd} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This functions tests if a multi-\/precision integer is odd. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ab0520c67c603a7e32c9eeb6a39a02595}{mpeven} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if a multi-\/precision integer is even. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_aa849fd262347ab62ea3b1bf4afbf7c7c}{mpz} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if a multi-\/precision integer is zero. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ade7306885f5508bc52954f6be8820558}{mpnz} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if a multi-\/precision integer is not zero. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae801d1996190439b2cf80548f6a03a31}{mpeq} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of the same size are equal. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae661ccc4c37b796f4671f882e71c9cc4}{mpne} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of the same size differ. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae4905ad4ef2bb6b7e8a2aa79460041c6}{mpgt} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of the same size is greater than the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_af4e3a7316789993b73b2289bf34c837b}{mplt} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of the same size is less than the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae01843e52c6a0b0c28c345d8040670dc}{mpge} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of the same size is greater than or equal to the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_af987c3b7b75fc0eae1f97aab58888006}{mple} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of the same size is less than or equal to the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_acc8c19971240f6ea22f6b81c1db3553b}{mpcmp} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function performs a comparison of two multi-\/precision integers of the same size. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_af51c09b612e8033399cff6febdb9b505}{mpeqx} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of different size are equal. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_abecba2b8f414da05ee7c9959ac72acb1}{mpnex} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of different size are equal. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae2a7b28715b9a820ceda11b77d901953}{mpgtx} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of different size is greater than the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a2d772e5778ec336da5a56302f21786a0}{mpltx} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of different size is less than the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a01b1186616ddfd912772cddce1fc292b}{mpgex} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of different size is greater than or equal to the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_adbd7f836f9246cf904207315c346a56c}{mplex} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if the first of two multi-\/precision integers of different size is less than or equal to the second. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ac0b786d9f5d016b2d0d06b22d6f89862}{mpcmpx} (size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function performs a comparison of two multi-\/precision integers of the different size. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae9ab3d1ce03ffda281d610fd8123b06e}{mpisone} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This functions tests if the value of a multi-\/precision integer is equal to one. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a0605a0ef9815dce0cf2743aafdac03e6}{mpistwo} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if the value of a multi-\/precision integer is equal to two. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_af1f8a61b04fe27911d51aec0c6468238}{mpleone} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if the value of a multi-\/precision integer is less than or equal to one. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a75df6af46d913aad6f591583683d04e7}{mpeqmone} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function tests if multi-\/precision integer x is equal to y minus one. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a12d85e63b1d9f4d68909c51890ef0738}{mpmsbset} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if the most significant bit of a multi-\/precision integer is set. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a84c1045a3fe0074b8b954679bcee62de}{mplsbset} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function tests if the leiast significant bit of a multi-\/precision integer is set. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_ab3a5821696b1b13a84d6648332ba6cf7}{mpsetmsb} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function sets the most significant bit of a multi-\/precision integer. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_ac4ccde3ff8c2aac9e324fb0832e28e1a}{mpsetlsb} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function sets the least significant bit of a multi-\/precision integer. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a298b2af39ad306efab02829d83d86b4b}{mpclrmsb} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function clears the most significant bit of a multi-\/precision integer. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_afa0eacfccee374f6e7d4bdf388ddca01}{mpclrlsb} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function clears the least significant bit of a multi-\/precision integer. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a13f975884c63ac0be76d2b444a7c6eb4}{mpand} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function computes the bit-\/wise AND of two multi-\/precision integers. Modifies xdata. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_aa1baaac1e8919a218b2369355a8c1c63}{mpor} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function computes the bit-\/wise OR of two multi-\/precision integers. Modifies xdata. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a6373a586b0e90cb78179143c89de4132}{mpxor} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function computes the bit-\/wise XOR of two multi-\/precision integers. Modifies xdata. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_ad0c8185589374810679c5a0cbbe3e0ca}{mpnot} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function flips all bits of a multi-\/precision integer. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_ad9f0efe339edc592551911ba2216e8cd}{mpsetw} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} y)
\begin{DoxyCompactList}\small\item\em This function sets the value of a multi-\/precision integer to the given word. The given value is copied into the least significant word, while the most significant words are zeroed. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_aa6dec413795f2d0138d09cb640dc81df}{mpsetws} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t y)
\begin{DoxyCompactList}\small\item\em This function sets the value of a multi-\/precision integer to the given word. The given value is copied into the least significant word(s), while the most significant words are zeroed. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_af94f0424014578a78d77c2084f3f3d5d}{mpsetx} (size\_\-t xsize, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function set the value of the first multi-\/precision integer to the second, truncating the most significant words if ysize $>$ xsize, or zeroing the most significant words if ysize $<$ xsize. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ad2926f765db1823a1d17a285d97e9ced}{mpaddw} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} y)
\begin{DoxyCompactList}\small\item\em This function adds one word to a multi-\/precision integer. The performed operation is in pseudocode: x += y. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a3dad536563420e9c1f4445a08f37c681}{mpadd} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function adds two multi-\/precision integers of equal size. The performed operation is in pseudocode: x += y. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a101cb432729cd51b2a922ea4ec2281af}{mpaddx} (size\_\-t xsize, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function adds two multi-\/precision integers of different size. The performed operation in pseudocode: x += y. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a5814eb1185a0dc05da2f86323f5c8978}{mpsubw} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} y)
\begin{DoxyCompactList}\small\item\em This function subtracts one word to a multi-\/precision integer. The performed operation in pseudocode: x -\/= y. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_a49e790df163e11d7230d81bbc8d5fde2}{mpsub} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function subtracts two multi-\/precision integers of equal size. The performed operation in pseudocode: x -\/= y. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ae77b6a530198f3d8b3d9005b7cbcc0e5}{mpsubx} (size\_\-t xsize, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function subtracts two multi-\/precision integers of different size. The performed operation in pseudocode: x -\/= y. \item\end{DoxyCompactList}\item 
int \hyperlink{mp_8h_ac7f624f09b82cc0451fd76932564a69e}{mpmultwo} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_a5f26c9e232c74bacea5ae785692de1d4}{mpneg} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function negates a multi-\/precision integer. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{mp_8h_a5847c378eda16688587b23753b65e972}{mpsize} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function returns the true size of a multi-\/precision integer, after stripping leading zero words. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{mp_8h_abf18ad28b007603fdcc1d4c3695056e0}{mpbits} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function returns the number of significant bits in a multi-\/precision integer. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{mp_8h_a49ae96d66620926a51acc81e915696e5}{mpmszcnt} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
size\_\-t \hyperlink{mp_8h_a4a0a37729f64e516b74d3689db90eaf8}{mplszcnt} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_aa458547531ad86f7304d1beab35a5e7e}{mplshift} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data, size\_\-t count)
\item 
void \hyperlink{mp_8h_acbbc33f1d523347abbea10b755822c05}{mprshift} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data, size\_\-t count)
\item 
size\_\-t \hyperlink{mp_8h_a2ce894dd95d1f2e82a8afcc75fffaa9c}{mprshiftlsz} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
size\_\-t \hyperlink{mp_8h_a0b54adf94eaee674a4e3490b30a2f954}{mpnorm} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_a9bb92b1971621bcb54326369dc641ecf}{mpdivtwo} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_a9267926999bef7cfae96f50ec8fa7bd6}{mpsdivtwo} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} \hyperlink{mp_8h_a659c97a015a63a4405c9a45e6a1b49e6}{mpsetmul} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} y)
\begin{DoxyCompactList}\small\item\em This function performs a multi-\/precision multiply-\/setup. \item\end{DoxyCompactList}\item 
\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} \hyperlink{mp_8h_af6319411048f3dd303dfc3297b7c304f}{mpaddmul} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} y)
\begin{DoxyCompactList}\small\item\em This function performs a mult-\/precision multiply-\/accumulate. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a5891518a4754596508b8ba8002499714}{mpaddsqrtrc} (size\_\-t size, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function is used in the calculation of a multi-\/precision squaring. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_aa936396b75b6e41298482020363c2a94}{mpmul} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata)
\begin{DoxyCompactList}\small\item\em This function computes a full multi-\/precision product. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a7703ab7d9b0b2b4f1ebc6f7415029c9b}{mpsqr} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\begin{DoxyCompactList}\small\item\em This function computes a full multi-\/precision square. \item\end{DoxyCompactList}\item 
void \hyperlink{mp_8h_a599e5e794ea7df612bbdeba64cbddf12}{mpgcd\_\-w} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$wksp)
\item 
int \hyperlink{mp_8h_a872a570802ee8bbf3dc24df3361dcbc4}{mpextgcd\_\-w} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$wksp)
\item 
\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} \hyperlink{mp_8h_a0f56eafb94580fd8d838ae86a3a4e6f7}{mppndiv} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} xhi, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} xlo, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} y)
\item 
void \hyperlink{mp_8h_a8a0e5d0430ecb60521593164a766294b}{mpmod} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$wksp)
\item 
void \hyperlink{mp_8h_af2f708ed3c44a665a0024b11dc8e2817}{mpndivmod} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$result, size\_\-t xsize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$xdata, size\_\-t ysize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$ydata, \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$wksp)
\item 
void \hyperlink{mp_8h_ac1b16cee4b287487d5fde0f423b1f8e5}{mpprint} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_ae3dcf4ff639792019af97bfb9585107a}{mpprintln} (size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_a9d9d384955be2de91d8edcfc368e7079}{mpfprint} (FILE $\ast$f, size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
void \hyperlink{mp_8h_acc68e89bb559d3e271fef4400be91db0}{mpfprintln} (FILE $\ast$f, size\_\-t size, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$data)
\item 
int \hyperlink{mp_8h_ae82af22d91fe3e6a94cd649ab4bc7b3c}{i2osp} (\hyperlink{api_8h_ab8ef12fab634c171394422d0ee8baf94}{byte} $\ast$osdata, size\_\-t ossize, const \hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$idata, size\_\-t isize)
\item 
int \hyperlink{mp_8h_a2e26b9c3109b8a41a8c87bcfe1dfbfc8}{os2ip} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$idata, size\_\-t isize, const \hyperlink{api_8h_ab8ef12fab634c171394422d0ee8baf94}{byte} $\ast$osdata, size\_\-t ossize)
\item 
int \hyperlink{mp_8h_a75f587dd2a2c286258832da478297c7b}{hs2ip} (\hyperlink{api_8h_af807108d471a7c68e58df13068048e03}{mpw} $\ast$idata, size\_\-t isize, const char $\ast$hsdata, size\_\-t hssize)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Multi-\/precision integer routines. The routines declared here are all low-\/level operations, most of them suitable to be implemented in assembler. Prime candidates are in order of importance (according to gprof): 
\begin{DoxyItemize}
\item mpaddmul 
\item mpsetmul 
\item mpaddsqrtrc 
\item mpsub 
\item mpadd 
\end{DoxyItemize}

With some smart use of available assembler instructions, it's possible to speed these routines up by a factor of 2 to 4.

\begin{DoxyAuthor}{Author}
Bob Deblier $<$\href{mailto:bob.deblier@telenet.be}{\tt bob.deblier@telenet.be}$>$ 
\end{DoxyAuthor}


\subsection{Define Documentation}
\hypertarget{mp_8h_af5466aa801f08b6c63e02f54cfc7106b}{
\index{mp.h@{mp.h}!MP\_\-ALLMASK@{MP\_\-ALLMASK}}
\index{MP\_\-ALLMASK@{MP\_\-ALLMASK}!mp.h@{mp.h}}
\subsubsection[{MP\_\-ALLMASK}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-ALLMASK~$\sim$(({\bf mpw}) 0x0)}}
\label{mp_8h_af5466aa801f08b6c63e02f54cfc7106b}
\hypertarget{mp_8h_ad05de288398b539cf645bec59d9f27e8}{
\index{mp.h@{mp.h}!MP\_\-BITS\_\-TO\_\-WORDS@{MP\_\-BITS\_\-TO\_\-WORDS}}
\index{MP\_\-BITS\_\-TO\_\-WORDS@{MP\_\-BITS\_\-TO\_\-WORDS}!mp.h@{mp.h}}
\subsubsection[{MP\_\-BITS\_\-TO\_\-WORDS}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-BITS\_\-TO\_\-WORDS(
\begin{DoxyParamCaption}
\item[{}]{x}
\end{DoxyParamCaption}
)~((x) $>$$>$ 5)}}
\label{mp_8h_ad05de288398b539cf645bec59d9f27e8}
\hypertarget{mp_8h_a9b78d45cecc26f578dc32c4ae2c803dd}{
\index{mp.h@{mp.h}!MP\_\-BYTES\_\-TO\_\-WORDS@{MP\_\-BYTES\_\-TO\_\-WORDS}}
\index{MP\_\-BYTES\_\-TO\_\-WORDS@{MP\_\-BYTES\_\-TO\_\-WORDS}!mp.h@{mp.h}}
\subsubsection[{MP\_\-BYTES\_\-TO\_\-WORDS}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-BYTES\_\-TO\_\-WORDS(
\begin{DoxyParamCaption}
\item[{}]{x}
\end{DoxyParamCaption}
)~((x) $>$$>$ 2)}}
\label{mp_8h_a9b78d45cecc26f578dc32c4ae2c803dd}
\hypertarget{mp_8h_a3317414bc77cc27f0c50d300fc93db7e}{
\index{mp.h@{mp.h}!MP\_\-HWBITS@{MP\_\-HWBITS}}
\index{MP\_\-HWBITS@{MP\_\-HWBITS}!mp.h@{mp.h}}
\subsubsection[{MP\_\-HWBITS}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-HWBITS~(MP\_\-WBITS $>$$>$ 1)}}
\label{mp_8h_a3317414bc77cc27f0c50d300fc93db7e}
\hypertarget{mp_8h_a137aeb18139f4f7c871639eb67ecf7b9}{
\index{mp.h@{mp.h}!MP\_\-LSBMASK@{MP\_\-LSBMASK}}
\index{MP\_\-LSBMASK@{MP\_\-LSBMASK}!mp.h@{mp.h}}
\subsubsection[{MP\_\-LSBMASK}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-LSBMASK~(({\bf mpw}) 0x1)}}
\label{mp_8h_a137aeb18139f4f7c871639eb67ecf7b9}
\hypertarget{mp_8h_a696235b870f5868d66258cbfc903affa}{
\index{mp.h@{mp.h}!MP\_\-MSBMASK@{MP\_\-MSBMASK}}
\index{MP\_\-MSBMASK@{MP\_\-MSBMASK}!mp.h@{mp.h}}
\subsubsection[{MP\_\-MSBMASK}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-MSBMASK~((({\bf mpw}) 0x1) $<$$<$ (MP\_\-WBITS-\/1))}}
\label{mp_8h_a696235b870f5868d66258cbfc903affa}
\hypertarget{mp_8h_a65dc4dd0b6906f36f66e42a55097b8b1}{
\index{mp.h@{mp.h}!MP\_\-NIBBLES\_\-TO\_\-WORDS@{MP\_\-NIBBLES\_\-TO\_\-WORDS}}
\index{MP\_\-NIBBLES\_\-TO\_\-WORDS@{MP\_\-NIBBLES\_\-TO\_\-WORDS}!mp.h@{mp.h}}
\subsubsection[{MP\_\-NIBBLES\_\-TO\_\-WORDS}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-NIBBLES\_\-TO\_\-WORDS(
\begin{DoxyParamCaption}
\item[{}]{x}
\end{DoxyParamCaption}
)~((x) $>$$>$ 3)}}
\label{mp_8h_a65dc4dd0b6906f36f66e42a55097b8b1}
\hypertarget{mp_8h_ac32fb614379620608d1c733a79132cfa}{
\index{mp.h@{mp.h}!MP\_\-WBYTES@{MP\_\-WBYTES}}
\index{MP\_\-WBYTES@{MP\_\-WBYTES}!mp.h@{mp.h}}
\subsubsection[{MP\_\-WBYTES}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-WBYTES~(MP\_\-WBITS $>$$>$ 3)}}
\label{mp_8h_ac32fb614379620608d1c733a79132cfa}
\hypertarget{mp_8h_a3650f0cbb0aaa7100a4a7fba476920bf}{
\index{mp.h@{mp.h}!MP\_\-WNIBBLES@{MP\_\-WNIBBLES}}
\index{MP\_\-WNIBBLES@{MP\_\-WNIBBLES}!mp.h@{mp.h}}
\subsubsection[{MP\_\-WNIBBLES}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-WNIBBLES~(MP\_\-WBITS $>$$>$ 2)}}
\label{mp_8h_a3650f0cbb0aaa7100a4a7fba476920bf}
\hypertarget{mp_8h_a7a243883fb94433b237da964799fabcd}{
\index{mp.h@{mp.h}!MP\_\-WORDS\_\-TO\_\-BITS@{MP\_\-WORDS\_\-TO\_\-BITS}}
\index{MP\_\-WORDS\_\-TO\_\-BITS@{MP\_\-WORDS\_\-TO\_\-BITS}!mp.h@{mp.h}}
\subsubsection[{MP\_\-WORDS\_\-TO\_\-BITS}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-WORDS\_\-TO\_\-BITS(
\begin{DoxyParamCaption}
\item[{}]{x}
\end{DoxyParamCaption}
)~((x) $<$$<$ 5)}}
\label{mp_8h_a7a243883fb94433b237da964799fabcd}
\hypertarget{mp_8h_a337d99143ec5b28671099a5ea022f3b9}{
\index{mp.h@{mp.h}!MP\_\-WORDS\_\-TO\_\-BYTES@{MP\_\-WORDS\_\-TO\_\-BYTES}}
\index{MP\_\-WORDS\_\-TO\_\-BYTES@{MP\_\-WORDS\_\-TO\_\-BYTES}!mp.h@{mp.h}}
\subsubsection[{MP\_\-WORDS\_\-TO\_\-BYTES}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-WORDS\_\-TO\_\-BYTES(
\begin{DoxyParamCaption}
\item[{}]{x}
\end{DoxyParamCaption}
)~((x) $<$$<$ 2)}}
\label{mp_8h_a337d99143ec5b28671099a5ea022f3b9}
\hypertarget{mp_8h_ab77b2dd70af10d0705b6048dc732a4dc}{
\index{mp.h@{mp.h}!MP\_\-WORDS\_\-TO\_\-NIBBLES@{MP\_\-WORDS\_\-TO\_\-NIBBLES}}
\index{MP\_\-WORDS\_\-TO\_\-NIBBLES@{MP\_\-WORDS\_\-TO\_\-NIBBLES}!mp.h@{mp.h}}
\subsubsection[{MP\_\-WORDS\_\-TO\_\-NIBBLES}]{\setlength{\rightskip}{0pt plus 5cm}\#define MP\_\-WORDS\_\-TO\_\-NIBBLES(
\begin{DoxyParamCaption}
\item[{}]{x}
\end{DoxyParamCaption}
)~((x) $<$$<$ 3)}}
\label{mp_8h_ab77b2dd70af10d0705b6048dc732a4dc}
\hypertarget{mp_8h_afb750ee5bfe6cdd5a0ed87dccf981d80}{
\index{mp.h@{mp.h}!mpcopy@{mpcopy}}
\index{mpcopy@{mpcopy}!mp.h@{mp.h}}
\subsubsection[{mpcopy}]{\setlength{\rightskip}{0pt plus 5cm}\#define mpcopy(
\begin{DoxyParamCaption}
\item[{}]{size, }
\item[{}]{dst, }
\item[{}]{src}
\end{DoxyParamCaption}
)~memcpy(dst, src, MP\_\-WORDS\_\-TO\_\-BYTES(size))}}
\label{mp_8h_afb750ee5bfe6cdd5a0ed87dccf981d80}
\hypertarget{mp_8h_abddd3139e57f9db0c67a896024bc9684}{
\index{mp.h@{mp.h}!mpmove@{mpmove}}
\index{mpmove@{mpmove}!mp.h@{mp.h}}
\subsubsection[{mpmove}]{\setlength{\rightskip}{0pt plus 5cm}\#define mpmove(
\begin{DoxyParamCaption}
\item[{}]{size, }
\item[{}]{dst, }
\item[{}]{src}
\end{DoxyParamCaption}
)~memmove(dst, src, MP\_\-WORDS\_\-TO\_\-BYTES(size))}}
\label{mp_8h_abddd3139e57f9db0c67a896024bc9684}


\subsection{Function Documentation}
\hypertarget{mp_8h_a75f587dd2a2c286258832da478297c7b}{
\index{mp.h@{mp.h}!hs2ip@{hs2ip}}
\index{hs2ip@{hs2ip}!mp.h@{mp.h}}
\subsubsection[{hs2ip}]{\setlength{\rightskip}{0pt plus 5cm}int hs2ip (
\begin{DoxyParamCaption}
\item[{{\bf mpw} $\ast$}]{idata, }
\item[{size\_\-t}]{isize, }
\item[{const char $\ast$}]{hsdata, }
\item[{size\_\-t}]{hssize}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a75f587dd2a2c286258832da478297c7b}
\hypertarget{mp_8h_ae82af22d91fe3e6a94cd649ab4bc7b3c}{
\index{mp.h@{mp.h}!i2osp@{i2osp}}
\index{i2osp@{i2osp}!mp.h@{mp.h}}
\subsubsection[{i2osp}]{\setlength{\rightskip}{0pt plus 5cm}int i2osp (
\begin{DoxyParamCaption}
\item[{{\bf byte} $\ast$}]{osdata, }
\item[{size\_\-t}]{ossize, }
\item[{const {\bf mpw} $\ast$}]{idata, }
\item[{size\_\-t}]{isize}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae82af22d91fe3e6a94cd649ab4bc7b3c}
\hypertarget{mp_8h_a3dad536563420e9c1f4445a08f37c681}{
\index{mp.h@{mp.h}!mpadd@{mpadd}}
\index{mpadd@{mpadd}!mp.h@{mp.h}}
\subsubsection[{mpadd}]{\setlength{\rightskip}{0pt plus 5cm}int mpadd (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a3dad536563420e9c1f4445a08f37c681}


This function adds two multi-\/precision integers of equal size. The performed operation is in pseudocode: x += y. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over value of the operation; this value is either 0 or 1. 
\end{DoxyReturn}
\hypertarget{mp_8h_af6319411048f3dd303dfc3297b7c304f}{
\index{mp.h@{mp.h}!mpaddmul@{mpaddmul}}
\index{mpaddmul@{mpaddmul}!mp.h@{mp.h}}
\subsubsection[{mpaddmul}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mpw} mpaddmul (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{result, }
\item[{const {\bf mpw} $\ast$}]{data, }
\item[{{\bf mpw}}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af6319411048f3dd303dfc3297b7c304f}


This function performs a mult-\/precision multiply-\/accumulate. 

This function is used in the computation of a full multi-\/precision multiplication. It computes the product-\/by-\/one-\/word and accumulates it with the previous result.


\begin{DoxyParams}{Parameters}
{\em size} & The size of multi-\/precision integer multiplier. \\
\hline
{\em result} & The place where result will be accumulated. \\
\hline
{\em data} & The multi-\/precision integer multiplier. \\
\hline
{\em y} & The multiplicand. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em The} & carry-\/over multi-\/precision word. \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a5891518a4754596508b8ba8002499714}{
\index{mp.h@{mp.h}!mpaddsqrtrc@{mpaddsqrtrc}}
\index{mpaddsqrtrc@{mpaddsqrtrc}!mp.h@{mp.h}}
\subsubsection[{mpaddsqrtrc}]{\setlength{\rightskip}{0pt plus 5cm}void mpaddsqrtrc (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{result, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a5891518a4754596508b8ba8002499714}


This function is used in the calculation of a multi-\/precision squaring. 

\hypertarget{mp_8h_ad2926f765db1823a1d17a285d97e9ced}{
\index{mp.h@{mp.h}!mpaddw@{mpaddw}}
\index{mpaddw@{mpaddw}!mp.h@{mp.h}}
\subsubsection[{mpaddw}]{\setlength{\rightskip}{0pt plus 5cm}int mpaddw (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{{\bf mpw}}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ad2926f765db1823a1d17a285d97e9ced}


This function adds one word to a multi-\/precision integer. The performed operation is in pseudocode: x += y. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em y} & The multi-\/precision word. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over value of the operation; this value is either 0 or 1. 
\end{DoxyReturn}
\hypertarget{mp_8h_a101cb432729cd51b2a922ea4ec2281af}{
\index{mp.h@{mp.h}!mpaddx@{mpaddx}}
\index{mpaddx@{mpaddx}!mp.h@{mp.h}}
\subsubsection[{mpaddx}]{\setlength{\rightskip}{0pt plus 5cm}int mpaddx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a101cb432729cd51b2a922ea4ec2281af}


This function adds two multi-\/precision integers of different size. The performed operation in pseudocode: x += y. 


\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over value of the operation; this value is either 0 or 1. 
\end{DoxyReturn}
\hypertarget{mp_8h_a13f975884c63ac0be76d2b444a7c6eb4}{
\index{mp.h@{mp.h}!mpand@{mpand}}
\index{mpand@{mpand}!mp.h@{mp.h}}
\subsubsection[{mpand}]{\setlength{\rightskip}{0pt plus 5cm}mpand (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a13f975884c63ac0be76d2b444a7c6eb4}


This function computes the bit-\/wise AND of two multi-\/precision integers. Modifies xdata. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The multi-\/precision integer data. \\
\hline
{\em ydata} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_abf18ad28b007603fdcc1d4c3695056e0}{
\index{mp.h@{mp.h}!mpbits@{mpbits}}
\index{mpbits@{mpbits}!mp.h@{mp.h}}
\subsubsection[{mpbits}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mpbits (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_abf18ad28b007603fdcc1d4c3695056e0}


This function returns the number of significant bits in a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_afa0eacfccee374f6e7d4bdf388ddca01}{
\index{mp.h@{mp.h}!mpclrlsb@{mpclrlsb}}
\index{mpclrlsb@{mpclrlsb}!mp.h@{mp.h}}
\subsubsection[{mpclrlsb}]{\setlength{\rightskip}{0pt plus 5cm}void mpclrlsb (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_afa0eacfccee374f6e7d4bdf388ddca01}


This function clears the least significant bit of a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a298b2af39ad306efab02829d83d86b4b}{
\index{mp.h@{mp.h}!mpclrmsb@{mpclrmsb}}
\index{mpclrmsb@{mpclrmsb}!mp.h@{mp.h}}
\subsubsection[{mpclrmsb}]{\setlength{\rightskip}{0pt plus 5cm}void mpclrmsb (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a298b2af39ad306efab02829d83d86b4b}


This function clears the most significant bit of a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_acc8c19971240f6ea22f6b81c1db3553b}{
\index{mp.h@{mp.h}!mpcmp@{mpcmp}}
\index{mpcmp@{mpcmp}!mp.h@{mp.h}}
\subsubsection[{mpcmp}]{\setlength{\rightskip}{0pt plus 5cm}int mpcmp (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_acc8c19971240f6ea22f6b81c1db3553b}


This function performs a comparison of two multi-\/precision integers of the same size. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyRetVals}{Return values}
{\em -\/1} & if x $<$ y \\
\hline
{\em 0} & if x == y \\
\hline
{\em 1} & if x $>$ y \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_ac0b786d9f5d016b2d0d06b22d6f89862}{
\index{mp.h@{mp.h}!mpcmpx@{mpcmpx}}
\index{mpcmpx@{mpcmpx}!mp.h@{mp.h}}
\subsubsection[{mpcmpx}]{\setlength{\rightskip}{0pt plus 5cm}int mpcmpx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ac0b786d9f5d016b2d0d06b22d6f89862}


This function performs a comparison of two multi-\/precision integers of the different size. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyRetVals}{Return values}
{\em -\/1} & if x $<$ y \\
\hline
{\em 0} & if x == y \\
\hline
{\em 1} & if x $>$ y \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a9bb92b1971621bcb54326369dc641ecf}{
\index{mp.h@{mp.h}!mpdivtwo@{mpdivtwo}}
\index{mpdivtwo@{mpdivtwo}!mp.h@{mp.h}}
\subsubsection[{mpdivtwo}]{\setlength{\rightskip}{0pt plus 5cm}void mpdivtwo (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a9bb92b1971621bcb54326369dc641ecf}
\hypertarget{mp_8h_ae801d1996190439b2cf80548f6a03a31}{
\index{mp.h@{mp.h}!mpeq@{mpeq}}
\index{mpeq@{mpeq}!mp.h@{mp.h}}
\subsubsection[{mpeq}]{\setlength{\rightskip}{0pt plus 5cm}int mpeq (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae801d1996190439b2cf80548f6a03a31}


This function tests if two multi-\/precision integers of the same size are equal. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if equal \\
\hline
{\em 0} & if not equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a75df6af46d913aad6f591583683d04e7}{
\index{mp.h@{mp.h}!mpeqmone@{mpeqmone}}
\index{mpeqmone@{mpeqmone}!mp.h@{mp.h}}
\subsubsection[{mpeqmone}]{\setlength{\rightskip}{0pt plus 5cm}int mpeqmone (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a75df6af46d913aad6f591583683d04e7}


This function tests if multi-\/precision integer x is equal to y minus one. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if less than or equal to one. \\
\hline
{\em 0} & if greater than one. \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_af51c09b612e8033399cff6febdb9b505}{
\index{mp.h@{mp.h}!mpeqx@{mpeqx}}
\index{mpeqx@{mpeqx}!mp.h@{mp.h}}
\subsubsection[{mpeqx}]{\setlength{\rightskip}{0pt plus 5cm}int mpeqx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af51c09b612e8033399cff6febdb9b505}


This function tests if two multi-\/precision integers of different size are equal. 


\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if equal \\
\hline
{\em 0} & if not equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_ab0520c67c603a7e32c9eeb6a39a02595}{
\index{mp.h@{mp.h}!mpeven@{mpeven}}
\index{mpeven@{mpeven}!mp.h@{mp.h}}
\subsubsection[{mpeven}]{\setlength{\rightskip}{0pt plus 5cm}int mpeven (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ab0520c67c603a7e32c9eeb6a39a02595}


This function tests if a multi-\/precision integer is even. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if even \\
\hline
{\em 0} & if odd \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a872a570802ee8bbf3dc24df3361dcbc4}{
\index{mp.h@{mp.h}!mpextgcd\_\-w@{mpextgcd\_\-w}}
\index{mpextgcd\_\-w@{mpextgcd\_\-w}!mp.h@{mp.h}}
\subsubsection[{mpextgcd\_\-w}]{\setlength{\rightskip}{0pt plus 5cm}int mpextgcd\_\-w (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata, }
\item[{{\bf mpw} $\ast$}]{result, }
\item[{{\bf mpw} $\ast$}]{wksp}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a872a570802ee8bbf3dc24df3361dcbc4}
\hypertarget{mp_8h_a1624fb65f4a9cac6f6246d64bb0189ea}{
\index{mp.h@{mp.h}!mpfill@{mpfill}}
\index{mpfill@{mpfill}!mp.h@{mp.h}}
\subsubsection[{mpfill}]{\setlength{\rightskip}{0pt plus 5cm}void mpfill (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data, }
\item[{{\bf mpw}}]{fill}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a1624fb65f4a9cac6f6246d64bb0189ea}


This function fills each word of a multi-\/precision integer with a given value. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
{\em fill} & The value fill the data with. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a9d9d384955be2de91d8edcfc368e7079}{
\index{mp.h@{mp.h}!mpfprint@{mpfprint}}
\index{mpfprint@{mpfprint}!mp.h@{mp.h}}
\subsubsection[{mpfprint}]{\setlength{\rightskip}{0pt plus 5cm}void mpfprint (
\begin{DoxyParamCaption}
\item[{FILE $\ast$}]{f, }
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a9d9d384955be2de91d8edcfc368e7079}
\hypertarget{mp_8h_acc68e89bb559d3e271fef4400be91db0}{
\index{mp.h@{mp.h}!mpfprintln@{mpfprintln}}
\index{mpfprintln@{mpfprintln}!mp.h@{mp.h}}
\subsubsection[{mpfprintln}]{\setlength{\rightskip}{0pt plus 5cm}void mpfprintln (
\begin{DoxyParamCaption}
\item[{FILE $\ast$}]{f, }
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_acc68e89bb559d3e271fef4400be91db0}
\hypertarget{mp_8h_a599e5e794ea7df612bbdeba64cbddf12}{
\index{mp.h@{mp.h}!mpgcd\_\-w@{mpgcd\_\-w}}
\index{mpgcd\_\-w@{mpgcd\_\-w}!mp.h@{mp.h}}
\subsubsection[{mpgcd\_\-w}]{\setlength{\rightskip}{0pt plus 5cm}void mpgcd\_\-w (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata, }
\item[{{\bf mpw} $\ast$}]{result, }
\item[{{\bf mpw} $\ast$}]{wksp}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a599e5e794ea7df612bbdeba64cbddf12}
\hypertarget{mp_8h_ae01843e52c6a0b0c28c345d8040670dc}{
\index{mp.h@{mp.h}!mpge@{mpge}}
\index{mpge@{mpge}!mp.h@{mp.h}}
\subsubsection[{mpge}]{\setlength{\rightskip}{0pt plus 5cm}int mpge (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae01843e52c6a0b0c28c345d8040670dc}


This function tests if the first of two multi-\/precision integers of the same size is greater than or equal to the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if greater or equal \\
\hline
{\em 0} & if less \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a01b1186616ddfd912772cddce1fc292b}{
\index{mp.h@{mp.h}!mpgex@{mpgex}}
\index{mpgex@{mpgex}!mp.h@{mp.h}}
\subsubsection[{mpgex}]{\setlength{\rightskip}{0pt plus 5cm}int mpgex (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a01b1186616ddfd912772cddce1fc292b}


This function tests if the first of two multi-\/precision integers of different size is greater than or equal to the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if greater or equal \\
\hline
{\em 0} & if less \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_ae4905ad4ef2bb6b7e8a2aa79460041c6}{
\index{mp.h@{mp.h}!mpgt@{mpgt}}
\index{mpgt@{mpgt}!mp.h@{mp.h}}
\subsubsection[{mpgt}]{\setlength{\rightskip}{0pt plus 5cm}int mpgt (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae4905ad4ef2bb6b7e8a2aa79460041c6}


This function tests if the first of two multi-\/precision integers of the same size is greater than the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if greater \\
\hline
{\em 0} & if less or equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_ae2a7b28715b9a820ceda11b77d901953}{
\index{mp.h@{mp.h}!mpgtx@{mpgtx}}
\index{mpgtx@{mpgtx}!mp.h@{mp.h}}
\subsubsection[{mpgtx}]{\setlength{\rightskip}{0pt plus 5cm}int mpgtx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae2a7b28715b9a820ceda11b77d901953}


This function tests if the first of two multi-\/precision integers of different size is greater than the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if greater \\
\hline
{\em 0} & if less or equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_ae9ab3d1ce03ffda281d610fd8123b06e}{
\index{mp.h@{mp.h}!mpisone@{mpisone}}
\index{mpisone@{mpisone}!mp.h@{mp.h}}
\subsubsection[{mpisone}]{\setlength{\rightskip}{0pt plus 5cm}int mpisone (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae9ab3d1ce03ffda281d610fd8123b06e}


This functions tests if the value of a multi-\/precision integer is equal to one. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if one \\
\hline
{\em 0} & if not one \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a0605a0ef9815dce0cf2743aafdac03e6}{
\index{mp.h@{mp.h}!mpistwo@{mpistwo}}
\index{mpistwo@{mpistwo}!mp.h@{mp.h}}
\subsubsection[{mpistwo}]{\setlength{\rightskip}{0pt plus 5cm}int mpistwo (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a0605a0ef9815dce0cf2743aafdac03e6}


This function tests if the value of a multi-\/precision integer is equal to two. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if two \\
\hline
{\em 0} & if not two \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_af987c3b7b75fc0eae1f97aab58888006}{
\index{mp.h@{mp.h}!mple@{mple}}
\index{mple@{mple}!mp.h@{mp.h}}
\subsubsection[{mple}]{\setlength{\rightskip}{0pt plus 5cm}int mple (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af987c3b7b75fc0eae1f97aab58888006}


This function tests if the first of two multi-\/precision integers of the same size is less than or equal to the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if less or equal \\
\hline
{\em 0} & if greater \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_af1f8a61b04fe27911d51aec0c6468238}{
\index{mp.h@{mp.h}!mpleone@{mpleone}}
\index{mpleone@{mpleone}!mp.h@{mp.h}}
\subsubsection[{mpleone}]{\setlength{\rightskip}{0pt plus 5cm}int mpleone (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af1f8a61b04fe27911d51aec0c6468238}


This function tests if the value of a multi-\/precision integer is less than or equal to one. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if less than or equal to one. \\
\hline
{\em 0} & if greater than one. \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_adbd7f836f9246cf904207315c346a56c}{
\index{mp.h@{mp.h}!mplex@{mplex}}
\index{mplex@{mplex}!mp.h@{mp.h}}
\subsubsection[{mplex}]{\setlength{\rightskip}{0pt plus 5cm}int mplex (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_adbd7f836f9246cf904207315c346a56c}


This function tests if the first of two multi-\/precision integers of different size is less than or equal to the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if less or equal \\
\hline
{\em 0} & if greater \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a84c1045a3fe0074b8b954679bcee62de}{
\index{mp.h@{mp.h}!mplsbset@{mplsbset}}
\index{mplsbset@{mplsbset}!mp.h@{mp.h}}
\subsubsection[{mplsbset}]{\setlength{\rightskip}{0pt plus 5cm}int mplsbset (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a84c1045a3fe0074b8b954679bcee62de}


This function tests if the leiast significant bit of a multi-\/precision integer is set. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if set \\
\hline
{\em 0} & if not set \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_aa458547531ad86f7304d1beab35a5e7e}{
\index{mp.h@{mp.h}!mplshift@{mplshift}}
\index{mplshift@{mplshift}!mp.h@{mp.h}}
\subsubsection[{mplshift}]{\setlength{\rightskip}{0pt plus 5cm}void mplshift (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data, }
\item[{size\_\-t}]{count}
\end{DoxyParamCaption}
)}}
\label{mp_8h_aa458547531ad86f7304d1beab35a5e7e}
\hypertarget{mp_8h_a4a0a37729f64e516b74d3689db90eaf8}{
\index{mp.h@{mp.h}!mplszcnt@{mplszcnt}}
\index{mplszcnt@{mplszcnt}!mp.h@{mp.h}}
\subsubsection[{mplszcnt}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mplszcnt (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a4a0a37729f64e516b74d3689db90eaf8}
\hypertarget{mp_8h_af4e3a7316789993b73b2289bf34c837b}{
\index{mp.h@{mp.h}!mplt@{mplt}}
\index{mplt@{mplt}!mp.h@{mp.h}}
\subsubsection[{mplt}]{\setlength{\rightskip}{0pt plus 5cm}int mplt (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af4e3a7316789993b73b2289bf34c837b}


This function tests if the first of two multi-\/precision integers of the same size is less than the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if less \\
\hline
{\em 0} & if greater or equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a2d772e5778ec336da5a56302f21786a0}{
\index{mp.h@{mp.h}!mpltx@{mpltx}}
\index{mpltx@{mpltx}!mp.h@{mp.h}}
\subsubsection[{mpltx}]{\setlength{\rightskip}{0pt plus 5cm}int mpltx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a2d772e5778ec336da5a56302f21786a0}


This function tests if the first of two multi-\/precision integers of different size is less than the second. 

\begin{DoxyNote}{Note}
The comparison treats the arguments as unsigned. 
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if less \\
\hline
{\em 0} & if greater or equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a8a0e5d0430ecb60521593164a766294b}{
\index{mp.h@{mp.h}!mpmod@{mpmod}}
\index{mpmod@{mpmod}!mp.h@{mp.h}}
\subsubsection[{mpmod}]{\setlength{\rightskip}{0pt plus 5cm}void mpmod (
\begin{DoxyParamCaption}
\item[{{\bf mpw} $\ast$}]{result, }
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata, }
\item[{{\bf mpw} $\ast$}]{wksp}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a8a0e5d0430ecb60521593164a766294b}
\hypertarget{mp_8h_a12d85e63b1d9f4d68909c51890ef0738}{
\index{mp.h@{mp.h}!mpmsbset@{mpmsbset}}
\index{mpmsbset@{mpmsbset}!mp.h@{mp.h}}
\subsubsection[{mpmsbset}]{\setlength{\rightskip}{0pt plus 5cm}int mpmsbset (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a12d85e63b1d9f4d68909c51890ef0738}


This function tests if the most significant bit of a multi-\/precision integer is set. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if set \\
\hline
{\em 0} & if not set \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a49ae96d66620926a51acc81e915696e5}{
\index{mp.h@{mp.h}!mpmszcnt@{mpmszcnt}}
\index{mpmszcnt@{mpmszcnt}!mp.h@{mp.h}}
\subsubsection[{mpmszcnt}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mpmszcnt (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a49ae96d66620926a51acc81e915696e5}
\hypertarget{mp_8h_aa936396b75b6e41298482020363c2a94}{
\index{mp.h@{mp.h}!mpmul@{mpmul}}
\index{mpmul@{mpmul}!mp.h@{mp.h}}
\subsubsection[{mpmul}]{\setlength{\rightskip}{0pt plus 5cm}void mpmul (
\begin{DoxyParamCaption}
\item[{{\bf mpw} $\ast$}]{result, }
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_aa936396b75b6e41298482020363c2a94}


This function computes a full multi-\/precision product. 

\hypertarget{mp_8h_ac7f624f09b82cc0451fd76932564a69e}{
\index{mp.h@{mp.h}!mpmultwo@{mpmultwo}}
\index{mpmultwo@{mpmultwo}!mp.h@{mp.h}}
\subsubsection[{mpmultwo}]{\setlength{\rightskip}{0pt plus 5cm}int mpmultwo (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ac7f624f09b82cc0451fd76932564a69e}
\hypertarget{mp_8h_af2f708ed3c44a665a0024b11dc8e2817}{
\index{mp.h@{mp.h}!mpndivmod@{mpndivmod}}
\index{mpndivmod@{mpndivmod}!mp.h@{mp.h}}
\subsubsection[{mpndivmod}]{\setlength{\rightskip}{0pt plus 5cm}void mpndivmod (
\begin{DoxyParamCaption}
\item[{{\bf mpw} $\ast$}]{result, }
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata, }
\item[{{\bf mpw} $\ast$}]{wksp}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af2f708ed3c44a665a0024b11dc8e2817}
\hypertarget{mp_8h_ae661ccc4c37b796f4671f882e71c9cc4}{
\index{mp.h@{mp.h}!mpne@{mpne}}
\index{mpne@{mpne}!mp.h@{mp.h}}
\subsubsection[{mpne}]{\setlength{\rightskip}{0pt plus 5cm}int mpne (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae661ccc4c37b796f4671f882e71c9cc4}


This function tests if two multi-\/precision integers of the same size differ. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if not equal \\
\hline
{\em 0} & if equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a5f26c9e232c74bacea5ae785692de1d4}{
\index{mp.h@{mp.h}!mpneg@{mpneg}}
\index{mpneg@{mpneg}!mp.h@{mp.h}}
\subsubsection[{mpneg}]{\setlength{\rightskip}{0pt plus 5cm}void mpneg (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a5f26c9e232c74bacea5ae785692de1d4}


This function negates a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_abecba2b8f414da05ee7c9959ac72acb1}{
\index{mp.h@{mp.h}!mpnex@{mpnex}}
\index{mpnex@{mpnex}!mp.h@{mp.h}}
\subsubsection[{mpnex}]{\setlength{\rightskip}{0pt plus 5cm}int mpnex (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{const {\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_abecba2b8f414da05ee7c9959ac72acb1}


This function tests if two multi-\/precision integers of different size are equal. 


\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if equal \\
\hline
{\em 0} & if not equal \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a0b54adf94eaee674a4e3490b30a2f954}{
\index{mp.h@{mp.h}!mpnorm@{mpnorm}}
\index{mpnorm@{mpnorm}!mp.h@{mp.h}}
\subsubsection[{mpnorm}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mpnorm (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a0b54adf94eaee674a4e3490b30a2f954}
\hypertarget{mp_8h_ad0c8185589374810679c5a0cbbe3e0ca}{
\index{mp.h@{mp.h}!mpnot@{mpnot}}
\index{mpnot@{mpnot}!mp.h@{mp.h}}
\subsubsection[{mpnot}]{\setlength{\rightskip}{0pt plus 5cm}mpnot (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ad0c8185589374810679c5a0cbbe3e0ca}


This function flips all bits of a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_ade7306885f5508bc52954f6be8820558}{
\index{mp.h@{mp.h}!mpnz@{mpnz}}
\index{mpnz@{mpnz}!mp.h@{mp.h}}
\subsubsection[{mpnz}]{\setlength{\rightskip}{0pt plus 5cm}int mpnz (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ade7306885f5508bc52954f6be8820558}


This function tests if a multi-\/precision integer is not zero. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if not zero \\
\hline
{\em 0} & if zero \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_a70c9ff9c0f765307214fb28d22cc2c23}{
\index{mp.h@{mp.h}!mpodd@{mpodd}}
\index{mpodd@{mpodd}!mp.h@{mp.h}}
\subsubsection[{mpodd}]{\setlength{\rightskip}{0pt plus 5cm}int mpodd (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a70c9ff9c0f765307214fb28d22cc2c23}


This functions tests if a multi-\/precision integer is odd. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if odd \\
\hline
{\em 0} & if even \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_aa1baaac1e8919a218b2369355a8c1c63}{
\index{mp.h@{mp.h}!mpor@{mpor}}
\index{mpor@{mpor}!mp.h@{mp.h}}
\subsubsection[{mpor}]{\setlength{\rightskip}{0pt plus 5cm}void mpor (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_aa1baaac1e8919a218b2369355a8c1c63}


This function computes the bit-\/wise OR of two multi-\/precision integers. Modifies xdata. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em xdata} & The multi-\/precision integer data. \\
\hline
{\em ydata} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a0f56eafb94580fd8d838ae86a3a4e6f7}{
\index{mp.h@{mp.h}!mppndiv@{mppndiv}}
\index{mppndiv@{mppndiv}!mp.h@{mp.h}}
\subsubsection[{mppndiv}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mpw} mppndiv (
\begin{DoxyParamCaption}
\item[{{\bf mpw}}]{xhi, }
\item[{{\bf mpw}}]{xlo, }
\item[{{\bf mpw}}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a0f56eafb94580fd8d838ae86a3a4e6f7}
\hypertarget{mp_8h_ac1b16cee4b287487d5fde0f423b1f8e5}{
\index{mp.h@{mp.h}!mpprint@{mpprint}}
\index{mpprint@{mpprint}!mp.h@{mp.h}}
\subsubsection[{mpprint}]{\setlength{\rightskip}{0pt plus 5cm}void mpprint (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ac1b16cee4b287487d5fde0f423b1f8e5}
\hypertarget{mp_8h_ae3dcf4ff639792019af97bfb9585107a}{
\index{mp.h@{mp.h}!mpprintln@{mpprintln}}
\index{mpprintln@{mpprintln}!mp.h@{mp.h}}
\subsubsection[{mpprintln}]{\setlength{\rightskip}{0pt plus 5cm}void mpprintln (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae3dcf4ff639792019af97bfb9585107a}
\hypertarget{mp_8h_acbbc33f1d523347abbea10b755822c05}{
\index{mp.h@{mp.h}!mprshift@{mprshift}}
\index{mprshift@{mprshift}!mp.h@{mp.h}}
\subsubsection[{mprshift}]{\setlength{\rightskip}{0pt plus 5cm}void mprshift (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data, }
\item[{size\_\-t}]{count}
\end{DoxyParamCaption}
)}}
\label{mp_8h_acbbc33f1d523347abbea10b755822c05}
\hypertarget{mp_8h_a2ce894dd95d1f2e82a8afcc75fffaa9c}{
\index{mp.h@{mp.h}!mprshiftlsz@{mprshiftlsz}}
\index{mprshiftlsz@{mprshiftlsz}!mp.h@{mp.h}}
\subsubsection[{mprshiftlsz}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mprshiftlsz (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a2ce894dd95d1f2e82a8afcc75fffaa9c}
\hypertarget{mp_8h_a9267926999bef7cfae96f50ec8fa7bd6}{
\index{mp.h@{mp.h}!mpsdivtwo@{mpsdivtwo}}
\index{mpsdivtwo@{mpsdivtwo}!mp.h@{mp.h}}
\subsubsection[{mpsdivtwo}]{\setlength{\rightskip}{0pt plus 5cm}void mpsdivtwo (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a9267926999bef7cfae96f50ec8fa7bd6}
\hypertarget{mp_8h_ac4ccde3ff8c2aac9e324fb0832e28e1a}{
\index{mp.h@{mp.h}!mpsetlsb@{mpsetlsb}}
\index{mpsetlsb@{mpsetlsb}!mp.h@{mp.h}}
\subsubsection[{mpsetlsb}]{\setlength{\rightskip}{0pt plus 5cm}void mpsetlsb (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ac4ccde3ff8c2aac9e324fb0832e28e1a}


This function sets the least significant bit of a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_ab3a5821696b1b13a84d6648332ba6cf7}{
\index{mp.h@{mp.h}!mpsetmsb@{mpsetmsb}}
\index{mpsetmsb@{mpsetmsb}!mp.h@{mp.h}}
\subsubsection[{mpsetmsb}]{\setlength{\rightskip}{0pt plus 5cm}void mpsetmsb (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ab3a5821696b1b13a84d6648332ba6cf7}


This function sets the most significant bit of a multi-\/precision integer. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a659c97a015a63a4405c9a45e6a1b49e6}{
\index{mp.h@{mp.h}!mpsetmul@{mpsetmul}}
\index{mpsetmul@{mpsetmul}!mp.h@{mp.h}}
\subsubsection[{mpsetmul}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mpw} mpsetmul (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{result, }
\item[{const {\bf mpw} $\ast$}]{data, }
\item[{{\bf mpw}}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a659c97a015a63a4405c9a45e6a1b49e6}


This function performs a multi-\/precision multiply-\/setup. 

This function is used in the computation of a full multi-\/precision multiplication. By using it we can shave off a few cycles; otherwise we'd have to zero the least significant half of the result first and use another call to the slightly slower mpaddmul function.


\begin{DoxyParams}{Parameters}
{\em size} & The size of multi-\/precision integer multiplier. \\
\hline
{\em result} & The place where result will be accumulated. \\
\hline
{\em data} & The multi-\/precision integer multiplier. \\
\hline
{\em y} & The multiplicand. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over multi-\/precision word. 
\end{DoxyReturn}
\hypertarget{mp_8h_ad9f0efe339edc592551911ba2216e8cd}{
\index{mp.h@{mp.h}!mpsetw@{mpsetw}}
\index{mpsetw@{mpsetw}!mp.h@{mp.h}}
\subsubsection[{mpsetw}]{\setlength{\rightskip}{0pt plus 5cm}void mpsetw (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{{\bf mpw}}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ad9f0efe339edc592551911ba2216e8cd}


This function sets the value of a multi-\/precision integer to the given word. The given value is copied into the least significant word, while the most significant words are zeroed. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em xdata} & The multi-\/precision integer data. \\
\hline
{\em y} & The value to be assigned. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_aa6dec413795f2d0138d09cb640dc81df}{
\index{mp.h@{mp.h}!mpsetws@{mpsetws}}
\index{mpsetws@{mpsetws}!mp.h@{mp.h}}
\subsubsection[{mpsetws}]{\setlength{\rightskip}{0pt plus 5cm}void mpsetws (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_aa6dec413795f2d0138d09cb640dc81df}


This function sets the value of a multi-\/precision integer to the given word. The given value is copied into the least significant word(s), while the most significant words are zeroed. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em xdata} & The multi-\/precision integer data. \\
\hline
{\em y} & The value. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_af94f0424014578a78d77c2084f3f3d5d}{
\index{mp.h@{mp.h}!mpsetx@{mpsetx}}
\index{mpsetx@{mpsetx}!mp.h@{mp.h}}
\subsubsection[{mpsetx}]{\setlength{\rightskip}{0pt plus 5cm}void mpsetx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_af94f0424014578a78d77c2084f3f3d5d}


This function set the value of the first multi-\/precision integer to the second, truncating the most significant words if ysize $>$ xsize, or zeroing the most significant words if ysize $<$ xsize. 


\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a5847c378eda16688587b23753b65e972}{
\index{mp.h@{mp.h}!mpsize@{mpsize}}
\index{mpsize@{mpsize}!mp.h@{mp.h}}
\subsubsection[{mpsize}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mpsize (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a5847c378eda16688587b23753b65e972}


This function returns the true size of a multi-\/precision integer, after stripping leading zero words. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a7703ab7d9b0b2b4f1ebc6f7415029c9b}{
\index{mp.h@{mp.h}!mpsqr@{mpsqr}}
\index{mpsqr@{mpsqr}!mp.h@{mp.h}}
\subsubsection[{mpsqr}]{\setlength{\rightskip}{0pt plus 5cm}void mpsqr (
\begin{DoxyParamCaption}
\item[{{\bf mpw} $\ast$}]{result, }
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a7703ab7d9b0b2b4f1ebc6f7415029c9b}


This function computes a full multi-\/precision square. 

\hypertarget{mp_8h_a49e790df163e11d7230d81bbc8d5fde2}{
\index{mp.h@{mp.h}!mpsub@{mpsub}}
\index{mpsub@{mpsub}!mp.h@{mp.h}}
\subsubsection[{mpsub}]{\setlength{\rightskip}{0pt plus 5cm}int mpsub (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a49e790df163e11d7230d81bbc8d5fde2}


This function subtracts two multi-\/precision integers of equal size. The performed operation in pseudocode: x -\/= y. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over value of the operation; this value is either 0 or 1. 
\end{DoxyReturn}
\hypertarget{mp_8h_a5814eb1185a0dc05da2f86323f5c8978}{
\index{mp.h@{mp.h}!mpsubw@{mpsubw}}
\index{mpsubw@{mpsubw}!mp.h@{mp.h}}
\subsubsection[{mpsubw}]{\setlength{\rightskip}{0pt plus 5cm}int mpsubw (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{{\bf mpw}}]{y}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a5814eb1185a0dc05da2f86323f5c8978}


This function subtracts one word to a multi-\/precision integer. The performed operation in pseudocode: x -\/= y. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integers. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em y} & The multi-\/precision word. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over value of the operation; this value is either 0 or 1. 
\end{DoxyReturn}
\hypertarget{mp_8h_ae77b6a530198f3d8b3d9005b7cbcc0e5}{
\index{mp.h@{mp.h}!mpsubx@{mpsubx}}
\index{mpsubx@{mpsubx}!mp.h@{mp.h}}
\subsubsection[{mpsubx}]{\setlength{\rightskip}{0pt plus 5cm}int mpsubx (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{xsize, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{size\_\-t}]{ysize, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae77b6a530198f3d8b3d9005b7cbcc0e5}


This function subtracts two multi-\/precision integers of different size. The performed operation in pseudocode: x -\/= y. 


\begin{DoxyParams}{Parameters}
{\em xsize} & The size of the first multi-\/precision integer. \\
\hline
{\em xdata} & The first multi-\/precision integer. \\
\hline
{\em ysize} & The size of the second multi-\/precision integer. \\
\hline
{\em ydata} & The second multi-\/precision integer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The carry-\/over value of the operation; this value is either 0 or 1. 
\end{DoxyReturn}
\hypertarget{mp_8h_a6373a586b0e90cb78179143c89de4132}{
\index{mp.h@{mp.h}!mpxor@{mpxor}}
\index{mpxor@{mpxor}!mp.h@{mp.h}}
\subsubsection[{mpxor}]{\setlength{\rightskip}{0pt plus 5cm}void mpxor (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{xdata, }
\item[{const {\bf mpw} $\ast$}]{ydata}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a6373a586b0e90cb78179143c89de4132}


This function computes the bit-\/wise XOR of two multi-\/precision integers. Modifies xdata. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em xdata} & The multi-\/precision integer data. \\
\hline
{\em ydata} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_aa849fd262347ab62ea3b1bf4afbf7c7c}{
\index{mp.h@{mp.h}!mpz@{mpz}}
\index{mpz@{mpz}!mp.h@{mp.h}}
\subsubsection[{mpz}]{\setlength{\rightskip}{0pt plus 5cm}int mpz (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{const {\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_aa849fd262347ab62ea3b1bf4afbf7c7c}


This function tests if a multi-\/precision integer is zero. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & if zero \\
\hline
{\em 0} & if not zero \\
\hline
\end{DoxyRetVals}
\hypertarget{mp_8h_ae9fd060d4b6ce84404107a1523f34276}{
\index{mp.h@{mp.h}!mpzero@{mpzero}}
\index{mpzero@{mpzero}!mp.h@{mp.h}}
\subsubsection[{mpzero}]{\setlength{\rightskip}{0pt plus 5cm}void mpzero (
\begin{DoxyParamCaption}
\item[{size\_\-t}]{size, }
\item[{{\bf mpw} $\ast$}]{data}
\end{DoxyParamCaption}
)}}
\label{mp_8h_ae9fd060d4b6ce84404107a1523f34276}


This function zeroes a multi-\/precision integer of a given size. 


\begin{DoxyParams}{Parameters}
{\em size} & The size of the multi-\/precision integer. \\
\hline
{\em data} & The multi-\/precision integer data. \\
\hline
\end{DoxyParams}
\hypertarget{mp_8h_a2e26b9c3109b8a41a8c87bcfe1dfbfc8}{
\index{mp.h@{mp.h}!os2ip@{os2ip}}
\index{os2ip@{os2ip}!mp.h@{mp.h}}
\subsubsection[{os2ip}]{\setlength{\rightskip}{0pt plus 5cm}int os2ip (
\begin{DoxyParamCaption}
\item[{{\bf mpw} $\ast$}]{idata, }
\item[{size\_\-t}]{isize, }
\item[{const {\bf byte} $\ast$}]{osdata, }
\item[{size\_\-t}]{ossize}
\end{DoxyParamCaption}
)}}
\label{mp_8h_a2e26b9c3109b8a41a8c87bcfe1dfbfc8}