

For example, if the user has defined the procedure `mod/f` then the operation f x, y mod 23 will generate the function call `mod/f`(x, y, 23). There is an interface for user-defined mod functions. Its right precedence is immediately higher than +, - and lower than *, /. The left precedence of the mod operator is lower than (less binding strength than) the other arithmetic operators. Where the latter case will perform i j − 1 mod m. Other modular arithmetic operations are stated in their natural form: Similarly Powmod(a, n, b, x) mod m computes Rem(a^n, b, x) mod m (where a and b are polynomials in x ) without first computing a n mod m. In the latter form, the powering will be performed intelligently by the mod operation. Rather, the inert operator &^ should be used: i &^ n mod m. To compute i n mod m where i is an integer, it is undesirable to use this "obvious" syntax because the powering will be performed first over the integers (possibly resulting in a very large integer) before reduction modulo m. The following functions for polynomial and matrix arithmetic over finite rings and fields are known to mod. The extension α is a RootOf a monic univariate irreducible polynomial of degree n over the integers mod m. Elements of finite fields of characteristic m with q = m n elements are represented as polynomials in α where α is a simple algebraic extension over the integers mod m. If the modulus m is a prime integer, then all coefficient arithmetic is done in the finite field of integers modulo m. all rational coefficients will be reduced to integers in the range − iquo m − 1, 2, iquo m, 2. When assigned the value mods, the symmetric representation is used i.e. all rational coefficients will be reduced to integers in the range 0, m − 1. When assigned the value modp (the default), the positive representation for integers modulo m is used i.e. The environment variable `mod` may be assigned either the modp function or the mods function. The operator syntax e mod m is equivalent to the function call `mod`(e, m). It incorporates facilities for doing finite field arithmetic and polynomial and matrix arithmetic over finite fields, including factorization. The mod operator evaluates the expression e over the integers modulo m. Computation with polynomials over the integers modulo mĬomputation over the integers modulo m using positive representationĬomputation over the integers modulo m using symmetric representation
