summaryrefslogtreecommitdiff
path: root/numpy/core/src
diff options
context:
space:
mode:
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.h2188
-rw-r--r--numpy/core/src/umath_loops.h.src.unused405
-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.h10
-rw-r--r--numpy/core/src/umathmodule.c.src115
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;
+}
/*
*****************************************************************************