31 Commits

Author SHA1 Message Date
Balazs Komuves
2cd07acad0
implemented modular inversion (just for the kick of it) + lots of new tests
(inversion certainly makes testing more serious!)
2026-01-30 06:41:16 +01:00
Balazs Komuves
b01b63bdab
implement Zero and One trait abstractions 2026-01-30 03:04:16 +01:00
Balazs Komuves
0628b17ca1
add some quickcheck tests for bigint 2026-01-30 01:33:20 +01:00
Balazs Komuves
f6c30ed6e0
started adding some tests 2026-01-29 23:19:04 +01:00
Balazs Komuves
b46a6dde66
add random number / field element generation support 2026-01-29 23:18:17 +01:00
Balazs Komuves
0c4b1934f3
fix an embarrassing thing (256-bit specific routines were "generic"...) 2026-01-29 21:42:43 +01:00
Balazs Komuves
e596c5b16b
improve the Poseidon API
(thanks goes to Chrysostomos Nanakos for the help!)
2026-01-29 14:56:08 +01:00
Balazs Komuves
4740fa3d88
change the Poseidon2 state representation from triple to array 2026-01-29 11:53:41 +01:00
Balazs Komuves
702fa34c34
add functions to convert vectors of field elements between standard and Montgomery representation 2026-01-29 11:40:54 +01:00
Balazs Komuves
ee15a60f89
remove all the unnecessary references 2026-01-29 11:29:37 +01:00
Balazs Komuves
dd278668a2
some more improvements (stylistic + traits) 2026-01-28 00:49:22 +01:00
Balazs Komuves
6234888649
implement some standard traits (Eq, Cmp, Add, Sub, Mul, From, Into) 2026-01-28 00:29:56 +01:00
Balazs Komuves
37d424c319
minor improvements (README, bench) 2026-01-27 14:24:28 +01:00
Balazs Komuves
49e10423d0
implement circom's Poseidon permutation and compression for t=2,3,4,5 2026-01-25 21:17:45 +01:00
Balazs Komuves
f43a8d55a2
implement circomlib's Poseidon for t=3 2026-01-25 20:53:47 +01:00
Balazs Komuves
92881234bf
conversion to decimal string; mulAdd 2026-01-25 20:49:34 +01:00
Balazs Komuves
453eb12deb
add conversion to/from bytes 2026-01-23 19:37:04 +01:00
Balazs Komuves
8dbb8fe359
a little bit more inlining... 2026-01-23 13:19:03 +01:00
Balazs Komuves
e3c83cbcad
more inlining does help though! 2026-01-23 13:10:43 +01:00
Balazs Komuves
bf2228f16a
tried specializing to the prime, doesn't seem to help 2026-01-23 13:07:55 +01:00
Balazs Komuves
ea3ceb0605
some loop unrolling (in REDC particularly) seems to help a bit (about 20%) 2026-01-23 12:23:33 +01:00
Balazs Komuves
2f719307f4
refactor the platform stuff 2026-01-23 02:12:42 +01:00
Balazs Komuves
86e2f50ce2
apparently, singleton structs _sometimes_ compile to newtypes, but _not always_... "zero-cost abstractions", my ass 2026-01-23 01:19:24 +01:00
Balazs Komuves
1262c72bc7
experimenting with variations... 2026-01-23 00:57:38 +01:00
Balazs Komuves
4ab91e4b28
wrote a different bigint squaring routine, but on (this particular machine) it's actually slower than the naive multiplication 2026-01-22 22:37:06 +01:00
Balazs Komuves
fb74a20cd2
add a very simple bench 2026-01-22 22:36:25 +01:00
Balazs Komuves
2d8f9163cd
renamed the package 2026-01-22 21:18:41 +01:00
Balazs Komuves
9abeac984f
implement Poseidon2 with t=3 2026-01-22 21:08:51 +01:00
Balazs Komuves
6123e90836
implement REDC (no serious testing yet) 2026-01-22 19:36:49 +01:00
Balazs Komuves
ad6c9d01b2
WIP field implementation (the Montgomery REDC algo is missing) 2026-01-22 18:49:39 +01:00
Balazs Komuves
be33579a63
some basic bigint operations 2026-01-22 16:30:52 +01:00