numpy 2.0.0
include/numpy/npy_common.h File Reference
#include "numpyconfig.h"
#include <limits.h>

Go to the source code of this file.

Data Structures

struct  npy_cdouble
struct  npy_cfloat
struct  npy_clongdouble

Defines

#define NPY_INLINE
#define NPY_BYTE_FMT   "hhd"
#define NPY_UBYTE_FMT   "hhu"
#define NPY_SHORT_FMT   "hd"
#define NPY_USHORT_FMT   "hu"
#define NPY_INT_FMT   "d"
#define NPY_UINT_FMT   "u"
#define NPY_LONG_FMT   "ld"
#define NPY_ULONG_FMT   "lu"
#define NPY_HALF_FMT   "g"
#define NPY_FLOAT_FMT   "g"
#define NPY_DOUBLE_FMT   "g"
#define NPY_LONGLONG_SUFFIX(x)   (x##L)
#define NPY_ULONGLONG_SUFFIX(x)   (x##UL)
#define NPY_FALSE   0
#define NPY_TRUE   1
#define NPY_LONGDOUBLE_FMT   "g"
#define NPY_MAX_INT8   127
#define NPY_MIN_INT8   -128
#define NPY_MAX_UINT8   255
#define NPY_MAX_INT16   32767
#define NPY_MIN_INT16   -32768
#define NPY_MAX_UINT16   65535
#define NPY_MAX_INT32   2147483647
#define NPY_MIN_INT32   (-NPY_MAX_INT32 - 1)
#define NPY_MAX_UINT32   4294967295U
#define NPY_MAX_INT64   NPY_LONGLONG_SUFFIX(9223372036854775807)
#define NPY_MIN_INT64   (-NPY_MAX_INT64 - NPY_LONGLONG_SUFFIX(1))
#define NPY_MAX_UINT64   NPY_ULONGLONG_SUFFIX(18446744073709551615)
#define NPY_MAX_INT128   NPY_LONGLONG_SUFFIX(85070591730234615865843651857942052864)
#define NPY_MIN_INT128   (-NPY_MAX_INT128 - NPY_LONGLONG_SUFFIX(1))
#define NPY_MAX_UINT128   NPY_ULONGLONG_SUFFIX(170141183460469231731687303715884105728)
#define NPY_MAX_INT256   NPY_LONGLONG_SUFFIX(57896044618658097711785492504343953926634992332820282019728792003956564819967)
#define NPY_MIN_INT256   (-NPY_MAX_INT256 - NPY_LONGLONG_SUFFIX(1))
#define NPY_MAX_UINT256   NPY_ULONGLONG_SUFFIX(115792089237316195423570985008687907853269984665640564039457584007913129639935)
#define NPY_MIN_DATETIME   NPY_MIN_INT64
#define NPY_MAX_DATETIME   NPY_MAX_INT64
#define NPY_MIN_TIMEDELTA   NPY_MIN_INT64
#define NPY_MAX_TIMEDELTA   NPY_MAX_INT64
#define NPY_MAX_BYTE   SCHAR_MAX
#define NPY_MIN_BYTE   SCHAR_MIN
#define NPY_MAX_UBYTE   UCHAR_MAX
#define NPY_MAX_SHORT   SHRT_MAX
#define NPY_MIN_SHORT   SHRT_MIN
#define NPY_MAX_USHORT   USHRT_MAX
#define NPY_MAX_INT   INT_MAX
#define INT_MIN   (-INT_MAX - 1)
#define NPY_MIN_INT   INT_MIN
#define NPY_MAX_UINT   UINT_MAX
#define NPY_MAX_LONG   LONG_MAX
#define NPY_MIN_LONG   LONG_MIN
#define NPY_MAX_ULONG   ULONG_MAX
#define NPY_SIZEOF_HALF   2
#define NPY_SIZEOF_DATETIME   8
#define NPY_SIZEOF_TIMEDELTA   8
#define NPY_BITSOF_BOOL   (sizeof(npy_bool)*CHAR_BIT)
#define NPY_BITSOF_CHAR   CHAR_BIT
#define NPY_BITSOF_SHORT   (NPY_SIZEOF_SHORT * CHAR_BIT)
#define NPY_BITSOF_INT   (NPY_SIZEOF_INT * CHAR_BIT)
#define NPY_BITSOF_LONG   (NPY_SIZEOF_LONG * CHAR_BIT)
#define NPY_BITSOF_LONGLONG   (NPY_SIZEOF_LONGLONG * CHAR_BIT)
#define NPY_BITSOF_HALF   (NPY_SIZEOF_HALF * CHAR_BIT)
#define NPY_BITSOF_FLOAT   (NPY_SIZEOF_FLOAT * CHAR_BIT)
#define NPY_BITSOF_DOUBLE   (NPY_SIZEOF_DOUBLE * CHAR_BIT)
#define NPY_BITSOF_LONGDOUBLE   (NPY_SIZEOF_LONGDOUBLE * CHAR_BIT)
#define NPY_BITSOF_DATETIME   (NPY_SIZEOF_DATETIME * CHAR_BIT)
#define NPY_BITSOF_TIMEDELTA   (NPY_SIZEOF_TIMEDELTA * CHAR_BIT)
#define NPY_FLOAT16   NPY_HALF
#define NPY_DATETIME_FMT   NPY_INT64_FMT
#define NPY_TIMEDELTA_FMT   NPY_INT64_FMT

Typedefs

typedef long npy_longlong
typedef unsigned long npy_ulonglong
typedef unsigned char npy_bool
typedef double npy_longdouble
typedef signed char npy_byte
typedef unsigned char npy_ubyte
typedef unsigned short npy_ushort
typedef unsigned int npy_uint
typedef unsigned long npy_ulong
typedef float npy_float
typedef double npy_double
typedef short npy_short
typedef int npy_int
typedef long npy_long
typedef npy_uint16 npy_half
typedef npy_half npy_float16
typedef npy_int64 npy_timedelta
typedef npy_int64 npy_datetime

Enumerations

enum  { NPY_CPU_UNKNOWN_ENDIAN, NPY_CPU_LITTLE, NPY_CPU_BIG }

Define Documentation

#define INT_MIN   (-INT_MAX - 1)
#define NPY_BITSOF_BOOL   (sizeof(npy_bool)*CHAR_BIT)
#define NPY_BITSOF_CHAR   CHAR_BIT
#define NPY_BITSOF_DATETIME   (NPY_SIZEOF_DATETIME * CHAR_BIT)
#define NPY_BITSOF_DOUBLE   (NPY_SIZEOF_DOUBLE * CHAR_BIT)
#define NPY_BITSOF_FLOAT   (NPY_SIZEOF_FLOAT * CHAR_BIT)
#define NPY_BITSOF_HALF   (NPY_SIZEOF_HALF * CHAR_BIT)
#define NPY_BITSOF_INT   (NPY_SIZEOF_INT * CHAR_BIT)
#define NPY_BITSOF_LONG   (NPY_SIZEOF_LONG * CHAR_BIT)
#define NPY_BITSOF_LONGDOUBLE   (NPY_SIZEOF_LONGDOUBLE * CHAR_BIT)
#define NPY_BITSOF_LONGLONG   (NPY_SIZEOF_LONGLONG * CHAR_BIT)
#define NPY_BITSOF_SHORT   (NPY_SIZEOF_SHORT * CHAR_BIT)
#define NPY_BITSOF_TIMEDELTA   (NPY_SIZEOF_TIMEDELTA * CHAR_BIT)
#define NPY_BYTE_FMT   "hhd"
Some platforms don't define bool, long long, or long double.
Handle that here.
#define NPY_DATETIME_FMT   NPY_INT64_FMT
#define NPY_DOUBLE_FMT   "g"
#define NPY_FALSE   0
#define NPY_FLOAT16   NPY_HALF
half/float16 isn't a floating-point type in C
#define NPY_FLOAT_FMT   "g"
#define NPY_HALF_FMT   "g"
#define NPY_INLINE
This is auto-generated
#define NPY_INT_FMT   "d"
#define NPY_LONG_FMT   "ld"
#define NPY_LONGDOUBLE_FMT   "g"
#define NPY_LONGLONG_SUFFIX (   x)    (x##L)
#define NPY_MAX_BYTE   SCHAR_MAX
Need to find the number of bits for each type and

make definitions accordingly.

C states that sizeof(char) == 1 by definition

So, just using the sizeof keyword won't help.

It also looks like Python itself uses sizeof(char) quite a bit, which by definition should be 1 all the time.

Idea: Make Use of CHAR_BIT which should tell us how many BITS per CHARACTER

Include platform definitions -- These are in the C89/90 standard
#define NPY_MAX_DATETIME   NPY_MAX_INT64
#define NPY_MAX_INT   INT_MAX
#define NPY_MAX_INT128   NPY_LONGLONG_SUFFIX(85070591730234615865843651857942052864)
#define NPY_MAX_INT16   32767
#define NPY_MAX_INT256   NPY_LONGLONG_SUFFIX(57896044618658097711785492504343953926634992332820282019728792003956564819967)
#define NPY_MAX_INT32   2147483647
#define NPY_MAX_INT64   NPY_LONGLONG_SUFFIX(9223372036854775807)
#define NPY_MAX_INT8   127
numarray-style bit-width typedefs
#define NPY_MAX_LONG   LONG_MAX
#define NPY_MAX_SHORT   SHRT_MAX
#define NPY_MAX_TIMEDELTA   NPY_MAX_INT64
#define NPY_MAX_UBYTE   UCHAR_MAX
#define NPY_MAX_UINT   UINT_MAX
#define NPY_MAX_UINT128   NPY_ULONGLONG_SUFFIX(170141183460469231731687303715884105728)
#define NPY_MAX_UINT16   65535
#define NPY_MAX_UINT256   NPY_ULONGLONG_SUFFIX(115792089237316195423570985008687907853269984665640564039457584007913129639935)
#define NPY_MAX_UINT32   4294967295U
#define NPY_MAX_UINT64   NPY_ULONGLONG_SUFFIX(18446744073709551615)
#define NPY_MAX_UINT8   255
#define NPY_MAX_ULONG   ULONG_MAX
#define NPY_MAX_USHORT   USHRT_MAX
#define NPY_MIN_BYTE   SCHAR_MIN
#define NPY_MIN_DATETIME   NPY_MIN_INT64
#define NPY_MIN_INT   INT_MIN
#define NPY_MIN_INT128   (-NPY_MAX_INT128 - NPY_LONGLONG_SUFFIX(1))
#define NPY_MIN_INT16   -32768
#define NPY_MIN_INT256   (-NPY_MAX_INT256 - NPY_LONGLONG_SUFFIX(1))
#define NPY_MIN_INT32   (-NPY_MAX_INT32 - 1)
#define NPY_MIN_INT64   (-NPY_MAX_INT64 - NPY_LONGLONG_SUFFIX(1))
#define NPY_MIN_INT8   -128
#define NPY_MIN_LONG   LONG_MIN
#define NPY_MIN_SHORT   SHRT_MIN
#define NPY_MIN_TIMEDELTA   NPY_MIN_INT64
#define NPY_SHORT_FMT   "hd"
#define NPY_SIZEOF_DATETIME   8
#define NPY_SIZEOF_HALF   2
#define NPY_SIZEOF_TIMEDELTA   8
#define NPY_TIMEDELTA_FMT   NPY_INT64_FMT
#define NPY_TRUE   1
#define NPY_UBYTE_FMT   "hhu"
#define NPY_UINT_FMT   "u"
#define NPY_ULONG_FMT   "lu"
#define NPY_ULONGLONG_SUFFIX (   x)    (x##UL)
#define NPY_USHORT_FMT   "hu"

Typedef Documentation

typedef unsigned char npy_bool
typedef signed char npy_byte
typedef npy_int64 npy_datetime
typedef double npy_double
typedef float npy_float
These are for completeness
typedef npy_uint16 npy_half
typedef int npy_int
typedef long npy_long
typedef double npy_longdouble
typedef long npy_longlong
typedef short npy_short
typedef npy_int64 npy_timedelta
datetime typedefs
typedef unsigned char npy_ubyte
typedef unsigned int npy_uint
typedef unsigned long npy_ulong
typedef unsigned long npy_ulonglong
typedef unsigned short npy_ushort

Enumeration Type Documentation

anonymous enum
enums for detected endianness
Enumerator:
NPY_CPU_UNKNOWN_ENDIAN 
NPY_CPU_LITTLE 
NPY_CPU_BIG