]> birchwood-abbey.net Git - mit-scheme.git/commitdiff
Document modexp.
authorTaylor R Campbell <campbell+mit-scheme@mumble.net>
Tue, 7 Jul 2020 21:22:29 +0000 (21:22 +0000)
committerTaylor R Campbell <campbell+mit-scheme@mumble.net>
Tue, 7 Jul 2020 21:22:52 +0000 (21:22 +0000)
(cherry picked from commit 4e02ecf15d88e71f99374816873576f32e1cee27)

doc/ref-manual/numbers.texi

index 9a8f047f3fbb06dc94bd75870280dca10cf7710d..01c50e042de436f0902c35a9427b7cca83226446 100644 (file)
@@ -629,6 +629,32 @@ multiple of their arguments.  The result is always non-negative.
 @end example
 @end deffn
 
+@deffn procedure modexp b e m
+Modular exponentiation.
+Returns
+@iftex
+@tex
+$b^e \bmod m$.
+@end tex
+@end iftex
+@ifnottex
+b^e mod m.
+@end ifnottex
+@var{b}, @var{e}, and @var{m} must be exact integers; @var{m} must be
+nonzero.
+Mathematically equivalent to @code{(modulo (expt b e) m)}, but works
+even for large inputs for which the intermediate @code{(expt b e)}
+would overflow memory.
+
+@example
+@group
+(modexp 1234 5678 90)   @result{} 46
+(modexp 2 (expt 2 1024) 299)
+                        @result{} 55
+@end group
+@end example
+@end deffn
+
 @deffn procedure numerator q
 @deffnx procedure denominator q
 These procedures return the numerator or denominator of their argument;