On Sunday, October 9, 2016 at 4:48:31 PM UTC, Bill Hart wrote: > > > > On Sunday, 9 October 2016 18:08:29 UTC+2, Dima Pasechnik wrote: >> >> >> >> On Sunday, October 9, 2016 at 3:35:57 PM UTC, Bill Hart wrote: >>> >>> By default, Singular uses 16 bit exponents. But it is perfectly capable >>> of working with exponents up to 64 bits. That will be slower of course. >>> >>> why? I presume arithmetic on 16-bit integers is not faster than on >> 32-bit, or even 64-bit. >> > > It's the exponent arithmetic, not the coefficients we are talking about. > sure - I was thinking about univariate case; in the multivariate case, if you want fast arithmetic on exponents of monomials given as integer vectors in year 2016, you probably would want to use GPU
> The exponents are packed, with four 16 bit field in a 64 bit word. This is > *much* faster. I use the same trick, as does just about every decent > computer algebra system out there. > > Interestingly, Magma only allows exponents up to about 30 bits, but it > takes a few minutes to compute x^(2^30 - 1). > I wonder why this happens - a Flint issue? : sage: R.<x>=QQ[] sage: x^(2^30)-1 Exception (FLINT memory_manager). Unable to allocate memory. sage: x^(2^30-1) Killed (which appears to indicate that the recovery from the exception was not complete) On the other hand: sage: timeit('x^(2^20-1)') 125 loops, best of 3: 1.66 ms per loop sage: 2^20-1 1048575 sage: timeit('x^1048575') 125 loops, best of 3: 1.66 ms per loop sage: timeit('x^10') 625 loops, best of 3: 381 ns per loop sage: 2^30-1 1073741823 sage: timeit('x^1073741823') 5 loops, best of 3: 1.72 s per loop sage: timeit('x^(2^30-1)') 5 loops, best of 3: 1.71 s per loop but then sage: x^(2^30-1) <repr(<sage.rings.polynomial.polynomial_rational_flint.Polynomial_rational_flint at 0x7fbb07bd7910>) failed: MemoryError> looks quite strange... Dima > >> >> >> >>> I guess it isn't easy for Sage to change the relevant ring upon overflow >>> to one using 64 bit exponents. >>> >>> I can't say whether it would be easy or hard for Singular to >>> automatically change the exponent size for you. For basic arithmetic, I >>> have implemented precisely this in the code I've been writing. But Singular >>> is almost infinitely more complex than the very simple cases I've been >>> dealing with in my own code. At this stage I couldn't even hazard a guess. >>> >>> I'll ask Hans if I remember. But either way, I believe this would be an >>> *extremely* time consuming thing to fix. How important is it? >>> >>> Bill. >>> >>> On Wednesday, 5 October 2016 01:10:31 UTC+2, Jakob Kroeker wrote: >>>> >>>> >>>> https://trac.sagemath.org/ticket/6472 >>>> >>>> even for recent singular upgrade >>>> >>>> https://trac.sagemath.org/ticket/17254 >>>> >>>> and it was not(?) reported to upstream... >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.