\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`\"{}}\\* {\ttfamily \#include \char`\"{}beecrypt/mpopt.\-h\char`\"{}}\\* Include dependency graph for mp.\-h\-: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{mp_8h__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\-: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{mp_8h__dep__incl} \end{center} \end{figure} \subsection*{Macros} \begin{DoxyCompactItemize} \item \#define \hyperlink{mp_8h_a3317414bc77cc27f0c50d300fc93db7e}{M\-P\-\_\-\-H\-W\-B\-I\-T\-S}~(\hyperlink{win_8h_a5e09ba38a82b16227bae0305d377708c}{M\-P\-\_\-\-W\-B\-I\-T\-S} $>$$>$ 1) \item \#define \hyperlink{mp_8h_ac32fb614379620608d1c733a79132cfa}{M\-P\-\_\-\-W\-B\-Y\-T\-E\-S}~(\hyperlink{win_8h_a5e09ba38a82b16227bae0305d377708c}{M\-P\-\_\-\-W\-B\-I\-T\-S} $>$$>$ 3) \item \#define \hyperlink{mp_8h_a3650f0cbb0aaa7100a4a7fba476920bf}{M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S}~(\hyperlink{win_8h_a5e09ba38a82b16227bae0305d377708c}{M\-P\-\_\-\-W\-B\-I\-T\-S} $>$$>$ 2) \item \#define \hyperlink{mp_8h_a7a243883fb94433b237da964799fabcd}{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S}(x)~((x) $<$$<$ 6) \item \#define \hyperlink{mp_8h_ab77b2dd70af10d0705b6048dc732a4dc}{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S}(x)~((x) $<$$<$ 4) \item \#define \hyperlink{mp_8h_a337d99143ec5b28671099a5ea022f3b9}{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}(x)~((x) $<$$<$ 3) \item \#define \hyperlink{mp_8h_ad05de288398b539cf645bec59d9f27e8}{M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}(x)~((x) $>$$>$ 6) \item \#define \hyperlink{mp_8h_a65dc4dd0b6906f36f66e42a55097b8b1}{M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}(x)~((x) $>$$>$ 4) \item \#define \hyperlink{mp_8h_a9b78d45cecc26f578dc32c4ae2c803dd}{M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}(x)~((x) $>$$>$ 3) \item \#define \hyperlink{mp_8h_a696235b870f5868d66258cbfc903affa}{M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K}~(((\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw}) 0x1) $<$$<$ (\-M\-P\-\_\-\-W\-B\-I\-T\-S-\/1)) \item \#define \hyperlink{mp_8h_a137aeb18139f4f7c871639eb67ecf7b9}{M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K}~((\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw}) 0x1) \item \#define \hyperlink{mp_8h_af5466aa801f08b6c63e02f54cfc7106b}{M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K}~$\sim$((\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw}) 0x0) \item \#define \hyperlink{mp_8h_afb750ee5bfe6cdd5a0ed87dccf981d80}{mpcopy}(size, dst, src)~memcpy(dst, src, \hyperlink{mp_8h_a337d99143ec5b28671099a5ea022f3b9}{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}(size)) \item \#define \hyperlink{mp_8h_abddd3139e57f9db0c67a896024bc9684}{mpmove}(size, dst, src)~memmove(dst, src, \hyperlink{mp_8h_a337d99143ec5b28671099a5ea022f3b9}{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}(size)) \end{DoxyCompactItemize} \subsection*{Functions} \begin{DoxyCompactItemize} \item void \hyperlink{mp_8h_ae9fd060d4b6ce84404107a1523f34276}{mpzero} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function zeroes a multi-\/precision integer of a given size. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a1624fb65f4a9cac6f6246d64bb0189ea}{mpfill} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} fill) \begin{DoxyCompactList}\small\item\em This function fills each word of a multi-\/precision integer with a given value. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a70c9ff9c0f765307214fb28d22cc2c23}{mpodd} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This functions tests if a multi-\/precision integer is odd. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ab0520c67c603a7e32c9eeb6a39a02595}{mpeven} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function tests if a multi-\/precision integer is even. \end{DoxyCompactList}\item int \hyperlink{mp_8h_aa849fd262347ab62ea3b1bf4afbf7c7c}{mpz} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function tests if a multi-\/precision integer is zero. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ade7306885f5508bc52954f6be8820558}{mpnz} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function tests if a multi-\/precision integer is not zero. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae801d1996190439b2cf80548f6a03a31}{mpeq} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of the same size are equal. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae661ccc4c37b796f4671f882e71c9cc4}{mpne} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of the same size differ. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae4905ad4ef2bb6b7e8a2aa79460041c6}{mpgt} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_af4e3a7316789993b73b2289bf34c837b}{mplt} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae01843e52c6a0b0c28c345d8040670dc}{mpge} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_af987c3b7b75fc0eae1f97aab58888006}{mple} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_acc8c19971240f6ea22f6b81c1db3553b}{mpcmp} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function performs a comparison of two multi-\/precision integers of the same size. \end{DoxyCompactList}\item int \hyperlink{mp_8h_af51c09b612e8033399cff6febdb9b505}{mpeqx} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of different size are equal. \end{DoxyCompactList}\item int \hyperlink{mp_8h_abecba2b8f414da05ee7c9959ac72acb1}{mpnex} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function tests if two multi-\/precision integers of different size are equal. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae2a7b28715b9a820ceda11b77d901953}{mpgtx} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a2d772e5778ec336da5a56302f21786a0}{mpltx} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a01b1186616ddfd912772cddce1fc292b}{mpgex} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_adbd7f836f9246cf904207315c346a56c}{mplex} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ac0b786d9f5d016b2d0d06b22d6f89862}{mpcmpx} (size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function performs a comparison of two multi-\/precision integers of the different size. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae9ab3d1ce03ffda281d610fd8123b06e}{mpisone} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This functions tests if the value of a multi-\/precision integer is equal to one. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a0605a0ef9815dce0cf2743aafdac03e6}{mpistwo} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function tests if the value of a multi-\/precision integer is equal to two. \end{DoxyCompactList}\item int \hyperlink{mp_8h_af1f8a61b04fe27911d51aec0c6468238}{mpleone} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a75df6af46d913aad6f591583683d04e7}{mpeqmone} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function tests if multi-\/precision integer x is equal to y minus one. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a12d85e63b1d9f4d68909c51890ef0738}{mpmsbset} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function tests if the most significant bit of a multi-\/precision integer is set. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a84c1045a3fe0074b8b954679bcee62de}{mplsbset} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function tests if the leiast significant bit of a multi-\/precision integer is set. \end{DoxyCompactList}\item void \hyperlink{mp_8h_ab3a5821696b1b13a84d6648332ba6cf7}{mpsetmsb} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function sets the most significant bit of a multi-\/precision integer. \end{DoxyCompactList}\item void \hyperlink{mp_8h_ac4ccde3ff8c2aac9e324fb0832e28e1a}{mpsetlsb} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function sets the least significant bit of a multi-\/precision integer. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a298b2af39ad306efab02829d83d86b4b}{mpclrmsb} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function clears the most significant bit of a multi-\/precision integer. \end{DoxyCompactList}\item void \hyperlink{mp_8h_afa0eacfccee374f6e7d4bdf388ddca01}{mpclrlsb} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function clears the least significant bit of a multi-\/precision integer. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a13f975884c63ac0be76d2b444a7c6eb4}{mpand} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function computes the bit-\/wise A\-N\-D of two multi-\/precision integers. Modifies xdata. \end{DoxyCompactList}\item void \hyperlink{mp_8h_aa1baaac1e8919a218b2369355a8c1c63}{mpor} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function computes the bit-\/wise O\-R of two multi-\/precision integers. Modifies xdata. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a6373a586b0e90cb78179143c89de4132}{mpxor} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function computes the bit-\/wise X\-O\-R of two multi-\/precision integers. Modifies xdata. \end{DoxyCompactList}\item void \hyperlink{mp_8h_ad0c8185589374810679c5a0cbbe3e0ca}{mpnot} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function flips all bits of a multi-\/precision integer. \end{DoxyCompactList}\item void \hyperlink{mp_8h_ad9f0efe339edc592551911ba2216e8cd}{mpsetw} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item void \hyperlink{mp_8h_aa6dec413795f2d0138d09cb640dc81df}{mpsetws} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item void \hyperlink{mp_8h_af94f0424014578a78d77c2084f3f3d5d}{mpsetx} (size\-\_\-t xsize, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ad2926f765db1823a1d17a285d97e9ced}{mpaddw} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a3dad536563420e9c1f4445a08f37c681}{mpadd} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a101cb432729cd51b2a922ea4ec2281af}{mpaddx} (size\-\_\-t xsize, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a5814eb1185a0dc05da2f86323f5c8978}{mpsubw} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} y) \begin{DoxyCompactList}\small\item\em This function subtracts one word to a multi-\/precision integer. The performed operation in pseudocode\-: x -\/= y. \end{DoxyCompactList}\item int \hyperlink{mp_8h_a49e790df163e11d7230d81bbc8d5fde2}{mpsub} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ae77b6a530198f3d8b3d9005b7cbcc0e5}{mpsubx} (size\-\_\-t xsize, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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. \end{DoxyCompactList}\item int \hyperlink{mp_8h_ac7f624f09b82cc0451fd76932564a69e}{mpmultwo} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_a5f26c9e232c74bacea5ae785692de1d4}{mpneg} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function negates a multi-\/precision integer. \end{DoxyCompactList}\item size\-\_\-t \hyperlink{mp_8h_a5847c378eda16688587b23753b65e972}{mpsize} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function returns the true size of a multi-\/precision integer, after stripping leading zero words. \end{DoxyCompactList}\item size\-\_\-t \hyperlink{mp_8h_abf18ad28b007603fdcc1d4c3695056e0}{mpbits} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function returns the number of significant bits in a multi-\/precision integer. \end{DoxyCompactList}\item size\-\_\-t \hyperlink{mp_8h_a49ae96d66620926a51acc81e915696e5}{mpmszcnt} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item size\-\_\-t \hyperlink{mp_8h_a4a0a37729f64e516b74d3689db90eaf8}{mplszcnt} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_aa458547531ad86f7304d1beab35a5e7e}{mplshift} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data, size\-\_\-t count) \item void \hyperlink{mp_8h_acbbc33f1d523347abbea10b755822c05}{mprshift} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data, size\-\_\-t count) \item size\-\_\-t \hyperlink{mp_8h_a2ce894dd95d1f2e82a8afcc75fffaa9c}{mprshiftlsz} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item size\-\_\-t \hyperlink{mp_8h_a0b54adf94eaee674a4e3490b30a2f954}{mpnorm} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_a9bb92b1971621bcb54326369dc641ecf}{mpdivtwo} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_a9267926999bef7cfae96f50ec8fa7bd6}{mpsdivtwo} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} \hyperlink{mp_8h_a659c97a015a63a4405c9a45e6a1b49e6}{mpsetmul} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} y) \begin{DoxyCompactList}\small\item\em This function performs a multi-\/precision multiply-\/setup. \end{DoxyCompactList}\item \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} \hyperlink{mp_8h_af6319411048f3dd303dfc3297b7c304f}{mpaddmul} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} y) \begin{DoxyCompactList}\small\item\em This function performs a mult-\/precision multiply-\/accumulate. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a5891518a4754596508b8ba8002499714}{mpaddsqrtrc} (size\-\_\-t size, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function is used in the calculation of a multi-\/precision squaring. \end{DoxyCompactList}\item void \hyperlink{mp_8h_aa936396b75b6e41298482020363c2a94}{mpmul} (\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata) \begin{DoxyCompactList}\small\item\em This function computes a full multi-\/precision product. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a7703ab7d9b0b2b4f1ebc6f7415029c9b}{mpsqr} (\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \begin{DoxyCompactList}\small\item\em This function computes a full multi-\/precision square. \end{DoxyCompactList}\item void \hyperlink{mp_8h_a599e5e794ea7df612bbdeba64cbddf12}{mpgcd\-\_\-w} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$wksp) \item int \hyperlink{mp_8h_a872a570802ee8bbf3dc24df3361dcbc4}{mpextgcd\-\_\-w} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$wksp) \item \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} \hyperlink{mp_8h_a0f56eafb94580fd8d838ae86a3a4e6f7}{mppndiv} (\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} xhi, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} xlo, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} y) \item void \hyperlink{mp_8h_a8a0e5d0430ecb60521593164a766294b}{mpmod} (\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$wksp) \item void \hyperlink{mp_8h_af2f708ed3c44a665a0024b11dc8e2817}{mpndivmod} (\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$result, size\-\_\-t xsize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$xdata, size\-\_\-t ysize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$ydata, \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$wksp) \item void \hyperlink{mp_8h_ac1b16cee4b287487d5fde0f423b1f8e5}{mpprint} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_ae3dcf4ff639792019af97bfb9585107a}{mpprintln} (size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_a9d9d384955be2de91d8edcfc368e7079}{mpfprint} (F\-I\-L\-E $\ast$f, size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item void \hyperlink{mp_8h_acc68e89bb559d3e271fef4400be91db0}{mpfprintln} (F\-I\-L\-E $\ast$f, size\-\_\-t size, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$data) \item int \hyperlink{mp_8h_ae82af22d91fe3e6a94cd649ab4bc7b3c}{i2osp} (\hyperlink{api_8h_ab8ef12fab634c171394422d0ee8baf94}{byte} $\ast$osdata, size\-\_\-t ossize, const \hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{mpw} $\ast$idata, size\-\_\-t isize) \item int \hyperlink{mp_8h_a2e26b9c3109b8a41a8c87bcfe1dfbfc8}{os2ip} (\hyperlink{api_8h_a8de7ba63f011c81fa7f87724104d774b}{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_a8de7ba63f011c81fa7f87724104d774b}{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{Macro Definition Documentation} \hypertarget{mp_8h_af5466aa801f08b6c63e02f54cfc7106b}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K@{M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K}} \index{M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K@{M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-A\-L\-L\-M\-A\-S\-K~$\sim$(({\bf mpw}) 0x0)}}\label{mp_8h_af5466aa801f08b6c63e02f54cfc7106b} \hypertarget{mp_8h_ad05de288398b539cf645bec59d9f27e8}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S@{M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}} \index{M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S@{M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-B\-I\-T\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S( \begin{DoxyParamCaption} \item[{}]{x} \end{DoxyParamCaption} )~((x) $>$$>$ 6)}}\label{mp_8h_ad05de288398b539cf645bec59d9f27e8} \hypertarget{mp_8h_a9b78d45cecc26f578dc32c4ae2c803dd}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S@{M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}} \index{M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S@{M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-B\-Y\-T\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S( \begin{DoxyParamCaption} \item[{}]{x} \end{DoxyParamCaption} )~((x) $>$$>$ 3)}}\label{mp_8h_a9b78d45cecc26f578dc32c4ae2c803dd} \hypertarget{mp_8h_a3317414bc77cc27f0c50d300fc93db7e}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-H\-W\-B\-I\-T\-S@{M\-P\-\_\-\-H\-W\-B\-I\-T\-S}} \index{M\-P\-\_\-\-H\-W\-B\-I\-T\-S@{M\-P\-\_\-\-H\-W\-B\-I\-T\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-H\-W\-B\-I\-T\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-H\-W\-B\-I\-T\-S~({\bf M\-P\-\_\-\-W\-B\-I\-T\-S} $>$$>$ 1)}}\label{mp_8h_a3317414bc77cc27f0c50d300fc93db7e} \hypertarget{mp_8h_a137aeb18139f4f7c871639eb67ecf7b9}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K@{M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K}} \index{M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K@{M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-L\-S\-B\-M\-A\-S\-K~(({\bf mpw}) 0x1)}}\label{mp_8h_a137aeb18139f4f7c871639eb67ecf7b9} \hypertarget{mp_8h_a696235b870f5868d66258cbfc903affa}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K@{M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K}} \index{M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K@{M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-M\-S\-B\-M\-A\-S\-K~((({\bf mpw}) 0x1) $<$$<$ (\-M\-P\-\_\-\-W\-B\-I\-T\-S-\/1))}}\label{mp_8h_a696235b870f5868d66258cbfc903affa} \hypertarget{mp_8h_a65dc4dd0b6906f36f66e42a55097b8b1}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S@{M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}} \index{M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S@{M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-N\-I\-B\-B\-L\-E\-S\-\_\-\-T\-O\-\_\-\-W\-O\-R\-D\-S( \begin{DoxyParamCaption} \item[{}]{x} \end{DoxyParamCaption} )~((x) $>$$>$ 4)}}\label{mp_8h_a65dc4dd0b6906f36f66e42a55097b8b1} \hypertarget{mp_8h_ac32fb614379620608d1c733a79132cfa}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-W\-B\-Y\-T\-E\-S@{M\-P\-\_\-\-W\-B\-Y\-T\-E\-S}} \index{M\-P\-\_\-\-W\-B\-Y\-T\-E\-S@{M\-P\-\_\-\-W\-B\-Y\-T\-E\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-W\-B\-Y\-T\-E\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-W\-B\-Y\-T\-E\-S~({\bf M\-P\-\_\-\-W\-B\-I\-T\-S} $>$$>$ 3)}}\label{mp_8h_ac32fb614379620608d1c733a79132cfa} \hypertarget{mp_8h_a3650f0cbb0aaa7100a4a7fba476920bf}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S@{M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S}} \index{M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S@{M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-W\-N\-I\-B\-B\-L\-E\-S~({\bf M\-P\-\_\-\-W\-B\-I\-T\-S} $>$$>$ 2)}}\label{mp_8h_a3650f0cbb0aaa7100a4a7fba476920bf} \hypertarget{mp_8h_a7a243883fb94433b237da964799fabcd}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S@{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S}} \index{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S@{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-I\-T\-S( \begin{DoxyParamCaption} \item[{}]{x} \end{DoxyParamCaption} )~((x) $<$$<$ 6)}}\label{mp_8h_a7a243883fb94433b237da964799fabcd} \hypertarget{mp_8h_a337d99143ec5b28671099a5ea022f3b9}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S@{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}} \index{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S@{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S( \begin{DoxyParamCaption} \item[{}]{x} \end{DoxyParamCaption} )~((x) $<$$<$ 3)}}\label{mp_8h_a337d99143ec5b28671099a5ea022f3b9} \hypertarget{mp_8h_ab77b2dd70af10d0705b6048dc732a4dc}{\index{mp.\-h@{mp.\-h}!M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S@{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S}} \index{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S@{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S}!mp.h@{mp.\-h}} \subsubsection[{M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-N\-I\-B\-B\-L\-E\-S( \begin{DoxyParamCaption} \item[{}]{x} \end{DoxyParamCaption} )~((x) $<$$<$ 4)}}\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, {\bf M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}(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, {\bf M\-P\-\_\-\-W\-O\-R\-D\-S\-\_\-\-T\-O\-\_\-\-B\-Y\-T\-E\-S}(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 A\-N\-D 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[{F\-I\-L\-E $\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[{F\-I\-L\-E $\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 O\-R 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 X\-O\-R 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}