Math.Gmp.Native/docs/html/8c8c1e55-275f-cff8-2152-883a4eaa163c.htm

96 lines
103 KiB
HTML
Raw Normal View History

2017-11-06 13:38:19 +01:00
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>gmp_lib.mpz_import Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="mpz_import method" /><meta name="System.Keywords" content="gmp_lib.mpz_import method" /><meta name="Microsoft.Help.F1" content="Math.Gmp.Native.gmp_lib.mpz_import" /><meta name="Microsoft.Help.Id" content="M:Math.Gmp.Native.gmp_lib.mpz_import(Math.Gmp.Native.mpz_t,Math.Gmp.Native.size_t,System.Int32,Math.Gmp.Native.size_t,System.Int32,Math.Gmp.Native.size_t,Math.Gmp.Native.void_ptr)" /><meta name="Description" content="Set from an array of word data at ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Math.Gmp.Native" /><meta name="file" content="8c8c1e55-275f-cff8-2152-883a4eaa163c" /><meta name="guid" content="8c8c1e55-275f-cff8-2152-883a4eaa163c" /><link type="text/css" rel="stylesheet" href="../styles/highlight.css" /><script type="text/javascript" src="../scripts/highlight.js"> </script><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">GMP Native Interface for .NET<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="846f5c8a-6cba-433e-9f18-cde2ff5695cd.htm" title="GMP Native Interface for .NET" tocid="roottoc">GMP Native Interface for .NET</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm" title="Math.Gmp.Native" tocid="d9c51b9f-0c54-770b-28ea-6eebd8fef368">Math.Gmp.Native</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm" title="gmp_lib Class" tocid="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f">gmp_lib Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="0fa7cbf3-e8f4-6b14-d829-8aa663e77c74.htm" title="gmp_lib Methods" tocid="0fa7cbf3-e8f4-6b14-d829-8aa663e77c74">gmp_lib Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="c9cb6a67-59b8-5c03-f31d-f252441c53f6.htm" title="_mpz_realloc Method " tocid="c9cb6a67-59b8-5c03-f31d-f252441c53f6">_mpz_realloc Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="2c68671c-cd5c-e2ec-52a2-65b0ca31c3d1.htm" title="allocate Method " tocid="2c68671c-cd5c-e2ec-52a2-65b0ca31c3d1">allocate Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="92160da3-b1af-e005-cb05-e3fb4dd524d8.htm" title="free Method " tocid="92160da3-b1af-e005-cb05-e3fb4dd524d8">free Method </a></div><div class="toclevel2
2017-11-04 16:02:37 +01:00
Set <span class="parameter">rop</span> from an array of word data at <span class="parameter">op</span>.
</div><p> </p>
<strong>Namespace:</strong>
 <a href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm">Math.Gmp.Native</a><br />
<strong>Assembly:</strong>
 Math.Gmp.Native (in Math.Gmp.Native.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">mpz_import</span>(
<span class="identifier">mpz_t</span> <span class="parameter">rop</span>,
<span class="identifier">size_t</span> <span class="parameter">count</span>,
<span class="identifier">int</span> <span class="parameter">order</span>,
<span class="identifier">size_t</span> <span class="parameter">size</span>,
<span class="identifier">int</span> <span class="parameter">endian</span>,
<span class="identifier">size_t</span> <span class="parameter">nails</span>,
<span class="identifier">void_ptr</span> <span class="parameter">op</span>
)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">mpz_import</span> (
<span class="parameter">rop</span> <span class="keyword">As</span> <span class="identifier">mpz_t</span>,
<span class="parameter">count</span> <span class="keyword">As</span> <span class="identifier">size_t</span>,
<span class="parameter">order</span> <span class="keyword">As</span> <span class="identifier">Integer</span>,
<span class="parameter">size</span> <span class="keyword">As</span> <span class="identifier">size_t</span>,
<span class="parameter">endian</span> <span class="keyword">As</span> <span class="identifier">Integer</span>,
<span class="parameter">nails</span> <span class="keyword">As</span> <span class="identifier">size_t</span>,
<span class="parameter">op</span> <span class="keyword">As</span> <span class="identifier">void_ptr</span>
)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>:
<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">mpz_import</span>(
<span class="identifier">mpz_t</span>^ <span class="parameter">rop</span>,
<span class="identifier">size_t</span> <span class="parameter">count</span>,
<span class="identifier">int</span> <span class="parameter">order</span>,
<span class="identifier">size_t</span> <span class="parameter">size</span>,
<span class="identifier">int</span> <span class="parameter">endian</span>,
<span class="identifier">size_t</span> <span class="parameter">nails</span>,
<span class="identifier">void_ptr</span> <span class="parameter">op</span>
)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">mpz_import</span> :
<span class="parameter">rop</span> : <span class="identifier">mpz_t</span> *
<span class="parameter">count</span> : <span class="identifier">size_t</span> *
<span class="parameter">order</span> : <span class="identifier">int</span> *
<span class="parameter">size</span> : <span class="identifier">size_t</span> *
<span class="parameter">endian</span> : <span class="identifier">int</span> *
<span class="parameter">nails</span> : <span class="identifier">size_t</span> *
<span class="parameter">op</span> : <span class="identifier">void_ptr</span> <span class="keyword">-&gt;</span> <span class="keyword">unit</span>
</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">rop</span></dt><dd>Type: <a href="8beda7fb-bbc4-b56f-fd1f-1459377ecb3b.htm">Math.Gmp.Native<span id="LST43C41447_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpz_t</a><br />The result integer.</dd><dt><span class="parameter">count</span></dt><dd>Type: <a href="d9761bfb-1882-59d2-e89b-c6460141f9a6.htm">Math.Gmp.Native<span id="LST43C41447_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>size_t</a><br />The number of words to read.</dd><dt><span class="parameter">order</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST43C41447_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><span class="code">1</span> for most significant word first or <span class="code">-1</span> for least significant first.</dd><dt><span class="parameter">size</span></dt><dd>Type: <a href="d9761bfb-1882-59d2-e89b-c6460141f9a6.htm">Math.Gmp.Native<span id="LST43C41447_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>size_t</a><br />The number of bytes in each word.</dd><dt><span class="parameter">endian</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST43C41447_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><span class="code">1</span> for most significant byte first, <span class="code">-1</span> for least significant first, or <span class="code">0</span> for the native endianness of the host CPU.</dd><dt><span class="parameter">nails</span></dt><dd>Type: <a href="d9761bfb-1882-59d2-e89b-c6460141f9a6.htm">Math.Gmp.Native<span id="LST43C41447_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>size_t</a><br />The number of most significant bits to skip.</dd><dt><span class="parameter">op</span></dt><dd>Type: <a href="e200d734-044d-4cc7-acc7-2333d7cf3c9a.htm">Math.Gmp.Native<span id="LST43C41447_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>void_ptr</a><br />The operand integer.</dd></dl></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Remarks</span></div><div id="ID2RBSection" class="collapsibleSection"><p>
The parameters specify the format of the data.
<span class="parameter">count</span> many words are read, each <span class="parameter">size</span> bytes.
<span class="parameter">order</span> can be <span class="code">1</span> for most significant word first or <span class="code">-1</span> for least significant first.
Within each word endian can be <span class="code">1</span> for most significant byte first, <span class="code">-1</span> for least significant first, or <span class="code">0</span> for the native endianness of the host CPU.
The most significant <span class="parameter">nails</span> bits of each word are skipped, this can be <span class="code">0</span> to use the full words.
</p><p>
There is no sign taken from the data, <span class="parameter">rop</span> will simply be a positive integer.
An application can handle any sign itself, and apply it for instance with <a href="5a61d62c-a0f0-5e86-b6dd-8ca6414b35ed.htm">mpz_neg(mpz_t, mpz_t)</a>.
</p><p>
There are no data alignment restrictions on <span class="parameter">op</span>, any address is allowed.
</p><p>
Heres an example converting an array of unsigned long data, most significant element first, and host byte order within each value.
</p><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EABDBA_tab1" class="codeSnippetContainerTabSingle">C++</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EABDBA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EABDBA');return false;" title="Copy">Copy</a></div></div><div id="ID0EABDBA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="highlight-keyword">unsigned</span> <span class="highlight-keyword">long</span> a[<span class="highlight-number">20</span>];
<span class="highlight-comment">/* Initialize z and a */</span>
mpz_import(z, <span class="highlight-number">20</span>, <span class="highlight-number">1</span>, <span class="highlight-keyword">sizeof</span>(a[<span class="highlight-number">0</span>]), <span class="highlight-number">0</span>, <span class="highlight-number">0</span>, a);</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EABDBA");</script><p>
This example assumes the full <span class="code">sizeof</span> bytes are used for data in the given type, which is usually true,
and certainly true for unsigned long everywhere we know of. However on Cray vector systems it may be noted that <span class="code">short</span>
and <span class="code">int</span> are always stored in 8 bytes (and with <span class="code">sizeof</span> indicating that) but use only 32 or 46 bits.
The <span class="parameter">nails</span> feature can account for this, by passing for instance <span class="code">8 * sizeof(int) - INT_BIT</span>.
</p></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Examples</span></div><div id="ID3RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDAABA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','cs','1','4');return false;">C#</a></div><div id="ID0EDAABA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','vb','2','4');return false;">VB</a></div><div id="ID0EDAABA_tab3" class="codeSnippetContainerTabPhantom"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','cpp','3','4');return false;">C++</a></div><div id="ID0EDAABA_tab4" class="codeSnippetContainerTabPhantom"><a href="#" onclick="javascript:ChangeTab('ID0EDAABA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDAABA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EDAABA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDAABA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="highlight-comment">// Create, initialize, and set the value of rop to 0.</span>
mpz_t rop = <span class="highlight-keyword">new</span> mpz_t();
gmp_lib.mpz_init(rop);
<span class="highlight-comment">// Copy 0x800000000000000000000001, 3 words of 4 bytes each, first word is lsb, and first byte in each word is msb.</span>
void_ptr data = gmp_lib.allocate(<span class="highlight-number">12</span>);
Marshal.Copy(<span class="highlight-keyword">new</span> <span class="highlight-keyword">byte</span>[] { <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x01</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x80</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span>, <span class="highlight-number">0x00</span> }, <span class="highlight-number">0</span>, data.ToIntPtr(), <span class="highlight-number">12</span>);
<span class="highlight-comment">// Import value into rop.</span>
gmp_lib.mpz_import(rop, <span class="highlight-number">3</span>, <span class="highlight-number">-1</span>, <span class="highlight-number">4</span>, <span class="highlight-number">1</span>, <span class="highlight-number">0</span>, data);
<span class="highlight-comment">// Assert the value of rop.</span>
char_ptr <span class="highlight-keyword">value</span> = gmp_lib.mpz_get_str(char_ptr.Zero, <span class="highlight-number">16</span>, rop);
Assert.IsTrue(<span class="highlight-keyword">value</span>.ToString() == <span class="highlight-literal">"800000000000000000000001"</span>);
<span class="highlight-comment">// Release unmanaged memory allocated for rop, data, and value.</span>
gmp_lib.mpz_clear(rop);
gmp_lib.free(data);
gmp_lib.free(<span class="highlight-keyword">value</span>);</pre></div><div id="ID0EDAABA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="highlight-comment">' Create, initialize, and set the value of rop to 0.</span>
<span class="highlight-keyword">Dim</span> rop <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mpz_t()
gmp_lib.mpz_init(rop)
<span class="highlight-comment">' Copy 0x800000000000000000000001, 3 words of 4 bytes each, first word is lsb, and first byte in each word is msb.</span>
<span class="highlight-keyword">Dim</span> data <span class="highlight-keyword">As</span> void_ptr = gmp_lib.allocate(<span class="highlight-number">12</span>)
Marshal.Copy(<span class="highlight-keyword">New</span> <span class="highlight-keyword">Byte</span>() { <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H1</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H80</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H0</span>}, <span class="highlight-number">0</span>, data.ToIntPtr(), <span class="highlight-number">12</span>)
<span class="highlight-comment">' Import value into rop.</span>
gmp_lib.mpz_import(rop, <span class="highlight-number">3</span>, <span class="highlight-number">-1</span>, <span class="highlight-number">4</span>, <span class="highlight-number">1</span>, <span class="highlight-number">0</span>, data)
<span class="highlight-comment">' Assert the value of rop.</span>
<span class="highlight-keyword">Dim</span> value <span class="highlight-keyword">As</span> char_ptr = gmp_lib.mpz_get_str(char_ptr.Zero, <span class="highlight-number">16</span>, rop)
Assert.IsTrue(value.ToString() = <span class="highlight-literal">"800000000000000000000001"</span>)
<span class="highlight-comment">' Release unmanaged memory allocated for rop, data, and value.</span>
gmp_lib.mpz_clear(rop)
gmp_lib.free(data)
gmp_lib.free(value)</pre></div><div id="ID0EDAABA_code_Div3" class="codeSnippetContainerCode" style="display: none"><p>No code example is currently available or this language may not be supported.</p></div><div id="ID0EDAABA_code_Div4" class="codeSnippetContainerCode" style="display: none"><p>No code example is currently available or this language may not be supported.</p></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDAABA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm">gmp_lib Class</a></div><div class="seeAlsoStyle"><a href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm">Math.Gmp.Native Namespace</a></div><div class="seeAlsoStyle"><a href="c9d371c8-8c16-77a3-2c47-8edae05276c5.htm">gmp_lib<span id="LST43C41447_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpz_export(void_ptr, size_t<span id="LST43C41447_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43C41447_9?cpp=%");</script>, Int32, size_t, Int32, size_t, mpz_t)</a></div><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm"><a href="https://gmplib.org/manual/Integer-Import-and-Export.html#Integer-Import-and-Export">GNU MP - Integer Import and Export</a></a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>