Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
18
Task/Modular-inverse/M4/modular-inverse.m4
Normal file
18
Task/Modular-inverse/M4/modular-inverse.m4
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
divert(-1)
|
||||
|
||||
# I assume non-negative arguments. The algorithm is described at
|
||||
# https://en.wikipedia.org/w/index.php?title=Extended_Euclidean_algorithm&oldid=1135569411#Modular_integers
|
||||
|
||||
define(`inverse',`_$0(eval(`$1'), eval(`$2'))')
|
||||
define(`_inverse',`_$0($2, 0, 1, $2, $1)')
|
||||
define(`__inverse',
|
||||
`dnl n = $1, t = $2, newt = $3, r = $4, newr = $5
|
||||
ifelse(eval($5 != 0), 1, `$0($1, $3,
|
||||
eval($2 - (($4 / $5) * $3)),
|
||||
$5,eval($4 % $5))',
|
||||
eval($4 > 1), 1, `no inverse',
|
||||
eval($2 < 0), 1, eval($2 + $1),
|
||||
$2)')
|
||||
|
||||
divert`'dnl
|
||||
inverse(42, 2017)
|
||||
Loading…
Add table
Add a link
Reference in a new issue