diff options
Diffstat (limited to 'numpy/core/src')
-rw-r--r-- | numpy/core/src/umath_loops.c.src (renamed from numpy/core/src/umath_loops.inc.src) | 155 | ||||
-rw-r--r-- | numpy/core/src/umath_loops.h | 2188 | ||||
-rw-r--r-- | numpy/core/src/umath_loops.h.src.unused | 405 | ||||
-rw-r--r-- | numpy/core/src/umath_ufunc_object.c (renamed from numpy/core/src/umath_ufunc_object.inc) | 126 | ||||
-rw-r--r-- | numpy/core/src/umath_ufunc_object.h | 10 | ||||
-rw-r--r-- | numpy/core/src/umathmodule.c.src | 115 |
6 files changed, 2808 insertions, 191 deletions
diff --git a/numpy/core/src/umath_loops.inc.src b/numpy/core/src/umath_loops.c.src index b49877035..a2c459f7a 100644 --- a/numpy/core/src/umath_loops.inc.src +++ b/numpy/core/src/umath_loops.c.src @@ -1,5 +1,19 @@ /* -*- c -*- */ +#define _UMATHMODULE + +#define PY_ARRAY_UNIQUE_SYMBOL _npy_umathmodule_ARRAY_API +#define NO_IMPORT_ARRAY + +#include "Python.h" +#include "numpy/noprefix.h" +#include "numpy/ufuncobject.h" +#include "numpy/npy_math.h" + +#include "config.h" + +#include "umath_ufunc_object.h" + /* ***************************************************************************** ** UFUNC LOOPS ** @@ -416,24 +430,13 @@ PyUFunc_On_Om(char **args, intp *dimensions, intp *steps, void *func) ***************************************************************************** */ -#define BOOL_invert BOOL_logical_not -#define BOOL_negative BOOL_logical_not -#define BOOL_add BOOL_logical_or -#define BOOL_bitwise_and BOOL_logical_and -#define BOOL_bitwise_or BOOL_logical_or -#define BOOL_bitwise_xor BOOL_logical_xor -#define BOOL_multiply BOOL_logical_and -#define BOOL_subtract BOOL_logical_xor -#define BOOL_fmax BOOL_maximum -#define BOOL_fmin BOOL_minimum - /**begin repeat * #kind = equal, not_equal, greater, greater_equal, less, less_equal, * logical_and, logical_or# * #OP = ==, !=, >, >=, <, <=, &&, ||# **/ -static void +NPY_NO_EXPORT void BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -444,7 +447,7 @@ BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) } /**end repeat**/ -static void +NPY_NO_EXPORT void BOOL_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -458,7 +461,7 @@ BOOL_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu * #kind = maximum, minimum# * #OP = >, <# **/ -static void +NPY_NO_EXPORT void BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -473,7 +476,7 @@ BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) * #kind = absolute, logical_not# * #OP = !=, ==# **/ -static void +NPY_NO_EXPORT void BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -483,7 +486,7 @@ BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) } /**end repeat**/ -static void +NPY_NO_EXPORT void BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { @@ -514,7 +517,7 @@ BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data #define @S@@TYPE@_fmax @S@@TYPE@_maximum #define @S@@TYPE@_fmin @S@@TYPE@_minimum -static void +NPY_NO_EXPORT void @S@@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { @@ -522,7 +525,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { UNARY_LOOP { @@ -531,7 +534,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { UNARY_LOOP { @@ -540,7 +543,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -549,7 +552,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -558,7 +561,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -567,7 +570,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -582,7 +585,7 @@ static void * left_shift, right_shift# * #OP = +, -,*, &, |, ^, <<, >># */ -static void +NPY_NO_EXPORT void @S@@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -598,7 +601,7 @@ static void * logical_and, logical_or# * #OP = ==, !=, >, >=, <, <=, &&, ||# */ -static void +NPY_NO_EXPORT void @S@@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -609,7 +612,7 @@ static void } /**end repeat2**/ -static void +NPY_NO_EXPORT void @S@@TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -623,7 +626,7 @@ static void * #kind = maximum, minimum# * #OP = >, <# **/ -static void +NPY_NO_EXPORT void @S@@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -634,7 +637,7 @@ static void } /**end repeat2**/ -static void +NPY_NO_EXPORT void @S@@TYPE@_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -650,7 +653,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -660,7 +663,7 @@ static void } } -static void +NPY_NO_EXPORT void @S@@TYPE@_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -679,7 +682,7 @@ static void /**end repeat1**/ -static void +NPY_NO_EXPORT void U@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -688,7 +691,7 @@ U@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu } } -static void +NPY_NO_EXPORT void @TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -697,7 +700,7 @@ static void } } -static void +NPY_NO_EXPORT void U@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -706,7 +709,7 @@ U@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) } } -static void +NPY_NO_EXPORT void @TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -715,7 +718,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -734,7 +737,7 @@ static void } } -static void +NPY_NO_EXPORT void U@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -750,7 +753,7 @@ U@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func } } -static void +NPY_NO_EXPORT void @TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -773,7 +776,7 @@ static void } } -static void +NPY_NO_EXPORT void U@TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -812,7 +815,7 @@ U@TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(f * # kind = add, subtract, multiply, divide# * # OP = +, -, *, /# */ -static void +NPY_NO_EXPORT void @TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -828,7 +831,7 @@ static void * logical_and, logical_or# * #OP = ==, !=, <, <=, >, >=, &&, ||# */ -static void +NPY_NO_EXPORT void @TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -839,7 +842,7 @@ static void } /**end repeat1**/ -static void +NPY_NO_EXPORT void @TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -849,7 +852,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -862,7 +865,7 @@ static void * #kind = isnan, isinf, isfinite, signbit# * #func = npy_isnan, npy_isinf, npy_isfinite, npy_signbit# **/ -static void +NPY_NO_EXPORT void @TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -876,7 +879,7 @@ static void * #kind = maximum, minimum# * #OP = >=, <=# **/ -static void +NPY_NO_EXPORT void @TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { /* */ @@ -892,7 +895,7 @@ static void * #kind = fmax, fmin# * #OP = >=, <=# **/ -static void +NPY_NO_EXPORT void @TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { /* */ @@ -904,7 +907,7 @@ static void } /**end repeat1**/ -static void +NPY_NO_EXPORT void @TYPE@_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -914,7 +917,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -930,7 +933,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { UNARY_LOOP { @@ -939,7 +942,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { UNARY_LOOP { @@ -948,7 +951,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { @@ -956,7 +959,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -965,7 +968,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -976,7 +979,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -985,7 +988,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { /* Sign of nan is nan */ @@ -995,7 +998,7 @@ static void } } -static void +NPY_NO_EXPORT void @TYPE@_modf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP_TWO_OUT { @@ -1005,7 +1008,7 @@ static void } #ifdef HAVE_FREXP@C@ -static void +NPY_NO_EXPORT void @TYPE@_frexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP_TWO_OUT { @@ -1016,7 +1019,7 @@ static void #endif #ifdef HAVE_LDEXP@C@ -static void +NPY_NO_EXPORT void @TYPE@_ldexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1058,7 +1061,7 @@ static void * #kind = add, subtract# * #OP = +, -# */ -static void +NPY_NO_EXPORT void C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1072,7 +1075,7 @@ C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func } /**end repeat1**/ -static void +NPY_NO_EXPORT void C@TYPE@_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1085,7 +1088,7 @@ C@TYPE@_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu } } -static void +NPY_NO_EXPORT void C@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1099,7 +1102,7 @@ C@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func } } -static void +NPY_NO_EXPORT void C@TYPE@_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1117,7 +1120,7 @@ C@TYPE@_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSE * #kind= greater, greater_equal, less, less_equal, equal, not_equal# * #OP = CGT, CGE, CLT, CLE, CEQ, CNE# */ -static void +NPY_NO_EXPORT void C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1135,7 +1138,7 @@ C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func #OP1 = ||, ||# #OP2 = &&, ||# */ -static void +NPY_NO_EXPORT void C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1148,7 +1151,7 @@ C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func } /**end repeat1**/ -static void +NPY_NO_EXPORT void C@TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1162,7 +1165,7 @@ C@TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED } } -static void +NPY_NO_EXPORT void C@TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -1177,7 +1180,7 @@ C@TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED * #func = npy_isnan, npy_isinf, npy_isfinite# * #OP = ||, ||, &&# **/ -static void +NPY_NO_EXPORT void C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -1188,7 +1191,7 @@ C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func } /**end repeat1**/ -static void +NPY_NO_EXPORT void C@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { UNARY_LOOP { @@ -1199,7 +1202,7 @@ C@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data } } -static void +NPY_NO_EXPORT void C@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { UNARY_LOOP { @@ -1219,7 +1222,7 @@ C@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED( } } -static void +NPY_NO_EXPORT void C@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { @@ -1228,7 +1231,7 @@ C@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(d } } -static void +NPY_NO_EXPORT void C@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { const @type@ in1r = ((@type@ *)ip1)[0]; @@ -1238,7 +1241,7 @@ C@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(f } } -static void +NPY_NO_EXPORT void C@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { UNARY_LOOP { @@ -1248,7 +1251,7 @@ C@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu } } -static void +NPY_NO_EXPORT void C@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { /* fixme: sign of nan is currently 0 */ @@ -1266,7 +1269,7 @@ C@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) * #kind = maximum, minimum# * #OP = CGE, CLE# */ -static void +NPY_NO_EXPORT void C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1290,7 +1293,7 @@ C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func * #kind = fmax, fmin# * #OP = CGE, CLE# */ -static void +NPY_NO_EXPORT void C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { @@ -1331,7 +1334,7 @@ C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func * #kind = equal, not_equal, greater, greater_equal, less, less_equal# * #OP = EQ, NE, GT, GE, LT, LE# */ -static void +NPY_NO_EXPORT void OBJECT_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { BINARY_LOOP { PyObject *in1 = *(PyObject **)ip1; @@ -1345,7 +1348,7 @@ OBJECT_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func) } /**end repeat**/ -static void +NPY_NO_EXPORT void OBJECT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)) { PyObject *zero = PyInt_FromLong(0); diff --git a/numpy/core/src/umath_loops.h b/numpy/core/src/umath_loops.h new file mode 100644 index 000000000..9de4c5893 --- /dev/null +++ b/numpy/core/src/umath_loops.h @@ -0,0 +1,2188 @@ +#ifndef _NPY_UMATH_LOOPS_H_ +#define _NPY_UMATH_LOOPS_H_ + +#define BOOL_invert BOOL_logical_not +#define BOOL_negative BOOL_logical_not +#define BOOL_add BOOL_logical_or +#define BOOL_bitwise_and BOOL_logical_and +#define BOOL_bitwise_or BOOL_logical_or +#define BOOL_bitwise_xor BOOL_logical_xor +#define BOOL_multiply BOOL_logical_and +#define BOOL_subtract BOOL_logical_xor +#define BOOL_fmax BOOL_maximum +#define BOOL_fmin BOOL_minimum + +/* + ***************************************************************************** + ** BOOLEAN LOOPS ** + ***************************************************************************** + */ + +NPY_NO_EXPORT void +BOOL_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BOOL_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BOOL_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BOOL_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BOOL_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BOOL_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +/* + ***************************************************************************** + ** INTEGER LOOPS + ***************************************************************************** + */ + +#define BYTE_floor_divide BYTE_divide +#define BYTE_fmax BYTE_maximum +#define BYTE_fmin BYTE_minimum + +NPY_NO_EXPORT void +BYTE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +BYTE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +BYTE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +BYTE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +BYTE_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +BYTE_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +BYTE_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +#define UBYTE_floor_divide UBYTE_divide +#define UBYTE_fmax UBYTE_maximum +#define UBYTE_fmin UBYTE_minimum + +NPY_NO_EXPORT void +UBYTE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +UBYTE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +UBYTE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +UBYTE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +UBYTE_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UBYTE_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UBYTE_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +BYTE_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UBYTE_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + + +#define SHORT_floor_divide SHORT_divide +#define SHORT_fmax SHORT_maximum +#define SHORT_fmin SHORT_minimum + +NPY_NO_EXPORT void +SHORT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +SHORT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +SHORT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +SHORT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +SHORT_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +SHORT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +SHORT_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +#define USHORT_floor_divide USHORT_divide +#define USHORT_fmax USHORT_maximum +#define USHORT_fmin USHORT_minimum + +NPY_NO_EXPORT void +USHORT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +USHORT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +USHORT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +USHORT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +USHORT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +USHORT_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +USHORT_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +SHORT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +USHORT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + + +#define INT_floor_divide INT_divide +#define INT_fmax INT_maximum +#define INT_fmin INT_minimum + +NPY_NO_EXPORT void +INT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +INT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +INT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +INT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +INT_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +INT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +INT_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +#define UINT_floor_divide UINT_divide +#define UINT_fmax UINT_maximum +#define UINT_fmin UINT_minimum + +NPY_NO_EXPORT void +UINT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +UINT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +UINT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +UINT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +UINT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +UINT_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +UINT_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +INT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +UINT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + + +#define LONG_floor_divide LONG_divide +#define LONG_fmax LONG_maximum +#define LONG_fmin LONG_minimum + +NPY_NO_EXPORT void +LONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONG_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONG_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONG_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +LONG_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONG_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +#define ULONG_floor_divide ULONG_divide +#define ULONG_fmax ULONG_maximum +#define ULONG_fmin ULONG_minimum + +NPY_NO_EXPORT void +ULONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +ULONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +ULONG_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +ULONG_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +ULONG_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONG_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONG_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONG_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONG_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + + +#define LONGLONG_floor_divide LONGLONG_divide +#define LONGLONG_fmax LONGLONG_maximum +#define LONGLONG_fmin LONGLONG_minimum + +NPY_NO_EXPORT void +LONGLONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONGLONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONGLONG_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONGLONG_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGLONG_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +LONGLONG_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGLONG_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +#define ULONGLONG_floor_divide ULONGLONG_divide +#define ULONGLONG_fmax ULONGLONG_maximum +#define ULONGLONG_fmin ULONGLONG_minimum + +NPY_NO_EXPORT void +ULONGLONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +ULONGLONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +ULONGLONG_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +ULONGLONG_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_bitwise_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_bitwise_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_bitwise_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_left_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_right_shift(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + + +NPY_NO_EXPORT void +ULONGLONG_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +ULONGLONG_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +ULONGLONG_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGLONG_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +ULONGLONG_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +/* + ***************************************************************************** + ** FLOAT LOOPS ** + ***************************************************************************** + */ + +NPY_NO_EXPORT void +FLOAT_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +FLOAT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +FLOAT_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_isnan(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_isinf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_isfinite(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_signbit(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +FLOAT_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +FLOAT_fmax(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_fmin(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +FLOAT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +FLOAT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +FLOAT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + + +NPY_NO_EXPORT void +FLOAT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +FLOAT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +FLOAT_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +FLOAT_modf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#ifdef HAVE_FREXPF +NPY_NO_EXPORT void +FLOAT_frexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#ifdef HAVE_LDEXPF +NPY_NO_EXPORT void +FLOAT_ldexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#define FLOAT_true_divide FLOAT_divide + + + + + + +NPY_NO_EXPORT void +DOUBLE_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +DOUBLE_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +DOUBLE_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_isnan(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_isinf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_isfinite(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_signbit(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +DOUBLE_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +DOUBLE_fmax(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_fmin(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +DOUBLE_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +DOUBLE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +DOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + + +NPY_NO_EXPORT void +DOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +DOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +DOUBLE_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +DOUBLE_modf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#ifdef HAVE_FREXP +NPY_NO_EXPORT void +DOUBLE_frexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#ifdef HAVE_LDEXP +NPY_NO_EXPORT void +DOUBLE_ldexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#define DOUBLE_true_divide DOUBLE_divide + + + + + + +NPY_NO_EXPORT void +LONGDOUBLE_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGDOUBLE_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGDOUBLE_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_isnan(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_isinf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_isfinite(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_signbit(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGDOUBLE_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + + +NPY_NO_EXPORT void +LONGDOUBLE_fmax(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_fmin(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGDOUBLE_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGDOUBLE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONGDOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + + +NPY_NO_EXPORT void +LONGDOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +LONGDOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +LONGDOUBLE_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +LONGDOUBLE_modf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#ifdef HAVE_FREXPL +NPY_NO_EXPORT void +LONGDOUBLE_frexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#ifdef HAVE_LDEXPL +NPY_NO_EXPORT void +LONGDOUBLE_ldexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#define LONGDOUBLE_true_divide LONGDOUBLE_divide + + + + +/* + ***************************************************************************** + ** COMPLEX LOOPS ** + ***************************************************************************** + */ + +NPY_NO_EXPORT void +CFLOAT_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CFLOAT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CFLOAT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CFLOAT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_isnan(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_isinf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_isfinite(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CFLOAT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CFLOAT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CFLOAT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_fmax(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CFLOAT_fmin(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#define CFLOAT_true_divide CFLOAT_divide + +NPY_NO_EXPORT void +CDOUBLE_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_isnan(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_isinf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_isfinite(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CDOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CDOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CDOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CDOUBLE_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CDOUBLE_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_fmax(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CDOUBLE_fmin(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#define CDOUBLE_true_divide CDOUBLE_divide + +NPY_NO_EXPORT void +CLONGDOUBLE_add(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_subtract(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CLONGDOUBLE_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_logical_and(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_logical_or(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_isnan(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CLONGDOUBLE_isinf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CLONGDOUBLE_isfinite(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CLONGDOUBLE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CLONGDOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CLONGDOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +CLONGDOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CLONGDOUBLE_maximum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +CLONGDOUBLE_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_fmax(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +CLONGDOUBLE_fmin(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#define CLONGDOUBLE_true_divide CLONGDOUBLE_divide + +/* + ***************************************************************************** + ** OBJECT LOOPS ** + ***************************************************************************** + */ + + +NPY_NO_EXPORT void +OBJECT_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +OBJECT_not_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +OBJECT_greater(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +OBJECT_greater_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +OBJECT_less(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +OBJECT_less_equal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +OBJECT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#endif diff --git a/numpy/core/src/umath_loops.h.src.unused b/numpy/core/src/umath_loops.h.src.unused new file mode 100644 index 000000000..aa379f4f4 --- /dev/null +++ b/numpy/core/src/umath_loops.h.src.unused @@ -0,0 +1,405 @@ +/* + * vim:syntax=c + */ + +/* + ***************************************************************************** + ** BOOLEAN LOOPS ** + ***************************************************************************** + */ + +/**begin repeat + * #kind = equal, not_equal, greater, greater_equal, less, less_equal, + * logical_and, logical_or# + * #OP = ==, !=, >, >=, <, <=, &&, ||# + **/ + +NPY_NO_EXPORT void +BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat**/ + +NPY_NO_EXPORT void +BOOL_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**begin repeat + * #kind = maximum, minimum# + * #OP = >, <# + **/ +NPY_NO_EXPORT void +BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat**/ + +/**begin repeat + * #kind = absolute, logical_not# + * #OP = !=, ==# + **/ +NPY_NO_EXPORT void +BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat**/ + +NPY_NO_EXPORT void +BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +/* + ***************************************************************************** + ** INTEGER LOOPS + ***************************************************************************** + */ + +/**begin repeat + * #type = byte, short, int, long, longlong# + * #TYPE = BYTE, SHORT, INT, LONG, LONGLONG# + * #ftype = float, float, double, double, double# + */ + +/**begin repeat1 + * both signed and unsigned integer types + * #s = , u# + * #S = , U# + */ + +#define @S@@TYPE@_floor_divide @S@@TYPE@_divide +#define @S@@TYPE@_fmax @S@@TYPE@_maximum +#define @S@@TYPE@_fmin @S@@TYPE@_minimum + +NPY_NO_EXPORT void +@S@@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +@S@@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +@S@@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +@S@@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@S@@TYPE@_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@S@@TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@S@@TYPE@_invert(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**begin repeat2 + * Arithmetic + * #kind = add, subtract, multiply, bitwise_and, bitwise_or, bitwise_xor, + * left_shift, right_shift# + * #OP = +, -,*, &, |, ^, <<, >># + */ +NPY_NO_EXPORT void +@S@@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**end repeat2**/ + +/**begin repeat2 + * #kind = equal, not_equal, greater, greater_equal, less, less_equal, + * logical_and, logical_or# + * #OP = ==, !=, >, >=, <, <=, &&, ||# + */ +NPY_NO_EXPORT void +@S@@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat2**/ + +NPY_NO_EXPORT void +@S@@TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**begin repeat2 + * #kind = maximum, minimum# + * #OP = >, <# + **/ +NPY_NO_EXPORT void +@S@@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat2**/ + +NPY_NO_EXPORT void +@S@@TYPE@_true_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@S@@TYPE@_power(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@S@@TYPE@_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**end repeat1**/ + +NPY_NO_EXPORT void +U@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +U@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +U@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +U@TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat**/ + +/* + ***************************************************************************** + ** FLOAT LOOPS ** + ***************************************************************************** + */ + + +/**begin repeat + * Float types + * #type = float, double, longdouble# + * #TYPE = FLOAT, DOUBLE, LONGDOUBLE# + * #c = f, , l# + * #C = F, , L# + */ + + +/**begin repeat1 + * Arithmetic + * # kind = add, subtract, multiply, divide# + * # OP = +, -, *, /# + */ +NPY_NO_EXPORT void +@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +/**begin repeat1 + * #kind = equal, not_equal, less, less_equal, greater, greater_equal, + * logical_and, logical_or# + * #OP = ==, !=, <, <=, >, >=, &&, ||# + */ +NPY_NO_EXPORT void +@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +NPY_NO_EXPORT void +@TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**begin repeat1 + * #kind = isnan, isinf, isfinite, signbit# + * #func = npy_isnan, npy_isinf, npy_isfinite, npy_signbit# + **/ +NPY_NO_EXPORT void +@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +/**begin repeat1 + * #kind = maximum, minimum# + * #OP = >=, <=# + **/ +NPY_NO_EXPORT void +@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +/**begin repeat1 + * #kind = fmax, fmin# + * #OP = >=, <=# + **/ +NPY_NO_EXPORT void +@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +NPY_NO_EXPORT void +@TYPE@_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + + +NPY_NO_EXPORT void +@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +@TYPE@_negative(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + + +NPY_NO_EXPORT void +@TYPE@_modf(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +#ifdef HAVE_FREXP@C@ +NPY_NO_EXPORT void +@TYPE@_frexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#ifdef HAVE_LDEXP@C@ +NPY_NO_EXPORT void +@TYPE@_ldexp(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +#endif + +#define @TYPE@_true_divide @TYPE@_divide + +/**end repeat**/ + + +/* + ***************************************************************************** + ** COMPLEX LOOPS ** + ***************************************************************************** + */ + +#define CGE(xr,xi,yr,yi) (xr > yr || (xr == yr && xi >= yi)); +#define CLE(xr,xi,yr,yi) (xr < yr || (xr == yr && xi <= yi)); +#define CGT(xr,xi,yr,yi) (xr > yr || (xr == yr && xi > yi)); +#define CLT(xr,xi,yr,yi) (xr < yr || (xr == yr && xi < yi)); +#define CEQ(xr,xi,yr,yi) (xr == yr && xi == yi); +#define CNE(xr,xi,yr,yi) (xr != yr || xi != yi); + +/**begin repeat + * complex types + * #type = float, double, longdouble# + * #TYPE = FLOAT, DOUBLE, LONGDOUBLE# + * #c = f, , l# + * #C = F, , L# + */ + +/**begin repeat1 + * arithmetic + * #kind = add, subtract# + * #OP = +, -# + */ +NPY_NO_EXPORT void +C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**end repeat1**/ + +NPY_NO_EXPORT void +C@TYPE@_multiply(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +C@TYPE@_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +C@TYPE@_floor_divide(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**begin repeat1 + * #kind= greater, greater_equal, less, less_equal, equal, not_equal# + * #OP = CGT, CGE, CLT, CLE, CEQ, CNE# + */ +NPY_NO_EXPORT void +C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +/**begin repeat1 + #kind = logical_and, logical_or# + #OP1 = ||, ||# + #OP2 = &&, ||# +*/ +NPY_NO_EXPORT void +C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +NPY_NO_EXPORT void +C@TYPE@_logical_xor(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +C@TYPE@_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**begin repeat1 + * #kind = isnan, isinf, isfinite# + * #func = npy_isnan, npy_isinf, npy_isfinite# + * #OP = ||, ||, &&# + **/ +NPY_NO_EXPORT void +C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +NPY_NO_EXPORT void +C@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +C@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +C@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); + +NPY_NO_EXPORT void +C@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +C@TYPE@_absolute(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +NPY_NO_EXPORT void +C@TYPE@_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/**begin repeat1 + * #kind = maximum, minimum# + * #OP = CGE, CLE# + */ +NPY_NO_EXPORT void +C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +/**begin repeat1 + * #kind = fmax, fmin# + * #OP = CGE, CLE# + */ +NPY_NO_EXPORT void +C@TYPE@_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat1**/ + +#define C@TYPE@_true_divide C@TYPE@_divide + +/**end repeat**/ + +#undef CGE +#undef CLE +#undef CGT +#undef CLT +#undef CEQ +#undef CNE + +/* + ***************************************************************************** + ** OBJECT LOOPS ** + ***************************************************************************** + */ + +/**begin repeat + * #kind = equal, not_equal, greater, greater_equal, less, less_equal# + * #OP = EQ, NE, GT, GE, LT, LE# + */ +NPY_NO_EXPORT void +OBJECT_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); +/**end repeat**/ + +NPY_NO_EXPORT void +OBJECT_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); + +/* + ***************************************************************************** + ** END LOOPS ** + ***************************************************************************** + */ + + diff --git a/numpy/core/src/umath_ufunc_object.inc b/numpy/core/src/umath_ufunc_object.c index eee40c17e..8204d2ff1 100644 --- a/numpy/core/src/umath_ufunc_object.inc +++ b/numpy/core/src/umath_ufunc_object.c @@ -23,6 +23,16 @@ * Rick White * */ +#define _UMATHMODULE + +#define PY_ARRAY_UNIQUE_SYMBOL _npy_umathmodule_ARRAY_API +#define NO_IMPORT_ARRAY + +#include "Python.h" +#include "numpy/noprefix.h" +#include "numpy/ufuncobject.h" + +#include "umath_ufunc_object.h" #define USE_USE_DEFAULTS 1 @@ -3359,7 +3369,7 @@ fail: return NULL; } -static PyObject * +NPY_NO_EXPORT PyObject * ufunc_geterr(PyObject *NPY_UNUSED(dummy), PyObject *args) { PyObject *thedict; @@ -3424,7 +3434,7 @@ ufunc_update_use_defaults(void) } #endif -static PyObject * +NPY_NO_EXPORT PyObject * ufunc_seterr(PyObject *NPY_UNUSED(dummy), PyObject *args) { PyObject *thedict; @@ -3461,116 +3471,6 @@ ufunc_seterr(PyObject *NPY_UNUSED(dummy), PyObject *args) -static PyUFuncGenericFunction pyfunc_functions[] = {PyUFunc_On_Om}; - -static char -doc_frompyfunc[] = "frompyfunc(func, nin, nout) take an arbitrary python\n" \ - "function that takes nin objects as input and returns\n" \ - "nout objects and return a universal function (ufunc).\n" \ - "This ufunc always returns PyObject arrays\n"; - -static PyObject * -ufunc_frompyfunc(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *NPY_UNUSED(kwds)) { - /* Keywords are ignored for now */ - - PyObject *function, *pyname = NULL; - int nin, nout, i; - PyUFunc_PyFuncData *fdata; - PyUFuncObject *self; - char *fname, *str; - Py_ssize_t fname_len = -1; - int offset[2]; - - if (!PyArg_ParseTuple(args, "Oii", &function, &nin, &nout)) { - return NULL; - } - if (!PyCallable_Check(function)) { - PyErr_SetString(PyExc_TypeError, "function must be callable"); - return NULL; - } - self = _pya_malloc(sizeof(PyUFuncObject)); - if (self == NULL) { - return NULL; - } - PyObject_Init((PyObject *)self, &PyUFunc_Type); - - self->userloops = NULL; - self->nin = nin; - self->nout = nout; - self->nargs = nin + nout; - self->identity = PyUFunc_None; - self->functions = pyfunc_functions; - self->ntypes = 1; - self->check_return = 0; - - /* generalized ufunc */ - self->core_enabled = 0; - self->core_num_dim_ix = 0; - self->core_num_dims = NULL; - self->core_dim_ixs = NULL; - self->core_offsets = NULL; - self->core_signature = NULL; - - pyname = PyObject_GetAttrString(function, "__name__"); - if (pyname) { - (void) PyString_AsStringAndSize(pyname, &fname, &fname_len); - } - if (PyErr_Occurred()) { - fname = "?"; - fname_len = 1; - PyErr_Clear(); - } - Py_XDECREF(pyname); - - /* - * self->ptr holds a pointer for enough memory for - * self->data[0] (fdata) - * self->data - * self->name - * self->types - * - * To be safest, all of these need their memory aligned on void * pointers - * Therefore, we may need to allocate extra space. - */ - offset[0] = sizeof(PyUFunc_PyFuncData); - i = (sizeof(PyUFunc_PyFuncData) % sizeof(void *)); - if (i) { - offset[0] += (sizeof(void *) - i); - } - offset[1] = self->nargs; - i = (self->nargs % sizeof(void *)); - if (i) { - offset[1] += (sizeof(void *)-i); - } - self->ptr = _pya_malloc(offset[0] + offset[1] + sizeof(void *) + - (fname_len + 14)); - if (self->ptr == NULL) { - return PyErr_NoMemory(); - } - Py_INCREF(function); - self->obj = function; - fdata = (PyUFunc_PyFuncData *)(self->ptr); - fdata->nin = nin; - fdata->nout = nout; - fdata->callable = function; - - self->data = (void **)(((char *)self->ptr) + offset[0]); - self->data[0] = (void *)fdata; - self->types = (char *)self->data + sizeof(void *); - for (i = 0; i < self->nargs; i++) { - self->types[i] = PyArray_OBJECT; - } - str = self->types + offset[1]; - memcpy(str, fname, fname_len); - memcpy(str+fname_len, " (vectorized)", 14); - self->name = str; - - /* Do a better job someday */ - self->doc = "dynamic ufunc based on a python function"; - - return (PyObject *)self; -} - /*UFUNC_API*/ NPY_NO_EXPORT int PyUFunc_ReplaceLoopBySignature(PyUFuncObject *func, @@ -4196,7 +4096,7 @@ static PyGetSetDef ufunc_getset[] = { {NULL, NULL, NULL, NULL, NULL}, /* Sentinel */ }; -static PyTypeObject PyUFunc_Type = { +NPY_NO_EXPORT PyTypeObject PyUFunc_Type = { PyObject_HEAD_INIT(0) 0, /* ob_size */ "numpy.ufunc", /* tp_name */ diff --git a/numpy/core/src/umath_ufunc_object.h b/numpy/core/src/umath_ufunc_object.h new file mode 100644 index 000000000..a8886be05 --- /dev/null +++ b/numpy/core/src/umath_ufunc_object.h @@ -0,0 +1,10 @@ +#ifndef _NPY_UMATH_UFUNC_OBJECT_H_ +#define _NPY_UMATH_UFUNC_OBJECT_H_ + +NPY_NO_EXPORT PyObject * +ufunc_geterr(PyObject *NPY_UNUSED(dummy), PyObject *args); + +NPY_NO_EXPORT PyObject * +ufunc_seterr(PyObject *NPY_UNUSED(dummy), PyObject *args); + +#endif diff --git a/numpy/core/src/umathmodule.c.src b/numpy/core/src/umathmodule.c.src index d2b4b9c8a..c8c897275 100644 --- a/numpy/core/src/umathmodule.c.src +++ b/numpy/core/src/umathmodule.c.src @@ -17,6 +17,8 @@ */ #define _UMATHMODULE +#define PY_ARRAY_UNIQUE_SYMBOL _npy_umathmodule_ARRAY_API + #include "Python.h" #include "numpy/noprefix.h" #include "numpy/ufuncobject.h" @@ -31,11 +33,120 @@ ***************************************************************************** */ #include "umath_funcs.inc" -#include "umath_loops.inc" -#include "umath_ufunc_object.inc" +#include "umath_loops.h" +#include "umath_ufunc_object.h" #include "__umath_generated.c" #include "__ufunc_api.c" +static PyUFuncGenericFunction pyfunc_functions[] = {PyUFunc_On_Om}; + +static char +doc_frompyfunc[] = "frompyfunc(func, nin, nout) take an arbitrary python\n" \ + "function that takes nin objects as input and returns\n" \ + "nout objects and return a universal function (ufunc).\n" \ + "This ufunc always returns PyObject arrays\n"; + +static PyObject * +ufunc_frompyfunc(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *NPY_UNUSED(kwds)) { + /* Keywords are ignored for now */ + + PyObject *function, *pyname = NULL; + int nin, nout, i; + PyUFunc_PyFuncData *fdata; + PyUFuncObject *self; + char *fname, *str; + Py_ssize_t fname_len = -1; + int offset[2]; + + if (!PyArg_ParseTuple(args, "Oii", &function, &nin, &nout)) { + return NULL; + } + if (!PyCallable_Check(function)) { + PyErr_SetString(PyExc_TypeError, "function must be callable"); + return NULL; + } + self = _pya_malloc(sizeof(PyUFuncObject)); + if (self == NULL) { + return NULL; + } + PyObject_Init((PyObject *)self, &PyUFunc_Type); + + self->userloops = NULL; + self->nin = nin; + self->nout = nout; + self->nargs = nin + nout; + self->identity = PyUFunc_None; + self->functions = pyfunc_functions; + self->ntypes = 1; + self->check_return = 0; + + /* generalized ufunc */ + self->core_enabled = 0; + self->core_num_dim_ix = 0; + self->core_num_dims = NULL; + self->core_dim_ixs = NULL; + self->core_offsets = NULL; + self->core_signature = NULL; + + pyname = PyObject_GetAttrString(function, "__name__"); + if (pyname) { + (void) PyString_AsStringAndSize(pyname, &fname, &fname_len); + } + if (PyErr_Occurred()) { + fname = "?"; + fname_len = 1; + PyErr_Clear(); + } + Py_XDECREF(pyname); + + /* + * self->ptr holds a pointer for enough memory for + * self->data[0] (fdata) + * self->data + * self->name + * self->types + * + * To be safest, all of these need their memory aligned on void * pointers + * Therefore, we may need to allocate extra space. + */ + offset[0] = sizeof(PyUFunc_PyFuncData); + i = (sizeof(PyUFunc_PyFuncData) % sizeof(void *)); + if (i) { + offset[0] += (sizeof(void *) - i); + } + offset[1] = self->nargs; + i = (self->nargs % sizeof(void *)); + if (i) { + offset[1] += (sizeof(void *)-i); + } + self->ptr = _pya_malloc(offset[0] + offset[1] + sizeof(void *) + + (fname_len + 14)); + if (self->ptr == NULL) { + return PyErr_NoMemory(); + } + Py_INCREF(function); + self->obj = function; + fdata = (PyUFunc_PyFuncData *)(self->ptr); + fdata->nin = nin; + fdata->nout = nout; + fdata->callable = function; + + self->data = (void **)(((char *)self->ptr) + offset[0]); + self->data[0] = (void *)fdata; + self->types = (char *)self->data + sizeof(void *); + for (i = 0; i < self->nargs; i++) { + self->types[i] = PyArray_OBJECT; + } + str = self->types + offset[1]; + memcpy(str, fname, fname_len); + memcpy(str+fname_len, " (vectorized)", 14); + self->name = str; + + /* Do a better job someday */ + self->doc = "dynamic ufunc based on a python function"; + + return (PyObject *)self; +} /* ***************************************************************************** |