Go to the first, previous, next, last section, table of contents.

### `asq`, `af`, `af_noalg`

`asq(poly)`
  :: Square-free factorization of polynomial poly over an algebraic number field.
`af(poly,alglist)`
`af_noalg(poly,defpolylist)`
  :: Factorization of polynomial poly over an algebraic number field.

return
  list
poly
  polynomial
alglist
  `root` list
defpolylist
  `root` list of pairs of an indeterminate and a polynomial

- Both defined in the file ``sp'`.
- If the inputs contain no root's, these functions run fast since they invoke functions over the integers. In contrast to this, if the inputs contain root's, they sometimes take a long time, since `cr_gcda()` is invoked.
- Function `af()` requires the specification of base field, i.e., list of root's for its second argument.
- In the second argument `alglist`, root defined last must come first.
- In `af(F,AL)`, `AL` denotes a list of `roots` and it represents an algebraic number field. In `AL=[An,...,A1]` each `Ak` should be defined as a root of a defining polynomial whose coefficients are in `Q(A(k+1),...,An)`.

      [1] A1 = newalg(x^2+1);
      [2] A2 = newalg(x^2+A1);
      [3] A3 = newalg(x^2+A2*x+A1);
      [4] af(x^2+A2*x+A1,[A2,A1]);
      [[x^2+(#1)*x+(#0),1]]

  To call `sp_noalg`, one should replace each algebraic number ai in poly with an indeterminate vi. `defpolylist` is a list [[vn,dn(vn,...,v1)],...,[v1,d(v1)]]. In this expression di(vi,...,v1) is a defining polynomial of ai represented as a multivariate polynomial.

      [1] af_noalg(x^2+a2*x+a1,[[a2,a2^2+a1],[a1,a1^2+1]]);
      [[x^2+a2*x+a1,1]]

- The result is a list, as a result of usual factorization, whose elements is of the form [factor, multiplicity]. In the result of `af_noalg`, algebraic numbers in @v{factor} are replaced by the indeterminates according to defpolylist.
- The product of all factors with multiplicities counted may differ from the input polynomial by a constant.

    [98] A = newalg(t^2-2);
    (#0)
    [99] asq(-x^4+6*x^3+(2*alg(0)-9)*x^2+(-6*alg(0))*x-2);
    [[-x^2+3*x+(#0),2]]
    [100] af(-x^2+3*x+alg(0),[alg(0)]);
    [[x+(#0-1),1],[-x+(#0+2),1]]
    [101] af_noalg(-x^2+3*x+a,[[a,x^2-2]]);
    [[x+a-1,1],[-x+a+2,1]]

`Reference`
  section `cr_gcda`, section `fctr`, `sqfr`

Go to the first, previous, next, last section, table of contents.