書式
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