RosettaCodeData/Task/Modular-exponentiation/Oforth/modular-exponentiation.fth
2023-07-01 13:44:08 -04:00

6 lines
206 B
Forth

: powmod(base, exponent, modulus)
1 exponent dup ifZero: [ return ]
while ( dup 0 > ) [
dup isEven ifFalse: [ swap base * modulus mod swap ]
2 / base sq modulus mod ->base
] drop ;