• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>History</title>
5<link rel="stylesheet" href="../../multiprecision.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
8<link rel="up" href="../map.html" title="Roadmap">
9<link rel="prev" href="../map.html" title="Roadmap">
10<link rel="next" href="todo.html" title="TODO">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../map.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="boost_multiprecision.map.hist"></a><a class="link" href="hist.html" title="History">History</a>
28</h3></div></div></div>
29<h5>
30<a name="boost_multiprecision.map.hist.h0"></a>
31        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_2_4_boost_1_73"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_2_4_boost_1_73">Multiprecision-3.2.4
32        (Boost-1.73)</a>
33      </h5>
34<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
35<li class="listitem">
36            IMPORTANT: Mark C++03 support as deprecated and due for removal in 2021.
37          </li>
38<li class="listitem">
39            Big update to <a class="link" href="../tut/ints/cpp_int.html" title="cpp_int">cpp_int</a>
40            adds faster Karatsuba and Coomba multiplication routines.
41          </li>
42<li class="listitem">
43            Fix conversion of <a class="link" href="../tut/rational/gmp_rational.html" title="gmp_rational">gmp_rational</a>
44            to <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
45            and <code class="computeroutput"><span class="identifier">__float128</span></code>, fixes
46            <a href="https://github.com/boostorg/multiprecision/issues/178" target="_top">#178</a>.
47          </li>
48<li class="listitem">
49            Fix up libtommath support to function with the latest libtom releases.
50          </li>
51<li class="listitem">
52            Fix up some incompatibilities with the latest Intel C++ compiler.
53          </li>
54<li class="listitem">
55            Fix up <code class="computeroutput"><span class="keyword">constexpr</span></code> arithmetic
56            support for forthcoming MSVC release.
57          </li>
58</ul></div>
59<h5>
60<a name="boost_multiprecision.map.hist.h1"></a>
61        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_2_3_boost_1_72"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_2_3_boost_1_72">Multiprecision-3.2.3
62        (Boost-1.72)</a>
63      </h5>
64<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
65            Big <code class="computeroutput"><span class="keyword">constexpr</span></code> update allows
66            <a class="link" href="../tut/ints/cpp_int.html" title="cpp_int">cpp_int</a>
67            and <a class="link" href="../tut/floats/float128.html" title="float128">float128</a>
68            arithmetic to be fully <code class="computeroutput"><span class="keyword">constexpr</span></code>
69            with gcc and clang 9 or later, or any compiler supporting <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_constant_evaluated</span><span class="special">()</span></code>.
70          </li></ul></div>
71<h5>
72<a name="boost_multiprecision.map.hist.h2"></a>
73        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_1_3_boost_1_71"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_1_3_boost_1_71">Multiprecision-3.1.3
74        (Boost-1.71)</a>
75      </h5>
76<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
77<li class="listitem">
78            Support hexfloat io-formatting for float128.
79          </li>
80<li class="listitem">
81            Fix various bugs in variable precision interconversions.
82          </li>
83<li class="listitem">
84            Respect uppercase for '0x' prefix outputs.
85          </li>
86<li class="listitem">
87            Incorporate some unit tests from the Etherium project.
88          </li>
89<li class="listitem">
90            Fix some gcc warnings.
91          </li>
92</ul></div>
93<h5>
94<a name="boost_multiprecision.map.hist.h3"></a>
95        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_1_2_boost_1_70"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_1_2_boost_1_70">Multiprecision-3.1.2
96        (Boost-1.70)</a>
97      </h5>
98<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
99<li class="listitem">
100            Fix various conversion issues in the traits classes, check for compatibility
101            with Boost.Optional.
102          </li>
103<li class="listitem">
104            Prevent instantiation of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
105            on any old type when checking for convertibility. See <a href="https://github.com/boostorg/multiprecision/issues/98" target="_top">#98</a>.
106          </li>
107<li class="listitem">
108            Update variable precision code to accound for arbitrary precision integers.
109            See <a href="https://github.com/boostorg/multiprecision/issues/103" target="_top">#103</a>.
110          </li>
111<li class="listitem">
112            Add support for XML serialization archives.
113          </li>
114<li class="listitem">
115            Fix bug in fixed precision iostream formatting in <code class="computeroutput"><span class="identifier">mpf_float</span></code>
116            and <code class="computeroutput"><span class="identifier">mpfr_float</span></code>. See
117            <a href="https://github.com/boostorg/multiprecision/issues/113" target="_top">#113</a>.
118          </li>
119<li class="listitem">
120            Add more overloads for special functions which are better handled natively
121            by MPFR.
122          </li>
123<li class="listitem">
124            Fixed bug in generic <code class="computeroutput"><span class="identifier">exp</span></code>
125            implementation which could cause invariant failure.
126          </li>
127<li class="listitem">
128            Fixed generic conversion from float to integer to avoid undefined behaviour.
129            See <a href="https://github.com/boostorg/multiprecision/issues/110" target="_top">#110</a>.
130          </li>
131</ul></div>
132<h5>
133<a name="boost_multiprecision.map.hist.h4"></a>
134        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_1_1_boost_1_69"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_1_1_boost_1_69">Multiprecision-3.1.1
135        (Boost-1.69)</a>
136      </h5>
137<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
138<li class="listitem">
139            Big update to better support variable precision types so that the precision
140            of the result is always the largest of all the arguments.
141          </li>
142<li class="listitem">
143            Add support for allocators that are <code class="computeroutput"><span class="identifier">final</span></code>
144            in <a class="link" href="../tut/ints/cpp_int.html" title="cpp_int">cpp_int</a>.
145          </li>
146<li class="listitem">
147            Removed use of deprecated Boost.Endian in favour of Predef.
148          </li>
149<li class="listitem">
150            Add support for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span></code>.
151          </li>
152<li class="listitem">
153            Fixed minor bug in constant initialization. See <a href="https://github.com/boostorg/multiprecision/issues/67" target="_top">#67</a>.
154          </li>
155<li class="listitem">
156            Make assignment of non-finite value to <code class="computeroutput"><span class="identifier">cpp_int</span></code>
157            a runtime errors. See <a href="https://github.com/boostorg/multiprecision/issues/58" target="_top">#58</a>.
158          </li>
159<li class="listitem">
160            Added typedefs for <code class="computeroutput"><span class="identifier">cpp_bin_float_oct</span></code>
161            and <code class="computeroutput"><span class="identifier">cpp_complex_oct</span></code>.
162          </li>
163</ul></div>
164<h5>
165<a name="boost_multiprecision.map.hist.h5"></a>
166        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_1_0_boost_1_68"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_1_0_boost_1_68">Multiprecision-3.1.0
167        (Boost-1.68)</a>
168      </h5>
169<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
170<li class="listitem">
171            Support added for complex multiprecision numbers.
172          </li>
173<li class="listitem">
174            Changed conversion to unsigned integer types to be truncating to match
175            standard defined behaviour.
176          </li>
177<li class="listitem">
178            Correct bug in MPFR string formatting.
179          </li>
180<li class="listitem">
181            Fix undefined behaviour in cpp_dec_float conversion from long long.
182          </li>
183<li class="listitem">
184            Add support for Eigen interoperability.
185          </li>
186<li class="listitem">
187            float128.hpp: Fix Intel on Windows build.
188          </li>
189<li class="listitem">
190            Fix type used in temporaries when expanding expression templates containing
191            mixed expressions.
192          </li>
193<li class="listitem">
194            Fix infinite loop in gmp_float to fixed-point string conversion.
195          </li>
196<li class="listitem">
197            Update the expression templates to issue static_asserts with better error
198            messages when you try and do something unsupported.
199          </li>
200<li class="listitem">
201            Fix bug in cpp_int where incrementing to zero doesn't set the sign correctly.
202          </li>
203<li class="listitem">
204            Remove erroneous use of std::move, and rely on NVRO instead.
205          </li>
206<li class="listitem">
207            Fix up support for changes to MPIR-3.0.
208          </li>
209<li class="listitem">
210            Fix various conversion errors in cpp_bin_float when the exponent type
211            is a <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>,
212            or else we're converting to an integer that is wider than we are.
213          </li>
214<li class="listitem">
215            Fix compatibility issue with GCC-8 caused by the introduction of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">byte</span></code>.
216          </li>
217</ul></div>
218<h5>
219<a name="boost_multiprecision.map.hist.h6"></a>
220        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_3_0_0_boost_1_67"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_3_0_0_boost_1_67">Multiprecision-3.0.0
221        (Boost-1.67)</a>
222      </h5>
223<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
224<li class="listitem">
225            <span class="bold"><strong>Breaking Change:</strong></span> When converting a multiprecision
226            integer to a narrower type, if the value is too large (or negative) to
227            fit in the smaller type, then the result is either the maximum (or minimum)
228            value of the target type. This was always the intended behaviour, but
229            was somewhat haphazardly enforced before. If you really do want just
230            the low order N bits of a value, then you will need to mask these out
231            prior to the case, for example: <code class="computeroutput"><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">&gt;(~</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">my_value</span><span class="special">)</span></code>.
232            Note that technically (to avoid undefined behaviour) you should do the
233            same thing with <a href="https://en.cppreference.com/w/cpp/language/types" target="_top">fundamental
234            (built-in)</a> integer types too. See <a href="https://svn.boost.org/trac/boost/ticket/13109" target="_top">#13109</a>.
235          </li>
236<li class="listitem">
237            Fix bug in conversion of decimal to rational types (zero needs special
238            handling), see <a href="https://svn.boost.org/trac/boost/ticket/13148" target="_top">#13148</a>.
239          </li>
240<li class="listitem">
241            Fix conversion from cpp_bin_float to a wider <a href="https://en.cppreference.com/w/cpp/language/types" target="_top">fundamental
242            (built-in)</a> integer type, see <a href="https://svn.boost.org/trac/boost/ticket/13301" target="_top">#13301</a>.
243          </li>
244<li class="listitem">
245            Improve performance heurists used in cpp_bin_float exp function.
246          </li>
247<li class="listitem">
248            Fix bug in floor/ceil and cpp_bin_float when the exponent type is wider
249            than an int, see <a href="https://svn.boost.org/trac/boost/ticket/13264" target="_top">#13264</a>.
250          </li>
251<li class="listitem">
252            Disable explicit conversion operator when the target type is already
253            constructible from this type, see <a href="https://github.com/boostorg/multiprecision/issues/30" target="_top">#30</a>.
254          </li>
255<li class="listitem">
256            Fix support for changes new to MPIR-3.0, see <a href="https://svn.boost.org/trac/boost/ticket/13124" target="_top">#13124</a>.
257          </li>
258</ul></div>
259<h5>
260<a name="boost_multiprecision.map.hist.h7"></a>
261        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_3_2_boost_1_65"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_3_2_boost_1_65">Multiprecision-2.3.2
262        (Boost-1.65)</a>
263      </h5>
264<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
265<li class="listitem">
266            Updated expression templates to store arithmetic literals directly in
267            the expression template to prevent dangling references, see <a href="https://github.com/boostorg/multiprecision/issues/19" target="_top">#19</a>.
268          </li>
269<li class="listitem">
270            Fix various issues with huge values and overflow in the trig, pow and
271            exp functions, see <a href="https://github.com/boostorg/multiprecision/issues/24" target="_top">#24</a>.
272          </li>
273<li class="listitem">
274            Fix error handling of checked cpp_int multiply that could cause some
275            overflows to be missed.
276          </li>
277</ul></div>
278<h5>
279<a name="boost_multiprecision.map.hist.h8"></a>
280        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_3_1_boost_1_64"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_3_1_boost_1_64">Multiprecision-2.3.1
281        (Boost-1.64)</a>
282      </h5>
283<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
284<li class="listitem">
285            In <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code> prevent
286            double rounding when converting to a denormalized float. See <a href="https://svn.boost.org/trac/boost/ticket/12527" target="_top">#12527</a>.
287          </li>
288<li class="listitem">
289            Fix bug in integer sqrt for very small integers. See <a href="https://svn.boost.org/trac/boost/ticket/12559" target="_top">#12559</a>.
290          </li>
291<li class="listitem">
292            Fix conversion to signed-zero in <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>.
293          </li>
294<li class="listitem">
295            Change <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
296            rounding code to round at arbitrary location so we can use it for conversions,
297            see <a href="https://svn.boost.org/trac/boost/ticket/12527" target="_top">#12527</a>.
298          </li>
299<li class="listitem">
300            Improve performance of 128-bit bit-scan operations.
301          </li>
302<li class="listitem">
303            Fix subtraction of very small quantities in <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>.
304            See: <a href="https://svn.boost.org/trac/boost/ticket/12580" target="_top">#12580</a>.
305          </li>
306<li class="listitem">
307            Bring error handling into line with C99 Annex F. See <a href="https://svn.boost.org/trac/boost/ticket/12581" target="_top">#12581</a>.
308          </li>
309<li class="listitem">
310            Fix bitwise export of trivial <code class="computeroutput"><span class="identifier">cpp_int</span></code>'s,
311            see <a href="https://svn.boost.org/trac/boost/ticket/12627" target="_top">#12627</a>.
312          </li>
313<li class="listitem">
314            Fix <code class="computeroutput"><span class="identifier">ilogb</span></code> (and code that
315            uses it) to consistently return the smallest value of the exponent type
316            when the argument is zero, see <a href="https://svn.boost.org/trac/boost/ticket/12625" target="_top">#12625</a>.
317          </li>
318<li class="listitem">
319            Allow conversion from <code class="computeroutput"><a class="link" href="../tut/floats/float128.html" title="float128">float128</a></code>
320            to <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>.
321          </li>
322<li class="listitem">
323            Fix bug in left shift of <code class="computeroutput"><span class="identifier">cpp_int</span></code>
324            which would result in bit-loss, see <a href="https://svn.boost.org/trac/boost/ticket/12790" target="_top">#12790</a>.
325          </li>
326<li class="listitem">
327            Fixed bugs in bounded but variable precision <code class="computeroutput"><span class="identifier">cpp_int</span></code>'s
328            caused by over-aggressive constexpr optimization, see <a href="https://svn.boost.org/trac/boost/ticket/12798" target="_top">#12798</a>.
329          </li>
330</ul></div>
331<h5>
332<a name="boost_multiprecision.map.hist.h9"></a>
333        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_3_0_boost_1_63"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_3_0_boost_1_63">Multiprecision-2.3.0
334        (Boost-1.63)</a>
335      </h5>
336<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
337<li class="listitem">
338            Added support for all the C99 math functions.
339          </li>
340<li class="listitem">
341            Extended generic-interconversions to handle narrowing cases as well,
342            changed convert_to member function and hence explicit conversion operators
343            to use the same conversion code as the explicit constructors.
344          </li>
345<li class="listitem">
346            Fix IO stream parsing error, see <a href="https://svn.boost.org/trac/boost/ticket/12488" target="_top">#12488</a>.
347          </li>
348<li class="listitem">
349            Make default constructed floating point types all zero for consistency,
350            see <a href="https://svn.boost.org/trac/boost/ticket/12500" target="_top">#12500</a>.
351          </li>
352<li class="listitem">
353            Fix conversion of cpp_bin_float to float/double/long double when the
354            exponent value would overflow an int, see <a href="https://svn.boost.org/trac/boost/ticket/12512" target="_top">#12512</a>.
355          </li>
356<li class="listitem">
357            Fix cpp_bin_float subtractions that yield signed-zeros, see <a href="https://svn.boost.org/trac/boost/ticket/12524" target="_top">#12524</a>.
358          </li>
359<li class="listitem">
360            Fix ceil/trunc/round applied to cpp_bin_float and yielding a signed zero,
361            see <a href="https://svn.boost.org/trac/boost/ticket/12525" target="_top">#12525</a>.
362          </li>
363</ul></div>
364<h5>
365<a name="boost_multiprecision.map.hist.h10"></a>
366        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_8_boost_1_62"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_8_boost_1_62">Multiprecision-2.2.8
367        (Boost-1.62)</a>
368      </h5>
369<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
370<li class="listitem">
371            Added support for hashing via <code class="computeroutput"><span class="identifier">Boost</span><span class="special">.</span><span class="identifier">Hash</span></code>
372            or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">hash</span></code>.
373          </li>
374<li class="listitem">
375            Fixed some arithmetic operations in cpp_bin_float and cpp_dec_float that
376            should generate a NaN, see <a href="https://svn.boost.org/trac/boost/ticket/12157" target="_top">#12157</a>.
377          </li>
378<li class="listitem">
379            Prevent inadvertant instantiation of variable-precision <code class="computeroutput"><span class="identifier">mpfr_float_backend</span></code> with fixed allocation.
380          </li>
381<li class="listitem">
382            Fixed division over/underflow in cpp_bin_float, see <a href="https://svn.boost.org/trac/boost/ticket/12167" target="_top">#12167</a>.
383          </li>
384<li class="listitem">
385            Added support for signed-zeros throughout the library, including support
386            for <code class="computeroutput"><span class="identifier">signbit</span></code> and <code class="computeroutput"><span class="identifier">copysign</span></code>, mpfr, float128, and cpp_bin_float
387            types should now respect signed-zeros correctly.
388          </li>
389<li class="listitem">
390            Fixed bug in conversion of cpp_bin_float infinities to double etc, see
391            <a href="https://svn.boost.org/trac/boost/ticket/12196" target="_top">#12196</a>.
392          </li>
393<li class="listitem">
394            Fix add and subtract of cpp_bin_float when the exponents would overflow.,
395            see <a href="https://svn.boost.org/trac/boost/ticket/12198" target="_top">#12198</a>.
396          </li>
397<li class="listitem">
398            Improve variable-precision support in mpfr and mpf backends, allow these
399            types to be used with Boost.Math.
400          </li>
401<li class="listitem">
402            Fixed bug in subtraction of signed infinities in cpp_bin_float, see
403            <a href="https://svn.boost.org/trac/boost/ticket/12209" target="_top">#12209</a>.
404          </li>
405<li class="listitem">
406            Fix result of sqrt(infinity) in cpp_bin_float (result should be infinity),
407            see <a href="https://svn.boost.org/trac/boost/ticket/12227" target="_top">#12227</a>.
408          </li>
409<li class="listitem">
410            Added workaround in gmp.hpp for recent MPIR releases which are not quite
411            source-compatible with GMP on Windows x64.
412          </li>
413<li class="listitem">
414            Allow <code class="computeroutput"><span class="identifier">cpp_int</span></code> code to
415            be used with /RTCc with MSVC.
416          </li>
417<li class="listitem">
418            Fix conversion of <code class="computeroutput"><span class="identifier">cpp_int</span></code>
419            to signed integer when the result is INT_MIN, see <a href="https://svn.boost.org/trac/boost/ticket/12343" target="_top">#12343</a>.
420          </li>
421<li class="listitem">
422            Update uBlas support to match latest uBlas code.
423          </li>
424<li class="listitem">
425            Fix some errors present when building on big-endian machines (not all
426            <code class="computeroutput"><span class="identifier">cpp_int</span></code> constructors
427            are available on non-little-endian machines).
428          </li>
429<li class="listitem">
430            Fix fencepost error in rational to float conversion routines, see <a href="https://svn.boost.org/trac/boost/ticket/12327" target="_top">#12327</a>.
431          </li>
432<li class="listitem">
433            Fix some Oracle C++ compiler compatibility issues.
434          </li>
435<li class="listitem">
436            Add modf support to complete C90 compatibility.
437          </li>
438<li class="listitem">
439            Fix self assignment bug in expression template code for expressions such
440            as <code class="computeroutput"><span class="identifier">a</span> <span class="special">=</span>
441            <span class="identifier">a</span> <span class="special">*</span>
442            <span class="identifier">a</span> <span class="special">*</span>
443            <span class="identifier">a</span></code>, see <a href="https://svn.boost.org/trac/boost/ticket/12408" target="_top">#12408</a>.
444          </li>
445<li class="listitem">
446            Fixed some compiler errors that occur when converting from <code class="computeroutput"><span class="identifier">cpp_int</span></code> to <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>.
447          </li>
448</ul></div>
449<h5>
450<a name="boost_multiprecision.map.hist.h11"></a>
451        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_7_boost_1_61"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_7_boost_1_61">Multiprecision-2.2.7
452        (Boost-1.61)</a>
453      </h5>
454<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
455<li class="listitem">
456            Fixed bug in stream input for integer types, see <a href="https://svn.boost.org/trac/boost/ticket/11857" target="_top">#11857</a>.
457          </li>
458<li class="listitem">
459            Fixed some ambiguous conversions involving expression templates see
460            <a href="https://svn.boost.org/trac/boost/ticket/11922" target="_top">#11922</a>.
461          </li>
462<li class="listitem">
463            Add expression template aware min/max overloads see <a href="https://svn.boost.org/trac/boost/ticket/11149" target="_top">#11149</a>.
464          </li>
465<li class="listitem">
466            Fix bug in right shifting negative small integers in cpp_int see <a href="https://svn.boost.org/trac/boost/ticket/11999" target="_top">#11999</a>.
467          </li>
468<li class="listitem">
469            Use memmove for bitshifts in cpp_int when possible see <a href="https://svn.boost.org/trac/boost/ticket/9233" target="_top">#9233</a>.
470          </li>
471<li class="listitem">
472            Use memcpy for data import into cpp_int where possible, see <a href="https://svn.boost.org/trac/boost/ticket/9235" target="_top">#9235</a>.
473          </li>
474<li class="listitem">
475            Changed <code class="computeroutput"><span class="identifier">cpp_bin_float</span><span class="special">.</span><span class="identifier">convert_to</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;()</span></code> to a function template rather than
476            proceding via <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
477            to avoid double-rounding bug, see <a href="https://svn.boost.org/trac/boost/ticket/12039" target="_top">#12039</a>.
478          </li>
479<li class="listitem">
480            Fixed conversions from NaNs and Infinities, see <a href="https://svn.boost.org/trac/boost/ticket/12112" target="_top">#12112</a>.
481          </li>
482<li class="listitem">
483            Enabled better support for Clang on Windows.
484          </li>
485<li class="listitem">
486            Fixed handling of NaNs and Infinities in basic arithmetic for cpp_dec_float
487            and cpp_bin_float, see <a href="https://svn.boost.org/trac/boost/ticket/12090" target="_top">#12090</a>.
488          </li>
489<li class="listitem">
490            Fixed fencepost error in cpp_bin_float subtraction.
491          </li>
492<li class="listitem">
493            Fixed double-rounding in conversion to float routines for cpp_bin_float,
494            see <a href="https://svn.boost.org/trac/boost/ticket/12039" target="_top">#12039</a>.
495          </li>
496<li class="listitem">
497            Make float128 denorm aware, see <a href="https://svn.boost.org/trac/boost/ticket/12075" target="_top">#12075</a>.
498          </li>
499<li class="listitem">
500            Allow the library and tests to be used without exception handling support,
501            see <a href="https://svn.boost.org/trac/boost/ticket/12070" target="_top">#12070</a>.
502          </li>
503<li class="listitem">
504            Fixed buggy comparison operator overloads for boost::rational.
505          </li>
506<li class="listitem">
507            Added some workarounds for Oracle C++.
508          </li>
509<li class="listitem">
510            Fixed some missing typecasts for cases where cpp_int's limb_type is wider
511            than unsigned.
512          </li>
513</ul></div>
514<h5>
515<a name="boost_multiprecision.map.hist.h12"></a>
516        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_6_boost_1_60"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_6_boost_1_60">Multiprecision-2.2.6
517        (Boost-1.60)</a>
518      </h5>
519<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
520<li class="listitem">
521            Fixed result of Miller Rabin primality test for value 2, see <a href="https://svn.boost.org/trac/boost/ticket/11495" target="_top">#11495</a>.
522          </li>
523<li class="listitem">
524            Improved initialization of cpp_int from very large strings of hex or
525            octal digits, see <a href="https://svn.boost.org/trac/boost/ticket/11590" target="_top">#11590</a>.
526          </li>
527<li class="listitem">
528            Fixed fmod behaviour for negative divisors, see <a href="https://svn.boost.org/trac/boost/ticket/11641" target="_top">#11641</a>.
529          </li>
530<li class="listitem">
531            Fixed infinite division loop in cpp_int special case, see <a href="https://svn.boost.org/trac/boost/ticket/11648" target="_top">#11648</a>.
532          </li>
533<li class="listitem">
534            Patched missing return statement in <a href="https://svn.boost.org/trac/boost/ticket/11762" target="_top">#11762</a>.
535          </li>
536<li class="listitem">
537            Fixed mixed mode arithmetic compiler error in <a href="https://svn.boost.org/trac/boost/ticket/11764" target="_top">#11764</a>.
538          </li>
539<li class="listitem">
540            Fixed over-aggressive use of noexcept in <a href="https://svn.boost.org/trac/boost/ticket/11826" target="_top">#11826</a>.
541          </li>
542</ul></div>
543<h5>
544<a name="boost_multiprecision.map.hist.h13"></a>
545        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_5_boost_1_59"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_5_boost_1_59">Multiprecision-2.2.5
546        (Boost-1.59)</a>
547      </h5>
548<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
549<li class="listitem">
550            Depricated boost/multiprecision/random.hpp as it's no longer needed,
551            updated random examples to match.
552          </li>
553<li class="listitem">
554            Fixed a bug in <code class="computeroutput"><span class="identifier">cpp_int</span></code>
555            right shift operator when shifting negative values - semantics now gives
556            the same values as shifting 2's compliment integers, though not the same
557            bit pattern.
558          </li>
559<li class="listitem">
560            Fixed support for GCC-4.6.4 in C++0x mode by disabling conditional noexcept
561            suppoprt for that compiler see <a href="https://svn.boost.org/trac/boost/ticket/11402" target="_top">#11402</a>.
562          </li>
563<li class="listitem">
564            Suppressed numerous compiler warnings.
565          </li>
566</ul></div>
567<h5>
568<a name="boost_multiprecision.map.hist.h14"></a>
569        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_4_boost_1_58"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_4_boost_1_58">Multiprecision-2.2.4
570        (Boost-1.58)</a>
571      </h5>
572<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
573<li class="listitem">
574            Changed <code class="computeroutput"><span class="identifier">frexp</span></code> to always
575            be non-expression template generating, see: <a href="https://svn.boost.org/trac/boost/ticket/10993" target="_top">10993</a>.
576          </li>
577<li class="listitem">
578            Improved support of cpp_dec_float on Cygwin and other platforms with
579            missing long double support, see <a href="https://svn.boost.org/trac/boost/ticket/10924" target="_top">10924</a>.
580          </li>
581<li class="listitem">
582            Improved noexcept support and added some more tests, see <a href="https://svn.boost.org/trac/boost/ticket/10990" target="_top">10990</a>.
583          </li>
584<li class="listitem">
585            Various workarounds applied for Intel-15.0 and Solaris-12.4 compilers.
586          </li>
587</ul></div>
588<h5>
589<a name="boost_multiprecision.map.hist.h15"></a>
590        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_3_boost_1_57"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_3_boost_1_57">Multiprecision-2.2.3
591        (Boost-1.57)</a>
592      </h5>
593<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
594<li class="listitem">
595            Changed rational to float conversions to exactly round to nearest, see
596            <a href="https://svn.boost.org/trac/boost/ticket/10085" target="_top">10085</a>.
597          </li>
598<li class="listitem">
599            Added improved generic float to rational conversions.
600          </li>
601<li class="listitem">
602            Fixed rare bug in exponent function for <a class="link" href="../tut/floats/cpp_bin_float.html" title="cpp_bin_float">cpp_bin_float</a>.
603          </li>
604<li class="listitem">
605            Fixed various minor documentation issues.
606          </li>
607</ul></div>
608<h5>
609<a name="boost_multiprecision.map.hist.h16"></a>
610        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_2_boost_1_56"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_2_boost_1_56">Multiprecision-2.2.2
611        (Boost-1.56)</a>
612      </h5>
613<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
614<li class="listitem">
615            Change floating-point to rational conversions to be implicit, see <a href="https://svn.boost.org/trac/boost/ticket/10082" target="_top">10082</a>.
616          </li>
617<li class="listitem">
618            Fix definition of checked_cpp_rational typedef.
619          </li>
620</ul></div>
621<h5>
622<a name="boost_multiprecision.map.hist.h17"></a>
623        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_1"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_1">Multiprecision-2.2.1</a>
624      </h5>
625<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
626            Fix bug in assignment from string in cpp_int, see <a href="https://svn.boost.org/trac/boost/ticket/9936" target="_top">9936</a>.
627          </li></ul></div>
628<h5>
629<a name="boost_multiprecision.map.hist.h18"></a>
630        <span class="phrase"><a name="boost_multiprecision.map.hist.multiprecision_2_2_0"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.multiprecision_2_2_0">Multiprecision-2.2.0</a>
631      </h5>
632<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
633<li class="listitem">
634            Moved to Boost.Multiprecision specific version number - we have one breaking
635            change in Boost-1.54 which makes this major version 2, plus two releases
636            with new features since then.
637          </li>
638<li class="listitem">
639            Added new <a class="link" href="../tut/floats/cpp_bin_float.html" title="cpp_bin_float">cpp_bin_float</a>
640            backend for binary floating-point.
641          </li>
642<li class="listitem">
643            Added MSVC-specific #include for compiler intrinsics, see <a href="https://svn.boost.org/trac/boost/ticket/9336" target="_top">9336</a>.
644          </li>
645<li class="listitem">
646            Fixed various typos in docs, see <a href="https://svn.boost.org/trac/boost/ticket/9432" target="_top">9432</a>.
647          </li>
648<li class="listitem">
649            Fixed <a class="link" href="../tut/rational/gmp_rational.html" title="gmp_rational">gmp_rational</a>
650            to allow move-copy from an already copied-from object, see <a href="https://svn.boost.org/trac/boost/ticket/9497" target="_top">9497</a>.
651          </li>
652<li class="listitem">
653            Added list of values for numeric_limits.
654          </li>
655</ul></div>
656<h5>
657<a name="boost_multiprecision.map.hist.h19"></a>
658        <span class="phrase"><a name="boost_multiprecision.map.hist.boost_1_55"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.boost_1_55">Boost-1.55</a>
659      </h5>
660<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
661<li class="listitem">
662            Added support for Boost.Serialization.
663          </li>
664<li class="listitem">
665            Suppressed some GCC warnings. See <a href="https://svn.boost.org/trac/boost/ticket/8872" target="_top">8872</a>.
666          </li>
667<li class="listitem">
668            Fixed bug in pow for large integer arguments. See <a href="https://svn.boost.org/trac/boost/ticket/8809" target="_top">8809</a>.
669          </li>
670<li class="listitem">
671            Fixed bug in pow for calculation of 0<sup>N</sup>. See <a href="https://svn.boost.org/trac/boost/ticket/8798" target="_top">8798</a>.
672          </li>
673<li class="listitem">
674            Fixed bug in fixed precision cpp_int IO code that causes conversion to
675            string to fail when the bit count is very small (less than CHAR_BIT).
676            See <a href="https://svn.boost.org/trac/boost/ticket/8745" target="_top">8745</a>.
677          </li>
678<li class="listitem">
679            Fixed bug in cpp_int that causes left shift to fail when a fixed precision
680            type would overflow. See <a href="https://svn.boost.org/trac/boost/ticket/8741" target="_top">8741</a>.
681          </li>
682<li class="listitem">
683            Fixed some cosmetic warnings from cpp_int. See <a href="https://svn.boost.org/trac/boost/ticket/8748" target="_top">8748</a>.
684          </li>
685<li class="listitem">
686            Fixed calls to functions which are required to be macros in C99. See
687            <a href="https://svn.boost.org/trac/boost/ticket/8732" target="_top">8732</a>.
688          </li>
689<li class="listitem">
690            Fixed bug that causes construction from INT_MIN, LONG_MIN etc to fail
691            in cpp_int. See <a href="https://svn.boost.org/trac/boost/ticket/8711" target="_top">8711</a>.
692          </li>
693</ul></div>
694<h5>
695<a name="boost_multiprecision.map.hist.h20"></a>
696        <span class="phrase"><a name="boost_multiprecision.map.hist.1_54"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_54">1.54</a>
697      </h5>
698<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
699<li class="listitem">
700            <span class="bold"><strong>Breaking change</strong></span> renamed <code class="computeroutput"><span class="identifier">rational_adapter</span></code> to <code class="computeroutput"><span class="identifier">rational_adaptor</span></code>.
701          </li>
702<li class="listitem">
703            Add support for <a href="http://perso.ens-lyon.fr/nathalie.revol/software.html" target="_top">MPFI</a>.
704          </li>
705<li class="listitem">
706            Add logged_adaptor.
707          </li>
708<li class="listitem">
709            Add support for 128-bit floats via GCC's <code class="computeroutput"><span class="identifier">__float128</span></code>
710            or Intel's <code class="computeroutput"><span class="identifier">_Quad</span></code> data
711            types.
712          </li>
713<li class="listitem">
714            Add support for user-defined literals in cpp_int, improve <code class="computeroutput"><span class="keyword">constexpr</span></code> support.
715          </li>
716<li class="listitem">
717            Fixed bug in integer division of <code class="computeroutput"><span class="identifier">cpp_int</span></code>
718            that results in incorrect sign of <code class="computeroutput"><span class="identifier">cpp_int</span></code>
719            when both arguments are small enough to fit in a <code class="computeroutput"><span class="identifier">double_limb_type</span></code>.
720            See <a href="https://svn.boost.org/trac/boost/ticket/8126" target="_top">8126</a>.
721          </li>
722<li class="listitem">
723            Fixed bug in subtraction of a single limb in <code class="computeroutput"><span class="identifier">cpp_int</span></code>
724            that results in incorrect value when the result should have a 0 in the
725            last limb: <a href="https://svn.boost.org/trac/boost/ticket/8133" target="_top">8133</a>.
726          </li>
727<li class="listitem">
728            Fixed bug in <code class="computeroutput"><span class="identifier">cpp_int</span></code>
729            where division of 0 by something doesn't get zero in the result: <a href="https://svn.boost.org/trac/boost/ticket/8160" target="_top">8160</a>.
730          </li>
731<li class="listitem">
732            Fixed bug in some transcendental functions that caused incorrect return
733            values when variables are reused, for example with <code class="computeroutput"><span class="identifier">a</span>
734            <span class="special">=</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></code>. See <a href="https://svn.boost.org/trac/boost/ticket/8326" target="_top">8326</a>.
735          </li>
736<li class="listitem">
737            Fixed some assignment operations in the mpfr and gmp backends to be safe
738            if the target has been moved from: <a href="https://svn.boost.org/trac/boost/ticket/8326" target="_top">8667</a>.
739          </li>
740<li class="listitem">
741            Fixed bug in <code class="computeroutput"><span class="identifier">cpp_int</span></code>
742            that gives incorrect answer for 0%N for large N: <a href="https://svn.boost.org/trac/boost/ticket/8670" target="_top">8670</a>.
743          </li>
744<li class="listitem">
745            Fixed set_precision in mpfr backend so it doesn't trample over an existing
746            value: <a href="https://svn.boost.org/trac/boost/ticket/8692" target="_top">8692</a>.
747          </li>
748</ul></div>
749<h5>
750<a name="boost_multiprecision.map.hist.h21"></a>
751        <span class="phrase"><a name="boost_multiprecision.map.hist.1_53"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_53">1.53</a>
752      </h5>
753<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
754<li class="listitem">
755            First Release.
756          </li>
757<li class="listitem">
758            Fix bug in <a href="https://svn.boost.org/trac/boost/ticket/7878" target="_top">cpp_int
759            division</a>.
760          </li>
761<li class="listitem">
762            Fix issue <a href="https://svn.boost.org/trac/boost/ticket/7806" target="_top">#7806</a>.
763          </li>
764</ul></div>
765<h5>
766<a name="boost_multiprecision.map.hist.h22"></a>
767        <span class="phrase"><a name="boost_multiprecision.map.hist.post_review_changes"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.post_review_changes">Post
768        review changes</a>
769      </h5>
770<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
771<li class="listitem">
772            Non-expression template operators further optimised with rvalue reference
773            support.
774          </li>
775<li class="listitem">
776            Many functions made <code class="computeroutput"><span class="identifier">constexp</span></code>.
777          </li>
778<li class="listitem">
779            Differentiate between explicit and implicit conversions in the number
780            constructor.
781          </li>
782<li class="listitem">
783            Removed "mp_" prefix from types.
784          </li>
785<li class="listitem">
786            Allowed mixed precision arithmetic.
787          </li>
788<li class="listitem">
789            Changed ExpressionTemplates parameter to class <code class="computeroutput"><span class="identifier">number</span></code>
790            to use enumerated values rather than true/false.
791          </li>
792<li class="listitem">
793            Changed ExpressionTemplate parameter default value to use a traits class
794            so that the default value depends on the backend used.
795          </li>
796<li class="listitem">
797            Added support for fused-multiply-add/subtract with GMP support.
798          </li>
799<li class="listitem">
800            Tweaked expression template unpacking to use fewer temporaries when the
801            LHS also appears in the RHS.
802          </li>
803<li class="listitem">
804            Refactored <code class="computeroutput"><span class="identifier">cpp_int_backend</span></code>
805            based on review comments with new template parameter structure.
806          </li>
807<li class="listitem">
808            Added additional template parameter to <code class="computeroutput"><span class="identifier">mpfr_float_backend</span></code>
809            to allow stack-based allocation.
810          </li>
811<li class="listitem">
812            Added section on mixed precision arithmetic, and added support for operations
813            yielding a higher precision result than either of the arguments.
814          </li>
815<li class="listitem">
816            Added overloads of integer-specific functions for <a href="https://en.cppreference.com/w/cpp/language/types" target="_top">fundamental
817            (built-in)</a> integer types.
818          </li>
819</ul></div>
820<h5>
821<a name="boost_multiprecision.map.hist.h23"></a>
822        <span class="phrase"><a name="boost_multiprecision.map.hist.pre_review_history"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.pre_review_history">Pre-review
823        history</a>
824      </h5>
825<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
826<li class="listitem">
827            2011-2012, John Maddock adds an expression template enabled front-end
828            to Christopher's code, and adds support for other backends.
829          </li>
830<li class="listitem">
831            2011, Christopher Kormanyos publishes the decimal floating-point code
832            under the Boost Software Licence. The code is published as: <a href="http://doi.acm.org/10.1145/1916461.1916469" target="_top">"Algorithm
833            910: A Portable C++ Multiple-Precision System for Special-Function Calculations"</a>,
834            in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011.
835          </li>
836<li class="listitem">
837            2002-2011, Christopher Kormanyos develops the all C++ decimal arithmetic
838            floating-point code.
839          </li>
840</ul></div>
841</div>
842<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
843<td align="left"></td>
844<td align="right"><div class="copyright-footer">Copyright © 2002-2020 John
845      Maddock and Christopher Kormanyos<p>
846        Distributed under the Boost Software License, Version 1.0. (See accompanying
847        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
848      </p>
849</div></td>
850</tr></table>
851<hr>
852<div class="spirit-nav">
853<a accesskey="p" href="../map.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
854</div>
855</body>
856</html>
857