# Singular

## 3.3 Rings and orderings

All non-trivial algorithms in SINGULAR require the prior definition of a ring. Such a ring can be

1. a polynomial ring over a field,
2. a polynomial ring over a ring
3. a localization of 1.
4. a quotient ring by an ideal of 1. or 2.,
5. a tensor product of 1. or 2.

Except for quotient rings, all of these rings are realized by choosing a coefficient field, ring variables, and an appropriate global or local monomial ordering on the ring variables. See Term orderings, Mathematical background.

The coefficient field of the rings may be

1. the field of rational numbers (QQ),
2. finite fields , a prime ,
3. finite fields with elements, a prime, ,
4. transcendental extension of or ,
5. simple algebraic extension of or ,
6. the field of real numbers represented by floating point numbers of a user defined precision,
7. the field of complex numbers represented by (pairs of) floating point numbers of a user defined precision,
8. the ring of integers (ZZ),
9. finite rings with .

In case of coefficient rings, which are not fields, only the following functions are guaranteed to work:

• - basic polynomial arithmetic, i.e. addition, multiplication, division, exponentation
• - std, i.e. computing standard bases (and related: syz, etc.)
• - interred
• - reduce

Throughout this manual, the current active ring in SINGULAR is called basering. The reserved name basering in SINGULAR is an alias for the current active ring. The basering can be set by declaring a new ring as described in the following subsections or by using the commands setring and keepring. See keepring, setring.

Objects of ring dependent types are local to a ring. To access them after a change of the basering they have to be mapped using map or by the functions imap or fetch. See Objects, fetch, imap, map.

All changes of the basering in a procedure are local to this procedure unless a keepring command is used as the last statement of the procedure. See Procedures, keepring.