]>
Commit | Line | Data |
---|---|---|
92f5a8d4 TL |
1 | Boost Multiprecision Library |
2 | ============================ | |
3 | ||
20effc67 TL |
4 | >ANNOUNCEMENT: Support for C++03 is now deprecated in this library and will be supported in existing features only until March 2021. New features will require at least C++11, as will existing features from next year. |
5 | ||
92f5a8d4 TL |
6 | The Multiprecision Library provides integer, rational, floating-point, complex and interval number types in C++ that have more range and |
7 | precision than C++'s ordinary built-in types. The big number types in Multiprecision can be used with a wide selection of basic | |
8 | mathematical operations, elementary transcendental functions as well as the functions in Boost.Math. The Multiprecision types can | |
9 | also interoperate with the built-in types in C++ using clearly defined conversion rules. This allows Boost.Multiprecision to be | |
10 | used for all kinds of mathematical calculations involving integer, rational and floating-point types requiring extended range and precision. | |
11 | ||
12 | Multiprecision consists of a generic interface to the mathematics of large numbers as well as a selection of big number back ends, with | |
13 | support for integer, rational and floating-point types. Boost.Multiprecision provides a selection of back ends provided off-the-rack in | |
14 | including interfaces to GMP, MPFR, MPIR, TomMath as well as its own collection of Boost-licensed, header-only back ends for integers, | |
15 | rationals, floats and complex. In addition, user-defined back ends can be created and used with the interface of Multiprecision | |
16 | , provided the class implementation adheres to the necessary concepts. | |
17 | ||
18 | Depending upon the number type, precision may be arbitrarily large (limited only by available memory), fixed at compile time | |
19 | (for example 50 or 100 decimal digits), or a variable controlled at run-time by member functions. The types are expression-template-enabled | |
20 | for better performance than naive user-defined types. | |
21 | ||
22 | The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/multiprecision/index.html). | |
23 | ||
24 | ## Support, bugs and feature requests ## | |
25 | ||
26 | Bugs and feature requests can be reported through the [Gitub issue tracker](https://github.com/boostorg/multiprecision/issues) | |
27 | (see [open issues](https://github.com/boostorg/multiprecision/issues) and | |
28 | [closed issues](https://github.com/boostorg/multiprecision/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed)). | |
29 | ||
30 | You can submit your changes through a [pull request](https://github.com/boostorg/multiprecision/pulls). | |
31 | ||
32 | There is no mailing-list specific to Boost Multiprecision, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [multiprecision]. | |
33 | ||
34 | ||
35 | ## Development ## | |
36 | ||
37 | Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)): | |
38 | ||
39 | git clone https://github.com/boostorg/boost | |
40 | cd boost | |
41 | git submodule update --init | |
42 | ||
43 | The Boost Multiprecision Library is located in `libs/multiprecision/`. | |
44 | ||
45 | ### Running tests ### | |
46 | First, make sure you are in `libs/multiprecision/test`. | |
47 | You can either run all the tests listed in `Jamfile.v2` or run a single test: | |
48 | ||
49 | ../../../b2 <- run all tests | |
50 | ../../../b2 test_complex <- single test | |
51 |