On Feb 12, 1:39 pm, Pierre <[email protected]> wrote:
> i think zz above might still be considered as a 1 x 1 matrix instead
> of a complex number, somehow, and this may be slowing things down.
No, that's not the problem. It's simply that numpy's default complex
number type is apparently a bit slower for individual element
arithmetic. It may well be that you're mainly measuring overhead,
though, so you should really test in a more representative situation
before committing to a particular implementation choice. numpy does
allow arbitrary types in its arrays. I doubt they're as optimized as
its own types, but you can try:

sage: A= MatrixSpace(CDF, 2).random_element()
sage: B= MatrixSpace(CDF, 2).random_element()
sage: %timeit A*B
625 loops, best of 3: 11.8 µs per loop
sage: import numpy
sage: AA= numpy.array(A); BB= numpy.array(B)
sage: %timeit AA.dot(BB)
625 loops, best of 3: 1.28 µs per loop
sage: AAA= numpy.array(A,dtype=type(A[0,0])); BBB=
numpy.array(B,dtype=type(B[0,0]))
sage: %timeit AAA.dot(BBB)
625 loops, best of 3: 2.33 µs per loop
sage: z=A[0,0]
sage: %timeit z*z
625 loops, best of 3: 101 ns per loop
sage: zz=AA[0,0]
sage: %timeit zz*zz
625 loops, best of 3: 253 ns per loop
sage: zzz=AAA[0,0]
sage: %timeit zzz*zzz
625 loops, best of 3: 107 ns per loop
sage: type(z); type(zz); type(zzz)
<type 'sage.rings.complex_double.ComplexDoubleElement'>
<type 'numpy.complex128'>
<type 'sage.rings.complex_double.ComplexDoubleElement'>

-- 
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
URL: http://www.sagemath.org

Reply via email to