Montgomery reduction: Difference between revisions
Content added Content deleted
(→{{header|Quackery}}: multiple improvements) |
(→{{header|Quackery}}: tidied up code layout) |
||
Line 1,480: | Line 1,480: | ||
<code>**mod</code> is defined at [[Modular exponentiation#Quackery]]. |
<code>**mod</code> is defined at [[Modular exponentiation#Quackery]]. |
||
<syntaxhighlight lang="Quackery"> [ 0 swap [ dup while dip 1+ 1 >> again ] drop ] |
<syntaxhighlight lang="Quackery"> [ 0 swap [ dup while dip 1+ 1 >> again ] drop ] is bits ( n --> n ) |
||
[ 1 & ] |
[ 1 & ] is odd ( n --> b ) |
||
[ over bits times [ dup odd if [ over + ] 1 >> ] swap mod ] |
[ over bits times [ dup odd if [ over + ] 1 >> ] swap mod ] is monred ( n n --> n ) |
||
[ 750791094644726559640638407699 ] is m ( --> n ) |
[ 750791094644726559640638407699 ] is m ( --> n ) |
||
Line 1,515: | Line 1,515: | ||
cr |
cr |
||
say "Montgomery computation of x1^x2 mod m: " x1 x2 m **mon echo cr |
say "Montgomery computation of x1^x2 mod m: " x1 x2 m **mon echo cr |
||
say "Modular exponentiation of x1^x2 mod m: " x1 x2 m **mod echo cr |
say "Modular exponentiation of x1^x2 mod m: " x1 x2 m **mod echo cr</syntaxhighlight> |
||
</syntaxhighlight> |
|||
{{out}} |
{{out}} |