calc: Modulo Forms
5.10 Modulo Forms
=================
A “modulo form” is a real number which is taken modulo (i.e., within an
integer multiple of) some value M. Arithmetic modulo M often arises in
number theory. Modulo forms are written ‘A mod M’, where A and M are
real numbers or HMS forms, and ‘0 <= a < M’. In many applications ‘a’
and ‘M’ will be integers but this is not required.
To create a modulo form during numeric entry, press the shift-‘M’ key
to enter the word ‘mod’. As a special convenience, pressing shift-‘M’ a
second time automatically enters the value of ‘M’ that was most recently
used before. During algebraic entry, either type ‘mod’ by hand or press
‘M-m’ (that’s ‘<META>-m’). Once again, pressing this a second time
enters the current modulo.
Modulo forms are not to be confused with the modulo operator ‘%’.
The expression ‘27 % 10’ means to compute 27 modulo 10 to produce the
result 7. Further computations treat this 7 as just a regular integer.
The expression ‘27 mod 10’ produces the result ‘7 mod 10’; further
computations with this value are again reduced modulo 10 so that the
result always lies in the desired range.
When two modulo forms with identical ‘M’’s are added or multiplied,
the Calculator simply adds or multiplies the values, then reduces modulo
‘M’. If one argument is a modulo form and the other a plain number, the
plain number is treated like a compatible modulo form. It is also
possible to raise modulo forms to powers; the result is the value raised
to the power, then reduced modulo ‘M’. (When all values involved are
integers, this calculation is done much more efficiently than actually
computing the power and then reducing.)
Two modulo forms ‘A mod M’ and ‘B mod M’ can be divided if ‘a’, ‘b’,
and ‘M’ are all integers. The result is the modulo form which, when
multiplied by ‘B mod M’, produces ‘A mod M’. If there is no solution to
this equation (which can happen only when ‘M’ is non-prime), or if any
of the arguments are non-integers, the division is left in symbolic
form. Other operations, such as square roots, are not yet supported for
modulo forms. (Note that, although ‘(A mod M)^.5’ will compute a
“modulo square root” in the sense of reducing ‘sqrt(a)’ modulo ‘M’, this
is not a useful definition from the number-theoretical point of view.)
It is possible to mix HMS forms and modulo forms. For example, an
HMS form modulo 24 could be used to manipulate clock times; an HMS form
modulo 360 would be suitable for angles. Making the modulo ‘M’ also be
an HMS form eliminates troubles that would arise if the angular mode
were inadvertently set to Radians, in which case ‘2@ 0' 0" mod 24’ would
be interpreted as two degrees modulo 24 radians!
Modulo forms cannot have variables or formulas for components. If
you enter the formula ‘(x + 2) mod 5’, Calc propagates the modulus to
each of the coefficients: ‘(1 mod 5) x + (2 mod 5)’.
You can use ‘v p’ and ‘%’ to modify modulo forms. Packing and
Unpacking. Basic Arithmetic.
The algebraic function ‘makemod(a, m)’ builds the modulo form
‘a mod m’.