# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

=head1 NAME

 invmod - compute modular inverse of an integer

=head1 SYNOPSIS

 invmod <a> <m>

=head1 DESCRIPTION

The B<invmod> program computes the inverse of I<a>, modulo I<m>, if
that inverse exists.  Both I<a> and I<m> are arbitrary-precision
integers in decimal notation.  The result is written in standard
decimal notation to the standard output.

If there is no inverse, the message:

 No inverse

...will be printed to the standard output (an inverse exists if and
only if the greatest common divisor of I<a> and I<m> is 1).

=head1 SEE ALSO

gcd(1), isprime(1), lap(1)

=head1 AUTHOR

 Michael J. Fromberger <sting@linguist.dartmouth.edu>
 Thayer School of Engineering, Hanover, New Hampshire, USA
