%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%W  radiroot.tex          Radiroot documentation          Andreas Distler
%%
%H  $Id:$
%%
%Y  2005
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Functionality of the Package}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Methods for Rational Polynomials}

\> IsSolvable( <f> )
\> IsSolvablePolynomial( <f> )

returns `true' if the rational polynomial <f> has a solvable Galois group and
`false' otherwise. It signals an error if there exists an irreducible factor
with degree greater than 15.

For a rational polynomial <f>
\> SplittingField( <f> )

returns the smallest field, constructed with `FieldByPolynomial' (see Creation
of number fields in Alnuth), that contains all roots of <f>.
\beginexample
gap> x := Indeterminate( Rationals, "x" );;
gap> f := UnivariatePolynomial( Rationals, [1,3,4,1] );
x^3+4*x^2+3*x+1
gap> L := SplittingField( f );
<field in characteristic 0>
gap> y := Indeterminate( L, "y" );;
gap> g := UnivariatePolynomial( L, One(L) * [1,3,4,1] );
y^3+!4*y^2+!3*y+!1
gap> Factors( g );
[ y+(-168/47-535/94*a-253/94*a^2-24/47*a^3-3/94*a^4),
  y+(336/47+488/47*a+253/47*a^2+48/47*a^3+3/47*a^4),
  y+(20/47-441/94*a-253/94*a^2-24/47*a^3-3/94*a^4) ]
gap> FactorsPolynomialKant( f, L );
[ y+(-168/47-535/94*a-253/94*a^2-24/47*a^3-3/94*a^4),
  y+(20/47-441/94*a-253/94*a^2-24/47*a^3-3/94*a^4),
  y+(336/47+488/47*a+253/47*a^2+48/47*a^3+3/47*a^4) ]
\endexample
To factorize a polynomial over its splitting field  one has to embed the
polynomial first, as seen in the example, or use `FactorsPolynomialKant' (see
Alnuth) instead of `Factors'. The primitive elment of the splitting field is
always denoted by `a'.

\> GaloisGroupOnRoots( <f> )

calculates the Galois group <G> of the rational polynomial <f> as a
permutation group with respect to the ordering of the roots of <f> given as
matrices in <G!.roots>.

If you only want to get the Galois group itself it is often better to use
the function `GaloisType' (see Chapter~"ref:Polynomials over the Rationals" in
the {\GAP} reference manual).


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Solving a Polynomial by Radicals}

\> RootsOfPolynomialAsRadicals( <f> )

computes a solution by radicals for the irreducible, rational polynomial <f>
up to degree 15 if this is possible, i. e. if the Galoisgroup of <f> is
solvable, and returns `fail' otherwise. The result is displayed in form of a
dvi-file. Additionally a record <rec> is returned which contains the Galois
group of <f> in the component `galgrp' and the splitting field. The Galois
group is presented as permutation group on the roots which are available as
list of matrices in `<rec>.galgrp!.roots'. The splitting field is given in two
forms; on the one hand the matrix field `K' generated by the roots and on the
other hand an algebraic number field `H' created by the defining polynomial of
the matrix field. The component `<rec>.K!.cyclics' provides a list of pairs
whose first entries are matrices which define the splitting field by gradual,
cyclic extensions and whose second entries give the degree of the according
extension. For the computation a root of unity that lies in the matrix field
is used and can be found in `<rec>.K!.unity'

The computation may last very long and doesn't finish for every example if the
degree of <f> is greater than 7.

\> RootsOfPolynomialAsRadicalsNC( <f>, <display> )

has the advantage that it can be used for polynomials with arbitrary
degree. It does essentially the same as `RootsOfPolynomialAsRadicals' except
that you can choose whether you want to create a dvi-file and display it or not
by setting the boolean <display>. The function performs no test whether the
polynomial <f> is irreducible. It also doesn't check at the beginning if <f> is
solvable.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E





