I have a polynomial f in ZZ[X,Y] which I want to factor.  (Typical
example has degree 84 in X, degree 336 in Y and factors into degrees
(6,24)+(78,312).)

f.factor() does not work: NotImplementedError: Factorization of
multivariate polynomials over non-fields is not implemented.

Changing ring to QQ[X,Y] works but takes over 10 hours!!!!

Changing ring to GF(p)[X,Y] works very nicely and takes only about 6
seconds -- but only for smallish primes!  In the example, the first
factor has maximum coefficeint about 5*10^13, so should be computable
by factoring over GF(p) for p=next_prime(10^14), but that leads to
some nasty Singular error message:

TypeError: Singular error:
   ? Wrong ground field specification
   ? cannot make ring
   ? error occurred in or before STDIN line 27: `ring
sage7=100000000000031,(Xr, tr),dp;`
   ? expected ring-expression. type 'help ring;'

I can easily factor mod two primes around 10^7 and then use CRT,
though that is a bit of a pain.  So my question is:  what's this limit
on the size of primes p for which factorization over GF(p)[X,Y] is
possible, where does this limit come from, and is it documented?

And of course the follow-up question is:  does anyone out there fancy
implementing factorization over ZZ[X,Y], say by factoring modulo some
not-too-large primes and using CRT until the results stabilise (all of
which must be standard practice and written down somewhere with proper
bounds, etc)?

John Cremona

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

Reply via email to