On Wed, Jul 15, 2009 at 11:23 AM, Martin
Albrecht<[email protected]> wrote:
>
>> That's not surprising given what power_mod does. Do power_mod?? to
>> see. It's generic code that does the arithmetic in the parent ring,
>> then calls mod after each multiply. so in the above first example,
>> zmod_poly is never used.
>
> This reminds me: Why do we have power_mod() when pow() does the same thing
> when given three arguments? Maybe this was discussed before and I just can't
> recall it.
Hmm. Pow's third argument is often ignored:
sage: K.<x> = ZZ["x"]
sage: f = 2*x^2 + 3*x + 1
sage: timeit('power_mod(f,10,24)')
625 loops, best of 3: 162 µs per loop
sage: timeit('pow(f,10,24)')
625 loops, best of 3: 11.9 µs per loop
That seems fast, but :
sage: pow(f,10,24)
1024*x^20 + 15360*x^19 + 108800*x^18 + 483840*x^17 + 1514880*x^16 +
3549312*x^15 + 6456480*x^14 + 9336960*x^13 + 10901460*x^12 +
10377180*x^11 + 8097453*x^10 + 5188590*x^9 + 2725365*x^8 + 1167120*x^7
+ 403530*x^6 + 110916*x^5 + 23670*x^4 + 3780*x^3 + 425*x^2 + 30*x + 1
sage: power_mod(f,10,24)
16*x^20 + 8*x^18 + 12*x^12 + 12*x^11 + 21*x^10 + 6*x^9 + 21*x^8 +
18*x^6 + 12*x^5 + 6*x^4 + 12*x^3 + 17*x^2 + 6*x + 1
So, ouch.
sage: P.<x> = PolynomialRing(Zmod(24))
sage: f = 2*x^2 + 3*x + 1
sage: timeit('f^10')
625 loops, best of 3: 27.6 µs per loop
-- William
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---