mpfr-binary-operators-with-a-natural-operand.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
  2. <html>
  3. <!-- Created on November 8, 2012 by texi2html 1.82
  4. texi2html was written by:
  5. Lionel Cons <[email protected]> (original author)
  6. Karl Berry <[email protected]>
  7. Olaf Bachmann <[email protected]>
  8. and many others.
  9. Maintained by: Many creative people.
  10. Send bugs and suggestions to <[email protected]>
  11. -->
  12. <head>
  13. <title>avram - a virtual machine code interpreter: D.14.3 mpfr binary operators with a natural operand</title>
  14. <meta name="description" content="avram - a virtual machine code interpreter: D.14.3 mpfr binary operators with a natural operand">
  15. <meta name="keywords" content="avram - a virtual machine code interpreter: D.14.3 mpfr binary operators with a natural operand">
  16. <meta name="resource-type" content="document">
  17. <meta name="distribution" content="global">
  18. <meta name="Generator" content="texi2html 1.82">
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <style type="text/css">
  21. <!--
  22. a.summary-letter {text-decoration: none}
  23. blockquote.smallquotation {font-size: smaller}
  24. pre.display {font-family: serif}
  25. pre.format {font-family: serif}
  26. pre.menu-comment {font-family: serif}
  27. pre.menu-preformatted {font-family: serif}
  28. pre.smalldisplay {font-family: serif; font-size: smaller}
  29. pre.smallexample {font-size: smaller}
  30. pre.smallformat {font-family: serif; font-size: smaller}
  31. pre.smalllisp {font-size: smaller}
  32. span.roman {font-family:serif; font-weight:normal;}
  33. span.sansserif {font-family:sans-serif; font-weight:normal;}
  34. ul.toc {list-style: none}
  35. -->
  36. </style>
  37. </head>
  38. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  39. <a name="mpfr-binary-operators-with-a-natural-operand"></a>
  40. <table cellpadding="1" cellspacing="1" border="0">
  41. <tr><td valign="middle" align="left">[<a href="mpfr-unary-operators.html#mpfr-unary-operators" title="Previous section in reading order"> &lt; </a>]</td>
  42. <td valign="middle" align="left">[<a href="mpfr-binary-predicates.html#mpfr-binary-predicates" title="Next section in reading order"> &gt; </a>]</td>
  43. <td valign="middle" align="left"> &nbsp; </td>
  44. <td valign="middle" align="left">[<a href="External-Libraries.html#External-Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  45. <td valign="middle" align="left">[<a href="mpfr.html#mpfr" title="Up section"> Up </a>]</td>
  46. <td valign="middle" align="left">[<a href="Copying.html#Copying" title="Next chapter"> &gt;&gt; </a>]</td>
  47. <td valign="middle" align="left"> &nbsp; </td>
  48. <td valign="middle" align="left"> &nbsp; </td>
  49. <td valign="middle" align="left"> &nbsp; </td>
  50. <td valign="middle" align="left"> &nbsp; </td>
  51. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  52. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  53. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  54. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  55. </tr></table>
  56. <hr size="1">
  57. <a name="mpfr-binary-operators-with-a-natural-operand-1"></a>
  58. <h3 class="subsection">D.14.3 <code>mpfr</code> binary operators with a natural operand</h3>
  59. <p>Functions with these names take an argument of the form
  60. <code>(<var>x</var>,<var>n</var>)</code>, where <var>x</var> is an <code>mpfr</code> number
  61. and <var>n</var> is a natural number.
  62. </p>
  63. <ul>
  64. <li> <code>root</code>
  65. </li><li> <code>pow_ui</code>
  66. </li><li> <code>mul_2ui</code>
  67. </li><li> <code>div_2ui</code>
  68. </li><li> <code>grow</code>
  69. </li><li> <code>shrink</code>
  70. </li></ul>
  71. <p>The last two are specific to the virtual code interface, having no
  72. counterpart in the native API of the <code>mpfr</code> library. The
  73. <code>grow</code> function returns a copy of <var>x</var> with its precision
  74. increased by <var>n</var> bits, and the <code>shrink</code> function returns a
  75. copy of <var>x</var> with its precision reduced by <var>n</var> bits.
  76. </p>
  77. <ul>
  78. <li>
  79. The precisions are silently capped at the maximum or floored at the
  80. <a name="index-precision-1"></a>
  81. minimum allowable precisions if necessary.
  82. </li><li>
  83. Increasing the precision by the <code>grow</code> function does not directly
  84. cause a more accurate result to be computed, but only pads an existing
  85. number with zeros.
  86. </li><li>
  87. Decreasing the precision by the <code>shrink</code> function does not prevent
  88. valid bits from being discarded.
  89. </li></ul>
  90. <p>The appropriate way to use <code>grow</code> is to grow the precision of an
  91. operand before applying an operator to it, which will cause the result
  92. to be computed to the full precision. This capability is suitable for
  93. algorithms that iterate over increasing precisions until a stopping
  94. criterion is met.
  95. </p>
  96. <hr size="1">
  97. <table cellpadding="1" cellspacing="1" border="0">
  98. <tr><td valign="middle" align="left">[<a href="mpfr-unary-operators.html#mpfr-unary-operators" title="Previous section in reading order"> &lt; </a>]</td>
  99. <td valign="middle" align="left">[<a href="mpfr-binary-predicates.html#mpfr-binary-predicates" title="Next section in reading order"> &gt; </a>]</td>
  100. <td valign="middle" align="left"> &nbsp; </td>
  101. <td valign="middle" align="left">[<a href="External-Libraries.html#External-Libraries" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  102. <td valign="middle" align="left">[<a href="mpfr.html#mpfr" title="Up section"> Up </a>]</td>
  103. <td valign="middle" align="left">[<a href="Copying.html#Copying" title="Next chapter"> &gt;&gt; </a>]</td>
  104. <td valign="middle" align="left"> &nbsp; </td>
  105. <td valign="middle" align="left"> &nbsp; </td>
  106. <td valign="middle" align="left"> &nbsp; </td>
  107. <td valign="middle" align="left"> &nbsp; </td>
  108. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  109. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  110. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  111. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  112. </tr></table>
  113. <p>
  114. <font size="-1">
  115. This document was generated on <i>November 8, 2012</i> using <a href="http://www.nongnu.org/texi2html/"><i>texi2html 1.82</i></a>.
  116. </font>
  117. <br>
  118. </p>
  119. </body>
  120. </html>