# Singular

#### D.4.22.3 splitring

Procedure from library `primitiv.lib` (see primitiv_lib).

Usage:
splitring(f[,L]); f poly, L list of polys and/or ideals (optional)

Assume:
f is univariate and irreducible over the active ring.
The active ring must allow an algebraic extension (e.g., it cannot be a transcendent ring extension of Q or Z/p).

Return:
ring;
if called with a nonempty second parameter L, then in the output ring there is defined a list erg ( =L mapped to the new ring); if the minpoly of the active ring is non-zero, then the image of the primitive root of f in the output ring is appended as last entry of the list erg.

Note:
If the old ring has no parameter, the name `a` is chosen for the parameter of R (if `a` is no ring variable; if it is, `b` is chosen, etc.; if `a,b,c,o` are ring variables, `splitring(f[,L])` produces an error message), otherwise the name of the parameter is kept and only the minimal polynomial is changed.
The names of the ring variables and the orderings are not affected.

Example:
 ```LIB "primitiv.lib"; ring r=0,(x,y),dp; def r1=splitring(x2-2); setring r1; basering; // change to Q(sqrt(2)) ==> // characteristic : 0 ==> // 1 parameter : a ==> // minpoly : (a2-2) ==> // number of vars : 2 ==> // block 1 : ordering dp ==> // : names x y ==> // block 2 : ordering C // change to Q(sqrt(2),sqrt(sqrt(2)))=Q(a) and return the transformed // old parameter: def r2=splitring(x2-a,a); ==> // new minimal polynomial: a4-2 setring r2; basering; erg; ==> // characteristic : 0 ==> // 1 parameter : a ==> // minpoly : (a4-2) ==> // number of vars : 2 ==> // block 1 : ordering dp ==> // : names x y ==> // block 2 : ordering C ==> [1]: ==> (a2) ==> [2]: ==> (a) // the result is (a)^2 = (sqrt(sqrt(2)))^2 kill r1; kill r2; ```