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
