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"><</span><span class="keyword">unsigned</span><span class="special">>(~</span><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">>(</span><span class="number">0</span><span class="special">)</span> <span class="special">&</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"><</span><span class="keyword">double</span><span class="special">>()</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