Den 09.05.2011 15:58, skrev Keith Goodman: > On Mon, May 9, 2011 at 1:46 AM, Pauli Virtanen<p...@iki.fi> wrote: >> Sun, 08 May 2011 14:45:45 -0700, Keith Goodman wrote: >>> I'm writing a function that accepts four possible dtypes: int32, int64, >>> float32, float64. The function will call a C extension (wrapped in >>> Cython). What are the equivalent C types? int, long, float, double, >>> respectively? Will that work on all systems? >> Long can be 32-bit or 64-bit, depending on the platform. >> >> The types available in Numpy are listed here, including >> the information which of them are compatible with which C types: >> >> http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html >> >> The C long seems not to be listed -- but it's the same as >> "Python int", i.e., np.int_ will work. >> >> IIRC, the Numpy type codes, dtype.kind, map directly to C types. > Does this mapping look right? >
No. C int is at least 16 bits, C long is at least 32 bits. The size of long and size of int depend on compiler and platform. I'd write a small Cython function and ask the C compiler for an authorative answer. Alternatively you could use ctypes. This is 64-bit Python on Windows: >>> import ctypes >>> ctypes.sizeof(ctypes.c_long) 4 >>> ctypes.sizeof(ctypes.c_int) 4 Sturla _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion