Skip to main content
44 events
when toggle format what by license comment
Mar 10 at 15:39 history edited fgrieu CC BY-SA 4.0
Fix stated number of limbs for T before loop on j
Mar 5 at 5:04 history edited fgrieu CC BY-SA 4.0
Add missing step
Feb 22 at 12:05 history edited fgrieu CC BY-SA 4.0
p changed to N
Jan 21 at 18:50 history edited fgrieu CC BY-SA 4.0
Fix
Jul 26, 2023 at 6:27 history edited fgrieu CC BY-SA 4.0
Practical method to compute a Montgomery representative
Jul 26, 2023 at 6:21 history edited fgrieu CC BY-SA 4.0
Practical method to compute a Montgomery representative
S Jul 24, 2023 at 17:14 history mod moved comments to chat
S Jul 24, 2023 at 17:14 comment added fgrieu This discussion continues in this chat then this one, including programming details like how to implement $T\gets t_2\cdot\beta+t_1+q\cdot n_j+y_i\cdot x_j+r_j$ with x64 intrinsics.
Jul 24, 2023 at 17:12 history edited fgrieu CC BY-SA 4.0
Fix and improve "Conversion back to regular PNS"
Jul 24, 2023 at 16:42 history edited fgrieu CC BY-SA 4.0
Fix Z->R
Jul 24, 2023 at 13:49 comment added fgrieu @KevinStefanov: Montgomery arithmetic does not by itself gives a large speedup. A factor of 3 would be surprising even if we include the benefit of interleaving. The essential thing for 3000-bit numbers is using wide limbs so that $\ell=\lceil3000/\log_2(\beta)\rceil$ is as low as possible, AND an algorithm doing in the order of $2\ell^2$ limb multiplications per 3000×3000 multiplication and modular reduction, or something subquadratic like Karatsuba (but the later is much more complex and seldom attempted at first).
Jul 24, 2023 at 13:29 comment added Kevin Stefanov So given this do you think it's worth it to implement Montgomery Multiplication to do those 3000 modular MUL operations with, instead of normal reduction after each MUL? If i want to make them run faster?
Jul 24, 2023 at 13:27 comment added Kevin Stefanov N is a 3000-bit number, that's why after each MUL's 6000-bit result when we divide by N and get the remainder, we get back to a 3000-bit number, to be multiplied by the next 3000-bit number in the chain of several thousand sequential modular multiplications mod N (each number in the chain is 3000-bits). Then get another 6000-bit MUL result, divide by N and take remainder, which gets us back to a 3000-bit number, and so on and so forth. This way I perform about 3000 modular multiplications on 3000-bit numbers.
Jul 24, 2023 at 13:12 comment added Kevin Stefanov Currently I've implemented 3000 sequential modular multiplications of 3000-bit numbers mod N as simply: compute one MUL, get a 6000-bit result, divide it by N and get the remainder, which you multiply by the next 3000-bit number, get another 6000-bit result, divide this by N and get the result, and so on. Is doing those in Montgomery Space gonna be much faster? Because you mentioned the same speedup is possible with interleaving with the usual modular multiplication which concerned me a bit whether I even need to implement Montgomery Multiplication in the first place.
Jul 24, 2023 at 9:49 history edited fgrieu CC BY-SA 4.0
Polish
Jul 24, 2023 at 9:43 history edited fgrieu CC BY-SA 4.0
Polish
Jul 24, 2023 at 9:37 history edited fgrieu CC BY-SA 4.0
Polish
Jul 24, 2023 at 9:29 history edited fgrieu CC BY-SA 4.0
General algorithm for conversion back to regular PNS simplfies
Jul 24, 2023 at 6:26 history edited fgrieu CC BY-SA 4.0
Polish
Jul 24, 2023 at 6:07 history edited fgrieu CC BY-SA 4.0
Polish
Jul 24, 2023 at 5:16 history edited fgrieu CC BY-SA 4.0
Polish
Jul 24, 2023 at 5:02 history edited fgrieu CC BY-SA 4.0
Fix roseta stone
Jul 23, 2023 at 18:32 history edited fgrieu CC BY-SA 4.0
Actualy use q instead of m
Jul 23, 2023 at 16:27 history edited fgrieu CC BY-SA 4.0
Polish
Jul 23, 2023 at 16:15 history edited fgrieu CC BY-SA 4.0
Better conversion back to regular PNS. Give references. Align notation.
Jul 22, 2023 at 12:43 vote accept Kevin Stefanov
Jul 21, 2023 at 12:40 history edited fgrieu CC BY-SA 4.0
Fully get rid of floor
Jul 21, 2023 at 12:27 history edited fgrieu CC BY-SA 4.0
Polish
Jul 21, 2023 at 12:03 history edited fgrieu CC BY-SA 4.0
Code optimization considerations. Align notation with MCA.
Jul 21, 2023 at 8:48 history edited fgrieu CC BY-SA 4.0
Consustent use of ⋅ for multiplication
Jul 21, 2023 at 8:40 history edited fgrieu CC BY-SA 4.0
More on mod
Jul 21, 2023 at 8:17 history edited fgrieu CC BY-SA 4.0
Polish
Jul 21, 2023 at 7:45 vote accept Kevin Stefanov
Jul 21, 2023 at 7:48
Jul 21, 2023 at 5:30 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 21:32 history edited fgrieu CC BY-SA 4.0
Remove spurios Beta term
Jul 20, 2023 at 20:38 history edited fgrieu CC BY-SA 4.0
More details on testing result against 1 and N-1
Jul 20, 2023 at 18:43 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 18:26 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 17:45 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 17:37 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 17:22 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 17:15 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 16:15 history edited fgrieu CC BY-SA 4.0
Polish
Jul 20, 2023 at 16:09 history answered fgrieu CC BY-SA 4.0