|
/* Generated by Cython 0.15.1 on Wed Nov 9 15:56:45 2011 */ |
|
|
|
#define PY_SSIZE_T_CLEAN |
|
#include "Python.h" |
|
#ifndef Py_PYTHON_H |
|
#error Python headers needed to compile C extensions, please install development version of Python. |
|
#else |
|
|
|
#include <stddef.h> /* For offsetof */ |
|
#ifndef offsetof |
|
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) |
|
#endif |
|
|
|
#if !defined(WIN32) && !defined(MS_WINDOWS) |
|
#ifndef __stdcall |
|
#define __stdcall |
|
#endif |
|
#ifndef __cdecl |
|
#define __cdecl |
|
#endif |
|
#ifndef __fastcall |
|
#define __fastcall |
|
#endif |
|
#endif |
|
|
|
#ifndef DL_IMPORT |
|
#define DL_IMPORT(t) t |
|
#endif |
|
#ifndef DL_EXPORT |
|
#define DL_EXPORT(t) t |
|
#endif |
|
|
|
#ifndef PY_LONG_LONG |
|
#define PY_LONG_LONG LONG_LONG |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02040000 |
|
#define METH_COEXIST 0 |
|
#define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type) |
|
#define PyDict_Contains(d,o) PySequence_Contains(d,o) |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02050000 |
|
typedef int Py_ssize_t; |
|
#define PY_SSIZE_T_MAX INT_MAX |
|
#define PY_SSIZE_T_MIN INT_MIN |
|
#define PY_FORMAT_SIZE_T "" |
|
#define PyInt_FromSsize_t(z) PyInt_FromLong(z) |
|
#define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o) |
|
#define PyNumber_Index(o) PyNumber_Int(o) |
|
#define PyIndex_Check(o) PyNumber_Check(o) |
|
#define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message) |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02060000 |
|
#define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) |
|
#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) |
|
#define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) |
|
#define PyVarObject_HEAD_INIT(type, size) \ |
|
PyObject_HEAD_INIT(type) size, |
|
#define PyType_Modified(t) |
|
|
|
typedef struct { |
|
void *buf; |
|
PyObject *obj; |
|
Py_ssize_t len; |
|
Py_ssize_t itemsize; |
|
int readonly; |
|
int ndim; |
|
char *format; |
|
Py_ssize_t *shape; |
|
Py_ssize_t *strides; |
|
Py_ssize_t *suboffsets; |
|
void *internal; |
|
} Py_buffer; |
|
|
|
#define PyBUF_SIMPLE 0 |
|
#define PyBUF_WRITABLE 0x0001 |
|
#define PyBUF_FORMAT 0x0004 |
|
#define PyBUF_ND 0x0008 |
|
#define PyBUF_STRIDES (0x0010 | PyBUF_ND) |
|
#define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) |
|
#define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) |
|
#define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) |
|
#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) |
|
|
|
#endif |
|
|
|
#if PY_MAJOR_VERSION < 3 |
|
#define __Pyx_BUILTIN_MODULE_NAME "__builtin__" |
|
#else |
|
#define __Pyx_BUILTIN_MODULE_NAME "builtins" |
|
#endif |
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
#define Py_TPFLAGS_CHECKTYPES 0 |
|
#define Py_TPFLAGS_HAVE_INDEX 0 |
|
#endif |
|
|
|
#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) |
|
#define Py_TPFLAGS_HAVE_NEWBUFFER 0 |
|
#endif |
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
#define PyBaseString_Type PyUnicode_Type |
|
#define PyStringObject PyUnicodeObject |
|
#define PyString_Type PyUnicode_Type |
|
#define PyString_Check PyUnicode_Check |
|
#define PyString_CheckExact PyUnicode_CheckExact |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02060000 |
|
#define PyBytesObject PyStringObject |
|
#define PyBytes_Type PyString_Type |
|
#define PyBytes_Check PyString_Check |
|
#define PyBytes_CheckExact PyString_CheckExact |
|
#define PyBytes_FromString PyString_FromString |
|
#define PyBytes_FromStringAndSize PyString_FromStringAndSize |
|
#define PyBytes_FromFormat PyString_FromFormat |
|
#define PyBytes_DecodeEscape PyString_DecodeEscape |
|
#define PyBytes_AsString PyString_AsString |
|
#define PyBytes_AsStringAndSize PyString_AsStringAndSize |
|
#define PyBytes_Size PyString_Size |
|
#define PyBytes_AS_STRING PyString_AS_STRING |
|
#define PyBytes_GET_SIZE PyString_GET_SIZE |
|
#define PyBytes_Repr PyString_Repr |
|
#define PyBytes_Concat PyString_Concat |
|
#define PyBytes_ConcatAndDel PyString_ConcatAndDel |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02060000 |
|
#define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) |
|
#define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) |
|
#endif |
|
#ifndef PySet_CheckExact |
|
#define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) |
|
#endif |
|
|
|
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) |
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
#define PyIntObject PyLongObject |
|
#define PyInt_Type PyLong_Type |
|
#define PyInt_Check(op) PyLong_Check(op) |
|
#define PyInt_CheckExact(op) PyLong_CheckExact(op) |
|
#define PyInt_FromString PyLong_FromString |
|
#define PyInt_FromUnicode PyLong_FromUnicode |
|
#define PyInt_FromLong PyLong_FromLong |
|
#define PyInt_FromSize_t PyLong_FromSize_t |
|
#define PyInt_FromSsize_t PyLong_FromSsize_t |
|
#define PyInt_AsLong PyLong_AsLong |
|
#define PyInt_AS_LONG PyLong_AS_LONG |
|
#define PyInt_AsSsize_t PyLong_AsSsize_t |
|
#define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask |
|
#define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask |
|
#endif |
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
#define PyBoolObject PyLongObject |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x03020000 |
|
typedef long Py_hash_t; |
|
#define __Pyx_PyInt_FromHash_t PyInt_FromLong |
|
#define __Pyx_PyInt_AsHash_t PyInt_AsLong |
|
#else |
|
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t |
|
#define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t |
|
#endif |
|
|
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
#define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) |
|
#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) |
|
#else |
|
#define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) |
|
#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) |
|
#endif |
|
|
|
#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300) |
|
#define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b) |
|
#define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) |
|
#define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) |
|
#else |
|
#define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \ |
|
(PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \ |
|
(likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \ |
|
(PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) |
|
#define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \ |
|
(PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ |
|
(likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \ |
|
(PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) |
|
#define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \ |
|
(PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ |
|
(likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \ |
|
(PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) |
|
#endif |
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
#define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02050000 |
|
#define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n))) |
|
#define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a)) |
|
#define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n))) |
|
#else |
|
#define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n)) |
|
#define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a)) |
|
#define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n)) |
|
#endif |
|
|
|
#if PY_VERSION_HEX < 0x02050000 |
|
#define __Pyx_NAMESTR(n) ((char *)(n)) |
|
#define __Pyx_DOCSTR(n) ((char *)(n)) |
|
#else |
|
#define __Pyx_NAMESTR(n) (n) |
|
#define __Pyx_DOCSTR(n) (n) |
|
#endif |
|
|
|
#ifndef __PYX_EXTERN_C |
|
#ifdef __cplusplus |
|
#define __PYX_EXTERN_C extern "C" |
|
#else |
|
#define __PYX_EXTERN_C extern |
|
#endif |
|
#endif |
|
|
|
#if defined(WIN32) || defined(MS_WINDOWS) |
|
#define _USE_MATH_DEFINES |
|
#endif |
|
#include <math.h> |
|
#define __PYX_HAVE__supermath |
|
#define __PYX_HAVE_API__supermath |
|
#ifdef _OPENMP |
|
#include <omp.h> |
|
#endif /* _OPENMP */ |
|
|
|
#ifdef PYREX_WITHOUT_ASSERTIONS |
|
#define CYTHON_WITHOUT_ASSERTIONS |
|
#endif |
|
|
|
|
|
/* inline attribute */ |
|
#ifndef CYTHON_INLINE |
|
#if defined(__GNUC__) |
|
#define CYTHON_INLINE __inline__ |
|
#elif defined(_MSC_VER) |
|
#define CYTHON_INLINE __inline |
|
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L |
|
#define CYTHON_INLINE inline |
|
#else |
|
#define CYTHON_INLINE |
|
#endif |
|
#endif |
|
|
|
/* unused attribute */ |
|
#ifndef CYTHON_UNUSED |
|
# if defined(__GNUC__) |
|
# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) |
|
# define CYTHON_UNUSED __attribute__ ((__unused__)) |
|
# else |
|
# define CYTHON_UNUSED |
|
# endif |
|
# elif defined(__ICC) || defined(__INTEL_COMPILER) |
|
# define CYTHON_UNUSED __attribute__ ((__unused__)) |
|
# else |
|
# define CYTHON_UNUSED |
|
# endif |
|
#endif |
|
|
|
typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ |
|
|
|
|
|
/* Type Conversion Predeclarations */ |
|
|
|
#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s) |
|
#define __Pyx_PyBytes_AsUString(s) ((unsigned char*) PyBytes_AsString(s)) |
|
|
|
#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) |
|
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) |
|
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); |
|
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); |
|
|
|
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); |
|
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); |
|
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); |
|
|
|
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) |
|
|
|
|
|
#ifdef __GNUC__ |
|
/* Test for GCC > 2.95 */ |
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) |
|
#define likely(x) __builtin_expect(!!(x), 1) |
|
#define unlikely(x) __builtin_expect(!!(x), 0) |
|
#else /* __GNUC__ > 2 ... */ |
|
#define likely(x) (x) |
|
#define unlikely(x) (x) |
|
#endif /* __GNUC__ > 2 ... */ |
|
#else /* __GNUC__ */ |
|
#define likely(x) (x) |
|
#define unlikely(x) (x) |
|
#endif /* __GNUC__ */ |
|
|
|
static PyObject *__pyx_m; |
|
static PyObject *__pyx_b; |
|
static PyObject *__pyx_empty_tuple; |
|
static PyObject *__pyx_empty_bytes; |
|
static int __pyx_lineno; |
|
static int __pyx_clineno = 0; |
|
static const char * __pyx_cfilenm= __FILE__; |
|
static const char *__pyx_filename; |
|
|
|
|
|
static const char *__pyx_f[] = { |
|
"supermath.pyx", |
|
}; |
|
|
|
/*--- Type declarations ---*/ |
|
|
|
#ifndef CYTHON_REFNANNY |
|
#define CYTHON_REFNANNY 0 |
|
#endif |
|
|
|
#if CYTHON_REFNANNY |
|
typedef struct { |
|
void (*INCREF)(void*, PyObject*, int); |
|
void (*DECREF)(void*, PyObject*, int); |
|
void (*GOTREF)(void*, PyObject*, int); |
|
void (*GIVEREF)(void*, PyObject*, int); |
|
void* (*SetupContext)(const char*, int, const char*); |
|
void (*FinishContext)(void**); |
|
} __Pyx_RefNannyAPIStruct; |
|
static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; |
|
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/ |
|
#define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; |
|
#define __Pyx_RefNannySetupContext(name) __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) |
|
#define __Pyx_RefNannyFinishContext() __Pyx_RefNanny->FinishContext(&__pyx_refnanny) |
|
#define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
|
#define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
|
#define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
|
#define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
|
#define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) |
|
#define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) |
|
#define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) |
|
#define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) |
|
#else |
|
#define __Pyx_RefNannyDeclarations |
|
#define __Pyx_RefNannySetupContext(name) |
|
#define __Pyx_RefNannyFinishContext() |
|
#define __Pyx_INCREF(r) Py_INCREF(r) |
|
#define __Pyx_DECREF(r) Py_DECREF(r) |
|
#define __Pyx_GOTREF(r) |
|
#define __Pyx_GIVEREF(r) |
|
#define __Pyx_XINCREF(r) Py_XINCREF(r) |
|
#define __Pyx_XDECREF(r) Py_XDECREF(r) |
|
#define __Pyx_XGOTREF(r) |
|
#define __Pyx_XGIVEREF(r) |
|
#endif /* CYTHON_REFNANNY */ |
|
|
|
static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ |
|
|
|
#ifndef CYTHON_PROFILE |
|
#define CYTHON_PROFILE 1 |
|
#endif |
|
|
|
#ifndef CYTHON_PROFILE_REUSE_FRAME |
|
#define CYTHON_PROFILE_REUSE_FRAME 0 |
|
#endif |
|
|
|
#if CYTHON_PROFILE |
|
|
|
#include "compile.h" |
|
#include "frameobject.h" |
|
#include "traceback.h" |
|
|
|
#if CYTHON_PROFILE_REUSE_FRAME |
|
#define CYTHON_FRAME_MODIFIER static |
|
#define CYTHON_FRAME_DEL |
|
#else |
|
#define CYTHON_FRAME_MODIFIER |
|
#define CYTHON_FRAME_DEL Py_DECREF(__pyx_frame) |
|
#endif |
|
|
|
#define __Pyx_TraceDeclarations \ |
|
static PyCodeObject *__pyx_frame_code = NULL; \ |
|
CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL; \ |
|
int __Pyx_use_tracing = 0; |
|
|
|
#define __Pyx_TraceCall(funcname, srcfile, firstlineno) \ |
|
if (unlikely(PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc)) { \ |
|
__Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, funcname, srcfile, firstlineno); \ |
|
} |
|
|
|
#define __Pyx_TraceException() \ |
|
if (unlikely(__Pyx_use_tracing( && PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc) { \ |
|
PyObject *exc_info = __Pyx_GetExceptionTuple(); \ |
|
if (exc_info) { \ |
|
PyThreadState_GET()->c_profilefunc( \ |
|
PyThreadState_GET()->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info); \ |
|
Py_DECREF(exc_info); \ |
|
} \ |
|
} |
|
|
|
#define __Pyx_TraceReturn(result) \ |
|
if (unlikely(__Pyx_use_tracing) && PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc) { \ |
|
PyThreadState_GET()->c_profilefunc( \ |
|
PyThreadState_GET()->c_profileobj, __pyx_frame, PyTrace_RETURN, (PyObject*)result); \ |
|
CYTHON_FRAME_DEL; \ |
|
} |
|
|
|
static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno); /*proto*/ |
|
static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, const char *funcname, const char *srcfile, int firstlineno); /*proto*/ |
|
|
|
#else |
|
|
|
#define __Pyx_TraceDeclarations |
|
#define __Pyx_TraceCall(funcname, srcfile, firstlineno) |
|
#define __Pyx_TraceException() |
|
#define __Pyx_TraceReturn(result) |
|
|
|
#endif /* CYTHON_PROFILE */ |
|
|
|
static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */ |
|
|
|
#define UNARY_NEG_WOULD_OVERFLOW(x) (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) |
|
|
|
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, |
|
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ |
|
|
|
static void __Pyx_RaiseDoubleKeywordsError( |
|
const char* func_name, PyObject* kw_name); /*proto*/ |
|
|
|
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /*proto*/ |
|
|
|
static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); |
|
|
|
static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); |
|
|
|
static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *); |
|
|
|
static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *); |
|
|
|
static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *); |
|
|
|
static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *); |
|
|
|
static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *); |
|
|
|
static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *); |
|
|
|
static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *); |
|
|
|
static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *); |
|
|
|
static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *); |
|
|
|
static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *); |
|
|
|
static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *); |
|
|
|
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *); |
|
|
|
static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *); |
|
|
|
static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); |
|
|
|
static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ |
|
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ |
|
|
|
static void __Pyx_WriteUnraisable(const char *name, int clineno, |
|
int lineno, const char *filename); /*proto*/ |
|
|
|
static int __Pyx_check_binary_version(void); |
|
|
|
static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno, |
|
int __pyx_lineno, const char *__pyx_filename); /*proto*/ |
|
|
|
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ |
|
|
|
/* Module declarations from 'supermath' */ |
|
static int __pyx_f_9supermath_sub_routine(int, int); /*proto*/ |
|
#define __Pyx_MODULE_NAME "supermath" |
|
int __pyx_module_is_main_supermath = 0; |
|
|
|
/* Implementation of 'supermath' */ |
|
static PyObject *__pyx_builtin_range; |
|
static char __pyx_k__seed[] = "seed"; |
|
static char __pyx_k__range[] = "range"; |
|
static char __pyx_k____main__[] = "__main__"; |
|
static char __pyx_k____test__[] = "__test__"; |
|
static char __pyx_k__range_max[] = "range_max"; |
|
static char __pyx_k__supermath[] = "supermath"; |
|
static char __pyx_k__compute_something[] = "compute_something"; |
|
static PyObject *__pyx_n_s____main__; |
|
static PyObject *__pyx_n_s____test__; |
|
static PyObject *__pyx_n_s__compute_something; |
|
static PyObject *__pyx_n_s__range; |
|
static PyObject *__pyx_n_s__range_max; |
|
static PyObject *__pyx_n_s__seed; |
|
static PyObject *__pyx_n_s__supermath; |
|
static PyObject *__pyx_int_0; |
|
static PyObject *__pyx_int_1; |
|
static PyObject *__pyx_int_2; |
|
static PyObject *__pyx_int_7; |
|
|
|
/* "supermath.pyx":4 |
|
* |
|
* |
|
* cdef int sub_routine(int a, int b): # <<<<<<<<<<<<<< |
|
* cdef int x = a |
|
* for i in range(b): |
|
*/ |
|
|
|
static int __pyx_f_9supermath_sub_routine(int __pyx_v_a, int __pyx_v_b) { |
|
int __pyx_v_x; |
|
PyObject *__pyx_v_i = NULL; |
|
int __pyx_r; |
|
__Pyx_RefNannyDeclarations |
|
PyObject *__pyx_t_1 = NULL; |
|
PyObject *__pyx_t_2 = NULL; |
|
Py_ssize_t __pyx_t_3; |
|
PyObject *(*__pyx_t_4)(PyObject *); |
|
PyObject *__pyx_t_5 = NULL; |
|
PyObject *__pyx_t_6 = NULL; |
|
int __pyx_t_7; |
|
int __pyx_t_8; |
|
int __pyx_lineno = 0; |
|
const char *__pyx_filename = NULL; |
|
int __pyx_clineno = 0; |
|
__Pyx_TraceDeclarations |
|
__Pyx_RefNannySetupContext("sub_routine"); |
|
__Pyx_TraceCall("sub_routine", __pyx_f[0], 4); |
|
|
|
/* "supermath.pyx":5 |
|
* |
|
* cdef int sub_routine(int a, int b): |
|
* cdef int x = a # <<<<<<<<<<<<<< |
|
* for i in range(b): |
|
* if (i * b) % a == 0: |
|
*/ |
|
__pyx_v_x = __pyx_v_a; |
|
|
|
/* "supermath.pyx":6 |
|
* cdef int sub_routine(int a, int b): |
|
* cdef int x = a |
|
* for i in range(b): # <<<<<<<<<<<<<< |
|
* if (i * b) % a == 0: |
|
* x += i |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_b); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(((PyObject *)__pyx_t_2)); |
|
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); |
|
__Pyx_GIVEREF(__pyx_t_1); |
|
__pyx_t_1 = 0; |
|
__pyx_t_1 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; |
|
if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) { |
|
__pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; |
|
__pyx_t_4 = NULL; |
|
} else { |
|
__pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_2); |
|
__pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; |
|
} |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
for (;;) { |
|
if (PyList_CheckExact(__pyx_t_2)) { |
|
if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; |
|
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; |
|
} else if (PyTuple_CheckExact(__pyx_t_2)) { |
|
if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; |
|
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; |
|
} else { |
|
__pyx_t_1 = __pyx_t_4(__pyx_t_2); |
|
if (unlikely(!__pyx_t_1)) { |
|
if (PyErr_Occurred()) { |
|
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); |
|
else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
} |
|
break; |
|
} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
} |
|
__Pyx_XDECREF(__pyx_v_i); |
|
__pyx_v_i = __pyx_t_1; |
|
__pyx_t_1 = 0; |
|
|
|
/* "supermath.pyx":7 |
|
* cdef int x = a |
|
* for i in range(b): |
|
* if (i * b) % a == 0: # <<<<<<<<<<<<<< |
|
* x += i |
|
* elif x > b: |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_b); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_5 = PyNumber_Multiply(__pyx_v_i, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_5); |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_6 = PyNumber_Remainder(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_6); |
|
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
__pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; |
|
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
if (__pyx_t_7) { |
|
|
|
/* "supermath.pyx":8 |
|
* for i in range(b): |
|
* if (i * b) % a == 0: |
|
* x += i # <<<<<<<<<<<<<< |
|
* elif x > b: |
|
* x /= b |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_x); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_v_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_6); |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
__pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; |
|
__pyx_v_x = __pyx_t_8; |
|
goto __pyx_L5; |
|
} |
|
|
|
/* "supermath.pyx":9 |
|
* if (i * b) % a == 0: |
|
* x += i |
|
* elif x > b: # <<<<<<<<<<<<<< |
|
* x /= b |
|
* return x |
|
*/ |
|
__pyx_t_7 = (__pyx_v_x > __pyx_v_b); |
|
if (__pyx_t_7) { |
|
|
|
/* "supermath.pyx":10 |
|
* x += i |
|
* elif x > b: |
|
* x /= b # <<<<<<<<<<<<<< |
|
* return x |
|
* |
|
*/ |
|
if (unlikely(__pyx_v_b == 0)) { |
|
PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); |
|
{__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
} |
|
else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_b == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_x))) { |
|
PyErr_Format(PyExc_OverflowError, "value too large to perform division"); |
|
{__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
} |
|
__pyx_v_x = __Pyx_div_int(__pyx_v_x, __pyx_v_b); |
|
goto __pyx_L5; |
|
} |
|
__pyx_L5:; |
|
} |
|
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; |
|
|
|
/* "supermath.pyx":11 |
|
* elif x > b: |
|
* x /= b |
|
* return x # <<<<<<<<<<<<<< |
|
* |
|
* def compute_something(int seed, int range_max): |
|
*/ |
|
__pyx_r = __pyx_v_x; |
|
goto __pyx_L0; |
|
|
|
__pyx_r = 0; |
|
goto __pyx_L0; |
|
__pyx_L1_error:; |
|
__Pyx_XDECREF(__pyx_t_1); |
|
__Pyx_XDECREF(__pyx_t_2); |
|
__Pyx_XDECREF(__pyx_t_5); |
|
__Pyx_XDECREF(__pyx_t_6); |
|
__Pyx_WriteUnraisable("supermath.sub_routine", __pyx_clineno, __pyx_lineno, __pyx_filename); |
|
__pyx_r = 0; |
|
__pyx_L0:; |
|
__Pyx_XDECREF(__pyx_v_i); |
|
__Pyx_TraceReturn(Py_None); |
|
__Pyx_RefNannyFinishContext(); |
|
return __pyx_r; |
|
} |
|
|
|
/* "supermath.pyx":13 |
|
* return x |
|
* |
|
* def compute_something(int seed, int range_max): # <<<<<<<<<<<<<< |
|
* cdef int sum1 = 0 |
|
* cdef int sum2 = 0 |
|
*/ |
|
|
|
static PyObject *__pyx_pf_9supermath_compute_something(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
|
static PyMethodDef __pyx_mdef_9supermath_compute_something = {__Pyx_NAMESTR("compute_something"), (PyCFunction)__pyx_pf_9supermath_compute_something, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; |
|
static PyObject *__pyx_pf_9supermath_compute_something(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
|
int __pyx_v_seed; |
|
int __pyx_v_range_max; |
|
int __pyx_v_sum1; |
|
int __pyx_v_sum2; |
|
PyObject *__pyx_v_x = 0; |
|
PyObject *__pyx_v_j = NULL; |
|
PyObject *__pyx_v_i = NULL; |
|
PyObject *__pyx_r = NULL; |
|
__Pyx_RefNannyDeclarations |
|
PyObject *__pyx_t_1 = NULL; |
|
PyObject *__pyx_t_2 = NULL; |
|
Py_ssize_t __pyx_t_3; |
|
PyObject *(*__pyx_t_4)(PyObject *); |
|
PyObject *__pyx_t_5 = NULL; |
|
Py_ssize_t __pyx_t_6; |
|
PyObject *(*__pyx_t_7)(PyObject *); |
|
PyObject *__pyx_t_8 = NULL; |
|
int __pyx_t_9; |
|
int __pyx_t_10; |
|
int __pyx_t_11; |
|
int __pyx_lineno = 0; |
|
const char *__pyx_filename = NULL; |
|
int __pyx_clineno = 0; |
|
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__seed,&__pyx_n_s__range_max,0}; |
|
__Pyx_TraceDeclarations |
|
__Pyx_RefNannySetupContext("compute_something"); |
|
__Pyx_TraceCall("compute_something", __pyx_f[0], 13); |
|
__pyx_self = __pyx_self; |
|
{ |
|
PyObject* values[2] = {0,0}; |
|
if (unlikely(__pyx_kwds)) { |
|
Py_ssize_t kw_args; |
|
switch (PyTuple_GET_SIZE(__pyx_args)) { |
|
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
|
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
|
case 0: break; |
|
default: goto __pyx_L5_argtuple_error; |
|
} |
|
kw_args = PyDict_Size(__pyx_kwds); |
|
switch (PyTuple_GET_SIZE(__pyx_args)) { |
|
case 0: |
|
values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__seed); |
|
if (likely(values[0])) kw_args--; |
|
else goto __pyx_L5_argtuple_error; |
|
case 1: |
|
values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__range_max); |
|
if (likely(values[1])) kw_args--; |
|
else { |
|
__Pyx_RaiseArgtupleInvalid("compute_something", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
|
} |
|
} |
|
if (unlikely(kw_args > 0)) { |
|
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "compute_something") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
|
} |
|
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) { |
|
goto __pyx_L5_argtuple_error; |
|
} else { |
|
values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
|
values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
|
} |
|
__pyx_v_seed = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_seed == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
|
__pyx_v_range_max = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_range_max == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
|
} |
|
goto __pyx_L4_argument_unpacking_done; |
|
__pyx_L5_argtuple_error:; |
|
__Pyx_RaiseArgtupleInvalid("compute_something", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
|
__pyx_L3_error:; |
|
__Pyx_AddTraceback("supermath.compute_something", __pyx_clineno, __pyx_lineno, __pyx_filename); |
|
__Pyx_RefNannyFinishContext(); |
|
return NULL; |
|
__pyx_L4_argument_unpacking_done:; |
|
|
|
/* "supermath.pyx":14 |
|
* |
|
* def compute_something(int seed, int range_max): |
|
* cdef int sum1 = 0 # <<<<<<<<<<<<<< |
|
* cdef int sum2 = 0 |
|
* cdef x = seed |
|
*/ |
|
__pyx_v_sum1 = 0; |
|
|
|
/* "supermath.pyx":15 |
|
* def compute_something(int seed, int range_max): |
|
* cdef int sum1 = 0 |
|
* cdef int sum2 = 0 # <<<<<<<<<<<<<< |
|
* cdef x = seed |
|
* |
|
*/ |
|
__pyx_v_sum2 = 0; |
|
|
|
/* "supermath.pyx":16 |
|
* cdef int sum1 = 0 |
|
* cdef int sum2 = 0 |
|
* cdef x = seed # <<<<<<<<<<<<<< |
|
* |
|
* # first part: some inline code in the main function |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_seed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_v_x = __pyx_t_1; |
|
__pyx_t_1 = 0; |
|
|
|
/* "supermath.pyx":19 |
|
* |
|
* # first part: some inline code in the main function |
|
* for j in range(range_max): # <<<<<<<<<<<<<< |
|
* for i in range(range_max * 2): |
|
* if i % x == 0: |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_range_max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(((PyObject *)__pyx_t_2)); |
|
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); |
|
__Pyx_GIVEREF(__pyx_t_1); |
|
__pyx_t_1 = 0; |
|
__pyx_t_1 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; |
|
if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) { |
|
__pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; |
|
__pyx_t_4 = NULL; |
|
} else { |
|
__pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_2); |
|
__pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; |
|
} |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
for (;;) { |
|
if (PyList_CheckExact(__pyx_t_2)) { |
|
if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; |
|
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; |
|
} else if (PyTuple_CheckExact(__pyx_t_2)) { |
|
if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; |
|
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; |
|
} else { |
|
__pyx_t_1 = __pyx_t_4(__pyx_t_2); |
|
if (unlikely(!__pyx_t_1)) { |
|
if (PyErr_Occurred()) { |
|
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); |
|
else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
} |
|
break; |
|
} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
} |
|
__Pyx_XDECREF(__pyx_v_j); |
|
__pyx_v_j = __pyx_t_1; |
|
__pyx_t_1 = 0; |
|
|
|
/* "supermath.pyx":20 |
|
* # first part: some inline code in the main function |
|
* for j in range(range_max): |
|
* for i in range(range_max * 2): # <<<<<<<<<<<<<< |
|
* if i % x == 0: |
|
* x += 7 * i |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong((__pyx_v_range_max * 2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(((PyObject *)__pyx_t_5)); |
|
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); |
|
__Pyx_GIVEREF(__pyx_t_1); |
|
__pyx_t_1 = 0; |
|
__pyx_t_1 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; |
|
if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) { |
|
__pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; |
|
__pyx_t_7 = NULL; |
|
} else { |
|
__pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_5); |
|
__pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; |
|
} |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
for (;;) { |
|
if (PyList_CheckExact(__pyx_t_5)) { |
|
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; |
|
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; |
|
} else if (PyTuple_CheckExact(__pyx_t_5)) { |
|
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; |
|
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; |
|
} else { |
|
__pyx_t_1 = __pyx_t_7(__pyx_t_5); |
|
if (unlikely(!__pyx_t_1)) { |
|
if (PyErr_Occurred()) { |
|
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); |
|
else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
} |
|
break; |
|
} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
} |
|
__Pyx_XDECREF(__pyx_v_i); |
|
__pyx_v_i = __pyx_t_1; |
|
__pyx_t_1 = 0; |
|
|
|
/* "supermath.pyx":21 |
|
* for j in range(range_max): |
|
* for i in range(range_max * 2): |
|
* if i % x == 0: # <<<<<<<<<<<<<< |
|
* x += 7 * i |
|
* elif x > range_max: |
|
*/ |
|
__pyx_t_1 = PyNumber_Remainder(__pyx_v_i, __pyx_v_x); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_8); |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; |
|
if (__pyx_t_9) { |
|
|
|
/* "supermath.pyx":22 |
|
* for i in range(range_max * 2): |
|
* if i % x == 0: |
|
* x += 7 * i # <<<<<<<<<<<<<< |
|
* elif x > range_max: |
|
* x /= range_max |
|
*/ |
|
__pyx_t_8 = PyNumber_Multiply(__pyx_int_7, __pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_8); |
|
__pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_x, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; |
|
__Pyx_DECREF(__pyx_v_x); |
|
__pyx_v_x = __pyx_t_1; |
|
__pyx_t_1 = 0; |
|
goto __pyx_L10; |
|
} |
|
|
|
/* "supermath.pyx":23 |
|
* if i % x == 0: |
|
* x += 7 * i |
|
* elif x > range_max: # <<<<<<<<<<<<<< |
|
* x /= range_max |
|
* |
|
*/ |
|
__pyx_t_1 = PyInt_FromLong(__pyx_v_range_max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__pyx_t_8 = PyObject_RichCompare(__pyx_v_x, __pyx_t_1, Py_GT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_8); |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; |
|
if (__pyx_t_9) { |
|
|
|
/* "supermath.pyx":24 |
|
* x += 7 * i |
|
* elif x > range_max: |
|
* x /= range_max # <<<<<<<<<<<<<< |
|
* |
|
* # second part: some execution delegated to a sub routine |
|
*/ |
|
__pyx_t_8 = PyInt_FromLong(__pyx_v_range_max); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_8); |
|
__pyx_t_1 = __Pyx_PyNumber_InPlaceDivide(__pyx_v_x, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; |
|
__Pyx_DECREF(__pyx_v_x); |
|
__pyx_v_x = __pyx_t_1; |
|
__pyx_t_1 = 0; |
|
goto __pyx_L10; |
|
} |
|
__pyx_L10:; |
|
} |
|
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; |
|
} |
|
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; |
|
|
|
/* "supermath.pyx":27 |
|
* |
|
* # second part: some execution delegated to a sub routine |
|
* for j in range(range_max): # <<<<<<<<<<<<<< |
|
* sum1 += sub_routine(x, j) |
|
* sum2 += sub_routine(seed + 1, j * 2 -1) |
|
*/ |
|
__pyx_t_2 = PyInt_FromLong(__pyx_v_range_max); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_2); |
|
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(((PyObject *)__pyx_t_5)); |
|
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); |
|
__Pyx_GIVEREF(__pyx_t_2); |
|
__pyx_t_2 = 0; |
|
__pyx_t_2 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_2); |
|
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; |
|
if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) { |
|
__pyx_t_5 = __pyx_t_2; __Pyx_INCREF(__pyx_t_5); __pyx_t_3 = 0; |
|
__pyx_t_4 = NULL; |
|
} else { |
|
__pyx_t_3 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_5); |
|
__pyx_t_4 = Py_TYPE(__pyx_t_5)->tp_iternext; |
|
} |
|
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; |
|
for (;;) { |
|
if (PyList_CheckExact(__pyx_t_5)) { |
|
if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_5)) break; |
|
__pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; |
|
} else if (PyTuple_CheckExact(__pyx_t_5)) { |
|
if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_5)) break; |
|
__pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; |
|
} else { |
|
__pyx_t_2 = __pyx_t_4(__pyx_t_5); |
|
if (unlikely(!__pyx_t_2)) { |
|
if (PyErr_Occurred()) { |
|
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); |
|
else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
} |
|
break; |
|
} |
|
__Pyx_GOTREF(__pyx_t_2); |
|
} |
|
__Pyx_XDECREF(__pyx_v_j); |
|
__pyx_v_j = __pyx_t_2; |
|
__pyx_t_2 = 0; |
|
|
|
/* "supermath.pyx":28 |
|
* # second part: some execution delegated to a sub routine |
|
* for j in range(range_max): |
|
* sum1 += sub_routine(x, j) # <<<<<<<<<<<<<< |
|
* sum2 += sub_routine(seed + 1, j * 2 -1) |
|
* return sum1 - sum2 |
|
*/ |
|
__pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_x); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_j); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__pyx_v_sum1 = (__pyx_v_sum1 + __pyx_f_9supermath_sub_routine(__pyx_t_10, __pyx_t_11)); |
|
|
|
/* "supermath.pyx":29 |
|
* for j in range(range_max): |
|
* sum1 += sub_routine(x, j) |
|
* sum2 += sub_routine(seed + 1, j * 2 -1) # <<<<<<<<<<<<<< |
|
* return sum1 - sum2 |
|
*/ |
|
__pyx_t_2 = PyNumber_Multiply(__pyx_v_j, __pyx_int_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_2); |
|
__pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; |
|
__pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
__pyx_v_sum2 = (__pyx_v_sum2 + __pyx_f_9supermath_sub_routine((__pyx_v_seed + 1), __pyx_t_11)); |
|
} |
|
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; |
|
|
|
/* "supermath.pyx":30 |
|
* sum1 += sub_routine(x, j) |
|
* sum2 += sub_routine(seed + 1, j * 2 -1) |
|
* return sum1 - sum2 # <<<<<<<<<<<<<< |
|
*/ |
|
__Pyx_XDECREF(__pyx_r); |
|
__pyx_t_5 = PyInt_FromLong((__pyx_v_sum1 - __pyx_v_sum2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_5); |
|
__pyx_r = __pyx_t_5; |
|
__pyx_t_5 = 0; |
|
goto __pyx_L0; |
|
|
|
__pyx_r = Py_None; __Pyx_INCREF(Py_None); |
|
goto __pyx_L0; |
|
__pyx_L1_error:; |
|
__Pyx_XDECREF(__pyx_t_1); |
|
__Pyx_XDECREF(__pyx_t_2); |
|
__Pyx_XDECREF(__pyx_t_5); |
|
__Pyx_XDECREF(__pyx_t_8); |
|
__Pyx_AddTraceback("supermath.compute_something", __pyx_clineno, __pyx_lineno, __pyx_filename); |
|
__pyx_r = NULL; |
|
__pyx_L0:; |
|
__Pyx_XDECREF(__pyx_v_x); |
|
__Pyx_XDECREF(__pyx_v_j); |
|
__Pyx_XDECREF(__pyx_v_i); |
|
__Pyx_XGIVEREF(__pyx_r); |
|
__Pyx_TraceReturn(__pyx_r); |
|
__Pyx_RefNannyFinishContext(); |
|
return __pyx_r; |
|
} |
|
|
|
static PyMethodDef __pyx_methods[] = { |
|
{0, 0, 0, 0} |
|
}; |
|
|
|
#if PY_MAJOR_VERSION >= 3 |
|
static struct PyModuleDef __pyx_moduledef = { |
|
PyModuleDef_HEAD_INIT, |
|
__Pyx_NAMESTR("supermath"), |
|
0, /* m_doc */ |
|
-1, /* m_size */ |
|
__pyx_methods /* m_methods */, |
|
NULL, /* m_reload */ |
|
NULL, /* m_traverse */ |
|
NULL, /* m_clear */ |
|
NULL /* m_free */ |
|
}; |
|
#endif |
|
|
|
static __Pyx_StringTabEntry __pyx_string_tab[] = { |
|
{&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, |
|
{&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, |
|
{&__pyx_n_s__compute_something, __pyx_k__compute_something, sizeof(__pyx_k__compute_something), 0, 0, 1, 1}, |
|
{&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1}, |
|
{&__pyx_n_s__range_max, __pyx_k__range_max, sizeof(__pyx_k__range_max), 0, 0, 1, 1}, |
|
{&__pyx_n_s__seed, __pyx_k__seed, sizeof(__pyx_k__seed), 0, 0, 1, 1}, |
|
{&__pyx_n_s__supermath, __pyx_k__supermath, sizeof(__pyx_k__supermath), 0, 0, 1, 1}, |
|
{0, 0, 0, 0, 0, 0, 0} |
|
}; |
|
static int __Pyx_InitCachedBuiltins(void) { |
|
__pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
return 0; |
|
__pyx_L1_error:; |
|
return -1; |
|
} |
|
|
|
static int __Pyx_InitCachedConstants(void) { |
|
__Pyx_RefNannyDeclarations |
|
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants"); |
|
__Pyx_RefNannyFinishContext(); |
|
return 0; |
|
} |
|
|
|
static int __Pyx_InitGlobals(void) { |
|
if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
__pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
__pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
return 0; |
|
__pyx_L1_error:; |
|
return -1; |
|
} |
|
|
|
#if PY_MAJOR_VERSION < 3 |
|
PyMODINIT_FUNC initsupermath(void); /*proto*/ |
|
PyMODINIT_FUNC initsupermath(void) |
|
#else |
|
PyMODINIT_FUNC PyInit_supermath(void); /*proto*/ |
|
PyMODINIT_FUNC PyInit_supermath(void) |
|
#endif |
|
{ |
|
PyObject *__pyx_t_1 = NULL; |
|
__Pyx_RefNannyDeclarations |
|
#if CYTHON_REFNANNY |
|
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); |
|
if (!__Pyx_RefNanny) { |
|
PyErr_Clear(); |
|
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); |
|
if (!__Pyx_RefNanny) |
|
Py_FatalError("failed to import 'refnanny' module"); |
|
} |
|
#endif |
|
__Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_supermath(void)"); |
|
if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
#ifdef __pyx_binding_PyCFunctionType_USED |
|
if (__pyx_binding_PyCFunctionType_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
#endif |
|
/*--- Library function declarations ---*/ |
|
/*--- Threads initialization code ---*/ |
|
#if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS |
|
#ifdef WITH_THREAD /* Python build with threading support? */ |
|
PyEval_InitThreads(); |
|
#endif |
|
#endif |
|
/*--- Module creation code ---*/ |
|
#if PY_MAJOR_VERSION < 3 |
|
__pyx_m = Py_InitModule4(__Pyx_NAMESTR("supermath"), __pyx_methods, 0, 0, PYTHON_API_VERSION); |
|
#else |
|
__pyx_m = PyModule_Create(&__pyx_moduledef); |
|
#endif |
|
if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
#if PY_MAJOR_VERSION < 3 |
|
Py_INCREF(__pyx_m); |
|
#endif |
|
__pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); |
|
if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
/*--- Initialize various global constants etc. ---*/ |
|
if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
if (__pyx_module_is_main_supermath) { |
|
if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
|
} |
|
/*--- Builtin init code ---*/ |
|
if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
/*--- Constants init code ---*/ |
|
if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
/*--- Global init code ---*/ |
|
/*--- Variable export code ---*/ |
|
/*--- Function export code ---*/ |
|
/*--- Type init code ---*/ |
|
/*--- Type import code ---*/ |
|
/*--- Variable import code ---*/ |
|
/*--- Function import code ---*/ |
|
/*--- Execution code ---*/ |
|
|
|
/* "supermath.pyx":13 |
|
* return x |
|
* |
|
* def compute_something(int seed, int range_max): # <<<<<<<<<<<<<< |
|
* cdef int sum1 = 0 |
|
* cdef int sum2 = 0 |
|
*/ |
|
__pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9supermath_compute_something, NULL, __pyx_n_s__supermath); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(__pyx_t_1); |
|
if (PyObject_SetAttr(__pyx_m, __pyx_n_s__compute_something, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
|
|
|
/* "supermath.pyx":1 |
|
* #cython: profile=True # <<<<<<<<<<<<<< |
|
* |
|
* |
|
*/ |
|
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_GOTREF(((PyObject *)__pyx_t_1)); |
|
if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
|
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; |
|
goto __pyx_L0; |
|
__pyx_L1_error:; |
|
__Pyx_XDECREF(__pyx_t_1); |
|
if (__pyx_m) { |
|
__Pyx_AddTraceback("init supermath", __pyx_clineno, __pyx_lineno, __pyx_filename); |
|
Py_DECREF(__pyx_m); __pyx_m = 0; |
|
} else if (!PyErr_Occurred()) { |
|
PyErr_SetString(PyExc_ImportError, "init supermath"); |
|
} |
|
__pyx_L0:; |
|
__Pyx_RefNannyFinishContext(); |
|
#if PY_MAJOR_VERSION < 3 |
|
return; |
|
#else |
|
return __pyx_m; |
|
#endif |
|
} |
|
|
|
/* Runtime support code */ |
|
|
|
#if CYTHON_REFNANNY |
|
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { |
|
PyObject *m = NULL, *p = NULL; |
|
void *r = NULL; |
|
m = PyImport_ImportModule((char *)modname); |
|
if (!m) goto end; |
|
p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); |
|
if (!p) goto end; |
|
r = PyLong_AsVoidPtr(p); |
|
end: |
|
Py_XDECREF(p); |
|
Py_XDECREF(m); |
|
return (__Pyx_RefNannyAPIStruct *)r; |
|
} |
|
#endif /* CYTHON_REFNANNY */ |
|
|
|
static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { |
|
PyObject *result; |
|
result = PyObject_GetAttr(dict, name); |
|
if (!result) { |
|
if (dict != __pyx_b) { |
|
PyErr_Clear(); |
|
result = PyObject_GetAttr(__pyx_b, name); |
|
} |
|
if (!result) { |
|
PyErr_SetObject(PyExc_NameError, name); |
|
} |
|
} |
|
return result; |
|
} |
|
|
|
|
|
#if CYTHON_PROFILE |
|
|
|
static int __Pyx_TraceSetupAndCall(PyCodeObject** code, |
|
PyFrameObject** frame, |
|
const char *funcname, |
|
const char *srcfile, |
|
int firstlineno) { |
|
if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) { |
|
if (*code == NULL) { |
|
*code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno); |
|
if (*code == NULL) return 0; |
|
} |
|
*frame = PyFrame_New( |
|
PyThreadState_GET(), /*PyThreadState *tstate*/ |
|
*code, /*PyCodeObject *code*/ |
|
PyModule_GetDict(__pyx_m), /*PyObject *globals*/ |
|
0 /*PyObject *locals*/ |
|
); |
|
if (*frame == NULL) return 0; |
|
} |
|
else { |
|
(*frame)->f_tstate = PyThreadState_GET(); |
|
} |
|
return PyThreadState_GET()->c_profilefunc(PyThreadState_GET()->c_profileobj, *frame, PyTrace_CALL, NULL) == 0; |
|
} |
|
|
|
static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) { |
|
PyObject *py_srcfile = 0; |
|
PyObject *py_funcname = 0; |
|
PyCodeObject *py_code = 0; |
|
|
|
#if PY_MAJOR_VERSION < 3 |
|
py_funcname = PyString_FromString(funcname); |
|
py_srcfile = PyString_FromString(srcfile); |
|
#else |
|
py_funcname = PyUnicode_FromString(funcname); |
|
py_srcfile = PyUnicode_FromString(srcfile); |
|
#endif |
|
if (!py_funcname | !py_srcfile) goto bad; |
|
|
|
py_code = PyCode_New( |
|
0, /*int argcount,*/ |
|
#if PY_MAJOR_VERSION >= 3 |
|
0, /*int kwonlyargcount,*/ |
|
#endif |
|
0, /*int nlocals,*/ |
|
0, /*int stacksize,*/ |
|
0, /*int flags,*/ |
|
__pyx_empty_bytes, /*PyObject *code,*/ |
|
__pyx_empty_tuple, /*PyObject *consts,*/ |
|
__pyx_empty_tuple, /*PyObject *names,*/ |
|
__pyx_empty_tuple, /*PyObject *varnames,*/ |
|
__pyx_empty_tuple, /*PyObject *freevars,*/ |
|
__pyx_empty_tuple, /*PyObject *cellvars,*/ |
|
py_srcfile, /*PyObject *filename,*/ |
|
py_funcname, /*PyObject *name,*/ |
|
firstlineno, /*int firstlineno,*/ |
|
__pyx_empty_bytes /*PyObject *lnotab*/ |
|
); |
|
|
|
bad: |
|
Py_XDECREF(py_srcfile); |
|
Py_XDECREF(py_funcname); |
|
|
|
return py_code; |
|
} |
|
|
|
#endif /* CYTHON_PROFILE */ |
|
|
|
static CYTHON_INLINE int __Pyx_div_int(int a, int b) { |
|
int q = a / b; |
|
int r = a - q*b; |
|
q -= ((r != 0) & ((r ^ b) < 0)); |
|
return q; |
|
} |
|
|
|
static void __Pyx_RaiseArgtupleInvalid( |
|
const char* func_name, |
|
int exact, |
|
Py_ssize_t num_min, |
|
Py_ssize_t num_max, |
|
Py_ssize_t num_found) |
|
{ |
|
Py_ssize_t num_expected; |
|
const char *more_or_less; |
|
|
|
if (num_found < num_min) { |
|
num_expected = num_min; |
|
more_or_less = "at least"; |
|
} else { |
|
num_expected = num_max; |
|
more_or_less = "at most"; |
|
} |
|
if (exact) { |
|
more_or_less = "exactly"; |
|
} |
|
PyErr_Format(PyExc_TypeError, |
|
"%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)", |
|
func_name, more_or_less, num_expected, |
|
(num_expected == 1) ? "" : "s", num_found); |
|
} |
|
|
|
static void __Pyx_RaiseDoubleKeywordsError( |
|
const char* func_name, |
|
PyObject* kw_name) |
|
{ |
|
PyErr_Format(PyExc_TypeError, |
|
#if PY_MAJOR_VERSION >= 3 |
|
"%s() got multiple values for keyword argument '%U'", func_name, kw_name); |
|
#else |
|
"%s() got multiple values for keyword argument '%s'", func_name, |
|
PyString_AS_STRING(kw_name)); |
|
#endif |
|
} |
|
|
|
static int __Pyx_ParseOptionalKeywords( |
|
PyObject *kwds, |
|
PyObject **argnames[], |
|
PyObject *kwds2, |
|
PyObject *values[], |
|
Py_ssize_t num_pos_args, |
|
const char* function_name) |
|
{ |
|
PyObject *key = 0, *value = 0; |
|
Py_ssize_t pos = 0; |
|
PyObject*** name; |
|
PyObject*** first_kw_arg = argnames + num_pos_args; |
|
|
|
while (PyDict_Next(kwds, &pos, &key, &value)) { |
|
name = first_kw_arg; |
|
while (*name && (**name != key)) name++; |
|
if (*name) { |
|
values[name-argnames] = value; |
|
} else { |
|
#if PY_MAJOR_VERSION < 3 |
|
if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) { |
|
#else |
|
if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) { |
|
#endif |
|
goto invalid_keyword_type; |
|
} else { |
|
for (name = first_kw_arg; *name; name++) { |
|
#if PY_MAJOR_VERSION >= 3 |
|
if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && |
|
PyUnicode_Compare(**name, key) == 0) break; |
|
#else |
|
if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && |
|
_PyString_Eq(**name, key)) break; |
|
#endif |
|
} |
|
if (*name) { |
|
values[name-argnames] = value; |
|
} else { |
|
/* unexpected keyword found */ |
|
for (name=argnames; name != first_kw_arg; name++) { |
|
if (**name == key) goto arg_passed_twice; |
|
#if PY_MAJOR_VERSION >= 3 |
|
if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && |
|
PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice; |
|
#else |
|
if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && |
|
_PyString_Eq(**name, key)) goto arg_passed_twice; |
|
#endif |
|
} |
|
if (kwds2) { |
|
if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; |
|
} else { |
|
goto invalid_keyword; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return 0; |
|
arg_passed_twice: |
|
__Pyx_RaiseDoubleKeywordsError(function_name, **name); |
|
goto bad; |
|
invalid_keyword_type: |
|
PyErr_Format(PyExc_TypeError, |
|
"%s() keywords must be strings", function_name); |
|
goto bad; |
|
invalid_keyword: |
|
PyErr_Format(PyExc_TypeError, |
|
#if PY_MAJOR_VERSION < 3 |
|
"%s() got an unexpected keyword argument '%s'", |
|
function_name, PyString_AsString(key)); |
|
#else |
|
"%s() got an unexpected keyword argument '%U'", |
|
function_name, key); |
|
#endif |
|
bad: |
|
return -1; |
|
} |
|
|
|
static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { |
|
const unsigned char neg_one = (unsigned char)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(unsigned char) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(unsigned char)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to unsigned char" : |
|
"value too large to convert to unsigned char"); |
|
} |
|
return (unsigned char)-1; |
|
} |
|
return (unsigned char)val; |
|
} |
|
return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x); |
|
} |
|
|
|
static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) { |
|
const unsigned short neg_one = (unsigned short)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(unsigned short) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(unsigned short)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to unsigned short" : |
|
"value too large to convert to unsigned short"); |
|
} |
|
return (unsigned short)-1; |
|
} |
|
return (unsigned short)val; |
|
} |
|
return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x); |
|
} |
|
|
|
static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) { |
|
const unsigned int neg_one = (unsigned int)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(unsigned int) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(unsigned int)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to unsigned int" : |
|
"value too large to convert to unsigned int"); |
|
} |
|
return (unsigned int)-1; |
|
} |
|
return (unsigned int)val; |
|
} |
|
return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x); |
|
} |
|
|
|
static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) { |
|
const char neg_one = (char)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(char) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(char)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to char" : |
|
"value too large to convert to char"); |
|
} |
|
return (char)-1; |
|
} |
|
return (char)val; |
|
} |
|
return (char)__Pyx_PyInt_AsLong(x); |
|
} |
|
|
|
static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) { |
|
const short neg_one = (short)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(short) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(short)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to short" : |
|
"value too large to convert to short"); |
|
} |
|
return (short)-1; |
|
} |
|
return (short)val; |
|
} |
|
return (short)__Pyx_PyInt_AsLong(x); |
|
} |
|
|
|
static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) { |
|
const int neg_one = (int)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(int) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(int)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to int" : |
|
"value too large to convert to int"); |
|
} |
|
return (int)-1; |
|
} |
|
return (int)val; |
|
} |
|
return (int)__Pyx_PyInt_AsLong(x); |
|
} |
|
|
|
static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) { |
|
const signed char neg_one = (signed char)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(signed char) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(signed char)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to signed char" : |
|
"value too large to convert to signed char"); |
|
} |
|
return (signed char)-1; |
|
} |
|
return (signed char)val; |
|
} |
|
return (signed char)__Pyx_PyInt_AsSignedLong(x); |
|
} |
|
|
|
static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) { |
|
const signed short neg_one = (signed short)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(signed short) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(signed short)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to signed short" : |
|
"value too large to convert to signed short"); |
|
} |
|
return (signed short)-1; |
|
} |
|
return (signed short)val; |
|
} |
|
return (signed short)__Pyx_PyInt_AsSignedLong(x); |
|
} |
|
|
|
static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) { |
|
const signed int neg_one = (signed int)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(signed int) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(signed int)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to signed int" : |
|
"value too large to convert to signed int"); |
|
} |
|
return (signed int)-1; |
|
} |
|
return (signed int)val; |
|
} |
|
return (signed int)__Pyx_PyInt_AsSignedLong(x); |
|
} |
|
|
|
static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) { |
|
const int neg_one = (int)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
if (sizeof(int) < sizeof(long)) { |
|
long val = __Pyx_PyInt_AsLong(x); |
|
if (unlikely(val != (long)(int)val)) { |
|
if (!unlikely(val == -1 && PyErr_Occurred())) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
(is_unsigned && unlikely(val < 0)) ? |
|
"can't convert negative value to int" : |
|
"value too large to convert to int"); |
|
} |
|
return (int)-1; |
|
} |
|
return (int)val; |
|
} |
|
return (int)__Pyx_PyInt_AsLong(x); |
|
} |
|
|
|
static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { |
|
const unsigned long neg_one = (unsigned long)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (likely(PyInt_Check(x))) { |
|
long val = PyInt_AS_LONG(x); |
|
if (is_unsigned && unlikely(val < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to unsigned long"); |
|
return (unsigned long)-1; |
|
} |
|
return (unsigned long)val; |
|
} else |
|
#endif |
|
if (likely(PyLong_Check(x))) { |
|
if (is_unsigned) { |
|
if (unlikely(Py_SIZE(x) < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to unsigned long"); |
|
return (unsigned long)-1; |
|
} |
|
return (unsigned long)PyLong_AsUnsignedLong(x); |
|
} else { |
|
return (unsigned long)PyLong_AsLong(x); |
|
} |
|
} else { |
|
unsigned long val; |
|
PyObject *tmp = __Pyx_PyNumber_Int(x); |
|
if (!tmp) return (unsigned long)-1; |
|
val = __Pyx_PyInt_AsUnsignedLong(tmp); |
|
Py_DECREF(tmp); |
|
return val; |
|
} |
|
} |
|
|
|
static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { |
|
const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (likely(PyInt_Check(x))) { |
|
long val = PyInt_AS_LONG(x); |
|
if (is_unsigned && unlikely(val < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to unsigned PY_LONG_LONG"); |
|
return (unsigned PY_LONG_LONG)-1; |
|
} |
|
return (unsigned PY_LONG_LONG)val; |
|
} else |
|
#endif |
|
if (likely(PyLong_Check(x))) { |
|
if (is_unsigned) { |
|
if (unlikely(Py_SIZE(x) < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to unsigned PY_LONG_LONG"); |
|
return (unsigned PY_LONG_LONG)-1; |
|
} |
|
return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); |
|
} else { |
|
return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); |
|
} |
|
} else { |
|
unsigned PY_LONG_LONG val; |
|
PyObject *tmp = __Pyx_PyNumber_Int(x); |
|
if (!tmp) return (unsigned PY_LONG_LONG)-1; |
|
val = __Pyx_PyInt_AsUnsignedLongLong(tmp); |
|
Py_DECREF(tmp); |
|
return val; |
|
} |
|
} |
|
|
|
static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { |
|
const long neg_one = (long)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (likely(PyInt_Check(x))) { |
|
long val = PyInt_AS_LONG(x); |
|
if (is_unsigned && unlikely(val < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to long"); |
|
return (long)-1; |
|
} |
|
return (long)val; |
|
} else |
|
#endif |
|
if (likely(PyLong_Check(x))) { |
|
if (is_unsigned) { |
|
if (unlikely(Py_SIZE(x) < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to long"); |
|
return (long)-1; |
|
} |
|
return (long)PyLong_AsUnsignedLong(x); |
|
} else { |
|
return (long)PyLong_AsLong(x); |
|
} |
|
} else { |
|
long val; |
|
PyObject *tmp = __Pyx_PyNumber_Int(x); |
|
if (!tmp) return (long)-1; |
|
val = __Pyx_PyInt_AsLong(tmp); |
|
Py_DECREF(tmp); |
|
return val; |
|
} |
|
} |
|
|
|
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { |
|
const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (likely(PyInt_Check(x))) { |
|
long val = PyInt_AS_LONG(x); |
|
if (is_unsigned && unlikely(val < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to PY_LONG_LONG"); |
|
return (PY_LONG_LONG)-1; |
|
} |
|
return (PY_LONG_LONG)val; |
|
} else |
|
#endif |
|
if (likely(PyLong_Check(x))) { |
|
if (is_unsigned) { |
|
if (unlikely(Py_SIZE(x) < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to PY_LONG_LONG"); |
|
return (PY_LONG_LONG)-1; |
|
} |
|
return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); |
|
} else { |
|
return (PY_LONG_LONG)PyLong_AsLongLong(x); |
|
} |
|
} else { |
|
PY_LONG_LONG val; |
|
PyObject *tmp = __Pyx_PyNumber_Int(x); |
|
if (!tmp) return (PY_LONG_LONG)-1; |
|
val = __Pyx_PyInt_AsLongLong(tmp); |
|
Py_DECREF(tmp); |
|
return val; |
|
} |
|
} |
|
|
|
static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { |
|
const signed long neg_one = (signed long)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (likely(PyInt_Check(x))) { |
|
long val = PyInt_AS_LONG(x); |
|
if (is_unsigned && unlikely(val < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to signed long"); |
|
return (signed long)-1; |
|
} |
|
return (signed long)val; |
|
} else |
|
#endif |
|
if (likely(PyLong_Check(x))) { |
|
if (is_unsigned) { |
|
if (unlikely(Py_SIZE(x) < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to signed long"); |
|
return (signed long)-1; |
|
} |
|
return (signed long)PyLong_AsUnsignedLong(x); |
|
} else { |
|
return (signed long)PyLong_AsLong(x); |
|
} |
|
} else { |
|
signed long val; |
|
PyObject *tmp = __Pyx_PyNumber_Int(x); |
|
if (!tmp) return (signed long)-1; |
|
val = __Pyx_PyInt_AsSignedLong(tmp); |
|
Py_DECREF(tmp); |
|
return val; |
|
} |
|
} |
|
|
|
static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { |
|
const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; |
|
const int is_unsigned = neg_one > const_zero; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (likely(PyInt_Check(x))) { |
|
long val = PyInt_AS_LONG(x); |
|
if (is_unsigned && unlikely(val < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to signed PY_LONG_LONG"); |
|
return (signed PY_LONG_LONG)-1; |
|
} |
|
return (signed PY_LONG_LONG)val; |
|
} else |
|
#endif |
|
if (likely(PyLong_Check(x))) { |
|
if (is_unsigned) { |
|
if (unlikely(Py_SIZE(x) < 0)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"can't convert negative value to signed PY_LONG_LONG"); |
|
return (signed PY_LONG_LONG)-1; |
|
} |
|
return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); |
|
} else { |
|
return (signed PY_LONG_LONG)PyLong_AsLongLong(x); |
|
} |
|
} else { |
|
signed PY_LONG_LONG val; |
|
PyObject *tmp = __Pyx_PyNumber_Int(x); |
|
if (!tmp) return (signed PY_LONG_LONG)-1; |
|
val = __Pyx_PyInt_AsSignedLongLong(tmp); |
|
Py_DECREF(tmp); |
|
return val; |
|
} |
|
} |
|
|
|
static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { |
|
PyObject *tmp_type, *tmp_value, *tmp_tb; |
|
PyThreadState *tstate = PyThreadState_GET(); |
|
|
|
tmp_type = tstate->curexc_type; |
|
tmp_value = tstate->curexc_value; |
|
tmp_tb = tstate->curexc_traceback; |
|
tstate->curexc_type = type; |
|
tstate->curexc_value = value; |
|
tstate->curexc_traceback = tb; |
|
Py_XDECREF(tmp_type); |
|
Py_XDECREF(tmp_value); |
|
Py_XDECREF(tmp_tb); |
|
} |
|
|
|
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { |
|
PyThreadState *tstate = PyThreadState_GET(); |
|
*type = tstate->curexc_type; |
|
*value = tstate->curexc_value; |
|
*tb = tstate->curexc_traceback; |
|
|
|
tstate->curexc_type = 0; |
|
tstate->curexc_value = 0; |
|
tstate->curexc_traceback = 0; |
|
} |
|
|
|
|
|
static void __Pyx_WriteUnraisable(const char *name, int clineno, |
|
int lineno, const char *filename) { |
|
PyObject *old_exc, *old_val, *old_tb; |
|
PyObject *ctx; |
|
__Pyx_ErrFetch(&old_exc, &old_val, &old_tb); |
|
#if PY_MAJOR_VERSION < 3 |
|
ctx = PyString_FromString(name); |
|
#else |
|
ctx = PyUnicode_FromString(name); |
|
#endif |
|
__Pyx_ErrRestore(old_exc, old_val, old_tb); |
|
if (!ctx) { |
|
PyErr_WriteUnraisable(Py_None); |
|
} else { |
|
PyErr_WriteUnraisable(ctx); |
|
Py_DECREF(ctx); |
|
} |
|
} |
|
|
|
static int __Pyx_check_binary_version(void) { |
|
char ctversion[4], rtversion[4]; |
|
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); |
|
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); |
|
if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { |
|
char message[200]; |
|
PyOS_snprintf(message, sizeof(message), |
|
"compiletime version %s of module '%.100s' " |
|
"does not match runtime version %s", |
|
ctversion, __Pyx_MODULE_NAME, rtversion); |
|
#if PY_VERSION_HEX < 0x02050000 |
|
return PyErr_Warn(NULL, message); |
|
#else |
|
return PyErr_WarnEx(NULL, message, 1); |
|
#endif |
|
} |
|
return 0; |
|
} |
|
|
|
#include "compile.h" |
|
#include "frameobject.h" |
|
#include "traceback.h" |
|
|
|
static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno, |
|
int __pyx_lineno, const char *__pyx_filename) { |
|
PyObject *py_srcfile = 0; |
|
PyObject *py_funcname = 0; |
|
PyObject *py_globals = 0; |
|
PyCodeObject *py_code = 0; |
|
PyFrameObject *py_frame = 0; |
|
|
|
#if PY_MAJOR_VERSION < 3 |
|
py_srcfile = PyString_FromString(__pyx_filename); |
|
#else |
|
py_srcfile = PyUnicode_FromString(__pyx_filename); |
|
#endif |
|
if (!py_srcfile) goto bad; |
|
if (__pyx_clineno) { |
|
#if PY_MAJOR_VERSION < 3 |
|
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno); |
|
#else |
|
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno); |
|
#endif |
|
} |
|
else { |
|
#if PY_MAJOR_VERSION < 3 |
|
py_funcname = PyString_FromString(funcname); |
|
#else |
|
py_funcname = PyUnicode_FromString(funcname); |
|
#endif |
|
} |
|
if (!py_funcname) goto bad; |
|
py_globals = PyModule_GetDict(__pyx_m); |
|
if (!py_globals) goto bad; |
|
py_code = PyCode_New( |
|
0, /*int argcount,*/ |
|
#if PY_MAJOR_VERSION >= 3 |
|
0, /*int kwonlyargcount,*/ |
|
#endif |
|
0, /*int nlocals,*/ |
|
0, /*int stacksize,*/ |
|
0, /*int flags,*/ |
|
__pyx_empty_bytes, /*PyObject *code,*/ |
|
__pyx_empty_tuple, /*PyObject *consts,*/ |
|
__pyx_empty_tuple, /*PyObject *names,*/ |
|
__pyx_empty_tuple, /*PyObject *varnames,*/ |
|
__pyx_empty_tuple, /*PyObject *freevars,*/ |
|
__pyx_empty_tuple, /*PyObject *cellvars,*/ |
|
py_srcfile, /*PyObject *filename,*/ |
|
py_funcname, /*PyObject *name,*/ |
|
__pyx_lineno, /*int firstlineno,*/ |
|
__pyx_empty_bytes /*PyObject *lnotab*/ |
|
); |
|
if (!py_code) goto bad; |
|
py_frame = PyFrame_New( |
|
PyThreadState_GET(), /*PyThreadState *tstate,*/ |
|
py_code, /*PyCodeObject *code,*/ |
|
py_globals, /*PyObject *globals,*/ |
|
0 /*PyObject *locals*/ |
|
); |
|
if (!py_frame) goto bad; |
|
py_frame->f_lineno = __pyx_lineno; |
|
PyTraceBack_Here(py_frame); |
|
bad: |
|
Py_XDECREF(py_srcfile); |
|
Py_XDECREF(py_funcname); |
|
Py_XDECREF(py_code); |
|
Py_XDECREF(py_frame); |
|
} |
|
|
|
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { |
|
while (t->p) { |
|
#if PY_MAJOR_VERSION < 3 |
|
if (t->is_unicode) { |
|
*t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); |
|
} else if (t->intern) { |
|
*t->p = PyString_InternFromString(t->s); |
|
} else { |
|
*t->p = PyString_FromStringAndSize(t->s, t->n - 1); |
|
} |
|
#else /* Python 3+ has unicode identifiers */ |
|
if (t->is_unicode | t->is_str) { |
|
if (t->intern) { |
|
*t->p = PyUnicode_InternFromString(t->s); |
|
} else if (t->encoding) { |
|
*t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); |
|
} else { |
|
*t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); |
|
} |
|
} else { |
|
*t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); |
|
} |
|
#endif |
|
if (!*t->p) |
|
return -1; |
|
++t; |
|
} |
|
return 0; |
|
} |
|
|
|
/* Type Conversion Functions */ |
|
|
|
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { |
|
int is_true = x == Py_True; |
|
if (is_true | (x == Py_False) | (x == Py_None)) return is_true; |
|
else return PyObject_IsTrue(x); |
|
} |
|
|
|
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { |
|
PyNumberMethods *m; |
|
const char *name = NULL; |
|
PyObject *res = NULL; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (PyInt_Check(x) || PyLong_Check(x)) |
|
#else |
|
if (PyLong_Check(x)) |
|
#endif |
|
return Py_INCREF(x), x; |
|
m = Py_TYPE(x)->tp_as_number; |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (m && m->nb_int) { |
|
name = "int"; |
|
res = PyNumber_Int(x); |
|
} |
|
else if (m && m->nb_long) { |
|
name = "long"; |
|
res = PyNumber_Long(x); |
|
} |
|
#else |
|
if (m && m->nb_int) { |
|
name = "int"; |
|
res = PyNumber_Long(x); |
|
} |
|
#endif |
|
if (res) { |
|
#if PY_VERSION_HEX < 0x03000000 |
|
if (!PyInt_Check(res) && !PyLong_Check(res)) { |
|
#else |
|
if (!PyLong_Check(res)) { |
|
#endif |
|
PyErr_Format(PyExc_TypeError, |
|
"__%s__ returned non-%s (type %.200s)", |
|
name, name, Py_TYPE(res)->tp_name); |
|
Py_DECREF(res); |
|
return NULL; |
|
} |
|
} |
|
else if (!PyErr_Occurred()) { |
|
PyErr_SetString(PyExc_TypeError, |
|
"an integer is required"); |
|
} |
|
return res; |
|
} |
|
|
|
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { |
|
Py_ssize_t ival; |
|
PyObject* x = PyNumber_Index(b); |
|
if (!x) return -1; |
|
ival = PyInt_AsSsize_t(x); |
|
Py_DECREF(x); |
|
return ival; |
|
} |
|
|
|
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { |
|
#if PY_VERSION_HEX < 0x02050000 |
|
if (ival <= LONG_MAX) |
|
return PyInt_FromLong((long)ival); |
|
else { |
|
unsigned char *bytes = (unsigned char *) &ival; |
|
int one = 1; int little = (int)*(unsigned char*)&one; |
|
return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0); |
|
} |
|
#else |
|
return PyInt_FromSize_t(ival); |
|
#endif |
|
} |
|
|
|
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { |
|
unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); |
|
if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) { |
|
return (size_t)-1; |
|
} else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { |
|
PyErr_SetString(PyExc_OverflowError, |
|
"value too large to convert to size_t"); |
|
return (size_t)-1; |
|
} |
|
return (size_t)val; |
|
} |
|
|
|
|
|
#endif /* Py_PYTHON_H */ |
If you add #cython: profile=True then cProfile shows subroutines inside .pyx-file: