I would do this (at de module-level):

import math
cdef double PI = math.pi

of perhaps

cdef double PI = 3.14...

and just use "PI" on you cdef functions...

On Sun, Apr 5, 2009 at 1:28 AM, Vic Kelson <[email protected]> wrote:
> 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
>
>



-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to