Another question: If I need the constant pi, and I use math.pi or numpy.pi in a C function (or a C method of a C class), does it add an inefficiency (Python lookup)? Just wondering... --v
On Sat, Apr 4, 2009 at 2:57 PM, Robert Bradshaw < [email protected]> wrote: > On Apr 4, 2009, at 9:09 AM, Vic Kelson wrote: > > > Robert, > > Thatnks for your helpful note. I can't seem to make it work with gcc > > on OS X. > > Hmm... that's the same platform I use. > > > I keep getting an error from gcc. I haven't had time to sort > > through it yet. I think I'll build a little test problem (I tried > > embedding your cod in my existing code and I might have created > > another error). > > Maybe you could post a snippet of the error you're getting? > > > Just to be sure, when I use your code to make a cdouble, the real and > > imaginary parts are the same size as a python float, right? > > Yes. Python floats are wrappers of double (and Python complexes wrap > a pair of doubles). > > > Thanks! > > --v > > > > > > On 4/4/09, Robert Bradshaw <[email protected]> wrote: > >> On Apr 3, 2009, at 10:21 PM, Vic Kelson wrote: > >> > >>> Greetings all, > >>> > >>> Sorry for the incomplete message, I'm re-sending it. > >>> > >>> I'm in need of fast computations on complex numbers from Cython. > >>> I've been converting a Python groundwater flow model code to > >>> Cython, but I'm reaching the point where I'd really prefer to have > >>> native C complex math. Up to now, I've used some little C routines > >>> that I can call with multiple floats (the C code converts to/from > >>> complex for my purposes). However, I'm nearly to the point where > >>> I'll need to store series coefficients for performance purposes, > >>> and then I'll either need to hide them in float arrays (and that's > >>> extremely nasty), or something like that. > >>> > >>> I'd like to say something like > >>> > >>> cdef class Foo: > >>> cdef cfloat z > >>> > >>> def __cinit__(self, float x, float y): > >>> self.z = cfloat(x, y) > >>> > >>> cdef cfloat func(Foo self, float x, float y): > >>> return-some-gnarly-function of x, y, and self.z > >>> > >>> > >>> Or something like that, where 'cfloat' maps to the appropriate type > >>> in the C compiler, e.g. "double _Complex" in gcc. > >>> > >>> I've seen this discussed in the archives. Has it been implemented? > >>> Is there some pre-release code that essentially works? I only need > >>> the four math functions, conjugate, abs, and log. > >> > >> Yes, I've started this, as it comes up in my research too (number > >> theory, computing values of L-functions). I hope to have something > >> releasable soon. In the meantime, you can do > >> > >> cdef extern from "complex.h": > >> ctypedef double cdouble "double complex" > >> cdef double creal(cdouble) > >> cdef double cimag(cdouble) > >> cdef cdouble _Complex_I > >> > >> cdef inline cdouble new_cdouble(double x, double y): > >> return x + _Complex_I*y > >> > >> Of course, the ctypedef is wrong, it will think it can go back to > >> doubles (and Python objects) without any problem, but it works for > >> now. > >> > >>> THANKS! I think Cython will revolutionize my research work! > >> > >> That's the goal :) Please cite us if it does. > >> > >> - Robert > >> > >> _______________________________________________ > >> Cython-dev mailing list > >> [email protected] > >> http://codespeak.net/mailman/listinfo/cython-dev > >> > > > > -- > > Sent from my mobile device > > > > Vic Kelson > > [email protected] > > _______________________________________________ > > Cython-dev mailing list > > [email protected] > > http://codespeak.net/mailman/listinfo/cython-dev > > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev > -- Vic Kelson [email protected]
_______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
