Math.Gmp.Native/docs/html/c7536923-2242-a346-3211-028...

101 lines
24 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<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.mpn_gcdext Method (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_ptr, mp_size_t)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Math.Gmp.Native.gmp_lib.mpn_gcdext(Math.Gmp.Native.mp_ptr,Math.Gmp.Native.mp_ptr,Math.Gmp.Native.mp_size_t@,Math.Gmp.Native.mp_ptr,Math.Gmp.Native.mp_size_t,Math.Gmp.Native.mp_ptr,Math.Gmp.Native.mp_size_t)" /><meta name="Description" content="Compute the greatest common divisor G of U and V. Compute a cofactor S such that G = US + VT." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Math.Gmp.Native" /><meta name="file" content="c7536923-2242-a346-3211-02806aebd69f" /><meta name="guid" content="c7536923-2242-a346-3211-02806aebd69f" /><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="toclevel0" data-toclevel="0"><a class="tocCollapsed" 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="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="1d98a5d2-dff5-3fd2-c322-13c56beabb21.htm" title="mpn_gcdext Method " tocid="1d98a5d2-dff5-3fd2-c322-13c56beabb21">mpn_gcdext Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="c7536923-2242-a346-3211-02806aebd69f.htm" title="mpn_gcdext Method (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_ptr, mp_size_t)" tocid="c7536923-2242-a346-3211-02806aebd69f">mpn_gcdext Method (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_ptr, mp_size_t)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="746d102a-5f3e-6142-b02a-63f3cac385ab.htm" title="mpn_gcdext Method (mp_ptr, mp_ptr, ptr(mp_size_t), mp_ptr, mp_size_t, mp_ptr, mp_size_t)" tocid="746d102a-5f3e-6142-b02a-63f3cac385ab">mpn_gcdext Method (mp_ptr, mp_ptr, ptr(mp_size_t), mp_ptr, mp_size_t, mp_ptr, mp_size_t)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">gmp_lib<span id="LST405A0C2B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_0?cpp=::|nu=.");</script>mpn_gcdext Method (mp_ptr, mp_ptr, mp_size_t<span id="LST405A0C2B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_1?cpp=%");</script>, mp_ptr, mp_size_t, mp_ptr, mp_size_t)</td></tr></table><span class="introStyle"></span> <div class="summary">
Compute the greatest common divisor G of U and V. Compute a cofactor S such that G = US + VT.
</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="identifier">mp_size_t</span> <span class="identifier">mpn_gcdext</span>(
<span class="identifier">mp_ptr</span> <span class="parameter">gp</span>,
<span class="identifier">mp_ptr</span> <span class="parameter">sp</span>,
<span class="keyword">ref</span> <span class="identifier">mp_size_t</span> <span class="parameter">sn</span>,
<span class="identifier">mp_ptr</span> <span class="parameter">up</span>,
<span class="identifier">mp_size_t</span> <span class="parameter">un</span>,
<span class="identifier">mp_ptr</span> <span class="parameter">vp</span>,
<span class="identifier">mp_size_t</span> <span class="parameter">vn</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">Function</span> <span class="identifier">mpn_gcdext</span> (
<span class="parameter">gp</span> <span class="keyword">As</span> <span class="identifier">mp_ptr</span>,
<span class="parameter">sp</span> <span class="keyword">As</span> <span class="identifier">mp_ptr</span>,
<span class="keyword">ByRef</span> <span class="parameter">sn</span> <span class="keyword">As</span> <span class="identifier">mp_size_t</span>,
<span class="parameter">up</span> <span class="keyword">As</span> <span class="identifier">mp_ptr</span>,
<span class="parameter">un</span> <span class="keyword">As</span> <span class="identifier">mp_size_t</span>,
<span class="parameter">vp</span> <span class="keyword">As</span> <span class="identifier">mp_ptr</span>,
<span class="parameter">vn</span> <span class="keyword">As</span> <span class="identifier">mp_size_t</span>
) <span class="keyword">As</span> <span class="identifier">mp_size_t</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="identifier">mp_size_t</span> <span class="identifier">mpn_gcdext</span>(
<span class="identifier">mp_ptr</span>^ <span class="parameter">gp</span>,
<span class="identifier">mp_ptr</span>^ <span class="parameter">sp</span>,
<span class="identifier">mp_size_t</span>% <span class="parameter">sn</span>,
<span class="identifier">mp_ptr</span>^ <span class="parameter">up</span>,
<span class="identifier">mp_size_t</span> <span class="parameter">un</span>,
<span class="identifier">mp_ptr</span>^ <span class="parameter">vp</span>,
<span class="identifier">mp_size_t</span> <span class="parameter">vn</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">mpn_gcdext</span> :
<span class="parameter">gp</span> : <span class="identifier">mp_ptr</span> *
<span class="parameter">sp</span> : <span class="identifier">mp_ptr</span> *
<span class="parameter">sn</span> : <span class="identifier">mp_size_t</span> <span class="keyword">byref</span> *
<span class="parameter">up</span> : <span class="identifier">mp_ptr</span> *
<span class="parameter">un</span> : <span class="identifier">mp_size_t</span> *
<span class="parameter">vp</span> : <span class="identifier">mp_ptr</span> *
<span class="parameter">vn</span> : <span class="identifier">mp_size_t</span> <span class="keyword">-&gt;</span> <span class="identifier">mp_size_t</span>
</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">gp</span></dt><dd>Type: <a href="4609ac5e-5cf9-cd20-2fa9-8040101c165c.htm">Math.Gmp.Native<span id="LST405A0C2B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_ptr</a><br />The fisrt result operand.</dd><dt><span class="parameter">sp</span></dt><dd>Type: <a href="4609ac5e-5cf9-cd20-2fa9-8040101c165c.htm">Math.Gmp.Native<span id="LST405A0C2B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_ptr</a><br />The second result operand.</dd><dt><span class="parameter">sn</span></dt><dd>Type: <a href="4b58a584-7a0e-b600-18fa-ebd493861eb3.htm">Math.Gmp.Native<span id="LST405A0C2B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_size_t</a><span id="LST405A0C2B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_5?cpp=%");</script><br />Pointer to the number of limbs of <span class="parameter">sp</span>.</dd><dt><span class="parameter">up</span></dt><dd>Type: <a href="4609ac5e-5cf9-cd20-2fa9-8040101c165c.htm">Math.Gmp.Native<span id="LST405A0C2B_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_ptr</a><br />The first operand integer.</dd><dt><span class="parameter">un</span></dt><dd>Type: <a href="4b58a584-7a0e-b600-18fa-ebd493861eb3.htm">Math.Gmp.Native<span id="LST405A0C2B_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_size_t</a><br />The number of limbs of <span class="parameter">up</span>.</dd><dt><span class="parameter">vp</span></dt><dd>Type: <a href="4609ac5e-5cf9-cd20-2fa9-8040101c165c.htm">Math.Gmp.Native<span id="LST405A0C2B_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_ptr</a><br />The second operand integer.</dd><dt><span class="parameter">vn</span></dt><dd>Type: <a href="4b58a584-7a0e-b600-18fa-ebd493861eb3.htm">Math.Gmp.Native<span id="LST405A0C2B_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST405A0C2B_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mp_size_t</a><br />The number of limbs of <span class="parameter">vp</span>.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="4b58a584-7a0e-b600-18fa-ebd493861eb3.htm">mp_size_t</a><br />The number of limbs of <span class="parameter">gp</span>.</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>
Let U be defined by {<span class="parameter">up</span>, <span class="parameter">un</span>}
and let V be defined by {<span class="parameter">vp</span>, <span class="parameter">vn</span>}.
</p><p>
The second cofactor T is not computed but can easily be obtained from (G - U * S) / V (the division will be exact).
It is required that <span class="parameter">un</span><span class="parameter">vn</span> &gt; 0,
and the most significant limb of {<span class="parameter">vp</span>, <span class="parameter">vn</span>} must be non-zero.
</p><p>
Store G at <span class="parameter">gp</span> and let the return value define its limb count.
Store S at <span class="parameter">sp</span> and let | <span class="parameter">sn</span>.Value | define its limb count.
S can be negative; when this happens <span class="parameter">sn</span>.Value will be negative.
The area at <span class="parameter">gp</span> should have room for <span class="parameter">vn</span> limbs
and the area at <span class="parameter">sp</span> should have room for <span class="parameter">vn</span> + 1 limbs.
</p><p>
Both source operands are destroyed.
</p><p>
Compatibility notes: GMP 4.3.0 and 4.3.1 defined S less strictly.
Earlier as well as later GMP releases define S as described here.
GMP releases before GMP 4.3.0 required additional space for both input and output areas.
More precisely, the areas {<span class="parameter">up</span>, <span class="parameter">un</span> + 1} and
{<span class="parameter">vp</span>, <span class="parameter">vn</span> + 1} were destroyed (i.e. the operands
plus an extra limb past the end of each), and the areas pointed to by <span class="parameter">gp</span>
and <span class="parameter">sp</span> should each have room for <span class="parameter">un</span> + 1 limbs.
</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 multi-precision operands, and expected result.</span>
mp_ptr up = <span class="highlight-keyword">new</span> mp_ptr(<span class="highlight-keyword">new</span> <span class="highlight-keyword">uint</span>[] { <span class="highlight-number">0x40000000</span>, <span class="highlight-number">0x00000000</span> });
mp_ptr vp = <span class="highlight-keyword">new</span> mp_ptr(<span class="highlight-keyword">new</span> <span class="highlight-keyword">uint</span>[] { <span class="highlight-number">0x00000000</span>, <span class="highlight-number">0x00000001</span> });
mp_ptr gp = <span class="highlight-keyword">new</span> mp_ptr(<span class="highlight-keyword">new</span> <span class="highlight-keyword">uint</span>[vp.Size * (IntPtr.Size / <span class="highlight-number">4</span>)]);
mp_ptr sp = <span class="highlight-keyword">new</span> mp_ptr(<span class="highlight-keyword">new</span> <span class="highlight-keyword">uint</span>[(vp.Size + <span class="highlight-number">1</span>) * (IntPtr.Size / <span class="highlight-number">4</span>)]);
mp_ptr result = <span class="highlight-keyword">new</span> mp_ptr(<span class="highlight-keyword">new</span> <span class="highlight-keyword">uint</span>[] { <span class="highlight-number">0x40000000</span>, <span class="highlight-number">0x00000000</span> });
mp_ptr cofactor = <span class="highlight-keyword">new</span> mp_ptr(<span class="highlight-keyword">new</span> <span class="highlight-keyword">uint</span>[] { <span class="highlight-number">0x00000001</span>, <span class="highlight-number">0x00000000</span>, <span class="highlight-number">0x00000000</span> });
<span class="highlight-comment">// Set gp = gcd(up, vp).</span>
mp_size_t sn = <span class="highlight-number">0</span>;
mp_size_t size = gmp_lib.mpn_gcdext(gp, sp, <span class="highlight-keyword">ref</span> sn, up, up.Size, vp, vp.Size);
<span class="highlight-comment">// Assert result.</span>
Assert.IsTrue(size == <span class="highlight-number">1</span>);
Assert.IsTrue(gp.SequenceEqual(result));
Assert.IsTrue(sn == <span class="highlight-number">1</span>);
Assert.IsTrue(sp.SequenceEqual(cofactor));
<span class="highlight-comment">// Release unmanaged memory.</span>
gmp_lib.free(gp, up, vp, sp, result, cofactor);</pre></div><div id="ID0EDAABA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="highlight-comment">' Create multi-precision operands, and expected result.</span>
<span class="highlight-keyword">Dim</span> up <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mp_ptr(<span class="highlight-keyword">New</span> <span class="highlight-keyword">UInteger</span>() { <span class="highlight-number">&amp;H40000000</span>, <span class="highlight-number">&amp;H0</span>})
<span class="highlight-keyword">Dim</span> vp <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mp_ptr(<span class="highlight-keyword">New</span> <span class="highlight-keyword">UInteger</span>() { <span class="highlight-number">&amp;H0</span>, <span class="highlight-number">&amp;H1</span>})
<span class="highlight-keyword">Dim</span> gp <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mp_ptr(<span class="highlight-keyword">New</span> <span class="highlight-keyword">UInteger</span>(vp.Size* (IntPtr.Size / <span class="highlight-number">4</span>) - <span class="highlight-number">1</span>) {})
<span class="highlight-keyword">Dim</span> sp <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mp_ptr(<span class="highlight-keyword">New</span> <span class="highlight-keyword">UInteger</span>((vp.Size + <span class="highlight-number">1</span>) * (IntPtr.Size / <span class="highlight-number">4</span>) - <span class="highlight-number">1</span>) {})
<span class="highlight-keyword">Dim</span> result <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mp_ptr(<span class="highlight-keyword">New</span> <span class="highlight-keyword">UInteger</span>() { <span class="highlight-number">&amp;H40000000</span>, <span class="highlight-number">&amp;H0</span>})
<span class="highlight-keyword">Dim</span> cofactor <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mp_ptr(<span class="highlight-keyword">New</span> <span class="highlight-keyword">UInteger</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-comment">' Set gp = gcd(up, vp).</span>
<span class="highlight-keyword">Dim</span> sn <span class="highlight-keyword">As</span> mp_size_t = <span class="highlight-number">0</span>
<span class="highlight-keyword">Dim</span> size <span class="highlight-keyword">As</span> mp_size_t = gmp_lib.mpn_gcdext(gp, sp, sn, up, up.Size, vp, vp.Size)
<span class="highlight-comment">' Assert result.</span>
Assert.IsTrue(size = <span class="highlight-number">1</span>)
Assert.IsTrue(gp.SequenceEqual(result))
Assert.IsTrue(sn = <span class="highlight-number">1</span>)
Assert.IsTrue(sp.SequenceEqual(cofactor))
<span class="highlight-comment">' Release unmanaged memory.</span>
gmp_lib.free(gp, up, vp, sp, result, cofactor)</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="1d98a5d2-dff5-3fd2-c322-13c56beabb21.htm">mpn_gcdext Overload</a></div><div class="seeAlsoStyle"><a href="d9c51b9f-0c54-770b-28ea-6eebd8fef368.htm">Math.Gmp.Native Namespace</a></div><div class="seeAlsoStyle"><a href="24ecd2d5-422f-e538-fd43-94b749652393.htm">mpn_gcd</a></div><div class="seeAlsoStyle"><a href="64373933-f98b-74b4-c10f-3b1a98c410bc.htm">mpn_gcd_1</a></div><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm"><a href="/Math.Gmp.Native/html/3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm#Low_level_Functions">Low-level Functions</a></a></div><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm"><a href="https://gmplib.org/manual/Low_002dlevel-Functions.html#Low_002dlevel-Functions">GNU MP - Low-level Functions</a></a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>