bigz 2.1.0

bigz is a simple but feature-rich C library for bignum calculations. It's the continuation of an old BigNum project originally begun as a research project. Current releases include many fixes, extensions and improvements. It's not as efficient as GMP, but comes with a smaller footprint, provides Z+Q infinite precision, and is rather portable and multi-thread safe.

Tags c c++ lisp bignum mathematics library developers science
License BSDL
State mature

Recent Releases

2.1.005 Feb 2023 03:16 minor feature: Extend std::to_string for CBignum and CRational. Add C++ specialized std::numeric_limits for CBignum and CRational. Improve rational to double conversion. Qualified port on Linux (loongarch64) with gcc 13.0.0. Add support for long double. Build.dylib instead of.so shared libs macOS. Qualified port on macOS 19.4.0 (x86_64) with tcc 0.9.27. internal error with BzAsh when n is 0. Automatically generate config.h.in from autogen.sh. Refresh configure.ac using autoupdate script. Modernize and configure.ac, add AC_REVISION. Add bignum amalgamation rule. BzRandom uses xorshift algorithm.
2.0.016 Jan 2020 10:05 minor feature: Improve rational test suite. Improve LISP detection. Generation of tests can be done by OpenLisp or sbcl. Detect a valid lisp to generate tCBignum.dat tests. permission on makefile.msvc. dates and revisions. Makefile entry for tCBignum.dat. Rename makefile.nt to makefile.msvc. Change copyright last year to 2020, wrong returned string length with BqToStringBufferExt. Doxygen, use BQ_xx constants instead of BZ_xx in bigq. BzToStringBufferExt wrong return length. Add BqToStringBufferExt which collects rational into given buffer. wrong string size computation. Improve style, documentation and constness when possible. Change BigQ type to const object. operator
1.6.412 Jan 2020 16:05 minor feature: Better check rational possible failures. Optimize code when denominators are equal. Decompose BqCreateInternal to TCC (esp. if used with a GC). Rework bignum/rational string parsers, add many test cases. a bignum parsing error that was not detected?, Add more options to parse bignums and rationals from string. Better check possible syntax errors when parsing Bignum or Rational. Better detect errors when parsing rational numbers. Doxygen 1.8.16 is the default version for html documentation. Don't try to use -m64 flag. Use AC_CHECK_TARGET_TOOLS instead of AC_CHECK_PROGS. Better check clang++ available flags. Better support compiler flags common or not with gcc and clang. Remove warning detected by gcc 9.1 on negative index, english comment insure- ensure. new warning found with VS 2019. suggest-override is not well detected with clang, sign warning only detected by clang. Test and add -Wconversion new warning detection, new warnings found with -Wconversion, Add optional -static-libasan when compiling with sanitizer, Add optional SANITIZE flag to be used for sanity checks. Update m4 scripts. CRational to CBignum conversion. Change last year to 2019. Add missing BSD license on some source files. Improve doxygen, normalize header. Better use template for CBignum ctor. Tune doxygen comments. Comment all C public API with Doxygen tags. Add doxygen task. Modernize style. Add Bz preto MaxInt and AbsInt macros.
1.6.210 May 2016 01:05 minor feature: CBignum ctor with negative value. BzModExp accepts negative modulus value. BzModExp exponent is BigZ as it can be really big like with RSA. Add BzFromStringLen that pass the length of string. Add experimental BzModExp using Right-to-left binary method. std::ios::showpos test used to display '+' for positive numbers. Optimize left and right shift with loop unrolling. Dramatically improve (ash +/- 1 n). Now computed in O(1) V.S. O(n).
1.5.503 Jan 2015 13:05 minor bugfix: Build shared lib with gcc. Add install/uninstall Makefile entries. Add bignum.pc.in and bignum.spec.in. Add BzPow(base, exp).