QuotientMod( r, s, m )
QuotientMod( R, r, s, m )
In the first form QuotientMod
returns the quotient of the ring elements
r and s modulo the ring element m in their default ring (see
DefaultRing). In the second form QuotientMod
returns the quotient of
the ring elements r and s modulo the ring element m in the ring
R. R must be a Euclidean ring (see IsEuclideanRing) so that
EuclideanRemainder
(see EuclideanRemainder) can be applied. If the
modular quotient does not exist, false
is returned.
The quotient q of r and s modulo m is an element of R such that q s = r modulo m, i.e., such that q s - r is divisable by m in R and that q is either 0 (if r is divisable by m) or the Euclidean degree of q is strictly smaller than the Euclidean degree of m.
gap> QuotientMod( Integers, 13, 7, 11 ); 5 gap> QuotientMod( Integers, 13, 7, 21 ); false
QuotientMod
calls R.operations.QuotientMod( R, r, s, m )
and returns the value.
The default function called this way is RingOps.QuotientMod
, which
applies the Euclidean gcd algorithm to compute the gcd g of s and
m, together with the representation of this gcd as linear combination
in s and m, g = a * s + b * m
. The modular quotient
exists if and only if r is divisible by g, in which case the quotient
is a * Quotient( R, r, g )
. This default function is seldom
overlaid, because there is seldom a better way to compute the quotient.
GAP 3.4.4