power_mod ..... 法における冪乗を計算する

書式

power_mod(整数1, 整数2, 自然数)

で用い、「自然数」を法として「整数1」の「整数2」乗を計算する。

(%i1) power_mod(2, 12345, 5);
(%o1)                             2

基本的には mod(整数1, 整数2, 自然数) 同じだが、mod では大きな数は扱えず、上の例でさえエラーになる:

(%i2) mod(2^12345, 5);

Maxima encountered a Lisp error:

 
Error in function KERNEL::INTEXP:
   The absolute value of 12345 exceeds EXTENSIONS:*INTEXP-MAXIMUM-EXPONENT*.

Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.

また、power_mod は第 2 引数「整数2」が負の数でもよいため、逆元を求めることもできる(内部で inv_mod が呼ばれるらしい):

(%i3) power_mod(2, -1, 23);
(%o3)                            12