Math.Gmp.Native/docs/html/38d3a9de-bae7-3f44-18e0-38fe450d4cba.htm

78 lines
98 KiB
HTML
Raw Normal View History

<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.mpq_inp_str Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="mpq_inp_str method" /><meta name="System.Keywords" content="gmp_lib.mpq_inp_str method" /><meta name="Microsoft.Help.F1" content="Math.Gmp.Native.gmp_lib.mpq_inp_str" /><meta name="Microsoft.Help.Id" content="M:Math.Gmp.Native.gmp_lib.mpq_inp_str(Math.Gmp.Native.mpq_t,Math.Gmp.Native.ptr{Math.Gmp.Native.FILE},System.Int32)" /><meta name="Description" content="Read a string of digits from and convert them to a rational in ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Math.Gmp.Native" /><meta name="file" content="38d3a9de-bae7-3f44-18e0-38fe450d4cba" /><meta name="guid" content="38d3a9de-bae7-3f44-18e0-38fe450d4cba" /><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" data-toclevel="2"><a data-toc
2017-11-04 16:02:37 +01:00
Read a string of digits from <span class="parameter">stream</span> and convert them to a rational in <span class="parameter">rop</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="identifier">size_t</span> <span class="identifier">mpq_inp_str</span>(
<span class="identifier">mpq_t</span> <span class="parameter">rop</span>,
<span class="identifier">ptr</span>&lt;<span class="identifier">FILE</span>&gt; <span class="parameter">stream</span>,
<span class="identifier">int</span> <span class="parameter">base</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">mpq_inp_str</span> (
<span class="parameter">rop</span> <span class="keyword">As</span> <span class="identifier">mpq_t</span>,
<span class="parameter">stream</span> <span class="keyword">As</span> <span class="identifier">ptr</span>(<span class="keyword">Of</span> <span class="identifier">FILE</span>),
<span class="parameter">base</span> <span class="keyword">As</span> <span class="identifier">Integer</span>
) <span class="keyword">As</span> <span class="identifier">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">size_t</span> <span class="identifier">mpq_inp_str</span>(
<span class="identifier">mpq_t</span>^ <span class="parameter">rop</span>,
<span class="identifier">ptr</span>&lt;<span class="identifier">FILE</span>&gt;^ <span class="parameter">stream</span>,
<span class="identifier">int</span> <span class="parameter">base</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">mpq_inp_str</span> :
<span class="parameter">rop</span> : <span class="identifier">mpq_t</span> *
<span class="parameter">stream</span> : <span class="identifier">ptr</span>&lt;<span class="identifier">FILE</span>&gt; *
<span class="parameter">base</span> : <span class="identifier">int</span> <span class="keyword">-&gt;</span> <span class="identifier">size_t</span>
2017-11-08 01:29:10 +01:00
</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="635f1879-5f85-881e-cca8-3222baf5045a.htm">Math.Gmp.Native<span id="LST2F7EC01D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpq_t</a><br />The result rational.</dd><dt><span class="parameter">stream</span></dt><dd>Type: <a href="542faa00-d28a-72a2-2dd8-6c6021e683ce.htm">Math.Gmp.Native<span id="LST2F7EC01D_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ptr</a><span id="LST2F7EC01D_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_3?cs=&lt;|vb=(Of |cpp=&lt;|fs=&lt;'|nu=(");</script><a href="1bcc07bd-8fee-1107-844c-a5ff10e7660c.htm">FILE</a><span id="LST2F7EC01D_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_4?cs=&gt;|vb=)|cpp=&gt;|fs=&gt;|nu=)");</script><br />Pointer to file stream.</dd><dt><span class="parameter">base</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST2F7EC01D_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br />The base.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="d9761bfb-1882-59d2-e89b-c6460141f9a6.htm">size_t</a><br />Return the number of characters read (including white space), or 0 if a rational could not be read.</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>
2017-11-04 16:02:37 +01:00
Any initial white-space characters are read and discarded.
</p><p>
The input can be a fraction like "17/63" or just an integer like "123".
Reading stops at the first character not in this form, and white space is not permitted within the string.
If the input might not be in canonical form, then <a href="19d53697-65f1-2df5-62f3-988182af0c88.htm">mpq_canonicalize(mpq_t)</a> must be called
(see <a href="https://gmplib.org/manual/Rational-Number-Functions.html#Rational-Number-Functions">GNU MP - Rational Number Functions</a>).
</p><p>
2017-11-08 01:29:10 +01:00
The base can be between 2 and 36, or can be 0 in which case the leading characters
of the string determine the base, "0x" or "0X" for hexadecimal, "0" for octal, or decimal otherwise.
2017-11-04 16:02:37 +01:00
The leading characters are examined separately for the numerator and denominator of a fraction, so for instance
2017-11-08 01:29:10 +01:00
"0x10/11" is 16/11, whereas "0x10/0x11" is 16/17.
2017-11-04 16:02:37 +01:00
</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 op to 123/456.</span>
mpq_t op = <span class="highlight-keyword">new</span> mpq_t();
gmp_lib.mpq_init(op);
<span class="highlight-comment">// Write rational to a temporary file.</span>
<span class="highlight-keyword">string</span> pathname = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllText(pathname, <span class="highlight-literal">"123/456"</span>);
<span class="highlight-comment">// Read op from the temporary file, and assert that the number of bytes read is 7.</span>
ptr&lt;FILE&gt; stream = <span class="highlight-keyword">new</span> ptr&lt;FILE&gt;();
_wfopen_s(<span class="highlight-keyword">out</span> stream.Value.Value, pathname, <span class="highlight-literal">"r"</span>);
Assert.IsTrue(gmp_lib.mpq_inp_str(op, stream, <span class="highlight-number">10</span>) == <span class="highlight-number">7</span>);
fclose(stream.Value.Value);
<span class="highlight-comment">// Assert that op is 123/456.</span>
Assert.IsTrue(gmp_lib.mpq_cmp_ui(op, <span class="highlight-number">123</span>, <span class="highlight-number">456</span>U) == <span class="highlight-number">0</span>);
<span class="highlight-comment">// Delete temporary file.</span>
System.IO.File.Delete(pathname);
<span class="highlight-comment">// Release unmanaged memory allocated for op.</span>
gmp_lib.mpq_clear(op);</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 op to 123/456.</span>
<span class="highlight-keyword">Dim</span> op <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> mpq_t()
gmp_lib.mpq_init(op)
<span class="highlight-comment">' Write rational to a temporary file.</span>
<span class="highlight-keyword">Dim</span> pathname <span class="highlight-keyword">As</span> <span class="highlight-keyword">String</span> = System.IO.Path.GetTempFileName()
System.IO.File.WriteAllText(pathname, <span class="highlight-literal">"123/456"</span>)
<span class="highlight-comment">' Read op from the temporary file, and assert that the number of bytes read is 7.</span>
<span class="highlight-keyword">Dim</span> stream <span class="highlight-keyword">As</span> <span class="highlight-keyword">New</span> ptr(<span class="highlight-keyword">Of</span> FILE)()
_wfopen_s(stream.Value.Value, pathname, <span class="highlight-literal">"r"</span>)
Assert.IsTrue(gmp_lib.mpq_inp_str(op, stream, <span class="highlight-number">10</span>) = <span class="highlight-number">7</span>)
fclose(stream.Value.Value)
<span class="highlight-comment">' Assert that op is 123/456.</span>
Assert.IsTrue(gmp_lib.mpq_cmp_ui(op, <span class="highlight-number">123</span>, <span class="highlight-number">456</span>UI) = <span class="highlight-number">0</span>)
<span class="highlight-comment">' Delete temporary file.</span>
System.IO.File.Delete(pathname)
<span class="highlight-comment">' Release unmanaged memory allocated for op.</span>
gmp_lib.mpq_clear(op)</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="e1c059c4-4cd9-9a2b-1178-4b1a60354129.htm">gmp_lib<span id="LST2F7EC01D_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>mpq_out_str(ptr<span id="LST2F7EC01D_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_7?cs=&lt;|vb=(Of |cpp=&lt;|fs=&lt;'|nu=(");</script>FILE<span id="LST2F7EC01D_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F7EC01D_8?cs=&gt;|vb=)|cpp=&gt;|fs=&gt;|nu=)");</script>, Int32, mpq_t)</a></div><div class="seeAlsoStyle"><a href="3af6b34c-3242-2b75-e7c7-ab79af8a4b0f.htm"><a href="https://gmplib.org/manual/I_002fO-of-Rationals.html#I_002fO-of-Rationals">GNU MP - I/O of Rationals</a></a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>