Statistiques
| Révision :

root / Ising / Cython / Metropolis.c @ 91

Historique | Voir | Annoter | Télécharger (90,96 ko)

1 18 equemene
/* Generated by Cython 0.15.1 on Sun May 26 16:17:32 2013 */
2 18 equemene
3 18 equemene
#define PY_SSIZE_T_CLEAN
4 18 equemene
#include "Python.h"
5 18 equemene
#ifndef Py_PYTHON_H
6 18 equemene
    #error Python headers needed to compile C extensions, please install development version of Python.
7 18 equemene
#else
8 18 equemene
9 18 equemene
#include <stddef.h> /* For offsetof */
10 18 equemene
#ifndef offsetof
11 18 equemene
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
12 18 equemene
#endif
13 18 equemene
14 18 equemene
#if !defined(WIN32) && !defined(MS_WINDOWS)
15 18 equemene
  #ifndef __stdcall
16 18 equemene
    #define __stdcall
17 18 equemene
  #endif
18 18 equemene
  #ifndef __cdecl
19 18 equemene
    #define __cdecl
20 18 equemene
  #endif
21 18 equemene
  #ifndef __fastcall
22 18 equemene
    #define __fastcall
23 18 equemene
  #endif
24 18 equemene
#endif
25 18 equemene
26 18 equemene
#ifndef DL_IMPORT
27 18 equemene
  #define DL_IMPORT(t) t
28 18 equemene
#endif
29 18 equemene
#ifndef DL_EXPORT
30 18 equemene
  #define DL_EXPORT(t) t
31 18 equemene
#endif
32 18 equemene
33 18 equemene
#ifndef PY_LONG_LONG
34 18 equemene
  #define PY_LONG_LONG LONG_LONG
35 18 equemene
#endif
36 18 equemene
37 18 equemene
#if PY_VERSION_HEX < 0x02040000
38 18 equemene
  #define METH_COEXIST 0
39 18 equemene
  #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
40 18 equemene
  #define PyDict_Contains(d,o)   PySequence_Contains(d,o)
41 18 equemene
#endif
42 18 equemene
43 18 equemene
#if PY_VERSION_HEX < 0x02050000
44 18 equemene
  typedef int Py_ssize_t;
45 18 equemene
  #define PY_SSIZE_T_MAX INT_MAX
46 18 equemene
  #define PY_SSIZE_T_MIN INT_MIN
47 18 equemene
  #define PY_FORMAT_SIZE_T ""
48 18 equemene
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
49 18 equemene
  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
50 18 equemene
  #define PyNumber_Index(o)    PyNumber_Int(o)
51 18 equemene
  #define PyIndex_Check(o)     PyNumber_Check(o)
52 18 equemene
  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
53 18 equemene
#endif
54 18 equemene
55 18 equemene
#if PY_VERSION_HEX < 0x02060000
56 18 equemene
  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
57 18 equemene
  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
58 18 equemene
  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
59 18 equemene
  #define PyVarObject_HEAD_INIT(type, size) \
60 18 equemene
          PyObject_HEAD_INIT(type) size,
61 18 equemene
  #define PyType_Modified(t)
62 18 equemene
63 18 equemene
  typedef struct {
64 18 equemene
     void *buf;
65 18 equemene
     PyObject *obj;
66 18 equemene
     Py_ssize_t len;
67 18 equemene
     Py_ssize_t itemsize;
68 18 equemene
     int readonly;
69 18 equemene
     int ndim;
70 18 equemene
     char *format;
71 18 equemene
     Py_ssize_t *shape;
72 18 equemene
     Py_ssize_t *strides;
73 18 equemene
     Py_ssize_t *suboffsets;
74 18 equemene
     void *internal;
75 18 equemene
  } Py_buffer;
76 18 equemene
77 18 equemene
  #define PyBUF_SIMPLE 0
78 18 equemene
  #define PyBUF_WRITABLE 0x0001
79 18 equemene
  #define PyBUF_FORMAT 0x0004
80 18 equemene
  #define PyBUF_ND 0x0008
81 18 equemene
  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
82 18 equemene
  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
83 18 equemene
  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
84 18 equemene
  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
85 18 equemene
  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
86 18 equemene
87 18 equemene
#endif
88 18 equemene
89 18 equemene
#if PY_MAJOR_VERSION < 3
90 18 equemene
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
91 18 equemene
#else
92 18 equemene
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
93 18 equemene
#endif
94 18 equemene
95 18 equemene
#if PY_MAJOR_VERSION >= 3
96 18 equemene
  #define Py_TPFLAGS_CHECKTYPES 0
97 18 equemene
  #define Py_TPFLAGS_HAVE_INDEX 0
98 18 equemene
#endif
99 18 equemene
100 18 equemene
#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
101 18 equemene
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
102 18 equemene
#endif
103 18 equemene
104 18 equemene
#if PY_MAJOR_VERSION >= 3
105 18 equemene
  #define PyBaseString_Type            PyUnicode_Type
106 18 equemene
  #define PyStringObject               PyUnicodeObject
107 18 equemene
  #define PyString_Type                PyUnicode_Type
108 18 equemene
  #define PyString_Check               PyUnicode_Check
109 18 equemene
  #define PyString_CheckExact          PyUnicode_CheckExact
110 18 equemene
#endif
111 18 equemene
112 18 equemene
#if PY_VERSION_HEX < 0x02060000
113 18 equemene
  #define PyBytesObject                PyStringObject
114 18 equemene
  #define PyBytes_Type                 PyString_Type
115 18 equemene
  #define PyBytes_Check                PyString_Check
116 18 equemene
  #define PyBytes_CheckExact           PyString_CheckExact
117 18 equemene
  #define PyBytes_FromString           PyString_FromString
118 18 equemene
  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
119 18 equemene
  #define PyBytes_FromFormat           PyString_FromFormat
120 18 equemene
  #define PyBytes_DecodeEscape         PyString_DecodeEscape
121 18 equemene
  #define PyBytes_AsString             PyString_AsString
122 18 equemene
  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
123 18 equemene
  #define PyBytes_Size                 PyString_Size
124 18 equemene
  #define PyBytes_AS_STRING            PyString_AS_STRING
125 18 equemene
  #define PyBytes_GET_SIZE             PyString_GET_SIZE
126 18 equemene
  #define PyBytes_Repr                 PyString_Repr
127 18 equemene
  #define PyBytes_Concat               PyString_Concat
128 18 equemene
  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
129 18 equemene
#endif
130 18 equemene
131 18 equemene
#if PY_VERSION_HEX < 0x02060000
132 18 equemene
  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
133 18 equemene
  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
134 18 equemene
#endif
135 18 equemene
#ifndef PySet_CheckExact
136 18 equemene
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
137 18 equemene
#endif
138 18 equemene
139 18 equemene
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
140 18 equemene
141 18 equemene
#if PY_MAJOR_VERSION >= 3
142 18 equemene
  #define PyIntObject                  PyLongObject
143 18 equemene
  #define PyInt_Type                   PyLong_Type
144 18 equemene
  #define PyInt_Check(op)              PyLong_Check(op)
145 18 equemene
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
146 18 equemene
  #define PyInt_FromString             PyLong_FromString
147 18 equemene
  #define PyInt_FromUnicode            PyLong_FromUnicode
148 18 equemene
  #define PyInt_FromLong               PyLong_FromLong
149 18 equemene
  #define PyInt_FromSize_t             PyLong_FromSize_t
150 18 equemene
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
151 18 equemene
  #define PyInt_AsLong                 PyLong_AsLong
152 18 equemene
  #define PyInt_AS_LONG                PyLong_AS_LONG
153 18 equemene
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
154 18 equemene
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
155 18 equemene
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
156 18 equemene
#endif
157 18 equemene
158 18 equemene
#if PY_MAJOR_VERSION >= 3
159 18 equemene
  #define PyBoolObject                 PyLongObject
160 18 equemene
#endif
161 18 equemene
162 18 equemene
#if PY_VERSION_HEX < 0x03020000
163 18 equemene
  typedef long Py_hash_t;
164 18 equemene
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
165 18 equemene
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
166 18 equemene
#else
167 18 equemene
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
168 18 equemene
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
169 18 equemene
#endif
170 18 equemene
171 18 equemene
172 18 equemene
#if PY_MAJOR_VERSION >= 3
173 18 equemene
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
174 18 equemene
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
175 18 equemene
#else
176 18 equemene
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
177 18 equemene
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
178 18 equemene
#endif
179 18 equemene
180 18 equemene
#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
181 18 equemene
  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
182 18 equemene
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
183 18 equemene
  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
184 18 equemene
#else
185 18 equemene
  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
186 18 equemene
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
187 18 equemene
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
188 18 equemene
            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
189 18 equemene
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
190 18 equemene
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
191 18 equemene
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
192 18 equemene
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
193 18 equemene
  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
194 18 equemene
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
195 18 equemene
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
196 18 equemene
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
197 18 equemene
#endif
198 18 equemene
199 18 equemene
#if PY_MAJOR_VERSION >= 3
200 18 equemene
  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
201 18 equemene
#endif
202 18 equemene
203 18 equemene
#if PY_VERSION_HEX < 0x02050000
204 18 equemene
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
205 18 equemene
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
206 18 equemene
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
207 18 equemene
#else
208 18 equemene
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
209 18 equemene
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
210 18 equemene
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
211 18 equemene
#endif
212 18 equemene
213 18 equemene
#if PY_VERSION_HEX < 0x02050000
214 18 equemene
  #define __Pyx_NAMESTR(n) ((char *)(n))
215 18 equemene
  #define __Pyx_DOCSTR(n)  ((char *)(n))
216 18 equemene
#else
217 18 equemene
  #define __Pyx_NAMESTR(n) (n)
218 18 equemene
  #define __Pyx_DOCSTR(n)  (n)
219 18 equemene
#endif
220 18 equemene
221 18 equemene
#ifndef __PYX_EXTERN_C
222 18 equemene
  #ifdef __cplusplus
223 18 equemene
    #define __PYX_EXTERN_C extern "C"
224 18 equemene
  #else
225 18 equemene
    #define __PYX_EXTERN_C extern
226 18 equemene
  #endif
227 18 equemene
#endif
228 18 equemene
229 18 equemene
#if defined(WIN32) || defined(MS_WINDOWS)
230 18 equemene
#define _USE_MATH_DEFINES
231 18 equemene
#endif
232 18 equemene
#include <math.h>
233 18 equemene
#define __PYX_HAVE__Metropolis
234 18 equemene
#define __PYX_HAVE_API__Metropolis
235 18 equemene
#ifdef _OPENMP
236 18 equemene
#include <omp.h>
237 18 equemene
#endif /* _OPENMP */
238 18 equemene
239 18 equemene
#ifdef PYREX_WITHOUT_ASSERTIONS
240 18 equemene
#define CYTHON_WITHOUT_ASSERTIONS
241 18 equemene
#endif
242 18 equemene
243 18 equemene
244 18 equemene
/* inline attribute */
245 18 equemene
#ifndef CYTHON_INLINE
246 18 equemene
  #if defined(__GNUC__)
247 18 equemene
    #define CYTHON_INLINE __inline__
248 18 equemene
  #elif defined(_MSC_VER)
249 18 equemene
    #define CYTHON_INLINE __inline
250 18 equemene
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
251 18 equemene
    #define CYTHON_INLINE inline
252 18 equemene
  #else
253 18 equemene
    #define CYTHON_INLINE
254 18 equemene
  #endif
255 18 equemene
#endif
256 18 equemene
257 18 equemene
/* unused attribute */
258 18 equemene
#ifndef CYTHON_UNUSED
259 18 equemene
# if defined(__GNUC__)
260 18 equemene
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
261 18 equemene
#     define CYTHON_UNUSED __attribute__ ((__unused__))
262 18 equemene
#   else
263 18 equemene
#     define CYTHON_UNUSED
264 18 equemene
#   endif
265 18 equemene
# elif defined(__ICC) || defined(__INTEL_COMPILER)
266 18 equemene
#   define CYTHON_UNUSED __attribute__ ((__unused__))
267 18 equemene
# else
268 18 equemene
#   define CYTHON_UNUSED
269 18 equemene
# endif
270 18 equemene
#endif
271 18 equemene
272 18 equemene
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*/
273 18 equemene
274 18 equemene
275 18 equemene
/* Type Conversion Predeclarations */
276 18 equemene
277 18 equemene
#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
278 18 equemene
#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
279 18 equemene
280 18 equemene
#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
281 18 equemene
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
282 18 equemene
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
283 18 equemene
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
284 18 equemene
285 18 equemene
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
286 18 equemene
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
287 18 equemene
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
288 18 equemene
289 18 equemene
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
290 18 equemene
291 18 equemene
292 18 equemene
#ifdef __GNUC__
293 18 equemene
  /* Test for GCC > 2.95 */
294 18 equemene
  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
295 18 equemene
    #define likely(x)   __builtin_expect(!!(x), 1)
296 18 equemene
    #define unlikely(x) __builtin_expect(!!(x), 0)
297 18 equemene
  #else /* __GNUC__ > 2 ... */
298 18 equemene
    #define likely(x)   (x)
299 18 equemene
    #define unlikely(x) (x)
300 18 equemene
  #endif /* __GNUC__ > 2 ... */
301 18 equemene
#else /* __GNUC__ */
302 18 equemene
  #define likely(x)   (x)
303 18 equemene
  #define unlikely(x) (x)
304 18 equemene
#endif /* __GNUC__ */
305 18 equemene
306 18 equemene
static PyObject *__pyx_m;
307 18 equemene
static PyObject *__pyx_b;
308 18 equemene
static PyObject *__pyx_empty_tuple;
309 18 equemene
static PyObject *__pyx_empty_bytes;
310 18 equemene
static int __pyx_lineno;
311 18 equemene
static int __pyx_clineno = 0;
312 18 equemene
static const char * __pyx_cfilenm= __FILE__;
313 18 equemene
static const char *__pyx_filename;
314 18 equemene
315 18 equemene
316 18 equemene
static const char *__pyx_f[] = {
317 18 equemene
  "Metropolis.pyx",
318 18 equemene
};
319 18 equemene
320 18 equemene
/*--- Type declarations ---*/
321 18 equemene
322 18 equemene
#ifndef CYTHON_REFNANNY
323 18 equemene
  #define CYTHON_REFNANNY 0
324 18 equemene
#endif
325 18 equemene
326 18 equemene
#if CYTHON_REFNANNY
327 18 equemene
  typedef struct {
328 18 equemene
    void (*INCREF)(void*, PyObject*, int);
329 18 equemene
    void (*DECREF)(void*, PyObject*, int);
330 18 equemene
    void (*GOTREF)(void*, PyObject*, int);
331 18 equemene
    void (*GIVEREF)(void*, PyObject*, int);
332 18 equemene
    void* (*SetupContext)(const char*, int, const char*);
333 18 equemene
    void (*FinishContext)(void**);
334 18 equemene
  } __Pyx_RefNannyAPIStruct;
335 18 equemene
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
336 18 equemene
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
337 18 equemene
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
338 18 equemene
  #define __Pyx_RefNannySetupContext(name)           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
339 18 equemene
  #define __Pyx_RefNannyFinishContext()           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
340 18 equemene
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
341 18 equemene
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
342 18 equemene
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
343 18 equemene
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
344 18 equemene
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
345 18 equemene
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
346 18 equemene
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
347 18 equemene
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
348 18 equemene
#else
349 18 equemene
  #define __Pyx_RefNannyDeclarations
350 18 equemene
  #define __Pyx_RefNannySetupContext(name)
351 18 equemene
  #define __Pyx_RefNannyFinishContext()
352 18 equemene
  #define __Pyx_INCREF(r) Py_INCREF(r)
353 18 equemene
  #define __Pyx_DECREF(r) Py_DECREF(r)
354 18 equemene
  #define __Pyx_GOTREF(r)
355 18 equemene
  #define __Pyx_GIVEREF(r)
356 18 equemene
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
357 18 equemene
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
358 18 equemene
  #define __Pyx_XGOTREF(r)
359 18 equemene
  #define __Pyx_XGIVEREF(r)
360 18 equemene
#endif /* CYTHON_REFNANNY */
361 18 equemene
362 18 equemene
static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
363 18 equemene
364 18 equemene
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
365 18 equemene
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
366 18 equemene
367 18 equemene
static void __Pyx_RaiseDoubleKeywordsError(
368 18 equemene
    const char* func_name, PyObject* kw_name); /*proto*/
369 18 equemene
370 18 equemene
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/
371 18 equemene
372 18 equemene
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
373 18 equemene
374 18 equemene
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
375 18 equemene
376 18 equemene
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/
377 18 equemene
378 18 equemene
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/
379 18 equemene
380 18 equemene
static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
381 18 equemene
382 18 equemene
static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
383 18 equemene
384 18 equemene
static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
385 18 equemene
386 18 equemene
static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
387 18 equemene
388 18 equemene
static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
389 18 equemene
390 18 equemene
static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
391 18 equemene
392 18 equemene
static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
393 18 equemene
394 18 equemene
static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
395 18 equemene
396 18 equemene
static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
397 18 equemene
398 18 equemene
static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
399 18 equemene
400 18 equemene
static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
401 18 equemene
402 18 equemene
static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
403 18 equemene
404 18 equemene
static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
405 18 equemene
406 18 equemene
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
407 18 equemene
408 18 equemene
static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
409 18 equemene
410 18 equemene
static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
411 18 equemene
412 18 equemene
static int __Pyx_check_binary_version(void);
413 18 equemene
414 18 equemene
static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
415 18 equemene
                               int __pyx_lineno, const char *__pyx_filename); /*proto*/
416 18 equemene
417 18 equemene
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
418 18 equemene
419 18 equemene
/* Module declarations from 'Metropolis' */
420 18 equemene
#define __Pyx_MODULE_NAME "Metropolis"
421 18 equemene
int __pyx_module_is_main_Metropolis = 0;
422 18 equemene
423 18 equemene
/* Implementation of 'Metropolis' */
424 18 equemene
static PyObject *__pyx_builtin_xrange;
425 18 equemene
static char __pyx_k_1[] = "matplotlib.pyplot";
426 18 equemene
static char __pyx_k_2[] = "*";
427 18 equemene
static char __pyx_k__B[] = "B";
428 18 equemene
static char __pyx_k__J[] = "J";
429 18 equemene
static char __pyx_k__T[] = "T";
430 18 equemene
static char __pyx_k__PIL[] = "PIL";
431 18 equemene
static char __pyx_k__exp[] = "exp";
432 18 equemene
static char __pyx_k__plt[] = "plt";
433 18 equemene
static char __pyx_k__sys[] = "sys";
434 18 equemene
static char __pyx_k__math[] = "math";
435 18 equemene
static char __pyx_k__time[] = "time";
436 18 equemene
static char __pyx_k__Image[] = "Image";
437 18 equemene
static char __pyx_k__numpy[] = "numpy";
438 18 equemene
static char __pyx_k__range[] = "range";
439 18 equemene
static char __pyx_k__shape[] = "shape";
440 18 equemene
static char __pyx_k__sigma[] = "sigma";
441 18 equemene
static char __pyx_k__getopt[] = "getopt";
442 18 equemene
static char __pyx_k__random[] = "random";
443 18 equemene
static char __pyx_k__xrange[] = "xrange";
444 18 equemene
static char __pyx_k__randint[] = "randint";
445 18 equemene
static char __pyx_k____main__[] = "__main__";
446 18 equemene
static char __pyx_k____test__[] = "__test__";
447 18 equemene
static char __pyx_k__Metropolis[] = "Metropolis";
448 18 equemene
static char __pyx_k__iterations[] = "iterations";
449 18 equemene
static PyObject *__pyx_n_s_1;
450 18 equemene
static PyObject *__pyx_n_s_2;
451 18 equemene
static PyObject *__pyx_n_s__B;
452 18 equemene
static PyObject *__pyx_n_s__Image;
453 18 equemene
static PyObject *__pyx_n_s__J;
454 18 equemene
static PyObject *__pyx_n_s__Metropolis;
455 18 equemene
static PyObject *__pyx_n_s__PIL;
456 18 equemene
static PyObject *__pyx_n_s__T;
457 18 equemene
static PyObject *__pyx_n_s____main__;
458 18 equemene
static PyObject *__pyx_n_s____test__;
459 18 equemene
static PyObject *__pyx_n_s__exp;
460 18 equemene
static PyObject *__pyx_n_s__getopt;
461 18 equemene
static PyObject *__pyx_n_s__iterations;
462 18 equemene
static PyObject *__pyx_n_s__math;
463 18 equemene
static PyObject *__pyx_n_s__numpy;
464 18 equemene
static PyObject *__pyx_n_s__plt;
465 18 equemene
static PyObject *__pyx_n_s__randint;
466 18 equemene
static PyObject *__pyx_n_s__random;
467 18 equemene
static PyObject *__pyx_n_s__range;
468 18 equemene
static PyObject *__pyx_n_s__shape;
469 18 equemene
static PyObject *__pyx_n_s__sigma;
470 18 equemene
static PyObject *__pyx_n_s__sys;
471 18 equemene
static PyObject *__pyx_n_s__time;
472 18 equemene
static PyObject *__pyx_n_s__xrange;
473 18 equemene
static PyObject *__pyx_int_0;
474 18 equemene
static PyObject *__pyx_int_1;
475 18 equemene
static PyObject *__pyx_int_2;
476 18 equemene
477 18 equemene
/* "Metropolis.pyx":17
478 18 equemene
 * import Metropolis
479 18 equemene
 *
480 18 equemene
 * def Metropolis(sigma,J,B,T,iterations):             # <<<<<<<<<<<<<<
481 18 equemene
 *     start=time.time()
482 18 equemene
 *
483 18 equemene
 */
484 18 equemene
485 18 equemene
static PyObject *__pyx_pf_10Metropolis_Metropolis(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
486 18 equemene
static PyMethodDef __pyx_mdef_10Metropolis_Metropolis = {__Pyx_NAMESTR("Metropolis"), (PyCFunction)__pyx_pf_10Metropolis_Metropolis, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
487 18 equemene
static PyObject *__pyx_pf_10Metropolis_Metropolis(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
488 18 equemene
  PyObject *__pyx_v_sigma = 0;
489 18 equemene
  PyObject *__pyx_v_J = 0;
490 18 equemene
  PyObject *__pyx_v_B = 0;
491 18 equemene
  PyObject *__pyx_v_T = 0;
492 18 equemene
  PyObject *__pyx_v_iterations = 0;
493 18 equemene
  PyObject *__pyx_v_start = NULL;
494 18 equemene
  PyObject *__pyx_v_SizeX = NULL;
495 18 equemene
  PyObject *__pyx_v_SizeY = NULL;
496 18 equemene
  PyObject *__pyx_v_p = NULL;
497 18 equemene
  PyObject *__pyx_v_X = NULL;
498 18 equemene
  PyObject *__pyx_v_Y = NULL;
499 18 equemene
  PyObject *__pyx_v_DeltaE = NULL;
500 18 equemene
  PyObject *__pyx_v_duration = NULL;
501 18 equemene
  PyObject *__pyx_r = NULL;
502 18 equemene
  __Pyx_RefNannyDeclarations
503 18 equemene
  PyObject *__pyx_t_1 = NULL;
504 18 equemene
  PyObject *__pyx_t_2 = NULL;
505 18 equemene
  PyObject *__pyx_t_3 = NULL;
506 18 equemene
  PyObject *__pyx_t_4 = NULL;
507 18 equemene
  PyObject *(*__pyx_t_5)(PyObject *);
508 18 equemene
  Py_ssize_t __pyx_t_6;
509 18 equemene
  PyObject *(*__pyx_t_7)(PyObject *);
510 18 equemene
  PyObject *__pyx_t_8 = NULL;
511 18 equemene
  int __pyx_t_9;
512 18 equemene
  int __pyx_t_10;
513 18 equemene
  int __pyx_t_11;
514 18 equemene
  int __pyx_lineno = 0;
515 18 equemene
  const char *__pyx_filename = NULL;
516 18 equemene
  int __pyx_clineno = 0;
517 18 equemene
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sigma,&__pyx_n_s__J,&__pyx_n_s__B,&__pyx_n_s__T,&__pyx_n_s__iterations,0};
518 18 equemene
  __Pyx_RefNannySetupContext("Metropolis");
519 18 equemene
  __pyx_self = __pyx_self;
520 18 equemene
  {
521 18 equemene
    PyObject* values[5] = {0,0,0,0,0};
522 18 equemene
    if (unlikely(__pyx_kwds)) {
523 18 equemene
      Py_ssize_t kw_args;
524 18 equemene
      switch (PyTuple_GET_SIZE(__pyx_args)) {
525 18 equemene
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
526 18 equemene
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
527 18 equemene
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
528 18 equemene
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
529 18 equemene
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
530 18 equemene
        case  0: break;
531 18 equemene
        default: goto __pyx_L5_argtuple_error;
532 18 equemene
      }
533 18 equemene
      kw_args = PyDict_Size(__pyx_kwds);
534 18 equemene
      switch (PyTuple_GET_SIZE(__pyx_args)) {
535 18 equemene
        case  0:
536 18 equemene
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sigma);
537 18 equemene
        if (likely(values[0])) kw_args--;
538 18 equemene
        else goto __pyx_L5_argtuple_error;
539 18 equemene
        case  1:
540 18 equemene
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__J);
541 18 equemene
        if (likely(values[1])) kw_args--;
542 18 equemene
        else {
543 18 equemene
          __Pyx_RaiseArgtupleInvalid("Metropolis", 1, 5, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
544 18 equemene
        }
545 18 equemene
        case  2:
546 18 equemene
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__B);
547 18 equemene
        if (likely(values[2])) kw_args--;
548 18 equemene
        else {
549 18 equemene
          __Pyx_RaiseArgtupleInvalid("Metropolis", 1, 5, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
550 18 equemene
        }
551 18 equemene
        case  3:
552 18 equemene
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__T);
553 18 equemene
        if (likely(values[3])) kw_args--;
554 18 equemene
        else {
555 18 equemene
          __Pyx_RaiseArgtupleInvalid("Metropolis", 1, 5, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
556 18 equemene
        }
557 18 equemene
        case  4:
558 18 equemene
        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__iterations);
559 18 equemene
        if (likely(values[4])) kw_args--;
560 18 equemene
        else {
561 18 equemene
          __Pyx_RaiseArgtupleInvalid("Metropolis", 1, 5, 5, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
562 18 equemene
        }
563 18 equemene
      }
564 18 equemene
      if (unlikely(kw_args > 0)) {
565 18 equemene
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Metropolis") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
566 18 equemene
      }
567 18 equemene
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
568 18 equemene
      goto __pyx_L5_argtuple_error;
569 18 equemene
    } else {
570 18 equemene
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
571 18 equemene
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
572 18 equemene
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
573 18 equemene
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
574 18 equemene
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
575 18 equemene
    }
576 18 equemene
    __pyx_v_sigma = values[0];
577 18 equemene
    __pyx_v_J = values[1];
578 18 equemene
    __pyx_v_B = values[2];
579 18 equemene
    __pyx_v_T = values[3];
580 18 equemene
    __pyx_v_iterations = values[4];
581 18 equemene
  }
582 18 equemene
  goto __pyx_L4_argument_unpacking_done;
583 18 equemene
  __pyx_L5_argtuple_error:;
584 18 equemene
  __Pyx_RaiseArgtupleInvalid("Metropolis", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
585 18 equemene
  __pyx_L3_error:;
586 18 equemene
  __Pyx_AddTraceback("Metropolis.Metropolis", __pyx_clineno, __pyx_lineno, __pyx_filename);
587 18 equemene
  __Pyx_RefNannyFinishContext();
588 18 equemene
  return NULL;
589 18 equemene
  __pyx_L4_argument_unpacking_done:;
590 18 equemene
591 18 equemene
  /* "Metropolis.pyx":18
592 18 equemene
 *
593 18 equemene
 * def Metropolis(sigma,J,B,T,iterations):
594 18 equemene
 *     start=time.time()             # <<<<<<<<<<<<<<
595 18 equemene
 *
596 18 equemene
 *     SizeX,SizeY=sigma.shape
597 18 equemene
 */
598 18 equemene
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
599 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
600 18 equemene
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__time); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
601 18 equemene
  __Pyx_GOTREF(__pyx_t_2);
602 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
603 18 equemene
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
604 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
605 18 equemene
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
606 18 equemene
  __pyx_v_start = __pyx_t_1;
607 18 equemene
  __pyx_t_1 = 0;
608 18 equemene
609 18 equemene
  /* "Metropolis.pyx":20
610 18 equemene
 *     start=time.time()
611 18 equemene
 *
612 18 equemene
 *     SizeX,SizeY=sigma.shape             # <<<<<<<<<<<<<<
613 18 equemene
 *
614 18 equemene
 *     for p in xrange(0,iterations):
615 18 equemene
 */
616 18 equemene
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_sigma, __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
617 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
618 18 equemene
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
619 18 equemene
    PyObject* sequence = __pyx_t_1;
620 18 equemene
    if (likely(PyTuple_CheckExact(sequence))) {
621 18 equemene
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
622 18 equemene
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
623 18 equemene
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
624 18 equemene
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
625 18 equemene
      }
626 18 equemene
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
627 18 equemene
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
628 18 equemene
    } else {
629 18 equemene
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
630 18 equemene
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
631 18 equemene
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
632 18 equemene
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
633 18 equemene
      }
634 18 equemene
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
635 18 equemene
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
636 18 equemene
    }
637 18 equemene
    __Pyx_INCREF(__pyx_t_2);
638 18 equemene
    __Pyx_INCREF(__pyx_t_3);
639 18 equemene
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
640 18 equemene
  } else {
641 18 equemene
    Py_ssize_t index = -1;
642 18 equemene
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
643 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
644 18 equemene
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
645 18 equemene
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
646 18 equemene
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
647 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
648 18 equemene
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
649 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
650 18 equemene
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
651 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
652 18 equemene
    goto __pyx_L7_unpacking_done;
653 18 equemene
    __pyx_L6_unpacking_failed:;
654 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
655 18 equemene
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
656 18 equemene
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
657 18 equemene
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
658 18 equemene
    __pyx_L7_unpacking_done:;
659 18 equemene
  }
660 18 equemene
  __pyx_v_SizeX = __pyx_t_2;
661 18 equemene
  __pyx_t_2 = 0;
662 18 equemene
  __pyx_v_SizeY = __pyx_t_3;
663 18 equemene
  __pyx_t_3 = 0;
664 18 equemene
665 18 equemene
  /* "Metropolis.pyx":22
666 18 equemene
 *     SizeX,SizeY=sigma.shape
667 18 equemene
 *
668 18 equemene
 *     for p in xrange(0,iterations):             # <<<<<<<<<<<<<<
669 18 equemene
 *         # Random access coordonate
670 18 equemene
 *         X,Y=numpy.random.randint(SizeX),numpy.random.randint(SizeY)
671 18 equemene
 */
672 18 equemene
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
673 18 equemene
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
674 18 equemene
  __Pyx_INCREF(__pyx_int_0);
675 18 equemene
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
676 18 equemene
  __Pyx_GIVEREF(__pyx_int_0);
677 18 equemene
  __Pyx_INCREF(__pyx_v_iterations);
678 18 equemene
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_iterations);
679 18 equemene
  __Pyx_GIVEREF(__pyx_v_iterations);
680 18 equemene
  __pyx_t_3 = PyObject_Call(__pyx_builtin_xrange, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
681 18 equemene
  __Pyx_GOTREF(__pyx_t_3);
682 18 equemene
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
683 18 equemene
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
684 18 equemene
    __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
685 18 equemene
    __pyx_t_7 = NULL;
686 18 equemene
  } else {
687 18 equemene
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
688 18 equemene
    __Pyx_GOTREF(__pyx_t_1);
689 18 equemene
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext;
690 18 equemene
  }
691 18 equemene
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
692 18 equemene
  for (;;) {
693 18 equemene
    if (PyList_CheckExact(__pyx_t_1)) {
694 18 equemene
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
695 18 equemene
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++;
696 18 equemene
    } else if (PyTuple_CheckExact(__pyx_t_1)) {
697 18 equemene
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
698 18 equemene
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++;
699 18 equemene
    } else {
700 18 equemene
      __pyx_t_3 = __pyx_t_7(__pyx_t_1);
701 18 equemene
      if (unlikely(!__pyx_t_3)) {
702 18 equemene
        if (PyErr_Occurred()) {
703 18 equemene
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
704 18 equemene
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
705 18 equemene
        }
706 18 equemene
        break;
707 18 equemene
      }
708 18 equemene
      __Pyx_GOTREF(__pyx_t_3);
709 18 equemene
    }
710 18 equemene
    __Pyx_XDECREF(__pyx_v_p);
711 18 equemene
    __pyx_v_p = __pyx_t_3;
712 18 equemene
    __pyx_t_3 = 0;
713 18 equemene
714 18 equemene
    /* "Metropolis.pyx":24
715 18 equemene
 *     for p in xrange(0,iterations):
716 18 equemene
 *         # Random access coordonate
717 18 equemene
 *         X,Y=numpy.random.randint(SizeX),numpy.random.randint(SizeY)             # <<<<<<<<<<<<<<
718 18 equemene
 *
719 18 equemene
 *         DeltaE=J*sigma[X,Y]*(2*(sigma[X,(Y+1)%SizeY]+
720 18 equemene
 */
721 18 equemene
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
722 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
723 18 equemene
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__random); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
724 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
725 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
726 18 equemene
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__randint); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
727 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
728 18 equemene
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
729 18 equemene
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
730 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
731 18 equemene
    __Pyx_INCREF(__pyx_v_SizeX);
732 18 equemene
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_SizeX);
733 18 equemene
    __Pyx_GIVEREF(__pyx_v_SizeX);
734 18 equemene
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
735 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
736 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
737 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
738 18 equemene
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
739 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
740 18 equemene
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__random); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
741 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
742 18 equemene
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
743 18 equemene
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__randint); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
744 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
745 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
746 18 equemene
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
747 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
748 18 equemene
    __Pyx_INCREF(__pyx_v_SizeY);
749 18 equemene
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_SizeY);
750 18 equemene
    __Pyx_GIVEREF(__pyx_v_SizeY);
751 18 equemene
    __pyx_t_8 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
752 18 equemene
    __Pyx_GOTREF(__pyx_t_8);
753 18 equemene
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
754 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
755 18 equemene
    __Pyx_XDECREF(__pyx_v_X);
756 18 equemene
    __pyx_v_X = __pyx_t_4;
757 18 equemene
    __pyx_t_4 = 0;
758 18 equemene
    __Pyx_XDECREF(__pyx_v_Y);
759 18 equemene
    __pyx_v_Y = __pyx_t_8;
760 18 equemene
    __pyx_t_8 = 0;
761 18 equemene
762 18 equemene
    /* "Metropolis.pyx":26
763 18 equemene
 *         X,Y=numpy.random.randint(SizeX),numpy.random.randint(SizeY)
764 18 equemene
 *
765 18 equemene
 *         DeltaE=J*sigma[X,Y]*(2*(sigma[X,(Y+1)%SizeY]+             # <<<<<<<<<<<<<<
766 18 equemene
 *                                 sigma[X,(Y-1)%SizeY]+
767 18 equemene
 *                                 sigma[(X-1)%SizeX,Y]+
768 18 equemene
 */
769 18 equemene
    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
770 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_8));
771 18 equemene
    __Pyx_INCREF(__pyx_v_X);
772 18 equemene
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_X);
773 18 equemene
    __Pyx_GIVEREF(__pyx_v_X);
774 18 equemene
    __Pyx_INCREF(__pyx_v_Y);
775 18 equemene
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_Y);
776 18 equemene
    __Pyx_GIVEREF(__pyx_v_Y);
777 18 equemene
    __pyx_t_4 = PyObject_GetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_8)); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
778 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
779 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
780 18 equemene
    __pyx_t_8 = PyNumber_Multiply(__pyx_v_J, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
781 18 equemene
    __Pyx_GOTREF(__pyx_t_8);
782 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
783 18 equemene
784 18 equemene
    /* "Metropolis.pyx":27
785 18 equemene
 *
786 18 equemene
 *         DeltaE=J*sigma[X,Y]*(2*(sigma[X,(Y+1)%SizeY]+
787 18 equemene
 *                                 sigma[X,(Y-1)%SizeY]+             # <<<<<<<<<<<<<<
788 18 equemene
 *                                 sigma[(X-1)%SizeX,Y]+
789 18 equemene
 *                                 sigma[(X+1)%SizeX,Y])+B)
790 18 equemene
 */
791 18 equemene
    __pyx_t_4 = PyNumber_Add(__pyx_v_Y, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
792 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
793 18 equemene
794 18 equemene
    /* "Metropolis.pyx":26
795 18 equemene
 *         X,Y=numpy.random.randint(SizeX),numpy.random.randint(SizeY)
796 18 equemene
 *
797 18 equemene
 *         DeltaE=J*sigma[X,Y]*(2*(sigma[X,(Y+1)%SizeY]+             # <<<<<<<<<<<<<<
798 18 equemene
 *                                 sigma[X,(Y-1)%SizeY]+
799 18 equemene
 *                                 sigma[(X-1)%SizeX,Y]+
800 18 equemene
 */
801 18 equemene
    __pyx_t_3 = PyNumber_Remainder(__pyx_t_4, __pyx_v_SizeY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
802 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
803 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
804 18 equemene
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
805 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
806 18 equemene
    __Pyx_INCREF(__pyx_v_X);
807 18 equemene
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_X);
808 18 equemene
    __Pyx_GIVEREF(__pyx_v_X);
809 18 equemene
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
810 18 equemene
    __Pyx_GIVEREF(__pyx_t_3);
811 18 equemene
    __pyx_t_3 = 0;
812 18 equemene
    __pyx_t_3 = PyObject_GetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_4)); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
813 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
814 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
815 18 equemene
816 18 equemene
    /* "Metropolis.pyx":27
817 18 equemene
 *
818 18 equemene
 *         DeltaE=J*sigma[X,Y]*(2*(sigma[X,(Y+1)%SizeY]+
819 18 equemene
 *                                 sigma[X,(Y-1)%SizeY]+             # <<<<<<<<<<<<<<
820 18 equemene
 *                                 sigma[(X-1)%SizeX,Y]+
821 18 equemene
 *                                 sigma[(X+1)%SizeX,Y])+B)
822 18 equemene
 */
823 18 equemene
    __pyx_t_4 = PyNumber_Subtract(__pyx_v_Y, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
824 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
825 18 equemene
    __pyx_t_2 = PyNumber_Remainder(__pyx_t_4, __pyx_v_SizeY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
826 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
827 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
828 18 equemene
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
829 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
830 18 equemene
    __Pyx_INCREF(__pyx_v_X);
831 18 equemene
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_X);
832 18 equemene
    __Pyx_GIVEREF(__pyx_v_X);
833 18 equemene
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
834 18 equemene
    __Pyx_GIVEREF(__pyx_t_2);
835 18 equemene
    __pyx_t_2 = 0;
836 18 equemene
    __pyx_t_2 = PyObject_GetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_4)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
837 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
838 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
839 18 equemene
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
840 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
841 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
842 18 equemene
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
843 18 equemene
844 18 equemene
    /* "Metropolis.pyx":28
845 18 equemene
 *         DeltaE=J*sigma[X,Y]*(2*(sigma[X,(Y+1)%SizeY]+
846 18 equemene
 *                                 sigma[X,(Y-1)%SizeY]+
847 18 equemene
 *                                 sigma[(X-1)%SizeX,Y]+             # <<<<<<<<<<<<<<
848 18 equemene
 *                                 sigma[(X+1)%SizeX,Y])+B)
849 18 equemene
 *
850 18 equemene
 */
851 18 equemene
    __pyx_t_2 = PyNumber_Subtract(__pyx_v_X, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
852 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
853 18 equemene
    __pyx_t_3 = PyNumber_Remainder(__pyx_t_2, __pyx_v_SizeX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
854 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
855 18 equemene
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
856 18 equemene
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
857 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
858 18 equemene
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
859 18 equemene
    __Pyx_GIVEREF(__pyx_t_3);
860 18 equemene
    __Pyx_INCREF(__pyx_v_Y);
861 18 equemene
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Y);
862 18 equemene
    __Pyx_GIVEREF(__pyx_v_Y);
863 18 equemene
    __pyx_t_3 = 0;
864 18 equemene
    __pyx_t_3 = PyObject_GetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_2)); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
865 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
866 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
867 18 equemene
    __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
868 18 equemene
    __Pyx_GOTREF(__pyx_t_2);
869 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
870 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
871 18 equemene
872 18 equemene
    /* "Metropolis.pyx":29
873 18 equemene
 *                                 sigma[X,(Y-1)%SizeY]+
874 18 equemene
 *                                 sigma[(X-1)%SizeX,Y]+
875 18 equemene
 *                                 sigma[(X+1)%SizeX,Y])+B)             # <<<<<<<<<<<<<<
876 18 equemene
 *
877 18 equemene
 *         if DeltaE < 0. or random() < exp(-DeltaE/T):
878 18 equemene
 */
879 18 equemene
    __pyx_t_3 = PyNumber_Add(__pyx_v_X, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
880 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
881 18 equemene
    __pyx_t_4 = PyNumber_Remainder(__pyx_t_3, __pyx_v_SizeX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
882 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
883 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
884 18 equemene
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
885 18 equemene
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
886 18 equemene
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
887 18 equemene
    __Pyx_GIVEREF(__pyx_t_4);
888 18 equemene
    __Pyx_INCREF(__pyx_v_Y);
889 18 equemene
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_Y);
890 18 equemene
    __Pyx_GIVEREF(__pyx_v_Y);
891 18 equemene
    __pyx_t_4 = 0;
892 18 equemene
    __pyx_t_4 = PyObject_GetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_3)); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
893 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
894 18 equemene
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
895 18 equemene
    __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
896 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
897 18 equemene
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
898 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
899 18 equemene
    __pyx_t_4 = PyNumber_Multiply(__pyx_int_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
900 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
901 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
902 18 equemene
    __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_v_B); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
903 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
904 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
905 18 equemene
    __pyx_t_4 = PyNumber_Multiply(__pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
906 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
907 18 equemene
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
908 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
909 18 equemene
    __Pyx_XDECREF(__pyx_v_DeltaE);
910 18 equemene
    __pyx_v_DeltaE = __pyx_t_4;
911 18 equemene
    __pyx_t_4 = 0;
912 18 equemene
913 18 equemene
    /* "Metropolis.pyx":31
914 18 equemene
 *                                 sigma[(X+1)%SizeX,Y])+B)
915 18 equemene
 *
916 18 equemene
 *         if DeltaE < 0. or random() < exp(-DeltaE/T):             # <<<<<<<<<<<<<<
917 18 equemene
 *             sigma[X,Y]=-sigma[X,Y]
918 18 equemene
 *     duration=time.time()-start
919 18 equemene
 */
920 18 equemene
    __pyx_t_4 = PyFloat_FromDouble(0.); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
921 18 equemene
    __Pyx_GOTREF(__pyx_t_4);
922 18 equemene
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_DeltaE, __pyx_t_4, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
923 18 equemene
    __Pyx_GOTREF(__pyx_t_3);
924 18 equemene
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
925 18 equemene
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
926 18 equemene
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
927 18 equemene
    if (!__pyx_t_9) {
928 18 equemene
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__random); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
929 18 equemene
      __Pyx_GOTREF(__pyx_t_3);
930 18 equemene
      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
931 18 equemene
      __Pyx_GOTREF(__pyx_t_4);
932 18 equemene
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
933 18 equemene
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__exp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
934 18 equemene
      __Pyx_GOTREF(__pyx_t_3);
935 18 equemene
      __pyx_t_8 = PyNumber_Negative(__pyx_v_DeltaE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
936 18 equemene
      __Pyx_GOTREF(__pyx_t_8);
937 18 equemene
      __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_v_T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
938 18 equemene
      __Pyx_GOTREF(__pyx_t_2);
939 18 equemene
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
940 18 equemene
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
941 18 equemene
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
942 18 equemene
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
943 18 equemene
      __Pyx_GIVEREF(__pyx_t_2);
944 18 equemene
      __pyx_t_2 = 0;
945 18 equemene
      __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
946 18 equemene
      __Pyx_GOTREF(__pyx_t_2);
947 18 equemene
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
948 18 equemene
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
949 18 equemene
      __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
950 18 equemene
      __Pyx_GOTREF(__pyx_t_8);
951 18 equemene
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
952 18 equemene
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
953 18 equemene
      __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
954 18 equemene
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
955 18 equemene
      __pyx_t_11 = __pyx_t_10;
956 18 equemene
    } else {
957 18 equemene
      __pyx_t_11 = __pyx_t_9;
958 18 equemene
    }
959 18 equemene
    if (__pyx_t_11) {
960 18 equemene
961 18 equemene
      /* "Metropolis.pyx":32
962 18 equemene
 *
963 18 equemene
 *         if DeltaE < 0. or random() < exp(-DeltaE/T):
964 18 equemene
 *             sigma[X,Y]=-sigma[X,Y]             # <<<<<<<<<<<<<<
965 18 equemene
 *     duration=time.time()-start
966 18 equemene
 *     return(duration)
967 18 equemene
 */
968 18 equemene
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
969 18 equemene
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
970 18 equemene
      __Pyx_INCREF(__pyx_v_X);
971 18 equemene
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_X);
972 18 equemene
      __Pyx_GIVEREF(__pyx_v_X);
973 18 equemene
      __Pyx_INCREF(__pyx_v_Y);
974 18 equemene
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_Y);
975 18 equemene
      __Pyx_GIVEREF(__pyx_v_Y);
976 18 equemene
      __pyx_t_2 = PyObject_GetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_8)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
977 18 equemene
      __Pyx_GOTREF(__pyx_t_2);
978 18 equemene
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
979 18 equemene
      __pyx_t_8 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
980 18 equemene
      __Pyx_GOTREF(__pyx_t_8);
981 18 equemene
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
982 18 equemene
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
983 18 equemene
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
984 18 equemene
      __Pyx_INCREF(__pyx_v_X);
985 18 equemene
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_X);
986 18 equemene
      __Pyx_GIVEREF(__pyx_v_X);
987 18 equemene
      __Pyx_INCREF(__pyx_v_Y);
988 18 equemene
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Y);
989 18 equemene
      __Pyx_GIVEREF(__pyx_v_Y);
990 18 equemene
      if (PyObject_SetItem(__pyx_v_sigma, ((PyObject *)__pyx_t_2), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
991 18 equemene
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
992 18 equemene
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
993 18 equemene
      goto __pyx_L10;
994 18 equemene
    }
995 18 equemene
    __pyx_L10:;
996 18 equemene
  }
997 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
998 18 equemene
999 18 equemene
  /* "Metropolis.pyx":33
1000 18 equemene
 *         if DeltaE < 0. or random() < exp(-DeltaE/T):
1001 18 equemene
 *             sigma[X,Y]=-sigma[X,Y]
1002 18 equemene
 *     duration=time.time()-start             # <<<<<<<<<<<<<<
1003 18 equemene
 *     return(duration)
1004 18 equemene
 */
1005 18 equemene
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1006 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1007 18 equemene
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__time); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1008 18 equemene
  __Pyx_GOTREF(__pyx_t_8);
1009 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1010 18 equemene
  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1011 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1012 18 equemene
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
1013 18 equemene
  __pyx_t_8 = PyNumber_Subtract(__pyx_t_1, __pyx_v_start); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1014 18 equemene
  __Pyx_GOTREF(__pyx_t_8);
1015 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1016 18 equemene
  __pyx_v_duration = __pyx_t_8;
1017 18 equemene
  __pyx_t_8 = 0;
1018 18 equemene
1019 18 equemene
  /* "Metropolis.pyx":34
1020 18 equemene
 *             sigma[X,Y]=-sigma[X,Y]
1021 18 equemene
 *     duration=time.time()-start
1022 18 equemene
 *     return(duration)             # <<<<<<<<<<<<<<
1023 18 equemene
 */
1024 18 equemene
  __Pyx_XDECREF(__pyx_r);
1025 18 equemene
  __Pyx_INCREF(__pyx_v_duration);
1026 18 equemene
  __pyx_r = __pyx_v_duration;
1027 18 equemene
  goto __pyx_L0;
1028 18 equemene
1029 18 equemene
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
1030 18 equemene
  goto __pyx_L0;
1031 18 equemene
  __pyx_L1_error:;
1032 18 equemene
  __Pyx_XDECREF(__pyx_t_1);
1033 18 equemene
  __Pyx_XDECREF(__pyx_t_2);
1034 18 equemene
  __Pyx_XDECREF(__pyx_t_3);
1035 18 equemene
  __Pyx_XDECREF(__pyx_t_4);
1036 18 equemene
  __Pyx_XDECREF(__pyx_t_8);
1037 18 equemene
  __Pyx_AddTraceback("Metropolis.Metropolis", __pyx_clineno, __pyx_lineno, __pyx_filename);
1038 18 equemene
  __pyx_r = NULL;
1039 18 equemene
  __pyx_L0:;
1040 18 equemene
  __Pyx_XDECREF(__pyx_v_start);
1041 18 equemene
  __Pyx_XDECREF(__pyx_v_SizeX);
1042 18 equemene
  __Pyx_XDECREF(__pyx_v_SizeY);
1043 18 equemene
  __Pyx_XDECREF(__pyx_v_p);
1044 18 equemene
  __Pyx_XDECREF(__pyx_v_X);
1045 18 equemene
  __Pyx_XDECREF(__pyx_v_Y);
1046 18 equemene
  __Pyx_XDECREF(__pyx_v_DeltaE);
1047 18 equemene
  __Pyx_XDECREF(__pyx_v_duration);
1048 18 equemene
  __Pyx_XGIVEREF(__pyx_r);
1049 18 equemene
  __Pyx_RefNannyFinishContext();
1050 18 equemene
  return __pyx_r;
1051 18 equemene
}
1052 18 equemene
1053 18 equemene
static PyMethodDef __pyx_methods[] = {
1054 18 equemene
  {0, 0, 0, 0}
1055 18 equemene
};
1056 18 equemene
1057 18 equemene
#if PY_MAJOR_VERSION >= 3
1058 18 equemene
static struct PyModuleDef __pyx_moduledef = {
1059 18 equemene
    PyModuleDef_HEAD_INIT,
1060 18 equemene
    __Pyx_NAMESTR("Metropolis"),
1061 18 equemene
    0, /* m_doc */
1062 18 equemene
    -1, /* m_size */
1063 18 equemene
    __pyx_methods /* m_methods */,
1064 18 equemene
    NULL, /* m_reload */
1065 18 equemene
    NULL, /* m_traverse */
1066 18 equemene
    NULL, /* m_clear */
1067 18 equemene
    NULL /* m_free */
1068 18 equemene
};
1069 18 equemene
#endif
1070 18 equemene
1071 18 equemene
static __Pyx_StringTabEntry __pyx_string_tab[] = {
1072 18 equemene
  {&__pyx_n_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 1},
1073 18 equemene
  {&__pyx_n_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 1},
1074 18 equemene
  {&__pyx_n_s__B, __pyx_k__B, sizeof(__pyx_k__B), 0, 0, 1, 1},
1075 18 equemene
  {&__pyx_n_s__Image, __pyx_k__Image, sizeof(__pyx_k__Image), 0, 0, 1, 1},
1076 18 equemene
  {&__pyx_n_s__J, __pyx_k__J, sizeof(__pyx_k__J), 0, 0, 1, 1},
1077 18 equemene
  {&__pyx_n_s__Metropolis, __pyx_k__Metropolis, sizeof(__pyx_k__Metropolis), 0, 0, 1, 1},
1078 18 equemene
  {&__pyx_n_s__PIL, __pyx_k__PIL, sizeof(__pyx_k__PIL), 0, 0, 1, 1},
1079 18 equemene
  {&__pyx_n_s__T, __pyx_k__T, sizeof(__pyx_k__T), 0, 0, 1, 1},
1080 18 equemene
  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
1081 18 equemene
  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
1082 18 equemene
  {&__pyx_n_s__exp, __pyx_k__exp, sizeof(__pyx_k__exp), 0, 0, 1, 1},
1083 18 equemene
  {&__pyx_n_s__getopt, __pyx_k__getopt, sizeof(__pyx_k__getopt), 0, 0, 1, 1},
1084 18 equemene
  {&__pyx_n_s__iterations, __pyx_k__iterations, sizeof(__pyx_k__iterations), 0, 0, 1, 1},
1085 18 equemene
  {&__pyx_n_s__math, __pyx_k__math, sizeof(__pyx_k__math), 0, 0, 1, 1},
1086 18 equemene
  {&__pyx_n_s__numpy, __pyx_k__numpy, sizeof(__pyx_k__numpy), 0, 0, 1, 1},
1087 18 equemene
  {&__pyx_n_s__plt, __pyx_k__plt, sizeof(__pyx_k__plt), 0, 0, 1, 1},
1088 18 equemene
  {&__pyx_n_s__randint, __pyx_k__randint, sizeof(__pyx_k__randint), 0, 0, 1, 1},
1089 18 equemene
  {&__pyx_n_s__random, __pyx_k__random, sizeof(__pyx_k__random), 0, 0, 1, 1},
1090 18 equemene
  {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
1091 18 equemene
  {&__pyx_n_s__shape, __pyx_k__shape, sizeof(__pyx_k__shape), 0, 0, 1, 1},
1092 18 equemene
  {&__pyx_n_s__sigma, __pyx_k__sigma, sizeof(__pyx_k__sigma), 0, 0, 1, 1},
1093 18 equemene
  {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1},
1094 18 equemene
  {&__pyx_n_s__time, __pyx_k__time, sizeof(__pyx_k__time), 0, 0, 1, 1},
1095 18 equemene
  {&__pyx_n_s__xrange, __pyx_k__xrange, sizeof(__pyx_k__xrange), 0, 0, 1, 1},
1096 18 equemene
  {0, 0, 0, 0, 0, 0, 0}
1097 18 equemene
};
1098 18 equemene
static int __Pyx_InitCachedBuiltins(void) {
1099 18 equemene
  #if PY_MAJOR_VERSION >= 3
1100 18 equemene
  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1101 18 equemene
  #else
1102 18 equemene
  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1103 18 equemene
  #endif
1104 18 equemene
  return 0;
1105 18 equemene
  __pyx_L1_error:;
1106 18 equemene
  return -1;
1107 18 equemene
}
1108 18 equemene
1109 18 equemene
static int __Pyx_InitCachedConstants(void) {
1110 18 equemene
  __Pyx_RefNannyDeclarations
1111 18 equemene
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants");
1112 18 equemene
  __Pyx_RefNannyFinishContext();
1113 18 equemene
  return 0;
1114 18 equemene
}
1115 18 equemene
1116 18 equemene
static int __Pyx_InitGlobals(void) {
1117 18 equemene
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
1118 18 equemene
  __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;};
1119 18 equemene
  __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;};
1120 18 equemene
  __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;};
1121 18 equemene
  return 0;
1122 18 equemene
  __pyx_L1_error:;
1123 18 equemene
  return -1;
1124 18 equemene
}
1125 18 equemene
1126 18 equemene
#if PY_MAJOR_VERSION < 3
1127 18 equemene
PyMODINIT_FUNC initMetropolis(void); /*proto*/
1128 18 equemene
PyMODINIT_FUNC initMetropolis(void)
1129 18 equemene
#else
1130 18 equemene
PyMODINIT_FUNC PyInit_Metropolis(void); /*proto*/
1131 18 equemene
PyMODINIT_FUNC PyInit_Metropolis(void)
1132 18 equemene
#endif
1133 18 equemene
{
1134 18 equemene
  PyObject *__pyx_t_1 = NULL;
1135 18 equemene
  PyObject *__pyx_t_2 = NULL;
1136 18 equemene
  __Pyx_RefNannyDeclarations
1137 18 equemene
  #if CYTHON_REFNANNY
1138 18 equemene
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
1139 18 equemene
  if (!__Pyx_RefNanny) {
1140 18 equemene
      PyErr_Clear();
1141 18 equemene
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
1142 18 equemene
      if (!__Pyx_RefNanny)
1143 18 equemene
          Py_FatalError("failed to import 'refnanny' module");
1144 18 equemene
  }
1145 18 equemene
  #endif
1146 18 equemene
  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_Metropolis(void)");
1147 18 equemene
  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1148 18 equemene
  __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;}
1149 18 equemene
  __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;}
1150 18 equemene
  #ifdef __pyx_binding_PyCFunctionType_USED
1151 18 equemene
  if (__pyx_binding_PyCFunctionType_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1152 18 equemene
  #endif
1153 18 equemene
  /*--- Library function declarations ---*/
1154 18 equemene
  /*--- Threads initialization code ---*/
1155 18 equemene
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
1156 18 equemene
  #ifdef WITH_THREAD /* Python build with threading support? */
1157 18 equemene
  PyEval_InitThreads();
1158 18 equemene
  #endif
1159 18 equemene
  #endif
1160 18 equemene
  /*--- Module creation code ---*/
1161 18 equemene
  #if PY_MAJOR_VERSION < 3
1162 18 equemene
  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("Metropolis"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
1163 18 equemene
  #else
1164 18 equemene
  __pyx_m = PyModule_Create(&__pyx_moduledef);
1165 18 equemene
  #endif
1166 18 equemene
  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
1167 18 equemene
  #if PY_MAJOR_VERSION < 3
1168 18 equemene
  Py_INCREF(__pyx_m);
1169 18 equemene
  #endif
1170 18 equemene
  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
1171 18 equemene
  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
1172 18 equemene
  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
1173 18 equemene
  /*--- Initialize various global constants etc. ---*/
1174 18 equemene
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1175 18 equemene
  if (__pyx_module_is_main_Metropolis) {
1176 18 equemene
    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;};
1177 18 equemene
  }
1178 18 equemene
  /*--- Builtin init code ---*/
1179 18 equemene
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1180 18 equemene
  /*--- Constants init code ---*/
1181 18 equemene
  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1182 18 equemene
  /*--- Global init code ---*/
1183 18 equemene
  /*--- Variable export code ---*/
1184 18 equemene
  /*--- Function export code ---*/
1185 18 equemene
  /*--- Type init code ---*/
1186 18 equemene
  /*--- Type import code ---*/
1187 18 equemene
  /*--- Variable import code ---*/
1188 18 equemene
  /*--- Function import code ---*/
1189 18 equemene
  /*--- Execution code ---*/
1190 18 equemene
1191 18 equemene
  /* "Metropolis.pyx":7
1192 18 equemene
 * # CC BY-NC-SA 2011 : <emmanuel.quemener@ens-lyon.fr>
1193 18 equemene
 *
1194 18 equemene
 * import sys             # <<<<<<<<<<<<<<
1195 18 equemene
 * import numpy
1196 18 equemene
 * from PIL import Image
1197 18 equemene
 */
1198 18 equemene
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1199 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1200 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1201 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1202 18 equemene
1203 18 equemene
  /* "Metropolis.pyx":8
1204 18 equemene
 *
1205 18 equemene
 * import sys
1206 18 equemene
 * import numpy             # <<<<<<<<<<<<<<
1207 18 equemene
 * from PIL import Image
1208 18 equemene
 * from math import exp
1209 18 equemene
 */
1210 18 equemene
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1211 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1212 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1213 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1214 18 equemene
1215 18 equemene
  /* "Metropolis.pyx":9
1216 18 equemene
 * import sys
1217 18 equemene
 * import numpy
1218 18 equemene
 * from PIL import Image             # <<<<<<<<<<<<<<
1219 18 equemene
 * from math import exp
1220 18 equemene
 * from random import random
1221 18 equemene
 */
1222 18 equemene
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1223 18 equemene
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
1224 18 equemene
  __Pyx_INCREF(((PyObject *)__pyx_n_s__Image));
1225 18 equemene
  PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__Image));
1226 18 equemene
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__Image));
1227 18 equemene
  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__PIL), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1228 18 equemene
  __Pyx_GOTREF(__pyx_t_2);
1229 18 equemene
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
1230 18 equemene
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__Image); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1231 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1232 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Image, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1233 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1234 18 equemene
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1235 18 equemene
1236 18 equemene
  /* "Metropolis.pyx":10
1237 18 equemene
 * import numpy
1238 18 equemene
 * from PIL import Image
1239 18 equemene
 * from math import exp             # <<<<<<<<<<<<<<
1240 18 equemene
 * from random import random
1241 18 equemene
 * import time
1242 18 equemene
 */
1243 18 equemene
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1244 18 equemene
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1245 18 equemene
  __Pyx_INCREF(((PyObject *)__pyx_n_s__exp));
1246 18 equemene
  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__exp));
1247 18 equemene
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__exp));
1248 18 equemene
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__math), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1249 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1250 18 equemene
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
1251 18 equemene
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__exp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1252 18 equemene
  __Pyx_GOTREF(__pyx_t_2);
1253 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__exp, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1254 18 equemene
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1255 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1256 18 equemene
1257 18 equemene
  /* "Metropolis.pyx":11
1258 18 equemene
 * from PIL import Image
1259 18 equemene
 * from math import exp
1260 18 equemene
 * from random import random             # <<<<<<<<<<<<<<
1261 18 equemene
 * import time
1262 18 equemene
 * import getopt
1263 18 equemene
 */
1264 18 equemene
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1265 18 equemene
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
1266 18 equemene
  __Pyx_INCREF(((PyObject *)__pyx_n_s__random));
1267 18 equemene
  PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__random));
1268 18 equemene
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__random));
1269 18 equemene
  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__random), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1270 18 equemene
  __Pyx_GOTREF(__pyx_t_2);
1271 18 equemene
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
1272 18 equemene
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__random); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1273 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1274 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__random, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1275 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1276 18 equemene
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1277 18 equemene
1278 18 equemene
  /* "Metropolis.pyx":12
1279 18 equemene
 * from math import exp
1280 18 equemene
 * from random import random
1281 18 equemene
 * import time             # <<<<<<<<<<<<<<
1282 18 equemene
 * import getopt
1283 18 equemene
 * import matplotlib.pyplot as plt
1284 18 equemene
 */
1285 18 equemene
  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__time), 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1286 18 equemene
  __Pyx_GOTREF(__pyx_t_2);
1287 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__time, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1288 18 equemene
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1289 18 equemene
1290 18 equemene
  /* "Metropolis.pyx":13
1291 18 equemene
 * from random import random
1292 18 equemene
 * import time
1293 18 equemene
 * import getopt             # <<<<<<<<<<<<<<
1294 18 equemene
 * import matplotlib.pyplot as plt
1295 18 equemene
 * import Metropolis
1296 18 equemene
 */
1297 18 equemene
  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__getopt), 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1298 18 equemene
  __Pyx_GOTREF(__pyx_t_2);
1299 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__getopt, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1300 18 equemene
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1301 18 equemene
1302 18 equemene
  /* "Metropolis.pyx":14
1303 18 equemene
 * import time
1304 18 equemene
 * import getopt
1305 18 equemene
 * import matplotlib.pyplot as plt             # <<<<<<<<<<<<<<
1306 18 equemene
 * import Metropolis
1307 18 equemene
 *
1308 18 equemene
 */
1309 18 equemene
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1310 18 equemene
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1311 18 equemene
  __Pyx_INCREF(((PyObject *)__pyx_n_s_2));
1312 18 equemene
  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_2));
1313 18 equemene
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_2));
1314 18 equemene
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_1), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1315 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1316 18 equemene
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
1317 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__plt, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1318 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1319 18 equemene
1320 18 equemene
  /* "Metropolis.pyx":15
1321 18 equemene
 * import getopt
1322 18 equemene
 * import matplotlib.pyplot as plt
1323 18 equemene
 * import Metropolis             # <<<<<<<<<<<<<<
1324 18 equemene
 *
1325 18 equemene
 * def Metropolis(sigma,J,B,T,iterations):
1326 18 equemene
 */
1327 18 equemene
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__Metropolis), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1328 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1329 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Metropolis, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1330 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1331 18 equemene
1332 18 equemene
  /* "Metropolis.pyx":17
1333 18 equemene
 * import Metropolis
1334 18 equemene
 *
1335 18 equemene
 * def Metropolis(sigma,J,B,T,iterations):             # <<<<<<<<<<<<<<
1336 18 equemene
 *     start=time.time()
1337 18 equemene
 *
1338 18 equemene
 */
1339 18 equemene
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_10Metropolis_Metropolis, NULL, __pyx_n_s__Metropolis); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1340 18 equemene
  __Pyx_GOTREF(__pyx_t_1);
1341 18 equemene
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Metropolis, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1342 18 equemene
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1343 18 equemene
1344 18 equemene
  /* "Metropolis.pyx":1
1345 18 equemene
 * #!/usr/bin/env python             # <<<<<<<<<<<<<<
1346 18 equemene
 * #
1347 18 equemene
 * # Ising2D model in serial mode
1348 18 equemene
 */
1349 18 equemene
  __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;}
1350 18 equemene
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
1351 18 equemene
  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;}
1352 18 equemene
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
1353 18 equemene
  goto __pyx_L0;
1354 18 equemene
  __pyx_L1_error:;
1355 18 equemene
  __Pyx_XDECREF(__pyx_t_1);
1356 18 equemene
  __Pyx_XDECREF(__pyx_t_2);
1357 18 equemene
  if (__pyx_m) {
1358 18 equemene
    __Pyx_AddTraceback("init Metropolis", __pyx_clineno, __pyx_lineno, __pyx_filename);
1359 18 equemene
    Py_DECREF(__pyx_m); __pyx_m = 0;
1360 18 equemene
  } else if (!PyErr_Occurred()) {
1361 18 equemene
    PyErr_SetString(PyExc_ImportError, "init Metropolis");
1362 18 equemene
  }
1363 18 equemene
  __pyx_L0:;
1364 18 equemene
  __Pyx_RefNannyFinishContext();
1365 18 equemene
  #if PY_MAJOR_VERSION < 3
1366 18 equemene
  return;
1367 18 equemene
  #else
1368 18 equemene
  return __pyx_m;
1369 18 equemene
  #endif
1370 18 equemene
}
1371 18 equemene
1372 18 equemene
/* Runtime support code */
1373 18 equemene
1374 18 equemene
#if CYTHON_REFNANNY
1375 18 equemene
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
1376 18 equemene
    PyObject *m = NULL, *p = NULL;
1377 18 equemene
    void *r = NULL;
1378 18 equemene
    m = PyImport_ImportModule((char *)modname);
1379 18 equemene
    if (!m) goto end;
1380 18 equemene
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
1381 18 equemene
    if (!p) goto end;
1382 18 equemene
    r = PyLong_AsVoidPtr(p);
1383 18 equemene
end:
1384 18 equemene
    Py_XDECREF(p);
1385 18 equemene
    Py_XDECREF(m);
1386 18 equemene
    return (__Pyx_RefNannyAPIStruct *)r;
1387 18 equemene
}
1388 18 equemene
#endif /* CYTHON_REFNANNY */
1389 18 equemene
1390 18 equemene
static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
1391 18 equemene
    PyObject *result;
1392 18 equemene
    result = PyObject_GetAttr(dict, name);
1393 18 equemene
    if (!result) {
1394 18 equemene
        if (dict != __pyx_b) {
1395 18 equemene
            PyErr_Clear();
1396 18 equemene
            result = PyObject_GetAttr(__pyx_b, name);
1397 18 equemene
        }
1398 18 equemene
        if (!result) {
1399 18 equemene
            PyErr_SetObject(PyExc_NameError, name);
1400 18 equemene
        }
1401 18 equemene
    }
1402 18 equemene
    return result;
1403 18 equemene
}
1404 18 equemene
1405 18 equemene
static void __Pyx_RaiseArgtupleInvalid(
1406 18 equemene
    const char* func_name,
1407 18 equemene
    int exact,
1408 18 equemene
    Py_ssize_t num_min,
1409 18 equemene
    Py_ssize_t num_max,
1410 18 equemene
    Py_ssize_t num_found)
1411 18 equemene
{
1412 18 equemene
    Py_ssize_t num_expected;
1413 18 equemene
    const char *more_or_less;
1414 18 equemene
1415 18 equemene
    if (num_found < num_min) {
1416 18 equemene
        num_expected = num_min;
1417 18 equemene
        more_or_less = "at least";
1418 18 equemene
    } else {
1419 18 equemene
        num_expected = num_max;
1420 18 equemene
        more_or_less = "at most";
1421 18 equemene
    }
1422 18 equemene
    if (exact) {
1423 18 equemene
        more_or_less = "exactly";
1424 18 equemene
    }
1425 18 equemene
    PyErr_Format(PyExc_TypeError,
1426 18 equemene
                 "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)",
1427 18 equemene
                 func_name, more_or_less, num_expected,
1428 18 equemene
                 (num_expected == 1) ? "" : "s", num_found);
1429 18 equemene
}
1430 18 equemene
1431 18 equemene
static void __Pyx_RaiseDoubleKeywordsError(
1432 18 equemene
    const char* func_name,
1433 18 equemene
    PyObject* kw_name)
1434 18 equemene
{
1435 18 equemene
    PyErr_Format(PyExc_TypeError,
1436 18 equemene
        #if PY_MAJOR_VERSION >= 3
1437 18 equemene
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
1438 18 equemene
        #else
1439 18 equemene
        "%s() got multiple values for keyword argument '%s'", func_name,
1440 18 equemene
        PyString_AS_STRING(kw_name));
1441 18 equemene
        #endif
1442 18 equemene
}
1443 18 equemene
1444 18 equemene
static int __Pyx_ParseOptionalKeywords(
1445 18 equemene
    PyObject *kwds,
1446 18 equemene
    PyObject **argnames[],
1447 18 equemene
    PyObject *kwds2,
1448 18 equemene
    PyObject *values[],
1449 18 equemene
    Py_ssize_t num_pos_args,
1450 18 equemene
    const char* function_name)
1451 18 equemene
{
1452 18 equemene
    PyObject *key = 0, *value = 0;
1453 18 equemene
    Py_ssize_t pos = 0;
1454 18 equemene
    PyObject*** name;
1455 18 equemene
    PyObject*** first_kw_arg = argnames + num_pos_args;
1456 18 equemene
1457 18 equemene
    while (PyDict_Next(kwds, &pos, &key, &value)) {
1458 18 equemene
        name = first_kw_arg;
1459 18 equemene
        while (*name && (**name != key)) name++;
1460 18 equemene
        if (*name) {
1461 18 equemene
            values[name-argnames] = value;
1462 18 equemene
        } else {
1463 18 equemene
            #if PY_MAJOR_VERSION < 3
1464 18 equemene
            if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
1465 18 equemene
            #else
1466 18 equemene
            if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) {
1467 18 equemene
            #endif
1468 18 equemene
                goto invalid_keyword_type;
1469 18 equemene
            } else {
1470 18 equemene
                for (name = first_kw_arg; *name; name++) {
1471 18 equemene
                    #if PY_MAJOR_VERSION >= 3
1472 18 equemene
                    if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
1473 18 equemene
                        PyUnicode_Compare(**name, key) == 0) break;
1474 18 equemene
                    #else
1475 18 equemene
                    if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
1476 18 equemene
                        _PyString_Eq(**name, key)) break;
1477 18 equemene
                    #endif
1478 18 equemene
                }
1479 18 equemene
                if (*name) {
1480 18 equemene
                    values[name-argnames] = value;
1481 18 equemene
                } else {
1482 18 equemene
                    /* unexpected keyword found */
1483 18 equemene
                    for (name=argnames; name != first_kw_arg; name++) {
1484 18 equemene
                        if (**name == key) goto arg_passed_twice;
1485 18 equemene
                        #if PY_MAJOR_VERSION >= 3
1486 18 equemene
                        if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
1487 18 equemene
                            PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
1488 18 equemene
                        #else
1489 18 equemene
                        if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
1490 18 equemene
                            _PyString_Eq(**name, key)) goto arg_passed_twice;
1491 18 equemene
                        #endif
1492 18 equemene
                    }
1493 18 equemene
                    if (kwds2) {
1494 18 equemene
                        if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
1495 18 equemene
                    } else {
1496 18 equemene
                        goto invalid_keyword;
1497 18 equemene
                    }
1498 18 equemene
                }
1499 18 equemene
            }
1500 18 equemene
        }
1501 18 equemene
    }
1502 18 equemene
    return 0;
1503 18 equemene
arg_passed_twice:
1504 18 equemene
    __Pyx_RaiseDoubleKeywordsError(function_name, **name);
1505 18 equemene
    goto bad;
1506 18 equemene
invalid_keyword_type:
1507 18 equemene
    PyErr_Format(PyExc_TypeError,
1508 18 equemene
        "%s() keywords must be strings", function_name);
1509 18 equemene
    goto bad;
1510 18 equemene
invalid_keyword:
1511 18 equemene
    PyErr_Format(PyExc_TypeError,
1512 18 equemene
    #if PY_MAJOR_VERSION < 3
1513 18 equemene
        "%s() got an unexpected keyword argument '%s'",
1514 18 equemene
        function_name, PyString_AsString(key));
1515 18 equemene
    #else
1516 18 equemene
        "%s() got an unexpected keyword argument '%U'",
1517 18 equemene
        function_name, key);
1518 18 equemene
    #endif
1519 18 equemene
bad:
1520 18 equemene
    return -1;
1521 18 equemene
}
1522 18 equemene
1523 18 equemene
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
1524 18 equemene
    PyErr_Format(PyExc_ValueError,
1525 18 equemene
                 "need more than %"PY_FORMAT_SIZE_T"d value%s to unpack",
1526 18 equemene
                 index, (index == 1) ? "" : "s");
1527 18 equemene
}
1528 18 equemene
1529 18 equemene
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
1530 18 equemene
    PyErr_Format(PyExc_ValueError,
1531 18 equemene
                 "too many values to unpack (expected %"PY_FORMAT_SIZE_T"d)", expected);
1532 18 equemene
}
1533 18 equemene
1534 18 equemene
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
1535 18 equemene
    if (unlikely(retval)) {
1536 18 equemene
        Py_DECREF(retval);
1537 18 equemene
        __Pyx_RaiseTooManyValuesError(expected);
1538 18 equemene
        return -1;
1539 18 equemene
    } else if (PyErr_Occurred()) {
1540 18 equemene
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
1541 18 equemene
            PyErr_Clear();
1542 18 equemene
            return 0;
1543 18 equemene
        } else {
1544 18 equemene
            return -1;
1545 18 equemene
        }
1546 18 equemene
    }
1547 18 equemene
    return 0;
1548 18 equemene
}
1549 18 equemene
1550 18 equemene
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) {
1551 18 equemene
    PyObject *py_import = 0;
1552 18 equemene
    PyObject *empty_list = 0;
1553 18 equemene
    PyObject *module = 0;
1554 18 equemene
    PyObject *global_dict = 0;
1555 18 equemene
    PyObject *empty_dict = 0;
1556 18 equemene
    PyObject *list;
1557 18 equemene
    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
1558 18 equemene
    if (!py_import)
1559 18 equemene
        goto bad;
1560 18 equemene
    if (from_list)
1561 18 equemene
        list = from_list;
1562 18 equemene
    else {
1563 18 equemene
        empty_list = PyList_New(0);
1564 18 equemene
        if (!empty_list)
1565 18 equemene
            goto bad;
1566 18 equemene
        list = empty_list;
1567 18 equemene
    }
1568 18 equemene
    global_dict = PyModule_GetDict(__pyx_m);
1569 18 equemene
    if (!global_dict)
1570 18 equemene
        goto bad;
1571 18 equemene
    empty_dict = PyDict_New();
1572 18 equemene
    if (!empty_dict)
1573 18 equemene
        goto bad;
1574 18 equemene
    #if PY_VERSION_HEX >= 0x02050000
1575 18 equemene
    {
1576 18 equemene
        PyObject *py_level = PyInt_FromLong(level);
1577 18 equemene
        if (!py_level)
1578 18 equemene
            goto bad;
1579 18 equemene
        module = PyObject_CallFunctionObjArgs(py_import,
1580 18 equemene
            name, global_dict, empty_dict, list, py_level, NULL);
1581 18 equemene
        Py_DECREF(py_level);
1582 18 equemene
    }
1583 18 equemene
    #else
1584 18 equemene
    if (level>0) {
1585 18 equemene
        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
1586 18 equemene
        goto bad;
1587 18 equemene
    }
1588 18 equemene
    module = PyObject_CallFunctionObjArgs(py_import,
1589 18 equemene
        name, global_dict, empty_dict, list, NULL);
1590 18 equemene
    #endif
1591 18 equemene
bad:
1592 18 equemene
    Py_XDECREF(empty_list);
1593 18 equemene
    Py_XDECREF(py_import);
1594 18 equemene
    Py_XDECREF(empty_dict);
1595 18 equemene
    return module;
1596 18 equemene
}
1597 18 equemene
1598 18 equemene
static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
1599 18 equemene
    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
1600 18 equemene
    const int is_unsigned = neg_one > const_zero;
1601 18 equemene
    if (sizeof(unsigned char) < sizeof(long)) {
1602 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1603 18 equemene
        if (unlikely(val != (long)(unsigned char)val)) {
1604 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1605 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1606 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1607 18 equemene
                    "can't convert negative value to unsigned char" :
1608 18 equemene
                    "value too large to convert to unsigned char");
1609 18 equemene
            }
1610 18 equemene
            return (unsigned char)-1;
1611 18 equemene
        }
1612 18 equemene
        return (unsigned char)val;
1613 18 equemene
    }
1614 18 equemene
    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
1615 18 equemene
}
1616 18 equemene
1617 18 equemene
static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
1618 18 equemene
    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
1619 18 equemene
    const int is_unsigned = neg_one > const_zero;
1620 18 equemene
    if (sizeof(unsigned short) < sizeof(long)) {
1621 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1622 18 equemene
        if (unlikely(val != (long)(unsigned short)val)) {
1623 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1624 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1625 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1626 18 equemene
                    "can't convert negative value to unsigned short" :
1627 18 equemene
                    "value too large to convert to unsigned short");
1628 18 equemene
            }
1629 18 equemene
            return (unsigned short)-1;
1630 18 equemene
        }
1631 18 equemene
        return (unsigned short)val;
1632 18 equemene
    }
1633 18 equemene
    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
1634 18 equemene
}
1635 18 equemene
1636 18 equemene
static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
1637 18 equemene
    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
1638 18 equemene
    const int is_unsigned = neg_one > const_zero;
1639 18 equemene
    if (sizeof(unsigned int) < sizeof(long)) {
1640 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1641 18 equemene
        if (unlikely(val != (long)(unsigned int)val)) {
1642 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1643 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1644 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1645 18 equemene
                    "can't convert negative value to unsigned int" :
1646 18 equemene
                    "value too large to convert to unsigned int");
1647 18 equemene
            }
1648 18 equemene
            return (unsigned int)-1;
1649 18 equemene
        }
1650 18 equemene
        return (unsigned int)val;
1651 18 equemene
    }
1652 18 equemene
    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
1653 18 equemene
}
1654 18 equemene
1655 18 equemene
static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
1656 18 equemene
    const char neg_one = (char)-1, const_zero = 0;
1657 18 equemene
    const int is_unsigned = neg_one > const_zero;
1658 18 equemene
    if (sizeof(char) < sizeof(long)) {
1659 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1660 18 equemene
        if (unlikely(val != (long)(char)val)) {
1661 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1662 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1663 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1664 18 equemene
                    "can't convert negative value to char" :
1665 18 equemene
                    "value too large to convert to char");
1666 18 equemene
            }
1667 18 equemene
            return (char)-1;
1668 18 equemene
        }
1669 18 equemene
        return (char)val;
1670 18 equemene
    }
1671 18 equemene
    return (char)__Pyx_PyInt_AsLong(x);
1672 18 equemene
}
1673 18 equemene
1674 18 equemene
static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
1675 18 equemene
    const short neg_one = (short)-1, const_zero = 0;
1676 18 equemene
    const int is_unsigned = neg_one > const_zero;
1677 18 equemene
    if (sizeof(short) < sizeof(long)) {
1678 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1679 18 equemene
        if (unlikely(val != (long)(short)val)) {
1680 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1681 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1682 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1683 18 equemene
                    "can't convert negative value to short" :
1684 18 equemene
                    "value too large to convert to short");
1685 18 equemene
            }
1686 18 equemene
            return (short)-1;
1687 18 equemene
        }
1688 18 equemene
        return (short)val;
1689 18 equemene
    }
1690 18 equemene
    return (short)__Pyx_PyInt_AsLong(x);
1691 18 equemene
}
1692 18 equemene
1693 18 equemene
static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
1694 18 equemene
    const int neg_one = (int)-1, const_zero = 0;
1695 18 equemene
    const int is_unsigned = neg_one > const_zero;
1696 18 equemene
    if (sizeof(int) < sizeof(long)) {
1697 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1698 18 equemene
        if (unlikely(val != (long)(int)val)) {
1699 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1700 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1701 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1702 18 equemene
                    "can't convert negative value to int" :
1703 18 equemene
                    "value too large to convert to int");
1704 18 equemene
            }
1705 18 equemene
            return (int)-1;
1706 18 equemene
        }
1707 18 equemene
        return (int)val;
1708 18 equemene
    }
1709 18 equemene
    return (int)__Pyx_PyInt_AsLong(x);
1710 18 equemene
}
1711 18 equemene
1712 18 equemene
static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
1713 18 equemene
    const signed char neg_one = (signed char)-1, const_zero = 0;
1714 18 equemene
    const int is_unsigned = neg_one > const_zero;
1715 18 equemene
    if (sizeof(signed char) < sizeof(long)) {
1716 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1717 18 equemene
        if (unlikely(val != (long)(signed char)val)) {
1718 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1719 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1720 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1721 18 equemene
                    "can't convert negative value to signed char" :
1722 18 equemene
                    "value too large to convert to signed char");
1723 18 equemene
            }
1724 18 equemene
            return (signed char)-1;
1725 18 equemene
        }
1726 18 equemene
        return (signed char)val;
1727 18 equemene
    }
1728 18 equemene
    return (signed char)__Pyx_PyInt_AsSignedLong(x);
1729 18 equemene
}
1730 18 equemene
1731 18 equemene
static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
1732 18 equemene
    const signed short neg_one = (signed short)-1, const_zero = 0;
1733 18 equemene
    const int is_unsigned = neg_one > const_zero;
1734 18 equemene
    if (sizeof(signed short) < sizeof(long)) {
1735 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1736 18 equemene
        if (unlikely(val != (long)(signed short)val)) {
1737 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1738 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1739 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1740 18 equemene
                    "can't convert negative value to signed short" :
1741 18 equemene
                    "value too large to convert to signed short");
1742 18 equemene
            }
1743 18 equemene
            return (signed short)-1;
1744 18 equemene
        }
1745 18 equemene
        return (signed short)val;
1746 18 equemene
    }
1747 18 equemene
    return (signed short)__Pyx_PyInt_AsSignedLong(x);
1748 18 equemene
}
1749 18 equemene
1750 18 equemene
static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
1751 18 equemene
    const signed int neg_one = (signed int)-1, const_zero = 0;
1752 18 equemene
    const int is_unsigned = neg_one > const_zero;
1753 18 equemene
    if (sizeof(signed int) < sizeof(long)) {
1754 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1755 18 equemene
        if (unlikely(val != (long)(signed int)val)) {
1756 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1757 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1758 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1759 18 equemene
                    "can't convert negative value to signed int" :
1760 18 equemene
                    "value too large to convert to signed int");
1761 18 equemene
            }
1762 18 equemene
            return (signed int)-1;
1763 18 equemene
        }
1764 18 equemene
        return (signed int)val;
1765 18 equemene
    }
1766 18 equemene
    return (signed int)__Pyx_PyInt_AsSignedLong(x);
1767 18 equemene
}
1768 18 equemene
1769 18 equemene
static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
1770 18 equemene
    const int neg_one = (int)-1, const_zero = 0;
1771 18 equemene
    const int is_unsigned = neg_one > const_zero;
1772 18 equemene
    if (sizeof(int) < sizeof(long)) {
1773 18 equemene
        long val = __Pyx_PyInt_AsLong(x);
1774 18 equemene
        if (unlikely(val != (long)(int)val)) {
1775 18 equemene
            if (!unlikely(val == -1 && PyErr_Occurred())) {
1776 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1777 18 equemene
                    (is_unsigned && unlikely(val < 0)) ?
1778 18 equemene
                    "can't convert negative value to int" :
1779 18 equemene
                    "value too large to convert to int");
1780 18 equemene
            }
1781 18 equemene
            return (int)-1;
1782 18 equemene
        }
1783 18 equemene
        return (int)val;
1784 18 equemene
    }
1785 18 equemene
    return (int)__Pyx_PyInt_AsLong(x);
1786 18 equemene
}
1787 18 equemene
1788 18 equemene
static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
1789 18 equemene
    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
1790 18 equemene
    const int is_unsigned = neg_one > const_zero;
1791 18 equemene
#if PY_VERSION_HEX < 0x03000000
1792 18 equemene
    if (likely(PyInt_Check(x))) {
1793 18 equemene
        long val = PyInt_AS_LONG(x);
1794 18 equemene
        if (is_unsigned && unlikely(val < 0)) {
1795 18 equemene
            PyErr_SetString(PyExc_OverflowError,
1796 18 equemene
                            "can't convert negative value to unsigned long");
1797 18 equemene
            return (unsigned long)-1;
1798 18 equemene
        }
1799 18 equemene
        return (unsigned long)val;
1800 18 equemene
    } else
1801 18 equemene
#endif
1802 18 equemene
    if (likely(PyLong_Check(x))) {
1803 18 equemene
        if (is_unsigned) {
1804 18 equemene
            if (unlikely(Py_SIZE(x) < 0)) {
1805 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1806 18 equemene
                                "can't convert negative value to unsigned long");
1807 18 equemene
                return (unsigned long)-1;
1808 18 equemene
            }
1809 18 equemene
            return (unsigned long)PyLong_AsUnsignedLong(x);
1810 18 equemene
        } else {
1811 18 equemene
            return (unsigned long)PyLong_AsLong(x);
1812 18 equemene
        }
1813 18 equemene
    } else {
1814 18 equemene
        unsigned long val;
1815 18 equemene
        PyObject *tmp = __Pyx_PyNumber_Int(x);
1816 18 equemene
        if (!tmp) return (unsigned long)-1;
1817 18 equemene
        val = __Pyx_PyInt_AsUnsignedLong(tmp);
1818 18 equemene
        Py_DECREF(tmp);
1819 18 equemene
        return val;
1820 18 equemene
    }
1821 18 equemene
}
1822 18 equemene
1823 18 equemene
static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
1824 18 equemene
    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
1825 18 equemene
    const int is_unsigned = neg_one > const_zero;
1826 18 equemene
#if PY_VERSION_HEX < 0x03000000
1827 18 equemene
    if (likely(PyInt_Check(x))) {
1828 18 equemene
        long val = PyInt_AS_LONG(x);
1829 18 equemene
        if (is_unsigned && unlikely(val < 0)) {
1830 18 equemene
            PyErr_SetString(PyExc_OverflowError,
1831 18 equemene
                            "can't convert negative value to unsigned PY_LONG_LONG");
1832 18 equemene
            return (unsigned PY_LONG_LONG)-1;
1833 18 equemene
        }
1834 18 equemene
        return (unsigned PY_LONG_LONG)val;
1835 18 equemene
    } else
1836 18 equemene
#endif
1837 18 equemene
    if (likely(PyLong_Check(x))) {
1838 18 equemene
        if (is_unsigned) {
1839 18 equemene
            if (unlikely(Py_SIZE(x) < 0)) {
1840 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1841 18 equemene
                                "can't convert negative value to unsigned PY_LONG_LONG");
1842 18 equemene
                return (unsigned PY_LONG_LONG)-1;
1843 18 equemene
            }
1844 18 equemene
            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
1845 18 equemene
        } else {
1846 18 equemene
            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
1847 18 equemene
        }
1848 18 equemene
    } else {
1849 18 equemene
        unsigned PY_LONG_LONG val;
1850 18 equemene
        PyObject *tmp = __Pyx_PyNumber_Int(x);
1851 18 equemene
        if (!tmp) return (unsigned PY_LONG_LONG)-1;
1852 18 equemene
        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
1853 18 equemene
        Py_DECREF(tmp);
1854 18 equemene
        return val;
1855 18 equemene
    }
1856 18 equemene
}
1857 18 equemene
1858 18 equemene
static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
1859 18 equemene
    const long neg_one = (long)-1, const_zero = 0;
1860 18 equemene
    const int is_unsigned = neg_one > const_zero;
1861 18 equemene
#if PY_VERSION_HEX < 0x03000000
1862 18 equemene
    if (likely(PyInt_Check(x))) {
1863 18 equemene
        long val = PyInt_AS_LONG(x);
1864 18 equemene
        if (is_unsigned && unlikely(val < 0)) {
1865 18 equemene
            PyErr_SetString(PyExc_OverflowError,
1866 18 equemene
                            "can't convert negative value to long");
1867 18 equemene
            return (long)-1;
1868 18 equemene
        }
1869 18 equemene
        return (long)val;
1870 18 equemene
    } else
1871 18 equemene
#endif
1872 18 equemene
    if (likely(PyLong_Check(x))) {
1873 18 equemene
        if (is_unsigned) {
1874 18 equemene
            if (unlikely(Py_SIZE(x) < 0)) {
1875 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1876 18 equemene
                                "can't convert negative value to long");
1877 18 equemene
                return (long)-1;
1878 18 equemene
            }
1879 18 equemene
            return (long)PyLong_AsUnsignedLong(x);
1880 18 equemene
        } else {
1881 18 equemene
            return (long)PyLong_AsLong(x);
1882 18 equemene
        }
1883 18 equemene
    } else {
1884 18 equemene
        long val;
1885 18 equemene
        PyObject *tmp = __Pyx_PyNumber_Int(x);
1886 18 equemene
        if (!tmp) return (long)-1;
1887 18 equemene
        val = __Pyx_PyInt_AsLong(tmp);
1888 18 equemene
        Py_DECREF(tmp);
1889 18 equemene
        return val;
1890 18 equemene
    }
1891 18 equemene
}
1892 18 equemene
1893 18 equemene
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
1894 18 equemene
    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
1895 18 equemene
    const int is_unsigned = neg_one > const_zero;
1896 18 equemene
#if PY_VERSION_HEX < 0x03000000
1897 18 equemene
    if (likely(PyInt_Check(x))) {
1898 18 equemene
        long val = PyInt_AS_LONG(x);
1899 18 equemene
        if (is_unsigned && unlikely(val < 0)) {
1900 18 equemene
            PyErr_SetString(PyExc_OverflowError,
1901 18 equemene
                            "can't convert negative value to PY_LONG_LONG");
1902 18 equemene
            return (PY_LONG_LONG)-1;
1903 18 equemene
        }
1904 18 equemene
        return (PY_LONG_LONG)val;
1905 18 equemene
    } else
1906 18 equemene
#endif
1907 18 equemene
    if (likely(PyLong_Check(x))) {
1908 18 equemene
        if (is_unsigned) {
1909 18 equemene
            if (unlikely(Py_SIZE(x) < 0)) {
1910 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1911 18 equemene
                                "can't convert negative value to PY_LONG_LONG");
1912 18 equemene
                return (PY_LONG_LONG)-1;
1913 18 equemene
            }
1914 18 equemene
            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
1915 18 equemene
        } else {
1916 18 equemene
            return (PY_LONG_LONG)PyLong_AsLongLong(x);
1917 18 equemene
        }
1918 18 equemene
    } else {
1919 18 equemene
        PY_LONG_LONG val;
1920 18 equemene
        PyObject *tmp = __Pyx_PyNumber_Int(x);
1921 18 equemene
        if (!tmp) return (PY_LONG_LONG)-1;
1922 18 equemene
        val = __Pyx_PyInt_AsLongLong(tmp);
1923 18 equemene
        Py_DECREF(tmp);
1924 18 equemene
        return val;
1925 18 equemene
    }
1926 18 equemene
}
1927 18 equemene
1928 18 equemene
static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
1929 18 equemene
    const signed long neg_one = (signed long)-1, const_zero = 0;
1930 18 equemene
    const int is_unsigned = neg_one > const_zero;
1931 18 equemene
#if PY_VERSION_HEX < 0x03000000
1932 18 equemene
    if (likely(PyInt_Check(x))) {
1933 18 equemene
        long val = PyInt_AS_LONG(x);
1934 18 equemene
        if (is_unsigned && unlikely(val < 0)) {
1935 18 equemene
            PyErr_SetString(PyExc_OverflowError,
1936 18 equemene
                            "can't convert negative value to signed long");
1937 18 equemene
            return (signed long)-1;
1938 18 equemene
        }
1939 18 equemene
        return (signed long)val;
1940 18 equemene
    } else
1941 18 equemene
#endif
1942 18 equemene
    if (likely(PyLong_Check(x))) {
1943 18 equemene
        if (is_unsigned) {
1944 18 equemene
            if (unlikely(Py_SIZE(x) < 0)) {
1945 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1946 18 equemene
                                "can't convert negative value to signed long");
1947 18 equemene
                return (signed long)-1;
1948 18 equemene
            }
1949 18 equemene
            return (signed long)PyLong_AsUnsignedLong(x);
1950 18 equemene
        } else {
1951 18 equemene
            return (signed long)PyLong_AsLong(x);
1952 18 equemene
        }
1953 18 equemene
    } else {
1954 18 equemene
        signed long val;
1955 18 equemene
        PyObject *tmp = __Pyx_PyNumber_Int(x);
1956 18 equemene
        if (!tmp) return (signed long)-1;
1957 18 equemene
        val = __Pyx_PyInt_AsSignedLong(tmp);
1958 18 equemene
        Py_DECREF(tmp);
1959 18 equemene
        return val;
1960 18 equemene
    }
1961 18 equemene
}
1962 18 equemene
1963 18 equemene
static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
1964 18 equemene
    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
1965 18 equemene
    const int is_unsigned = neg_one > const_zero;
1966 18 equemene
#if PY_VERSION_HEX < 0x03000000
1967 18 equemene
    if (likely(PyInt_Check(x))) {
1968 18 equemene
        long val = PyInt_AS_LONG(x);
1969 18 equemene
        if (is_unsigned && unlikely(val < 0)) {
1970 18 equemene
            PyErr_SetString(PyExc_OverflowError,
1971 18 equemene
                            "can't convert negative value to signed PY_LONG_LONG");
1972 18 equemene
            return (signed PY_LONG_LONG)-1;
1973 18 equemene
        }
1974 18 equemene
        return (signed PY_LONG_LONG)val;
1975 18 equemene
    } else
1976 18 equemene
#endif
1977 18 equemene
    if (likely(PyLong_Check(x))) {
1978 18 equemene
        if (is_unsigned) {
1979 18 equemene
            if (unlikely(Py_SIZE(x) < 0)) {
1980 18 equemene
                PyErr_SetString(PyExc_OverflowError,
1981 18 equemene
                                "can't convert negative value to signed PY_LONG_LONG");
1982 18 equemene
                return (signed PY_LONG_LONG)-1;
1983 18 equemene
            }
1984 18 equemene
            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
1985 18 equemene
        } else {
1986 18 equemene
            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
1987 18 equemene
        }
1988 18 equemene
    } else {
1989 18 equemene
        signed PY_LONG_LONG val;
1990 18 equemene
        PyObject *tmp = __Pyx_PyNumber_Int(x);
1991 18 equemene
        if (!tmp) return (signed PY_LONG_LONG)-1;
1992 18 equemene
        val = __Pyx_PyInt_AsSignedLongLong(tmp);
1993 18 equemene
        Py_DECREF(tmp);
1994 18 equemene
        return val;
1995 18 equemene
    }
1996 18 equemene
}
1997 18 equemene
1998 18 equemene
static int __Pyx_check_binary_version(void) {
1999 18 equemene
    char ctversion[4], rtversion[4];
2000 18 equemene
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
2001 18 equemene
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
2002 18 equemene
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
2003 18 equemene
        char message[200];
2004 18 equemene
        PyOS_snprintf(message, sizeof(message),
2005 18 equemene
                      "compiletime version %s of module '%.100s' "
2006 18 equemene
                      "does not match runtime version %s",
2007 18 equemene
                      ctversion, __Pyx_MODULE_NAME, rtversion);
2008 18 equemene
        #if PY_VERSION_HEX < 0x02050000
2009 18 equemene
        return PyErr_Warn(NULL, message);
2010 18 equemene
        #else
2011 18 equemene
        return PyErr_WarnEx(NULL, message, 1);
2012 18 equemene
        #endif
2013 18 equemene
    }
2014 18 equemene
    return 0;
2015 18 equemene
}
2016 18 equemene
2017 18 equemene
#include "compile.h"
2018 18 equemene
#include "frameobject.h"
2019 18 equemene
#include "traceback.h"
2020 18 equemene
2021 18 equemene
static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
2022 18 equemene
                               int __pyx_lineno, const char *__pyx_filename) {
2023 18 equemene
    PyObject *py_srcfile = 0;
2024 18 equemene
    PyObject *py_funcname = 0;
2025 18 equemene
    PyObject *py_globals = 0;
2026 18 equemene
    PyCodeObject *py_code = 0;
2027 18 equemene
    PyFrameObject *py_frame = 0;
2028 18 equemene
2029 18 equemene
    #if PY_MAJOR_VERSION < 3
2030 18 equemene
    py_srcfile = PyString_FromString(__pyx_filename);
2031 18 equemene
    #else
2032 18 equemene
    py_srcfile = PyUnicode_FromString(__pyx_filename);
2033 18 equemene
    #endif
2034 18 equemene
    if (!py_srcfile) goto bad;
2035 18 equemene
    if (__pyx_clineno) {
2036 18 equemene
        #if PY_MAJOR_VERSION < 3
2037 18 equemene
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
2038 18 equemene
        #else
2039 18 equemene
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
2040 18 equemene
        #endif
2041 18 equemene
    }
2042 18 equemene
    else {
2043 18 equemene
        #if PY_MAJOR_VERSION < 3
2044 18 equemene
        py_funcname = PyString_FromString(funcname);
2045 18 equemene
        #else
2046 18 equemene
        py_funcname = PyUnicode_FromString(funcname);
2047 18 equemene
        #endif
2048 18 equemene
    }
2049 18 equemene
    if (!py_funcname) goto bad;
2050 18 equemene
    py_globals = PyModule_GetDict(__pyx_m);
2051 18 equemene
    if (!py_globals) goto bad;
2052 18 equemene
    py_code = PyCode_New(
2053 18 equemene
        0,            /*int argcount,*/
2054 18 equemene
        #if PY_MAJOR_VERSION >= 3
2055 18 equemene
        0,            /*int kwonlyargcount,*/
2056 18 equemene
        #endif
2057 18 equemene
        0,            /*int nlocals,*/
2058 18 equemene
        0,            /*int stacksize,*/
2059 18 equemene
        0,            /*int flags,*/
2060 18 equemene
        __pyx_empty_bytes, /*PyObject *code,*/
2061 18 equemene
        __pyx_empty_tuple,  /*PyObject *consts,*/
2062 18 equemene
        __pyx_empty_tuple,  /*PyObject *names,*/
2063 18 equemene
        __pyx_empty_tuple,  /*PyObject *varnames,*/
2064 18 equemene
        __pyx_empty_tuple,  /*PyObject *freevars,*/
2065 18 equemene
        __pyx_empty_tuple,  /*PyObject *cellvars,*/
2066 18 equemene
        py_srcfile,   /*PyObject *filename,*/
2067 18 equemene
        py_funcname,  /*PyObject *name,*/
2068 18 equemene
        __pyx_lineno,   /*int firstlineno,*/
2069 18 equemene
        __pyx_empty_bytes  /*PyObject *lnotab*/
2070 18 equemene
    );
2071 18 equemene
    if (!py_code) goto bad;
2072 18 equemene
    py_frame = PyFrame_New(
2073 18 equemene
        PyThreadState_GET(), /*PyThreadState *tstate,*/
2074 18 equemene
        py_code,             /*PyCodeObject *code,*/
2075 18 equemene
        py_globals,          /*PyObject *globals,*/
2076 18 equemene
        0                    /*PyObject *locals*/
2077 18 equemene
    );
2078 18 equemene
    if (!py_frame) goto bad;
2079 18 equemene
    py_frame->f_lineno = __pyx_lineno;
2080 18 equemene
    PyTraceBack_Here(py_frame);
2081 18 equemene
bad:
2082 18 equemene
    Py_XDECREF(py_srcfile);
2083 18 equemene
    Py_XDECREF(py_funcname);
2084 18 equemene
    Py_XDECREF(py_code);
2085 18 equemene
    Py_XDECREF(py_frame);
2086 18 equemene
}
2087 18 equemene
2088 18 equemene
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
2089 18 equemene
    while (t->p) {
2090 18 equemene
        #if PY_MAJOR_VERSION < 3
2091 18 equemene
        if (t->is_unicode) {
2092 18 equemene
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
2093 18 equemene
        } else if (t->intern) {
2094 18 equemene
            *t->p = PyString_InternFromString(t->s);
2095 18 equemene
        } else {
2096 18 equemene
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
2097 18 equemene
        }
2098 18 equemene
        #else  /* Python 3+ has unicode identifiers */
2099 18 equemene
        if (t->is_unicode | t->is_str) {
2100 18 equemene
            if (t->intern) {
2101 18 equemene
                *t->p = PyUnicode_InternFromString(t->s);
2102 18 equemene
            } else if (t->encoding) {
2103 18 equemene
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
2104 18 equemene
            } else {
2105 18 equemene
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
2106 18 equemene
            }
2107 18 equemene
        } else {
2108 18 equemene
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
2109 18 equemene
        }
2110 18 equemene
        #endif
2111 18 equemene
        if (!*t->p)
2112 18 equemene
            return -1;
2113 18 equemene
        ++t;
2114 18 equemene
    }
2115 18 equemene
    return 0;
2116 18 equemene
}
2117 18 equemene
2118 18 equemene
/* Type Conversion Functions */
2119 18 equemene
2120 18 equemene
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
2121 18 equemene
   int is_true = x == Py_True;
2122 18 equemene
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
2123 18 equemene
   else return PyObject_IsTrue(x);
2124 18 equemene
}
2125 18 equemene
2126 18 equemene
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
2127 18 equemene
  PyNumberMethods *m;
2128 18 equemene
  const char *name = NULL;
2129 18 equemene
  PyObject *res = NULL;
2130 18 equemene
#if PY_VERSION_HEX < 0x03000000
2131 18 equemene
  if (PyInt_Check(x) || PyLong_Check(x))
2132 18 equemene
#else
2133 18 equemene
  if (PyLong_Check(x))
2134 18 equemene
#endif
2135 18 equemene
    return Py_INCREF(x), x;
2136 18 equemene
  m = Py_TYPE(x)->tp_as_number;
2137 18 equemene
#if PY_VERSION_HEX < 0x03000000
2138 18 equemene
  if (m && m->nb_int) {
2139 18 equemene
    name = "int";
2140 18 equemene
    res = PyNumber_Int(x);
2141 18 equemene
  }
2142 18 equemene
  else if (m && m->nb_long) {
2143 18 equemene
    name = "long";
2144 18 equemene
    res = PyNumber_Long(x);
2145 18 equemene
  }
2146 18 equemene
#else
2147 18 equemene
  if (m && m->nb_int) {
2148 18 equemene
    name = "int";
2149 18 equemene
    res = PyNumber_Long(x);
2150 18 equemene
  }
2151 18 equemene
#endif
2152 18 equemene
  if (res) {
2153 18 equemene
#if PY_VERSION_HEX < 0x03000000
2154 18 equemene
    if (!PyInt_Check(res) && !PyLong_Check(res)) {
2155 18 equemene
#else
2156 18 equemene
    if (!PyLong_Check(res)) {
2157 18 equemene
#endif
2158 18 equemene
      PyErr_Format(PyExc_TypeError,
2159 18 equemene
                   "__%s__ returned non-%s (type %.200s)",
2160 18 equemene
                   name, name, Py_TYPE(res)->tp_name);
2161 18 equemene
      Py_DECREF(res);
2162 18 equemene
      return NULL;
2163 18 equemene
    }
2164 18 equemene
  }
2165 18 equemene
  else if (!PyErr_Occurred()) {
2166 18 equemene
    PyErr_SetString(PyExc_TypeError,
2167 18 equemene
                    "an integer is required");
2168 18 equemene
  }
2169 18 equemene
  return res;
2170 18 equemene
}
2171 18 equemene
2172 18 equemene
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
2173 18 equemene
  Py_ssize_t ival;
2174 18 equemene
  PyObject* x = PyNumber_Index(b);
2175 18 equemene
  if (!x) return -1;
2176 18 equemene
  ival = PyInt_AsSsize_t(x);
2177 18 equemene
  Py_DECREF(x);
2178 18 equemene
  return ival;
2179 18 equemene
}
2180 18 equemene
2181 18 equemene
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
2182 18 equemene
#if PY_VERSION_HEX < 0x02050000
2183 18 equemene
   if (ival <= LONG_MAX)
2184 18 equemene
       return PyInt_FromLong((long)ival);
2185 18 equemene
   else {
2186 18 equemene
       unsigned char *bytes = (unsigned char *) &ival;
2187 18 equemene
       int one = 1; int little = (int)*(unsigned char*)&one;
2188 18 equemene
       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
2189 18 equemene
   }
2190 18 equemene
#else
2191 18 equemene
   return PyInt_FromSize_t(ival);
2192 18 equemene
#endif
2193 18 equemene
}
2194 18 equemene
2195 18 equemene
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
2196 18 equemene
   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
2197 18 equemene
   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
2198 18 equemene
       return (size_t)-1;
2199 18 equemene
   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
2200 18 equemene
       PyErr_SetString(PyExc_OverflowError,
2201 18 equemene
                       "value too large to convert to size_t");
2202 18 equemene
       return (size_t)-1;
2203 18 equemene
   }
2204 18 equemene
   return (size_t)val;
2205 18 equemene
}
2206 18 equemene
2207 18 equemene
2208 18 equemene
#endif /* Py_PYTHON_H */