Commit Graph

44 Commits

Author SHA1 Message Date
cd60c4c9f9 [CI SKIP] Disable multiprecision in certain compilers. 2018-10-29 08:52:20 -06:00
de0d24733b Remove dependency on boost/typeindex in tests. 2018-10-26 19:23:11 -06:00
e0646cb7ec Add template argument to green up build. Remove discrete log as we do not have an overflow-resistant mul_mod in boost. 2018-10-26 16:58:30 -06:00
2d463f3ee7 a*p % m may overflow, do not perform naive multiplication in unit tests or undefined behavior may result. [CI SKIP] 2018-10-26 11:19:43 -06:00
3f1603938c Revert change as the previous algorithm overflows for all inputs >= half the bit length of the type. 2018-10-25 18:05:14 -06:00
54d0e4c63e [ci skip] Trade out algorithm from 'The Joy of Factoring' to Wikipedia's version which reduces the number of required temporaries. In fact, the speedup is not large, but the code is more compact, and for larger types, the difference becomes more noticeable. 2018-10-25 14:28:39 -06:00
87e5b365d8 Return custom struct from extended Euclidean algorithm rather than tuple. Reduce number of operations for tests to reduce CI system workload. Disable discrete log tests until we have time to figure out why they are failing. 2018-10-25 09:38:16 -06:00
ada03a59d7 Remove dependency on boost.format, remove unfettered use of auto in order to move towards C++03 compatibility, use BOOST_THROW_EXCEPTION. 2018-10-24 14:29:22 -06:00
faa61cd911 [ci skip] It is *not* the case that a discrete log exists when the base and modulus are coprime. Take 4^x = 2 mod 5 as a counterexample. Change API accordingly. 2018-02-10 17:51:59 -06:00
4f4f3eda37 [ci skip] Fix docs to use less verbose names for modular multiplicative inverse (mod_inverse) 2018-02-10 16:07:17 -06:00
b3966428c4 [ci skip] Add test of short int to see if there's any obvious places for overflow (none are obvious, but no guarantees they still aren't there). Print basic information about the test to console so that failures are easier to track down. 2018-02-10 13:56:11 -06:00
8c415f77b1 [ci skip] Use less verbose naming. Add asserts as verfication of algorithms is a negligible fraction of total runtime. Use boost::multiprecision::powm and boost::multiprecision::sqrt rather than one-offs. 2018-02-09 17:19:26 -06:00
fc4d657201 [ci skip] Modular exponentiation, modular multiplicative inverse, extended Euclidean algorithm, discrete logarithm. 2018-01-28 14:47:14 -06:00
bc2349f71b Corrected make_odd return type inconsistency.
Make gcd_traits<signed char>::make_odd return unsigned int, similar to all other gcd_traits specializations. Also, correct the local variable types that receive the result of make_odd to avoid warnings about unintended conversion.
2017-08-20 01:57:09 +03:00
6ebccd6c80 fix narrowing warnings due to integer promotion.
Signed-off-by: Daniela Engert <dani@ngrt.de>
2017-06-08 17:40:32 +02:00
7ccb820893 Test mpz_class when available.
And fix errors compiling with that type.
2017-05-07 13:15:15 +01:00
84ded579f3 Qualify recursive calls to avoid ambiguity for types that have their own gcd/lcm 2017-05-04 11:12:33 +01:00
c1a08d3185 We can enable compiler intrinsics with GCC in C++14 mode after all 2017-04-30 18:49:47 +01:00
53306630db Fix for Oracle 12.4 compiler 2017-04-27 17:23:40 +00:00
1d934167fd Tentative fix for overload resolution issue with Oracle C++. 2017-04-26 19:51:03 +01:00
7c0151c93a Enumerators don't need a final , in their list. 2017-04-26 18:30:11 +01:00
4991d82385 Need to take abs of return value in short-circuit gcd code. 2017-04-24 19:19:48 +01:00
58d53beae4 Add missing #include for older compilers. 2017-04-24 18:18:36 +01:00
f5eff7d83d MSVC-8 has no <intrin.h>. 2017-04-24 18:13:56 +01:00
beb6871864 Switch over to using new Boost.Math version of gcd/lcm.
Please refer to the Boost.Math revision log for details of changes, but in summary:
* New version of gcd/lcm internals by Jeremy Murphy include mixed-binary algorithm and better selection logic.
* Support is now included for gcd's of polynomials.
* Full C++14 constexpr support.
2017-04-23 13:01:09 +01:00
162e48d14a Remove dependency to mpl and type_traits. 2017-03-31 18:34:14 +01:00
45cc025bbd Merge branch 'bugfix/bitwise-not-and-gcc6' of https://github.com/Flast/boost-integer into cpp14 2017-03-28 19:28:51 +01:00
a52bae3639 Improve C++14 support:
* Make functions constexpr.
* Make functions noexcept where appropriate.
* Add test case for the above.
2017-03-28 18:57:50 +01:00
89cec128bd Fix compile error on GCC6 or later.
Bitwise not yields integral promotion and to be signed type.
2016-07-30 16:12:07 +09:00
8dae82faeb Replace math with integer, untabify. 2015-01-13 20:53:02 +02:00
acf272ee7d Move common_factor headers to integer/ 2015-01-13 19:55:58 +02:00
40b52301df Move integer_log2 from pending to integer 2014-06-05 15:48:22 -07:00
cd98c4a257 Add a 64 bit specialization of low_bits_mask_t. Fixes #4332
[SVN r62756]
2010-06-10 19:49:34 +00:00
ca84baa55d Update Boost.Integer meta-programming classes to work with intmax_t where possible - ie to be 64-bit clean.
Added quickbook based docs - updated as necessary.
Removed old html docs.

[SVN r57926]
2009-11-25 12:38:09 +00:00
285048504c Suppress and/or fix warnings - in particular avoid undefined behaviour in the test cases!
[SVN r57859]
2009-11-23 10:43:00 +00:00
eecbd5276f Reverted Integer back to Release branch state - as per devel-list discussions.
[SVN r57580]
2009-11-11 18:57:24 +00:00
edd638ec91 Use BOOST_STATIC_CONSTANT in static_log2, as g++ 4.0 has problems with enum.
[SVN r54811]
2009-07-08 21:27:05 +00:00
2d259a4f3e Added MPL-compatible variants of the integer-mask class templates (and finally make the lowest-bit-group metafunctions work for zero-length bit-groups)
[SVN r47869]
2008-07-29 19:33:20 +00:00
f041dc0f0a Added extended-integer support
[SVN r47842]
2008-07-27 17:08:51 +00:00
bfc384a435 License update
[SVN r24180]
2004-07-30 04:46:56 +00:00
0f84fe35da fixed typo in comment
[SVN r23945]
2004-07-22 09:02:43 +00:00
170a352574 new version - more efficient, and with no dependency on numeric_limits<>
[SVN r23829]
2004-07-20 09:49:43 +00:00
c56e4674f8 Update from Daryle
[SVN r14187]
2002-06-19 20:11:17 +00:00
c50993d5d4 Added daryle's missing files
[SVN r11971]
2001-12-07 12:48:20 +00:00