You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
4.6 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual documents how to install and use the Multiple Precision
Floating-Point Reliable Library, version 3.1.4.
Copyright 1991, 1993-2016 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.2 or any later
version published by the Free Software Foundation; with no Invariant Sections,
with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the
license is included in GNU Free Documentation License. -->
<!-- Created by GNU Texinfo 6.4, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Other Changes (GNU MPFR 3.1.4)</title>
<meta name="description" content="How to install and use GNU MPFR, a library for reliable multiple precision
floating-point arithmetic, version 3.1.4.">
<meta name="keywords" content="Other Changes (GNU MPFR 3.1.4)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="API-Compatibility.html#API-Compatibility" rel="up" title="API Compatibility">
<link href="Contributors.html#Contributors" rel="next" title="Contributors">
<link href="Removed-Functions.html#Removed-Functions" rel="prev" title="Removed Functions">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Other-Changes"></a>
<div class="header">
<p>
Previous: <a href="Removed-Functions.html#Removed-Functions" accesskey="p" rel="prev">Removed Functions</a>, Up: <a href="API-Compatibility.html#API-Compatibility" accesskey="u" rel="up">API Compatibility</a> &nbsp; [<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Other-Changes-1"></a>
<h3 class="section">6.5 Other Changes</h3>
<p>For users of a C++ compiler, the way how the availability of <code>intmax_t</code>
is detected has changed in MPFR 3.0.
In MPFR 2.x, if a macro <code>INTMAX_C</code> or <code>UINTMAX_C</code> was defined
(e.g. when the <code>__STDC_CONSTANT_MACROS</code> macro had been defined
before <code>&lt;stdint.h&gt;</code> or <code>&lt;inttypes.h&gt;</code> has been included),
<code>intmax_t</code> was assumed to be defined.
However this was not always the case (more precisely, <code>intmax_t</code>
can be defined only in the namespace <code>std</code>, as with Boost), so
that compilations could fail.
Thus the check for <code>INTMAX_C</code> or <code>UINTMAX_C</code> is now disabled for
C++ compilers, with the following consequences:
</p>
<ul>
<li> Programs written for MPFR 2.x that need <code>intmax_t</code> may no longer
be compiled against MPFR 3.0: a <code>#define MPFR_USE_INTMAX_T</code> may be
necessary before <samp>mpfr.h</samp> is included.
</li><li> The compilation of programs that work with MPFR 3.0 may fail with
MPFR 2.x due to the problem described above. Workarounds are possible,
such as defining <code>intmax_t</code> and <code>uintmax_t</code> in the global
namespace, though this is not clean.
</li></ul>
<p>The divide-by-zero exception is new in MPFR 3.1. However it should
not introduce incompatible changes for programs that strictly follow
the MPFR API since the exception can only be seen via new functions.
</p>
<p>As of MPFR 3.1, the <samp>mpfr.h</samp> header can be included several times,
while still supporting optional functions (see <a href="Headers-and-Libraries.html#Headers-and-Libraries">Headers and Libraries</a>).
</p>
</body>
</html>