Skip to content
Dave Hudson edited this page Feb 5, 2017 · 30 revisions

c8 (calculate) is designed as an easy-to-use arbitrary precision (big number) maths library that has no dependencies other than the standard C++ libraries provided with gcc or clang.

Its design emphasizes ease of use, but is intended to be used in high performance applications.

Number Types

c8 provides supports for three primary classes of numbers:

  • c8::natural provides natural numbers.
  • c8::integer provides integers.
  • c8::rational provides rational numbers.

Each class supports functions to construct objects from, and to export object values to, standard C++ value types.

Between the three classes it's possible to represent all of the interesting numbers that a computer can directly represent, since floating point numbers are a subset of the set of rational numbers. By using rationals instead of floating point it's also much easier to avoid some types of computational error.

FAQ

Questions and answers about the project. See: FAQ

License

The code is licensed under a 3-clause BSD license.

Implementation

It is written in C++14. There is no intention to formally support earlier versions.

Development Notes

Part of the aim of this library project is to document the development process. See: Dev Notes

Contact

Please feel free to raise issues via the issue tracker, or tweet the author (Dave Hudson) via @hashingitcom

Clone this wiki locally