Hitting the nail one the head! sounds like your solution (I mean numpy
arrays with CDF elements, which I didn't know was possible) is going
to be perfect for me.

Thank you so much!

On 13 fév, 01:30, Nils Bruin <nbr...@sfu.ca> wrote:
> On Feb 12, 1:39 pm, Pierre <pierre.guil...@gmail.com> 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 sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to