Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cython
Commits
6eab2742
Commit
6eab2742
authored
Jan 05, 2017
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
eb8c3ee4
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1984 additions
and
0 deletions
+1984
-0
t/sum.c
t/sum.c
+1976
-0
t/sum.pyx
t/sum.pyx
+8
-0
No files found.
t/sum.c
0 → 100644
View file @
6eab2742
/* Generated by Cython 0.25.2 */
#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.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
#error Cython requires Python 2.6+ or Python 3.2+.
#else
#define CYTHON_ABI "0_25_2"
#include <stddef.h>
#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 HAVE_LONG_LONG
#if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000)
#define HAVE_LONG_LONG
#endif
#endif
#ifndef PY_LONG_LONG
#define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
#define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
#define CYTHON_COMPILING_IN_PYPY 1
#define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 0
#undef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 0
#undef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 0
#undef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 0
#undef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 0
#undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0
#undef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 0
#undef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 1
#undef CYTHON_ASSUME_SAFE_MACROS
#define CYTHON_ASSUME_SAFE_MACROS 0
#undef CYTHON_UNPACK_METHODS
#define CYTHON_UNPACK_METHODS 0
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
#define CYTHON_COMPILING_IN_CPYTHON 0
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
#undef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 0
#undef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 0
#ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1
#endif
#undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0
#undef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 0
#ifndef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 0
#endif
#ifndef CYTHON_ASSUME_SAFE_MACROS
#define CYTHON_ASSUME_SAFE_MACROS 1
#endif
#ifndef CYTHON_UNPACK_METHODS
#define CYTHON_UNPACK_METHODS 1
#endif
#undef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 1
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
#if PY_MAJOR_VERSION < 3
#undef CYTHON_USE_ASYNC_SLOTS
#define CYTHON_USE_ASYNC_SLOTS 0
#elif !defined(CYTHON_USE_ASYNC_SLOTS)
#define CYTHON_USE_ASYNC_SLOTS 1
#endif
#if PY_VERSION_HEX < 0x02070000
#undef CYTHON_USE_PYLONG_INTERNALS
#define CYTHON_USE_PYLONG_INTERNALS 0
#elif !defined(CYTHON_USE_PYLONG_INTERNALS)
#define CYTHON_USE_PYLONG_INTERNALS 1
#endif
#ifndef CYTHON_USE_PYLIST_INTERNALS
#define CYTHON_USE_PYLIST_INTERNALS 1
#endif
#ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1
#endif
#if PY_VERSION_HEX < 0x030300F0
#undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER)
#define CYTHON_USE_UNICODE_WRITER 1
#endif
#ifndef CYTHON_AVOID_BORROWED_REFS
#define CYTHON_AVOID_BORROWED_REFS 0
#endif
#ifndef CYTHON_ASSUME_SAFE_MACROS
#define CYTHON_ASSUME_SAFE_MACROS 1
#endif
#ifndef CYTHON_UNPACK_METHODS
#define CYTHON_UNPACK_METHODS 1
#endif
#ifndef CYTHON_FAST_THREAD_STATE
#define CYTHON_FAST_THREAD_STATE 1
#endif
#ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 1
#endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
#include "longintrepr.h"
#undef SHIFT
#undef BASE
#undef MASK
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
#define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
#define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#define __Pyx_DefaultClassType PyClass_Type
#else
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
#define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
#define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
#define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
typedef
PyObject
*
(
*
__Pyx_PyCFunctionFast
)
(
PyObject
*
self
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
);
#else
#define __Pyx_PyCFunctionFast _PyCFunctionFast
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject *)(op)))
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
#define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
#define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
#else
#define CYTHON_PEP393_ENABLED 0
#define PyUnicode_1BYTE_KIND 1
#define PyUnicode_2BYTE_KIND 2
#define PyUnicode_4BYTE_KIND 4
#define __Pyx_PyUnicode_READY(op) (0)
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
#define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
#define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
#define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
#define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
#define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
#else
#define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
#define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
#define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
#define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
#else
#define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
#endif
#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
#define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
#define PyObject_ASCII(o) PyObject_Repr(o)
#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_MAJOR_VERSION >= 3
#define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
#define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
#define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
#define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
#define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
#endif
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
#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
#define PyNumber_Int PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
#define PyBoolObject PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
#ifndef PyUnicode_InternFromString
#define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
#endif
#endif
#if PY_VERSION_HEX < 0x030200A4
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_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
#else
#define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#if CYTHON_USE_ASYNC_SLOTS
#if PY_VERSION_HEX >= 0x030500B1
#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
#else
typedef
struct
{
unaryfunc
am_await
;
unaryfunc
am_aiter
;
unaryfunc
am_anext
;
}
__Pyx_PyAsyncMethodsStruct
;
#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
#endif
#else
#define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef CYTHON_RESTRICT
#if defined(__GNUC__)
#define CYTHON_RESTRICT __restrict__
#elif defined(_MSC_VER) && _MSC_VER >= 1400
#define CYTHON_RESTRICT __restrict
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#define CYTHON_RESTRICT restrict
#else
#define CYTHON_RESTRICT
#endif
#endif
#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) && !defined(_MSC_VER))
# define CYTHON_UNUSED __attribute__ ((__unused__))
# else
# define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
# if defined(__cplusplus)
template
<
class
T
>
void
CYTHON_MAYBE_UNUSED_VAR
(
const
T
&
)
{
}
# else
# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
# endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
# define CYTHON_NCP_UNUSED
# else
# define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifndef CYTHON_INLINE
#if defined(__clang__)
#define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
#elif 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
#if defined(WIN32) || defined(MS_WINDOWS)
#define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static
CYTHON_INLINE
float
__PYX_NAN
()
{
float
value
;
memset
(
&
value
,
0xFF
,
sizeof
(
value
));
return
value
;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif
#define __PYX_ERR(f_index, lineno, Ln_error) \
{ \
__pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
}
#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
#ifndef __PYX_EXTERN_C
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
#define __PYX_EXTERN_C extern
#endif
#endif
#define __PYX_HAVE__sum
#define __PYX_HAVE_API__sum
#ifdef _OPENMP
#include <omp.h>
#endif
/* _OPENMP */
#ifdef PYREX_WITHOUT_ASSERTIONS
#define CYTHON_WITHOUT_ASSERTIONS
#endif
typedef
struct
{
PyObject
**
p
;
const
char
*
s
;
const
Py_ssize_t
n
;
const
char
*
encoding
;
const
char
is_unicode
;
const
char
is_str
;
const
char
intern
;
}
__Pyx_StringTabEntry
;
#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
(sizeof(type) < sizeof(Py_ssize_t)) ||\
(sizeof(type) > sizeof(Py_ssize_t) &&\
likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX) &&\
(!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
v == (type)PY_SSIZE_T_MIN))) ||\
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
#define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
#define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER) && defined (_M_X64)
#define __Pyx_sst_abs(value) _abs64(value)
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
#define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
#define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static
CYTHON_INLINE
char
*
__Pyx_PyObject_AsString
(
PyObject
*
);
static
CYTHON_INLINE
char
*
__Pyx_PyObject_AsStringAndSize
(
PyObject
*
,
Py_ssize_t
*
length
);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static
CYTHON_INLINE
PyObject
*
__Pyx_PyUnicode_FromString
(
const
char
*
);
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
#define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
#define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#if PY_MAJOR_VERSION < 3
static
CYTHON_INLINE
size_t
__Pyx_Py_UNICODE_strlen
(
const
Py_UNICODE
*
u
)
{
const
Py_UNICODE
*
u_end
=
u
;
while
(
*
u_end
++
)
;
return
(
size_t
)(
u_end
-
u
-
1
);
}
#else
#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
#endif
#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
static
CYTHON_INLINE
int
__Pyx_PyObject_IsTrue
(
PyObject
*
);
static
CYTHON_INLINE
PyObject
*
__Pyx_PyNumber_IntOrLong
(
PyObject
*
x
);
static
CYTHON_INLINE
Py_ssize_t
__Pyx_PyIndex_AsSsize_t
(
PyObject
*
);
static
CYTHON_INLINE
PyObject
*
__Pyx_PyInt_FromSize_t
(
size_t
);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static
int
__Pyx_sys_getdefaultencoding_not_ascii
;
static
int
__Pyx_init_sys_getdefaultencoding_params
(
void
)
{
PyObject
*
sys
;
PyObject
*
default_encoding
=
NULL
;
PyObject
*
ascii_chars_u
=
NULL
;
PyObject
*
ascii_chars_b
=
NULL
;
const
char
*
default_encoding_c
;
sys
=
PyImport_ImportModule
(
"sys"
);
if
(
!
sys
)
goto
bad
;
default_encoding
=
PyObject_CallMethod
(
sys
,
(
char
*
)
"getdefaultencoding"
,
NULL
);
Py_DECREF
(
sys
);
if
(
!
default_encoding
)
goto
bad
;
default_encoding_c
=
PyBytes_AsString
(
default_encoding
);
if
(
!
default_encoding_c
)
goto
bad
;
if
(
strcmp
(
default_encoding_c
,
"ascii"
)
==
0
)
{
__Pyx_sys_getdefaultencoding_not_ascii
=
0
;
}
else
{
char
ascii_chars
[
128
];
int
c
;
for
(
c
=
0
;
c
<
128
;
c
++
)
{
ascii_chars
[
c
]
=
c
;
}
__Pyx_sys_getdefaultencoding_not_ascii
=
1
;
ascii_chars_u
=
PyUnicode_DecodeASCII
(
ascii_chars
,
128
,
NULL
);
if
(
!
ascii_chars_u
)
goto
bad
;
ascii_chars_b
=
PyUnicode_AsEncodedString
(
ascii_chars_u
,
default_encoding_c
,
NULL
);
if
(
!
ascii_chars_b
||
!
PyBytes_Check
(
ascii_chars_b
)
||
memcmp
(
ascii_chars
,
PyBytes_AS_STRING
(
ascii_chars_b
),
128
)
!=
0
)
{
PyErr_Format
(
PyExc_ValueError
,
"This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii."
,
default_encoding_c
);
goto
bad
;
}
Py_DECREF
(
ascii_chars_u
);
Py_DECREF
(
ascii_chars_b
);
}
Py_DECREF
(
default_encoding
);
return
0
;
bad:
Py_XDECREF
(
default_encoding
);
Py_XDECREF
(
ascii_chars_u
);
Py_XDECREF
(
ascii_chars_b
);
return
-
1
;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static
char
*
__PYX_DEFAULT_STRING_ENCODING
;
static
int
__Pyx_init_sys_getdefaultencoding_params
(
void
)
{
PyObject
*
sys
;
PyObject
*
default_encoding
=
NULL
;
char
*
default_encoding_c
;
sys
=
PyImport_ImportModule
(
"sys"
);
if
(
!
sys
)
goto
bad
;
default_encoding
=
PyObject_CallMethod
(
sys
,
(
char
*
)
(
const
char
*
)
"getdefaultencoding"
,
NULL
);
Py_DECREF
(
sys
);
if
(
!
default_encoding
)
goto
bad
;
default_encoding_c
=
PyBytes_AsString
(
default_encoding
);
if
(
!
default_encoding_c
)
goto
bad
;
__PYX_DEFAULT_STRING_ENCODING
=
(
char
*
)
malloc
(
strlen
(
default_encoding_c
));
if
(
!
__PYX_DEFAULT_STRING_ENCODING
)
goto
bad
;
strcpy
(
__PYX_DEFAULT_STRING_ENCODING
,
default_encoding_c
);
Py_DECREF
(
default_encoding
);
return
0
;
bad:
Py_XDECREF
(
default_encoding
);
return
-
1
;
}
#endif
#endif
/* Test for GCC > 2.95 */
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#else
/* !__GNUC__ or GCC < 2.95 */
#define likely(x) (x)
#define unlikely(x) (x)
#endif
/* __GNUC__ */
static
PyObject
*
__pyx_m
;
static
PyObject
*
__pyx_d
;
static
PyObject
*
__pyx_b
;
static
PyObject
*
__pyx_empty_tuple
;
static
PyObject
*
__pyx_empty_bytes
;
static
PyObject
*
__pyx_empty_unicode
;
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
[]
=
{
"sum.pyx"
,
};
/*--- Type declarations ---*/
/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#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
);
#define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
#define __Pyx_RefNannySetupContext(name, acquire_gil)\
if (acquire_gil) {\
PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
__pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
PyGILState_Release(__pyx_gilstate_save);\
} else {\
__pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
}
#else
#define __Pyx_RefNannySetupContext(name, acquire_gil)\
__pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
#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, acquire_gil)
#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
#define __Pyx_XDECREF_SET(r, v) do {\
PyObject *tmp = (PyObject *) r;\
r = v; __Pyx_XDECREF(tmp);\
} while (0)
#define __Pyx_DECREF_SET(r, v) do {\
PyObject *tmp = (PyObject *) r;\
r = v; __Pyx_DECREF(tmp);\
} while (0)
#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET();
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#endif
/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static
CYTHON_INLINE
void
__Pyx_ErrRestoreInState
(
PyThreadState
*
tstate
,
PyObject
*
type
,
PyObject
*
value
,
PyObject
*
tb
);
static
CYTHON_INLINE
void
__Pyx_ErrFetchInState
(
PyThreadState
*
tstate
,
PyObject
**
type
,
PyObject
**
value
,
PyObject
**
tb
);
#else
#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
#endif
/* WriteUnraisableException.proto */
static
void
__Pyx_WriteUnraisable
(
const
char
*
name
,
int
clineno
,
int
lineno
,
const
char
*
filename
,
int
full_traceback
,
int
nogil
);
/* CodeObjectCache.proto */
typedef
struct
{
PyCodeObject
*
code_object
;
int
code_line
;
}
__Pyx_CodeObjectCacheEntry
;
struct
__Pyx_CodeObjectCache
{
int
count
;
int
max_count
;
__Pyx_CodeObjectCacheEntry
*
entries
;
};
static
struct
__Pyx_CodeObjectCache
__pyx_code_cache
=
{
0
,
0
,
NULL
};
static
int
__pyx_bisect_code_objects
(
__Pyx_CodeObjectCacheEntry
*
entries
,
int
count
,
int
code_line
);
static
PyCodeObject
*
__pyx_find_code_object
(
int
code_line
);
static
void
__pyx_insert_code_object
(
int
code_line
,
PyCodeObject
*
code_object
);
/* AddTraceback.proto */
static
void
__Pyx_AddTraceback
(
const
char
*
funcname
,
int
c_line
,
int
py_line
,
const
char
*
filename
);
/* CIntToPy.proto */
static
CYTHON_INLINE
PyObject
*
__Pyx_PyInt_From_int
(
int
value
);
/* CIntFromPy.proto */
static
CYTHON_INLINE
int
__Pyx_PyInt_As_int
(
PyObject
*
);
/* CIntToPy.proto */
static
CYTHON_INLINE
PyObject
*
__Pyx_PyInt_From_long
(
long
value
);
/* CIntFromPy.proto */
static
CYTHON_INLINE
long
__Pyx_PyInt_As_long
(
PyObject
*
);
/* CheckBinaryVersion.proto */
static
int
__Pyx_check_binary_version
(
void
);
/* InitStrings.proto */
static
int
__Pyx_InitStrings
(
__Pyx_StringTabEntry
*
t
);
/* Module declarations from 'sum' */
#define __Pyx_MODULE_NAME "sum"
int
__pyx_module_is_main_sum
=
0
;
/* Implementation of 'sum' */
static
const
char
__pyx_k_main
[]
=
"__main__"
;
static
const
char
__pyx_k_test
[]
=
"__test__"
;
static
PyObject
*
__pyx_n_s_main
;
static
PyObject
*
__pyx_n_s_test
;
static
PyObject
*
__pyx_int_0
;
/* "sum.pyx":1
* cdef int sumupto(int n): # <<<<<<<<<<<<<<
* cdef res = 0
*
*/
static
int
__pyx_f_3sum_sumupto
(
int
__pyx_v_n
)
{
PyObject
*
__pyx_v_res
=
0
;
int
__pyx_r
;
__Pyx_RefNannyDeclarations
int
__pyx_t_1
;
PyObject
*
__pyx_t_2
=
NULL
;
PyObject
*
__pyx_t_3
=
NULL
;
int
__pyx_t_4
;
__Pyx_RefNannySetupContext
(
"sumupto"
,
0
);
/* "sum.pyx":2
* cdef int sumupto(int n):
* cdef res = 0 # <<<<<<<<<<<<<<
*
* while n > 0:
*/
__Pyx_INCREF
(
__pyx_int_0
);
__pyx_v_res
=
__pyx_int_0
;
/* "sum.pyx":4
* cdef res = 0
*
* while n > 0: # <<<<<<<<<<<<<<
* res += n
* n -= 1
*/
while
(
1
)
{
__pyx_t_1
=
((
__pyx_v_n
>
0
)
!=
0
);
if
(
!
__pyx_t_1
)
break
;
/* "sum.pyx":5
*
* while n > 0:
* res += n # <<<<<<<<<<<<<<
* n -= 1
*
*/
__pyx_t_2
=
__Pyx_PyInt_From_int
(
__pyx_v_n
);
if
(
unlikely
(
!
__pyx_t_2
))
__PYX_ERR
(
0
,
5
,
__pyx_L1_error
)
__Pyx_GOTREF
(
__pyx_t_2
);
__pyx_t_3
=
PyNumber_InPlaceAdd
(
__pyx_v_res
,
__pyx_t_2
);
if
(
unlikely
(
!
__pyx_t_3
))
__PYX_ERR
(
0
,
5
,
__pyx_L1_error
)
__Pyx_GOTREF
(
__pyx_t_3
);
__Pyx_DECREF
(
__pyx_t_2
);
__pyx_t_2
=
0
;
__Pyx_DECREF_SET
(
__pyx_v_res
,
__pyx_t_3
);
__pyx_t_3
=
0
;
/* "sum.pyx":6
* while n > 0:
* res += n
* n -= 1 # <<<<<<<<<<<<<<
*
* return res
*/
__pyx_v_n
=
(
__pyx_v_n
-
1
);
}
/* "sum.pyx":8
* n -= 1
*
* return res # <<<<<<<<<<<<<<
*/
__pyx_t_4
=
__Pyx_PyInt_As_int
(
__pyx_v_res
);
if
(
unlikely
((
__pyx_t_4
==
(
int
)
-
1
)
&&
PyErr_Occurred
()))
__PYX_ERR
(
0
,
8
,
__pyx_L1_error
)
__pyx_r
=
__pyx_t_4
;
goto
__pyx_L0
;
/* "sum.pyx":1
* cdef int sumupto(int n): # <<<<<<<<<<<<<<
* cdef res = 0
*
*/
/* function exit code */
__pyx_L1_error:
;
__Pyx_XDECREF
(
__pyx_t_2
);
__Pyx_XDECREF
(
__pyx_t_3
);
__Pyx_WriteUnraisable
(
"sum.sumupto"
,
__pyx_clineno
,
__pyx_lineno
,
__pyx_filename
,
0
,
0
);
__pyx_r
=
0
;
__pyx_L0:
;
__Pyx_XDECREF
(
__pyx_v_res
);
__Pyx_RefNannyFinishContext
();
return
__pyx_r
;
}
static
PyMethodDef
__pyx_methods
[]
=
{
{
0
,
0
,
0
,
0
}
};
#if PY_MAJOR_VERSION >= 3
static
struct
PyModuleDef
__pyx_moduledef
=
{
#if PY_VERSION_HEX < 0x03020000
{
PyObject_HEAD_INIT
(
NULL
)
NULL
,
0
,
NULL
},
#else
PyModuleDef_HEAD_INIT
,
#endif
"sum"
,
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
},
{
0
,
0
,
0
,
0
,
0
,
0
,
0
}
};
static
int
__Pyx_InitCachedBuiltins
(
void
)
{
return
0
;
}
static
int
__Pyx_InitCachedConstants
(
void
)
{
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext
(
"__Pyx_InitCachedConstants"
,
0
);
__Pyx_RefNannyFinishContext
();
return
0
;
}
static
int
__Pyx_InitGlobals
(
void
)
{
if
(
__Pyx_InitStrings
(
__pyx_string_tab
)
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
);
__pyx_int_0
=
PyInt_FromLong
(
0
);
if
(
unlikely
(
!
__pyx_int_0
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
return
0
;
__pyx_L1_error:
;
return
-
1
;
}
#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC
initsum
(
void
);
/*proto*/
PyMODINIT_FUNC
initsum
(
void
)
#else
PyMODINIT_FUNC
PyInit_sum
(
void
);
/*proto*/
PyMODINIT_FUNC
PyInit_sum
(
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_sum(void)"
,
0
);
if
(
__Pyx_check_binary_version
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
__pyx_empty_tuple
=
PyTuple_New
(
0
);
if
(
unlikely
(
!
__pyx_empty_tuple
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
__pyx_empty_bytes
=
PyBytes_FromStringAndSize
(
""
,
0
);
if
(
unlikely
(
!
__pyx_empty_bytes
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
__pyx_empty_unicode
=
PyUnicode_FromStringAndSize
(
""
,
0
);
if
(
unlikely
(
!
__pyx_empty_unicode
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#ifdef __Pyx_CyFunction_USED
if
(
__pyx_CyFunction_init
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#endif
#ifdef __Pyx_FusedFunction_USED
if
(
__pyx_FusedFunction_init
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#endif
#ifdef __Pyx_Coroutine_USED
if
(
__pyx_Coroutine_init
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#endif
#ifdef __Pyx_Generator_USED
if
(
__pyx_Generator_init
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#endif
#ifdef __Pyx_StopAsyncIteration_USED
if
(
__pyx_StopAsyncIteration_init
()
<
0
)
__PYX_ERR
(
0
,
1
,
__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
(
"sum"
,
__pyx_methods
,
0
,
0
,
PYTHON_API_VERSION
);
Py_XINCREF
(
__pyx_m
);
#else
__pyx_m
=
PyModule_Create
(
&
__pyx_moduledef
);
#endif
if
(
unlikely
(
!
__pyx_m
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
__pyx_d
=
PyModule_GetDict
(
__pyx_m
);
if
(
unlikely
(
!
__pyx_d
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
Py_INCREF
(
__pyx_d
);
__pyx_b
=
PyImport_AddModule
(
__Pyx_BUILTIN_MODULE_NAME
);
if
(
unlikely
(
!
__pyx_b
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#if CYTHON_COMPILING_IN_PYPY
Py_INCREF
(
__pyx_b
);
#endif
if
(
PyObject_SetAttrString
(
__pyx_m
,
"__builtins__"
,
__pyx_b
)
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
);
/*--- Initialize various global constants etc. ---*/
if
(
__Pyx_InitGlobals
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
if
(
__Pyx_init_sys_getdefaultencoding_params
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#endif
if
(
__pyx_module_is_main_sum
)
{
if
(
PyObject_SetAttrString
(
__pyx_m
,
"__name__"
,
__pyx_n_s_main
)
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
}
#if PY_MAJOR_VERSION >= 3
{
PyObject
*
modules
=
PyImport_GetModuleDict
();
if
(
unlikely
(
!
modules
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
if
(
!
PyDict_GetItemString
(
modules
,
"sum"
))
{
if
(
unlikely
(
PyDict_SetItemString
(
modules
,
"sum"
,
__pyx_m
)
<
0
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
}
}
#endif
/*--- Builtin init code ---*/
if
(
__Pyx_InitCachedBuiltins
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
/*--- Constants init code ---*/
if
(
__Pyx_InitCachedConstants
()
<
0
)
__PYX_ERR
(
0
,
1
,
__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 ---*/
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
if
(
__Pyx_patch_abc
()
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
#endif
/* "sum.pyx":1
* cdef int sumupto(int n): # <<<<<<<<<<<<<<
* cdef res = 0
*
*/
__pyx_t_1
=
PyDict_New
();
if
(
unlikely
(
!
__pyx_t_1
))
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
__Pyx_GOTREF
(
__pyx_t_1
);
if
(
PyDict_SetItem
(
__pyx_d
,
__pyx_n_s_test
,
__pyx_t_1
)
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
)
__Pyx_DECREF
(
__pyx_t_1
);
__pyx_t_1
=
0
;
/*--- Wrapped vars code ---*/
goto
__pyx_L0
;
__pyx_L1_error:
;
__Pyx_XDECREF
(
__pyx_t_1
);
if
(
__pyx_m
)
{
if
(
__pyx_d
)
{
__Pyx_AddTraceback
(
"init sum"
,
__pyx_clineno
,
__pyx_lineno
,
__pyx_filename
);
}
Py_DECREF
(
__pyx_m
);
__pyx_m
=
0
;
}
else
if
(
!
PyErr_Occurred
())
{
PyErr_SetString
(
PyExc_ImportError
,
"init sum"
);
}
__pyx_L0:
;
__Pyx_RefNannyFinishContext
();
#if PY_MAJOR_VERSION < 3
return
;
#else
return
__pyx_m
;
#endif
}
/* --- Runtime support code --- */
/* Refnanny */
#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
/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static
CYTHON_INLINE
void
__Pyx_ErrRestoreInState
(
PyThreadState
*
tstate
,
PyObject
*
type
,
PyObject
*
value
,
PyObject
*
tb
)
{
PyObject
*
tmp_type
,
*
tmp_value
,
*
tmp_tb
;
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_ErrFetchInState
(
PyThreadState
*
tstate
,
PyObject
**
type
,
PyObject
**
value
,
PyObject
**
tb
)
{
*
type
=
tstate
->
curexc_type
;
*
value
=
tstate
->
curexc_value
;
*
tb
=
tstate
->
curexc_traceback
;
tstate
->
curexc_type
=
0
;
tstate
->
curexc_value
=
0
;
tstate
->
curexc_traceback
=
0
;
}
#endif
/* WriteUnraisableException */
static
void
__Pyx_WriteUnraisable
(
const
char
*
name
,
CYTHON_UNUSED
int
clineno
,
CYTHON_UNUSED
int
lineno
,
CYTHON_UNUSED
const
char
*
filename
,
int
full_traceback
,
CYTHON_UNUSED
int
nogil
)
{
PyObject
*
old_exc
,
*
old_val
,
*
old_tb
;
PyObject
*
ctx
;
__Pyx_PyThreadState_declare
#ifdef WITH_THREAD
PyGILState_STATE
state
;
if
(
nogil
)
state
=
PyGILState_Ensure
();
#ifdef _MSC_VER
else
state
=
(
PyGILState_STATE
)
-
1
;
#endif
#endif
__Pyx_PyThreadState_assign
__Pyx_ErrFetch
(
&
old_exc
,
&
old_val
,
&
old_tb
);
if
(
full_traceback
)
{
Py_XINCREF
(
old_exc
);
Py_XINCREF
(
old_val
);
Py_XINCREF
(
old_tb
);
__Pyx_ErrRestore
(
old_exc
,
old_val
,
old_tb
);
PyErr_PrintEx
(
1
);
}
#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
);
}
#ifdef WITH_THREAD
if
(
nogil
)
PyGILState_Release
(
state
);
#endif
}
/* CodeObjectCache */
static
int
__pyx_bisect_code_objects
(
__Pyx_CodeObjectCacheEntry
*
entries
,
int
count
,
int
code_line
)
{
int
start
=
0
,
mid
=
0
,
end
=
count
-
1
;
if
(
end
>=
0
&&
code_line
>
entries
[
end
].
code_line
)
{
return
count
;
}
while
(
start
<
end
)
{
mid
=
start
+
(
end
-
start
)
/
2
;
if
(
code_line
<
entries
[
mid
].
code_line
)
{
end
=
mid
;
}
else
if
(
code_line
>
entries
[
mid
].
code_line
)
{
start
=
mid
+
1
;
}
else
{
return
mid
;
}
}
if
(
code_line
<=
entries
[
mid
].
code_line
)
{
return
mid
;
}
else
{
return
mid
+
1
;
}
}
static
PyCodeObject
*
__pyx_find_code_object
(
int
code_line
)
{
PyCodeObject
*
code_object
;
int
pos
;
if
(
unlikely
(
!
code_line
)
||
unlikely
(
!
__pyx_code_cache
.
entries
))
{
return
NULL
;
}
pos
=
__pyx_bisect_code_objects
(
__pyx_code_cache
.
entries
,
__pyx_code_cache
.
count
,
code_line
);
if
(
unlikely
(
pos
>=
__pyx_code_cache
.
count
)
||
unlikely
(
__pyx_code_cache
.
entries
[
pos
].
code_line
!=
code_line
))
{
return
NULL
;
}
code_object
=
__pyx_code_cache
.
entries
[
pos
].
code_object
;
Py_INCREF
(
code_object
);
return
code_object
;
}
static
void
__pyx_insert_code_object
(
int
code_line
,
PyCodeObject
*
code_object
)
{
int
pos
,
i
;
__Pyx_CodeObjectCacheEntry
*
entries
=
__pyx_code_cache
.
entries
;
if
(
unlikely
(
!
code_line
))
{
return
;
}
if
(
unlikely
(
!
entries
))
{
entries
=
(
__Pyx_CodeObjectCacheEntry
*
)
PyMem_Malloc
(
64
*
sizeof
(
__Pyx_CodeObjectCacheEntry
));
if
(
likely
(
entries
))
{
__pyx_code_cache
.
entries
=
entries
;
__pyx_code_cache
.
max_count
=
64
;
__pyx_code_cache
.
count
=
1
;
entries
[
0
].
code_line
=
code_line
;
entries
[
0
].
code_object
=
code_object
;
Py_INCREF
(
code_object
);
}
return
;
}
pos
=
__pyx_bisect_code_objects
(
__pyx_code_cache
.
entries
,
__pyx_code_cache
.
count
,
code_line
);
if
((
pos
<
__pyx_code_cache
.
count
)
&&
unlikely
(
__pyx_code_cache
.
entries
[
pos
].
code_line
==
code_line
))
{
PyCodeObject
*
tmp
=
entries
[
pos
].
code_object
;
entries
[
pos
].
code_object
=
code_object
;
Py_DECREF
(
tmp
);
return
;
}
if
(
__pyx_code_cache
.
count
==
__pyx_code_cache
.
max_count
)
{
int
new_max
=
__pyx_code_cache
.
max_count
+
64
;
entries
=
(
__Pyx_CodeObjectCacheEntry
*
)
PyMem_Realloc
(
__pyx_code_cache
.
entries
,
(
size_t
)
new_max
*
sizeof
(
__Pyx_CodeObjectCacheEntry
));
if
(
unlikely
(
!
entries
))
{
return
;
}
__pyx_code_cache
.
entries
=
entries
;
__pyx_code_cache
.
max_count
=
new_max
;
}
for
(
i
=
__pyx_code_cache
.
count
;
i
>
pos
;
i
--
)
{
entries
[
i
]
=
entries
[
i
-
1
];
}
entries
[
pos
].
code_line
=
code_line
;
entries
[
pos
].
code_object
=
code_object
;
__pyx_code_cache
.
count
++
;
Py_INCREF
(
code_object
);
}
/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static
PyCodeObject
*
__Pyx_CreateCodeObjectForTraceback
(
const
char
*
funcname
,
int
c_line
,
int
py_line
,
const
char
*
filename
)
{
PyCodeObject
*
py_code
=
0
;
PyObject
*
py_srcfile
=
0
;
PyObject
*
py_funcname
=
0
;
#if PY_MAJOR_VERSION < 3
py_srcfile
=
PyString_FromString
(
filename
);
#else
py_srcfile
=
PyUnicode_FromString
(
filename
);
#endif
if
(
!
py_srcfile
)
goto
bad
;
if
(
c_line
)
{
#if PY_MAJOR_VERSION < 3
py_funcname
=
PyString_FromFormat
(
"%s (%s:%d)"
,
funcname
,
__pyx_cfilenm
,
c_line
);
#else
py_funcname
=
PyUnicode_FromFormat
(
"%s (%s:%d)"
,
funcname
,
__pyx_cfilenm
,
c_line
);
#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_code
=
__Pyx_PyCode_New
(
0
,
0
,
0
,
0
,
0
,
__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,*/
py_line
,
__pyx_empty_bytes
/*PyObject *lnotab*/
);
Py_DECREF
(
py_srcfile
);
Py_DECREF
(
py_funcname
);
return
py_code
;
bad:
Py_XDECREF
(
py_srcfile
);
Py_XDECREF
(
py_funcname
);
return
NULL
;
}
static
void
__Pyx_AddTraceback
(
const
char
*
funcname
,
int
c_line
,
int
py_line
,
const
char
*
filename
)
{
PyCodeObject
*
py_code
=
0
;
PyFrameObject
*
py_frame
=
0
;
py_code
=
__pyx_find_code_object
(
c_line
?
c_line
:
py_line
);
if
(
!
py_code
)
{
py_code
=
__Pyx_CreateCodeObjectForTraceback
(
funcname
,
c_line
,
py_line
,
filename
);
if
(
!
py_code
)
goto
bad
;
__pyx_insert_code_object
(
c_line
?
c_line
:
py_line
,
py_code
);
}
py_frame
=
PyFrame_New
(
PyThreadState_GET
(),
/*PyThreadState *tstate,*/
py_code
,
/*PyCodeObject *code,*/
__pyx_d
,
/*PyObject *globals,*/
0
/*PyObject *locals*/
);
if
(
!
py_frame
)
goto
bad
;
__Pyx_PyFrame_SetLineNumber
(
py_frame
,
py_line
);
PyTraceBack_Here
(
py_frame
);
bad:
Py_XDECREF
(
py_code
);
Py_XDECREF
(
py_frame
);
}
/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
{\
func_type value = func_value;\
if (sizeof(target_type) < sizeof(func_type)) {\
if (unlikely(value != (func_type) (target_type) value)) {\
func_type zero = 0;\
if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
return (target_type) -1;\
if (is_unsigned && unlikely(value < zero))\
goto raise_neg_overflow;\
else\
goto raise_overflow;\
}\
}\
return (target_type) value;\
}
/* CIntToPy */
static
CYTHON_INLINE
PyObject
*
__Pyx_PyInt_From_int
(
int
value
)
{
const
int
neg_one
=
(
int
)
-
1
,
const_zero
=
(
int
)
0
;
const
int
is_unsigned
=
neg_one
>
const_zero
;
if
(
is_unsigned
)
{
if
(
sizeof
(
int
)
<
sizeof
(
long
))
{
return
PyInt_FromLong
((
long
)
value
);
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
unsigned
long
))
{
return
PyLong_FromUnsignedLong
((
unsigned
long
)
value
);
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
return
PyLong_FromUnsignedLongLong
((
unsigned
PY_LONG_LONG
)
value
);
#endif
}
}
else
{
if
(
sizeof
(
int
)
<=
sizeof
(
long
))
{
return
PyInt_FromLong
((
long
)
value
);
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
PY_LONG_LONG
))
{
return
PyLong_FromLongLong
((
PY_LONG_LONG
)
value
);
#endif
}
}
{
int
one
=
1
;
int
little
=
(
int
)
*
(
unsigned
char
*
)
&
one
;
unsigned
char
*
bytes
=
(
unsigned
char
*
)
&
value
;
return
_PyLong_FromByteArray
(
bytes
,
sizeof
(
int
),
little
,
!
is_unsigned
);
}
}
/* CIntFromPy */
static
CYTHON_INLINE
int
__Pyx_PyInt_As_int
(
PyObject
*
x
)
{
const
int
neg_one
=
(
int
)
-
1
,
const_zero
=
(
int
)
0
;
const
int
is_unsigned
=
neg_one
>
const_zero
;
#if PY_MAJOR_VERSION < 3
if
(
likely
(
PyInt_Check
(
x
)))
{
if
(
sizeof
(
int
)
<
sizeof
(
long
))
{
__PYX_VERIFY_RETURN_INT
(
int
,
long
,
PyInt_AS_LONG
(
x
))
}
else
{
long
val
=
PyInt_AS_LONG
(
x
);
if
(
is_unsigned
&&
unlikely
(
val
<
0
))
{
goto
raise_neg_overflow
;
}
return
(
int
)
val
;
}
}
else
#endif
if
(
likely
(
PyLong_Check
(
x
)))
{
if
(
is_unsigned
)
{
#if CYTHON_USE_PYLONG_INTERNALS
const
digit
*
digits
=
((
PyLongObject
*
)
x
)
->
ob_digit
;
switch
(
Py_SIZE
(
x
))
{
case
0
:
return
(
int
)
0
;
case
1
:
__PYX_VERIFY_RETURN_INT
(
int
,
digit
,
digits
[
0
])
case
2
:
if
(
8
*
sizeof
(
int
)
>
1
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
2
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
unsigned
long
,
(((((
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
>=
2
*
PyLong_SHIFT
)
{
return
(
int
)
(((((
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
]));
}
}
break
;
case
3
:
if
(
8
*
sizeof
(
int
)
>
2
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
3
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
unsigned
long
,
(((((((
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
>=
3
*
PyLong_SHIFT
)
{
return
(
int
)
(((((((
int
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
]));
}
}
break
;
case
4
:
if
(
8
*
sizeof
(
int
)
>
3
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
4
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
unsigned
long
,
(((((((((
unsigned
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
>=
4
*
PyLong_SHIFT
)
{
return
(
int
)
(((((((((
int
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
]));
}
}
break
;
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON
if
(
unlikely
(
Py_SIZE
(
x
)
<
0
))
{
goto
raise_neg_overflow
;
}
#else
{
int
result
=
PyObject_RichCompareBool
(
x
,
Py_False
,
Py_LT
);
if
(
unlikely
(
result
<
0
))
return
(
int
)
-
1
;
if
(
unlikely
(
result
==
1
))
goto
raise_neg_overflow
;
}
#endif
if
(
sizeof
(
int
)
<=
sizeof
(
unsigned
long
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
int
,
unsigned
long
,
PyLong_AsUnsignedLong
(
x
))
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
int
,
unsigned
PY_LONG_LONG
,
PyLong_AsUnsignedLongLong
(
x
))
#endif
}
}
else
{
#if CYTHON_USE_PYLONG_INTERNALS
const
digit
*
digits
=
((
PyLongObject
*
)
x
)
->
ob_digit
;
switch
(
Py_SIZE
(
x
))
{
case
0
:
return
(
int
)
0
;
case
-
1
:
__PYX_VERIFY_RETURN_INT
(
int
,
sdigit
,
(
sdigit
)
(
-
(
sdigit
)
digits
[
0
]))
case
1
:
__PYX_VERIFY_RETURN_INT
(
int
,
digit
,
+
digits
[
0
])
case
-
2
:
if
(
8
*
sizeof
(
int
)
-
1
>
1
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
2
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
long
,
-
(
long
)
(((((
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
-
1
>
2
*
PyLong_SHIFT
)
{
return
(
int
)
(((
int
)
-
1
)
*
(((((
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
])));
}
}
break
;
case
2
:
if
(
8
*
sizeof
(
int
)
>
1
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
2
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
unsigned
long
,
(((((
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
-
1
>
2
*
PyLong_SHIFT
)
{
return
(
int
)
((((((
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
])));
}
}
break
;
case
-
3
:
if
(
8
*
sizeof
(
int
)
-
1
>
2
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
3
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
long
,
-
(
long
)
(((((((
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
-
1
>
3
*
PyLong_SHIFT
)
{
return
(
int
)
(((
int
)
-
1
)
*
(((((((
int
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
])));
}
}
break
;
case
3
:
if
(
8
*
sizeof
(
int
)
>
2
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
3
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
unsigned
long
,
(((((((
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
-
1
>
3
*
PyLong_SHIFT
)
{
return
(
int
)
((((((((
int
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
])));
}
}
break
;
case
-
4
:
if
(
8
*
sizeof
(
int
)
-
1
>
3
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
4
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
long
,
-
(
long
)
(((((((((
unsigned
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
-
1
>
4
*
PyLong_SHIFT
)
{
return
(
int
)
(((
int
)
-
1
)
*
(((((((((
int
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
])));
}
}
break
;
case
4
:
if
(
8
*
sizeof
(
int
)
>
3
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
4
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
int
,
unsigned
long
,
(((((((((
unsigned
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
int
)
-
1
>
4
*
PyLong_SHIFT
)
{
return
(
int
)
((((((((((
int
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
int
)
digits
[
0
])));
}
}
break
;
}
#endif
if
(
sizeof
(
int
)
<=
sizeof
(
long
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
int
,
long
,
PyLong_AsLong
(
x
))
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
int
,
PY_LONG_LONG
,
PyLong_AsLongLong
(
x
))
#endif
}
}
{
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
PyErr_SetString
(
PyExc_RuntimeError
,
"_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"
);
#else
int
val
;
PyObject
*
v
=
__Pyx_PyNumber_IntOrLong
(
x
);
#if PY_MAJOR_VERSION < 3
if
(
likely
(
v
)
&&
!
PyLong_Check
(
v
))
{
PyObject
*
tmp
=
v
;
v
=
PyNumber_Long
(
tmp
);
Py_DECREF
(
tmp
);
}
#endif
if
(
likely
(
v
))
{
int
one
=
1
;
int
is_little
=
(
int
)
*
(
unsigned
char
*
)
&
one
;
unsigned
char
*
bytes
=
(
unsigned
char
*
)
&
val
;
int
ret
=
_PyLong_AsByteArray
((
PyLongObject
*
)
v
,
bytes
,
sizeof
(
val
),
is_little
,
!
is_unsigned
);
Py_DECREF
(
v
);
if
(
likely
(
!
ret
))
return
val
;
}
#endif
return
(
int
)
-
1
;
}
}
else
{
int
val
;
PyObject
*
tmp
=
__Pyx_PyNumber_IntOrLong
(
x
);
if
(
!
tmp
)
return
(
int
)
-
1
;
val
=
__Pyx_PyInt_As_int
(
tmp
);
Py_DECREF
(
tmp
);
return
val
;
}
raise_overflow:
PyErr_SetString
(
PyExc_OverflowError
,
"value too large to convert to int"
);
return
(
int
)
-
1
;
raise_neg_overflow:
PyErr_SetString
(
PyExc_OverflowError
,
"can't convert negative value to int"
);
return
(
int
)
-
1
;
}
/* CIntToPy */
static
CYTHON_INLINE
PyObject
*
__Pyx_PyInt_From_long
(
long
value
)
{
const
long
neg_one
=
(
long
)
-
1
,
const_zero
=
(
long
)
0
;
const
int
is_unsigned
=
neg_one
>
const_zero
;
if
(
is_unsigned
)
{
if
(
sizeof
(
long
)
<
sizeof
(
long
))
{
return
PyInt_FromLong
((
long
)
value
);
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
unsigned
long
))
{
return
PyLong_FromUnsignedLong
((
unsigned
long
)
value
);
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
return
PyLong_FromUnsignedLongLong
((
unsigned
PY_LONG_LONG
)
value
);
#endif
}
}
else
{
if
(
sizeof
(
long
)
<=
sizeof
(
long
))
{
return
PyInt_FromLong
((
long
)
value
);
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
PY_LONG_LONG
))
{
return
PyLong_FromLongLong
((
PY_LONG_LONG
)
value
);
#endif
}
}
{
int
one
=
1
;
int
little
=
(
int
)
*
(
unsigned
char
*
)
&
one
;
unsigned
char
*
bytes
=
(
unsigned
char
*
)
&
value
;
return
_PyLong_FromByteArray
(
bytes
,
sizeof
(
long
),
little
,
!
is_unsigned
);
}
}
/* CIntFromPy */
static
CYTHON_INLINE
long
__Pyx_PyInt_As_long
(
PyObject
*
x
)
{
const
long
neg_one
=
(
long
)
-
1
,
const_zero
=
(
long
)
0
;
const
int
is_unsigned
=
neg_one
>
const_zero
;
#if PY_MAJOR_VERSION < 3
if
(
likely
(
PyInt_Check
(
x
)))
{
if
(
sizeof
(
long
)
<
sizeof
(
long
))
{
__PYX_VERIFY_RETURN_INT
(
long
,
long
,
PyInt_AS_LONG
(
x
))
}
else
{
long
val
=
PyInt_AS_LONG
(
x
);
if
(
is_unsigned
&&
unlikely
(
val
<
0
))
{
goto
raise_neg_overflow
;
}
return
(
long
)
val
;
}
}
else
#endif
if
(
likely
(
PyLong_Check
(
x
)))
{
if
(
is_unsigned
)
{
#if CYTHON_USE_PYLONG_INTERNALS
const
digit
*
digits
=
((
PyLongObject
*
)
x
)
->
ob_digit
;
switch
(
Py_SIZE
(
x
))
{
case
0
:
return
(
long
)
0
;
case
1
:
__PYX_VERIFY_RETURN_INT
(
long
,
digit
,
digits
[
0
])
case
2
:
if
(
8
*
sizeof
(
long
)
>
1
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
2
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
unsigned
long
,
(((((
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
>=
2
*
PyLong_SHIFT
)
{
return
(
long
)
(((((
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
]));
}
}
break
;
case
3
:
if
(
8
*
sizeof
(
long
)
>
2
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
3
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
unsigned
long
,
(((((((
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
>=
3
*
PyLong_SHIFT
)
{
return
(
long
)
(((((((
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
]));
}
}
break
;
case
4
:
if
(
8
*
sizeof
(
long
)
>
3
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
4
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
unsigned
long
,
(((((((((
unsigned
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
>=
4
*
PyLong_SHIFT
)
{
return
(
long
)
(((((((((
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
]));
}
}
break
;
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON
if
(
unlikely
(
Py_SIZE
(
x
)
<
0
))
{
goto
raise_neg_overflow
;
}
#else
{
int
result
=
PyObject_RichCompareBool
(
x
,
Py_False
,
Py_LT
);
if
(
unlikely
(
result
<
0
))
return
(
long
)
-
1
;
if
(
unlikely
(
result
==
1
))
goto
raise_neg_overflow
;
}
#endif
if
(
sizeof
(
long
)
<=
sizeof
(
unsigned
long
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
long
,
unsigned
long
,
PyLong_AsUnsignedLong
(
x
))
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
long
,
unsigned
PY_LONG_LONG
,
PyLong_AsUnsignedLongLong
(
x
))
#endif
}
}
else
{
#if CYTHON_USE_PYLONG_INTERNALS
const
digit
*
digits
=
((
PyLongObject
*
)
x
)
->
ob_digit
;
switch
(
Py_SIZE
(
x
))
{
case
0
:
return
(
long
)
0
;
case
-
1
:
__PYX_VERIFY_RETURN_INT
(
long
,
sdigit
,
(
sdigit
)
(
-
(
sdigit
)
digits
[
0
]))
case
1
:
__PYX_VERIFY_RETURN_INT
(
long
,
digit
,
+
digits
[
0
])
case
-
2
:
if
(
8
*
sizeof
(
long
)
-
1
>
1
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
2
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
long
,
-
(
long
)
(((((
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
-
1
>
2
*
PyLong_SHIFT
)
{
return
(
long
)
(((
long
)
-
1
)
*
(((((
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
])));
}
}
break
;
case
2
:
if
(
8
*
sizeof
(
long
)
>
1
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
2
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
unsigned
long
,
(((((
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
-
1
>
2
*
PyLong_SHIFT
)
{
return
(
long
)
((((((
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
])));
}
}
break
;
case
-
3
:
if
(
8
*
sizeof
(
long
)
-
1
>
2
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
3
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
long
,
-
(
long
)
(((((((
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
-
1
>
3
*
PyLong_SHIFT
)
{
return
(
long
)
(((
long
)
-
1
)
*
(((((((
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
])));
}
}
break
;
case
3
:
if
(
8
*
sizeof
(
long
)
>
2
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
3
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
unsigned
long
,
(((((((
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
-
1
>
3
*
PyLong_SHIFT
)
{
return
(
long
)
((((((((
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
])));
}
}
break
;
case
-
4
:
if
(
8
*
sizeof
(
long
)
-
1
>
3
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
4
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
long
,
-
(
long
)
(((((((((
unsigned
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
-
1
>
4
*
PyLong_SHIFT
)
{
return
(
long
)
(((
long
)
-
1
)
*
(((((((((
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
])));
}
}
break
;
case
4
:
if
(
8
*
sizeof
(
long
)
>
3
*
PyLong_SHIFT
)
{
if
(
8
*
sizeof
(
unsigned
long
)
>
4
*
PyLong_SHIFT
)
{
__PYX_VERIFY_RETURN_INT
(
long
,
unsigned
long
,
(((((((((
unsigned
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
unsigned
long
)
digits
[
0
])))
}
else
if
(
8
*
sizeof
(
long
)
-
1
>
4
*
PyLong_SHIFT
)
{
return
(
long
)
((((((((((
long
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
long
)
digits
[
0
])));
}
}
break
;
}
#endif
if
(
sizeof
(
long
)
<=
sizeof
(
long
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
long
,
long
,
PyLong_AsLong
(
x
))
#ifdef HAVE_LONG_LONG
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
long
,
PY_LONG_LONG
,
PyLong_AsLongLong
(
x
))
#endif
}
}
{
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
PyErr_SetString
(
PyExc_RuntimeError
,
"_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"
);
#else
long
val
;
PyObject
*
v
=
__Pyx_PyNumber_IntOrLong
(
x
);
#if PY_MAJOR_VERSION < 3
if
(
likely
(
v
)
&&
!
PyLong_Check
(
v
))
{
PyObject
*
tmp
=
v
;
v
=
PyNumber_Long
(
tmp
);
Py_DECREF
(
tmp
);
}
#endif
if
(
likely
(
v
))
{
int
one
=
1
;
int
is_little
=
(
int
)
*
(
unsigned
char
*
)
&
one
;
unsigned
char
*
bytes
=
(
unsigned
char
*
)
&
val
;
int
ret
=
_PyLong_AsByteArray
((
PyLongObject
*
)
v
,
bytes
,
sizeof
(
val
),
is_little
,
!
is_unsigned
);
Py_DECREF
(
v
);
if
(
likely
(
!
ret
))
return
val
;
}
#endif
return
(
long
)
-
1
;
}
}
else
{
long
val
;
PyObject
*
tmp
=
__Pyx_PyNumber_IntOrLong
(
x
);
if
(
!
tmp
)
return
(
long
)
-
1
;
val
=
__Pyx_PyInt_As_long
(
tmp
);
Py_DECREF
(
tmp
);
return
val
;
}
raise_overflow:
PyErr_SetString
(
PyExc_OverflowError
,
"value too large to convert to long"
);
return
(
long
)
-
1
;
raise_neg_overflow:
PyErr_SetString
(
PyExc_OverflowError
,
"can't convert negative value to long"
);
return
(
long
)
-
1
;
}
/* CheckBinaryVersion */
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
);
return
PyErr_WarnEx
(
NULL
,
message
,
1
);
}
return
0
;
}
/* InitStrings */
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
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
;
if
(
PyObject_Hash
(
*
t
->
p
)
==
-
1
)
PyErr_Clear
();
++
t
;
}
return
0
;
}
static
CYTHON_INLINE
PyObject
*
__Pyx_PyUnicode_FromString
(
const
char
*
c_str
)
{
return
__Pyx_PyUnicode_FromStringAndSize
(
c_str
,
(
Py_ssize_t
)
strlen
(
c_str
));
}
static
CYTHON_INLINE
char
*
__Pyx_PyObject_AsString
(
PyObject
*
o
)
{
Py_ssize_t
ignore
;
return
__Pyx_PyObject_AsStringAndSize
(
o
,
&
ignore
);
}
static
CYTHON_INLINE
char
*
__Pyx_PyObject_AsStringAndSize
(
PyObject
*
o
,
Py_ssize_t
*
length
)
{
#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
if
(
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
__Pyx_sys_getdefaultencoding_not_ascii
&&
#endif
PyUnicode_Check
(
o
))
{
#if PY_VERSION_HEX < 0x03030000
char
*
defenc_c
;
PyObject
*
defenc
=
_PyUnicode_AsDefaultEncodedString
(
o
,
NULL
);
if
(
!
defenc
)
return
NULL
;
defenc_c
=
PyBytes_AS_STRING
(
defenc
);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
{
char
*
end
=
defenc_c
+
PyBytes_GET_SIZE
(
defenc
);
char
*
c
;
for
(
c
=
defenc_c
;
c
<
end
;
c
++
)
{
if
((
unsigned
char
)
(
*
c
)
>=
128
)
{
PyUnicode_AsASCIIString
(
o
);
return
NULL
;
}
}
}
#endif
*
length
=
PyBytes_GET_SIZE
(
defenc
);
return
defenc_c
;
#else
if
(
__Pyx_PyUnicode_READY
(
o
)
==
-
1
)
return
NULL
;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
if
(
PyUnicode_IS_ASCII
(
o
))
{
*
length
=
PyUnicode_GET_LENGTH
(
o
);
return
PyUnicode_AsUTF8
(
o
);
}
else
{
PyUnicode_AsASCIIString
(
o
);
return
NULL
;
}
#else
return
PyUnicode_AsUTF8AndSize
(
o
,
length
);
#endif
#endif
}
else
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
if
(
PyByteArray_Check
(
o
))
{
*
length
=
PyByteArray_GET_SIZE
(
o
);
return
PyByteArray_AS_STRING
(
o
);
}
else
#endif
{
char
*
result
;
int
r
=
PyBytes_AsStringAndSize
(
o
,
&
result
,
length
);
if
(
unlikely
(
r
<
0
))
{
return
NULL
;
}
else
{
return
result
;
}
}
}
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_IntOrLong
(
PyObject
*
x
)
{
#if CYTHON_USE_TYPE_SLOTS
PyNumberMethods
*
m
;
#endif
const
char
*
name
=
NULL
;
PyObject
*
res
=
NULL
;
#if PY_MAJOR_VERSION < 3
if
(
PyInt_Check
(
x
)
||
PyLong_Check
(
x
))
#else
if
(
PyLong_Check
(
x
))
#endif
return
__Pyx_NewRef
(
x
);
#if CYTHON_USE_TYPE_SLOTS
m
=
Py_TYPE
(
x
)
->
tp_as_number
;
#if PY_MAJOR_VERSION < 3
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
#else
res
=
PyNumber_Int
(
x
);
#endif
if
(
res
)
{
#if PY_MAJOR_VERSION < 3
if
(
!
PyInt_Check
(
res
)
&&
!
PyLong_Check
(
res
))
{
#else
if
(
!
PyLong_Check
(
res
))
{
#endif
PyErr_Format
(
PyExc_TypeError
,
"__%.4s__ returned non-%.4s (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
;
#if PY_MAJOR_VERSION < 3
if
(
likely
(
PyInt_CheckExact
(
b
)))
{
if
(
sizeof
(
Py_ssize_t
)
>=
sizeof
(
long
))
return
PyInt_AS_LONG
(
b
);
else
return
PyInt_AsSsize_t
(
x
);
}
#endif
if
(
likely
(
PyLong_CheckExact
(
b
)))
{
#if CYTHON_USE_PYLONG_INTERNALS
const
digit
*
digits
=
((
PyLongObject
*
)
b
)
->
ob_digit
;
const
Py_ssize_t
size
=
Py_SIZE
(
b
);
if
(
likely
(
__Pyx_sst_abs
(
size
)
<=
1
))
{
ival
=
likely
(
size
)
?
digits
[
0
]
:
0
;
if
(
size
==
-
1
)
ival
=
-
ival
;
return
ival
;
}
else
{
switch
(
size
)
{
case
2
:
if
(
8
*
sizeof
(
Py_ssize_t
)
>
2
*
PyLong_SHIFT
)
{
return
(
Py_ssize_t
)
(((((
size_t
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
0
]));
}
break
;
case
-
2
:
if
(
8
*
sizeof
(
Py_ssize_t
)
>
2
*
PyLong_SHIFT
)
{
return
-
(
Py_ssize_t
)
(((((
size_t
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
0
]));
}
break
;
case
3
:
if
(
8
*
sizeof
(
Py_ssize_t
)
>
3
*
PyLong_SHIFT
)
{
return
(
Py_ssize_t
)
(((((((
size_t
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
0
]));
}
break
;
case
-
3
:
if
(
8
*
sizeof
(
Py_ssize_t
)
>
3
*
PyLong_SHIFT
)
{
return
-
(
Py_ssize_t
)
(((((((
size_t
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
0
]));
}
break
;
case
4
:
if
(
8
*
sizeof
(
Py_ssize_t
)
>
4
*
PyLong_SHIFT
)
{
return
(
Py_ssize_t
)
(((((((((
size_t
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
0
]));
}
break
;
case
-
4
:
if
(
8
*
sizeof
(
Py_ssize_t
)
>
4
*
PyLong_SHIFT
)
{
return
-
(
Py_ssize_t
)
(((((((((
size_t
)
digits
[
3
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
2
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
1
])
<<
PyLong_SHIFT
)
|
(
size_t
)
digits
[
0
]));
}
break
;
}
}
#endif
return
PyLong_AsSsize_t
(
b
);
}
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
)
{
return
PyInt_FromSize_t
(
ival
);
}
#endif
/* Py_PYTHON_H */
t/sum.pyx
0 → 100644
View file @
6eab2742
cdef
int
sumupto
(
int
n
):
cdef
res
=
0
while
n
>
0
:
res
+=
n
n
-=
1
return
res
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment