1Changelog 2========= 3 40.26 (2021-09-02) 5----------------- 6 7Fix 8~~~ 9 10- :cpp:class:`~mppp::real128` and :cpp:class:`~mppp::complex128` 11 are now correctly supported on PPC64, if ``__float128`` is available 12 (`#286 <https://github.com/bluescarni/mppp/pull/286>`__). 13 140.25 (2021-08-31) 15----------------- 16 17New 18~~~ 19 20- Add functions to compute the number of digits necessary 21 for round-tripping for :cpp:class:`~mppp::real` and 22 :cpp:class:`~mppp::complex` 23 (`#280 <https://github.com/bluescarni/mppp/pull/280>`__). 24 Requires MPFR>=4.1. 25- Add new interactive notebooks for :cpp:class:`~mppp::real` 26 and :cpp:class:`~mppp::integer` 27 (`#280 <https://github.com/bluescarni/mppp/pull/280>`__). 28 29Fix 30~~~ 31 32- Don't prepend ``::`` when invoking GMP/MPFR/MPC 33 macros. This fixes build failures observed on some 34 platforms 35 (`#283 <https://github.com/bluescarni/mppp/pull/283>`__, 36 `#282 <https://github.com/bluescarni/mppp/pull/282>`__). 37 380.24 (2021-06-26) 39----------------- 40 41New 42~~~ 43 44- The mp++ conda packages are now available for 64-bit 45 ARM and PowerPC architectures. 46- :cpp:class:`~mppp::complex128` now respects the format 47 flags in output streams 48 (`#276 <https://github.com/bluescarni/mppp/pull/276>`__). 49- :cpp:class:`~mppp::complex` now respects the format 50 flags in output streams 51 (`#275 <https://github.com/bluescarni/mppp/pull/275>`__). 52- :cpp:class:`~mppp::real128` now respects the format 53 flags in output streams 54 (`#273 <https://github.com/bluescarni/mppp/pull/273>`__). 55- :cpp:class:`~mppp::real` now respects the format 56 flags in output streams 57 (`#272 <https://github.com/bluescarni/mppp/pull/272>`__). 58- Add polylogarithms for :cpp:class:`~mppp::real` 59 (`#271 <https://github.com/bluescarni/mppp/pull/271>`__). 60- Add the Lambert W functions :math:`W_0` and :math:`W_{-1}` 61 for :cpp:class:`~mppp::real` 62 (`#271 <https://github.com/bluescarni/mppp/pull/271>`__). 63- Interactive notebooks are now available in the documentation 64 (`#270 <https://github.com/bluescarni/mppp/pull/270>`__). 65 66Fix 67~~~ 68 69- Workaround for a failing test with GCC in C++20 mode 70 (`#277 <https://github.com/bluescarni/mppp/pull/277>`__). 71- Workaround for a failing test on 64-bit ARM in release mode 72 (`#274 <https://github.com/bluescarni/mppp/pull/274>`__). 73 740.23 (2021-04-02) 75----------------- 76 77New 78~~~ 79 80- Add a new ``fabs()`` overload for the computation of the 81 absolute value of a :cpp:class:`~mppp::real128` 82 (`#269 <https://github.com/bluescarni/mppp/pull/269>`__). 83 84Changes 85~~~~~~~ 86 87- Remove the ``explicit`` attribute from several generic 88 constructors in the multiprecision classes 89 (`#269 <https://github.com/bluescarni/mppp/pull/269>`__). 90 91Fix 92~~~ 93 94- Disable Boost's autolinking feature in the build system 95 (`#267 <https://github.com/bluescarni/mppp/pull/267>`__). 96 970.22 (2021-01-03) 98----------------- 99 100New 101~~~ 102 103- Add a binary serialisation API for :cpp:class:`~mppp::real` 104 (`#263 <https://github.com/bluescarni/mppp/pull/263>`__). 105- Implement optional support for Boost.serialization for all 106 multiprecision classes 107 (`#262 <https://github.com/bluescarni/mppp/pull/262>`__). 108- Add a header file containing the forward declarations 109 of all the number classes 110 (`#261 <https://github.com/bluescarni/mppp/pull/261>`__). 111- Add a couple of new categorisation functions 112 for :cpp:class:`~mppp::real128` 113 (`#261 <https://github.com/bluescarni/mppp/pull/261>`__). 114- Make ``MPPP_FLOAT128_WITH_LONG_DOUBLE`` a public definition 115 (`#261 <https://github.com/bluescarni/mppp/pull/261>`__). 116 117Changes 118~~~~~~~ 119 120- Change the sphinx theme for the documentation 121 (`#261 <https://github.com/bluescarni/mppp/pull/261>`__). 122- mp++ now requires CMake >= 3.8 when compiling from source 123 (`#261 <https://github.com/bluescarni/mppp/pull/261>`__). 124 125Fix 126~~~ 127 128- Fix build with recent versions of ``clang-tidy`` 129 (`#263 <https://github.com/bluescarni/mppp/pull/263>`__). 130- Various build system/docs fixes and enhancements 131 (`#263 <https://github.com/bluescarni/mppp/pull/263>`__, 132 `#261 <https://github.com/bluescarni/mppp/pull/261>`__). 133- Workaround for a compiler issue with older versions of Clang 134 (`#260 <https://github.com/bluescarni/mppp/pull/260>`__). 135 1360.21 (2020-06-17) 137----------------- 138 139New 140~~~ 141 142- Implement additional special functions for :cpp:class:`~mppp::real` 143 (``log_base_ui()``) 144 (`#256 <https://github.com/bluescarni/mppp/pull/256>`__). 145- Finish exposing the functions from ``libquadmath`` 146 for :cpp:class:`~mppp::real128` 147 (`#255 <https://github.com/bluescarni/mppp/pull/255>`__). 148- Expose more MPFR functions 149 for :cpp:class:`~mppp::real` 150 (`#255 <https://github.com/bluescarni/mppp/pull/255>`__, 151 `#254 <https://github.com/bluescarni/mppp/pull/254>`__). 152- Add a tutorial for :cpp:class:`~mppp::real` 153 (`#252 <https://github.com/bluescarni/mppp/pull/252>`__). 154- Expose all the constants provided by MPFR in the 155 :cpp:class:`~mppp::real` API 156 (`#252 <https://github.com/bluescarni/mppp/pull/252>`__). 157- Add the :cpp:class:`~mppp::integer` LCM primitives 158 (`#247 <https://github.com/bluescarni/mppp/pull/247>`__). 159- Implement additional special functions for :cpp:class:`~mppp::complex` 160 (inverse, reciprocal square root, n-th root, AGM) 161 (`#250 <https://github.com/bluescarni/mppp/pull/250>`__, 162 `#246 <https://github.com/bluescarni/mppp/pull/246>`__). 163- Implement the detection of finite and infinite values 164 for :cpp:class:`~mppp::complex` 165 (`#246 <https://github.com/bluescarni/mppp/pull/246>`__). 166 167Changes 168~~~~~~~ 169 170- Overhaul the benchmark suite and update 171 the benchmark results 172 (`#248 <https://github.com/bluescarni/mppp/pull/248>`__). 173- **BREAKING**: the :cpp:class:`~mppp::complex` 174 ``cmp_abs()`` function has been renamed to 175 ``cmpabs()`` for consistency with 176 :cpp:class:`~mppp::real` 177 (`#246 <https://github.com/bluescarni/mppp/pull/246>`__). 178 179Fix 180~~~ 181 182- Fix the return value of the :cpp:class:`~mppp::real` 183 ``tan_pi()`` and ``cot_pi()`` functions at the poles 184 (`#256 <https://github.com/bluescarni/mppp/pull/256>`__). 185- Implement a workaround for a build issue with Xcode 186 (`#251 <https://github.com/bluescarni/mppp/pull/251>`__). 187 1880.20 (2020-06-03) 189----------------- 190 191New 192~~~ 193 194- mp++ now builds cleanly with ``clang-tidy`` 195 (`#244 <https://github.com/bluescarni/mppp/pull/244>`__). 196- Implement additional three-way comparison functions 197 for :cpp:class:`~mppp::real` 198 (`#243 <https://github.com/bluescarni/mppp/pull/243>`__). 199- Add the :cpp:func:`~mppp::set_ui_2exp()` and :cpp:func:`~mppp::set_si_2exp()` 200 functions for :cpp:class:`~mppp::real`, and implement constructors 201 from an integral multiple of a power of 2 202 (`#242 <https://github.com/bluescarni/mppp/pull/242>`__). 203- The mp++ library can now be built with link-time 204 optimisations enabled 205 (`#240 <https://github.com/bluescarni/mppp/pull/240>`__). 206- Add Bessel functions of real order for 207 :cpp:class:`~mppp::real` 208 (`#238 <https://github.com/bluescarni/mppp/pull/238>`__). 209- Add a move constructor with custom precision 210 for :cpp:class:`~mppp::real` 211 (`#234 <https://github.com/bluescarni/mppp/pull/234>`__). 212- Add support for C++20's ``constinit`` 213 (`#233 <https://github.com/bluescarni/mppp/pull/233>`__). 214- :cpp:class:`~mppp::real` can now interact with 215 ``std::complex`` 216 (`#232 <https://github.com/bluescarni/mppp/pull/232>`__). 217- Add :cpp:class:`~mppp::complex`, a multiprecision 218 complex number class 219 (`#232 <https://github.com/bluescarni/mppp/pull/232>`__). 220- Improve the interoperability between mp++ classes 221 via additional assignment operators 222 (`#229 <https://github.com/bluescarni/mppp/pull/229>`__). 223- mp++ now works with the Intel compiler 224 (`#224 <https://github.com/bluescarni/mppp/pull/224>`__, 225 tested with ``icpc (ICC) 19.1.0.166``). This includes 226 also support for :cpp:class:`~mppp::real128` and 227 :cpp:class:`~mppp::complex128` (with 228 a couple of minor limitations). 229- The interoperability of :cpp:class:`~mppp::real128` with 230 ``long double`` has been improved: it is now supported 231 also on Clang (since version 7) and it does not require 232 mp++ to be configured with the ``MPPP_WITH_MPFR`` 233 option any more 234 (`#222 <https://github.com/bluescarni/mppp/pull/222>`__). 235- :cpp:class:`~mppp::real128` can now interact with 236 ``std::complex`` 237 (`#220 <https://github.com/bluescarni/mppp/pull/220>`__). 238- Add :cpp:class:`~mppp::complex128`, a quadruple-precision 239 complex number class 240 (`#220 <https://github.com/bluescarni/mppp/pull/220>`__). 241- mp++ now officially supports the ARM (``aarch64``) 242 and PowerPC (``ppc64le``) architectures, which have 243 been added to the continuous integration setup 244 (`#219 <https://github.com/bluescarni/mppp/pull/219>`__). 245 246Changes 247~~~~~~~ 248 249- Enable all tests on MinGW 250 (`#237 <https://github.com/bluescarni/mppp/pull/237>`__). 251- Update Catch to the latest version, 2.12.1 252 (`#237 <https://github.com/bluescarni/mppp/pull/237>`__). 253- :cpp:class:`~mppp::real` move operations from 254 :cpp:type:`mpfr_t` have been disabled on MSVC 255 due to compiler issues 256 (`#236 <https://github.com/bluescarni/mppp/pull/236>`__). 257- Improve the implementation of :cpp:class:`~mppp::real` 258 binary operators/functions by using the MPFR primitives 259 more extensively and by handling mixed-precision computations 260 more rigorously when one of the operands in not 261 a :cpp:class:`~mppp::real` 262 (`#230 <https://github.com/bluescarni/mppp/pull/230>`__). 263- For consistency with C++20, mp++'s concepts now 264 use snake case notation. The concept hierarchy has also been 265 simplified and streamlined 266 (`#228 <https://github.com/bluescarni/mppp/pull/228>`__). 267- **BREAKING**: the global precision setting mechanism has been 268 removed from :cpp:class:`~mppp::real`. As a result, 269 the API and behaviour of the :cpp:class:`~mppp::real` 270 class have undergone a few backwards-incompatible changes 271 (`#227 <https://github.com/bluescarni/mppp/pull/227>`__). 272- The documentation is now using sphinx exclusively, 273 doxygen is not involved any more 274 (`#227 <https://github.com/bluescarni/mppp/pull/227>`__, 275 `#225 <https://github.com/bluescarni/mppp/pull/225>`__, 276 `#223 <https://github.com/bluescarni/mppp/pull/223>`__, 277 `#221 <https://github.com/bluescarni/mppp/pull/221>`__). 278- Improve the build system's compatibility with other projects 279 by namespacing variables and imported targets related to 280 mp++'s dependencies 281 (`#226 <https://github.com/bluescarni/mppp/pull/226>`__). 282- Various internal simplifications and improvements 283 to :cpp:class:`~mppp::real128` 284 (`#221 <https://github.com/bluescarni/mppp/pull/221>`__). 285 286Fix 287~~~ 288 289- Implement a workaround for Clang 10 not allowing ``constexpr`` 290 in-place arithmetics for :cpp:type:`__complex128` 291 (`#238 <https://github.com/bluescarni/mppp/pull/238>`__). 292- Fix a bug in the :cpp:class:`~mppp::real128` test suite 293 (`#224 <https://github.com/bluescarni/mppp/pull/224>`__). 294- Various doc fixes 295 (`#220 <https://github.com/bluescarni/mppp/pull/220>`__). 296- Fix a bug in the test suite in 297 release mode 298 (`#219 <https://github.com/bluescarni/mppp/pull/219>`__). 299 3000.19 (2020-02-29) 301----------------- 302 303New 304~~~ 305 306- Implement :cpp:class:`~mppp::real` primitives for exact 307 multiplication/division by powers of 2 308 (`#216 <https://github.com/bluescarni/mppp/pull/216>`__). 309- mp++ can now optionally use `Arb <https://arblib.org/>`__ 310 to provide various additional special functions for 311 :cpp:class:`~mppp::real` 312 (`#215 <https://github.com/bluescarni/mppp/pull/215>`__). 313- Implement squaring for :cpp:class:`~mppp::real` 314 (`#215 <https://github.com/bluescarni/mppp/pull/215>`__). 315- :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational` 316 can now interact with ``std::complex`` 317 (`#214 <https://github.com/bluescarni/mppp/pull/214>`__). 318- mp++'s multiprecision classes now support pretty-printing in the 319 `xeus-cling notebook <https://github.com/jupyter-xeus/xeus-cling>`__ 320 (`#213 <https://github.com/bluescarni/mppp/pull/213>`__). 321- Implement user-defined literals for :cpp:class:`~mppp::rational`, 322 :cpp:class:`~mppp::real128` and :cpp:class:`~mppp::real` 323 (`#213 <https://github.com/bluescarni/mppp/pull/213>`__). 324 325Changes 326~~~~~~~ 327 328- The :cpp:class:`~mppp::real` dilogarithm functions now 329 return NaN if the argument is not less than 1. 330- Move more :cpp:class:`~mppp::real` functions from the 331 header into the compiled library 332 (`#216 <https://github.com/bluescarni/mppp/pull/216>`__). 333- The GCC quadmath library is now a private dependency 334 of the mp++ library 335 (`#215 <https://github.com/bluescarni/mppp/pull/215>`__). 336- The :cpp:class:`~mppp::real128` string representation 337 has been changed to use the ``g`` format specifier 338 (`#213 <https://github.com/bluescarni/mppp/pull/213>`__). 339 340Fix 341~~~ 342 343- Fix a compilation warning with GCC 4.8 344 (`#216 <https://github.com/bluescarni/mppp/pull/216>`__). 345- Fix a couple of :cpp:class:`~mppp::real` functions 346 returning copies rather than references 347 (`#216 <https://github.com/bluescarni/mppp/pull/216>`__). 348- Various build system/doc fixes and improvements 349 (`#214 <https://github.com/bluescarni/mppp/pull/214>`__, 350 `#215 <https://github.com/bluescarni/mppp/pull/215>`__, 351 `#216 <https://github.com/bluescarni/mppp/pull/216>`__). 352- Fix compilation with older Clang versions in C++17 mode 353 (`#213 <https://github.com/bluescarni/mppp/pull/213>`__). 354 3550.18 (2020-02-14) 356----------------- 357 358New 359~~~ 360 361- Add a :cpp:func:`mppp::real::is_valid()` member function 362 to check if a :cpp:class:`~mppp::real` was moved from 363 (`#211 <https://github.com/bluescarni/mppp/pull/211>`__). 364- Implement user-defined literals for :cpp:class:`~mppp::integer` 365 (`#209 <https://github.com/bluescarni/mppp/pull/209>`__). 366- Implement (modular) squaring primitives for :cpp:class:`~mppp::integer` 367 (`#205 <https://github.com/bluescarni/mppp/pull/205>`__). 368- Include mp++'s headers in the project files generated 369 for MSVC (`#199 <https://github.com/bluescarni/mppp/pull/199>`__). 370 Many thanks to `7ofNine <https://github.com/7ofNine>`__! 371 372Changes 373~~~~~~~ 374 375- Update the internal copy of Catch to the latest version, 2.11.1 376 (`#210 <https://github.com/bluescarni/mppp/pull/210>`__). 377- mp++'s public headers do not include 378 the ``quadmath.h`` header any more. This change greatly 379 improves mp++'s compatibility with Clang when the 380 ``MPPP_WITH_QUADMATH`` option is active 381 (`#206 <https://github.com/bluescarni/mppp/pull/206>`__). 382- Continue moving code into the compiled library 383 (`#204 <https://github.com/bluescarni/mppp/pull/204>`__, 384 `#206 <https://github.com/bluescarni/mppp/pull/206>`__). 385- Enable the C++20 concept declaration syntax if GCC >= 9 is 386 being used 387 (`#203 <https://github.com/bluescarni/mppp/pull/203>`__). 388 389Fix 390~~~ 391 392- Various build system and documentation improvements 393 (`#200 <https://github.com/bluescarni/mppp/pull/200>`__, 394 `#202 <https://github.com/bluescarni/mppp/pull/202>`__). 395 3960.17 (2019-09-13) 397----------------- 398 399New 400~~~ 401 402- mp++'s concepts are now compatible with the C++20 403 concepts proposal (`#196 <https://github.com/bluescarni/mppp/pull/196>`__, 404 `#198 <https://github.com/bluescarni/mppp/pull/198>`__). 405 Many thanks to `7ofNine <https://github.com/7ofNine>`__! 406- Expose most of the missing special functions from the MPFR API 407 for :cpp:class:`~mppp::real` 408 (`#190 <https://github.com/bluescarni/mppp/pull/190>`__, 409 `#192 <https://github.com/bluescarni/mppp/pull/192>`__, 410 `#194 <https://github.com/bluescarni/mppp/pull/194>`__). 411 412Changes 413~~~~~~~ 414 415- On MSVC, use the ``WIN32_LEAN_AND_MEAN`` definition 416 (`#198 <https://github.com/bluescarni/mppp/pull/198>`__). 417- Update the internal copy of Catch to the latest version, 2.9.2 418 (`#197 <https://github.com/bluescarni/mppp/pull/197>`__). 419- Drastically reduce the build time of the test suite by separately 420 compiling the Catch main function 421 (`#197 <https://github.com/bluescarni/mppp/pull/197>`__). 422 423Fix 424~~~ 425 426- Workaround a constexpr issue involving :cpp:class:`~mppp::real128` 427 on GCC 9 428 (`#197 <https://github.com/bluescarni/mppp/pull/197>`__). 429- Fix C++17 builds with MSVC 2015 430 (`#191 <https://github.com/bluescarni/mppp/pull/191>`__). 431 4320.16 (2019-05-25) 433----------------- 434 435Fix 436~~~ 437 438- Properly set the version numbers for the mp++ dynamic library 439 (`#187 <https://github.com/bluescarni/mppp/pull/187>`__). 440 4410.15 (2019-05-24) 442----------------- 443 444New 445~~~ 446 447- Expose the hyperbolic functions from the MPFR API 448 for :cpp:class:`~mppp::real` 449 (`#184 <https://github.com/bluescarni/mppp/pull/184>`__). 450- Add the possibility of generating Unicode MSVC solutions 451 (`#183 <https://github.com/bluescarni/mppp/pull/183>`__). 452- Finish exposing all the trigonometric functions from the MPFR API 453 for :cpp:class:`~mppp::real` 454 (`#180 <https://github.com/bluescarni/mppp/pull/180>`__). 455- Add the possibility to build mp++ as a static library 456 (`#176 <https://github.com/bluescarni/mppp/pull/176>`__). 457- Add CircleCI to the continuous integration pipeline 458 (`#173 <https://github.com/bluescarni/mppp/pull/173>`__). 459- Implement the logarithm/exponential functions for :cpp:class:`~mppp::real` 460 (`#172 <https://github.com/bluescarni/mppp/pull/172>`__). 461 462Changes 463~~~~~~~ 464 465- When compiled with MPFR version 4 or later, mp++ now ensures that 466 thread-local and global caches are freed separately at thread exit 467 and program shutdown 468 (`#182 <https://github.com/bluescarni/mppp/pull/182>`__). 469- Update the internal copy of Catch to the latest version, 2.7.2 470 (`#181 <https://github.com/bluescarni/mppp/pull/181>`__). 471- The MPFR cleanup function ``mpfr_free_cache()`` is now called 472 at the end of every thread which creates at least 473 one :cpp:class:`~mppp::real` object 474 (`#180 <https://github.com/bluescarni/mppp/pull/180>`__). 475- Implement a specialised version of the ``swap()`` primitive 476 for :cpp:class:`~mppp::integer` and 477 :cpp:class:`~mppp::rational` (`#174 <https://github.com/bluescarni/mppp/pull/174>`__). 478- Improve the implementation of the less than/greater than operators for 479 :cpp:class:`~mppp::integer`. Together with the ``swap()`` improvements, 480 this change leads to a ~9% decrease in runtime for the 481 ``integer1_sort_signed`` 482 benchmark (`#174 <https://github.com/bluescarni/mppp/pull/174>`__). 483- Continue moving code from the headers into the compiled library (`#170 <https://github.com/bluescarni/mppp/pull/170>`__, 484 `#172 <https://github.com/bluescarni/mppp/pull/172>`__). 485 486Fix 487~~~ 488 489- Fix two race conditions in the testing code 490 (`#181 <https://github.com/bluescarni/mppp/pull/181>`__). 491- The :cpp:class:`~mppp::zero_division_error` exception is now correctly 492 marked as visible 493 (`#180 <https://github.com/bluescarni/mppp/pull/180>`__). 494- Add a workaround for a ``clang-cl`` bug (`#179 <https://github.com/bluescarni/mppp/pull/179>`__). 495- Various build system and documentation improvements (`#172 <https://github.com/bluescarni/mppp/pull/172>`__). 496- Fix a warning when building mp++ with older MSVC versions (`#170 <https://github.com/bluescarni/mppp/pull/170>`__). 497 4980.14 (2019-04-11) 499----------------- 500 501New 502~~~ 503 504- The :cpp:func:`~mppp::type_name()` function is now part of the public API 505 (`#169 <https://github.com/bluescarni/mppp/pull/169>`__). 506- :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational` now respect the format 507 flags in output streams (`#161 <https://github.com/bluescarni/mppp/pull/161>`__). 508 509Changes 510~~~~~~~ 511 512- mp++ does not depend on the DbgHelp library on Windows any more 513 (`#169 <https://github.com/bluescarni/mppp/pull/169>`__). 514- **BREAKING**: mp++ has now a compiled component. In order to use mp++, you will now have to 515 both include the mp++ headers **and** link to the mp++ library 516 (`#169 <https://github.com/bluescarni/mppp/pull/169>`__). 517- Various improvements to the benchmarks (`#166 <https://github.com/bluescarni/mppp/pull/166>`__). 518- **BREAKING**: the input stream operators have been removed from all classes 519 (`#161 <https://github.com/bluescarni/mppp/pull/161>`__). 520 521Fix 522~~~ 523 524- Fix an issue in the build system when compiling the unit tests in release mode with MSVC (`#164 <https://github.com/bluescarni/mppp/pull/164>`__). 525- Fixes for the demangler on OSX when 128-bit integers are involved (`#163 <https://github.com/bluescarni/mppp/pull/163>`__). 526- Fix a build issue on OSX when the compiler is not Xcode (`#161 <https://github.com/bluescarni/mppp/pull/161>`__). 527 5280.13 (2019-03-13) 529----------------- 530 531Changes 532~~~~~~~ 533 534- Update copyright date (`#162 <https://github.com/bluescarni/mppp/pull/162>`__). 535- Add a tutorial for :cpp:class:`~mppp::real128` (`#160 <https://github.com/bluescarni/mppp/pull/160>`__). 536- Various build system improvements (`#159 <https://github.com/bluescarni/mppp/pull/159>`__). 537- Update the internal copy of Catch to the latest version, 2.5.0 (`#158 <https://github.com/bluescarni/mppp/pull/158>`__). 538 539Fix 540~~~ 541 542- Fix a compilation error when using booleans as second arguments in the ``pow()`` and ``binomial()`` overloads of :cpp:class:`~mppp::integer` 543 (`#162 <https://github.com/bluescarni/mppp/pull/162>`__). 544- Work around a compilation error on MSVC when using C++17 (`#162 <https://github.com/bluescarni/mppp/pull/162>`__). 545- Various documentation fixes (`#160 <https://github.com/bluescarni/mppp/pull/160>`__). 546 5470.12 (2018-10-11) 548----------------- 549 550New 551~~~ 552 553- Add a hash function for :cpp:class:`~mppp::real128` (`#157 <https://github.com/bluescarni/mppp/pull/157>`__). 554- Add all the root functions from the GMP API to the :cpp:class:`~mppp::integer` API 555 (`#156 <https://github.com/bluescarni/mppp/pull/156>`__). 556- Add all the root functions from the MPFR API to the :cpp:class:`~mppp::real` API 557 (`#154 <https://github.com/bluescarni/mppp/pull/154>`__). 558- Add a specialisation of ``std::numeric_limits`` for :cpp:class:`~mppp::real128` 559 (`#144 <https://github.com/bluescarni/mppp/pull/144>`__). 560 561Changes 562~~~~~~~ 563 564- Initialising a :cpp:class:`~mppp::real` with an invalid :cpp:type:`~mppp::real_kind` enum value now raises an 565 exception, rather than initialising to NaN (`#153 <https://github.com/bluescarni/mppp/pull/153>`__). 566- Switch to the sphinx material design theme for the documentation (`#153 <https://github.com/bluescarni/mppp/pull/153>`__). 567- Update the internal copy of Catch to the latest version, 2.4.0 (`#152 <https://github.com/bluescarni/mppp/pull/152>`__). 568- Various improvements to the GCD implementation for :cpp:class:`~mppp::integer` 569 (`#150 <https://github.com/bluescarni/mppp/pull/150>`__). 570- The addition/subtraction operators of :cpp:class:`~mppp::integer` now use the low-level :cpp:func:`~mppp::add_ui()`, 571 :cpp:func:`~mppp::add_si()`, :cpp:func:`~mppp::sub_ui()` and :cpp:func:`~mppp::sub_si()` primitives when the other argument is a 572 C++ integral (`#147 <https://github.com/bluescarni/mppp/pull/147>`__). 573- Various documentation additions, improvements and fixes (`#146 <https://github.com/bluescarni/mppp/pull/146>`__, 574 `#148 <https://github.com/bluescarni/mppp/pull/148>`__, `#149 <https://github.com/bluescarni/mppp/pull/149>`__, 575 `#153 <https://github.com/bluescarni/mppp/pull/153>`__, `#155 <https://github.com/bluescarni/mppp/pull/155>`__). 576- **BREAKING**: replace the ``integer_nbits_init`` tag structure with the strongly-typed :cpp:type:`mppp::integer_bitcnt_t` enum 577 (`#145 <https://github.com/bluescarni/mppp/pull/145>`__). 578- Ensure that :cpp:class:`~mppp::real128` is trivially copyable (`#144 <https://github.com/bluescarni/mppp/pull/144>`__). 579 580Fix 581~~~ 582 583- Fix various warnings issued by Clang 7 in the unit tests (`#157 <https://github.com/bluescarni/mppp/pull/157>`__). 584 5850.11 (2018-05-22) 586----------------- 587 588New 589~~~ 590 591- Wrap more functions from the quadmath API in :cpp:class:`~mppp::real128` (`#140 <https://github.com/bluescarni/mppp/pull/140>`__). 592 593Changes 594~~~~~~~ 595 596- The build system should now detect MPIR installations when looking for GMP (`#139 <https://github.com/bluescarni/mppp/pull/139>`__). 597- Update the internal copy of Catch to the latest version, 2.2.2 (`#137 <https://github.com/bluescarni/mppp/pull/137>`__). 598 599Fix 600~~~ 601 602- Fix a couple of missing ``inline`` specifiers in the tests (`#143 <https://github.com/bluescarni/mppp/pull/143>`__). 603- Fix a missing ``noexcept`` in the move constructor of :cpp:class:`~mppp::real128` (`#138 <https://github.com/bluescarni/mppp/pull/138>`__). 604 6050.10 (2018-04-06) 606----------------- 607 608New 609~~~ 610 611- Add a target in the build system to compile and run the benchmarks (`#135 <https://github.com/bluescarni/mppp/pull/135>`__). 612- Extend the :cpp:func:`~mppp::add_ui()` and :cpp:func:`~mppp::sub_ui()` functions to work on all unsigned 613 C++ integral types, and introduce corresponding :cpp:func:`~mppp::add_si()` and :cpp:func:`~mppp::sub_si()` 614 functions for signed C++ integral types (`#131 <https://github.com/bluescarni/mppp/pull/131>`__). 615- Initial version of the rational tutorial (`#130 <https://github.com/bluescarni/mppp/pull/130>`__). 616- The demangler is now aware of cv qualifiers and references (`#129 <https://github.com/bluescarni/mppp/pull/129>`__). 617 618Changes 619~~~~~~~ 620 621- **BREAKING**: the :cpp:func:`~mppp::add_ui()` function now **requires** an unsigned integral as the third argument 622 (previously, the function could be invoked with a signed integral argument thanks to C++'s conversion rules). 623 624Fix 625~~~ 626 627- Fix a test failure on FreeBSD (`#134 <https://github.com/bluescarni/mppp/pull/134>`__). 628- Various small documentation fixes (`#130 <https://github.com/bluescarni/mppp/pull/130>`__, 629 `#135 <https://github.com/bluescarni/mppp/pull/135>`__). 630- Fix demangling failures for 128-bit integers in OSX (`#128 <https://github.com/bluescarni/mppp/pull/128>`__). 631 6320.9 (2018-02-25) 633---------------- 634 635New 636~~~ 637 638- Add a couple of benchmarks against hardware integer types (`#124 <https://github.com/bluescarni/mppp/pull/124>`__). 639 640Changes 641~~~~~~~ 642 643- The :cpp:concept:`mppp::string_type` concept is now satisfied by cv qualified types as well 644 (`#127 <https://github.com/bluescarni/mppp/pull/127>`__). 645 646- Add a leading ``mppp::`` to the names of mp++'s classes in the pybind11 custom type casters 647 (`#120 <https://github.com/bluescarni/mppp/pull/120>`__). This should be only a cosmetic change. 648 649- Update the internal copy of Catch to the latest version, 2.1.1 (`#120 <https://github.com/bluescarni/mppp/pull/120>`__). 650 651- Small tweaks/improvements to the build system and to the docs (`#118 <https://github.com/bluescarni/mppp/pull/118>`__, 652 `#120 <https://github.com/bluescarni/mppp/pull/120>`__, `#121 <https://github.com/bluescarni/mppp/pull/121>`__, 653 `#124 <https://github.com/bluescarni/mppp/pull/124>`__, `#126 <https://github.com/bluescarni/mppp/pull/126>`__). 654 655Fix 656~~~ 657 658- Fix a potential bug in the :cpp:class:`~mppp::real` printing code (`#123 <https://github.com/bluescarni/mppp/pull/123>`__). 659 660- Fix a potential name shadowing issue in the pybind11 integration utilities (`#125 <https://github.com/bluescarni/mppp/pull/125>`__). 661 6620.8 (2018-01-26) 663---------------- 664 665New 666~~~ 667 668- Add a function to check if a :cpp:class:`~mppp::real` is equal to one 669 (`#117 <https://github.com/bluescarni/mppp/pull/117>`__). 670 671- The pybind11 integration utilities now automatically translate mp++ exceptions into appropriate 672 Python exceptions (`#115 <https://github.com/bluescarni/mppp/pull/115>`__). 673 674- Expose various internal type traits in the public API (`#114 <https://github.com/bluescarni/mppp/pull/114>`__). 675 676- Add an implementation of the binomial coefficient for rational top arguments 677 (`#113 <https://github.com/bluescarni/mppp/pull/113>`__). 678 679Changes 680~~~~~~~ 681 682- When C++ concepts are enabled, various functions now use automatically-deduced return types 683 to simplify the implementation and improve the generated documentation 684 (`#114 <https://github.com/bluescarni/mppp/pull/114>`__). 685 686- In the CMake config-file package produced by the installation process, ensure 687 that the installed package version is considered compatible with any other version with the same 688 major version number (`#113 <https://github.com/bluescarni/mppp/pull/113>`__). 689 690Fix 691~~~ 692 693- Fix a compilation error in the in-place operators of :cpp:class:`~mppp::real` when using concepts 694 (`#116 <https://github.com/bluescarni/mppp/pull/116>`__). 695 696- Fix a compilation error in the pybind11 utilities when mp++ is configured with quadmath support 697 but without MPFR (`#114 <https://github.com/bluescarni/mppp/pull/114>`__). 698 6990.7 (2018-01-11) 700---------------- 701 702New 703~~~ 704 705- Implement the initial version of the binary serialisation API (`#110 <https://github.com/bluescarni/mppp/pull/110>`__). 706 707- Add builds based on MSVC 2017 in Appveyor (`#110 <https://github.com/bluescarni/mppp/pull/110>`__). 708 709- Extend the ``mppp::CppInteroperable`` concept to include all C++ integral types 710 (`#104 <https://github.com/bluescarni/mppp/pull/104>`__). 711 712- Add left bit shift benchmarks for :cpp:class:`~mppp::integer` (`#103 <https://github.com/bluescarni/mppp/pull/103>`__). 713 714- Implement division without remainder (``tdiv_q()``) and exact division with positive divisor (``divexact_gcd()``) 715 for :cpp:class:`~mppp::integer` (`#103 <https://github.com/bluescarni/mppp/pull/103>`__). 716 717- Implement the ``trunc()`` and ``integer_p()`` primitives for :cpp:class:`~mppp::real` 718 (`#102 <https://github.com/bluescarni/mppp/pull/102>`__). 719 720- Implement the :cpp:func:`~mppp::free_integer_caches()` function to manually free the caches used internally by 721 :cpp:class:`~mppp::integer` (`#98 <https://github.com/bluescarni/mppp/pull/98>`__). 722 723Changes 724~~~~~~~ 725 726- Update copyright date (`#110 <https://github.com/bluescarni/mppp/pull/110>`__). 727 728- Various updates to the documentation and to the benchmarks (`#107 <https://github.com/bluescarni/mppp/pull/107>`__, 729 `#108 <https://github.com/bluescarni/mppp/pull/108>`__). 730 731- Add an internal demangling utility to improve the quality of the error messages (`#105 <https://github.com/bluescarni/mppp/pull/105>`__). 732 733- Various performance improvements for :cpp:class:`~mppp::integer` division, fused multiply-add, left bit shift, 734 addition and multiplication 735 (`#103 <https://github.com/bluescarni/mppp/pull/103>`__, `#106 <https://github.com/bluescarni/mppp/pull/106>`__, 736 `#108 <https://github.com/bluescarni/mppp/pull/108>`__). 737 738- Improve the detection of the availability of the ``thread_local`` keyword on recent Xcode versions 739 (`#99 <https://github.com/bluescarni/mppp/pull/99>`__). 740 7410.6 (2017-12-05) 742---------------- 743 744New 745~~~ 746 747- Implement additional ``get()`` conversion functions for :cpp:class:`~mppp::real128` (`#96 <https://github.com/bluescarni/mppp/pull/96>`__). 748 749- Implement the increment and decrement operators for :cpp:class:`~mppp::rational` (`#95 <https://github.com/bluescarni/mppp/pull/95>`__). 750 751- Implement support for ``__int128_t`` and ``__uint128_t`` (`#90 <https://github.com/bluescarni/mppp/pull/90>`__). 752 753- Implement the bitwise logic operators for :cpp:class:`~mppp::integer` (`#86 <https://github.com/bluescarni/mppp/pull/86>`__). 754 755- Initial implementation of the :ref:`pybind11 integration utilities <tutorial_pybind11>` (`#81 <https://github.com/bluescarni/mppp/pull/81>`__). 756 757- Implement the ``frexp()`` primitive for :cpp:class:`~mppp::real128` (`#81 <https://github.com/bluescarni/mppp/pull/81>`__). 758 759- Implement the ``get/set_z_2exp()`` primitives for :cpp:class:`~mppp::real` (`#77 <https://github.com/bluescarni/mppp/pull/77>`__). 760 761- Implement construction with preallocated storage for :cpp:class:`~mppp::integer` (`#74 <https://github.com/bluescarni/mppp/pull/74>`__). 762 763- Implement construction from an array of limbs for :cpp:class:`~mppp::integer` (`#73 <https://github.com/bluescarni/mppp/pull/73>`__). 764 765Changes 766~~~~~~~ 767 768- Various additions to the tutorial (`#97 <https://github.com/bluescarni/mppp/pull/97>`__). 769 770- **BREAKING**: the imported target created by the installation process has been renamed from ``Mp++`` to ``mp++`` 771 (`#94 <https://github.com/bluescarni/mppp/pull/94>`__). 772 773- Take advantage of ``std::gcd()`` on C++17 (`#93 <https://github.com/bluescarni/mppp/pull/93>`__). 774 775- Update the benchmark results for :cpp:class:`~mppp::integer` (`#91 <https://github.com/bluescarni/mppp/pull/91>`__). 776 777- Add division benchmarks for :cpp:class:`~mppp::integer` (`#91 <https://github.com/bluescarni/mppp/pull/91>`__). 778 779- A few performance tweaks for :cpp:class:`~mppp::integer` (`#91 <https://github.com/bluescarni/mppp/pull/91>`__). 780 781- Simplifications in the bit shifting primitives for :cpp:class:`~mppp::integer` (`#85 <https://github.com/bluescarni/mppp/pull/85>`__). 782 783- Split an :cpp:class:`~mppp::integer` test in two parts to curb memory usage during compilation (`#80 <https://github.com/bluescarni/mppp/pull/80>`__). 784 785- Use bit counting intrinsics in MSVC (`#79 <https://github.com/bluescarni/mppp/pull/79>`__). 786 787- Update the internal copy of Catch to the latest version, 2.0.1 (`#76 <https://github.com/bluescarni/mppp/pull/76>`__). 788 789- Improve the performance of generic assignment for :cpp:class:`~mppp::integer` (`#74 <https://github.com/bluescarni/mppp/pull/74>`__). 790 791- Improve construction from C++ integrals for :cpp:class:`~mppp::integer` (`#74 <https://github.com/bluescarni/mppp/pull/74>`__). 792 793Fix 794~~~ 795 796- Fix :cpp:class:`~mppp::integer` warnings in release mode (`#97 <https://github.com/bluescarni/mppp/pull/97>`__). 797 798- Various internal cleanups in :cpp:class:`~mppp::integer` (`#80 <https://github.com/bluescarni/mppp/pull/80>`__, 799 `#85 <https://github.com/bluescarni/mppp/pull/85>`__, `#86 <https://github.com/bluescarni/mppp/pull/86>`__). 800 801- Small fixes regarding the use of GMP type aliases in :cpp:class:`~mppp::integer` (`#73 <https://github.com/bluescarni/mppp/pull/73>`__). 802 8030.5 (2017-11-07) 804---------------- 805 806New 807~~~ 808 809- Implement the :cpp:class:`~mppp::real` class (`#40 <https://github.com/bluescarni/mppp/pull/40>`__). 810 811- Add non-throwing GMP-style conversion functions (`#59 <https://github.com/bluescarni/mppp/pull/59>`__, 812 `#61 <https://github.com/bluescarni/mppp/pull/61>`__). 813 814- Implement move constructors and move assignment operators from ``mpz_t`` and ``mpq_t`` for :cpp:class:`~mppp::integer` 815 and :cpp:class:`~mppp::rational` (`#57 <https://github.com/bluescarni/mppp/pull/57>`__). 816 817- Implement a cache for the allocation of limbs arrays in small :cpp:class:`~mppp::integer` objects 818 (`#55 <https://github.com/bluescarni/mppp/pull/55>`__). 819 820- Implement the :cpp:class:`~mppp::real128` class (`#31 <https://github.com/bluescarni/mppp/pull/31>`__). 821 822- Implement the ``sub_ui()`` primitive for :cpp:class:`~mppp::integer` (`#37 <https://github.com/bluescarni/mppp/pull/37>`__). 823 824- Add a CI build testing against the latest unstable GMP branch (`#34 <https://github.com/bluescarni/mppp/pull/34>`__). 825 826- Add assignment operators from ``std::string_view`` for :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational` 827 (`#32 <https://github.com/bluescarni/mppp/pull/32>`__). 828 829- Add the possibility of constructing non-canonical :cpp:class:`~mppp::rational` objects from numerator/denominator pairs 830 (`#28 <https://github.com/bluescarni/mppp/pull/28>`__). 831 832Changes 833~~~~~~~ 834 835- Use the sphinx bootstrap theme for the html documentation (`#71 <https://github.com/bluescarni/mppp/pull/71>`__). 836 837- Various simplifications in the :cpp:class:`~mppp::rational` API (`#66 <https://github.com/bluescarni/mppp/pull/66>`__). 838 839- Introduce a :cpp:concept:`~mppp::string_type` concept and use it to reduce the number of overloads in the 840 constructors/assignment operators from string (`#63 <https://github.com/bluescarni/mppp/pull/63>`__, 841 `#64 <https://github.com/bluescarni/mppp/pull/64>`__). 842 843- The :cpp:class:`~mppp::integer` functions accepting the return value as a parameter will now 844 demote a return value with dynamic storage to static storage if the other arguments all have static storage 845 (`#58 <https://github.com/bluescarni/mppp/pull/58>`__). 846 847- The free functions for :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational` now return a reference 848 to the return value, rather than ``void`` (`#56 <https://github.com/bluescarni/mppp/pull/56>`__). 849 850- Performance improvements and code simplifications for :cpp:class:`~mppp::integer` division 851 (`#55 <https://github.com/bluescarni/mppp/pull/55>`__). 852 853- Minor improvements in the static checks for the expected layouts of ``mpz_t`` and ``mpq_t`` 854 (`#53 <https://github.com/bluescarni/mppp/pull/53>`__, `#42 <https://github.com/bluescarni/mppp/pull/42>`__). 855 856- Enable additional compiler warning flags in debug builds for GCC (`#52 <https://github.com/bluescarni/mppp/pull/52>`__). 857 858- **BREAKING**: various improvements/changes to the bit shifting functions for :cpp:class:`~mppp::integer`, 859 and the exception raised by the bit shifting operators is not any more 860 ``std::domain_error``, it is now ``std::overflow_error`` (`#48 <https://github.com/bluescarni/mppp/pull/48>`__). 861 862- Various updates to the benchmarks (`#39 <https://github.com/bluescarni/mppp/pull/39>`__). 863 864- Use various C++17 standard library bits if available, and improve general C++17 compatibility 865 (`#31 <https://github.com/bluescarni/mppp/pull/31>`__, `#37 <https://github.com/bluescarni/mppp/pull/37>`__). 866 867- Update the internal copy of Catch to the latest version, 1.9.7 (`#36 <https://github.com/bluescarni/mppp/pull/36>`__). 868 869- Bump up the minimum required CMake version to 3.3 (`#31 <https://github.com/bluescarni/mppp/pull/31>`__). 870 871- Performance improvements and simplifications in the :cpp:class:`~mppp::rational` constructors and assignment operators 872 (`#28 <https://github.com/bluescarni/mppp/pull/28>`__, `#32 <https://github.com/bluescarni/mppp/pull/32>`__). 873 874Fix 875~~~ 876 877- Fixes/improvements in the support for ``long double`` (`#50 <https://github.com/bluescarni/mppp/pull/50>`__, 878 `#54 <https://github.com/bluescarni/mppp/pull/54>`__). 879 880- Fix the compilation of the tests on Clang 5 (`#43 <https://github.com/bluescarni/mppp/pull/43>`__). 881 882- Fix too lax constraints in the implementation of in-place operators for :cpp:class:`~mppp::integer` and 883 :cpp:class:`~mppp::rational` (`#41 <https://github.com/bluescarni/mppp/pull/41>`__). 884 885- Fix the PDF build of the documentation (`#39 <https://github.com/bluescarni/mppp/pull/39>`__). 886 887- Fix a few missing ``inline`` specifiers (`#38 <https://github.com/bluescarni/mppp/pull/38>`__, `#41 <https://github.com/bluescarni/mppp/pull/41>`__). 888 889- Fix C++ version detection on MSVC (`#36 <https://github.com/bluescarni/mppp/pull/36>`__). 890 891- Fix missing tests for :cpp:class:`~mppp::rational` hashing (`#29 <https://github.com/bluescarni/mppp/pull/29>`__). 892 893- Fix some MSVC warnings when compiling the tests in release mode (`#28 <https://github.com/bluescarni/mppp/pull/28>`__). 894 895- Various minor documentation fixes. 896 8970.4 (2017-07-29) 898---------------- 899 900New 901~~~ 902 903- Implement the constructors from a range of characters and from ``std::string_view`` for :cpp:class:`~mppp::integer` 904 and :cpp:class:`~mppp::rational` (`#23 <https://github.com/bluescarni/mppp/pull/23>`__). 905 906- Implement the assignment operator and the constructor from ``mpz_t`` in :cpp:class:`~mppp::rational` 907 (`#19 <https://github.com/bluescarni/mppp/pull/19>`__). 908 909Changes 910~~~~~~~ 911 912- Expand CI to include GCC 7 in C++17 mode (`#27 <https://github.com/bluescarni/mppp/pull/27>`__). 913 914- Improve testing coverage (`#25 <https://github.com/bluescarni/mppp/pull/25>`__). 915 916- Various extensions to the benchmark suite (`#25 <https://github.com/bluescarni/mppp/pull/25>`__). 917 918- Various performance improvements in :cpp:class:`~mppp::integer` thanks to the reduction of the number of branches 919 in the implementation of basic arithmetic for the 1/2-limb specialisations (`#25 <https://github.com/bluescarni/mppp/pull/25>`__). 920 921- Update the internal copy of Catch to the latest version, 1.9.6 (`#24 <https://github.com/bluescarni/mppp/pull/24>`__). 922 923- Performance improvements for :cpp:func:`mppp::integer::size()` (`#23 <https://github.com/bluescarni/mppp/pull/23>`__). 924 925- Performance improvements for the construction/conversion of :cpp:class:`~mppp::integer` from/to C++ integrals 926 (`#23 <https://github.com/bluescarni/mppp/pull/23>`__). 927 928- Make sure the MPFR cleanup routine is automatically called on shutdown (`#22 <https://github.com/bluescarni/mppp/pull/22>`__). 929 930- Performance improvements for :cpp:func:`mppp::integer::nbits()` on GCC and Clang (`#17 <https://github.com/bluescarni/mppp/pull/17>`__). 931 932Fix 933~~~ 934 935- Fix a build failure on older GMP versions (`#25 <https://github.com/bluescarni/mppp/pull/25>`__). 936 937- Fix a build system bug when building the benchmarks with older CMake versions (`#25 <https://github.com/bluescarni/mppp/pull/25>`__). 938 939- Various minor fixes. 940 9410.3 (2017-06-12) 942---------------- 943 944New 945~~~ 946 947- Implement the multiprecision :cpp:class:`~mppp::rational` class (`#14 <https://github.com/bluescarni/mppp/pull/14>`__). 948 949- Implement fast assignment functions to zero and plus/minus one for :cpp:class:`~mppp::integer`. 950 951- Add assignment operators from string for :cpp:class:`~mppp::integer`. 952 953- Implement the ``submul()`` primitive for :cpp:class:`~mppp::integer`. 954 955- Implement the assignment operator from ``mpz_t`` in :cpp:class:`~mppp::integer`, and use it in various function 956 in order to avoid the creation of a temporary. 957 958Changes 959~~~~~~~ 960 961- Performance improvements for the copy/move assignment operators of :cpp:class:`~mppp::integer`. 962 963Fix 964~~~ 965 966- Various small documentation fixes. 967 9680.2 (2017-05-09) 969---------------- 970 971New 972~~~ 973 974- Provide a CMake config-file package as part of the install process. 975 976- Implement the missing in-place modulo operator with C++ integrals 977 on the left. 978 979- Experimental support for C++ concepts. 980 981- Support the ``clang-cl`` compiler on Windows. 982 983- Add input stream operator. 984 985- Add in-place arithmetic operators with interoperable types on the 986 left-hand side. 987 988- Add convenience overloads for the computation of the binomial 989 coefficient. 990 991- Add convenience overloads for ``pow()``. 992 993- Add functions to test if an integer is equal to -1. 994 995- Add a static member to ``integer`` storing the static size. 996 997Changes 998~~~~~~~ 999 1000- Split out the library in multiple files. 1001 1002- Rename the ``mp_integer`` class to ``integer``. 1003 1004- Various improvements to the documentation. 1005 1006- Rework the library interface to use regular functions rather than 1007 ``inline friend`` functions. 1008 1009- Change the license to MPL2. 1010 1011- Remove the allocation cache. 1012 1013- Remove the custom namespace option. 1014 1015Fix 1016~~~ 1017 1018- Fix operators example in the documentation. 1019