> Is there any chance you could write an email explaining the basic
> ideas behind your new factorization implementation?   I'm just curious
> what goes into it.  Even something along the lines of this page would
> be nice:
>
>    http://magma.maths.usyd.edu.au/magma/htmlhelp/text315.htm
>
>  -- William
>

It's not very different from what other systems do. First of course
square free factorization, then try a few (2) random values for all
indeterminates except the first one, for a fast check of
irreducibility. If not, lift the equality in one variable
P(x,0,...0)=product P_i(x,0,...,0)
more precisely, one must take care of the leading coefficient, hence
lift
P*lcoeff(P)^(#nfactors-1)=product P_i
where in P_i the leading coefficient is replaced by lcoeff(P).
In order to avoid densification (if lcoeff(P) has many coefficients),
I make a bivariate factorization, this way instead of using lcoeff(P)
for every P_i, I'm using a divisor of lcoeff(P). It's a little
different from what is describe in the thesis of Bernardin (I don't
make polynomial rational reconstructions for example).
There is also a try to do sparse factorization before.
If Hensel lift does not work (for example P(x,0...0) loose degree or
has non square-free factors), I'm using "heuristic factorization",
i.e. evaluate P at x>=2 linfnorm(P)+2, factor this polynomial,
reconstruct factors (using x as basis and symmetric remainder) and
check division, if remainder is 0 an irreducible factor has been
found, otherwise try with a larger value of x.
The corresponding code slices are in ezgcd.cc try_sparse_factor and
try_hensel_lift_factor, and do_factor in gausspol.cc.

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to