This is now http://sagetrac.org/sage_trac/ticket/6168.

david

On May 30, 12:03 pm, Bill Hart <goodwillh...@googlemail.com> wrote:
> Regarding compilation with debug, zn_poly is passed the flag -DNEBUG
> for a couple of files, instead of -DNDEBUG. This is a sloppy typo on
> my part. Originally I think I took the output from the zn_poly
> configure script, but in the latest version there were some new files,
> and I guess I added the targets by hand to the FLINT makefile.
>
> At any rate, that is not the cause of our problems, and I will fix it
> in the next version of FLINT.
>
> As for something not being reduced before being passed to zn_poly, it
> is likely that someone assumed FLINT reduces coefficients mod p before
> doing anything with them, which it does not. I met at least one such
> person. It would be a performance issue to do this at any level.
> Instead, FLINT assumes all polynomials it is passed have reduced
> coefficients and it guarantees too return polynomials which respect
> this, except for I think one function (zmod_poly_add_nored I think)
> which would be specifically documented as not doing so.
>
> Sorry none of this actually helps find the bug. It is still possible
> of course that zn_poly is actually being passed garbage by FLINT, and
> that garbage just happens to not be reduced.
>
> At some point in Martin's wrapper of zmod_poly in Sage, there was an
> option you could switch on to compare the output from FLINT with that
> of Pari. Thus helped us track down the specific polynomial computation
> which caused the issue last time.
>
> Bill.
>
> On 30 May, 06:11, David Harvey <dmhar...@cims.nyu.edu> wrote:
>
> > On May 29, 10:54 pm, David Harvey <dmhar...@cims.nyu.edu> wrote:
>
> > > Hmmm let me try again. Would appreciate help from people familiar with
> > > FLINT wrapper and/or coercion system.
>
> > > sage: R.<x> = PolynomialRing(Integers(121))
> > > sage: S.<y> = PolynomialRing(Integers(11))
> > > sage: S(50*x)
> > > 6*y
> > > sage: R(S(50*x))
> > > 50*x     # !!!!!!
>
> > > I think what's actually happening is that the underlying FLINT
> > > zmod_poly object is not getting coefficients reduced into [0, 10].
> > > This causes other problems indirectly (e.g. #5817). I can't quite
> > > trace why this is happening. Any ideas?
>
> > There is a also a performance issue. The following is in sage 3.4.2:
>
> > sage: R.<x> = PolynomialRing(Integers(11^6))
> > sage: S.<y> = PolynomialRing(Integers(11^3))
> > sage: f = R([ZZ.random_element(11^6) for _ in range(1000000)])
> > sage: time g = f * f
> > CPU times: user 0.96 s, sys: 0.01 s, total: 0.97 s
> > Wall time: 0.96 s
> > sage: f = S(f)
> > sage: time g = f * f
> > CPU times: user 0.93 s, sys: 0.00 s, total: 0.93 s
> > Wall time: 0.93 s
> > sage: f = S([ZZ.random_element(11^3) for _ in range(1000000)])
> > sage: time g = f * f
> > CPU times: user 0.55 s, sys: 0.00 s, total: 0.55 s
> > Wall time: 0.55 s
>
> > What appears to be happening is that FLINT is using kronecker
> > substitution for the multiplication (packing polynomials into an
> > integer and then multiplying the integers), but in the second
> > multiplication above it is *not* reducing mod 11^3 before doing this.
>
> > Even better evidence is the following: if I install flint 1.2.5 (as
> > per trac #5817) I get:
>
> > sage: R.<x> = PolynomialRing(Integers(11^6))
> > sage: S.<y> = PolynomialRing(Integers(11^3))
> > sage: f = R([ZZ.random_element(11^6) for _ in range(1000000)])
> > sage: f = S(f)
> > sage: time g = f * f
> > sage.bin: zn_poly/src/zn_poly.h:185: zn_mod_add_slim: Assertion `x <
> > mod->m && y < mod->m' failed.
> > /home/dmharvey/5817/sage-3.4.2-new/local/bin/sage-sage: line 198:
> > 16421 Aborted                 (core dumped) sage-ipython "$@" -i
>
> > This means two things: (1) zn_poly is getting compiled with debug
> > assertions, which it shouldn't, since this is a major performance
> > loss, and (2) some zn_poly routine is getting called on a polynomial
> > with non-normalised coefficients.
>
> > But I still don't know exactly where the non-normalisation is
> > happening.
>
> > david
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to