radfield - compute a representation for a field generated by radicals
|
Calling Sequence
|
|
radfield(S, G)
|
|
Parameters
|
|
S
|
-
|
set of radical numbers
|
G
|
-
|
(optional) set of algebraic numbers in RootOf or radical notation (a ground field)
|
|
|
|
|
Description
|
|
•
|
Given a set of radical numbers (see radnum), this function attempts to compute irreducible indexed RootOfs generating the same field. Algebraic numbers in RootOf notation (see algnum) are also supported.
|
•
|
The input may also contain algebraic functions in RootOf notation (algfun) or in radical notation (radfun), but in this case, the output RootOfs will not necessarily be irreducible.
|
•
|
A set of RootOfs S is called irreducible (or independent) if the RootOfs satisfy no nontrivial algebraic relations. In other words, the polynomial defining a RootOf R in S must be irreducible over the field generated by the RootOfs in S which do not contain R.
|
•
|
Typically, this function may be used to preprocess an expression involving algebraic numbers in radical notation before invoking a procedure which requires irreducible RootOfs as input. This function is similar to evala,Algfield.
|
•
|
The output is a five element list of the following form (the first three elements are the most important ones):
|
|
[[r_1=f_1(R_1,...,R_s), r_2=f_2(R_1,....,R_s),...., r_t=f_t(R_1,...,R_s)],
|
|
[[R_1=g_1(r_1,...,r_t), R_2=g_2(r_1,....,r_t),...., R_s=g_s(r_1,...,r_t)],
|
|
where the r_i's are the input radicals, the R_i's are the output RootOfs, the f_i's are the expressions of the r_i's in terms of the R_i's and the g_i's are the expressions of the R_i's in terms of the r_i's.
|
|
- The first sublist is a forward substitution list meant to be used in conjunction with the eval and subs commands. The purpose of this list is to transform an expression so that it involves only a set of irreducible RootOfs.
|
|
- The second sublist is a backward substitution list meant to restore radical notations.
|
|
- The third element is the set of irreducible RootOfs.
|
|
- The return code can be true, if the routine could find a set of irreducible RootOfs to express the input, false if such a set could not be found and some unresolved relations exist (see the Examples section), or FAIL if the routine could not determine whether the RootOfs are irreducible or not, but no unresolved relation was found. Typically, the latter may happen when the input contains algebraic functions (see algfun and radfun).
|
|
- The fifth element is a set of unresolved relations.
|
•
|
If a second argument G is given, then the RootOfs and radicals in the set G are considered as irreducible and independent.
|
|
- The running time of this algorithm is, in general, exponential in the number of input RootOfs, and so is the degree of the extension generated by the input.
|
|
- Since the ordering of objects may vary from a session to another, the output may change accordingly. The ordering may also have an influence on the running time.
|
•
|
If infolevel[radfield] is assigned a positive integer, then information about the execution of the program will be displayed.
|
|
|
Examples
|
|
>
|
|
| (1) |
>
|
|
| (2) |
>
|
|
>
|
|
| (3) |
>
|
|
>
|
|
| (4) |
>
|
|
| (5) |
>
|
|
| (6) |
Factorization algorithms for polynomials over algebraic extension fields usually require irreducible RootOfs. In the example below, the polynomial p is transformed and its coefficients are restored after the factorization step.
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
If the input contains, for instance, RootOfs that are not indexed, this routine may not be able to make branch choices. In this case, The return code is false and the fifth argument is used to return the ambiguous relations:
>
|
|
| (10) |
>
|
|
| (11) |
In some cases, for instance when algebraic functions are involved, radfield does not always try to ensure that the RootOfs are indeed independent. In this case, the return code is FAIL.
>
|
|
| (12) |
|
|