 Jeroen van RijnandGitHub
|
3f29a0d6dd
|
Merge pull request #1078 from Kelimion/bigint
Add recursive division.
|
2021-08-14 15:58:27 +02:00 |
|
Jeroen van Rijn
|
0db86a0638
|
big: Add workaround for DLL globals bug.
|
2021-08-14 13:51:17 +02:00 |
|
Jeroen van Rijn
|
dc02566a84
|
big: Add _private_int_div_recursive.
|
2021-08-13 23:45:00 +02:00 |
|
Jeroen van Rijn
|
37be8d4091
|
big: Add internal_invmod.
|
2021-08-13 14:55:53 +02:00 |
|
Jeroen van Rijn
|
f72a0de074
|
big: Add inverse mod.
|
2021-08-13 01:41:33 +02:00 |
|
 Jeroen van RijnandGitHub
|
07baae04c9
|
Merge pull request #1075 from Kelimion/bigint
Add `core:math/big`, an arbitrary precision library.
|
2021-08-11 21:43:54 +02:00 |
|
Jeroen van Rijn
|
eb22a49b02
|
big: Add int_from_bytes_*.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
ee24f2dd37
|
big: Improve int_to_bytes_*.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
12f9b6db63
|
big: Add int_to_bytes_{big, little} + Python compatible variants.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
851780b8f4
|
big: Add arguments and usage to test.py.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
5f34ff9f9f
|
big: Add _private_int_sqr_toom.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
2b274fefbb
|
big: Add _private_int_sqr_karatsuba.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
6c681b258c
|
big: Add _private_int_sqr_comba.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
1f91a2fe65
|
big: Finish refactor.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
19ff27788c
|
big: Refactoring.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
1ebb0bd9d6
|
big: More refactoring.
|
2021-08-11 20:59:54 +02:00 |
|
Jeroen van Rijn
|
d505a05d36
|
big: More refactoring.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
07dca737f0
|
big: More refactoring.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
6d34a8344a
|
big: Refactor helpers.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
40b7b9ecdf
|
big: Refactor exponents and such.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
53bf66ce1e
|
big: Prettify internal_cmp_digit.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
fd95f50c56
|
big: Split up int_is_* comparison tests.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
777e17d80f
|
big: Improve tunables.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
d4a03acbc3
|
big: Split up int_mod_bits (res = val % (1 << bits))
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
c3db24f834
|
big: Split up gcd + lcm.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
62dcccd7ef
|
big: Move division internals.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
e288a563e1
|
big: Move _mul private functions.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
6298226238
|
big: Switch choose over to internal implementations.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
9321616c80
|
big: Split more into public and internal.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
9890e7cfeb
|
big: Improved zero_unused helper.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
4be48973ad
|
big: Squashed shl1 bug when a larger dest was reused for a smaller result.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
f8442e0524
|
big: Split up mul into internal and public parts.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
9858989b1c
|
big: Split up add and sub into public and internal parts.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
511057ca36
|
big: Improve timing code.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
35d8976de4
|
bit: Optimized int_bitfield_extract.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
463003e86a
|
bit: Improved bitfield extraction.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
85a2a8815e
|
big: Some more work on constants.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
47397a6a48
|
Add faster divison.
|
2021-08-11 20:59:53 +02:00 |
|
Jeroen van Rijn
|
2323ca1622
|
big: Add MATH_BIG_FORCE_64/32_BIT flags.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
fc0a92f8ac
|
big: Add constants.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
97d80d03f9
|
big: Error.None -> nil
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
627872db97
|
big: Timed factorial.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
a27612ec6a
|
Add _mul_comba path.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
491e4ecc74
|
big: Add binary split factorial.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
cd0ce7b76e
|
big: Add choose.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
320387c4ee
|
big: Add gcd_lcm fast path in wrapper.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
6424a5a8dd
|
big: Refactored gcm and lcm to use a common function.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
06f5a6c785
|
big: Special case gcd(0,0) + lcm(0,0).
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
8b1d8c8453
|
big: Add lcm and its test.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
0028cb0258
|
big: Test gcd.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
b15ee059ad
|
big: Add gcd.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
50feeaa285
|
big: Add test for factorial.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
e80ac18324
|
big: Add factorial, have tests use hex strings.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
db0196abc7
|
big: Test root_n.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
149c7b88df
|
big: Fix sqrt, div, add with certain inputs.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
7afd1b15a8
|
big: test_pow for larger ints.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
f12672727d
|
big: Add test_pow and some more switches.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
2179cc2bc7
|
big: Improved test driver.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
961adfedd9
|
big: Test negative inputs as well.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
385b9c9922
|
big: Add tests for log.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
922df6a438
|
big: Add more exhaustive tests.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
c1a001c331
|
big: Add randomized testing.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
13fab36639
|
big: Fix mul.
|
2021-08-11 20:59:52 +02:00 |
|
Jeroen van Rijn
|
708389a7ee
|
big: Improve test driver.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
fb6c9af1ae
|
big: Improve tests.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
85aa4dd670
|
big: Start test suite.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
74258a170a
|
big: fix itoa base PoT other than 16.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
2fbff25a18
|
big: Improve int_bitfield_extract.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
9c150381bf
|
big: Add rand.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
531c4936dd
|
big: Add root_n.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
2aae1016ab
|
big: Add sqrt.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
9c2468ecf7
|
big: Add atoi.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
0a431eef19
|
big: Add another way to estimate radix size.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
9646d1f2b8
|
big: Add submod, mulmod, sqrmod.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
5f7aeb3045
|
big: Add mod and addmod.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
1ebaa9fb3b
|
big: itoa now works for arbitrary radixes.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
c2255c6c19
|
big: Add div.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
2884fa5506
|
big: add div by 3.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
31c94bd7f8
|
big: Finish log, fix sqr.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
5f63e3952e
|
big: Correct pow bugs from the original.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
d953e40fb3
|
big: Add pow.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
c3a4d7dda2
|
big: Fast square method.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
b4a29844e9
|
big: Add multiplication.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
0254057f1b
|
big: Add swap.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
f34ba44bf8
|
big: Add shl, shr and shrmod.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
d4d863c4db
|
big: Add mod_power_of_two.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
78c0877994
|
big: Add get(a, type) and get_float.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
1d0b37c1d8
|
big: add shl1, shr1.
|
2021-08-11 20:59:51 +02:00 |
|
Jeroen van Rijn
|
7648f2e655
|
big: Finish big ZII refactor.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
d9efa6c8b5
|
big: More ZII refactoring.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
2e372b33a3
|
big: More ZII refactoring.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
687c211a58
|
big: ZII.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
4eadd0867d
|
big: Continuing to refactor.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
9dba17cf87
|
bigint: refactor to big.Int instead of bigint.Int.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
baef0c291d
|
bigint: Added some more helpers.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
cccd290834
|
bigint: Add is_power_of_two helper.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
5af85aed3d
|
bigint: itoa support for arbitrary precision if is_power_of_two(radix)
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
e600e5947b
|
bigint: remove unnecessary boundary checks.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
d7ae611f76
|
bigint: itoa now writes backwards directly, no need to reverse after.
|
2021-08-11 20:59:50 +02:00 |
|
Jeroen van Rijn
|
04a83eb9f7
|
bigint: pass size to itoa_raw.
|
2021-08-11 20:59:50 +02:00 |
|