I need to use a fast random (complex) number generatot. The following :
sage: %%cython ....: from sage.misc.prandom import random ....: cpdef complex crand(double x): ....: return x*random()+x*1j*random() is about 77 times faster than its Python equivalent : sage: def prand(x): ....: return CDF(2*(x*(random()-0.5)+I*x*(random()-0.5))) sage: %timeit foo=crand(8) The slowest run took 14.72 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 810 ns per loop sage: 623000.0/810.0 769.135802469136 sage: No small beer... However : sage: prand(8).parent() Complex Double Field sage: crand(8).parent() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-112-473e92fbb9eb> in <module>() ----> 1 crand(Integer(8)).parent() AttributeError: 'complex' object has no attribute 'parent' Is there a way to return a CDF (or RDF) value from a Cython function ? Bonus question : if so, where is it documented ? Neither the reference manual nor Google gave me any hint... -- Emmanuel Charpentier -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at https://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.