Commit Graph

195 Commits

Author SHA1 Message Date
Nick Thompson
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
Nick Thompson
9167594533 Merge branch 'develop' of https://github.com/boostorg/integer into develop 2018-10-24 13:11:30 -06:00
Nick Thompson
661986dd3d [ci skip] Deprecate boost/pending/integer_log2.hpp 2018-02-11 12:32:14 -06:00
Nick Thompson
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
Nick Thompson
4f4f3eda37 [ci skip] Fix docs to use less verbose names for modular multiplicative inverse (mod_inverse) 2018-02-10 16:07:17 -06:00
Nick Thompson
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
Nick Thompson
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
Nick Thompson
fc4d657201 [ci skip] Modular exponentiation, modular multiplicative inverse, extended Euclidean algorithm, discrete logarithm. 2018-01-28 14:47:14 -06:00
Andrey Semashev
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
Daniela Engert
6ebccd6c80 fix narrowing warnings due to integer promotion.
Signed-off-by: Daniela Engert <dani@ngrt.de>
2017-06-08 17:40:32 +02:00
jzmaddock
7ccb820893 Test mpz_class when available.
And fix errors compiling with that type.
2017-05-07 13:15:15 +01:00
John Maddock
84ded579f3 Qualify recursive calls to avoid ambiguity for types that have their own gcd/lcm 2017-05-04 11:12:33 +01:00
John Maddock
c1a08d3185 We can enable compiler intrinsics with GCC in C++14 mode after all 2017-04-30 18:49:47 +01:00
John Maddock
53306630db Fix for Oracle 12.4 compiler 2017-04-27 17:23:40 +00:00
jzmaddock
1d934167fd Tentative fix for overload resolution issue with Oracle C++. 2017-04-26 19:51:03 +01:00
jzmaddock
7c0151c93a Enumerators don't need a final , in their list. 2017-04-26 18:30:11 +01:00
jzmaddock
4991d82385 Need to take abs of return value in short-circuit gcd code. 2017-04-24 19:19:48 +01:00
jzmaddock
58d53beae4 Add missing #include for older compilers. 2017-04-24 18:18:36 +01:00
jzmaddock
f5eff7d83d MSVC-8 has no <intrin.h>. 2017-04-24 18:13:56 +01:00
jzmaddock
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
jzmaddock
162e48d14a Remove dependency to mpl and type_traits. 2017-03-31 18:34:14 +01:00
jzmaddock
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
jzmaddock
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
Kohei Takahashi
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
pabristow
175a1caa58 Placed GCD and LCM typdefs and declarations in integer_fwd.hpp inside namespace boost::integer (was in boost::math) and checked that expected tests pass (and expected fails fail).
(Major update to Boost.Integer docs available for review at https://dl.dropboxusercontent.com/u/43940943/modular-boost/libs/integer/index.html
on branch doc-revision).
2015-01-29 11:53:02 +00:00
Vicente J. Botet Escriba
a12b96c011 manage with #4881. 2015-01-25 17:11:04 +01:00
Vicente J. Botet Escriba
7ffb75bb43 manage with #6694 Boost.Integer part. 2015-01-25 17:03:09 +01:00
Peter Dimov
c5370a9705 Fix ambiguous 'detail' errors under msvc-8.0. 2015-01-18 20:04:09 +02:00
Peter Dimov
8dae82faeb Replace math with integer, untabify. 2015-01-13 20:53:02 +02:00
Peter Dimov
acf272ee7d Move common_factor headers to integer/ 2015-01-13 19:55:58 +02:00
Stephen Kelly
b70c89a3ff Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
Process #ifndef...#else...#endif blocks.

[SVN r86245]
2015-01-13 19:41:33 +02:00
John Maddock
72b569f84f MSVC warning suppression.
[SVN r69509]
2015-01-13 19:41:31 +02:00
John Maddock
ce4bd6cc98 Fix signed/unsigned comparison warnings when char is unsigned.
[SVN r63496]
2015-01-13 19:41:31 +02:00
John Maddock
d38557f5f3 Make the compile time gcd facilities work with greatest integer types, and be mpl compatible.
[SVN r63408]
2015-01-13 19:41:30 +02:00
John Maddock
5174291e08 Fix failures when used with an expression-template enabled number type such as the gmpxx clases. Add additional concept check for integer code using gmp classes. Fixes #4139.
[SVN r61837]
2015-01-13 19:41:29 +02:00
Daryle Walker
7c528c325e Tweaked files to pass inspection report; one file had some min/max violations; but all had to have 'boostinspect:nolicense' set because a copyrighter, Paul Moore, has disappeared, so his files can never be changed to the main Boost license
[SVN r47847]
2015-01-13 19:41:29 +02:00
John Maddock
e20431e713 Changed long long to boost::long_long_type and unsigned long long to boost::ulong_long_type. A couple of other typo corrections, to get the code compiling with g++ -pedantic.
[SVN r44877]
2015-01-13 19:41:27 +02:00
John Maddock
307fee457a Fix Borland infinite looping issue.
[SVN r39723]
2015-01-13 19:41:27 +02:00
Daryle Walker
80b59192ae Made the GCD specializations for '(unsigned) long long' and '(unsigned) __int64' mutually exclusive, following the lead of <boost/cstdint.hpp>.
[SVN r35999]
2015-01-13 19:41:25 +02:00
Daryle Walker
1f5f827a5e Changed GCD for built-in integer types to use the binary-GCD algorithm
[SVN r35850]
2015-01-13 19:41:25 +02:00
Daryle Walker
c041451a54 Added missing 'typename'
[SVN r27219]
2015-01-13 19:41:23 +02:00
John Maddock
791b547d25 Changed files to BSL based on permissions in blanket-permission.txt
[SVN r25451]
2015-01-13 19:41:22 +02:00
Douglas Gregor
cd696b2f6a License update
[SVN r24180]
2015-01-13 19:41:22 +02:00
Markus Schöpflin
fadad77a39 Merged fix from release branch to main trunk.
[SVN r15607]
2015-01-13 19:41:22 +02:00
Daryle Walker
9880cf69dc Adjusted for moving the Compile-Time and Run-Time GCD and LCM components to new, separate headers
[SVN r14273]
2015-01-13 19:41:21 +02:00
Daryle Walker
56bd3fd0b3 Moved the Compile-Time and Run-Time components to separate headers
[SVN r14272]
2015-01-13 19:41:21 +02:00
John Maddock
82ad7a9edb Added fixes for the case that BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS is defined.
[SVN r13684]
2015-01-13 19:41:20 +02:00
Dave Abrahams
6a8080014a Integrated MSVC fixes from Daryle
[SVN r12012]
2015-01-13 19:41:19 +02:00
Jens Maurer
f6738d210c fix errors (from Daryle Walker)
[SVN r11935]
2015-01-13 19:41:19 +02:00
Dave Abrahams
5f810b2754 Daryle Walker's GCD library submission
[SVN r11814]
2015-01-13 19:41:18 +02:00