components/mpfr/Solaris/index.html
author pkidd <patrick.kidd@oracle.com>
Mon, 10 Apr 2017 14:56:53 -0700
branchs11u3-sru
changeset 7856 a95be34a8fe4
parent 219 22d9e175d379
permissions -rw-r--r--
Added tag 0.175.3.20.0.1.0, S11.3SRU20.1 for changeset 87236a3c36b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
219
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     1
<html lang="en">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     2
<head>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
<title>MPFR 2.3.2</title>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
<meta name="description" content="How to install and use MPFR, a library for reliable multiple precision floating-point arithmetic, version 2.3.2.">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
<meta name="generator" content="makeinfo 4.11">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
<link title="Top" rel="top" href="#Top">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
<!--
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
This manual documents how to install and use the Multiple Precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
Floating-Point Reliable Library, version 2.3.2.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
Permission is granted to copy, distribute and/or modify this document under
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
the terms of the GNU Free Documentation License, Version 1.2 or any later
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
version published by the Free Software Foundation; with no Invariant Sections,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
license is included in *note GNU Free Documentation License::.-->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
<meta http-equiv="Content-Style-Type" content="text/css">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
<style type="text/css"><!--
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
  pre.display { font-family:inherit }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
  pre.format  { font-family:inherit }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
  pre.smalldisplay { font-family:inherit; font-size:smaller }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
  pre.smallformat  { font-family:inherit; font-size:smaller }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
  pre.smallexample { font-size:smaller }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
  pre.smalllisp    { font-size:smaller }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
  span.sc    { font-variant:small-caps }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
  span.roman { font-family:serif; font-weight:normal; } 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    30
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
--></style>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
</head>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
<body>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
<a name="Top"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    37
Next:&nbsp;<a rel="next" accesskey="n" href="#Copying">Copying</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    38
Previous:&nbsp;<a rel="previous" accesskey="p" href="#dir">(dir)</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
<h2 class="unnumbered">MPFR</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
   <p>This manual documents how to install and use the Multiple Precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
Floating-Point Reliable Library, version 2.3.2.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    47
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    48
   <p>Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    49
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    50
   <p>Permission is granted to copy, distribute and/or modify this document under
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    51
the terms of the GNU Free Documentation License, Version 1.2 or any later
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
version published by the Free Software Foundation; with no Invariant Sections,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
license is included in <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    55
   <pre class="sp">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
<!-- Don't bother with contents for html, the menus seem adequate. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
<ul class="menu">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    61
<li><a accesskey="1" href="#Copying">Copying</a>:                      MPFR Copying Conditions (LGPL). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
<li><a accesskey="2" href="#Introduction-to-MPFR">Introduction to MPFR</a>:         Brief introduction to MPFR. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    63
<li><a accesskey="3" href="#Installing-MPFR">Installing MPFR</a>:              How to configure and compile the MPFR library. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
<li><a accesskey="4" href="#Reporting-Bugs">Reporting Bugs</a>:               How to usefully report bugs. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    65
<li><a accesskey="5" href="#MPFR-Basics">MPFR Basics</a>:                  What every MPFR user should now. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
<li><a accesskey="6" href="#MPFR-Interface">MPFR Interface</a>:               MPFR functions and macros. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
<li><a accesskey="7" href="#Contributors">Contributors</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
<li><a accesskey="8" href="#References">References</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
<li><a accesskey="9" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
<li><a href="#Concept-Index">Concept Index</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    71
<li><a href="#Function-Index">Function Index</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    74
<!-- @m{T,N} is $T$ in tex or @math{N} otherwise.  This is an easy way to give -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    75
<!-- different forms for math in tex and info.  Commas in N or T don't work, -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    76
<!-- but @C{} can be used instead.  \, works in info but not in tex. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    77
<!-- Usage: @GMPabs{x} -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    78
<!-- Give either |x| in tex, or abs(x) in info or html. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    79
<!-- Usage: @GMPtimes{} -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    80
<!-- Give either \times or the word "times". -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    81
<!-- New math operators. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    82
<!-- @abs{} can be used in both tex and info, or just \abs in tex. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    83
<!-- @times{} made available as a "*" in info and html (already works in tex). -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    84
<!-- Math operators already available in tex, made available in info too. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    85
<!-- For example @log{} can be used in both tex and info. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    86
<!-- @pom{} definition -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    87
<!-- The following macro have been copied from gmp.texi -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    88
<!-- Usage: @MPFRpxreftop{info,title} -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    89
<!-- Like @pxref{}, but designed for a reference to the top of a document, not -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    90
<!-- a particular section. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    91
<!-- The texinfo manual recommends putting a likely section name in references -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    92
<!-- like this, eg. "Introduction", but it seems better to just give the title. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    93
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    94
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    95
<a name="Copying"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    96
Next:&nbsp;<a rel="next" accesskey="n" href="#Introduction-to-MPFR">Introduction to MPFR</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    97
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Top">Top</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    98
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    99
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   100
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   101
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   102
<!-- node-name, next, previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   103
<h2 class="unnumbered">MPFR Copying Conditions</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   104
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   105
<p><a name="index-Copying-conditions-1"></a><a name="index-Conditions-for-copying-MPFR-2"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   106
This library is <dfn>free</dfn>; this means that everyone is free to use it and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   107
free to redistribute it on a free basis.  The library is not in the public
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   108
domain; it is copyrighted and there are restrictions on its distribution, but
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   109
these restrictions are designed to permit everything that a good cooperating
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   110
citizen would want to do.  What is not allowed is to try to prevent others
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   111
from further sharing any version of this library that they might get from
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   112
you.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   113
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   114
   <p>Specifically, we want to make sure that you have the right to give away copies
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   115
of the library, that you receive source code or else can get it if you want
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   116
it, that you can change this library or use pieces of it in new free programs,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   117
and that you know you can do these things.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   118
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   119
   <p>To make sure that everyone has such rights, we have to forbid you to deprive
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   120
anyone else of these rights.  For example, if you distribute copies of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   121
MPFR library, you must give the recipients all the rights that you have.  You
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   122
must make sure that they, too, receive or can get the source code.  And you
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   123
must tell them their rights.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   124
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   125
   <p>Also, for our own protection, we must make certain that everyone finds out
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   126
that there is no warranty for the MPFR library.  If it is modified by
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   127
someone else and passed on, we want their recipients to know that what they
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   128
have is not what we distributed, so that any problems introduced by others
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   129
will not reflect on our reputation.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   130
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   131
   <p>The precise conditions of the license for the MPFR library are found in the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   132
Lesser General Public License that accompanies the source code. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   133
See the file COPYING.LIB.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   134
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   135
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   136
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   137
<a name="Introduction-to-MPFR"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   138
Next:&nbsp;<a rel="next" accesskey="n" href="#Installing-MPFR">Installing MPFR</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   139
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Copying">Copying</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   140
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   141
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   142
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   143
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   144
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   145
<h2 class="chapter">1 Introduction to MPFR</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   146
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   147
<p>MPFR is a portable library written in C for arbitrary precision arithmetic
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   148
on floating-point numbers. It is based on the GNU MP library. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   149
It aims to extend the class of floating-point numbers provided by the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   150
GNU MP library by a precise semantics. The main differences
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   151
with the <code>mpf</code> class from GNU MP are:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   152
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   153
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   154
<li>the MPFR code is portable, i.e. the result of any operation
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   155
does not depend (or should not) on the machine word size
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   156
<code>mp_bits_per_limb</code> (32 or 64 on most machines);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   157
<li>the precision in bits can be set exactly to any valid value
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   158
for each variable (including very small precision);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   159
<li>MPFR provides the four rounding modes from the IEEE 754-1985
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   160
standard. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   161
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   162
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   163
   <p>In particular, with a precision of 53 bits, MPFR should be able to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   164
exactly reproduce all computations with double-precision machine
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   165
floating-point numbers (e.g., <code>double</code> type in C, with a C
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   166
implementation that rigorously follows Annex F of the ISO C99 standard
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   167
and <code>FP_CONTRACT</code> pragma set to <code>OFF</code>) on the four arithmetic
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   168
operations and the square root, except the default exponent range is much
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   169
wider and subnormal numbers are not implemented (but can be emulated).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   170
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   171
   <p>This version of MPFR is released under the GNU Lesser General Public
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   172
License, Version 2.1 or any later version. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   173
It is permitted to link MPFR to most non-free programs, as long as when
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   174
distributing them the MPFR source code and a means to re-link with a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   175
modified MPFR library is provided.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   176
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   177
<h3 class="section">1.1 How to Use This Manual</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   178
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   179
<p>Everyone should read <a href="#MPFR-Basics">MPFR Basics</a>.  If you need to install the library
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   180
yourself, you need to read <a href="#Installing-MPFR">Installing MPFR</a>, too.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   181
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   182
   <p>The rest of the manual can be used for later reference, although it is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   183
probably a good idea to glance through it.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   184
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   185
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   186
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   187
<a name="Installing-MPFR"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   188
Next:&nbsp;<a rel="next" accesskey="n" href="#Reporting-Bugs">Reporting Bugs</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   189
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Introduction-to-MPFR">Introduction to MPFR</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   190
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   191
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   192
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   193
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   194
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   195
<h2 class="chapter">2 Installing MPFR</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   196
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   197
<p><a name="index-Installation-3"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   198
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   199
<h3 class="section">2.1 How to Install</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   200
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   201
<p>Here are the steps needed to install the library on Unix systems
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   202
(more details are provided in the <samp><span class="file">INSTALL</span></samp> file):
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   203
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   204
     <ol type=1 start=1>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   205
<li>To build MPFR, you first have to install GNU MP
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   206
(version 4.1 or higher) on your computer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   207
You need a C compiler, preferably GCC, but any reasonable compiler should
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   208
work.  And you need a standard Unix &lsquo;<samp><span class="samp">make</span></samp>&rsquo; program, plus some other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   209
standard Unix utility programs.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   210
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   211
     <li>In the MPFR build directory, type
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   212
&lsquo;<samp><span class="samp">./configure</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   213
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   214
     <p>This will prepare the build and setup the options according to your system. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   215
If you get error messages, you might check that you use the same compiler
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   216
and compile options as for GNU MP (see the <samp><span class="file">INSTALL</span></samp> file).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   217
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   218
     <li>&lsquo;<samp><span class="samp">make</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   219
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   220
     <p>This will compile MPFR, and create a library archive file <samp><span class="file">libmpfr.a</span></samp>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   221
A dynamic library may be produced too (see configure).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   222
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   223
     <li>&lsquo;<samp><span class="samp">make check</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   224
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   225
     <p>This will make sure MPFR was built correctly. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   226
If you get error messages, please
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   227
report this to &lsquo;<samp><span class="samp">[email protected]</span></samp>&rsquo;.  (See <a href="#Reporting-Bugs">Reporting Bugs</a>, for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   228
information on what to include in useful bug reports.)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   229
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   230
     <li>&lsquo;<samp><span class="samp">make install</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   231
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   232
     <p>This will copy the files <samp><span class="file">mpfr.h</span></samp> and <samp><span class="file">mpf2mpfr.h</span></samp> to the directory
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   233
<samp><span class="file">/usr/local/include</span></samp>, the file <samp><span class="file">libmpfr.a</span></samp> to the directory
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   234
<samp><span class="file">/usr/local/lib</span></samp>, and the file <samp><span class="file">mpfr.info</span></samp> to the directory
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   235
<samp><span class="file">/usr/local/share/info</span></samp> (or if you passed the &lsquo;<samp><span class="samp">--prefix</span></samp>&rsquo; option to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   236
 <samp><span class="file">configure</span></samp>, using the prefix directory given as argument to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   237
&lsquo;<samp><span class="samp">--prefix</span></samp>&rsquo; instead of <samp><span class="file">/usr/local</span></samp>).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   238
        </ol>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   239
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   240
<h3 class="section">2.2 Other `make' Targets</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   241
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   242
<p>There are some other useful make targets:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   243
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   244
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   245
<li>&lsquo;<samp><span class="samp">mpfr.info</span></samp>&rsquo; or &lsquo;<samp><span class="samp">info</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   246
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   247
     <p>Create an info version of the manual, in <samp><span class="file">mpfr.info</span></samp>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   248
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   249
     <li>&lsquo;<samp><span class="samp">mpfr.pdf</span></samp>&rsquo; or &lsquo;<samp><span class="samp">pdf</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   250
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   251
     <p>Create a PDF version of the manual, in <samp><span class="file">mpfr.pdf</span></samp>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   252
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   253
     <li>&lsquo;<samp><span class="samp">mpfr.dvi</span></samp>&rsquo; or &lsquo;<samp><span class="samp">dvi</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   254
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   255
     <p>Create a DVI version of the manual, in <samp><span class="file">mpfr.dvi</span></samp>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   256
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   257
     <li>&lsquo;<samp><span class="samp">mpfr.ps</span></samp>&rsquo; or &lsquo;<samp><span class="samp">ps</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   258
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   259
     <p>Create a Postscript version of the manual, in <samp><span class="file">mpfr.ps</span></samp>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   260
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   261
     <li>&lsquo;<samp><span class="samp">mpfr.html</span></samp>&rsquo; or &lsquo;<samp><span class="samp">html</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   262
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   263
     <p>Create a HTML version of the manual, in several pages in the directory
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   264
<samp><span class="file">mpfr.html</span></samp>; if you want only one output HTML file, then type
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   265
&lsquo;<samp><span class="samp">makeinfo --html --no-split mpfr.texi</span></samp>&rsquo; instead.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   266
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   267
     <li>&lsquo;<samp><span class="samp">clean</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   268
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   269
     <p>Delete all object files and archive files, but not the configuration files.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   270
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   271
     <li>&lsquo;<samp><span class="samp">distclean</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   272
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   273
     <p>Delete all files not included in the distribution.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   274
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   275
     <li>&lsquo;<samp><span class="samp">uninstall</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   276
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   277
     <p>Delete all files copied by &lsquo;<samp><span class="samp">make install</span></samp>&rsquo;. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   278
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   279
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   280
<h3 class="section">2.3 Build Problems</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   281
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   282
<p>In case of problem, please read the <samp><span class="file">INSTALL</span></samp> file carefully
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   283
before reporting a bug, in particular section &ldquo;In case of problem&rdquo;. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   284
Some problems are due to bad configuration on the user side (not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   285
specific to MPFR). Problems are also mentioned in the FAQ
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   286
<a href="http://www.mpfr.org/faq.html">http://www.mpfr.org/faq.html</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   287
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   288
<!-- Warning! Do not split "MPFR ... @url{...}" across several lines -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   289
<!-- as this needs to be updated with update-version. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   290
   <p>Please report problems to &lsquo;<samp><span class="samp">[email protected]</span></samp>&rsquo;. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   291
See <a href="#Reporting-Bugs">Reporting Bugs</a>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   292
Some bug fixes are available on the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   293
MPFR 2.3.2 web page <a href="http://www.mpfr.org/mpfr-2.3.2/">http://www.mpfr.org/mpfr-2.3.2/</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   294
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   295
<h3 class="section">2.4 Getting the Latest Version of MPFR</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   296
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   297
<p>The latest version of MPFR is available from <a href="http://www.mpfr.org/">http://www.mpfr.org/</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   298
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   299
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   300
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   301
<a name="Reporting-Bugs"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   302
Next:&nbsp;<a rel="next" accesskey="n" href="#MPFR-Basics">MPFR Basics</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   303
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Installing-MPFR">Installing MPFR</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   304
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   305
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   306
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   307
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   308
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   309
<h2 class="chapter">3 Reporting Bugs</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   310
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   311
<p><a name="index-Reporting-bugs-4"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   312
<!-- Warning! Do not split "MPFR ... @url{...}" across several lines -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   313
<!-- as this needs to be updated with update-version. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   314
If you think you have found a bug in the MPFR library, first have a look
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   315
on the MPFR 2.3.2 web page <a href="http://www.mpfr.org/mpfr-2.3.2/">http://www.mpfr.org/mpfr-2.3.2/</a> and the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   316
FAQ <a href="http://www.mpfr.org/faq.html">http://www.mpfr.org/faq.html</a>:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   317
perhaps this bug is already known, in which case you may find there
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   318
a workaround for it. Otherwise, please investigate and report it. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   319
We have made this library available to you, and it is not to ask too
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   320
much from you, to ask you to report the bugs that you find.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   321
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   322
   <p>There are a few things you should think about when you put your bug report
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   323
together.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   324
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   325
   <p>You have to send us a test case that makes it possible for us to reproduce the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   326
bug.  Include instructions on how to run the test case.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   327
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   328
   <p>You also have to explain what is wrong; if you get a crash, or if the results
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   329
printed are incorrect and in that case, in what way.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   330
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   331
   <p>Please include compiler version information in your bug report. This can
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   332
be extracted using &lsquo;<samp><span class="samp">cc -V</span></samp>&rsquo; on some machines, or, if you're using gcc,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   333
&lsquo;<samp><span class="samp">gcc -v</span></samp>&rsquo;. Also, include the output from &lsquo;<samp><span class="samp">uname -a</span></samp>&rsquo; and the MPFR
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   334
version (the GMP version may be useful too).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   335
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   336
   <p>If your bug report is good, we will do our best to help you to get a corrected
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   337
version of the library; if the bug report is poor, we won't do anything about
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   338
it (aside of chiding you to send better bug reports).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   339
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   340
   <p>Send your bug report to: &lsquo;<samp><span class="samp">[email protected]</span></samp>&rsquo;.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   341
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   342
   <p>If you think something in this manual is unclear, or downright incorrect, or if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   343
the language needs to be improved, please send a note to the same address.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   344
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   345
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   346
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   347
<a name="MPFR-Basics"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   348
Next:&nbsp;<a rel="next" accesskey="n" href="#MPFR-Interface">MPFR Interface</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   349
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Reporting-Bugs">Reporting Bugs</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   350
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   351
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   352
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   353
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   354
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   355
<h2 class="chapter">4 MPFR Basics</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   356
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   357
<h3 class="section">4.1 Headers and Libraries</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   358
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   359
<p><a name="index-g_t_0040file_007bmpfr_002eh_007d-5"></a>All declarations needed to use MPFR are collected in the include file
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   360
<samp><span class="file">mpfr.h</span></samp>.  It is designed to work with both C and C++ compilers. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   361
You should include that file in any program using the MPFR library:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   362
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   363
<pre class="example">     #include &lt;mpfr.h&gt;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   364
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   365
   <p><a name="index-g_t_0040code_007bstdio_002eh_007d-6"></a>Note however that prototypes for MPFR functions with <code>FILE *</code> parameters
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   366
are provided only if <code>&lt;stdio.h&gt;</code> is included too (before <samp><span class="file">mpfr.h</span></samp>).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   367
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   368
<pre class="example">     #include &lt;stdio.h&gt;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   369
     #include &lt;mpfr.h&gt;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   370
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   371
   <p>You can avoid the use of MPFR macros encapsulating functions by defining
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   372
the &lsquo;<samp><span class="samp">MPFR_USE_NO_MACRO</span></samp>&rsquo; macro before <samp><span class="file">mpfr.h</span></samp> is included.  In
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   373
general this should not be necessary, but this can be useful when debugging
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   374
user code: with some macros, the compiler may emit spurious warnings with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   375
some warning options, and macros can prevent some prototype checking.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   376
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   377
   <p><a name="index-Libraries-7"></a><a name="index-Linking-8"></a><a name="index-g_t_0040code_007blibmpfr_007d-9"></a>All programs using MPFR must link against both <samp><span class="file">libmpfr</span></samp> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   378
<samp><span class="file">libgmp</span></samp> libraries.  On a typical Unix-like system this can be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   379
done with &lsquo;<samp><span class="samp">-lmpfr -lgmp</span></samp>&rsquo; (in that order), for example
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   380
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   381
<pre class="example">     gcc myprogram.c -lmpfr -lgmp
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   382
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   383
   <p><a name="index-Libtool-10"></a>MPFR is built using Libtool and an application can use that to link if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   384
desired, see <cite>GNU Libtool</cite>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   385
<!-- Note: Do not try the above cross reference without moving mpfr.info -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   386
<!-- into some "safe" place first. Due to a poor design, "info" will not -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   387
<!-- find the correct libtool info file because of the "libtool" script -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   388
<!-- in MPFR's directory! -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   389
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   390
   <p>If MPFR has been installed to a non-standard location, then it may be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   391
necessary to set up environment variables such as &lsquo;<samp><span class="samp">C_INCLUDE_PATH</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   392
and &lsquo;<samp><span class="samp">LIBRARY_PATH</span></samp>&rsquo;, or use &lsquo;<samp><span class="samp">-I</span></samp>&rsquo; and &lsquo;<samp><span class="samp">-L</span></samp>&rsquo; compiler options,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   393
in order to point to the right directories. For a shared library, it may
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   394
also be necessary to set up some sort of run-time library path (e.g.,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   395
&lsquo;<samp><span class="samp">LD_LIBRARY_PATH</span></samp>&rsquo;) on some systems. Please read the <samp><span class="file">INSTALL</span></samp>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   396
file for additional information.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   397
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   398
<h3 class="section">4.2 Nomenclature and Types</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   399
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   400
<p><a name="index-Floating_002dpoint-number-11"></a><a name="index-g_t_0040code_007bmpfr_005ft_007d-12"></a>A <dfn>floating-point number</dfn> or <dfn>float</dfn> for short, is an arbitrary
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   401
precision significand (also called mantissa) with a limited precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   402
exponent. The C data type
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   403
for such objects is <code>mpfr_t</code> (internally defined as a one-element
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   404
array of a structure, and <code>mpfr_ptr</code> is the C data type representing
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   405
a pointer to this structure). A floating-point number can have
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   406
three special values: Not-a-Number (NaN) or plus or minus Infinity. NaN
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   407
represents an uninitialized object, the result of an invalid operation
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   408
(like 0 divided by 0), or a value that cannot be determined (like
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   409
+Infinity minus +Infinity). Moreover, like in the IEEE 754-1985 standard,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   410
zero is signed, i.e. there are both +0 and &minus;0; the behavior
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   411
is the same as in the IEEE 754-1985 standard and it is generalized to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   412
the other functions supported by MPFR.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   413
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   414
   <p><a name="index-Precision-13"></a><a name="index-g_t_0040code_007bmp_005fprec_005ft_007d-14"></a>The <dfn>precision</dfn> is the number of bits used to represent the significand
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   415
of a floating-point number;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   416
the corresponding C data type is <code>mp_prec_t</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   417
The precision can be any integer between <code>MPFR_PREC_MIN</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   418
<code>MPFR_PREC_MAX</code>. In the current implementation, <code>MPFR_PREC_MIN</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   419
is equal to 2.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   420
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   421
   <p>Warning! MPFR needs to increase the precision internally, in order to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   422
provide accurate results (and in particular, correct rounding). Do not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   423
attempt to set the precision to any value near <code>MPFR_PREC_MAX</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   424
otherwise MPFR will abort due to an assertion failure. Moreover, you
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   425
may reach some memory limit on your platform, in which case the program
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   426
may abort, crash or have undefined behavior (depending on your C
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   427
implementation).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   428
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   429
   <p><a name="index-Rounding-Modes-15"></a><a name="index-g_t_0040code_007bmp_005frnd_005ft_007d-16"></a>The <dfn>rounding mode</dfn> specifies the way to round the result of a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   430
floating-point operation, in case the exact result can not be represented
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   431
exactly in the destination significand;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   432
the corresponding C data type is <code>mp_rnd_t</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   433
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   434
   <p><a name="index-Limb-17"></a><!-- @tindex @code{mp_limb_t} -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   435
A <dfn>limb</dfn> means the part of a multi-precision number that fits in a single
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   436
word.  (We chose this word because a limb of the human body is analogous to a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   437
digit, only larger, and containing several digits.)  Normally a limb contains
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   438
32 or 64 bits.  The C data type for a limb is <code>mp_limb_t</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   439
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   440
<h3 class="section">4.3 Function Classes</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   441
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   442
<p>There is only one class of functions in the MPFR library:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   443
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   444
     <ol type=1 start=1>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   445
<li>Functions for floating-point arithmetic, with names beginning with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   446
<code>mpfr_</code>.  The associated type is <code>mpfr_t</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   447
        </ol>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   448
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   449
<h3 class="section">4.4 MPFR Variable Conventions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   450
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   451
<p>As a general rule, all MPFR functions expect output arguments before input
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   452
arguments.  This notation is based on an analogy with the assignment operator.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   453
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   454
   <p>MPFR allows you to use the same variable for both input and output in the same
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   455
expression.  For example, the main function for floating-point multiplication,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   456
<code>mpfr_mul</code>, can be used like this: <code>mpfr_mul (x, x, x, rnd_mode)</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   457
This
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   458
computes the square of <var>x</var> with rounding mode <code>rnd_mode</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   459
and puts the result back in <var>x</var>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   460
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   461
   <p>Before you can assign to an MPFR variable, you need to initialize it by calling
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   462
one of the special initialization functions.  When you're done with a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   463
variable, you need to clear it out, using one of the functions for that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   464
purpose.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   465
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   466
   <p>A variable should only be initialized once, or at least cleared out between
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   467
each initialization.  After a variable has been initialized, it may be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   468
assigned to any number of times.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   469
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   470
   <p>For efficiency reasons, avoid to initialize and clear out a variable in loops. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   471
Instead, initialize it before entering the loop, and clear it out after the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   472
loop has exited.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   473
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   474
   <p>You don't need to be concerned about allocating additional space for MPFR
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   475
variables, since any variable has a significand of fixed size. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   476
Hence unless you change its precision, or clear and reinitialize it,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   477
a floating-point variable will have the same allocated space during all its
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   478
life.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   479
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   480
<h3 class="section">4.5 Rounding Modes</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   481
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   482
<p>The following four rounding modes are supported:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   483
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   484
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   485
<li><code>GMP_RNDN</code>: round to nearest
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   486
<li><code>GMP_RNDZ</code>: round toward zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   487
<li><code>GMP_RNDU</code>: round toward plus infinity
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   488
<li><code>GMP_RNDD</code>: round toward minus infinity
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   489
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   490
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   491
   <p>The &lsquo;<samp><span class="samp">round to nearest</span></samp>&rsquo; mode works as in the IEEE 754-1985 standard: in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   492
case the number to be rounded lies exactly in the middle of two representable
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   493
numbers, it is rounded to the one with the least significant bit set to zero. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   494
For example, the number 5/2, which is represented by (10.1) in binary, is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   495
rounded to (10.0)=2 with a precision of two bits, and not to (11.0)=3. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   496
This rule avoids the <dfn>drift</dfn> phenomenon mentioned by Knuth in volume 2
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   497
of The Art of Computer Programming (Section 4.2.2).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   498
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   499
   <p>Most MPFR functions take as first argument the destination variable, as
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   500
second and following arguments the input variables, as last argument a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   501
rounding mode, and have a return value of type <code>int</code>, called the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   502
<dfn>ternary value</dfn>. The value stored in the destination variable is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   503
correctly rounded, i.e. MPFR behaves as if it computed the result with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   504
an infinite precision, then rounded it to the precision of this variable. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   505
The input variables are regarded as exact (in particular, their precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   506
does not affect the result).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   507
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   508
   <p>As a consequence, in case of a non-zero real rounded result, the error
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   509
on the result is less or equal to 1/2 ulp (unit in the last place) of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   510
the target in the rounding to nearest mode, and less than 1 ulp of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   511
target in the directed rounding modes (a ulp is the weight of the least
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   512
significant represented bit of the target after rounding). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   513
<!-- Since subnormals are not supported, we must take into account the ulp of -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   514
<!-- the rounded result, not the one of the exact result, for full generality. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   515
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   516
   <p>Unless documented otherwise, functions returning an <code>int</code> return
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   517
a ternary value. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   518
If the ternary value is zero, it means that the value stored in the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   519
destination variable is the exact result of the corresponding mathematical
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   520
function. If the ternary value is positive (resp. negative), it means
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   521
the value stored in the destination variable is greater (resp. lower)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   522
than the exact result. For example with the <code>GMP_RNDU</code> rounding mode,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   523
the ternary value is usually positive, except when the result is exact, in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   524
which case it is zero. In the case of an infinite result, it is considered
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   525
as inexact when it was obtained by overflow, and exact otherwise. A NaN
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   526
result (Not-a-Number) always corresponds to an exact return value. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   527
The opposite of a returned ternary value is guaranteed to be representable
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   528
in an <code>int</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   529
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   530
   <p>Unless documented otherwise, functions returning a <code>1</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   531
(or any other value specified in this manual)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   532
for special cases (like <code>acos(0)</code>) should return an overflow or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   533
an underflow if <code>1</code> is not representable in the current exponent range.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   534
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   535
<h3 class="section">4.6 Floating-Point Values on Special Numbers</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   536
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   537
<p>This section specifies the floating-point values (of type <code>mpfr_t</code>)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   538
returned by MPFR functions. For functions returning several values (like
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   539
<code>mpfr_sin_cos</code>), the rules apply to each result separately.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   540
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   541
   <p>Functions can have one or several input arguments. An input point is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   542
a mapping from these input arguments to the set of the MPFR numbers. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   543
When none of its components are NaN, an input point can also be seen
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   544
as a tuple in the extended real numbers (the set of the real numbers
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   545
with both infinities).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   546
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   547
   <p>When the input point is in the domain of the mathematical function, the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   548
result is rounded as described in Section &ldquo;Rounding Modes&rdquo; (but see
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   549
below for the specification of the sign of an exact zero). Otherwise
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   550
the general rules from this section apply unless stated otherwise in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   551
the description of the MPFR function (<a href="#MPFR-Interface">MPFR Interface</a>).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   552
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   553
   <p>When the input point is not in the domain of the mathematical function
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   554
but is in its closure in the extended real numbers and the function can
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   555
be extended by continuity, the result is the obtained limit. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   556
Examples: <code>mpfr_hypot</code> on (+Inf,0) gives +Inf. But <code>mpfr_pow</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   557
cannot be defined on (1,+Inf) using this rule, as one can find
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   558
sequences (<var>x</var>_<var>n</var>,<var>y</var>_<var>n</var>) such that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   559
<var>x</var>_<var>n</var> goes to 1, <var>y</var>_<var>n</var> goes to +Inf
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   560
and <var>x</var>_<var>n</var> to the <var>y</var>_<var>n</var> goes to any
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   561
positive value when <var>n</var> goes to the infinity.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   562
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   563
   <p>When the input point is in the closure of the domain of the mathematical
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   564
function and an input argument is +0 (resp. &minus;0), one considers
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   565
the limit when the corresponding argument approaches 0 from above
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   566
(resp. below). If the limit is not defined (e.g., <code>mpfr_log</code> on
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   567
&minus;0), the behavior must be specified in the description of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   568
MPFR function.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   569
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   570
   <p>When the result is equal to 0, its sign is determined by considering the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   571
limit as if the input point were not in the domain: If one approaches 0
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   572
from above (resp. below), the result is +0 (resp. &minus;0). In the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   573
other cases, the sign must be specified in the description of the MPFR
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   574
function. Example: <code>mpfr_sin</code> on +0 gives +0.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   575
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   576
   <p>When the input point is not in the closure of the domain of the function,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   577
the result is NaN. Example: <code>mpfr_sqrt</code> on &minus;17 gives NaN.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   578
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   579
   <p>When an input argument is NaN, the result is NaN, possibly except when
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   580
a partial function is constant on the finite floating-point numbers;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   581
such a case is always explicitly specified in <a href="#MPFR-Interface">MPFR Interface</a>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   582
<!-- Said otherwise, if such a case is not specified, this is a bug, thus -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   583
<!-- we may change the returned value after documenting it without having -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   584
<!-- to change the libtool interface number (this would have more drawbacks -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   585
<!-- that advantages in practice), like for any bug fix. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   586
Example: <code>mpfr_hypot</code> on (NaN,0) gives NaN, but <code>mpfr_hypot</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   587
on (NaN,+Inf) gives +Inf (as specified in <a href="#Special-Functions">Special Functions</a>),
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   588
since for any finite input <var>x</var>, <code>mpfr_hypot</code> on (<var>x</var>,+Inf)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   589
gives +Inf.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   590
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   591
<h3 class="section">4.7 Exceptions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   592
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   593
<p>MPFR supports 5 exception types:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   594
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   595
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   596
<li>Underflow:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   597
An underflow occurs when the exact result of a function is a non-zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   598
real number and the result obtained after the rounding, assuming an
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   599
unbounded exponent range (for the rounding), has an exponent smaller
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   600
than the minimum exponent of the current range. In the round-to-nearest
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   601
mode, the halfway case is rounded toward zero.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   602
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   603
     <p>Note: This is not the single definition of the underflow. MPFR chooses
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   604
to consider the underflow after rounding. The underflow before rounding
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   605
can also be defined. For instance, consider a function that has the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   606
exact result 7 multiplied by two to the power
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   607
<var>e</var>&minus;4, where <var>e</var> is the smallest exponent (for a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   608
significand between 1/2 and 1) in the current
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   609
range, with a 2-bit target precision and rounding toward plus infinity. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   610
The exact result has the exponent <var>e</var>&minus;1. With the underflow
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   611
before rounding, such a function call would yield an underflow, as
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   612
<var>e</var>&minus;1 is outside the current exponent range. However, MPFR
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   613
first considers the rounded result assuming an unbounded exponent range. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   614
The exact result cannot be represented exactly in precision 2, and here,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   615
it is rounded to 0.5 times 2 to <var>e</var>, which is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   616
representable in the current exponent range. As a consequence, this will
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   617
not yield an underflow in MPFR.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   618
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   619
     <li>Overflow:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   620
An overflow occurs when the exact result of a function is a non-zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   621
real number and the result obtained after the rounding, assuming an
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   622
unbounded exponent range (for the rounding), has an exponent larger
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   623
than the maximum exponent of the current range. In the round-to-nearest
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   624
mode, the result is infinite.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   625
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   626
     <li>NaN:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   627
A NaN exception occurs when the result of a function is a NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   628
<!-- NaN is defined above. So, we don't say anything more. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   629
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   630
     <li>Inexact:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   631
An inexact exception occurs when the result of a function cannot be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   632
represented exactly and must be rounded.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   633
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   634
     <li>Range error:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   635
A range exception occurs when a function that does not return a MPFR
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   636
number (such as comparisons and conversions to an integer) has an
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   637
invalid result (e.g. an argument is NaN in <code>mpfr_cmp</code> or in a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   638
conversion to an integer).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   639
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   640
   </ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   641
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   642
   <p>MPFR has a global flag for each exception, which can be cleared, set
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   643
or tested by functions described in <a href="#Exception-Related-Functions">Exception Related Functions</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   644
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   645
   <p>Differences with the ISO C99 standard:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   646
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   647
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   648
<li>In C, only quiet NaNs are specified, and a NaN propagation does not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   649
raise an invalid exception. Unless explicitly stated otherwise, MPFR sets
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   650
the NaN flag whenever a NaN is generated, even when a NaN is propagated
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   651
(e.g. in NaN + NaN), as if all NaNs were signaling.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   652
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   653
     <li>An invalid exception in C corresponds to either a NaN exception or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   654
a range error in MPFR.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   655
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   656
   </ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   657
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   658
<h3 class="section">4.8 Memory Handling</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   659
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   660
<p>MPFR functions may create caches, e.g. when computing constants such
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   661
as Pi, either because the user has called a function like
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   662
<code>mpfr_const_pi</code> directly or because such a function was called
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   663
internally by the MPFR library itself to compute some other function.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   664
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   665
   <p>At any time, the user can free the various caches with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   666
<code>mpfr_free_cache</code>. It is strongly advised to do that before
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   667
terminating a thread, or before exiting when using tools like
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   668
&lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo; (to avoid memory leaks being reported).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   669
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   670
   <p>MPFR internal data such as flags, the exponent range, the default
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   671
precision and rounding mode, and caches (i.e., data that are not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   672
accessed via parameters) are either global (if MPFR has not been
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   673
compiled as thread safe) or per-thread (thread local storage).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   674
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   675
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   676
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   677
<a name="MPFR-Interface"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   678
Next:&nbsp;<a rel="next" accesskey="n" href="#Contributors">Contributors</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   679
Previous:&nbsp;<a rel="previous" accesskey="p" href="#MPFR-Basics">MPFR Basics</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   680
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   681
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   682
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   683
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   684
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   685
<h2 class="chapter">5 MPFR Interface</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   686
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   687
<p><a name="index-Floating_002dpoint-functions-18"></a><a name="index-Float-functions-19"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   688
The floating-point functions expect arguments of type <code>mpfr_t</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   689
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   690
   <p>The MPFR floating-point functions have an interface that is similar to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   691
GNU MP
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   692
integer functions.  The function prefix for floating-point operations is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   693
<code>mpfr_</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   694
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   695
   <p>There is one significant characteristic of floating-point numbers that has
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   696
motivated a difference between this function class and other GNU MP function
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   697
classes: the inherent inexactness of floating-point arithmetic.  The user has
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   698
to specify the precision for each variable.  A computation that assigns a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   699
variable will take place with the precision of the assigned variable; the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   700
cost of that computation should not depend from the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   701
precision of variables used as input (on average).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   702
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   703
   <p><a name="index-Precision-20"></a>The semantics of a calculation in MPFR is specified as follows: Compute the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   704
requested operation exactly (with &ldquo;infinite accuracy&rdquo;), and round the result
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   705
to the precision of the destination variable, with the given rounding mode. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   706
The MPFR floating-point functions are intended to be a smooth extension
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   707
of the IEEE 754-1985 arithmetic. The results obtained on one computer should
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   708
not differ from the results obtained on a computer with a different word size.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   709
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   710
   <p><a name="index-Accuracy-21"></a>MPFR does not keep track of the accuracy of a computation. This is left
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   711
to the user or to a higher layer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   712
As a consequence, if two variables are used to store
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   713
only a few significant bits, and their product is stored in a variable with large
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   714
precision, then MPFR will still compute the result with full precision.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   715
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   716
   <p>The value of the standard C macro <code>errno</code> may be set to non-zero by
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   717
any MPFR function or macro, whether or not there is an error.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   718
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   719
<ul class="menu">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   720
<li><a accesskey="1" href="#Initialization-Functions">Initialization Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   721
<li><a accesskey="2" href="#Assignment-Functions">Assignment Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   722
<li><a accesskey="3" href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   723
<li><a accesskey="4" href="#Conversion-Functions">Conversion Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   724
<li><a accesskey="5" href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   725
<li><a accesskey="6" href="#Comparison-Functions">Comparison Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   726
<li><a accesskey="7" href="#Special-Functions">Special Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   727
<li><a accesskey="8" href="#Input-and-Output-Functions">Input and Output Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   728
<li><a accesskey="9" href="#Integer-Related-Functions">Integer Related Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   729
<li><a href="#Miscellaneous-Functions">Miscellaneous Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   730
<li><a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   731
<li><a href="#Exception-Related-Functions">Exception Related Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   732
<li><a href="#Advanced-Functions">Advanced Functions</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   733
<li><a href="#Compatibility-with-MPF">Compatibility with MPF</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   734
<li><a href="#Custom-Interface">Custom Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   735
<li><a href="#Internals">Internals</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   736
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   737
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   738
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   739
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   740
<a name="Initialization-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   741
Next:&nbsp;<a rel="next" accesskey="n" href="#Assignment-Functions">Assignment Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   742
Previous:&nbsp;<a rel="previous" accesskey="p" href="#MPFR-Interface">MPFR Interface</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   743
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   744
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   745
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   746
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   747
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   748
   <p><a name="index-Initialization-functions-22"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   749
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   750
<h3 class="section">5.1 Initialization Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   751
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   752
<p>An <code>mpfr_t</code> object must be initialized before storing the first value in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   753
it.  The functions <code>mpfr_init</code> and <code>mpfr_init2</code> are used for that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   754
purpose.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   755
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   756
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   757
&mdash; Function: void <b>mpfr_init2</b> (<var>mpfr_t x, mp_prec_t prec</var>)<var><a name="index-mpfr_005finit2-23"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   758
<blockquote><p>Initialize <var>x</var>, set its precision to be <strong>exactly</strong>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   759
<var>prec</var> bits and its value to NaN. (Warning: the corresponding
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   760
<code>mpf</code> functions initialize to zero instead.)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   761
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   762
        <p>Normally, a variable should be initialized once only or at
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   763
least be cleared, using <code>mpfr_clear</code>, between initializations. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   764
To change the precision of a variable which has already been initialized,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   765
use <code>mpfr_set_prec</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   766
The precision <var>prec</var> must be an integer between <code>MPFR_PREC_MIN</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   767
<code>MPFR_PREC_MAX</code> (otherwise the behavior is undefined). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   768
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   769
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   770
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   771
&mdash; Function: void <b>mpfr_clear</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fclear-24"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   772
<blockquote><p>Free the space occupied by <var>x</var>.  Make sure to call this function for all
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   773
<code>mpfr_t</code> variables when you are done with them. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   774
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   775
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   776
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   777
&mdash; Function: void <b>mpfr_init</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005finit-25"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   778
<blockquote><p>Initialize <var>x</var> and set its value to NaN.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   779
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   780
        <p>Normally, a variable should be initialized once only
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   781
or at least be cleared, using <code>mpfr_clear</code>, between initializations.  The
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   782
precision of <var>x</var> is the default precision, which can be changed
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   783
by a call to <code>mpfr_set_default_prec</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   784
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   785
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   786
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   787
&mdash; Function: void <b>mpfr_set_default_prec</b> (<var>mp_prec_t prec</var>)<var><a name="index-mpfr_005fset_005fdefault_005fprec-26"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   788
<blockquote><p>Set the default precision to be <strong>exactly</strong> <var>prec</var> bits.  The
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   789
precision of a variable means the number of bits used to store its significand. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   790
All
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   791
subsequent calls to <code>mpfr_init</code> will use this precision, but previously
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   792
initialized variables are unaffected. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   793
This default precision is set to 53 bits initially. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   794
The precision can be any integer between <code>MPFR_PREC_MIN</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   795
<code>MPFR_PREC_MAX</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   796
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   797
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   798
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   799
&mdash; Function: mp_prec_t <b>mpfr_get_default_prec</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005fdefault_005fprec-27"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   800
<blockquote><p>Return the default MPFR precision in bits. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   801
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   802
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   803
   <p>Here is an example on how to initialize floating-point variables:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   804
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   805
<pre class="example">     {
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   806
       mpfr_t x, y;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   807
       mpfr_init (x);                /* use default precision */
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   808
       mpfr_init2 (y, 256);          /* precision <em>exactly</em> 256 bits */
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   809
       ...
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   810
       /* When the program is about to exit, do ... */
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   811
       mpfr_clear (x);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   812
       mpfr_clear (y);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   813
       mpfr_free_cache ();
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   814
     }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   815
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   816
   <p>The following functions are useful for changing the precision during a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   817
calculation.  A typical use would be for adjusting the precision gradually in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   818
iterative algorithms like Newton-Raphson, making the computation precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   819
closely match the actual accurate part of the numbers.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   820
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   821
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   822
&mdash; Function: void <b>mpfr_set_prec</b> (<var>mpfr_t x, mp_prec_t prec</var>)<var><a name="index-mpfr_005fset_005fprec-28"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   823
<blockquote><p>Reset the precision of <var>x</var> to be <strong>exactly</strong> <var>prec</var> bits,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   824
and set its value to NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   825
The previous value stored in <var>x</var> is lost. It is equivalent to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   826
a call to <code>mpfr_clear(x)</code> followed by a call to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   827
<code>mpfr_init2(x, prec)</code>, but more efficient as no allocation is done in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   828
case the current allocated space for the significand of <var>x</var> is enough. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   829
The precision <var>prec</var> can be any integer between <code>MPFR_PREC_MIN</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   830
<code>MPFR_PREC_MAX</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   831
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   832
        <p>In case you want to keep the previous value stored in <var>x</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   833
use <code>mpfr_prec_round</code> instead. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   834
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   835
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   836
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   837
&mdash; Function: mp_prec_t <b>mpfr_get_prec</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fget_005fprec-29"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   838
<blockquote><p>Return the precision actually used for assignments of <var>x</var>, i.e. the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   839
number of bits used to store its significand. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   840
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   841
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   842
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   843
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   844
<a name="Assignment-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   845
Next:&nbsp;<a rel="next" accesskey="n" href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   846
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Initialization-Functions">Initialization Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   847
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   848
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   849
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   850
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   851
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   852
   <p><a name="index-Assignment-functions-30"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   853
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   854
<h3 class="section">5.2 Assignment Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   855
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   856
<p>These functions assign new values to already initialized floats
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   857
(see <a href="#Initialization-Functions">Initialization Functions</a>). When using any functions using
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   858
<code>intmax_t</code>, you must include <code>&lt;stdint.h&gt;</code> or <code>&lt;inttypes.h&gt;</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   859
before <samp><span class="file">mpfr.h</span></samp>, to allow <samp><span class="file">mpfr.h</span></samp> to define prototypes for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   860
these functions.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   861
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   862
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   863
&mdash; Function: int <b>mpfr_set</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset-31"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   864
&mdash; Function: int <b>mpfr_set_ui</b> (<var>mpfr_t rop, unsigned long int op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fui-32"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   865
&mdash; Function: int <b>mpfr_set_si</b> (<var>mpfr_t rop, long int op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fsi-33"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   866
&mdash; Function: int <b>mpfr_set_uj</b> (<var>mpfr_t rop, uintmax_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fuj-34"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   867
&mdash; Function: int <b>mpfr_set_sj</b> (<var>mpfr_t rop, intmax_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fsj-35"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   868
&mdash; Function: int <b>mpfr_set_d</b> (<var>mpfr_t rop, double op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fd-36"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   869
&mdash; Function: int <b>mpfr_set_ld</b> (<var>mpfr_t rop, long double op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fld-37"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   870
&mdash; Function: int <b>mpfr_set_decimal64</b> (<var>mpfr_t rop, _Decimal64 op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fdecimal64-38"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   871
&mdash; Function: int <b>mpfr_set_z</b> (<var>mpfr_t rop, mpz_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fz-39"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   872
&mdash; Function: int <b>mpfr_set_q</b> (<var>mpfr_t rop, mpq_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fq-40"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   873
&mdash; Function: int <b>mpfr_set_f</b> (<var>mpfr_t rop, mpf_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005ff-41"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   874
<blockquote><p>Set the value of <var>rop</var> from <var>op</var>, rounded
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   875
toward the given direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   876
Note that the input 0 is converted to +0 by <code>mpfr_set_ui</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   877
<code>mpfr_set_si</code>, <code>mpfr_set_sj</code>, <code>mpfr_set_uj</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   878
<code>mpfr_set_z</code>, <code>mpfr_set_q</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   879
<code>mpfr_set_f</code>, regardless of the rounding mode. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   880
If the system doesn't support the IEEE-754 standard, <code>mpfr_set_d</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   881
<code>mpfr_set_ld</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   882
<code>mpfr_set_decimal64</code> might not preserve the signed zeros. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   883
The <code>mpfr_set_decimal64</code> function is built only with the configure
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   884
option &lsquo;<samp><span class="samp">--enable-decimal-float</span></samp>&rsquo;, which also requires
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   885
&lsquo;<samp><span class="samp">--with-gmp-build</span></samp>&rsquo;, and when the compiler or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   886
system provides the &lsquo;<samp><span class="samp">_Decimal64</span></samp>&rsquo; data type
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   887
(GCC version 4.2.0 is known to support this data type,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   888
but only when configured with &lsquo;<samp><span class="samp">--enable-decimal-float</span></samp>&rsquo; too). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   889
<code>mpfr_set_q</code> might not be able to work if the numerator (or the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   890
denominator) can not be representable as a <code>mpfr_t</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   891
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   892
        <p>Note: If you want to store a floating-point constant to a <code>mpfr_t</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   893
you should use <code>mpfr_set_str</code> (or one of the MPFR constant functions,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   894
such as <code>mpfr_const_pi</code> for Pi) instead of <code>mpfr_set_d</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   895
<code>mpfr_set_ld</code> or <code>mpfr_set_decimal64</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   896
Otherwise the floating-point constant will be first
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   897
converted into a reduced-precision (e.g., 53-bit) binary number before
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   898
MPFR can work with it. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   899
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   900
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   901
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   902
&mdash; Function: int <b>mpfr_set_ui_2exp</b> (<var>mpfr_t rop, unsigned long int op, mp_exp_t e, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fui_005f2exp-42"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   903
&mdash; Function: int <b>mpfr_set_si_2exp</b> (<var>mpfr_t rop, long int op, mp_exp_t e, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fsi_005f2exp-43"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   904
&mdash; Function: int <b>mpfr_set_uj_2exp</b> (<var>mpfr_t rop, uintmax_t op, intmax_t e, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fuj_005f2exp-44"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   905
&mdash; Function: int <b>mpfr_set_sj_2exp</b> (<var>mpfr_t rop, intmax_t op, intmax_t e, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fsj_005f2exp-45"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   906
<blockquote><p>Set the value of <var>rop</var> from <var>op</var> multiplied by
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   907
two to the power <var>e</var>, rounded toward the given direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   908
Note that the input 0 is converted to +0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   909
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   910
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   911
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   912
&mdash; Function: int <b>mpfr_set_str</b> (<var>mpfr_t rop, const char *s, int base, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fstr-46"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   913
<blockquote><p>Set <var>rop</var> to the value of the whole string <var>s</var> in base <var>base</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   914
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   915
See the documentation of <code>mpfr_strtofr</code> for a detailed description
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   916
of the valid string formats. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   917
<!-- Additionally, special values -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   918
<!-- @code{@@NaN@@}, @code{@@Inf@@}, @code{+@@Inf@@} and @code{-@@Inf@@}, -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   919
<!-- all case insensitive, without leading whitespace and possibly followed by -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   920
<!-- other characters, are accepted too (it may change). -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   921
This function returns 0 if the entire string up to the final null character
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   922
is a valid number in base <var>base</var>; otherwise it returns &minus;1, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   923
<var>rop</var> may have changed. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   924
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   925
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   926
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   927
&mdash; Function: int <b>mpfr_strtofr</b> (<var>mpfr_t rop, const char *nptr, char **endptr, int base, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fstrtofr-47"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   928
<blockquote>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   929
        <p>Read a floating-point number from a string <var>nptr</var> in base <var>base</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   930
rounded in the direction <var>rnd</var>; <var>base</var> must be either 0 (to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   931
detect the base, as described below) or a number from 2 to 36 (otherwise
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   932
the behavior is undefined). If <var>nptr</var> starts with valid data, the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   933
result is stored in <var>rop</var> and <code>*</code><var>endptr</var> points to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   934
character just after the valid data (if <var>endptr</var> is not a null pointer);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   935
otherwise <var>rop</var> is set to zero and the value of <var>nptr</var> is stored
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   936
in the location referenced by <var>endptr</var> (if <var>endptr</var> is not a null
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   937
pointer). The usual ternary value is returned.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   938
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   939
        <p>Parsing follows the standard C <code>strtod</code> function with some extensions. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   940
Case is ignored. After optional leading whitespace, one has a subject
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   941
sequence consisting of an optional sign (<code>+</code> or <code>-</code>), and either
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   942
numeric data or special data. The subject sequence is defined as the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   943
longest initial subsequence of the input string, starting with the first
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   944
non-whitespace character, that is of the expected form.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   945
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   946
        <p>The form of numeric data is a non-empty sequence of significand digits
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   947
with an optional decimal point, and an optional exponent consisting of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   948
an exponent prefix followed by an optional sign and a non-empty sequence
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   949
of decimal digits. A significand digit is either a decimal digit or a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   950
Latin letter (62 possible characters), with <code>a</code> = 10, <code>b</code> = 11,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   951
<small class="dots">...</small>, <code>z</code> = 36; its value must be strictly less than the base. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   952
The decimal point can be either the one defined by the current locale or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   953
the period (the first one is accepted for consistency with the C standard
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   954
and the practice, the second one is accepted to allow the programmer to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   955
provide MPFR numbers from strings in a way that does not depend on the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   956
current locale). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   957
The exponent prefix can be <code>e</code> or <code>E</code> for bases up to 10, or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   958
<code>@</code> in any base; it indicates a multiplication by a power of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   959
base. In bases 2 and 16, the exponent prefix can also be <code>p</code> or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   960
<code>P</code>, in which case it introduces a binary exponent: it indicates a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   961
multiplication by a power of 2 (there is a difference only for base 16). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   962
The value of an exponent is always written in base 10. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   963
In base 2, the significand can start with <code>0b</code> or <code>0B</code>, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   964
in base 16, it can start with <code>0x</code> or <code>0X</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   965
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   966
        <p>If the argument <var>base</var> is 0, then the base is automatically detected
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   967
as follows. If the significand starts with <code>0b</code> or <code>0B</code>, base 2
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   968
is assumed. If the significand starts with <code>0x</code> or <code>0X</code>, base 16
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   969
is assumed. Otherwise base 10 is assumed.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   970
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   971
        <p>Note: The exponent must contain at least a digit. Otherwise the possible
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   972
exponent prefix and sign are not part of the number (which ends with the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   973
significand). Similarly, if <code>0b</code>, <code>0B</code>, <code>0x</code> or <code>0X</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   974
is not followed by a binary/hexadecimal digit, then the subject sequence
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   975
stops at the character <code>0</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   976
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   977
        <p>Special data (for infinities and NaN) can be <code>@inf@</code> or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   978
<code>@nan@(n-char-sequence)</code>, and if <var>base</var> &lt;= 16,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   979
it can also be <code>infinity</code>, <code>inf</code>, <code>nan</code> or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   980
<code>nan(n-char-sequence)</code>, all case insensitive. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   981
A <code>n-char-sequence</code> is a non-empty string containing only digits,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   982
Latin letters and the underscore (0, 1, 2, <small class="dots">...</small>, 9, a, b, <small class="dots">...</small>, z,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   983
A, B, <small class="dots">...</small>, Z, _). Note: one has an optional sign for all data, even
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   984
NaN.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   985
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   986
        </blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   987
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   988
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   989
&mdash; Function: void <b>mpfr_set_inf</b> (<var>mpfr_t x, int sign</var>)<var><a name="index-mpfr_005fset_005finf-48"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   990
&mdash; Function: void <b>mpfr_set_nan</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fset_005fnan-49"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   991
<blockquote><p>Set the variable <var>x</var> to infinity or NaN (Not-a-Number) respectively. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   992
In <code>mpfr_set_inf</code>, <var>x</var> is set to plus infinity iff <var>sign</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   993
nonnegative. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   994
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   995
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   996
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   997
&mdash; Function: void <b>mpfr_swap</b> (<var>mpfr_t x, mpfr_t y</var>)<var><a name="index-mpfr_005fswap-50"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   998
<blockquote><p>Swap the values <var>x</var> and <var>y</var> efficiently. Warning: the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   999
precisions are exchanged too; in case the precisions are different,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1000
<code>mpfr_swap</code> is thus not equivalent to three <code>mpfr_set</code> calls
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1001
using a third auxiliary variable. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1002
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1003
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1004
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1005
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1006
<a name="Combined-Initialization-and-Assignment-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1007
Next:&nbsp;<a rel="next" accesskey="n" href="#Conversion-Functions">Conversion Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1008
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Assignment-Functions">Assignment Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1009
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1010
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1011
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1012
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1013
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1014
   <p><a name="index-Combined-initialization-and-assignment-functions-51"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1015
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1016
<h3 class="section">5.3 Combined Initialization and Assignment Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1017
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1018
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1019
&mdash; Macro: int <b>mpfr_init_set</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset-52"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1020
&mdash; Macro: int <b>mpfr_init_set_ui</b> (<var>mpfr_t rop, unsigned long int op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fui-53"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1021
&mdash; Macro: int <b>mpfr_init_set_si</b> (<var>mpfr_t rop, signed long int op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fsi-54"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1022
&mdash; Macro: int <b>mpfr_init_set_d</b> (<var>mpfr_t rop, double op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fd-55"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1023
&mdash; Macro: int <b>mpfr_init_set_ld</b> (<var>mpfr_t rop, long double op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fld-56"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1024
&mdash; Macro: int <b>mpfr_init_set_z</b> (<var>mpfr_t rop, mpz_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fz-57"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1025
&mdash; Macro: int <b>mpfr_init_set_q</b> (<var>mpfr_t rop, mpq_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fq-58"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1026
&mdash; Macro: int <b>mpfr_init_set_f</b> (<var>mpfr_t rop, mpf_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005ff-59"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1027
<blockquote><p>Initialize <var>rop</var> and set its value from <var>op</var>, rounded in the direction
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1028
<var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1029
The precision of <var>rop</var> will be taken from the active default precision,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1030
as set by <code>mpfr_set_default_prec</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1031
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1032
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1033
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1034
&mdash; Function: int <b>mpfr_init_set_str</b> (<var>mpfr_t x, const char *s, int base, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finit_005fset_005fstr-60"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1035
<blockquote><p>Initialize <var>x</var> and set its value from
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1036
the string <var>s</var> in base <var>base</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1037
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1038
See <code>mpfr_set_str</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1039
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1040
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1041
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1042
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1043
<a name="Conversion-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1044
Next:&nbsp;<a rel="next" accesskey="n" href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1045
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1046
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1047
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1048
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1049
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1050
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1051
   <p><a name="index-Conversion-functions-61"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1052
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1053
<h3 class="section">5.4 Conversion Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1054
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1055
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1056
&mdash; Function: double <b>mpfr_get_d</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fd-62"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1057
&mdash; Function: long double <b>mpfr_get_ld</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fld-63"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1058
&mdash; Function: _Decimal64 <b>mpfr_get_decimal64</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fdecimal64-64"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1059
<blockquote><p>Convert <var>op</var> to a <code>double</code> (respectively <code>_Decimal64</code> or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1060
<code>long double</code>), using the rounding mode <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1061
If <var>op</var> is NaN, some fixed NaN (either quiet or signaling) or the result
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1062
of 0.0/0.0 is returned. If <var>op</var> is �Inf, an infinity of the same
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1063
sign or the result of �1.0/0.0 is returned. If <var>op</var> is zero, these
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1064
functions return a zero, trying to preserve its sign, if possible. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1065
The <code>mpfr_get_decimal64</code> function is built only under some conditions:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1066
see the documentation of <code>mpfr_set_decimal64</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1067
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1068
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1069
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1070
&mdash; Function: double <b>mpfr_get_d_2exp</b> (<var>long *exp, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fd_005f2exp-65"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1071
&mdash; Function: long double <b>mpfr_get_ld_2exp</b> (<var>long *exp, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fld_005f2exp-66"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1072
<blockquote><p>Return <var>d</var> and set <var>exp</var> such that 0.5&lt;=abs(<var>d</var>)&lt;1
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1073
and <var>d</var> times 2 raised to <var>exp</var> equals
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1074
<var>op</var> rounded to double (resp. long double)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1075
precision, using the given rounding mode. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1076
<!-- See ISO C standard, frexp function. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1077
If <var>op</var> is zero, then a zero of the same sign (or an unsigned zero,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1078
if the implementation does not have signed zeros) is returned, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1079
<var>exp</var> is set to 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1080
If <var>op</var> is NaN or an infinity, then the corresponding double precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1081
(resp. long-double precision)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1082
value is returned, and <var>exp</var> is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1083
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1084
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1085
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1086
&mdash; Function: long <b>mpfr_get_si</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fsi-67"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1087
&mdash; Function: unsigned long <b>mpfr_get_ui</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fui-68"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1088
&mdash; Function: intmax_t <b>mpfr_get_sj</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fsj-69"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1089
&mdash; Function: uintmax_t <b>mpfr_get_uj</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fuj-70"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1090
<blockquote><p>Convert <var>op</var> to a <code>long</code>, an <code>unsigned long</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1091
an <code>intmax_t</code> or an <code>uintmax_t</code> (respectively) after rounding
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1092
it with respect to <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1093
If <var>op</var> is NaN, the result is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1094
If <var>op</var> is too big for the return type, it returns the maximum
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1095
or the minimum of the corresponding C type, depending on the direction
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1096
of the overflow. The flag erange is set too. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1097
See also <code>mpfr_fits_slong_p</code>, <code>mpfr_fits_ulong_p</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1098
<code>mpfr_fits_intmax_p</code> and <code>mpfr_fits_uintmax_p</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1099
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1100
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1101
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1102
&mdash; Function: mp_exp_t <b>mpfr_get_z_exp</b> (<var>mpz_t rop, mpfr_t op</var>)<var><a name="index-mpfr_005fget_005fz_005fexp-71"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1103
<blockquote><p>Put the scaled significand of <var>op</var> (regarded as an integer, with the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1104
precision of <var>op</var>) into <var>rop</var>, and return the exponent <var>exp</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1105
(which may be outside the current exponent range) such that <var>op</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1106
exactly equals
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1107
<var>rop</var> multiplied by two exponent <var>exp</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1108
If the exponent is not representable in the <code>mp_exp_t</code> type, the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1109
behavior is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1110
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1111
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1112
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1113
&mdash; Function: void <b>mpfr_get_z</b> (<var>mpz_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fz-72"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1114
<blockquote><p>Convert <var>op</var> to a <code>mpz_t</code>, after rounding it with respect to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1115
<var>rnd</var>. If <var>op</var> is NaN or Inf, the result is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1116
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1117
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1118
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1119
&mdash; Function: int <b>mpfr_get_f</b> (<var>mpf_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005ff-73"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1120
<blockquote><p>Convert <var>op</var> to a <code>mpf_t</code>, after rounding it with respect to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1121
<var>rnd</var>. Return zero iff no error occurred,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1122
in particular a non-zero value is returned if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1123
<var>op</var> is NaN or Inf, which do not exist in <code>mpf</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1124
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1125
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1126
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1127
&mdash; Function: char * <b>mpfr_get_str</b> (<var>char *str, mp_exp_t *expptr, int b, size_t n, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fget_005fstr-74"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1128
<blockquote><p>Convert <var>op</var> to a string of digits in base <var>b</var>, with rounding in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1129
the direction <var>rnd</var>, where <var>n</var> is either zero (see below) or the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1130
number of significant digits; in the latter case, <var>n</var> must be greater
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1131
or equal to 2. The base may vary from 2 to 36.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1132
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1133
        <p>The generated string is a fraction, with an implicit radix point immediately
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1134
to the left of the first digit.  For example, the number &minus;3.1416 would
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1135
be returned as "&minus;31416" in the string and 1 written at <var>expptr</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1136
If <var>rnd</var> is to nearest, and <var>op</var> is exactly in the middle of two
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1137
possible outputs, the one with an even last digit is chosen
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1138
(for an odd base, this may not correspond to an even significand).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1139
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1140
        <p>If <var>n</var> is zero, the number of digits of the significand is chosen
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1141
large enough so that re-reading the printed value with the same precision,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1142
assuming both output and input use rounding to nearest, will recover
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1143
the original value of <var>op</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1144
More precisely, in most cases, the chosen precision of <var>str</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1145
the minimal precision depending on <var>n</var> and <var>b</var> only that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1146
satisfies the above property, i.e.,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1147
m = 1 + ceil(<var>n</var>*log(2)/log(<var>b</var>)),
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1148
but in some very rare cases, it might be m+1.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1149
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1150
        <p>If <var>str</var> is a null pointer, space for the significand is allocated using
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1151
the current allocation function, and a pointer to the string is returned. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1152
To free the returned string, you must use <code>mpfr_free_str</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1153
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1154
        <p>If <var>str</var> is not a null pointer, it should point to a block of storage
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1155
large enough for the significand, i.e., at least <code>max(</code><var>n</var><code> + 2, 7)</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1156
The extra two bytes are for a possible minus sign, and for the terminating null
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1157
character.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1158
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1159
        <p>If the input number is an ordinary number, the exponent is written through
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1160
the pointer <var>expptr</var> (the current minimal exponent for 0).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1161
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1162
        <p>A pointer to the string is returned, unless there is an error, in which
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1163
case a null pointer is returned. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1164
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1165
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1166
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1167
&mdash; Function: void <b>mpfr_free_str</b> (<var>char *str</var>)<var><a name="index-mpfr_005ffree_005fstr-75"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1168
<blockquote><p>Free a string allocated by <code>mpfr_get_str</code> using the current unallocation
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1169
function (preliminary interface). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1170
The block is assumed to be <code>strlen(</code><var>str</var><code>)+1</code> bytes. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1171
For more information about how it is done:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1172
see section &ldquo;Custom Allocation&rdquo; in <cite>GNU MP</cite>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1173
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1174
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1175
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1176
&mdash; Function: int <b>mpfr_fits_ulong_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fulong_005fp-76"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1177
&mdash; Function: int <b>mpfr_fits_slong_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fslong_005fp-77"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1178
&mdash; Function: int <b>mpfr_fits_uint_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fuint_005fp-78"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1179
&mdash; Function: int <b>mpfr_fits_sint_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fsint_005fp-79"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1180
&mdash; Function: int <b>mpfr_fits_ushort_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fushort_005fp-80"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1181
&mdash; Function: int <b>mpfr_fits_sshort_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fsshort_005fp-81"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1182
&mdash; Function: int <b>mpfr_fits_intmax_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fintmax_005fp-82"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1183
&mdash; Function: int <b>mpfr_fits_uintmax_p</b> (<var>mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffits_005fuintmax_005fp-83"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1184
<blockquote><p>Return non-zero if <var>op</var> would fit in the respective C data type, when
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1185
rounded to an integer in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1186
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1187
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1188
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1189
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1190
<a name="Basic-Arithmetic-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1191
Next:&nbsp;<a rel="next" accesskey="n" href="#Comparison-Functions">Comparison Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1192
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Conversion-Functions">Conversion Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1193
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1194
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1195
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1196
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1197
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1198
   <p><a name="index-Basic-arithmetic-functions-84"></a><a name="index-Float-arithmetic-functions-85"></a><a name="index-Arithmetic-functions-86"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1199
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1200
<h3 class="section">5.5 Basic Arithmetic Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1201
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1202
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1203
&mdash; Function: int <b>mpfr_add</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fadd-87"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1204
&mdash; Function: int <b>mpfr_add_ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fadd_005fui-88"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1205
&mdash; Function: int <b>mpfr_add_si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fadd_005fsi-89"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1206
&mdash; Function: int <b>mpfr_add_z</b> (<var>mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fadd_005fz-90"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1207
&mdash; Function: int <b>mpfr_add_q</b> (<var>mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fadd_005fq-91"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1208
<blockquote><p>Set <var>rop</var> to <var>op1</var> + <var>op2</var> rounded in the direction
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1209
<var>rnd</var>. For types having no signed zero, it is considered unsigned
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1210
(i.e. (+0) + 0 = (+0) and (&minus;0) + 0 = (&minus;0)). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1211
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1212
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1213
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1214
&mdash; Function: int <b>mpfr_sub</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsub-92"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1215
&mdash; Function: int <b>mpfr_ui_sub</b> (<var>mpfr_t rop, unsigned long int op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fui_005fsub-93"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1216
&mdash; Function: int <b>mpfr_sub_ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsub_005fui-94"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1217
&mdash; Function: int <b>mpfr_si_sub</b> (<var>mpfr_t rop, long int op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsi_005fsub-95"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1218
&mdash; Function: int <b>mpfr_sub_si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsub_005fsi-96"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1219
&mdash; Function: int <b>mpfr_sub_z</b> (<var>mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsub_005fz-97"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1220
&mdash; Function: int <b>mpfr_sub_q</b> (<var>mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsub_005fq-98"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1221
<blockquote><p>Set <var>rop</var> to <var>op1</var> - <var>op2</var> rounded in the direction
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1222
<var>rnd</var>. For types having no signed zero, it is considered unsigned
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1223
(i.e. (+0) &minus; 0 = (+0), (&minus;0) &minus; 0 = (&minus;0),
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1224
0 &minus; (+0) = (&minus;0) and 0 &minus; (&minus;0) = (+0)). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1225
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1226
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1227
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1228
&mdash; Function: int <b>mpfr_mul</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul-99"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1229
&mdash; Function: int <b>mpfr_mul_ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005fui-100"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1230
&mdash; Function: int <b>mpfr_mul_si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005fsi-101"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1231
&mdash; Function: int <b>mpfr_mul_z</b> (<var>mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005fz-102"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1232
&mdash; Function: int <b>mpfr_mul_q</b> (<var>mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005fq-103"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1233
<blockquote><p>Set <var>rop</var> to <var>op1</var> times <var>op2</var> rounded in the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1234
direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1235
When a result is zero, its sign is the product of the signs of the operands
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1236
(for types having no signed zero, it is considered positive). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1237
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1238
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1239
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1240
&mdash; Function: int <b>mpfr_sqr</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsqr-104"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1241
<blockquote><p>Set <var>rop</var> to the square of <var>op</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1242
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1243
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1244
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1245
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1246
&mdash; Function: int <b>mpfr_div</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv-105"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1247
&mdash; Function: int <b>mpfr_ui_div</b> (<var>mpfr_t rop, unsigned long int op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fui_005fdiv-106"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1248
&mdash; Function: int <b>mpfr_div_ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005fui-107"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1249
&mdash; Function: int <b>mpfr_si_div</b> (<var>mpfr_t rop, long int op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsi_005fdiv-108"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1250
&mdash; Function: int <b>mpfr_div_si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005fsi-109"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1251
&mdash; Function: int <b>mpfr_div_z</b> (<var>mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005fz-110"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1252
&mdash; Function: int <b>mpfr_div_q</b> (<var>mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005fq-111"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1253
<blockquote><p>Set <var>rop</var> to <var>op1</var>/<var>op2</var> rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1254
When a result is zero, its sign is the product of the signs of the operands
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1255
(for types having no signed zero, it is considered positive). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1256
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1257
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1258
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1259
&mdash; Function: int <b>mpfr_sqrt</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsqrt-112"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1260
&mdash; Function: int <b>mpfr_sqrt_ui</b> (<var>mpfr_t rop, unsigned long int op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsqrt_005fui-113"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1261
<blockquote><p>Set <var>rop</var> to the square root of <var>op</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1262
rounded in the direction <var>rnd</var>. Return &minus;0 if <var>op</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1263
&minus;0 (to be consistent with the IEEE 754-1985 standard). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1264
Set <var>rop</var> to NaN if <var>op</var> is negative. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1265
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1266
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1267
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1268
&mdash; Function: int <b>mpfr_cbrt</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcbrt-114"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1269
&mdash; Function: int <b>mpfr_root</b> (<var>mpfr_t rop, mpfr_t op, unsigned long int k, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005froot-115"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1270
<blockquote><p>Set <var>rop</var> to the cubic root (resp. the <var>k</var>th root)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1271
of <var>op</var> rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1272
An odd (resp. even) root of a negative number (including &minus;Inf)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1273
returns a negative number (resp. NaN). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1274
The <var>k</var>th root of &minus;0 is defined to be &minus;0,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1275
whatever the parity of <var>k</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1276
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1277
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1278
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1279
&mdash; Function: int <b>mpfr_pow</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fpow-116"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1280
&mdash; Function: int <b>mpfr_pow_ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fpow_005fui-117"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1281
&mdash; Function: int <b>mpfr_pow_si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fpow_005fsi-118"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1282
&mdash; Function: int <b>mpfr_pow_z</b> (<var>mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fpow_005fz-119"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1283
&mdash; Function: int <b>mpfr_ui_pow_ui</b> (<var>mpfr_t rop, unsigned long int op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fui_005fpow_005fui-120"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1284
&mdash; Function: int <b>mpfr_ui_pow</b> (<var>mpfr_t rop, unsigned long int op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fui_005fpow-121"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1285
<blockquote><p>Set <var>rop</var> to <var>op1</var> raised to <var>op2</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1286
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1287
Special values are currently handled as described in the ISO C99 standard
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1288
for the <code>pow</code> function (note this may change in future versions):
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1289
          <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1290
<li><code>pow(�0, </code><var>y</var><code>)</code> returns plus or minus infinity for <var>y</var> a negative odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1291
<li><code>pow(�0, </code><var>y</var><code>)</code> returns plus infinity for <var>y</var> negative and not an odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1292
<li><code>pow(�0, </code><var>y</var><code>)</code> returns plus or minus zero for <var>y</var> a positive odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1293
<li><code>pow(�0, </code><var>y</var><code>)</code> returns plus zero for <var>y</var> positive and not an odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1294
<li><code>pow(-1, �Inf)</code> returns 1. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1295
<li><code>pow(+1, </code><var>y</var><code>)</code> returns 1 for any <var>y</var>, even a NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1296
<li><code>pow(</code><var>x</var><code>, �0)</code> returns 1 for any <var>x</var>, even a NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1297
<li><code>pow(</code><var>x</var><code>, </code><var>y</var><code>)</code> returns NaN for finite negative <var>x</var> and finite non-integer <var>y</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1298
<li><code>pow(</code><var>x</var><code>, -Inf)</code> returns plus infinity for 0 &lt; abs(x) &lt; 1, and plus zero for abs(x) &gt; 1. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1299
<li><code>pow(</code><var>x</var><code>, +Inf)</code> returns plus zero for 0 &lt; abs(x) &lt; 1, and plus infinity for abs(x) &gt; 1. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1300
<li><code>pow(-Inf, </code><var>y</var><code>)</code> returns minus zero for <var>y</var> a negative odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1301
<li><code>pow(-Inf, </code><var>y</var><code>)</code> returns plus zero for <var>y</var> negative and not an odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1302
<li><code>pow(-Inf, </code><var>y</var><code>)</code> returns minus infinity for <var>y</var> a positive odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1303
<li><code>pow(-Inf, </code><var>y</var><code>)</code> returns plus infinity for <var>y</var> positive and not an odd integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1304
<li><code>pow(+Inf, </code><var>y</var><code>)</code> returns plus zero for <var>y</var> negative, and plus infinity for <var>y</var> positive. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1305
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1306
        </p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1307
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1308
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1309
&mdash; Function: int <b>mpfr_neg</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fneg-122"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1310
<blockquote><p>Set <var>rop</var> to -<var>op</var> rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1311
Just changes the sign if <var>rop</var> and <var>op</var> are the same variable. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1312
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1313
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1314
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1315
&mdash; Function: int <b>mpfr_abs</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fabs-123"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1316
<blockquote><p>Set <var>rop</var> to the absolute value of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1317
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1318
Just changes the sign if <var>rop</var> and <var>op</var> are the same variable. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1319
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1320
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1321
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1322
&mdash; Function: int <b>mpfr_dim</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdim-124"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1323
<blockquote><p>Set <var>rop</var> to the positive difference of <var>op1</var> and <var>op2</var>, i.e.,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1324
<var>op1</var> - <var>op2</var> rounded in the direction <var>rnd</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1325
if <var>op1</var> &gt; <var>op2</var>, and +0 otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1326
Returns NaN when <var>op1</var> or <var>op2</var> is NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1327
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1328
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1329
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1330
&mdash; Function: int <b>mpfr_mul_2ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005f2ui-125"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1331
&mdash; Function: int <b>mpfr_mul_2si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005f2si-126"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1332
<blockquote><p>Set <var>rop</var> to <var>op1</var> times 2 raised
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1333
to <var>op2</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1334
rounded in the direction <var>rnd</var>. Just increases the exponent by <var>op2</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1335
when <var>rop</var> and <var>op1</var> are identical. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1336
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1337
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1338
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1339
&mdash; Function: int <b>mpfr_div_2ui</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005f2ui-127"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1340
&mdash; Function: int <b>mpfr_div_2si</b> (<var>mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005f2si-128"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1341
<blockquote><p>Set <var>rop</var> to <var>op1</var> divided by 2 raised
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1342
to <var>op2</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1343
rounded in the direction <var>rnd</var>. Just decreases the exponent by <var>op2</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1344
when <var>rop</var> and <var>op1</var> are identical. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1345
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1346
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1347
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1348
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1349
<a name="Comparison-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1350
Next:&nbsp;<a rel="next" accesskey="n" href="#Special-Functions">Special Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1351
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1352
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1353
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1354
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1355
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1356
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1357
   <p><a name="index-Float-comparisons-functions-129"></a><a name="index-Comparison-functions-130"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1358
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1359
<h3 class="section">5.6 Comparison Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1360
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1361
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1362
&mdash; Function: int <b>mpfr_cmp</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005fcmp-131"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1363
&mdash; Function: int <b>mpfr_cmp_ui</b> (<var>mpfr_t op1, unsigned long int op2</var>)<var><a name="index-mpfr_005fcmp_005fui-132"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1364
&mdash; Function: int <b>mpfr_cmp_si</b> (<var>mpfr_t op1, signed long int op2</var>)<var><a name="index-mpfr_005fcmp_005fsi-133"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1365
&mdash; Function: int <b>mpfr_cmp_d</b> (<var>mpfr_t op1, double op2</var>)<var><a name="index-mpfr_005fcmp_005fd-134"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1366
&mdash; Function: int <b>mpfr_cmp_ld</b> (<var>mpfr_t op1, long double op2</var>)<var><a name="index-mpfr_005fcmp_005fld-135"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1367
&mdash; Function: int <b>mpfr_cmp_z</b> (<var>mpfr_t op1, mpz_t op2</var>)<var><a name="index-mpfr_005fcmp_005fz-136"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1368
&mdash; Function: int <b>mpfr_cmp_q</b> (<var>mpfr_t op1, mpq_t op2</var>)<var><a name="index-mpfr_005fcmp_005fq-137"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1369
&mdash; Function: int <b>mpfr_cmp_f</b> (<var>mpfr_t op1, mpf_t op2</var>)<var><a name="index-mpfr_005fcmp_005ff-138"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1370
<blockquote><p>Compare <var>op1</var> and <var>op2</var>.  Return a positive value if <var>op1</var> &gt;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1371
<var>op2</var>, zero if <var>op1</var> = <var>op2</var>, and a negative value if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1372
<var>op1</var> &lt; <var>op2</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1373
Both <var>op1</var> and <var>op2</var> are considered to their full own precision,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1374
which may differ. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1375
If one of the operands is NaN, set the erange flag and return zero.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1376
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1377
        <p>Note: These functions may be useful to distinguish the three possible cases. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1378
If you need to distinguish two cases only, it is recommended to use the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1379
predicate functions (e.g., <code>mpfr_equal_p</code> for the equality) described
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1380
below; they behave like the IEEE-754 comparisons, in particular when one
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1381
or both arguments are NaN. But only floating-point numbers can be compared
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1382
(you may need to do a conversion first). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1383
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1384
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1385
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1386
&mdash; Function: int <b>mpfr_cmp_ui_2exp</b> (<var>mpfr_t op1, unsigned long int op2, mp_exp_t e</var>)<var><a name="index-mpfr_005fcmp_005fui_005f2exp-139"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1387
&mdash; Function: int <b>mpfr_cmp_si_2exp</b> (<var>mpfr_t op1, long int op2, mp_exp_t e</var>)<var><a name="index-mpfr_005fcmp_005fsi_005f2exp-140"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1388
<blockquote><p>Compare <var>op1</var> and <var>op2</var> multiplied by two to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1389
the power <var>e</var>. Similar as above. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1390
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1391
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1392
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1393
&mdash; Function: int <b>mpfr_cmpabs</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005fcmpabs-141"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1394
<blockquote><p>Compare |<var>op1</var>| and |<var>op2</var>|.  Return a positive value if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1395
|<var>op1</var>| &gt; |<var>op2</var>|, zero if |<var>op1</var>| = |<var>op2</var>|, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1396
a negative value if |<var>op1</var>| &lt; |<var>op2</var>|. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1397
If one of the operands is NaN, set the erange flag and return zero. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1398
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1399
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1400
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1401
&mdash; Function: int <b>mpfr_nan_p</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005fnan_005fp-142"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1402
&mdash; Function: int <b>mpfr_inf_p</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005finf_005fp-143"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1403
&mdash; Function: int <b>mpfr_number_p</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005fnumber_005fp-144"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1404
&mdash; Function: int <b>mpfr_zero_p</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005fzero_005fp-145"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1405
<blockquote><p>Return non-zero if <var>op</var> is respectively NaN, an infinity, an ordinary
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1406
number (i.e. neither NaN nor an infinity) or zero. Return zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1407
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1408
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1409
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1410
&mdash; Macro: int <b>mpfr_sgn</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005fsgn-146"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1411
<blockquote><p>Return a positive value if <var>op</var> &gt; 0, zero if <var>op</var> = 0,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1412
and a negative value if <var>op</var> &lt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1413
If the operand is NaN, set the erange flag and return zero. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1414
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1415
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1416
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1417
&mdash; Function: int <b>mpfr_greater_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005fgreater_005fp-147"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1418
<blockquote><p>Return non-zero if <var>op1</var> &gt; <var>op2</var>, zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1419
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1420
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1421
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1422
&mdash; Function: int <b>mpfr_greaterequal_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005fgreaterequal_005fp-148"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1423
<blockquote><p>Return non-zero if <var>op1</var> &gt;= <var>op2</var>, zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1424
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1425
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1426
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1427
&mdash; Function: int <b>mpfr_less_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005fless_005fp-149"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1428
<blockquote><p>Return non-zero if <var>op1</var> &lt; <var>op2</var>, zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1429
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1430
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1431
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1432
&mdash; Function: int <b>mpfr_lessequal_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005flessequal_005fp-150"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1433
<blockquote><p>Return non-zero if <var>op1</var> &lt;= <var>op2</var>, zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1434
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1435
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1436
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1437
&mdash; Function: int <b>mpfr_lessgreater_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005flessgreater_005fp-151"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1438
<blockquote><p>Return non-zero if <var>op1</var> &lt; <var>op2</var> or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1439
<var>op1</var> &gt; <var>op2</var> (i.e. neither <var>op1</var>, nor <var>op2</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1440
NaN, and <var>op1</var> &lt;&gt; <var>op2</var>), zero otherwise (i.e. <var>op1</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1441
and/or <var>op2</var> are NaN, or <var>op1</var> = <var>op2</var>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1442
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1443
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1444
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1445
&mdash; Function: int <b>mpfr_equal_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005fequal_005fp-152"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1446
<blockquote><p>Return non-zero if <var>op1</var> = <var>op2</var>, zero otherwise
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1447
(i.e. <var>op1</var> and/or <var>op2</var> are NaN, or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1448
<var>op1</var> &lt;&gt; <var>op2</var>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1449
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1450
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1451
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1452
&mdash; Function: int <b>mpfr_unordered_p</b> (<var>mpfr_t op1, mpfr_t op2</var>)<var><a name="index-mpfr_005funordered_005fp-153"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1453
<blockquote><p>Return non-zero if <var>op1</var> or <var>op2</var> is a NaN (i.e. they cannot be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1454
compared), zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1455
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1456
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1457
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1458
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1459
<a name="Special-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1460
Next:&nbsp;<a rel="next" accesskey="n" href="#Input-and-Output-Functions">Input and Output Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1461
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Comparison-Functions">Comparison Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1462
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1463
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1464
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1465
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1466
   <p><a name="index-Special-functions-154"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1467
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1468
<h3 class="section">5.7 Special Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1469
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1470
<p>All those functions, except explicitly stated, return zero for an
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1471
exact return value, a positive value for a return value larger than the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1472
exact result, and a negative value otherwise.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1473
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1474
   <p>Important note: in some domains, computing special functions (either with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1475
correct or incorrect rounding) is expensive, even for small precision,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1476
for example the trigonometric and Bessel functions for large argument.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1477
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1478
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1479
&mdash; Function: int <b>mpfr_log</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005flog-155"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1480
&mdash; Function: int <b>mpfr_log2</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005flog2-156"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1481
&mdash; Function: int <b>mpfr_log10</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005flog10-157"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1482
<blockquote><p>Set <var>rop</var> to the natural logarithm of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1483
log2(<var>op</var>) or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1484
log10(<var>op</var>), respectively,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1485
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1486
Return &minus;Inf if <var>op</var> is &minus;0 (i.e. the sign of the zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1487
has no influence on the result). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1488
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1489
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1490
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1491
&mdash; Function: int <b>mpfr_exp</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fexp-158"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1492
&mdash; Function: int <b>mpfr_exp2</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fexp2-159"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1493
&mdash; Function: int <b>mpfr_exp10</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fexp10-160"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1494
<blockquote><p>Set <var>rop</var> to the exponential of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1495
 to 2 power of <var>op</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1496
or to 10 power of <var>op</var>, respectively,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1497
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1498
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1499
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1500
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1501
&mdash; Function: int <b>mpfr_cos</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcos-161"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1502
&mdash; Function: int <b>mpfr_sin</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsin-162"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1503
&mdash; Function: int <b>mpfr_tan</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ftan-163"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1504
<blockquote><p>Set <var>rop</var> to the cosine of <var>op</var>, sine of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1505
tangent of <var>op</var>, rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1506
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1507
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1508
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1509
&mdash; Function: int <b>mpfr_sec</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsec-164"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1510
&mdash; Function: int <b>mpfr_csc</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcsc-165"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1511
&mdash; Function: int <b>mpfr_cot</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcot-166"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1512
<blockquote><p>Set <var>rop</var> to the secant of <var>op</var>, cosecant of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1513
cotangent of <var>op</var>, rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1514
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1515
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1516
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1517
&mdash; Function: int <b>mpfr_sin_cos</b> (<var>mpfr_t sop, mpfr_t cop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsin_005fcos-167"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1518
<blockquote><p>Set simultaneously <var>sop</var> to the sine of <var>op</var> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1519
                   <var>cop</var> to the cosine of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1520
rounded in the direction <var>rnd</var> with the corresponding precisions of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1521
<var>sop</var> and <var>cop</var>, which must be different variables. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1522
Return 0 iff both results are exact. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1523
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1524
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1525
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1526
&mdash; Function: int <b>mpfr_acos</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005facos-168"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1527
&mdash; Function: int <b>mpfr_asin</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fasin-169"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1528
&mdash; Function: int <b>mpfr_atan</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fatan-170"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1529
<blockquote><p>Set <var>rop</var> to the arc-cosine, arc-sine or arc-tangent of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1530
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1531
Note that since <code>acos(-1)</code> returns the floating-point number closest to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1532
Pi according to the given rounding mode, this number might not be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1533
in the output range 0 &lt;= <var>rop</var> &lt; \pi
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1534
of the arc-cosine function;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1535
still, the result lies in the image of the output range
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1536
by the rounding function. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1537
The same holds for <code>asin(-1)</code>, <code>asin(1)</code>, <code>atan(-Inf)</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1538
<code>atan(+Inf)</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1539
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1540
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1541
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1542
&mdash; Function: int <b>mpfr_atan2</b> (<var>mpfr_t rop, mpfr_t y, mpfr_t x, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fatan2-171"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1543
<blockquote><p>Set <var>rop</var> to the arc-tangent2 of <var>y</var> and <var>x</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1544
rounded in the direction <var>rnd</var>:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1545
if <code>x &gt; 0</code>, <code>atan2(y, x) = atan (y/x)</code>;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1546
if <code>x &lt; 0</code>, <code>atan2(y, x) = sign(y)*(Pi - atan (abs(y/x)))</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1547
As for <code>atan</code>, in case the exact mathematical result is +Pi or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1548
-Pi, its rounded result might be outside the function output range.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1549
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1550
        <p><code>atan2(y, 0)</code> does not raise any floating-point exception. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1551
Special values are currently handled as described in the ISO C99 standard
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1552
for the <code>atan2</code> function (note this may change in future versions):
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1553
          <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1554
<li><code>atan2(+0, -0)</code> returns +Pi. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1555
<li><code>atan2(-0, -0)</code> returns -Pi. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1556
<li><code>atan2(+0, +0)</code> returns +0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1557
<li><code>atan2(-0, +0)</code> returns &minus;0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1558
<li><code>atan2(+0, x)</code> returns +Pi for x &lt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1559
<li><code>atan2(-0, x)</code> returns -Pi for x &lt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1560
<li><code>atan2(+0, x)</code> returns +0 for x &gt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1561
<li><code>atan2(-0, x)</code> returns &minus;0 for x &gt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1562
<li><code>atan2(y, 0)</code> returns -Pi/2 for y &lt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1563
<li><code>atan2(y, 0)</code> returns +Pi/2 for y &gt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1564
<li><code>atan2(+Inf, -Inf)</code> returns +3*Pi/4. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1565
<li><code>atan2(-Inf, -Inf)</code> returns -3*Pi/4. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1566
<li><code>atan2(+Inf, +Inf)</code> returns +Pi/4. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1567
<li><code>atan2(-Inf, +Inf)</code> returns -Pi/4. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1568
<li><code>atan2(+Inf, x)</code> returns +Pi/2 for finite x. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1569
<li><code>atan2(-Inf, x)</code> returns -Pi/2 for finite x. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1570
<li><code>atan2(y, -Inf)</code> returns +Pi for finite y &gt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1571
<li><code>atan2(y, -Inf)</code> returns -Pi for finite y &lt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1572
<li><code>atan2(y, +Inf)</code> returns +0 for finite y &gt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1573
<li><code>atan2(y, +Inf)</code> returns &minus;0 for finite y &lt; 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1574
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1575
        </p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1576
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1577
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1578
&mdash; Function: int <b>mpfr_cosh</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcosh-172"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1579
&mdash; Function: int <b>mpfr_sinh</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsinh-173"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1580
&mdash; Function: int <b>mpfr_tanh</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ftanh-174"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1581
<blockquote><p>Set <var>rop</var> to the hyperbolic cosine, sine or tangent of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1582
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1583
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1584
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1585
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1586
&mdash; Function: int <b>mpfr_sech</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsech-175"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1587
&mdash; Function: int <b>mpfr_csch</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcsch-176"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1588
&mdash; Function: int <b>mpfr_coth</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcoth-177"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1589
<blockquote><p>Set <var>rop</var> to the hyperbolic secant of <var>op</var>, cosecant of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1590
cotangent of <var>op</var>, rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1591
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1592
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1593
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1594
&mdash; Function: int <b>mpfr_acosh</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005facosh-178"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1595
&mdash; Function: int <b>mpfr_asinh</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fasinh-179"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1596
&mdash; Function: int <b>mpfr_atanh</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fatanh-180"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1597
<blockquote><p>Set <var>rop</var> to the inverse hyperbolic cosine, sine or tangent of <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1598
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1599
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1600
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1601
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1602
&mdash; Function: int <b>mpfr_fac_ui</b> (<var>mpfr_t rop, unsigned long int op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffac_005fui-181"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1603
<blockquote><p>Set <var>rop</var> to the factorial of the <code>unsigned long int</code> <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1604
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1605
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1606
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1607
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1608
&mdash; Function: int <b>mpfr_log1p</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005flog1p-182"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1609
<blockquote><p>Set <var>rop</var> to the logarithm of one plus <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1610
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1611
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1612
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1613
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1614
&mdash; Function: int <b>mpfr_expm1</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fexpm1-183"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1615
<blockquote><p>Set <var>rop</var> to the exponential of <var>op</var> minus one,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1616
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1617
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1618
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1619
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1620
&mdash; Function: int <b>mpfr_eint</b> (<var>mpfr_t y, mpfr_t x, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005feint-184"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1621
<blockquote><p>Set <var>y</var> to the exponential integral of <var>x</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1622
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1623
For positive <var>x</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1624
the exponential integral is the sum of Euler's constant, of the logarithm
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1625
of <var>x</var>, and of the sum for k from 1 to infinity of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1626
<var>x</var> to the power k, divided by k and factorial(k). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1627
For negative <var>x</var>, the returned value is NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1628
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1629
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1630
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1631
&mdash; Function: int <b>mpfr_gamma</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fgamma-185"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1632
<blockquote><p>Set <var>rop</var> to the value of the Gamma function on <var>op</var>, rounded in the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1633
direction <var>rnd</var>. When <var>op</var> is a negative integer, NaN is returned. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1634
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1635
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1636
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1637
&mdash; Function: int <b>mpfr_lngamma</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005flngamma-186"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1638
<blockquote><p>Set <var>rop</var> to the value of the logarithm of the Gamma function on <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1639
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1640
When &minus;2<var>k</var>&minus;1 &lt;= <var>x</var> &lt;= &minus;2<var>k</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1641
<var>k</var> being a non-negative integer, NaN is returned. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1642
See also <code>mpfr_lgamma</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1643
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1644
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1645
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1646
&mdash; Function: int <b>mpfr_lgamma</b> (<var>mpfr_t rop, int *signp, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005flgamma-187"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1647
<blockquote><p>Set <var>rop</var> to the value of the logarithm of the absolute value of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1648
Gamma function on <var>op</var>, rounded in the direction <var>rnd</var>. The sign
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1649
(1 or &minus;1) of Gamma(<var>op</var>) is returned in the object pointed to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1650
by <var>signp</var>. When <var>op</var> is an infinity or a non-positive integer,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1651
+Inf is returned. When <var>op</var> is NaN, &minus;Inf or a negative integer,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1652
*<var>signp</var> is undefined, and when <var>op</var> is �0, *<var>signp</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1653
the sign of the zero. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1654
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1655
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1656
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1657
&mdash; Function: int <b>mpfr_zeta</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fzeta-188"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1658
&mdash; Function: int <b>mpfr_zeta_ui</b> (<var>mpfr_t rop, unsigned long op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fzeta_005fui-189"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1659
<blockquote><p>Set <var>rop</var> to the value of the Riemann Zeta function on <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1660
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1661
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1662
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1663
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1664
&mdash; Function: int <b>mpfr_erf</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ferf-190"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1665
<blockquote><p>Set <var>rop</var> to the value of the error function on <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1666
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1667
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1668
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1669
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1670
&mdash; Function: int <b>mpfr_erfc</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ferfc-191"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1671
<blockquote><p>Set <var>rop</var> to the value of the complementary error function on <var>op</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1672
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1673
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1674
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1675
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1676
&mdash; Function: int <b>mpfr_j0</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fj0-192"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1677
&mdash; Function: int <b>mpfr_j1</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fj1-193"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1678
&mdash; Function: int <b>mpfr_jn</b> (<var>mpfr_t rop, long n, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fjn-194"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1679
<blockquote><p>Set <var>rop</var> to the value of the first order Bessel function of order 0, 1
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1680
and <var>n</var> on <var>op</var>, rounded in the direction <var>rnd</var>. When <var>op</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1681
NaN, <var>rop</var> is always set to NaN. When <var>op</var> is plus or minus Infinity,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1682
<var>rop</var> is set to +0. When <var>op</var> is zero, and <var>n</var> is not zero,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1683
<var>rop</var> is +0 or &minus;0 depending on the parity and sign of <var>n</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1684
and the sign of <var>op</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1685
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1686
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1687
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1688
&mdash; Function: int <b>mpfr_y0</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fy0-195"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1689
&mdash; Function: int <b>mpfr_y1</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fy1-196"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1690
&mdash; Function: int <b>mpfr_yn</b> (<var>mpfr_t rop, long n, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fyn-197"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1691
<blockquote><p>Set <var>rop</var> to the value of the second order Bessel function of order 0, 1
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1692
and <var>n</var> on <var>op</var>, rounded in the direction <var>rnd</var>. When <var>op</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1693
NaN or negative,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1694
<var>rop</var> is always set to NaN. When <var>op</var> is +Inf,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1695
<var>rop</var> is +0. When <var>op</var> is zero,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1696
<var>rop</var> is +Inf or &minus;Inf depending on the parity and sign of <var>n</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1697
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1698
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1699
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1700
&mdash; Function: int <b>mpfr_fma</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mpfr_t op3, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffma-198"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1701
<blockquote><p>Set <var>rop</var> to (<var>op1</var> times <var>op2</var>) + <var>op3</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1702
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1703
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1704
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1705
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1706
&mdash; Function: int <b>mpfr_fms</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mpfr_t op3, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffms-199"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1707
<blockquote><p>Set <var>rop</var> to (<var>op1</var> times <var>op2</var>) - <var>op3</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1708
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1709
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1710
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1711
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1712
&mdash; Function: int <b>mpfr_agm</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fagm-200"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1713
<blockquote><p>Set <var>rop</var> to the arithmetic-geometric mean of <var>op1</var> and <var>op2</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1714
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1715
The arithmetic-geometric mean is the common limit of the sequences
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1716
u[n] and v[n], where u[0]=<var>op1</var>, v[0]=<var>op2</var>, u[n+1] is the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1717
arithmetic mean of u[n] and v[n], and v[n+1] is the geometric mean of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1718
u[n] and v[n]. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1719
If any operand is negative, the return value is NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1720
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1721
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1722
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1723
&mdash; Function: int <b>mpfr_hypot</b> (<var>mpfr_t rop, mpfr_t x, mpfr_t y, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fhypot-201"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1724
<blockquote><p>Set <var>rop</var> to the Euclidean norm of <var>x</var> and <var>y</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1725
i.e. the square root of the sum of the squares of <var>x</var> and <var>y</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1726
rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1727
Special values are currently handled as described in Section F.9.4.3 of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1728
the ISO C99 standard, for the <code>hypot</code> function (note this may change
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1729
in future versions): If <var>x</var> or <var>y</var> is an infinity, then plus
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1730
infinity is returned in <var>rop</var>, even if the other number is NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1731
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1732
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1733
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1734
&mdash; Function: int <b>mpfr_const_log2</b> (<var>mpfr_t rop, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fconst_005flog2-202"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1735
&mdash; Function: int <b>mpfr_const_pi</b> (<var>mpfr_t rop, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fconst_005fpi-203"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1736
&mdash; Function: int <b>mpfr_const_euler</b> (<var>mpfr_t rop, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fconst_005feuler-204"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1737
&mdash; Function: int <b>mpfr_const_catalan</b> (<var>mpfr_t rop, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fconst_005fcatalan-205"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1738
<blockquote><p>Set <var>rop</var> to the logarithm of 2, the value of Pi,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1739
of Euler's constant 0.577<small class="dots">...</small>, of Catalan's constant 0.915<small class="dots">...</small>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1740
respectively, rounded in the direction
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1741
<var>rnd</var>. These functions cache the computed values to avoid other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1742
calculations if a lower or equal precision is requested. To free these caches,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1743
use <code>mpfr_free_cache</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1744
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1745
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1746
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1747
&mdash; Function: void <b>mpfr_free_cache</b> (<var>void</var>)<var><a name="index-mpfr_005ffree_005fcache-206"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1748
<blockquote><p>Free various caches used by MPFR internally, in particular the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1749
caches used by the functions computing constants (currently
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1750
<code>mpfr_const_log2</code>, <code>mpfr_const_pi</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1751
<code>mpfr_const_euler</code> and <code>mpfr_const_catalan</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1752
You should call this function before terminating a thread, even if you did
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1753
not call these functions directly (they could have been called internally). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1754
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1755
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1756
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1757
&mdash; Function: int <b>mpfr_sum</b> (<var>mpfr_t rop, mpfr_ptr const tab</var>[]<var>, unsigned long n, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsum-207"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1758
<blockquote><p>Set <var>ret</var> to the sum of all elements of <var>tab</var> whose size is <var>n</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1759
rounded in the direction <var>rnd</var>. Warning, <var>tab</var> is a table of pointers
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1760
to mpfr_t, not a table of mpfr_t (preliminary interface). The returned
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1761
<code>int</code> value is zero when the computed value is the exact value,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1762
and non-zero when this cannot be guaranteed, without giving the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1763
direction of the error as the other functions do. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1764
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1765
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1766
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1767
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1768
<a name="Input-and-Output-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1769
Next:&nbsp;<a rel="next" accesskey="n" href="#Integer-Related-Functions">Integer Related Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1770
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Special-Functions">Special Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1771
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1772
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1773
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1774
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1775
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1776
   <p><a name="index-Float-input-and-output-functions-208"></a><a name="index-Input-functions-209"></a><a name="index-Output-functions-210"></a><a name="index-I_002fO-functions-211"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1777
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1778
<h3 class="section">5.8 Input and Output Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1779
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1780
<p>This section describes functions that perform input from an input/output
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1781
stream, and functions that output to an input/output stream. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1782
Passing a null pointer for a <var>stream</var> argument to any of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1783
these functions will make them read from <code>stdin</code> and write to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1784
<code>stdout</code>, respectively.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1785
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1786
   <p>When using any of these functions, you must include the <code>&lt;stdio.h&gt;</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1787
standard header before <samp><span class="file">mpfr.h</span></samp>, to allow <samp><span class="file">mpfr.h</span></samp> to define
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1788
prototypes for these functions.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1789
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1790
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1791
&mdash; Function: size_t <b>mpfr_out_str</b> (<var>FILE *stream, int base, size_t n, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fout_005fstr-212"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1792
<blockquote><p>Output <var>op</var> on stream <var>stream</var>, as a string of digits in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1793
base <var>base</var>, rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1794
The base may vary from 2 to 36.  Print <var>n</var> significant digits exactly,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1795
or if <var>n</var> is 0, enough digits so that <var>op</var> can be read back
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1796
exactly (see <code>mpfr_get_str</code>).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1797
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1798
        <p>In addition to the significant digits, a decimal point (defined by the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1799
current locale) at the right of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1800
first digit and a trailing exponent in base 10, in the form &lsquo;<samp><span class="samp">eNNN</span></samp>&rsquo;,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1801
are printed. If <var>base</var> is greater than 10, &lsquo;<samp><span class="samp">@</span></samp>&rsquo; will be used
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1802
instead of &lsquo;<samp><span class="samp">e</span></samp>&rsquo; as exponent delimiter.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1803
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1804
        <p>Return the number of bytes written, or if an error occurred, return 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1805
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1806
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1807
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1808
&mdash; Function: size_t <b>mpfr_inp_str</b> (<var>mpfr_t rop, FILE *stream, int base, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005finp_005fstr-213"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1809
<blockquote><p>Input a string in base <var>base</var> from stream <var>stream</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1810
rounded in the direction <var>rnd</var>, and put the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1811
read float in <var>rop</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1812
<!-- The argument @var{base} must be in the range 2 to 36. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1813
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1814
     <!-- The string is of the form @samp{M@@N} or, if the -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1815
     <!-- base is 10 or less, alternatively @samp{MeN} or @samp{MEN}, or, if the base -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1816
     <!-- is 16, alternatively @samp{MpB} or @samp{MPB}. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1817
     <!-- @samp{M} is the significand in the specified base, @samp{N} is the exponent -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1818
     <!-- written in decimal for the specified base, and in base 16, @samp{B} is the -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1819
     <!-- binary exponent written in decimal (i.e.@: it indicates the power of 2 by -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1820
     <!-- which the significand is to be scaled). -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1821
        <p>This function reads a word (defined as a sequence of characters between
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1822
whitespace) and parses it using <code>mpfr_set_str</code> (it may change). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1823
See the documentation of <code>mpfr_strtofr</code> for a detailed description
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1824
of the valid string formats. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1825
<!-- Special values can be read as follows (the case does not matter): -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1826
<!-- @code{@@NaN@@}, @code{@@Inf@@}, @code{+@@Inf@@} and @code{-@@Inf@@}, -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1827
<!-- possibly followed by other characters; if the base is smaller or equal -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1828
<!-- to 16, the following strings are accepted too: @code{NaN}, @code{Inf}, -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1829
<!-- @code{+Inf} and @code{-Inf}. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1830
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1831
        <p>Return the number of bytes read, or if an error occurred, return 0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1832
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1833
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1834
<!-- @deftypefun void mpfr_inp_raw (mpfr_t @var{float}, FILE *@var{stream}) -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1835
<!-- Input from stdio stream @var{stream} in the format written by -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1836
<!-- @code{mpfr_out_raw}, and put the result in @var{float}. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1837
<!-- @end deftypefun -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1838
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1839
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1840
<a name="Integer-Related-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1841
Next:&nbsp;<a rel="next" accesskey="n" href="#Miscellaneous-Functions">Miscellaneous Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1842
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Input-and-Output-Functions">Input and Output Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1843
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1844
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1845
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1846
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1847
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1848
   <p><a name="index-Integer-related-functions-214"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1849
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1850
<h3 class="section">5.9 Integer Related Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1851
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1852
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1853
&mdash; Function: int <b>mpfr_rint</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005frint-215"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1854
&mdash; Function: int <b>mpfr_ceil</b> (<var>mpfr_t rop, mpfr_t op</var>)<var><a name="index-mpfr_005fceil-216"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1855
&mdash; Function: int <b>mpfr_floor</b> (<var>mpfr_t rop, mpfr_t op</var>)<var><a name="index-mpfr_005ffloor-217"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1856
&mdash; Function: int <b>mpfr_round</b> (<var>mpfr_t rop, mpfr_t op</var>)<var><a name="index-mpfr_005fround-218"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1857
&mdash; Function: int <b>mpfr_trunc</b> (<var>mpfr_t rop, mpfr_t op</var>)<var><a name="index-mpfr_005ftrunc-219"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1858
<blockquote><p>Set <var>rop</var> to <var>op</var> rounded to an integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1859
<code>mpfr_rint</code> rounds to the nearest representable integer in the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1860
given rounding mode, <code>mpfr_ceil</code> rounds
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1861
to the next higher or equal representable integer, <code>mpfr_floor</code> to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1862
the next lower or equal representable integer, <code>mpfr_round</code> to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1863
nearest representable integer, rounding halfway cases away from zero,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1864
and <code>mpfr_trunc</code> to the next representable integer toward zero.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1865
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1866
        <p>The returned value is zero when the result is exact, positive when it is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1867
greater than the original value of <var>op</var>, and negative when it is smaller. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1868
More precisely, the returned value is 0 when <var>op</var> is an integer
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1869
representable in <var>rop</var>, 1 or &minus;1 when <var>op</var> is an integer
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1870
that is not representable in <var>rop</var>, 2 or &minus;2 when <var>op</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1871
not an integer.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1872
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1873
        <p>Note that <code>mpfr_round</code> is different from <code>mpfr_rint</code> called with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1874
the rounding to nearest mode (where halfway cases are rounded to an even
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1875
integer or significand). Note also that no double rounding is performed; for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1876
instance, 4.5 (100.1 in binary) is rounded by <code>mpfr_round</code> to 4 (100
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1877
in binary) in 2-bit precision, though <code>round(4.5)</code> is equal to 5 and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1878
5 (101 in binary) is rounded to 6 (110 in binary) in 2-bit precision. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1879
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1880
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1881
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1882
&mdash; Function: int <b>mpfr_rint_ceil</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005frint_005fceil-220"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1883
&mdash; Function: int <b>mpfr_rint_floor</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005frint_005ffloor-221"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1884
&mdash; Function: int <b>mpfr_rint_round</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005frint_005fround-222"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1885
&mdash; Function: int <b>mpfr_rint_trunc</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005frint_005ftrunc-223"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1886
<blockquote><p>Set <var>rop</var> to <var>op</var> rounded to an integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1887
<code>mpfr_rint_ceil</code> rounds to the next higher or equal integer,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1888
<code>mpfr_rint_floor</code> to the next lower or equal integer,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1889
<code>mpfr_rint_round</code> to the nearest integer, rounding halfway cases away
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1890
from zero, and <code>mpfr_rint_trunc</code> to the next integer toward zero. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1891
If the result is not representable, it is rounded in the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1892
The returned value is the ternary value associated with the considered
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1893
round-to-integer function (regarded in the same way as any other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1894
mathematical function). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1895
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1896
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1897
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1898
&mdash; Function: int <b>mpfr_frac</b> (<var>mpfr_t rop, mpfr_t op, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005ffrac-224"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1899
<blockquote><p>Set <var>rop</var> to the fractional part of <var>op</var>, having the same sign as
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1900
<var>op</var>, rounded in the direction <var>rnd</var> (unlike in <code>mpfr_rint</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1901
<var>rnd</var> affects only how the exact fractional part is rounded, not how
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1902
the fractional part is generated). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1903
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1904
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1905
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1906
&mdash; Function: int <b>mpfr_remainder</b> (<var>mpfr_t r, mpfr_t x, mpfr_t y, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fremainder-225"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1907
&mdash; Function: int <b>mpfr_remquo</b> (<var>mpfr_t r, long* q, mpfr_t x, mpfr_t y, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fremquo-226"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1908
<blockquote><p>Set <var>r</var> to the remainder of the division of <var>x</var> by <var>y</var>, with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1909
quotient rounded to the nearest integer (ties rounded to even), and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1910
<var>r</var> rounded according to the direction <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1911
If <var>r</var> is zero, it has the sign of <var>x</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1912
The return value is the ternary value corresponding to <var>r</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1913
Additionally, <code>mpfr_remquo</code> stores
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1914
the low significant bits from the quotient in <var>*q</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1915
(more precisely the number of bits in a <code>long</code> minus one),
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1916
with the sign of <var>x</var> divided by <var>y</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1917
(except if those low bits are all zero, in which case zero is returned). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1918
Note that <var>x</var> may be so large in magnitude relative to <var>y</var> that an
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1919
exact representation of the quotient is not practical. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1920
These functions are useful for additive argument reduction. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1921
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1922
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1923
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1924
&mdash; Function: int <b>mpfr_integer_p</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005finteger_005fp-227"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1925
<blockquote><p>Return non-zero iff <var>op</var> is an integer. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1926
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1927
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1928
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1929
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1930
<a name="Miscellaneous-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1931
Next:&nbsp;<a rel="next" accesskey="n" href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1932
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Integer-Related-Functions">Integer Related Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1933
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1934
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1935
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1936
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1937
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1938
   <p><a name="index-Miscellaneous-float-functions-228"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1939
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1940
<h3 class="section">5.10 Miscellaneous Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1941
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1942
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1943
&mdash; Function: void <b>mpfr_nexttoward</b> (<var>mpfr_t x, mpfr_t y</var>)<var><a name="index-mpfr_005fnexttoward-229"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1944
<blockquote><p>If <var>x</var> or <var>y</var> is NaN, set <var>x</var> to NaN. Otherwise, if <var>x</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1945
is different from <var>y</var>, replace <var>x</var> by the next floating-point
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1946
number (with the precision of <var>x</var> and the current exponent range)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1947
in the direction of <var>y</var>, if there is one
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1948
(the infinite values are seen as the smallest and largest floating-point
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1949
numbers). If the result is zero, it keeps the same sign. No underflow or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1950
overflow is generated. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1951
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1952
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1953
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1954
&mdash; Function: void <b>mpfr_nextabove</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fnextabove-230"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1955
<blockquote><p>Equivalent to <code>mpfr_nexttoward</code> where <var>y</var> is plus infinity. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1956
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1957
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1958
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1959
&mdash; Function: void <b>mpfr_nextbelow</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fnextbelow-231"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1960
<blockquote><p>Equivalent to <code>mpfr_nexttoward</code> where <var>y</var> is minus infinity. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1961
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1962
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1963
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1964
&mdash; Function: int <b>mpfr_min</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmin-232"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1965
<blockquote><p>Set <var>rop</var> to the minimum of <var>op1</var> and <var>op2</var>. If <var>op1</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1966
and <var>op2</var> are both NaN, then <var>rop</var> is set to NaN. If <var>op1</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1967
or <var>op2</var> is NaN, then <var>rop</var> is set to the numeric value. If
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1968
<var>op1</var> and <var>op2</var> are zeros of different signs, then <var>rop</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1969
is set to &minus;0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1970
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1971
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1972
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1973
&mdash; Function: int <b>mpfr_max</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmax-233"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1974
<blockquote><p>Set <var>rop</var> to the maximum of <var>op1</var> and <var>op2</var>. If <var>op1</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1975
and <var>op2</var> are both NaN, then <var>rop</var> is set to NaN. If <var>op1</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1976
or <var>op2</var> is NaN, then <var>rop</var> is set to the numeric value. If
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1977
<var>op1</var> and <var>op2</var> are zeros of different signs, then <var>rop</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1978
is set to +0. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1979
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1980
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1981
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1982
&mdash; Function: int <b>mpfr_urandomb</b> (<var>mpfr_t rop, gmp_randstate_t state</var>)<var><a name="index-mpfr_005furandomb-234"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1983
<blockquote><p>Generate a uniformly distributed random float in the interval
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1984
0 &lt;= <var>rop</var> &lt; 1. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1985
Return 0, unless the exponent is not in the current exponent range, in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1986
which case <var>rop</var> is set to NaN and a non-zero value is returned. The
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1987
second argument is a <code>gmp_randstate_t</code> structure which should be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1988
created using the GMP <code>gmp_randinit</code> function, see the GMP manual. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1989
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1990
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1991
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1992
&mdash; Function: void <b>mpfr_random</b> (<var>mpfr_t rop</var>)<var><a name="index-mpfr_005frandom-235"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1993
<blockquote><p>Generate a uniformly distributed random float in the interval
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1994
0 &lt;= <var>rop</var> &lt; 1. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1995
This function is deprecated; <code>mpfr_urandomb</code> should be used instead. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1996
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1997
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1998
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  1999
&mdash; Function: void <b>mpfr_random2</b> (<var>mpfr_t rop, mp_size_t size, mp_exp_t exp</var>)<var><a name="index-mpfr_005frandom2-236"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2000
<blockquote><p>Generate a random float of at most <var>size</var> limbs, with long strings of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2001
zeros and ones in the binary representation. The exponent of the number is in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2002
the interval &minus;<var>exp</var> to <var>exp</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2003
This function is useful for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2004
testing functions and algorithms, since this kind of random numbers have
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2005
proven to be more likely to trigger corner-case bugs. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2006
Negative random numbers are generated when <var>size</var> is negative. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2007
Put +0 in <var>rop</var> when size if zero. The internal state of the default
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2008
pseudorandom number generator is modified by a call to this function (the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2009
same one as GMP if MPFR was built using &lsquo;<samp><span class="samp">--with-gmp-build</span></samp>&rsquo;). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2010
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2011
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2012
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2013
&mdash; Function: mp_exp_t <b>mpfr_get_exp</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fget_005fexp-237"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2014
<blockquote><p>Get the exponent of <var>x</var>, assuming that <var>x</var> is a non-zero ordinary
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2015
number and the significand is chosen in [1/2,1). The behavior for NaN,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2016
infinity or zero is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2017
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2018
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2019
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2020
&mdash; Function: int <b>mpfr_set_exp</b> (<var>mpfr_t x, mp_exp_t e</var>)<var><a name="index-mpfr_005fset_005fexp-238"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2021
<blockquote><p>Set the exponent of <var>x</var> if <var>e</var> is in the current exponent range,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2022
and return 0 (even if <var>x</var> is not a non-zero ordinary number);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2023
otherwise, return a non-zero value. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2024
The significand is assumed to be in [1/2,1). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2025
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2026
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2027
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2028
&mdash; Function: int <b>mpfr_signbit</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005fsignbit-239"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2029
<blockquote><p>Return a non-zero value iff <var>op</var> has its sign bit set (i.e. if it is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2030
negative, &minus;0, or a NaN whose representation has its sign bit set). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2031
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2032
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2033
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2034
&mdash; Function: int <b>mpfr_setsign</b> (<var>mpfr_t rop, mpfr_t op, int s, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsetsign-240"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2035
<blockquote><p>Set the value of <var>rop</var> from <var>op</var>, rounded toward the given
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2036
direction <var>rnd</var>, then set (resp. clear) its sign bit if <var>s</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2037
is non-zero (resp. zero), even when <var>op</var> is a NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2038
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2039
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2040
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2041
&mdash; Function: int <b>mpfr_copysign</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcopysign-241"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2042
<blockquote><p>Set the value of <var>rop</var> from <var>op1</var>, rounded toward the given
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2043
direction <var>rnd</var>, then set its sign bit to that of <var>op2</var> (even
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2044
when <var>op1</var> or <var>op2</var> is a NaN). This function is equivalent to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2045
<code>mpfr_setsign (</code><var>rop</var><code>, </code><var>op1</var><code>, mpfr_signbit (</code><var>op2</var><code>), </code><var>rnd</var><code>)</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2046
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2047
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2048
<!-- By definition, a C string is always null-terminated, so that we -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2049
<!-- could just say "string" or "null-terminated character array", -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2050
<!-- but "null-terminated string" is not an error and probably better -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2051
<!-- for most users. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2052
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2053
&mdash; Function: const char * <b>mpfr_get_version</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005fversion-242"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2054
<blockquote><p>Return the MPFR version, as a null-terminated string. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2055
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2056
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2057
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2058
&mdash; Macro: <b>MPFR_VERSION</b><var><a name="index-MPFR_005fVERSION-243"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2059
&mdash; Macro: <b>MPFR_VERSION_MAJOR</b><var><a name="index-MPFR_005fVERSION_005fMAJOR-244"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2060
&mdash; Macro: <b>MPFR_VERSION_MINOR</b><var><a name="index-MPFR_005fVERSION_005fMINOR-245"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2061
&mdash; Macro: <b>MPFR_VERSION_PATCHLEVEL</b><var><a name="index-MPFR_005fVERSION_005fPATCHLEVEL-246"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2062
&mdash; Macro: <b>MPFR_VERSION_STRING</b><var><a name="index-MPFR_005fVERSION_005fSTRING-247"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2063
<blockquote><p><code>MPFR_VERSION</code> is the version of MPFR as a preprocessing constant. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2064
<code>MPFR_VERSION_MAJOR</code>, <code>MPFR_VERSION_MINOR</code> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2065
<code>MPFR_VERSION_PATCHLEVEL</code> are respectively the major, minor and patch
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2066
level of MPFR version, as preprocessing constants. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2067
<code>MPFR_VERSION_STRING</code> is the version (with an optional suffix, used
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2068
in development and pre-release versions) as a string constant, which can
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2069
be compared to the result of <code>mpfr_get_version</code> to check at run time
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2070
the header file and library used match:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2071
     <pre class="example">          if (strcmp (mpfr_get_version (), MPFR_VERSION_STRING))
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2072
            fprintf (stderr, "Warning: header and library do not match\n");
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2073
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2074
        <p>Note: Obtaining different strings is not necessarily an error, as
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2075
in general, a program compiled with some old MPFR version can be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2076
dynamically linked with a newer MPFR library version (if allowed
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2077
by the library versioning system). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2078
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2079
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2080
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2081
&mdash; Macro: long <b>MPFR_VERSION_NUM</b> (<var>major, minor, patchlevel</var>)<var><a name="index-MPFR_005fVERSION_005fNUM-248"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2082
<blockquote><p>Create an integer in the same format as used by <code>MPFR_VERSION</code> from the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2083
given <var>major</var>, <var>minor</var> and <var>patchlevel</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2084
Here is an example of how to check the MPFR version at compile time:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2085
     <pre class="example">          #if (!defined(MPFR_VERSION) || (MPFR_VERSION&lt;MPFR_VERSION_NUM(2,1,0)))
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2086
          # error "Wrong MPFR version."
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2087
          #endif
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2088
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2089
        </blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2090
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2091
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2092
&mdash; Function: const char * <b>mpfr_get_patches</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005fpatches-249"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2093
<blockquote><p>Return a null-terminated string containing the ids of the patches applied to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2094
the MPFR library (contents of the <samp><span class="file">PATCHES</span></samp> file), separated by spaces. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2095
Note: If the program has been compiled with an older MPFR version and is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2096
dynamically linked with a new MPFR library version, the ids of the patches
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2097
applied to the old (compile-time) MPFR version are not available (however
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2098
this information should not have much interest in general). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2099
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2100
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2101
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2102
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2103
<a name="Rounding-Mode-Related-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2104
Next:&nbsp;<a rel="next" accesskey="n" href="#Exception-Related-Functions">Exception Related Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2105
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Miscellaneous-Functions">Miscellaneous Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2106
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2107
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2108
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2109
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2110
   <p><a name="index-Rounding-mode-related-functions-250"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2111
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2112
<h3 class="section">5.11 Rounding Mode Related Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2113
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2114
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2115
&mdash; Function: void <b>mpfr_set_default_rounding_mode</b> (<var>mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fset_005fdefault_005frounding_005fmode-251"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2116
<blockquote><p>Set the default rounding mode to <var>rnd</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2117
The default rounding mode is to nearest initially. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2118
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2119
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2120
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2121
&mdash; Function: mp_rnd_t <b>mpfr_get_default_rounding_mode</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005fdefault_005frounding_005fmode-252"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2122
<blockquote><p>Get the default rounding mode. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2123
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2124
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2125
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2126
&mdash; Function: int <b>mpfr_prec_round</b> (<var>mpfr_t x, mp_prec_t prec, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fprec_005fround-253"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2127
<blockquote><p>Round <var>x</var> according to <var>rnd</var> with precision <var>prec</var>, which
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2128
must be an integer between <code>MPFR_PREC_MIN</code> and <code>MPFR_PREC_MAX</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2129
(otherwise the behavior is undefined). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2130
If <var>prec</var> is greater or equal to the precision of <var>x</var>, then new
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2131
space is allocated for the significand, and it is filled with zeros. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2132
Otherwise, the significand is rounded to precision <var>prec</var> with the given
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2133
direction. In both cases, the precision of <var>x</var> is changed to <var>prec</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2134
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2135
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2136
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2137
&mdash; Function: int <b>mpfr_round_prec</b> (<var>mpfr_t x, mp_rnd_t rnd, mp_prec_t prec</var>)<var><a name="index-mpfr_005fround_005fprec-254"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2138
<blockquote><p>[This function is obsolete. Please use <code>mpfr_prec_round</code> instead.] 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2139
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2140
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2141
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2142
&mdash; Function: const char * <b>mpfr_print_rnd_mode</b> (<var>mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fprint_005frnd_005fmode-255"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2143
<blockquote><p>Return the input string (GMP_RNDD, GMP_RNDU, GMP_RNDN, GMP_RNDZ)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2144
corresponding to the rounding mode <var>rnd</var> or a null pointer if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2145
<var>rnd</var> is an invalid rounding mode. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2146
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2147
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2148
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2149
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2150
<a name="Exception-Related-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2151
Next:&nbsp;<a rel="next" accesskey="n" href="#Advanced-Functions">Advanced Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2152
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2153
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2154
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2155
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2156
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2157
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2158
   <p><a name="index-Exception-related-functions-256"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2159
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2160
<h3 class="section">5.12 Exception Related Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2161
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2162
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2163
&mdash; Function: mp_exp_t <b>mpfr_get_emin</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005femin-257"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2164
&mdash; Function: mp_exp_t <b>mpfr_get_emax</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005femax-258"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2165
<blockquote><p>Return the (current) smallest and largest exponents allowed for a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2166
floating-point variable. The smallest positive value of a floating-point
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2167
variable is one half times 2 raised to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2168
smallest exponent and the largest value has the form (1 - epsilon) times 2 raised to the largest exponent. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2169
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2170
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2171
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2172
&mdash; Function: int <b>mpfr_set_emin</b> (<var>mp_exp_t exp</var>)<var><a name="index-mpfr_005fset_005femin-259"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2173
&mdash; Function: int <b>mpfr_set_emax</b> (<var>mp_exp_t exp</var>)<var><a name="index-mpfr_005fset_005femax-260"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2174
<blockquote><p>Set the smallest and largest exponents allowed for a floating-point variable. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2175
Return a non-zero value when <var>exp</var> is not in the range accepted by the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2176
implementation (in that case the smallest or largest exponent is not changed),
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2177
and zero otherwise. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2178
If the user changes the exponent range, it is her/his responsibility to check
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2179
that all current floating-point variables are in the new allowed range
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2180
(for example using <code>mpfr_check_range</code>), otherwise the subsequent
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2181
behavior will be undefined, in the sense of the ISO C standard. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2182
<!-- It is also her/his responsibility to check that @m {emin <= emax}. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2183
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2184
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2185
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2186
&mdash; Function: mp_exp_t <b>mpfr_get_emin_min</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005femin_005fmin-261"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2187
&mdash; Function: mp_exp_t <b>mpfr_get_emin_max</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005femin_005fmax-262"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2188
&mdash; Function: mp_exp_t <b>mpfr_get_emax_min</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005femax_005fmin-263"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2189
&mdash; Function: mp_exp_t <b>mpfr_get_emax_max</b> (<var>void</var>)<var><a name="index-mpfr_005fget_005femax_005fmax-264"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2190
<blockquote><p>Return the minimum and maximum of the smallest and largest exponents
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2191
allowed for <code>mpfr_set_emin</code> and <code>mpfr_set_emax</code>. These values
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2192
are implementation dependent; it is possible to create a non
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2193
portable program by writing <code>mpfr_set_emax(mpfr_get_emax_max())</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2194
and <code>mpfr_set_emin(mpfr_get_emin_min())</code> since the values
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2195
of the smallest and largest exponents become implementation dependent. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2196
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2197
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2198
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2199
&mdash; Function: int <b>mpfr_check_range</b> (<var>mpfr_t x, int t, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fcheck_005frange-265"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2200
<blockquote><p>This function forces <var>x</var> to be in the current range of acceptable
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2201
values, <var>t</var> being the current ternary value: negative if <var>x</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2202
is smaller than the exact value, positive if <var>x</var> is larger than
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2203
the exact value and zero if <var>x</var> is exact (before the call). It
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2204
generates an underflow or an overflow if the exponent of <var>x</var> is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2205
outside the current allowed range; the value of <var>t</var> may be used
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2206
to avoid a double rounding. This function returns zero if the rounded
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2207
result is equal to the exact one, a positive value if the rounded
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2208
result is larger than the exact one, a negative value if the rounded
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2209
result is smaller than the exact one. Note that unlike most functions,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2210
the result is compared to the exact one, not the input value <var>x</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2211
i.e. the ternary value is propagated.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2212
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2213
        <p>Note: If <var>x</var> is an infinity and <var>t</var> is different from zero (i.e.,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2214
if the rounded result is an inexact infinity), then the overflow flag is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2215
set. This is useful because <code>mpfr_check_range</code> is typically called
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2216
(at least in MPFR functions) after restoring the flags that could have
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2217
been set due to internal computations. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2218
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2219
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2220
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2221
&mdash; Function: int <b>mpfr_subnormalize</b> (<var>mpfr_t x, int t, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fsubnormalize-266"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2222
<blockquote><p>This function rounds <var>x</var> emulating subnormal number arithmetic:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2223
if <var>x</var> is outside the subnormal exponent range, it just propagates the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2224
ternary value <var>t</var>; otherwise, it rounds <var>x</var> to precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2225
<code>EXP(x)-emin+1</code> according to rounding mode <var>rnd</var> and previous
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2226
ternary value <var>t</var>, avoiding double rounding problems. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2227
More precisely in the subnormal domain, denoting by <var>e</var> the value of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2228
<code>emin</code>, <var>x</var> is rounded in fixed-point
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2229
arithmetic to an integer multiple of two to the power
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2230
<var>e</var>&minus;1; as a consequence, 1.5 multiplied by two to the power <var>e</var>&minus;1 when <var>t</var> is zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2231
is rounded to two to the power <var>e</var> with rounding to nearest.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2232
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2233
        <p><code>PREC(x)</code> is not modified by this function. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2234
<var>rnd</var> and <var>t</var> must be the used rounding mode for computing <var>x</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2235
and the returned ternary value when computing <var>x</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2236
The subnormal exponent range is from <code>emin</code> to <code>emin+PREC(x)-1</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2237
If the result cannot be represented in the current exponent range
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2238
(due to a too small <code>emax</code>), the behavior is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2239
Note that unlike most functions, the result is compared to the exact one,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2240
not the input value <var>x</var>, i.e. the ternary value is propagated. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2241
This is a preliminary interface. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2242
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2243
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2244
   <p>This is an example of how to emulate double IEEE-754 arithmetic
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2245
using MPFR:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2246
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2247
<pre class="example">     {
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2248
       mpfr_t xa, xb;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2249
       int i;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2250
       volatile double a, b;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2251
     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2252
       mpfr_set_default_prec (53);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2253
       mpfr_set_emin (-1073);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2254
       mpfr_set_emax (1024);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2255
     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2256
       mpfr_init (xa); mpfr_init (xb);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2257
     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2258
       b = 34.3; mpfr_set_d (xb, b, GMP_RNDN);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2259
       a = 0x1.1235P-1021; mpfr_set_d (xa, a, GMP_RNDN);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2260
     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2261
       a /= b;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2262
       i = mpfr_div (xa, xa, xb, GMP_RNDN);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2263
       i = mpfr_subnormalize (xa, i, GMP_RNDN);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2264
     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2265
       mpfr_clear (xa); mpfr_clear (xb);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2266
     }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2267
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2268
   <p>Warning: this emulates a double IEEE-754 arithmetic with correct rounding
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2269
in the subnormal range, which may not be the case for your hardware.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2270
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2271
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2272
&mdash; Function: void <b>mpfr_clear_underflow</b> (<var>void</var>)<var><a name="index-mpfr_005fclear_005funderflow-267"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2273
&mdash; Function: void <b>mpfr_clear_overflow</b> (<var>void</var>)<var><a name="index-mpfr_005fclear_005foverflow-268"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2274
&mdash; Function: void <b>mpfr_clear_nanflag</b> (<var>void</var>)<var><a name="index-mpfr_005fclear_005fnanflag-269"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2275
&mdash; Function: void <b>mpfr_clear_inexflag</b> (<var>void</var>)<var><a name="index-mpfr_005fclear_005finexflag-270"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2276
&mdash; Function: void <b>mpfr_clear_erangeflag</b> (<var>void</var>)<var><a name="index-mpfr_005fclear_005ferangeflag-271"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2277
<blockquote><p>Clear the underflow, overflow, invalid, inexact and erange flags. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2278
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2279
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2280
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2281
&mdash; Function: void <b>mpfr_set_underflow</b> (<var>void</var>)<var><a name="index-mpfr_005fset_005funderflow-272"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2282
&mdash; Function: void <b>mpfr_set_overflow</b> (<var>void</var>)<var><a name="index-mpfr_005fset_005foverflow-273"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2283
&mdash; Function: void <b>mpfr_set_nanflag</b> (<var>void</var>)<var><a name="index-mpfr_005fset_005fnanflag-274"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2284
&mdash; Function: void <b>mpfr_set_inexflag</b> (<var>void</var>)<var><a name="index-mpfr_005fset_005finexflag-275"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2285
&mdash; Function: void <b>mpfr_set_erangeflag</b> (<var>void</var>)<var><a name="index-mpfr_005fset_005ferangeflag-276"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2286
<blockquote><p>Set the underflow, overflow, invalid, inexact and erange flags. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2287
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2288
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2289
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2290
&mdash; Function: void <b>mpfr_clear_flags</b> (<var>void</var>)<var><a name="index-mpfr_005fclear_005fflags-277"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2291
<blockquote><p>Clear all global flags (underflow, overflow, inexact, invalid, erange). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2292
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2293
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2294
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2295
&mdash; Function: int <b>mpfr_underflow_p</b> (<var>void</var>)<var><a name="index-mpfr_005funderflow_005fp-278"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2296
&mdash; Function: int <b>mpfr_overflow_p</b> (<var>void</var>)<var><a name="index-mpfr_005foverflow_005fp-279"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2297
&mdash; Function: int <b>mpfr_nanflag_p</b> (<var>void</var>)<var><a name="index-mpfr_005fnanflag_005fp-280"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2298
&mdash; Function: int <b>mpfr_inexflag_p</b> (<var>void</var>)<var><a name="index-mpfr_005finexflag_005fp-281"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2299
&mdash; Function: int <b>mpfr_erangeflag_p</b> (<var>void</var>)<var><a name="index-mpfr_005ferangeflag_005fp-282"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2300
<blockquote><p>Return the corresponding (underflow, overflow, invalid, inexact, erange)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2301
flag, which is non-zero iff the flag is set. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2302
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2303
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2304
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2305
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2306
<a name="Advanced-Functions"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2307
Next:&nbsp;<a rel="next" accesskey="n" href="#Compatibility-with-MPF">Compatibility with MPF</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2308
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Exception-Related-Functions">Exception Related Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2309
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2310
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2311
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2312
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2313
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2314
   <p><a name="index-Advanced-functions-283"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2315
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2316
<h3 class="section">5.13 Advanced Functions</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2317
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2318
<p>All the given interfaces are preliminary. They might change incompatibly in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2319
future revisions.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2320
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2321
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2322
&mdash; Macro: <b>MPFR_DECL_INIT</b> (<var>name, prec</var>)<var><a name="index-MPFR_005fDECL_005fINIT-284"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2323
<blockquote><p>This macro declares <var>name</var> as an automatic variable of type <code>mpfr_t</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2324
initializes it and sets its precision to be <strong>exactly</strong> <var>prec</var> bits
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2325
and its value to NaN. <var>name</var> must be a valid identifier. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2326
You must use this macro in the declaration section. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2327
This macro is much faster than using <code>mpfr_init2</code> but has some
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2328
drawbacks:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2329
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2330
          <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2331
<li>You <strong>must not</strong> call <code>mpfr_clear</code> with variables
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2332
created with this macro (The storage is allocated at the point of declaration
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2333
and deallocated when the brace-level is exited.). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2334
<li>You <strong>can not</strong> change their precision. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2335
<li>You <strong>should not</strong> create variables with huge precision with this macro. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2336
<li>Your compiler must support &lsquo;<samp><span class="samp">Non-Constant Initializers</span></samp>&rsquo; (standard
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2337
in C++ and ISO C99) and &lsquo;<samp><span class="samp">Token Pasting</span></samp>&rsquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2338
(standard in ISO C89). If <var>prec</var> is not a compiler constant, your compiler
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2339
must support &lsquo;<samp><span class="samp">Variable-length automatic arrays</span></samp>&rsquo; (standard in ISO C99). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2340
&lsquo;<samp><span class="samp">GCC 2.95.3</span></samp>&rsquo; supports all these features. If you compile your program
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2341
with gcc in c89 mode and with &lsquo;<samp><span class="samp">-pedantic</span></samp>&rsquo;, you may want to define the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2342
<code>MPFR_USE_EXTENSION</code> macro to avoid warnings due to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2343
<code>MPFR_DECL_INIT</code> implementation. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2344
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2345
        </p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2346
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2347
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2348
&mdash; Function: void <b>mpfr_inits</b> (<var>mpfr_t x, ...</var>)<var><a name="index-mpfr_005finits-285"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2349
<blockquote><p>Initialize all the <code>mpfr_t</code> variables of the given <code>va_list</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2350
set their precision to be the default precision and their value to NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2351
See <code>mpfr_init</code> for more details. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2352
The <code>va_list</code> is assumed to be composed only of type <code>mpfr_t</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2353
(or equivalently <code>mpfr_ptr</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2354
It begins from <var>x</var>. It ends when it encounters a null pointer (whose
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2355
type must also be <code>mpfr_ptr</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2356
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2357
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2358
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2359
&mdash; Function: void <b>mpfr_inits2</b> (<var>mp_prec_t prec, mpfr_t x, ...</var>)<var><a name="index-mpfr_005finits2-286"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2360
<blockquote><p>Initialize all the <code>mpfr_t</code> variables of the given <code>va_list</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2361
set their precision to be <strong>exactly</strong>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2362
<var>prec</var> bits and their value to NaN. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2363
See <code>mpfr_init2</code> for more details. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2364
The <code>va_list</code> is assumed to be composed only of type <code>mpfr_t</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2365
(or equivalently <code>mpfr_ptr</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2366
It begins from <var>x</var>. It ends when it encounters a null pointer (whose
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2367
type must also be <code>mpfr_ptr</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2368
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2369
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2370
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2371
&mdash; Function: void <b>mpfr_clears</b> (<var>mpfr_t x, ...</var>)<var><a name="index-mpfr_005fclears-287"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2372
<blockquote><p>Free the space occupied by all the <code>mpfr_t</code> variables of the given
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2373
<code>va_list</code>. See <code>mpfr_clear</code> for more details. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2374
The <code>va_list</code> is assumed to be composed only of type <code>mpfr_t</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2375
(or equivalently <code>mpfr_ptr</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2376
It begins from <var>x</var>. It ends when it encounters a null pointer (whose
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2377
type must also be <code>mpfr_ptr</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2378
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2379
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2380
   <p>Here is an example of how to use multiple initialization functions:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2381
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2382
<pre class="example">     {
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2383
       mpfr_t x, y, z, t;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2384
       mpfr_inits2 (256, x, y, z, t, (mpfr_ptr) 0);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2385
       ...
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2386
       mpfr_clears (x, y, z, t, (mpfr_ptr) 0);
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2387
     }
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2388
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2389
   <div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2390
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2391
<a name="Compatibility-with-MPF"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2392
Next:&nbsp;<a rel="next" accesskey="n" href="#Custom-Interface">Custom Interface</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2393
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Advanced-Functions">Advanced Functions</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2394
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2395
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2396
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2397
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2398
   <p><a name="index-Compatibility-with-MPF-288"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2399
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2400
<h3 class="section">5.14 Compatibility With MPF</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2401
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2402
<p>A header file <samp><span class="file">mpf2mpfr.h</span></samp> is included in the distribution of MPFR for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2403
compatibility with the GNU MP class MPF. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2404
After inserting the following two lines after the <code>#include &lt;gmp.h&gt;</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2405
line,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2406
<pre class="verbatim">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2407
#include &lt;mpfr.h>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2408
#include &lt;mpf2mpfr.h>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2409
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2410
any program written for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2411
MPF can be compiled directly with MPFR without any changes. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2412
All operations are then performed with the default MPFR rounding mode,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2413
which can be reset with <code>mpfr_set_default_rounding_mode</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2414
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2415
   <p>Warning: the <code>mpf_init</code> and <code>mpf_init2</code> functions initialize
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2416
to zero, whereas the corresponding MPFR functions initialize to NaN:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2417
this is useful to detect uninitialized values, but is slightly incompatible
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2418
with <code>mpf</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2419
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2420
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2421
&mdash; Function: void <b>mpfr_set_prec_raw</b> (<var>mpfr_t x, mp_prec_t prec</var>)<var><a name="index-mpfr_005fset_005fprec_005fraw-289"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2422
<blockquote><p>Reset the precision of <var>x</var> to be <strong>exactly</strong> <var>prec</var> bits. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2423
The only difference with <code>mpfr_set_prec</code> is that <var>prec</var> is assumed to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2424
be small enough so that the significand fits into the current allocated memory
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2425
space for <var>x</var>. Otherwise the behavior is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2426
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2427
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2428
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2429
&mdash; Function: int <b>mpfr_eq</b> (<var>mpfr_t op1, mpfr_t op2, unsigned long int op3</var>)<var><a name="index-mpfr_005feq-290"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2430
<blockquote><p>Return non-zero if <var>op1</var> and <var>op2</var> are both non-zero ordinary
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2431
numbers with the same exponent and the same first <var>op3</var> bits, both
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2432
zero, or both infinities of the same sign. Return zero otherwise. This
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2433
function is defined for compatibility with <code>mpf</code>. Do not use it if
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2434
you want to know whether two numbers are close to each other; for instance,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2435
1.011111 and 1.100000 are regarded as different for any value of <var>op3</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2436
larger than 1. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2437
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2438
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2439
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2440
&mdash; Function: void <b>mpfr_reldiff</b> (<var>mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005freldiff-291"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2441
<blockquote><p>Compute the relative difference between <var>op1</var> and <var>op2</var>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2442
and store the result in <var>rop</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2443
This function does not guarantee the correct rounding on the relative
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2444
difference; it just computes |<var>op1</var>-<var>op2</var>|/<var>op1</var>, using the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2445
rounding mode <var>rnd</var> for all operations and the precision of <var>rop</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2446
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2447
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2448
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2449
&mdash; Function: int <b>mpfr_mul_2exp</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fmul_005f2exp-292"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2450
&mdash; Function: int <b>mpfr_div_2exp</b> (<var>mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd</var>)<var><a name="index-mpfr_005fdiv_005f2exp-293"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2451
<blockquote><p>See <code>mpfr_mul_2ui</code> and <code>mpfr_div_2ui</code>. These functions are only kept
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2452
for compatibility with MPF. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2453
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2454
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2455
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2456
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2457
<a name="Custom-Interface"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2458
Next:&nbsp;<a rel="next" accesskey="n" href="#Internals">Internals</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2459
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Compatibility-with-MPF">Compatibility with MPF</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2460
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2461
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2462
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2463
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2464
   <p><a name="index-Custom-interface-294"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2465
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2466
<h3 class="section">5.15 Custom Interface</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2467
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2468
<p>Some applications use a stack to handle the memory and their objects. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2469
However, the MPFR memory design is not well suited for such a thing. So that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2470
such applications are able to use MPFR, an auxiliary memory interface has
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2471
been created: the Custom Interface.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2472
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2473
   <p>The following interface allows them to use MPFR in two ways:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2474
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2475
<li>Either they directly store the MPFR FP number as a <code>mpfr_t</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2476
on the stack. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2477
<li>Either they store their own representation of a FP number on the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2478
stack and construct a new temporary <code>mpfr_t</code> each time it is needed. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2479
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2480
   Nothing has to be done to destroy the FP numbers except garbaging the used
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2481
memory: all the memory stuff (allocating, destroying, garbaging) is kept to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2482
the application.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2483
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2484
   <p>Each function in this interface is also implemented as a macro for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2485
efficiency reasons: for example <code>mpfr_custom_init (s, p)</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2486
uses the macro, while <code>(mpfr_custom_init) (s, p)</code> uses the function.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2487
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2488
   <p>Note 1: MPFR functions may still initialize temporary FP numbers
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2489
using standard mpfr_init. See Custom Allocation (GNU MP).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2490
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2491
   <p>Note 2: MPFR functions may use the cached functions (mpfr_const_pi for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2492
example), even if they are not explicitly called. You have to call
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2493
<code>mpfr_free_cache</code> each time you garbage the memory iff mpfr_init, through
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2494
GMP Custom Allocation, allocates its memory on the application stack.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2495
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2496
   <p>Note 3: This interface is preliminary.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2497
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2498
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2499
&mdash; Function: size_t <b>mpfr_custom_get_size</b> (<var>mp_prec_t prec</var>)<var><a name="index-mpfr_005fcustom_005fget_005fsize-295"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2500
<blockquote><p>Return the needed size in bytes to store the significand of a FP number
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2501
of precision <var>prec</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2502
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2503
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2504
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2505
&mdash; Function: void <b>mpfr_custom_init</b> (<var>void *significand, mp_prec_t prec</var>)<var><a name="index-mpfr_005fcustom_005finit-296"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2506
<blockquote><p>Initialize a significand of precision <var>prec</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2507
<var>significand</var> must be an area of <code>mpfr_custom_get_size (prec)</code> bytes
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2508
at least and be suitably aligned for an array of <code>mp_limb_t</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2509
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2510
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2511
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2512
&mdash; Function: void <b>mpfr_custom_init_set</b> (<var>mpfr_t x, int kind, mp_exp_t exp, mp_prec_t prec, void *significand</var>)<var><a name="index-mpfr_005fcustom_005finit_005fset-297"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2513
<blockquote><p>Perform a dummy initialization of a <code>mpfr_t</code> and set it to:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2514
          <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2515
<li>if <code>ABS(kind) == MPFR_NAN_KIND</code>, <var>x</var> is set to NaN;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2516
<li>if <code>ABS(kind) == MPFR_INF_KIND</code>, <var>x</var> is set to the infinity
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2517
of sign <code>sign(kind)</code>;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2518
<li>if <code>ABS(kind) == MPFR_ZERO_KIND</code>, <var>x</var> is set to the zero of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2519
sign <code>sign(kind)</code>;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2520
<li>if <code>ABS(kind) == MPFR_REGULAR_KIND</code>, <var>x</var> is set to a regular
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2521
number: <code>x = sign(kind)*significand*2^exp</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2522
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2523
        In all cases, it uses <var>significand</var> directly for further computing
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2524
involving <var>x</var>. It will not allocate anything. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2525
A FP number initialized with this function cannot be resized using
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2526
<code>mpfr_set_prec</code>, or cleared using <code>mpfr_clear</code>! 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2527
<var>significand</var> must have been initialized with <code>mpfr_custom_init</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2528
using the same precision <var>prec</var>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2529
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2530
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2531
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2532
&mdash; Function: int <b>mpfr_custom_get_kind</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fcustom_005fget_005fkind-298"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2533
<blockquote><p>Return the current kind of a <code>mpfr_t</code> as used by
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2534
<code>mpfr_custom_init_set</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2535
The behavior of this function for any <code>mpfr_t</code> not initialized
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2536
with <code>mpfr_custom_init_set</code> is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2537
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2538
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2539
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2540
&mdash; Function: void * <b>mpfr_custom_get_mantissa</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fcustom_005fget_005fmantissa-299"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2541
<blockquote><p>Return a pointer to the significand used by a <code>mpfr_t</code> initialized with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2542
<code>mpfr_custom_init_set</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2543
The behavior of this function for any <code>mpfr_t</code> not initialized
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2544
with <code>mpfr_custom_init_set</code> is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2545
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2546
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2547
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2548
&mdash; Function: mp_exp_t <b>mpfr_custom_get_exp</b> (<var>mpfr_t x</var>)<var><a name="index-mpfr_005fcustom_005fget_005fexp-300"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2549
<blockquote><p>Return the exponent of <var>x</var>, assuming that <var>x</var> is a non-zero ordinary
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2550
number. The return value for NaN, Infinity or Zero is unspecified but doesn't
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2551
produce any trap. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2552
The behavior of this function for any <code>mpfr_t</code> not initialized
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2553
with <code>mpfr_custom_init_set</code> is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2554
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2555
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2556
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2557
&mdash; Function: void <b>mpfr_custom_move</b> (<var>mpfr_t x, void *new_position</var>)<var><a name="index-mpfr_005fcustom_005fmove-301"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2558
<blockquote><p>Inform MPFR that the significand has moved due to a garbage collect
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2559
and update its new position to <code>new_position</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2560
However the application has to move the significand and the <code>mpfr_t</code>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2561
itself. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2562
The behavior of this function for any <code>mpfr_t</code> not initialized
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2563
with <code>mpfr_custom_init_set</code> is undefined. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2564
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2565
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2566
   <p>See the test suite for examples.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2567
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2568
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2569
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2570
<a name="Internals"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2571
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Custom-Interface">Custom Interface</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2572
Up:&nbsp;<a rel="up" accesskey="u" href="#MPFR-Interface">MPFR Interface</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2573
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2574
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2575
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2576
   <p><a name="index-Internals-302"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2577
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2578
<h3 class="section">5.16 Internals</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2579
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2580
<p>The following types and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2581
functions were mainly designed for the implementation of MPFR,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2582
but may be useful for users too. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2583
However no upward compatibility is guaranteed. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2584
You may need to include <samp><span class="file">mpfr-impl.h</span></samp> to use them.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2585
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2586
   <p>The <code>mpfr_t</code> type consists of four fields.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2587
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2588
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2589
<li>The <code>_mpfr_prec</code> field is used to store the precision of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2590
the variable (in bits); this is not less than <code>MPFR_PREC_MIN</code>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2591
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2592
     <li>The <code>_mpfr_sign</code> field is used to store the sign of the variable.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2593
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2594
     <li>The <code>_mpfr_exp</code> field stores the exponent. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2595
An exponent of 0 means a radix point just above the most significant
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2596
limb.  Non-zero values n are a multiplier 2^n relative to that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2597
point. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2598
A NaN, an infinity and a zero are indicated by a special value of the exponent.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2599
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2600
     <li>Finally, the <code>_mpfr_d</code> is a pointer to the limbs, least
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2601
significant limbs stored first. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2602
The number of limbs in use is controlled by <code>_mpfr_prec</code>, namely
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2603
ceil(<code>_mpfr_prec</code>/<code>mp_bits_per_limb</code>). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2604
Non-singular values always have the most significant bit of the most
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2605
significant limb set to 1.  When the precision does not correspond to a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2606
whole number of limbs, the excess bits at the low end of the data are zero.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2607
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2608
   </ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2609
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2610
<!-- @deftypefun int mpfr_add_one_ulp (mpfr_t @var{x}, mp_rnd_t @var{rnd}) -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2611
<!-- Add one unit in last place (ulp) to @var{x} if @var{x} is finite -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2612
<!-- and positive, subtract one ulp if @var{x} is finite and negative; -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2613
<!-- otherwise, @var{x} is not changed. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2614
<!-- The return value is zero unless an overflow occurs, in which case the -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2615
<!-- @code{mpfr_add_one_ulp} function behaves like a conventional addition. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2616
<!-- @end deftypefun -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2617
<!-- @deftypefun int mpfr_sub_one_ulp (mpfr_t @var{x}, mp_rnd_t @var{rnd}) -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2618
<!-- Subtract one ulp to @var{x} if @var{x} is finite and positive, add one -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2619
<!-- ulp if @var{x} is finite and negative; otherwise, @var{x} is not changed. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2620
<!-- The return value is zero unless an underflow occurs, in which case the -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2621
<!-- @code{mpfr_sub_one_ulp} function behaves like a conventional subtraction. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2622
<!-- @end deftypefun -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2623
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2624
&mdash; Function: int <b>mpfr_can_round</b> (<var>mpfr_t b, mp_exp_t err, mp_rnd_t rnd1, mp_rnd_t rnd2, mp_prec_t prec</var>)<var><a name="index-mpfr_005fcan_005fround-303"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2625
<blockquote><p>Assuming <var>b</var> is an approximation of an unknown number
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2626
<var>x</var> in the direction <var>rnd1</var> with error at most two to the power
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2627
E(b)-<var>err</var> where E(b) is the exponent of <var>b</var>, return a non-zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2628
value if one is able to round correctly <var>x</var> to precision
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2629
<var>prec</var> with the direction <var>rnd2</var>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2630
and 0 otherwise (including for NaN and Inf). 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2631
This function <strong>does not modify</strong> its arguments.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2632
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2633
        <p>Note: if one wants to also determine the correct ternary value when rounding
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2634
<var>b</var> to precision <var>prec</var>, a useful trick is the following:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2635
<pre class="verbatim">     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2636
        if (mpfr_can_round (b, err, rnd1, GMP_RNDZ, prec + (rnd2 == GMP_RNDN)))
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2637
           ...
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2638
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2639
Indeed, if <var>rnd2</var> is <code>GMP_RNDN</code>, this will check if one can
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2640
round to <var>prec</var>+1 bits with a directed rounding:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2641
if so, one can surely round to nearest to <var>prec</var> bits,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2642
and in addition one can determine the correct ternary value, which would not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2643
be the case when <var>b</var> is near from a value exactly representable on
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2644
<var>prec</var> bits. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2645
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2646
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2647
<div class="defun">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2648
&mdash; Function: double <b>mpfr_get_d1</b> (<var>mpfr_t op</var>)<var><a name="index-mpfr_005fget_005fd1-304"></a></var><br>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2649
<blockquote><p>Convert <var>op</var> to a <code>double</code>, using the default MPFR rounding mode
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2650
(see function <code>mpfr_set_default_rounding_mode</code>). This function is
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2651
obsolete. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2652
</p></blockquote></div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2653
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2654
<!-- @deftypefun void mpfr_set_str_binary (mpfr_t @var{x}, const char *@var{s}) -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2655
<!-- Set @var{x} to the value of the binary number in string @var{s}, which has to -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2656
<!-- be of the -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2657
<!-- form +/-xxxx.xxxxxxEyy. The exponent is read in decimal, but is interpreted -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2658
<!-- as the power of two to be multiplied by the significand. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2659
<!-- The significand length of @var{s} has to be less or equal to the precision -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2660
<!-- of @var{x}, otherwise an error occurs. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2661
<!-- If @var{s} starts with @code{N}, it is interpreted as NaN (Not-a-Number); -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2662
<!-- if it starts with @code{I} after the sign, it is interpreted as infinity, -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2663
<!-- with the corresponding sign. -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2664
<!-- @end deftypefun -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2665
<!-- @deftypefun void mpfr_print_binary (mpfr_t @var{float}) -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2666
<!-- Output @var{float} on stdout -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2667
<!-- in raw binary format (the exponent is written in decimal, yet). -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2668
<!-- @end deftypefun -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2669
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2670
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2671
<a name="Contributors"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2672
Next:&nbsp;<a rel="next" accesskey="n" href="#References">References</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2673
Previous:&nbsp;<a rel="previous" accesskey="p" href="#MPFR-Interface">MPFR Interface</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2674
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2675
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2676
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2677
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2678
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2679
<h2 class="unnumbered">Contributors</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2680
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2681
<p>The main developers of MPFR are Guillaume Hanrot, Vincent Lef&egrave;vre,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2682
Patrick P&eacute;lissier, Philippe Th&eacute;veny and Paul Zimmermann.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2683
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2684
   <p>Sylvie Boldo from ENS-Lyon, France,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2685
contributed the functions <code>mpfr_agm</code> and <code>mpfr_log</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2686
Emmanuel Jeandel, from ENS-Lyon too,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2687
contributed the generic hypergeometric code in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2688
<code>generic.c</code>, as well as the <code>mpfr_exp3</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2689
a first implementation of the sine and cosine,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2690
and improved versions of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2691
<code>mpfr_const_log2</code> and <code>mpfr_const_pi</code>. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2692
Mathieu Dutour contributed the functions <code>mpfr_atan</code> and <code>mpfr_asin</code>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2693
and a previous version of <code>mpfr_gamma</code>;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2694
David Daney contributed the hyperbolic and inverse hyperbolic functions,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2695
the base-2 exponential, and the factorial function. Fabrice Rouillier
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2696
contributed the original version of <samp><span class="file">mul_ui.c</span></samp>, the <samp><span class="file">gmp_op.c</span></samp>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2697
file, and helped to the Microsoft Windows porting. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2698
Jean-Luc R&eacute;my contributed the <code>mpfr_zeta</code> code. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2699
Ludovic Meunier helped in the design of the <code>mpfr_erf</code> code. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2700
Damien Stehl&eacute; contributed the <code>mpfr_get_ld_2exp</code> function.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2701
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2702
   <p>We would like to thank Jean-Michel Muller and Joris van der Hoeven for very
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2703
fruitful discussions at the beginning of that project, Torbj&ouml;rn Granlund
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2704
and Kevin Ryde for their help about design issues,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2705
and Nathalie Revol for her careful reading of a previous version of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2706
this documentation. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2707
Kevin Ryde did a tremendous job for the portability of MPFR in 2002-2004.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2708
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2709
   <p>The development of the MPFR library would not have been possible without
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2710
the continuous support of INRIA, and of the LORIA (Nancy, France) and LIP
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2711
(Lyon, France) laboratories. In particular the main authors were or are
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2712
members of the PolKA, Spaces, Cacao project-teams at LORIA and of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2713
Arenaire project-team at LIP. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2714
This project was started during the Fiable (reliable in French) action
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2715
supported by INRIA, and continued during the AOC action. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2716
The development of MPFR was also supported by a grant
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2717
(202F0659 00 MPN 121) from the Conseil R&eacute;gional de Lorraine in 2002,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2718
and from INRIA by an "associate engineer" grant (2003-2005)
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2719
and an "op&eacute;ration de d&eacute;veloppement logiciel" grant (2007-2009).
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2720
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2721
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2722
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2723
<a name="References"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2724
Next:&nbsp;<a rel="next" accesskey="n" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2725
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Contributors">Contributors</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2726
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2727
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2728
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2729
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2730
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2731
<h2 class="unnumbered">References</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2732
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2733
     <ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2734
<li>Laurent Fousse, Guillaume Hanrot, Vincent Lef&egrave;vre,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2735
Patrick P&eacute;lissier and Paul Zimmermann,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2736
"MPFR: A Multiple-Precision Binary Floating-Point Library With Correct Rounding",
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2737
ACM Transactions on Mathematical Software,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2738
volume 33, issue 2, article 13, 15 pages, 2007,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2739
<a href="http://doi.acm.org/10.1145/1236463.1236468">http://doi.acm.org/10.1145/1236463.1236468</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2740
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2741
     <li>Torbj&ouml;rn Granlund, "GNU MP: The GNU Multiple Precision Arithmetic Library",
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2742
  version 4.2.2, 2007, <a href="http://gmplib.org">http://gmplib.org</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2743
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2744
     <li>IEEE standard for binary floating-point arithmetic, Technical Report
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2745
ANSI-IEEE Standard 754-1985, New York, 1985. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2746
Approved March 21, 1985: IEEE Standards Board; approved July 26,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2747
  1985: American National Standards Institute, 18 pages.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2748
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2749
     <li>Donald E. Knuth, "The Art of Computer Programming", vol 2,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2750
"Seminumerical Algorithms", 2nd edition, Addison-Wesley, 1981.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2751
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2752
     <li>Jean-Michel Muller, "Elementary Functions, Algorithms and Implementation",
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2753
Birkhauser, Boston, 2nd edition, 2006.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2754
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2755
</ul>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2756
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2757
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2758
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2759
<a name="GNU-Free-Documentation-License"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2760
Next:&nbsp;<a rel="next" accesskey="n" href="#Concept-Index">Concept Index</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2761
Previous:&nbsp;<a rel="previous" accesskey="p" href="#References">References</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2762
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2763
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2764
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2765
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2766
<h2 class="appendix">Appendix A GNU Free Documentation License</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2767
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2768
<p><a name="index-GNU-Free-Documentation-License-305"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2769
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2770
<!-- MPFR tweak: Have this in mpfr.texi to help texinfo-mode -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2771
<!-- @node GNU Free Documentation License -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2772
<!-- @appendixsec GNU Free Documentation License -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2773
   <p><a name="index-FDL_002c-GNU-Free-Documentation-License-306"></a><div align="center">Version 1.2, November 2002</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2774
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2775
<pre class="display">     Copyright &copy; 2000,2001,2002 Free Software Foundation, Inc.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2776
     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2777
     
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2778
     Everyone is permitted to copy and distribute verbatim copies
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2779
     of this license document, but changing it is not allowed.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2780
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2781
     <ol type=1 start=0>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2782
<li>PREAMBLE
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2783
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2784
     <p>The purpose of this License is to make a manual, textbook, or other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2785
functional and useful document <dfn>free</dfn> in the sense of freedom: to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2786
assure everyone the effective freedom to copy and redistribute it,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2787
with or without modifying it, either commercially or noncommercially. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2788
Secondarily, this License preserves for the author and publisher a way
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2789
to get credit for their work, while not being considered responsible
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2790
for modifications made by others.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2791
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2792
     <p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2793
works of the document must themselves be free in the same sense.  It
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2794
complements the GNU General Public License, which is a copyleft
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2795
license designed for free software.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2796
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2797
     <p>We have designed this License in order to use it for manuals for free
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2798
software, because free software needs free documentation: a free
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2799
program should come with manuals providing the same freedoms that the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2800
software does.  But this License is not limited to software manuals;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2801
it can be used for any textual work, regardless of subject matter or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2802
whether it is published as a printed book.  We recommend this License
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2803
principally for works whose purpose is instruction or reference.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2804
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2805
     <li>APPLICABILITY AND DEFINITIONS
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2806
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2807
     <p>This License applies to any manual or other work, in any medium, that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2808
contains a notice placed by the copyright holder saying it can be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2809
distributed under the terms of this License.  Such a notice grants a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2810
world-wide, royalty-free license, unlimited in duration, to use that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2811
work under the conditions stated herein.  The &ldquo;Document&rdquo;, below,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2812
refers to any such manual or work.  Any member of the public is a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2813
licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2814
copy, modify or distribute the work in a way requiring permission
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2815
under copyright law.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2816
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2817
     <p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2818
Document or a portion of it, either copied verbatim, or with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2819
modifications and/or translated into another language.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2820
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2821
     <p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2822
of the Document that deals exclusively with the relationship of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2823
publishers or authors of the Document to the Document's overall
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2824
subject (or to related matters) and contains nothing that could fall
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2825
directly within that overall subject.  (Thus, if the Document is in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2826
part a textbook of mathematics, a Secondary Section may not explain
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2827
any mathematics.)  The relationship could be a matter of historical
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2828
connection with the subject or with related matters, or of legal,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2829
commercial, philosophical, ethical or political position regarding
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2830
them.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2831
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2832
     <p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2833
are designated, as being those of Invariant Sections, in the notice
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2834
that says that the Document is released under this License.  If a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2835
section does not fit the above definition of Secondary then it is not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2836
allowed to be designated as Invariant.  The Document may contain zero
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2837
Invariant Sections.  If the Document does not identify any Invariant
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2838
Sections then there are none.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2839
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2840
     <p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2841
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2842
the Document is released under this License.  A Front-Cover Text may
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2843
be at most 5 words, and a Back-Cover Text may be at most 25 words.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2844
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2845
     <p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2846
represented in a format whose specification is available to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2847
general public, that is suitable for revising the document
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2848
straightforwardly with generic text editors or (for images composed of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2849
pixels) generic paint programs or (for drawings) some widely available
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2850
drawing editor, and that is suitable for input to text formatters or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2851
for automatic translation to a variety of formats suitable for input
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2852
to text formatters.  A copy made in an otherwise Transparent file
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2853
format whose markup, or absence of markup, has been arranged to thwart
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2854
or discourage subsequent modification by readers is not Transparent. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2855
An image format is not Transparent if used for any substantial amount
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2856
of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2857
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2858
     <p>Examples of suitable formats for Transparent copies include plain
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2859
<span class="sc">ascii</span> without markup, Texinfo input format, LaTeX input
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2860
format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2861
<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2862
PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2863
of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2864
<acronym>JPG</acronym>.  Opaque formats include proprietary formats that can be
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2865
read and edited only by proprietary word processors, <acronym>SGML</acronym> or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2866
<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2867
not generally available, and the machine-generated <acronym>HTML</acronym>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2868
PostScript or <acronym>PDF</acronym> produced by some word processors for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2869
output purposes only.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2870
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2871
     <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2872
plus such following pages as are needed to hold, legibly, the material
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2873
this License requires to appear in the title page.  For works in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2874
formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2875
the text near the most prominent appearance of the work's title,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2876
preceding the beginning of the body of the text.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2877
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2878
     <p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2879
title either is precisely XYZ or contains XYZ in parentheses following
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2880
text that translates XYZ in another language.  (Here XYZ stands for a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2881
specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2882
&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2883
of such a section when you modify the Document means that it remains a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2884
section &ldquo;Entitled XYZ&rdquo; according to this definition.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2885
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2886
     <p>The Document may include Warranty Disclaimers next to the notice which
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2887
states that this License applies to the Document.  These Warranty
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2888
Disclaimers are considered to be included by reference in this
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2889
License, but only as regards disclaiming warranties: any other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2890
implication that these Warranty Disclaimers may have is void and has
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2891
no effect on the meaning of this License.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2892
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2893
     <li>VERBATIM COPYING
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2894
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2895
     <p>You may copy and distribute the Document in any medium, either
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2896
commercially or noncommercially, provided that this License, the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2897
copyright notices, and the license notice saying this License applies
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2898
to the Document are reproduced in all copies, and that you add no other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2899
conditions whatsoever to those of this License.  You may not use
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2900
technical measures to obstruct or control the reading or further
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2901
copying of the copies you make or distribute.  However, you may accept
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2902
compensation in exchange for copies.  If you distribute a large enough
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2903
number of copies you must also follow the conditions in section 3.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2904
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2905
     <p>You may also lend copies, under the same conditions stated above, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2906
you may publicly display copies.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2907
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2908
     <li>COPYING IN QUANTITY
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2909
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2910
     <p>If you publish printed copies (or copies in media that commonly have
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2911
printed covers) of the Document, numbering more than 100, and the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2912
Document's license notice requires Cover Texts, you must enclose the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2913
copies in covers that carry, clearly and legibly, all these Cover
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2914
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2915
the back cover.  Both covers must also clearly and legibly identify
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2916
you as the publisher of these copies.  The front cover must present
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2917
the full title with all words of the title equally prominent and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2918
visible.  You may add other material on the covers in addition. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2919
Copying with changes limited to the covers, as long as they preserve
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2920
the title of the Document and satisfy these conditions, can be treated
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2921
as verbatim copying in other respects.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2922
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2923
     <p>If the required texts for either cover are too voluminous to fit
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2924
legibly, you should put the first ones listed (as many as fit
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2925
reasonably) on the actual cover, and continue the rest onto adjacent
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2926
pages.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2927
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2928
     <p>If you publish or distribute Opaque copies of the Document numbering
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2929
more than 100, you must either include a machine-readable Transparent
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2930
copy along with each Opaque copy, or state in or with each Opaque copy
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2931
a computer-network location from which the general network-using
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2932
public has access to download using public-standard network protocols
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2933
a complete Transparent copy of the Document, free of added material. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2934
If you use the latter option, you must take reasonably prudent steps,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2935
when you begin distribution of Opaque copies in quantity, to ensure
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2936
that this Transparent copy will remain thus accessible at the stated
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2937
location until at least one year after the last time you distribute an
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2938
Opaque copy (directly or through your agents or retailers) of that
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2939
edition to the public.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2940
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2941
     <p>It is requested, but not required, that you contact the authors of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2942
Document well before redistributing any large number of copies, to give
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2943
them a chance to provide you with an updated version of the Document.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2944
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2945
     <li>MODIFICATIONS
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2946
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2947
     <p>You may copy and distribute a Modified Version of the Document under
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2948
the conditions of sections 2 and 3 above, provided that you release
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2949
the Modified Version under precisely this License, with the Modified
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2950
Version filling the role of the Document, thus licensing distribution
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2951
and modification of the Modified Version to whoever possesses a copy
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2952
of it.  In addition, you must do these things in the Modified Version:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2953
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2954
          <ol type=A start=1>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2955
<li>Use in the Title Page (and on the covers, if any) a title distinct
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2956
from that of the Document, and from those of previous versions
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2957
(which should, if there were any, be listed in the History section
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2958
of the Document).  You may use the same title as a previous version
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2959
if the original publisher of that version gives permission.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2960
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2961
          <li>List on the Title Page, as authors, one or more persons or entities
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2962
responsible for authorship of the modifications in the Modified
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2963
Version, together with at least five of the principal authors of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2964
Document (all of its principal authors, if it has fewer than five),
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2965
unless they release you from this requirement.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2966
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2967
          <li>State on the Title page the name of the publisher of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2968
Modified Version, as the publisher.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2969
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2970
          <li>Preserve all the copyright notices of the Document.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2971
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2972
          <li>Add an appropriate copyright notice for your modifications
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2973
adjacent to the other copyright notices.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2974
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2975
          <li>Include, immediately after the copyright notices, a license notice
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2976
giving the public permission to use the Modified Version under the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2977
terms of this License, in the form shown in the Addendum below.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2978
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2979
          <li>Preserve in that license notice the full lists of Invariant Sections
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2980
and required Cover Texts given in the Document's license notice.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2981
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2982
          <li>Include an unaltered copy of this License.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2983
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2984
          <li>Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2985
to it an item stating at least the title, year, new authors, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2986
publisher of the Modified Version as given on the Title Page.  If
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2987
there is no section Entitled &ldquo;History&rdquo; in the Document, create one
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2988
stating the title, year, authors, and publisher of the Document as
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2989
given on its Title Page, then add an item describing the Modified
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2990
Version as stated in the previous sentence.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2991
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2992
          <li>Preserve the network location, if any, given in the Document for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2993
public access to a Transparent copy of the Document, and likewise
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2994
the network locations given in the Document for previous versions
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2995
it was based on.  These may be placed in the &ldquo;History&rdquo; section. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2996
You may omit a network location for a work that was published at
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2997
least four years before the Document itself, or if the original
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2998
publisher of the version it refers to gives permission.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  2999
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3000
          <li>For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3001
the Title of the section, and preserve in the section all the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3002
substance and tone of each of the contributor acknowledgements and/or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3003
dedications given therein.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3004
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3005
          <li>Preserve all the Invariant Sections of the Document,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3006
unaltered in their text and in their titles.  Section numbers
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3007
or the equivalent are not considered part of the section titles.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3008
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3009
          <li>Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3010
may not be included in the Modified Version.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3011
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3012
          <li>Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3013
to conflict in title with any Invariant Section.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3014
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3015
          <li>Preserve any Warranty Disclaimers.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3016
          </ol>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3017
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3018
     <p>If the Modified Version includes new front-matter sections or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3019
appendices that qualify as Secondary Sections and contain no material
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3020
copied from the Document, you may at your option designate some or all
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3021
of these sections as invariant.  To do this, add their titles to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3022
list of Invariant Sections in the Modified Version's license notice. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3023
These titles must be distinct from any other section titles.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3024
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3025
     <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3026
nothing but endorsements of your Modified Version by various
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3027
parties&mdash;for example, statements of peer review or that the text has
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3028
been approved by an organization as the authoritative definition of a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3029
standard.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3030
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3031
     <p>You may add a passage of up to five words as a Front-Cover Text, and a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3032
passage of up to 25 words as a Back-Cover Text, to the end of the list
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3033
of Cover Texts in the Modified Version.  Only one passage of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3034
Front-Cover Text and one of Back-Cover Text may be added by (or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3035
through arrangements made by) any one entity.  If the Document already
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3036
includes a cover text for the same cover, previously added by you or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3037
by arrangement made by the same entity you are acting on behalf of,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3038
you may not add another; but you may replace the old one, on explicit
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3039
permission from the previous publisher that added the old one.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3040
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3041
     <p>The author(s) and publisher(s) of the Document do not by this License
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3042
give permission to use their names for publicity for or to assert or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3043
imply endorsement of any Modified Version.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3044
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3045
     <li>COMBINING DOCUMENTS
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3046
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3047
     <p>You may combine the Document with other documents released under this
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3048
License, under the terms defined in section 4 above for modified
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3049
versions, provided that you include in the combination all of the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3050
Invariant Sections of all of the original documents, unmodified, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3051
list them all as Invariant Sections of your combined work in its
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3052
license notice, and that you preserve all their Warranty Disclaimers.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3053
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3054
     <p>The combined work need only contain one copy of this License, and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3055
multiple identical Invariant Sections may be replaced with a single
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3056
copy.  If there are multiple Invariant Sections with the same name but
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3057
different contents, make the title of each such section unique by
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3058
adding at the end of it, in parentheses, the name of the original
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3059
author or publisher of that section if known, or else a unique number. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3060
Make the same adjustment to the section titles in the list of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3061
Invariant Sections in the license notice of the combined work.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3062
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3063
     <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3064
in the various original documents, forming one section Entitled
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3065
&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3066
and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3067
sections Entitled &ldquo;Endorsements.&rdquo;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3068
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3069
     <li>COLLECTIONS OF DOCUMENTS
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3070
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3071
     <p>You may make a collection consisting of the Document and other documents
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3072
released under this License, and replace the individual copies of this
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3073
License in the various documents with a single copy that is included in
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3074
the collection, provided that you follow the rules of this License for
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3075
verbatim copying of each of the documents in all other respects.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3076
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3077
     <p>You may extract a single document from such a collection, and distribute
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3078
it individually under this License, provided you insert a copy of this
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3079
License into the extracted document, and follow this License in all
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3080
other respects regarding verbatim copying of that document.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3081
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3082
     <li>AGGREGATION WITH INDEPENDENT WORKS
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3083
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3084
     <p>A compilation of the Document or its derivatives with other separate
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3085
and independent documents or works, in or on a volume of a storage or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3086
distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3087
resulting from the compilation is not used to limit the legal rights
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3088
of the compilation's users beyond what the individual works permit. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3089
When the Document is included in an aggregate, this License does not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3090
apply to the other works in the aggregate which are not themselves
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3091
derivative works of the Document.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3092
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3093
     <p>If the Cover Text requirement of section 3 is applicable to these
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3094
copies of the Document, then if the Document is less than one half of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3095
the entire aggregate, the Document's Cover Texts may be placed on
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3096
covers that bracket the Document within the aggregate, or the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3097
electronic equivalent of covers if the Document is in electronic form. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3098
Otherwise they must appear on printed covers that bracket the whole
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3099
aggregate.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3100
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3101
     <li>TRANSLATION
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3102
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3103
     <p>Translation is considered a kind of modification, so you may
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3104
distribute translations of the Document under the terms of section 4. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3105
Replacing Invariant Sections with translations requires special
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3106
permission from their copyright holders, but you may include
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3107
translations of some or all Invariant Sections in addition to the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3108
original versions of these Invariant Sections.  You may include a
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3109
translation of this License, and all the license notices in the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3110
Document, and any Warranty Disclaimers, provided that you also include
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3111
the original English version of this License and the original versions
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3112
of those notices and disclaimers.  In case of a disagreement between
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3113
the translation and the original version of this License or a notice
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3114
or disclaimer, the original version will prevail.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3115
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3116
     <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3117
&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3118
its Title (section 1) will typically require changing the actual
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3119
title.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3120
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3121
     <li>TERMINATION
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3122
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3123
     <p>You may not copy, modify, sublicense, or distribute the Document except
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3124
as expressly provided for under this License.  Any other attempt to
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3125
copy, modify, sublicense or distribute the Document is void, and will
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3126
automatically terminate your rights under this License.  However,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3127
parties who have received copies, or rights, from you under this
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3128
License will not have their licenses terminated so long as such
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3129
parties remain in full compliance.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3130
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3131
     <li>FUTURE REVISIONS OF THIS LICENSE
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3132
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3133
     <p>The Free Software Foundation may publish new, revised versions
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3134
of the GNU Free Documentation License from time to time.  Such new
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3135
versions will be similar in spirit to the present version, but may
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3136
differ in detail to address new problems or concerns.  See
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3137
<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3138
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3139
     <p>Each version of the License is given a distinguishing version number. 
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3140
If the Document specifies that a particular numbered version of this
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3141
License &ldquo;or any later version&rdquo; applies to it, you have the option of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3142
following the terms and conditions either of that specified version or
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3143
of any later version that has been published (not as a draft) by the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3144
Free Software Foundation.  If the Document does not specify a version
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3145
number of this License, you may choose any version ever published (not
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3146
as a draft) by the Free Software Foundation.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3147
        </ol>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3148
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3149
<!-- MPFR tweak: Use @appendixsec -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3150
<!-- @appendixsubsec ADDENDUM: How to use this License for your documents -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3151
<h3 class="appendixsec">A.1 ADDENDUM: How to use this License for your documents</h3>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3152
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3153
<p>To use this License in a document you have written, include a copy of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3154
the License in the document and put the following copyright and
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3155
license notices just after the title page:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3156
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3157
<pre class="smallexample">       Copyright (C)  <var>year</var>  <var>your name</var>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3158
       Permission is granted to copy, distribute and/or modify this document
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3159
       under the terms of the GNU Free Documentation License, Version 1.2
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3160
       or any later version published by the Free Software Foundation;
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3161
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3162
       Texts.  A copy of the license is included in the section entitled ``GNU
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3163
       Free Documentation License''.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3164
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3165
   <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3166
replace the &ldquo;with...Texts.&rdquo; line with this:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3167
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3168
<pre class="smallexample">         with the Invariant Sections being <var>list their titles</var>, with
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3169
         the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3170
         being <var>list</var>.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3171
</pre>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3172
   <p>If you have Invariant Sections without Cover Texts, or some other
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3173
combination of the three, merge those two alternatives to suit the
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3174
situation.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3175
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3176
   <p>If your document contains nontrivial examples of program code, we
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3177
recommend releasing these examples in parallel under your choice of
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3178
free software license, such as the GNU General Public License,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3179
to permit their use in free software.
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3180
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3181
<!-- Local Variables: -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3182
<!-- ispell-local-pdict: "ispell-dict" -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3183
<!-- End: -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3184
<div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3185
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3186
<a name="Concept-Index"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3187
Next:&nbsp;<a rel="next" accesskey="n" href="#Function-Index">Function Index</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3188
Previous:&nbsp;<a rel="previous" accesskey="p" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3189
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3190
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3191
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3192
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3193
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3194
<h2 class="unnumbered">Concept Index</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3195
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3196
<ul class="index-cp" compact>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3197
<li><a href="#index-Accuracy-21">Accuracy</a>: <a href="#MPFR-Interface">MPFR Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3198
<li><a href="#index-Advanced-functions-283">Advanced functions</a>: <a href="#Advanced-Functions">Advanced Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3199
<li><a href="#index-Arithmetic-functions-86">Arithmetic functions</a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3200
<li><a href="#index-Assignment-functions-30">Assignment functions</a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3201
<li><a href="#index-Basic-arithmetic-functions-84">Basic arithmetic functions</a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3202
<li><a href="#index-Combined-initialization-and-assignment-functions-51">Combined initialization and assignment functions</a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3203
<li><a href="#index-Comparison-functions-130">Comparison functions</a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3204
<li><a href="#index-Compatibility-with-MPF-288">Compatibility with MPF</a>: <a href="#Compatibility-with-MPF">Compatibility with MPF</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3205
<li><a href="#index-Conditions-for-copying-MPFR-2">Conditions for copying MPFR</a>: <a href="#Copying">Copying</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3206
<li><a href="#index-Conversion-functions-61">Conversion functions</a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3207
<li><a href="#index-Copying-conditions-1">Copying conditions</a>: <a href="#Copying">Copying</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3208
<li><a href="#index-Custom-interface-294">Custom interface</a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3209
<li><a href="#index-Exception-related-functions-256">Exception related functions</a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3210
<li><a href="#index-FDL_002c-GNU-Free-Documentation-License-306">FDL, GNU Free Documentation License</a>: <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3211
<li><a href="#index-Float-arithmetic-functions-85">Float arithmetic functions</a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3212
<li><a href="#index-Float-comparisons-functions-129">Float comparisons functions</a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3213
<li><a href="#index-Float-functions-19">Float functions</a>: <a href="#MPFR-Interface">MPFR Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3214
<li><a href="#index-Float-input-and-output-functions-208">Float input and output functions</a>: <a href="#Input-and-Output-Functions">Input and Output Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3215
<li><a href="#index-Floating_002dpoint-functions-18">Floating-point functions</a>: <a href="#MPFR-Interface">MPFR Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3216
<li><a href="#index-Floating_002dpoint-number-11">Floating-point number</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3217
<li><a href="#index-GNU-Free-Documentation-License-305">GNU Free Documentation License</a>: <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3218
<li><a href="#index-I_002fO-functions-211">I/O functions</a>: <a href="#Input-and-Output-Functions">Input and Output Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3219
<li><a href="#index-Initialization-functions-22">Initialization functions</a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3220
<li><a href="#index-Input-functions-209">Input functions</a>: <a href="#Input-and-Output-Functions">Input and Output Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3221
<li><a href="#index-Installation-3">Installation</a>: <a href="#Installing-MPFR">Installing MPFR</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3222
<li><a href="#index-Integer-related-functions-214">Integer related functions</a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3223
<li><a href="#index-Internals-302">Internals</a>: <a href="#Internals">Internals</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3224
<li><a href="#index-g_t_0040code_007blibmpfr_007d-9"><code>libmpfr</code></a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3225
<li><a href="#index-Libraries-7">Libraries</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3226
<li><a href="#index-Libtool-10">Libtool</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3227
<li><a href="#index-Limb-17">Limb</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3228
<li><a href="#index-Linking-8">Linking</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3229
<li><a href="#index-Miscellaneous-float-functions-228">Miscellaneous float functions</a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3230
<li><a href="#index-g_t_0040file_007bmpfr_002eh_007d-5"><samp><span class="file">mpfr.h</span></samp></a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3231
<li><a href="#index-Output-functions-210">Output functions</a>: <a href="#Input-and-Output-Functions">Input and Output Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3232
<li><a href="#index-Precision-20">Precision</a>: <a href="#MPFR-Interface">MPFR Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3233
<li><a href="#index-Precision-13">Precision</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3234
<li><a href="#index-Reporting-bugs-4">Reporting bugs</a>: <a href="#Reporting-Bugs">Reporting Bugs</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3235
<li><a href="#index-Rounding-mode-related-functions-250">Rounding mode related functions</a>: <a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3236
<li><a href="#index-Rounding-Modes-15">Rounding Modes</a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3237
<li><a href="#index-Special-functions-154">Special functions</a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3238
<li><a href="#index-g_t_0040code_007bstdio_002eh_007d-6"><code>stdio.h</code></a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3239
</ul><div class="node">
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3240
<p><hr>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3241
<a name="Function-Index"></a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3242
Previous:&nbsp;<a rel="previous" accesskey="p" href="#Concept-Index">Concept Index</a>,
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3243
Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3244
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3245
</div>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3246
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3247
<!-- node-name,  next,  previous,  up -->
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3248
<h2 class="unnumbered">Function and Type Index</h2>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3249
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3250
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3251
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3252
<ul class="index-fn" compact>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3253
<li><a href="#index-g_t_0040code_007bmp_005fprec_005ft_007d-14"><code>mp_prec_t</code></a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3254
<li><a href="#index-g_t_0040code_007bmp_005frnd_005ft_007d-16"><code>mp_rnd_t</code></a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3255
<li><a href="#index-mpfr_005fabs-123"><code>mpfr_abs</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3256
<li><a href="#index-mpfr_005facos-168"><code>mpfr_acos</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3257
<li><a href="#index-mpfr_005facosh-178"><code>mpfr_acosh</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3258
<li><a href="#index-mpfr_005fadd-87"><code>mpfr_add</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3259
<li><a href="#index-mpfr_005fadd_005fq-91"><code>mpfr_add_q</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3260
<li><a href="#index-mpfr_005fadd_005fsi-89"><code>mpfr_add_si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3261
<li><a href="#index-mpfr_005fadd_005fui-88"><code>mpfr_add_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3262
<li><a href="#index-mpfr_005fadd_005fz-90"><code>mpfr_add_z</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3263
<li><a href="#index-mpfr_005fagm-200"><code>mpfr_agm</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3264
<li><a href="#index-mpfr_005fasin-169"><code>mpfr_asin</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3265
<li><a href="#index-mpfr_005fasinh-179"><code>mpfr_asinh</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3266
<li><a href="#index-mpfr_005fatan-170"><code>mpfr_atan</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3267
<li><a href="#index-mpfr_005fatan2-171"><code>mpfr_atan2</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3268
<li><a href="#index-mpfr_005fatanh-180"><code>mpfr_atanh</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3269
<li><a href="#index-mpfr_005fcan_005fround-303"><code>mpfr_can_round</code></a>: <a href="#Internals">Internals</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3270
<li><a href="#index-mpfr_005fcbrt-114"><code>mpfr_cbrt</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3271
<li><a href="#index-mpfr_005fceil-216"><code>mpfr_ceil</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3272
<li><a href="#index-mpfr_005fcheck_005frange-265"><code>mpfr_check_range</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3273
<li><a href="#index-mpfr_005fclear-24"><code>mpfr_clear</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3274
<li><a href="#index-mpfr_005fclear_005ferangeflag-271"><code>mpfr_clear_erangeflag</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3275
<li><a href="#index-mpfr_005fclear_005fflags-277"><code>mpfr_clear_flags</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3276
<li><a href="#index-mpfr_005fclear_005finexflag-270"><code>mpfr_clear_inexflag</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3277
<li><a href="#index-mpfr_005fclear_005fnanflag-269"><code>mpfr_clear_nanflag</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3278
<li><a href="#index-mpfr_005fclear_005foverflow-268"><code>mpfr_clear_overflow</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3279
<li><a href="#index-mpfr_005fclear_005funderflow-267"><code>mpfr_clear_underflow</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3280
<li><a href="#index-mpfr_005fclears-287"><code>mpfr_clears</code></a>: <a href="#Advanced-Functions">Advanced Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3281
<li><a href="#index-mpfr_005fcmp-131"><code>mpfr_cmp</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3282
<li><a href="#index-mpfr_005fcmp_005fd-134"><code>mpfr_cmp_d</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3283
<li><a href="#index-mpfr_005fcmp_005ff-138"><code>mpfr_cmp_f</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3284
<li><a href="#index-mpfr_005fcmp_005fld-135"><code>mpfr_cmp_ld</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3285
<li><a href="#index-mpfr_005fcmp_005fq-137"><code>mpfr_cmp_q</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3286
<li><a href="#index-mpfr_005fcmp_005fsi-133"><code>mpfr_cmp_si</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3287
<li><a href="#index-mpfr_005fcmp_005fsi_005f2exp-140"><code>mpfr_cmp_si_2exp</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3288
<li><a href="#index-mpfr_005fcmp_005fui-132"><code>mpfr_cmp_ui</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3289
<li><a href="#index-mpfr_005fcmp_005fui_005f2exp-139"><code>mpfr_cmp_ui_2exp</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3290
<li><a href="#index-mpfr_005fcmp_005fz-136"><code>mpfr_cmp_z</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3291
<li><a href="#index-mpfr_005fcmpabs-141"><code>mpfr_cmpabs</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3292
<li><a href="#index-mpfr_005fconst_005fcatalan-205"><code>mpfr_const_catalan</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3293
<li><a href="#index-mpfr_005fconst_005feuler-204"><code>mpfr_const_euler</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3294
<li><a href="#index-mpfr_005fconst_005flog2-202"><code>mpfr_const_log2</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3295
<li><a href="#index-mpfr_005fconst_005fpi-203"><code>mpfr_const_pi</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3296
<li><a href="#index-mpfr_005fcopysign-241"><code>mpfr_copysign</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3297
<li><a href="#index-mpfr_005fcos-161"><code>mpfr_cos</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3298
<li><a href="#index-mpfr_005fcosh-172"><code>mpfr_cosh</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3299
<li><a href="#index-mpfr_005fcot-166"><code>mpfr_cot</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3300
<li><a href="#index-mpfr_005fcoth-177"><code>mpfr_coth</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3301
<li><a href="#index-mpfr_005fcsc-165"><code>mpfr_csc</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3302
<li><a href="#index-mpfr_005fcsch-176"><code>mpfr_csch</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3303
<li><a href="#index-mpfr_005fcustom_005fget_005fexp-300"><code>mpfr_custom_get_exp</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3304
<li><a href="#index-mpfr_005fcustom_005fget_005fkind-298"><code>mpfr_custom_get_kind</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3305
<li><a href="#index-mpfr_005fcustom_005fget_005fmantissa-299"><code>mpfr_custom_get_mantissa</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3306
<li><a href="#index-mpfr_005fcustom_005fget_005fsize-295"><code>mpfr_custom_get_size</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3307
<li><a href="#index-mpfr_005fcustom_005finit-296"><code>mpfr_custom_init</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3308
<li><a href="#index-mpfr_005fcustom_005finit_005fset-297"><code>mpfr_custom_init_set</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3309
<li><a href="#index-mpfr_005fcustom_005fmove-301"><code>mpfr_custom_move</code></a>: <a href="#Custom-Interface">Custom Interface</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3310
<li><a href="#index-MPFR_005fDECL_005fINIT-284"><code>MPFR_DECL_INIT</code></a>: <a href="#Advanced-Functions">Advanced Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3311
<li><a href="#index-mpfr_005fdim-124"><code>mpfr_dim</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3312
<li><a href="#index-mpfr_005fdiv-105"><code>mpfr_div</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3313
<li><a href="#index-mpfr_005fdiv_005f2exp-293"><code>mpfr_div_2exp</code></a>: <a href="#Compatibility-with-MPF">Compatibility with MPF</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3314
<li><a href="#index-mpfr_005fdiv_005f2si-128"><code>mpfr_div_2si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3315
<li><a href="#index-mpfr_005fdiv_005f2ui-127"><code>mpfr_div_2ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3316
<li><a href="#index-mpfr_005fdiv_005fq-111"><code>mpfr_div_q</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3317
<li><a href="#index-mpfr_005fdiv_005fsi-109"><code>mpfr_div_si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3318
<li><a href="#index-mpfr_005fdiv_005fui-107"><code>mpfr_div_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3319
<li><a href="#index-mpfr_005fdiv_005fz-110"><code>mpfr_div_z</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3320
<li><a href="#index-mpfr_005feint-184"><code>mpfr_eint</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3321
<li><a href="#index-mpfr_005feq-290"><code>mpfr_eq</code></a>: <a href="#Compatibility-with-MPF">Compatibility with MPF</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3322
<li><a href="#index-mpfr_005fequal_005fp-152"><code>mpfr_equal_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3323
<li><a href="#index-mpfr_005ferangeflag_005fp-282"><code>mpfr_erangeflag_p</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3324
<li><a href="#index-mpfr_005ferf-190"><code>mpfr_erf</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3325
<li><a href="#index-mpfr_005ferfc-191"><code>mpfr_erfc</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3326
<li><a href="#index-mpfr_005fexp-158"><code>mpfr_exp</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3327
<li><a href="#index-mpfr_005fexp10-160"><code>mpfr_exp10</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3328
<li><a href="#index-mpfr_005fexp2-159"><code>mpfr_exp2</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3329
<li><a href="#index-mpfr_005fexpm1-183"><code>mpfr_expm1</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3330
<li><a href="#index-mpfr_005ffac_005fui-181"><code>mpfr_fac_ui</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3331
<li><a href="#index-mpfr_005ffits_005fintmax_005fp-82"><code>mpfr_fits_intmax_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3332
<li><a href="#index-mpfr_005ffits_005fsint_005fp-79"><code>mpfr_fits_sint_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3333
<li><a href="#index-mpfr_005ffits_005fslong_005fp-77"><code>mpfr_fits_slong_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3334
<li><a href="#index-mpfr_005ffits_005fsshort_005fp-81"><code>mpfr_fits_sshort_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3335
<li><a href="#index-mpfr_005ffits_005fuint_005fp-78"><code>mpfr_fits_uint_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3336
<li><a href="#index-mpfr_005ffits_005fuintmax_005fp-83"><code>mpfr_fits_uintmax_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3337
<li><a href="#index-mpfr_005ffits_005fulong_005fp-76"><code>mpfr_fits_ulong_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3338
<li><a href="#index-mpfr_005ffits_005fushort_005fp-80"><code>mpfr_fits_ushort_p</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3339
<li><a href="#index-mpfr_005ffloor-217"><code>mpfr_floor</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3340
<li><a href="#index-mpfr_005ffma-198"><code>mpfr_fma</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3341
<li><a href="#index-mpfr_005ffms-199"><code>mpfr_fms</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3342
<li><a href="#index-mpfr_005ffrac-224"><code>mpfr_frac</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3343
<li><a href="#index-mpfr_005ffree_005fcache-206"><code>mpfr_free_cache</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3344
<li><a href="#index-mpfr_005ffree_005fstr-75"><code>mpfr_free_str</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3345
<li><a href="#index-mpfr_005fgamma-185"><code>mpfr_gamma</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3346
<li><a href="#index-mpfr_005fget_005fd-62"><code>mpfr_get_d</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3347
<li><a href="#index-mpfr_005fget_005fd1-304"><code>mpfr_get_d1</code></a>: <a href="#Internals">Internals</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3348
<li><a href="#index-mpfr_005fget_005fd_005f2exp-65"><code>mpfr_get_d_2exp</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3349
<li><a href="#index-mpfr_005fget_005fdecimal64-64"><code>mpfr_get_decimal64</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3350
<li><a href="#index-mpfr_005fget_005fdefault_005fprec-27"><code>mpfr_get_default_prec</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3351
<li><a href="#index-mpfr_005fget_005fdefault_005frounding_005fmode-252"><code>mpfr_get_default_rounding_mode</code></a>: <a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3352
<li><a href="#index-mpfr_005fget_005femax-258"><code>mpfr_get_emax</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3353
<li><a href="#index-mpfr_005fget_005femax_005fmax-264"><code>mpfr_get_emax_max</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3354
<li><a href="#index-mpfr_005fget_005femax_005fmin-263"><code>mpfr_get_emax_min</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3355
<li><a href="#index-mpfr_005fget_005femin-257"><code>mpfr_get_emin</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3356
<li><a href="#index-mpfr_005fget_005femin_005fmax-262"><code>mpfr_get_emin_max</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3357
<li><a href="#index-mpfr_005fget_005femin_005fmin-261"><code>mpfr_get_emin_min</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3358
<li><a href="#index-mpfr_005fget_005fexp-237"><code>mpfr_get_exp</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3359
<li><a href="#index-mpfr_005fget_005ff-73"><code>mpfr_get_f</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3360
<li><a href="#index-mpfr_005fget_005fld-63"><code>mpfr_get_ld</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3361
<li><a href="#index-mpfr_005fget_005fld_005f2exp-66"><code>mpfr_get_ld_2exp</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3362
<li><a href="#index-mpfr_005fget_005fpatches-249"><code>mpfr_get_patches</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3363
<li><a href="#index-mpfr_005fget_005fprec-29"><code>mpfr_get_prec</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3364
<li><a href="#index-mpfr_005fget_005fsi-67"><code>mpfr_get_si</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3365
<li><a href="#index-mpfr_005fget_005fsj-69"><code>mpfr_get_sj</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3366
<li><a href="#index-mpfr_005fget_005fstr-74"><code>mpfr_get_str</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3367
<li><a href="#index-mpfr_005fget_005fui-68"><code>mpfr_get_ui</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3368
<li><a href="#index-mpfr_005fget_005fuj-70"><code>mpfr_get_uj</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3369
<li><a href="#index-mpfr_005fget_005fversion-242"><code>mpfr_get_version</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3370
<li><a href="#index-mpfr_005fget_005fz-72"><code>mpfr_get_z</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3371
<li><a href="#index-mpfr_005fget_005fz_005fexp-71"><code>mpfr_get_z_exp</code></a>: <a href="#Conversion-Functions">Conversion Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3372
<li><a href="#index-mpfr_005fgreater_005fp-147"><code>mpfr_greater_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3373
<li><a href="#index-mpfr_005fgreaterequal_005fp-148"><code>mpfr_greaterequal_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3374
<li><a href="#index-mpfr_005fhypot-201"><code>mpfr_hypot</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3375
<li><a href="#index-mpfr_005finexflag_005fp-281"><code>mpfr_inexflag_p</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3376
<li><a href="#index-mpfr_005finf_005fp-143"><code>mpfr_inf_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3377
<li><a href="#index-mpfr_005finit-25"><code>mpfr_init</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3378
<li><a href="#index-mpfr_005finit2-23"><code>mpfr_init2</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3379
<li><a href="#index-mpfr_005finit_005fset-52"><code>mpfr_init_set</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3380
<li><a href="#index-mpfr_005finit_005fset_005fd-55"><code>mpfr_init_set_d</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3381
<li><a href="#index-mpfr_005finit_005fset_005ff-59"><code>mpfr_init_set_f</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3382
<li><a href="#index-mpfr_005finit_005fset_005fld-56"><code>mpfr_init_set_ld</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3383
<li><a href="#index-mpfr_005finit_005fset_005fq-58"><code>mpfr_init_set_q</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3384
<li><a href="#index-mpfr_005finit_005fset_005fsi-54"><code>mpfr_init_set_si</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3385
<li><a href="#index-mpfr_005finit_005fset_005fstr-60"><code>mpfr_init_set_str</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3386
<li><a href="#index-mpfr_005finit_005fset_005fui-53"><code>mpfr_init_set_ui</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3387
<li><a href="#index-mpfr_005finit_005fset_005fz-57"><code>mpfr_init_set_z</code></a>: <a href="#Combined-Initialization-and-Assignment-Functions">Combined Initialization and Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3388
<li><a href="#index-mpfr_005finits-285"><code>mpfr_inits</code></a>: <a href="#Advanced-Functions">Advanced Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3389
<li><a href="#index-mpfr_005finits2-286"><code>mpfr_inits2</code></a>: <a href="#Advanced-Functions">Advanced Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3390
<li><a href="#index-mpfr_005finp_005fstr-213"><code>mpfr_inp_str</code></a>: <a href="#Input-and-Output-Functions">Input and Output Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3391
<li><a href="#index-mpfr_005finteger_005fp-227"><code>mpfr_integer_p</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3392
<li><a href="#index-mpfr_005fj0-192"><code>mpfr_j0</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3393
<li><a href="#index-mpfr_005fj1-193"><code>mpfr_j1</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3394
<li><a href="#index-mpfr_005fjn-194"><code>mpfr_jn</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3395
<li><a href="#index-mpfr_005fless_005fp-149"><code>mpfr_less_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3396
<li><a href="#index-mpfr_005flessequal_005fp-150"><code>mpfr_lessequal_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3397
<li><a href="#index-mpfr_005flessgreater_005fp-151"><code>mpfr_lessgreater_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3398
<li><a href="#index-mpfr_005flgamma-187"><code>mpfr_lgamma</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3399
<li><a href="#index-mpfr_005flngamma-186"><code>mpfr_lngamma</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3400
<li><a href="#index-mpfr_005flog-155"><code>mpfr_log</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3401
<li><a href="#index-mpfr_005flog10-157"><code>mpfr_log10</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3402
<li><a href="#index-mpfr_005flog1p-182"><code>mpfr_log1p</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3403
<li><a href="#index-mpfr_005flog2-156"><code>mpfr_log2</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3404
<li><a href="#index-mpfr_005fmax-233"><code>mpfr_max</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3405
<li><a href="#index-mpfr_005fmin-232"><code>mpfr_min</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3406
<li><a href="#index-mpfr_005fmul-99"><code>mpfr_mul</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3407
<li><a href="#index-mpfr_005fmul_005f2exp-292"><code>mpfr_mul_2exp</code></a>: <a href="#Compatibility-with-MPF">Compatibility with MPF</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3408
<li><a href="#index-mpfr_005fmul_005f2si-126"><code>mpfr_mul_2si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3409
<li><a href="#index-mpfr_005fmul_005f2ui-125"><code>mpfr_mul_2ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3410
<li><a href="#index-mpfr_005fmul_005fq-103"><code>mpfr_mul_q</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3411
<li><a href="#index-mpfr_005fmul_005fsi-101"><code>mpfr_mul_si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3412
<li><a href="#index-mpfr_005fmul_005fui-100"><code>mpfr_mul_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3413
<li><a href="#index-mpfr_005fmul_005fz-102"><code>mpfr_mul_z</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3414
<li><a href="#index-mpfr_005fnan_005fp-142"><code>mpfr_nan_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3415
<li><a href="#index-mpfr_005fnanflag_005fp-280"><code>mpfr_nanflag_p</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3416
<li><a href="#index-mpfr_005fneg-122"><code>mpfr_neg</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3417
<li><a href="#index-mpfr_005fnextabove-230"><code>mpfr_nextabove</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3418
<li><a href="#index-mpfr_005fnextbelow-231"><code>mpfr_nextbelow</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3419
<li><a href="#index-mpfr_005fnexttoward-229"><code>mpfr_nexttoward</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3420
<li><a href="#index-mpfr_005fnumber_005fp-144"><code>mpfr_number_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3421
<li><a href="#index-mpfr_005fout_005fstr-212"><code>mpfr_out_str</code></a>: <a href="#Input-and-Output-Functions">Input and Output Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3422
<li><a href="#index-mpfr_005foverflow_005fp-279"><code>mpfr_overflow_p</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3423
<li><a href="#index-mpfr_005fpow-116"><code>mpfr_pow</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3424
<li><a href="#index-mpfr_005fpow_005fsi-118"><code>mpfr_pow_si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3425
<li><a href="#index-mpfr_005fpow_005fui-117"><code>mpfr_pow_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3426
<li><a href="#index-mpfr_005fpow_005fz-119"><code>mpfr_pow_z</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3427
<li><a href="#index-mpfr_005fprec_005fround-253"><code>mpfr_prec_round</code></a>: <a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3428
<li><a href="#index-mpfr_005fprint_005frnd_005fmode-255"><code>mpfr_print_rnd_mode</code></a>: <a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3429
<li><a href="#index-mpfr_005frandom-235"><code>mpfr_random</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3430
<li><a href="#index-mpfr_005frandom2-236"><code>mpfr_random2</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3431
<li><a href="#index-mpfr_005freldiff-291"><code>mpfr_reldiff</code></a>: <a href="#Compatibility-with-MPF">Compatibility with MPF</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3432
<li><a href="#index-mpfr_005fremainder-225"><code>mpfr_remainder</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3433
<li><a href="#index-mpfr_005fremquo-226"><code>mpfr_remquo</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3434
<li><a href="#index-mpfr_005frint-215"><code>mpfr_rint</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3435
<li><a href="#index-mpfr_005frint_005fceil-220"><code>mpfr_rint_ceil</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3436
<li><a href="#index-mpfr_005frint_005ffloor-221"><code>mpfr_rint_floor</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3437
<li><a href="#index-mpfr_005frint_005fround-222"><code>mpfr_rint_round</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3438
<li><a href="#index-mpfr_005frint_005ftrunc-223"><code>mpfr_rint_trunc</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3439
<li><a href="#index-mpfr_005froot-115"><code>mpfr_root</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3440
<li><a href="#index-mpfr_005fround-218"><code>mpfr_round</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3441
<li><a href="#index-mpfr_005fround_005fprec-254"><code>mpfr_round_prec</code></a>: <a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3442
<li><a href="#index-mpfr_005fsec-164"><code>mpfr_sec</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3443
<li><a href="#index-mpfr_005fsech-175"><code>mpfr_sech</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3444
<li><a href="#index-mpfr_005fset-31"><code>mpfr_set</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3445
<li><a href="#index-mpfr_005fset_005fd-36"><code>mpfr_set_d</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3446
<li><a href="#index-mpfr_005fset_005fdecimal64-38"><code>mpfr_set_decimal64</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3447
<li><a href="#index-mpfr_005fset_005fdefault_005fprec-26"><code>mpfr_set_default_prec</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3448
<li><a href="#index-mpfr_005fset_005fdefault_005frounding_005fmode-251"><code>mpfr_set_default_rounding_mode</code></a>: <a href="#Rounding-Mode-Related-Functions">Rounding Mode Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3449
<li><a href="#index-mpfr_005fset_005femax-260"><code>mpfr_set_emax</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3450
<li><a href="#index-mpfr_005fset_005femin-259"><code>mpfr_set_emin</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3451
<li><a href="#index-mpfr_005fset_005ferangeflag-276"><code>mpfr_set_erangeflag</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3452
<li><a href="#index-mpfr_005fset_005fexp-238"><code>mpfr_set_exp</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3453
<li><a href="#index-mpfr_005fset_005ff-41"><code>mpfr_set_f</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3454
<li><a href="#index-mpfr_005fset_005finexflag-275"><code>mpfr_set_inexflag</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3455
<li><a href="#index-mpfr_005fset_005finf-48"><code>mpfr_set_inf</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3456
<li><a href="#index-mpfr_005fset_005fld-37"><code>mpfr_set_ld</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3457
<li><a href="#index-mpfr_005fset_005fnan-49"><code>mpfr_set_nan</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3458
<li><a href="#index-mpfr_005fset_005fnanflag-274"><code>mpfr_set_nanflag</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3459
<li><a href="#index-mpfr_005fset_005foverflow-273"><code>mpfr_set_overflow</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3460
<li><a href="#index-mpfr_005fset_005fprec-28"><code>mpfr_set_prec</code></a>: <a href="#Initialization-Functions">Initialization Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3461
<li><a href="#index-mpfr_005fset_005fprec_005fraw-289"><code>mpfr_set_prec_raw</code></a>: <a href="#Compatibility-with-MPF">Compatibility with MPF</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3462
<li><a href="#index-mpfr_005fset_005fq-40"><code>mpfr_set_q</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3463
<li><a href="#index-mpfr_005fset_005fsi-33"><code>mpfr_set_si</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3464
<li><a href="#index-mpfr_005fset_005fsi_005f2exp-43"><code>mpfr_set_si_2exp</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3465
<li><a href="#index-mpfr_005fset_005fsj-35"><code>mpfr_set_sj</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3466
<li><a href="#index-mpfr_005fset_005fsj_005f2exp-45"><code>mpfr_set_sj_2exp</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3467
<li><a href="#index-mpfr_005fset_005fstr-46"><code>mpfr_set_str</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3468
<li><a href="#index-mpfr_005fset_005fui-32"><code>mpfr_set_ui</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3469
<li><a href="#index-mpfr_005fset_005fui_005f2exp-42"><code>mpfr_set_ui_2exp</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3470
<li><a href="#index-mpfr_005fset_005fuj-34"><code>mpfr_set_uj</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3471
<li><a href="#index-mpfr_005fset_005fuj_005f2exp-44"><code>mpfr_set_uj_2exp</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3472
<li><a href="#index-mpfr_005fset_005funderflow-272"><code>mpfr_set_underflow</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3473
<li><a href="#index-mpfr_005fset_005fz-39"><code>mpfr_set_z</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3474
<li><a href="#index-mpfr_005fsetsign-240"><code>mpfr_setsign</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3475
<li><a href="#index-mpfr_005fsgn-146"><code>mpfr_sgn</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3476
<li><a href="#index-mpfr_005fsi_005fdiv-108"><code>mpfr_si_div</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3477
<li><a href="#index-mpfr_005fsi_005fsub-95"><code>mpfr_si_sub</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3478
<li><a href="#index-mpfr_005fsignbit-239"><code>mpfr_signbit</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3479
<li><a href="#index-mpfr_005fsin-162"><code>mpfr_sin</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3480
<li><a href="#index-mpfr_005fsin_005fcos-167"><code>mpfr_sin_cos</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3481
<li><a href="#index-mpfr_005fsinh-173"><code>mpfr_sinh</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3482
<li><a href="#index-mpfr_005fsqr-104"><code>mpfr_sqr</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3483
<li><a href="#index-mpfr_005fsqrt-112"><code>mpfr_sqrt</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3484
<li><a href="#index-mpfr_005fsqrt_005fui-113"><code>mpfr_sqrt_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3485
<li><a href="#index-mpfr_005fstrtofr-47"><code>mpfr_strtofr</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3486
<li><a href="#index-mpfr_005fsub-92"><code>mpfr_sub</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3487
<li><a href="#index-mpfr_005fsub_005fq-98"><code>mpfr_sub_q</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3488
<li><a href="#index-mpfr_005fsub_005fsi-96"><code>mpfr_sub_si</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3489
<li><a href="#index-mpfr_005fsub_005fui-94"><code>mpfr_sub_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3490
<li><a href="#index-mpfr_005fsub_005fz-97"><code>mpfr_sub_z</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3491
<li><a href="#index-mpfr_005fsubnormalize-266"><code>mpfr_subnormalize</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3492
<li><a href="#index-mpfr_005fsum-207"><code>mpfr_sum</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3493
<li><a href="#index-mpfr_005fswap-50"><code>mpfr_swap</code></a>: <a href="#Assignment-Functions">Assignment Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3494
<li><a href="#index-g_t_0040code_007bmpfr_005ft_007d-12"><code>mpfr_t</code></a>: <a href="#MPFR-Basics">MPFR Basics</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3495
<li><a href="#index-mpfr_005ftan-163"><code>mpfr_tan</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3496
<li><a href="#index-mpfr_005ftanh-174"><code>mpfr_tanh</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3497
<li><a href="#index-mpfr_005ftrunc-219"><code>mpfr_trunc</code></a>: <a href="#Integer-Related-Functions">Integer Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3498
<li><a href="#index-mpfr_005fui_005fdiv-106"><code>mpfr_ui_div</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3499
<li><a href="#index-mpfr_005fui_005fpow-121"><code>mpfr_ui_pow</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3500
<li><a href="#index-mpfr_005fui_005fpow_005fui-120"><code>mpfr_ui_pow_ui</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3501
<li><a href="#index-mpfr_005fui_005fsub-93"><code>mpfr_ui_sub</code></a>: <a href="#Basic-Arithmetic-Functions">Basic Arithmetic Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3502
<li><a href="#index-mpfr_005funderflow_005fp-278"><code>mpfr_underflow_p</code></a>: <a href="#Exception-Related-Functions">Exception Related Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3503
<li><a href="#index-mpfr_005funordered_005fp-153"><code>mpfr_unordered_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3504
<li><a href="#index-mpfr_005furandomb-234"><code>mpfr_urandomb</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3505
<li><a href="#index-MPFR_005fVERSION-243"><code>MPFR_VERSION</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3506
<li><a href="#index-MPFR_005fVERSION_005fMAJOR-244"><code>MPFR_VERSION_MAJOR</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3507
<li><a href="#index-MPFR_005fVERSION_005fMINOR-245"><code>MPFR_VERSION_MINOR</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3508
<li><a href="#index-MPFR_005fVERSION_005fNUM-248"><code>MPFR_VERSION_NUM</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3509
<li><a href="#index-MPFR_005fVERSION_005fPATCHLEVEL-246"><code>MPFR_VERSION_PATCHLEVEL</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3510
<li><a href="#index-MPFR_005fVERSION_005fSTRING-247"><code>MPFR_VERSION_STRING</code></a>: <a href="#Miscellaneous-Functions">Miscellaneous Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3511
<li><a href="#index-mpfr_005fy0-195"><code>mpfr_y0</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3512
<li><a href="#index-mpfr_005fy1-196"><code>mpfr_y1</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3513
<li><a href="#index-mpfr_005fyn-197"><code>mpfr_yn</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3514
<li><a href="#index-mpfr_005fzero_005fp-145"><code>mpfr_zero_p</code></a>: <a href="#Comparison-Functions">Comparison Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3515
<li><a href="#index-mpfr_005fzeta-188"><code>mpfr_zeta</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3516
<li><a href="#index-mpfr_005fzeta_005fui-189"><code>mpfr_zeta_ui</code></a>: <a href="#Special-Functions">Special Functions</a></li>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3517
   </ul></body></html>
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3518
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3519
<!--
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3520

22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3521
Local Variables:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3522
coding: iso-8859-1
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3523
End:
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3524
22d9e175d379 7041521 GNU MP to Userland
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
  3525
-->