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
Jeroen van Rijn
341e8a3c99
bigint: itoa works for numbers <= 120 bits.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
e3d8ac559d
bigint: Fast paths for radix code.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
767948ab46
bigint: log_n for bases that fit within one DIGIT or are a power of two.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
dbcd8da733
bigint: Working on itoa and logn.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
905d5459a9
bigint: Add count_bits and more prep.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
dfd5a993a2
bigint: Prepare for multiplication.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
daceaa65f5
bigint: Add substractin with immediate.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
c2c07f07db
Add single DIGIT addition.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
c5cbd3260a
bigint: Add prototypes for immediate add+sub.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
d57e1be89f
bigint: Improve add.
2021-08-11 20:59:50 +02:00
Jeroen van Rijn
18dda6ff9d
Start of core:math/bigint
...
We have:
- `init` to create a new `Int`
- `init(from_integer)` to create a new `Int` and set it to `from_integer`.
- `set(Int, from_integer)` to set an `Int` to `from_integer`
- `add(dest, a, b)` to add `a` and `b` into `dest`.
- `sub(dest, a, b)` to subtract `b` from `a` and put the result in `dest`.
And a few helper functions, like:
- `is_zero`, `is_negative`, ...
- `grow`, `shrink`, `clear`, `zero`
2021-08-11 20:59:50 +02:00
Jeroen van Rijn and GitHub
6d59223efd
Merge pull request #1072 from Kelimion/cel_fix_ise
...
CEL: Fix by changing `using enum` to ISE.
2021-08-08 02:21:04 +02:00
Jeroen van Rijn
ebd034fff9
CEL: Fix ISE.
2021-08-08 02:19:32 +02:00
Jeroen van Rijn and GitHub
c0f746a251
Merge pull request #1065 from Kelimion/string_cut
...
Add `strings.cut`, which returns a substring.
2021-08-02 18:09:59 +02:00
Jeroen van Rijn
d260ca6738
string.cut uses context.allocator by default.
2021-08-02 17:58:42 +02:00
Jeroen van Rijn
0dc900ba34
Add strings.cut, which returns a substring.
2021-08-01 19:41:20 +02:00
Jeroen van Rijn and GitHub
481fc8a5b6
Merge pull request #1060 from Kelimion/win_sys
...
Allow `core:sys/windows` to build on Windows only
2021-07-15 12:15:10 +02:00
Jeroen van Rijn
5dfff51a40
Allow core:sys/windows to build on Windows only
2021-07-15 12:13:57 +02:00
Jeroen van Rijn and GitHub
8e5c3141f6
Merge pull request #1047 from Kelimion/zlib_optimize
...
ZLIB: Fix edge case where initial buffer < 258 bytes.
2021-06-27 18:49:09 +02:00
Jeroen van Rijn
87aaa9c3f0
ZLIB: Fix edge case where initial buffer < 258 bytes.
2021-06-27 18:44:36 +02:00
Jeroen van Rijn and GitHub
095605b7db
Merge pull request #1046 from Kelimion/zlib_optimize
...
ZLIB: Optimize
2021-06-27 16:54:15 +02:00
Jeroen van Rijn
6836b501af
Merge branch 'master' into zlib_optimize
2021-06-27 16:50:27 +02:00
Jeroen van Rijn
d949d5a046
ZLIB: cleanup.
2021-06-27 16:48:12 +02:00
Jeroen van Rijn
064516bf0b
PNG: Inform inflate about expected output size for extra speed.
2021-06-27 13:57:12 +02:00
Jeroen van Rijn
eaf88bcc4d
PNG: Let PNG use the new compress I/O routines.
2021-06-27 13:51:52 +02:00
Jeroen van Rijn
02f9668185
ZLIB: Split up input from stream and memory into own code paths.
2021-06-27 13:19:24 +02:00
Jeroen van Rijn
4689a6b341
Refactor compress.Context struct.
2021-06-26 22:25:55 +02:00
Jeroen van Rijn
30a5808460
ZLIB: Moar faster.
2021-06-26 20:40:39 +02:00
Jeroen van Rijn
8ba1c9a6cd
ZLIB: Remove superfluous code.
2021-06-26 17:44:12 +02:00
Jeroen van Rijn
65b78b1aa9
So far, so good.
2021-06-26 15:11:15 +02:00
Jeroen van Rijn
c369719362
Merge branch 'master' into zlib_optimize
2021-06-26 13:40:22 +02:00
Jeroen van Rijn
40a12cca53
ZLIB: If output size is known, reserve that much.
2021-06-26 13:17:14 +02:00
Jeroen van Rijn and GitHub
ab12ca69af
Merge pull request #1040 from Kelimion/zlib_optimize
...
Adler32 speedup.
2021-06-24 19:15:22 +02:00
Jeroen van Rijn
17748f18b9
Adler32 speedup.
2021-06-24 19:06:39 +02:00
Jeroen van Rijn and GitHub
f62f40e508
Merge pull request #1039 from Kelimion/zlib_optimize
...
ZLIB: Another 10%+ faster.
2021-06-24 15:02:02 +02:00
Jeroen van Rijn
980aa37bee
ZLIB: Another 10%+ faster.
2021-06-24 14:56:28 +02:00
Jeroen van Rijn and GitHub
824efc82b9
Merge pull request #1036 from Kelimion/zlib_optimize
...
ZLIB: More faster.
2021-06-23 22:25:02 +02:00
Jeroen van Rijn
1cfe226686
ZLIB: More faster.
2021-06-23 22:18:17 +02:00
Jeroen van Rijn and GitHub
ea0ce7bd2c
Merge pull request #1035 from Kelimion/zlib_optimize
...
Zlib optimize
2021-06-23 20:15:32 +02:00
Jeroen van Rijn
342adb627d
All reads now skip stream if in memory.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
a70635d2f6
Most reads now go through buffer for zlib.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
5cb16c4cd1
All reads now go through read_slice.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
538004ba5f
Introduce read_slice, make read_u8 use it.
2021-06-23 16:32:48 +02:00
Jeroen van Rijn
8663c64e47
Refactor ZLIB structs.
2021-06-23 16:32:47 +02:00