|
Calling Sequence
|
|
evala(Gcd(P, Q, 'p', 'q'), opts)
|
|
Parameters
|
|
P, Q
|
-
|
polynomials over an algebraic number or function field.
|
p, q
|
-
|
(optional) names
|
opts
|
-
|
(optional) an option name or a set of option names.
|
|
-
|
Options currently supported: 'independent'.
|
|
|
|
|
Description
|
|
•
|
This function computes the monic greatest common divisor of two polynomials with coefficients in an algebraic function field or an algebraic number field.
|
|
Since the ordering of objects may vary from a session to another, the leading coefficient may change accordingly.
|
•
|
The optional arguments p and q are respectively assigned the co-factors of P and Q. Namely, , where G is the Gcd.
|
•
|
The computation is performed in the domain , where:
|
|
x is the set of names in P and Q which do not appear inside a RootOf or a radical,
|
|
K is a field generated over the rational numbers by the coefficients of P and Q.
|
•
|
Partial factorizations are preserved. The result may be a product of powers of expanded polynomials.
|
•
|
Algebraic numbers and functions occurring in the results are reduced modulo their minimal polynomial (see Normal).
|
•
|
If the RootOf and the radicals defining the algebraic numbers are not independent, a case discussion T of the gcd of P and Q over the direct product of rings F defined by the towers of algebraic extensions is computed first. Then, the result of T is combined. If the gcd values over all the branches of T can be combined into one, namely G, then G is the output. Otherwise, an error is reported.
|
•
|
If the expression contains only algebraic numbers in radical notation (2^(1/2), 3^(1/2), 6^(1/2)), the algebraic quantities are not necessarily independent. A basis over Q for the radicals can be computed by Maple in this case.
|
•
|
To skip the independence checking, use the option 'independent'. However, if a zero-divisor is hit when normalizing P and Q during the computation, an error is reported. Furthermore, the result may be incorrect if the option 'independent' is used but the RootOfs are not actually independent.
|
•
|
If a or b contains functions, their arguments are normalized recursively and the functions are frozen before the computation proceeds.
|
•
|
Other objects are frozen and considered as variables.
|
|
|
Examples
|
|
| (3) |
>
|
|
>
|
|
>
|
|
| (8) |
The second argument below is not a polynomial. Therefore, an error is returned:
>
|
|
If a polynomial defining a RootOf is reducible, the RootOf does not generate a well-defined field. The command computes a case discussion and then tries to combine the result. In some cases, an error is returned, as described above.
evala/Gcd/preproc0: "a case discussion result: Array(1..2, {1 = [[1], [RootOf(_Z^2-_Z) = 0]], 2 = [[x-1], [RootOf(_Z^2-_Z) = 1]]}) "
MergeGcds: "Merge result: #cases: 2; gcd(s): [[[1], Record('property' = isPrime, 'polynomials' = [[_z[1], 1, 1, _z[1], isPrimeIrreducible]], 'type' = regular_chain, 'ModulePrint' = module_print_inner)], [[x-1], Record('property' = isPrime, 'polynomials' = [[_z[1], 1, 1, _z[1]-1, isPrimeIrreducible]], 'type' = regular_chain, 'ModulePrint' = module_print_inner)]]"
| |
To pretend that all the defining polynomials are irreducible, use the option 'independent':
>
|
|
Alternatively, use indexed RootOfs:
>
|
|
>
|
|
evala/Gcd/preproc0: "a case discussion result: Array(1..2, {1 = [[x], [RootOf(_Z^2-_Z) = 0]], 2 = [[x+1], [RootOf(_Z^2-_Z) = 1]]}) "
MergeGcds: "Merge result: #cases: 1; gcd(s): [[x+RootOf(_Z^2-_Z), [RootOf(_Z^2-_Z)]]]"
| |
>
|
|
A bivariate example with dependent RootOfs:
>
|
|
>
|
|
| (23) |
>
|
|
| (24) |
evala/Gcd/preproc0: "a case discussion result: Array(1..2, {1 = [[(y+1)*x], [RootOf(_Z^2-_Z+RootOf(_Z^2-2)-2) = -RootOf(_Z^2-2)+1]], 2 = [[y*x], [RootOf(_Z^2-_Z+RootOf(_Z^2-2)-2) = RootOf(_Z^2-2)]]}) "
MergeGcds: "Merge result: #cases: 1; gcd(s): [[y*x+(1/7*(-2*s-1)*t+1/7*s+4/7)*x, [s, t]]]"
| |
| (25) |
|
|
|