Next: Error Forms, Previous: Date Forms, Up: Data Types [Contents][Index]

### 4.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. See Packing and Unpacking. See Basic Arithmetic.

The algebraic function ‘`makemod(a, m)`’ builds the modulo form ‘`a mod m`’.

Next: Error Forms, Previous: Date Forms, Up: Data Types [Contents][Index]