/opt/cloudlinux/venv/lib/python3.11/site-packages/numpy/f2py/__pycache__
NameSizeModeActions
auxfuncs.cpython-311.pyc389210644editdlrm
capi_maps.cpython-311.pyc386010644editdlrm
cb_rules.cpython-311.pyc244660644editdlrm
cfuncs.cpython-311.pyc496830644editdlrm
common_rules.cpython-311.pyc89620644editdlrm
crackfortran.cpython-311.pyc1692320644editdlrm
diagnose.cpython-311.pyc83200644editdlrm
f2py2e.cpython-311.pyc349300644editdlrm
f90mod_rules.cpython-311.pyc140240644editdlrm
func2subr.cpython-311.pyc136740644editdlrm
rules.cpython-311.pyc589000644editdlrm
setup.cpython-311.pyc28210644editdlrm
symbolic.cpython-311.pyc855630644editdlrm
use_rules.cpython-311.pyc50090644editdlrm
__init__.cpython-311.pyc67320644editdlrm
__main__.cpython-311.pyc3030644editdlrm
__version__.cpython-311.pyc2740644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/numpy/f2py/__pycache__/cfuncs.cpython-311.pyc (49683B)
§ a üÞ_L„;ã óB—dZddlZddlZddlmZejZejjZ ggggggggggdœ Z iZ ddiZ dd iZ d d iZd d iZddiZddiZddiZddiZddddœZdddœZde d<de d <d!e d"<d#e d$<d%e d$<d&e d'<d(ed)<d*ed+<d,ed-<d.ed/<d0ed1<d2ed3<d4ed5<d6ed7<d8ed9<d:ed;<ded?<d@edA<dBedC<dDedE<dFedG<dHedI<dJedK<dLedM<dNedO<dPedQ<dRedS<dTedU<d/ge dV<dWedV<dXedY<d1ge dZ<d[edZ<d5ge d\<d]ed\<d^ed_<d`eda<d7ge db<dcedb<d;ge dd<deedd<d9ge df<dgedf<d=ge dh<diedh<d=ge dj<dkedj<dMge dl<dmedl<dMge dn<doedn<dpdMge dq<dredq<dsedt<duedv<d dvge dw<dxedw<dyedz<d{ed|<d ge d}<d~ed}<d dvge dp<dedp<d dvge d€<d�ed€<d‚edƒ<d„ed…<d†ed‡<dˆed‰<dŠed‹<dŒed�<dŽed�<d�ed‘<d’ed“<d”ed•<gd–¢e d—<d˜ed—<gd™¢e dš<d›edš<dœed�<džge dŸ<d edŸ<džd/ge d¡<d¢ed¡<džge d£<d¤ed£<d¥edž<d¦ed§<d1ge d¨<d©ed¨<dªd5ge d«<d¬ed«<d­edª<dªge d®<d¯ed®<gd°¢e d±<d²ed±<d;ge d³<d´ed³<d9d³ge dµ<d¶edµ<d·ed¸<dSdlge d¹<dºed¹<dld)ge d»<d¼ed½<dld/ge d»<d¾ed»<dUdlge d¿<dÀed¿<dVdlge dÁ<dÂedÁ<dYdlge dÃ<dÄedÃ<gdÅ¢e dÆ<dÇedÆ<dadlge dÈ<dÉedÈ<d_dlge dÊ<dËedÊ<gdÌ¢e dÍ<dÎedÍ<gdÏ¢e dÐ<dÑedÐ<gdÒ¢e dÓ<dÔedÓ<dÕ„ZdØdÖ„ZdׄZdS)Ùaœ C declarations, CPP macros, and C functions for f2py2e. Only required declarations/macros/functions will be used. Copyright 1999,2000 Pearu Peterson all rights reserved, Pearu Peterson Permission to use, modify, and distribute this software is given under the terms of the NumPy License. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. $Date: 2005/05/06 11:42:34 $ Pearu Peterson éNé)Ú __version__) Ú includes0ÚincludesÚtypedefsÚtypedefs_generatedÚ userincludesÚ cppmacrosÚcfuncsÚ callbacksÚ f90modhooksÚ commonhooksrz/*need_includes0*/rz/*need_includes*/r z/*need_userincludes*/rz/*need_typedefs*/rz/*need_typedefs_generated*/r z/*need_cppmacros*/r z/*need_cfuncs*/r z/*need_callbacks*/z/*need_f90modhooks*/z/*initf90modhooksstatic*/z/*initf90modhooksdynamic*/)r Úinitf90modhooksstaticÚinitf90modhooksdynamicz/*need_commonhooks*/z/*need_initcommonhooks*/)rÚinitcommonhooksz#include zmath.hz#include zstring.hz#include zsetjmp.hzC#define PY_ARRAY_UNIQUE_SYMBOL PyArray_API #include "arrayobject.h"z arrayobject.hz#include "fortranobject.h"z#include zstdarg.hz$typedef unsigned char unsigned_char;Ú unsigned_charz&typedef unsigned short unsigned_short;Úunsigned_shortz$typedef unsigned long unsigned_long;Ú unsigned_longz typedef signed char signed_char;Ú signed_charzŽ#if defined(NPY_OS_WIN32) typedef __int64 long_long; #else typedef long long long_long; typedef unsigned long long unsigned_long_long; #endif Ú long_longzr#if defined(NPY_OS_WIN32) typedef __uint64 long_long; #else typedef unsigned long long unsigned_long_long; #endif Úunsigned_long_longz=#ifndef _LONG_DOUBLE typedef long double long_double; #endif Ú long_doublez6typedef struct {long double r,i;} complex_long_double;Úcomplex_long_doublez*typedef struct {float r,i;} complex_float;Ú complex_floatz,typedef struct {double r,i;} complex_double;Úcomplex_doubleztypedef char * string;Ústringztypedef char character;Ú charactera#ifdef DEBUGCFUNCS #define CFUNCSMESS(mess) fprintf(stderr,"debug-capi:"mess); #define CFUNCSMESSPY(mess,obj) CFUNCSMESS(mess) \ PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\ fprintf(stderr,"\n"); #else #define CFUNCSMESS(mess) #define CFUNCSMESSPY(mess,obj) #endif Ú CFUNCSMESSao#if defined(PREPEND_FORTRAN) #if defined(NO_APPEND_FORTRAN) #if defined(UPPERCASE_FORTRAN) #define F_FUNC(f,F) _##F #else #define F_FUNC(f,F) _##f #endif #else #if defined(UPPERCASE_FORTRAN) #define F_FUNC(f,F) _##F##_ #else #define F_FUNC(f,F) _##f##_ #endif #endif #else #if defined(NO_APPEND_FORTRAN) #if defined(UPPERCASE_FORTRAN) #define F_FUNC(f,F) F #else #define F_FUNC(f,F) f #endif #else #if defined(UPPERCASE_FORTRAN) #define F_FUNC(f,F) F##_ #else #define F_FUNC(f,F) f##_ #endif #endif #endif #if defined(UNDERSCORE_G77) #define F_FUNC_US(f,F) F_FUNC(f##_,F##_) #else #define F_FUNC_US(f,F) F_FUNC(f,F) #endif ÚF_FUNCa #if defined(PREPEND_FORTRAN) #if defined(NO_APPEND_FORTRAN) #if defined(UPPERCASE_FORTRAN) #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F #else #define F_WRAPPEDFUNC(f,F) _f2pywrap##f #endif #else #if defined(UPPERCASE_FORTRAN) #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F##_ #else #define F_WRAPPEDFUNC(f,F) _f2pywrap##f##_ #endif #endif #else #if defined(NO_APPEND_FORTRAN) #if defined(UPPERCASE_FORTRAN) #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F #else #define F_WRAPPEDFUNC(f,F) f2pywrap##f #endif #else #if defined(UPPERCASE_FORTRAN) #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F##_ #else #define F_WRAPPEDFUNC(f,F) f2pywrap##f##_ #endif #endif #endif #if defined(UNDERSCORE_G77) #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f##_,F##_) #else #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f,F) #endif Ú F_WRAPPEDFUNCa0#if defined(F90MOD2CCONV1) /*E.g. Compaq Fortran */ #if defined(NO_APPEND_FORTRAN) #define F_MODFUNCNAME(m,f) $ ## m ## $ ## f #else #define F_MODFUNCNAME(m,f) $ ## m ## $ ## f ## _ #endif #endif #if defined(F90MOD2CCONV2) /*E.g. IBM XL Fortran, not tested though */ #if defined(NO_APPEND_FORTRAN) #define F_MODFUNCNAME(m,f) __ ## m ## _MOD_ ## f #else #define F_MODFUNCNAME(m,f) __ ## m ## _MOD_ ## f ## _ #endif #endif #if defined(F90MOD2CCONV3) /*E.g. MIPSPro Compilers */ #if defined(NO_APPEND_FORTRAN) #define F_MODFUNCNAME(m,f) f ## .in. ## m #else #define F_MODFUNCNAME(m,f) f ## .in. ## m ## _ #endif #endif /* #if defined(UPPERCASE_FORTRAN) #define F_MODFUNC(m,M,f,F) F_MODFUNCNAME(M,F) #else #define F_MODFUNC(m,M,f,F) F_MODFUNCNAME(m,f) #endif */ #define F_MODFUNC(m,f) (*(f2pymodstruct##m##.##f)) Ú F_MODFUNCz–#define SWAP(a,b) (size_t)(a) = ((size_t)(a) ^ (size_t)(b));\ (size_t)(b) = ((size_t)(a) ^ (size_t)(b));\ (size_t)(a) = ((size_t)(a) ^ (size_t)(b)) Ú SWAPUNSAFEzF#define SWAP(a,b,t) {\ t *c;\ c = a;\ a = b;\ b = c;} ÚSWAPzª#define PRINTPYOBJERR(obj)\ fprintf(stderr,"#modulename#.error is related to ");\ PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\ fprintf(stderr,"\n"); Ú PRINTPYOBJERRzè#ifndef max #define max(a,b) ((a > b) ? (a) : (b)) #endif #ifndef min #define min(a,b) ((a < b) ? (a) : (b)) #endif #ifndef MAX #define MAX(a,b) ((a > b) ? (a) : (b)) #endif #ifndef MIN #define MIN(a,b) ((a < b) ? (a) : (b)) #endif ÚMINMAXzô/* See fortranobject.h for definitions. The macros here are provided for BC. */ #define rank f2py_rank #define shape f2py_shape #define fshape f2py_shape #define len f2py_len #define flen f2py_flen #define slen f2py_slen #define size f2py_size zlen..z0#define pyobj_from_char1(v) (PyLong_FromLong(v))Úpyobj_from_char1z1#define pyobj_from_short1(v) (PyLong_FromLong(v))Úpyobj_from_short1Úpyobj_from_int1z/#define pyobj_from_int1(v) (PyLong_FromLong(v))z0#define pyobj_from_long1(v) (PyLong_FromLong(v))Úpyobj_from_long1Úpyobj_from_long_long1zÞ#ifdef HAVE_LONG_LONG #define pyobj_from_long_long1(v) (PyLong_FromLongLong(v)) #else #warning HAVE_LONG_LONG is not available. Redefining pyobj_from_long_long. #define pyobj_from_long_long1(v) (PyLong_FromLong(v)) #endif Úpyobj_from_long_double1z:#define pyobj_from_long_double1(v) (PyFloat_FromDouble(v))z5#define pyobj_from_double1(v) (PyFloat_FromDouble(v))Úpyobj_from_double1z4#define pyobj_from_float1(v) (PyFloat_FromDouble(v))Úpyobj_from_float1Úpyobj_from_complex_long_double1zK#define pyobj_from_complex_long_double1(v) (PyComplex_FromDoubles(v.r,v.i))Úpyobj_from_complex_double1zF#define pyobj_from_complex_double1(v) (PyComplex_FromDoubles(v.r,v.i))Úpyobj_from_complex_float1zE#define pyobj_from_complex_float1(v) (PyComplex_FromDoubles(v.r,v.i))Úpyobj_from_string1z?#define pyobj_from_string1(v) (PyUnicode_FromString((char *)v))Úpyobj_from_string1sizezS#define pyobj_from_string1size(v,len) (PyUnicode_FromStringAndSize((char *)v, len))ÚTRYPYARRAYTEMPLATEaÌ/* New SciPy */ #define TRYPYARRAYTEMPLATECHAR case NPY_STRING: *(char *)(PyArray_DATA(arr))=*v; break; #define TRYPYARRAYTEMPLATELONG case NPY_LONG: *(long *)(PyArray_DATA(arr))=*v; break; #define TRYPYARRAYTEMPLATEOBJECT case NPY_OBJECT: PyArray_SETITEM(arr,PyArray_DATA(arr),pyobj_from_ ## ctype ## 1(*v)); break; #define TRYPYARRAYTEMPLATE(ctype,typecode) \ PyArrayObject *arr = NULL;\ if (!obj) return -2;\ if (!PyArray_Check(obj)) return -1;\ if (!(arr=(PyArrayObject *)obj)) {fprintf(stderr,"TRYPYARRAYTEMPLATE:");PRINTPYOBJERR(obj);return 0;}\ if (PyArray_DESCR(arr)->type==typecode) {*(ctype *)(PyArray_DATA(arr))=*v; return 1;}\ switch (PyArray_TYPE(arr)) {\ case NPY_DOUBLE: *(npy_double *)(PyArray_DATA(arr))=*v; break;\ case NPY_INT: *(npy_int *)(PyArray_DATA(arr))=*v; break;\ case NPY_LONG: *(npy_long *)(PyArray_DATA(arr))=*v; break;\ case NPY_FLOAT: *(npy_float *)(PyArray_DATA(arr))=*v; break;\ case NPY_CDOUBLE: *(npy_double *)(PyArray_DATA(arr))=*v; break;\ case NPY_CFLOAT: *(npy_float *)(PyArray_DATA(arr))=*v; break;\ case NPY_BOOL: *(npy_bool *)(PyArray_DATA(arr))=(*v!=0); break;\ case NPY_UBYTE: *(npy_ubyte *)(PyArray_DATA(arr))=*v; break;\ case NPY_BYTE: *(npy_byte *)(PyArray_DATA(arr))=*v; break;\ case NPY_SHORT: *(npy_short *)(PyArray_DATA(arr))=*v; break;\ case NPY_USHORT: *(npy_ushort *)(PyArray_DATA(arr))=*v; break;\ case NPY_UINT: *(npy_uint *)(PyArray_DATA(arr))=*v; break;\ case NPY_ULONG: *(npy_ulong *)(PyArray_DATA(arr))=*v; break;\ case NPY_LONGLONG: *(npy_longlong *)(PyArray_DATA(arr))=*v; break;\ case NPY_ULONGLONG: *(npy_ulonglong *)(PyArray_DATA(arr))=*v; break;\ case NPY_LONGDOUBLE: *(npy_longdouble *)(PyArray_DATA(arr))=*v; break;\ case NPY_CLONGDOUBLE: *(npy_longdouble *)(PyArray_DATA(arr))=*v; break;\ case NPY_OBJECT: PyArray_SETITEM(arr, PyArray_DATA(arr), pyobj_from_ ## ctype ## 1(*v)); break;\ default: return -2;\ };\ return 1 ÚTRYCOMPLEXPYARRAYTEMPLATEa“ #define TRYCOMPLEXPYARRAYTEMPLATEOBJECT case NPY_OBJECT: PyArray_SETITEM(arr, PyArray_DATA(arr), pyobj_from_complex_ ## ctype ## 1((*v))); break; #define TRYCOMPLEXPYARRAYTEMPLATE(ctype,typecode)\ PyArrayObject *arr = NULL;\ if (!obj) return -2;\ if (!PyArray_Check(obj)) return -1;\ if (!(arr=(PyArrayObject *)obj)) {fprintf(stderr,"TRYCOMPLEXPYARRAYTEMPLATE:");PRINTPYOBJERR(obj);return 0;}\ if (PyArray_DESCR(arr)->type==typecode) {\ *(ctype *)(PyArray_DATA(arr))=(*v).r;\ *(ctype *)(PyArray_DATA(arr)+sizeof(ctype))=(*v).i;\ return 1;\ }\ switch (PyArray_TYPE(arr)) {\ case NPY_CDOUBLE: *(npy_double *)(PyArray_DATA(arr))=(*v).r;\ *(npy_double *)(PyArray_DATA(arr)+sizeof(npy_double))=(*v).i;\ break;\ case NPY_CFLOAT: *(npy_float *)(PyArray_DATA(arr))=(*v).r;\ *(npy_float *)(PyArray_DATA(arr)+sizeof(npy_float))=(*v).i;\ break;\ case NPY_DOUBLE: *(npy_double *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_LONG: *(npy_long *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_FLOAT: *(npy_float *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_INT: *(npy_int *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_SHORT: *(npy_short *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_UBYTE: *(npy_ubyte *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_BYTE: *(npy_byte *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_BOOL: *(npy_bool *)(PyArray_DATA(arr))=((*v).r!=0 && (*v).i!=0); break;\ case NPY_USHORT: *(npy_ushort *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_UINT: *(npy_uint *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_ULONG: *(npy_ulong *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_LONGLONG: *(npy_longlong *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_ULONGLONG: *(npy_ulonglong *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_LONGDOUBLE: *(npy_longdouble *)(PyArray_DATA(arr))=(*v).r; break;\ case NPY_CLONGDOUBLE: *(npy_longdouble *)(PyArray_DATA(arr))=(*v).r;\ *(npy_longdouble *)(PyArray_DATA(arr)+sizeof(npy_longdouble))=(*v).i;\ break;\ case NPY_OBJECT: PyArray_SETITEM(arr, PyArray_DATA(arr), pyobj_from_complex_ ## ctype ## 1((*v))); break;\ default: return -2;\ };\ return -1; Ú STRINGCOPYNÚGETSTRFROMPYTUPLEaý#define GETSTRFROMPYTUPLE(tuple,index,str,len) {\ PyObject *rv_cb_str = PyTuple_GetItem((tuple),(index));\ if (rv_cb_str == NULL)\ goto capi_fail;\ if (PyBytes_Check(rv_cb_str)) {\ str[len-1]='\0';\ STRINGCOPYN((str),PyBytes_AS_STRING((PyBytesObject*)rv_cb_str),(len));\ } else {\ PRINTPYOBJERR(rv_cb_str);\ PyErr_SetString(#modulename#_error,"string object expected");\ goto capi_fail;\ }\ } zì#define GETSCALARFROMPYTUPLE(tuple,index,var,ctype,mess) {\ if ((capi_tmp = PyTuple_GetItem((tuple),(index)))==NULL) goto capi_fail;\ if (!(ctype ## _from_pyobj((var),capi_tmp,mess)))\ goto capi_fail;\ } ÚGETSCALARFROMPYTUPLEal\ #define FAILNULL(p) do { \ if ((p) == NULL) { \ PyErr_SetString(PyExc_MemoryError, "NULL pointer found"); \ goto capi_fail; \ } \ } while (0) ÚFAILNULLÚMEMCOPYzh#define MEMCOPY(to,from,n)\ do { FAILNULL(to); FAILNULL(from); (void)memcpy(to,from,n); } while (0) zØ#define STRINGMALLOC(str,len)\ if ((str = (string)malloc(len+1)) == NULL) {\ PyErr_SetString(PyExc_MemoryError, "out of memory");\ goto capi_fail;\ } else {\ (str)[len] = '\0';\ } Ú STRINGMALLOCzF#define STRINGFREE(str) do {if (!(str == NULL)) free(str);} while (0) Ú STRINGFREEÚ STRINGPADNaù/* STRINGPADN replaces null values with padding values from the right. `to` must have size of at least N bytes. If the `to[N-1]` has null value, then replace it and all the preceding, nulls with the given padding. STRINGPADN(to, N, PADDING, NULLVALUE) is an inverse operation. */ #define STRINGPADN(to, N, NULLVALUE, PADDING) \ do { \ int _m = (N); \ char *_to = (to); \ for (_m -= 1; _m >= 0 && _to[_m] == NULLVALUE; _m--) { \ _to[_m] = PADDING; \ } \ } while (0) a1/* STRINGCOPYN copies N bytes. `to` and `from` buffers must have sizes of at least N bytes. */ #define STRINGCOPYN(to,from,N) \ do { \ int _m = (N); \ char *_to = (to); \ char *_from = (from); \ FAILNULL(_to); FAILNULL(_from); \ (void)strncpy(_to, _from, _m); \ } while (0) Ú STRINGCOPYzg#define STRINGCOPY(to,from)\ do { FAILNULL(to); FAILNULL(from); (void)strcpy(to,from); } while (0) z²#define CHECKGENERIC(check,tcheck,name) \ if (!(check)) {\ PyErr_SetString(#modulename#_error,"("tcheck") failed for "name);\ /*goto capi_fail;*/\ } else Ú CHECKGENERICz°#define CHECKARRAY(check,tcheck,name) \ if (!(check)) {\ PyErr_SetString(#modulename#_error,"("tcheck") failed for "name);\ /*goto capi_fail;*/\ } else Ú CHECKARRAYa#define CHECKSTRING(check,tcheck,name,show,var)\ if (!(check)) {\ char errstring[256];\ sprintf(errstring, "%s: "show, "("tcheck") failed for "name, slen(var), var);\ PyErr_SetString(#modulename#_error, errstring);\ /*goto capi_fail;*/\ } else Ú CHECKSTRINGa#define CHECKSCALAR(check,tcheck,name,show,var)\ if (!(check)) {\ char errstring[256];\ sprintf(errstring, "%s: "show, "("tcheck") failed for "name, var);\ PyErr_SetString(#modulename#_error,errstring);\ /*goto capi_fail;*/\ } else Ú CHECKSCALARz>#define ARRSIZE(dims,rank) (_PyArray_multiply_list(dims,rank))ÚARRSIZEzs#ifdef OLDPYNUM #error You need to install NumPy version 0.13 or higher. See https://scipy.org/install.html #endif ÚOLDPYNUMaâ#ifndef F2PY_THREAD_LOCAL_DECL #if defined(_MSC_VER) #define F2PY_THREAD_LOCAL_DECL __declspec(thread) #elif defined(NPY_OS_MINGW) #define F2PY_THREAD_LOCAL_DECL __thread #elif defined(__STDC_VERSION__) \ && (__STDC_VERSION__ >= 201112L) \ && !defined(__STDC_NO_THREADS__) \ && (!defined(__GLIBC__) || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 12)) \ && !defined(NPY_OS_OPENBSD) && !defined(NPY_OS_HAIKU) /* __STDC_NO_THREADS__ was first defined in a maintenance release of glibc 2.12, see https://lists.gnu.org/archive/html/commit-hurd/2012-07/msg00180.html, so `!defined(__STDC_NO_THREADS__)` may give false positive for the existence of `threads.h` when using an older release of glibc 2.12 See gh-19437 for details on OpenBSD */ #include #define F2PY_THREAD_LOCAL_DECL thread_local #elif defined(__GNUC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 4))) #define F2PY_THREAD_LOCAL_DECL __thread #endif #endif ÚF2PY_THREAD_LOCAL_DECLzÔstatic int calcarrindex(int *i,PyArrayObject *arr) { int k,ii = i[0]; for (k=1; k < PyArray_NDIM(arr); k++) ii += (ii*(PyArray_DIM(arr,k) - 1)+i[k]); /* assuming contiguous arr */ return ii; }Ú calcarrindexastatic int calcarrindextr(int *i,PyArrayObject *arr) { int k,ii = i[PyArray_NDIM(arr)-1]; for (k=1; k < PyArray_NDIM(arr); k++) ii += (ii*(PyArray_DIM(arr,PyArray_NDIM(arr)-k-1) - 1)+i[PyArray_NDIM(arr)-k-1]); /* assuming contiguous arr */ return ii; }ÚcalcarrindextraTstatic struct { int nd;npy_intp *d;int *i,*i_tr,tr; } forcombcache; static int initforcomb(npy_intp *dims,int nd,int tr) { int k; if (dims==NULL) return 0; if (nd<0) return 0; forcombcache.nd = nd; forcombcache.d = dims; forcombcache.tr = tr; if ((forcombcache.i = (int *)malloc(sizeof(int)*nd))==NULL) return 0; if ((forcombcache.i_tr = (int *)malloc(sizeof(int)*nd))==NULL) return 0; for (k=1;k PyArray_NBYTES(arr)) { n = PyArray_NBYTES(arr); } STRINGCOPYN(buf, str, n); return 1; } capi_fail: PRINTPYOBJERR(obj); PyErr_SetString(#modulename#_error, "try_pyarr_from_string failed"); return 0; } )rr:r5Ústring_from_pyobjaæ /* Create a new string buffer `str` of at most length `len` from a Python string-like object `obj`. The string buffer has given size (len) or the size of inistr when len==-1. The string buffer is padded with blanks: in Fortran, trailing blanks are insignificant contrary to C nulls. */ static int string_from_pyobj(string *str, int *len, const string inistr, PyObject *obj, const char *errmess) { PyObject *tmp = NULL; string buf = NULL; npy_intp n = -1; #ifdef DEBUGCFUNCS fprintf(stderr,"string_from_pyobj(str='%s',len=%d,inistr='%s',obj=%p)\n", (char*)str, *len, (char *)inistr, obj); #endif if (obj == Py_None) { n = strlen(inistr); buf = inistr; } else if (PyArray_Check(obj)) { PyArrayObject *arr = (PyArrayObject *)obj; if (!ISCONTIGUOUS(arr)) { PyErr_SetString(PyExc_ValueError, "array object is non-contiguous."); goto capi_fail; } n = PyArray_NBYTES(arr); buf = PyArray_DATA(arr); n = strnlen(buf, n); } else { if (PyBytes_Check(obj)) { tmp = obj; Py_INCREF(tmp); } else if (PyUnicode_Check(obj)) { tmp = PyUnicode_AsASCIIString(obj); } else { PyObject *tmp2; tmp2 = PyObject_Str(obj); if (tmp2) { tmp = PyUnicode_AsASCIIString(tmp2); Py_DECREF(tmp2); } else { tmp = NULL; } } if (tmp == NULL) goto capi_fail; n = PyBytes_GET_SIZE(tmp); buf = PyBytes_AS_STRING(tmp); } if (*len == -1) { /* TODO: change the type of `len` so that we can remove this */ if (n > NPY_MAX_INT) { PyErr_SetString(PyExc_OverflowError, "object too large for a 32-bit int"); goto capi_fail; } *len = n; } else if (*len < n) { /* discard the last (len-n) bytes of input buf */ n = *len; } if (n < 0 || *len < 0 || buf == NULL) { goto capi_fail; } STRINGMALLOC(*str, *len); // *str is allocated with size (*len + 1) if (n < *len) { /* Pad fixed-width string with nulls. The caller will replace nulls with blanks when the corresponding argument is not intent(c). */ memset(*str + n, '\0', *len - n); } STRINGCOPYN(*str, buf, n); Py_XDECREF(tmp); return 1; capi_fail: Py_XDECREF(tmp); { PyObject* err = PyErr_Occurred(); if (err == NULL) { err = #modulename#_error; } PyErr_SetString(err, errmess); } return 0; } a�static int character_from_pyobj(character* v, PyObject *obj, const char *errmess) { if (PyBytes_Check(obj)) { /* empty bytes has trailing null, so dereferencing is always safe */ *v = PyBytes_AS_STRING(obj)[0]; return 1; } else if (PyUnicode_Check(obj)) { PyObject* tmp = PyUnicode_AsASCIIString(obj); if (tmp != NULL) { *v = PyBytes_AS_STRING(tmp)[0]; Py_DECREF(tmp); return 1; } } else if (PyArray_Check(obj)) { PyArrayObject* arr = (PyArrayObject*)obj; if (F2PY_ARRAY_IS_CHARACTER_COMPATIBLE(arr)) { *v = PyArray_BYTES(arr)[0]; return 1; } else if (F2PY_IS_UNICODE_ARRAY(arr)) { // TODO: update when numpy will support 1-byte and // 2-byte unicode dtypes PyObject* tmp = PyUnicode_FromKindAndData( PyUnicode_4BYTE_KIND, PyArray_BYTES(arr), (PyArray_NBYTES(arr)>0?1:0)); if (tmp != NULL) { if (character_from_pyobj(v, tmp, errmess)) { Py_DECREF(tmp); return 1; } Py_DECREF(tmp); } } } else if (PySequence_Check(obj)) { PyObject* tmp = PySequence_GetItem(obj,0); if (tmp != NULL) { if (character_from_pyobj(v, tmp, errmess)) { Py_DECREF(tmp); return 1; } Py_DECREF(tmp); } } { /* TODO: This error (and most other) error handling needs cleaning. */ char mess[F2PY_MESSAGE_BUFFER_SIZE]; strcpy(mess, errmess); PyObject* err = PyErr_Occurred(); if (err == NULL) { err = PyExc_TypeError; Py_INCREF(err); } else { Py_INCREF(err); PyErr_Clear(); } sprintf(mess + strlen(mess), " -- expected str|bytes|sequence-of-str-or-bytes, got "); f2py_describe(obj, mess + strlen(mess)); PyErr_SetString(err, mess); Py_DECREF(err); } return 0; } Úcharacter_from_pyobjÚint_from_pyobjÚchar_from_pyobjzÃstatic int char_from_pyobj(char* v, PyObject *obj, const char *errmess) { int i = 0; if (int_from_pyobj(&i, obj, errmess)) { *v = (char)i; return 1; } return 0; } Úsigned_char_from_pyobjzØstatic int signed_char_from_pyobj(signed_char* v, PyObject *obj, const char *errmess) { int i = 0; if (int_from_pyobj(&i, obj, errmess)) { *v = (signed_char)i; return 1; } return 0; } Úshort_from_pyobjzÆstatic int short_from_pyobj(short* v, PyObject *obj, const char *errmess) { int i = 0; if (int_from_pyobj(&i, obj, errmess)) { *v = (short)i; return 1; } return 0; } aþstatic int int_from_pyobj(int* v, PyObject *obj, const char *errmess) { PyObject* tmp = NULL; if (PyLong_Check(obj)) { *v = Npy__PyLong_AsInt(obj); return !(*v == -1 && PyErr_Occurred()); } tmp = PyNumber_Long(obj); if (tmp) { *v = Npy__PyLong_AsInt(tmp); Py_DECREF(tmp); return !(*v == -1 && PyErr_Occurred()); } if (PyComplex_Check(obj)) { PyErr_Clear(); tmp = PyObject_GetAttrString(obj,"real"); } else if (PyBytes_Check(obj) || PyUnicode_Check(obj)) { /*pass*/; } else if (PySequence_Check(obj)) { PyErr_Clear(); tmp = PySequence_GetItem(obj, 0); } if (tmp) { if (int_from_pyobj(v, tmp, errmess)) { Py_DECREF(tmp); return 1; } Py_DECREF(tmp); } { PyObject* err = PyErr_Occurred(); if (err == NULL) { err = #modulename#_error; } PyErr_SetString(err, errmess); } return 0; } aøstatic int long_from_pyobj(long* v, PyObject *obj, const char *errmess) { PyObject* tmp = NULL; if (PyLong_Check(obj)) { *v = PyLong_AsLong(obj); return !(*v == -1 && PyErr_Occurred()); } tmp = PyNumber_Long(obj); if (tmp) { *v = PyLong_AsLong(tmp); Py_DECREF(tmp); return !(*v == -1 && PyErr_Occurred()); } if (PyComplex_Check(obj)) { PyErr_Clear(); tmp = PyObject_GetAttrString(obj,"real"); } else if (PyBytes_Check(obj) || PyUnicode_Check(obj)) { /*pass*/; } else if (PySequence_Check(obj)) { PyErr_Clear(); tmp = PySequence_GetItem(obj, 0); } if (tmp) { if (long_from_pyobj(v, tmp, errmess)) { Py_DECREF(tmp); return 1; } Py_DECREF(tmp); } { PyObject* err = PyErr_Occurred(); if (err == NULL) { err = #modulename#_error; } PyErr_SetString(err, errmess); } return 0; } Úlong_from_pyobjÚlong_long_from_pyobjastatic int long_long_from_pyobj(long_long* v, PyObject *obj, const char *errmess) { PyObject* tmp = NULL; if (PyLong_Check(obj)) { *v = PyLong_AsLongLong(obj); return !(*v == -1 && PyErr_Occurred()); } tmp = PyNumber_Long(obj); if (tmp) { *v = PyLong_AsLongLong(tmp); Py_DECREF(tmp); return !(*v == -1 && PyErr_Occurred()); } if (PyComplex_Check(obj)) { PyErr_Clear(); tmp = PyObject_GetAttrString(obj,"real"); } else if (PyBytes_Check(obj) || PyUnicode_Check(obj)) { /*pass*/; } else if (PySequence_Check(obj)) { PyErr_Clear(); tmp = PySequence_GetItem(obj, 0); } if (tmp) { if (long_long_from_pyobj(v, tmp, errmess)) { Py_DECREF(tmp); return 1; } Py_DECREF(tmp); } { PyObject* err = PyErr_Occurred(); if (err == NULL) { err = #modulename#_error; } PyErr_SetString(err,errmess); } return 0; } Údouble_from_pyobjÚlong_double_from_pyobja(static int long_double_from_pyobj(long_double* v, PyObject *obj, const char *errmess) { double d=0; if (PyArray_CheckScalar(obj)){ if PyArray_IsScalar(obj, LongDouble) { PyArray_ScalarAsCtype(obj, v); return 1; } else if (PyArray_Check(obj) && PyArray_TYPE(obj) == NPY_LONGDOUBLE) { (*v) = *((npy_longdouble *)PyArray_DATA(obj)); return 1; } } if (double_from_pyobj(&d, obj, errmess)) { *v = (long_double)d; return 1; } return 0; } aÊstatic int double_from_pyobj(double* v, PyObject *obj, const char *errmess) { PyObject* tmp = NULL; if (PyFloat_Check(obj)) { *v = PyFloat_AsDouble(obj); return !(*v == -1.0 && PyErr_Occurred()); } tmp = PyNumber_Float(obj); if (tmp) { *v = PyFloat_AsDouble(tmp); Py_DECREF(tmp); return !(*v == -1.0 && PyErr_Occurred()); } if (PyComplex_Check(obj)) { PyErr_Clear(); tmp = PyObject_GetAttrString(obj,"real"); } else if (PyBytes_Check(obj) || PyUnicode_Check(obj)) { /*pass*/; } else if (PySequence_Check(obj)) { PyErr_Clear(); tmp = PySequence_GetItem(obj, 0); } if (tmp) { if (double_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;} Py_DECREF(tmp); } { PyObject* err = PyErr_Occurred(); if (err==NULL) err = #modulename#_error; PyErr_SetString(err,errmess); } return 0; } Úfloat_from_pyobjzÊstatic int float_from_pyobj(float* v, PyObject *obj, const char *errmess) { double d=0.0; if (double_from_pyobj(&d,obj,errmess)) { *v = (float)d; return 1; } return 0; } )rrÚcomplex_double_from_pyobjÚcomplex_long_double_from_pyobjaÈstatic int complex_long_double_from_pyobj(complex_long_double* v, PyObject *obj, const char *errmess) { complex_double cd = {0.0,0.0}; if (PyArray_CheckScalar(obj)){ if PyArray_IsScalar(obj, CLongDouble) { PyArray_ScalarAsCtype(obj, v); return 1; } else if (PyArray_Check(obj) && PyArray_TYPE(obj)==NPY_CLONGDOUBLE) { (*v).r = ((npy_clongdouble *)PyArray_DATA(obj))->real; (*v).i = ((npy_clongdouble *)PyArray_DATA(obj))->imag; return 1; } } if (complex_double_from_pyobj(&cd,obj,errmess)) { (*v).r = (long_double)cd.r; (*v).i = (long_double)cd.i; return 1; } return 0; } rTaêstatic int complex_double_from_pyobj(complex_double* v, PyObject *obj, const char *errmess) { Py_complex c; if (PyComplex_Check(obj)) { c = PyComplex_AsCComplex(obj); (*v).r = c.real; (*v).i = c.imag; return 1; } if (PyArray_IsScalar(obj, ComplexFloating)) { if (PyArray_IsScalar(obj, CFloat)) { npy_cfloat new; PyArray_ScalarAsCtype(obj, &new); (*v).r = (double)new.real; (*v).i = (double)new.imag; } else if (PyArray_IsScalar(obj, CLongDouble)) { npy_clongdouble new; PyArray_ScalarAsCtype(obj, &new); (*v).r = (double)new.real; (*v).i = (double)new.imag; } else { /* if (PyArray_IsScalar(obj, CDouble)) */ PyArray_ScalarAsCtype(obj, v); } return 1; } if (PyArray_CheckScalar(obj)) { /* 0-dim array or still array scalar */ PyArrayObject *arr; if (PyArray_Check(obj)) { arr = (PyArrayObject *)PyArray_Cast((PyArrayObject *)obj, NPY_CDOUBLE); } else { arr = (PyArrayObject *)PyArray_FromScalar(obj, PyArray_DescrFromType(NPY_CDOUBLE)); } if (arr == NULL) { return 0; } (*v).r = ((npy_cdouble *)PyArray_DATA(arr))->real; (*v).i = ((npy_cdouble *)PyArray_DATA(arr))->imag; Py_DECREF(arr); return 1; } /* Python does not provide PyNumber_Complex function :-( */ (*v).i = 0.0; if (PyFloat_Check(obj)) { (*v).r = PyFloat_AsDouble(obj); return !((*v).r == -1.0 && PyErr_Occurred()); } if (PyLong_Check(obj)) { (*v).r = PyLong_AsDouble(obj); return !((*v).r == -1.0 && PyErr_Occurred()); } if (PySequence_Check(obj) && !(PyBytes_Check(obj) || PyUnicode_Check(obj))) { PyObject *tmp = PySequence_GetItem(obj,0); if (tmp) { if (complex_double_from_pyobj(v,tmp,errmess)) { Py_DECREF(tmp); return 1; } Py_DECREF(tmp); } } { PyObject* err = PyErr_Occurred(); if (err==NULL) err = PyExc_TypeError; PyErr_SetString(err,errmess); } return 0; } Úcomplex_float_from_pyobjastatic int complex_float_from_pyobj(complex_float* v,PyObject *obj,const char *errmess) { complex_double cd={0.0,0.0}; if (complex_double_from_pyobj(&cd,obj,errmess)) { (*v).r = (float)cd.r; (*v).i = (float)cd.i; return 1; } return 0; } a×static int try_pyarr_from_character(PyObject* obj, character* v) { PyArrayObject *arr = (PyArrayObject*)obj; if (!obj) return -2; if (PyArray_Check(obj)) { if (F2PY_ARRAY_IS_CHARACTER_COMPATIBLE(arr)) { *(character *)(PyArray_DATA(arr)) = *v; return 1; } } { char mess[F2PY_MESSAGE_BUFFER_SIZE]; PyObject* err = PyErr_Occurred(); if (err == NULL) { err = PyExc_ValueError; strcpy(mess, "try_pyarr_from_character failed" " -- expected bytes array-scalar|array, got "); f2py_describe(obj, mess + strlen(mess)); PyErr_SetString(err, mess); } } return 0; } Útry_pyarr_from_characterÚtry_pyarr_from_charz\static int try_pyarr_from_char(PyObject* obj,char* v) { TRYPYARRAYTEMPLATE(char,'c'); } Útry_pyarr_from_signed_charzwstatic int try_pyarr_from_unsigned_char(PyObject* obj,unsigned_char* v) { TRYPYARRAYTEMPLATE(unsigned_char,'b'); } Útry_pyarr_from_unsigned_charzqstatic int try_pyarr_from_signed_char(PyObject* obj,signed_char* v) { TRYPYARRAYTEMPLATE(signed_char,'1'); } Útry_pyarr_from_shortz_static int try_pyarr_from_short(PyObject* obj,short* v) { TRYPYARRAYTEMPLATE(short,'s'); } Útry_pyarr_from_intzYstatic int try_pyarr_from_int(PyObject* obj,int* v) { TRYPYARRAYTEMPLATE(int,'i'); } Útry_pyarr_from_longz\static int try_pyarr_from_long(PyObject* obj,long* v) { TRYPYARRAYTEMPLATE(long,'l'); } )r*r3rÚtry_pyarr_from_long_longzkstatic int try_pyarr_from_long_long(PyObject* obj,long_long* v) { TRYPYARRAYTEMPLATE(long_long,'L'); } Útry_pyarr_from_floatz_static int try_pyarr_from_float(PyObject* obj,float* v) { TRYPYARRAYTEMPLATE(float,'f'); } Útry_pyarr_from_doublezbstatic int try_pyarr_from_double(PyObject* obj,double* v) { TRYPYARRAYTEMPLATE(double,'d'); } )r0r4rÚtry_pyarr_from_complex_floatzvstatic int try_pyarr_from_complex_float(PyObject* obj,complex_float* v) { TRYCOMPLEXPYARRAYTEMPLATE(float,'F'); } )r/r4rÚtry_pyarr_from_complex_doublezystatic int try_pyarr_from_complex_double(PyObject* obj,complex_double* v) { TRYCOMPLEXPYARRAYTEMPLATE(double,'D'); } )rr$r%Úcreate_cb_arglistaFstatic int create_cb_arglist(PyObject* fun, PyTupleObject* xa , const int maxnofargs, const int nofoptargs, int *nofargs, PyTupleObject **args, const char *errmess) { PyObject *tmp = NULL; PyObject *tmp_fun = NULL; Py_ssize_t tot, opt, ext, siz, i, di = 0; CFUNCSMESS("create_cb_arglist\n"); tot=opt=ext=siz=0; /* Get the total number of arguments */ if (PyFunction_Check(fun)) { tmp_fun = fun; Py_INCREF(tmp_fun); } else { di = 1; if (PyObject_HasAttrString(fun,"im_func")) { tmp_fun = PyObject_GetAttrString(fun,"im_func"); } else if (PyObject_HasAttrString(fun,"__call__")) { tmp = PyObject_GetAttrString(fun,"__call__"); if (PyObject_HasAttrString(tmp,"im_func")) tmp_fun = PyObject_GetAttrString(tmp,"im_func"); else { tmp_fun = fun; /* built-in function */ Py_INCREF(tmp_fun); tot = maxnofargs; if (PyCFunction_Check(fun)) { /* In case the function has a co_argcount (like on PyPy) */ di = 0; } if (xa != NULL) tot += PyTuple_Size((PyObject *)xa); } Py_XDECREF(tmp); } else if (PyFortran_Check(fun) || PyFortran_Check1(fun)) { tot = maxnofargs; if (xa != NULL) tot += PyTuple_Size((PyObject *)xa); tmp_fun = fun; Py_INCREF(tmp_fun); } else if (F2PyCapsule_Check(fun)) { tot = maxnofargs; if (xa != NULL) ext = PyTuple_Size((PyObject *)xa); if(ext>0) { fprintf(stderr,"extra arguments tuple cannot be used with PyCapsule call-back\n"); goto capi_fail; } tmp_fun = fun; Py_INCREF(tmp_fun); } } if (tmp_fun == NULL) { fprintf(stderr, "Call-back argument must be function|instance|instance.__call__|f2py-function " "but got %s.\n", ((fun == NULL) ? "NULL" : Py_TYPE(fun)->tp_name)); goto capi_fail; } if (PyObject_HasAttrString(tmp_fun,"__code__")) { if (PyObject_HasAttrString(tmp = PyObject_GetAttrString(tmp_fun,"__code__"),"co_argcount")) { PyObject *tmp_argcount = PyObject_GetAttrString(tmp,"co_argcount"); Py_DECREF(tmp); if (tmp_argcount == NULL) { goto capi_fail; } tot = PyLong_AsSsize_t(tmp_argcount) - di; Py_DECREF(tmp_argcount); } } /* Get the number of optional arguments */ if (PyObject_HasAttrString(tmp_fun,"__defaults__")) { if (PyTuple_Check(tmp = PyObject_GetAttrString(tmp_fun,"__defaults__"))) opt = PyTuple_Size(tmp); Py_XDECREF(tmp); } /* Get the number of extra arguments */ if (xa != NULL) ext = PyTuple_Size((PyObject *)xa); /* Calculate the size of call-backs argument list */ siz = MIN(maxnofargs+ext,tot); *nofargs = MAX(0,siz-ext); #ifdef DEBUGCFUNCS fprintf(stderr, "debug-capi:create_cb_arglist:maxnofargs(-nofoptargs)," "tot,opt,ext,siz,nofargs = %d(-%d), %zd, %zd, %zd, %zd, %d\n", maxnofargs, nofoptargs, tot, opt, ext, siz, *nofargs); #endif if (siz < tot-opt) { fprintf(stderr, "create_cb_arglist: Failed to build argument list " "(siz) with enough arguments (tot-opt) required by " "user-supplied function (siz,tot,opt=%zd, %zd, %zd).\n", siz, tot, opt); goto capi_fail; } /* Initialize argument list */ *args = (PyTupleObject *)PyTuple_New(siz); for (i=0;i<*nofargs;i++) { Py_INCREF(Py_None); PyTuple_SET_ITEM((PyObject *)(*args),i,Py_None); } if (xa != NULL) for (i=(*nofargs);iØð "ð "ˆAÝ ˜˜DÑ !Ô !Ð !Ð !ð "ð "å �D�#Ñ Ô ñ;Øð Ø ˆFØ •9РР؈AˆAØ •XРР؈AˆAØ •XРР؈AˆAØ Õ'Ð 'Ð 'Ø$ˆAˆAØ •YРР؈AˆAØ •Vˆ^ˆ^؈AˆAØ •YРР؈AˆAØ •[РР؈AˆAØ •[РР؈AˆAå Ð5½¸d¹¼ÑDÑ EÔ EÐ EØ ˆFØ •8˜A”;Ð Ð Ø ˆFØ ð ØˆCØ•uˆ}ˆ}Ý œ+ð2ð2�BÝ$ R¨Ñ+Ô+�AÝ! !¥TÑ*Ô*ð2Ø#$§6¢6¡8¤8ð2ð2˜CØ" c˜z˜zØ+.¨s¬8°a¸´fÑ+<  C¡ à+,¨S¬6  C¡ øØ—h’h‘j”jð <ð <�ؘrœ7ð<ð<�CØ¥(¨2¤,Ð.Ð.Ø(+ u­x¸¬|Ñ';� ™ øð<õ �QŒK× Ò ˜tÑ $Ô $Ð $Ð $Ð $àˆCØ•uˆ}ˆ}Ý œ+ð2ð2�BÝ$ R¨Ñ.Ô.�AÝ! !¥TÑ*Ô*ð2Ø#$§6¢6¡8¤8ð2ð2˜CØ" c˜z˜zØ+,¨S¬6°C¸´HÑ+<  C¡ à+,¨S¬6  C¡ øØ˜ˆ|ˆ|Ø��A‘Ø �ŒF�MŠM˜$Ñ Ô Ð ØˆJåÐEÝ�d‘”ññ ô ð ð ð rlcóø—i}t ¦«D�]Ü}g}tjt|¦«}tt|¦«dk�r‹t|dtvr5| t|d¦«t|d=n§d}t|dd…D]&}|tt|dvrd}nŒ'|r3t|dd…t|dgzt|<n4| t|d¦«t|d=|rUdt d„|t|¦«vr6t|gkr%t||¦«td¦«||z}n>tjt|¦«}tt|¦«dk�°‹|gkr|g}|||<�ŒÞ|S)Nrrcó—||kS)N©)ÚxÚys rjúzget_needs..îs €°a¸1²f€rlzQget_needs: no progress in sorting needs, probably circular dependence, skipping. ) rtrgÚcopyÚlenrurwÚmapÚprintrr)ÚresrzÚoutÚsaveoutryrhs rjÚ get_needsrŒÙsÜ€à €CÝ �]Š]‰_Œ_ðñˆØˆÝ”)�H QœKÑ(Ô(ˆÝ•(˜1”+ÑÔ Ò"Ñ"ݘŒ{˜1Œ~¥UÐ*Ð*Ø— ’ �8 Aœ; qœ>Ñ*Ô*Ð*ݘQ”K �N�Nà�Ý! !œ Q R Rœðð�AØ�E¥(¨1¤+¨a¤.Ô1Ð1Ð1Ø ˜Ø˜ð2ðð'Ý"*¨1¤+¨a¨b¨b¤/µX¸a´[À´^Ð4DÑ"D•H˜Q‘K�Kà—J’J�x¨œ{¨1œ~Ñ.Ô.Ð.Ý  œ  A˜Øð ˜A¥SÐ)<Ð)<¸gÅxÐPQÄ{Ñ%SÔ%SÐSÐSÝ  œ  rÒ)Ð)Ý�a˜Ñ!Ô!Ð!ÝØhñjôjðjà˜G‘m�ØÝ”i¥¨¤ Ñ,Ô,ˆGõ-•(˜1”+ÑÔ Ò"Ñ"ð. �"Š9ˆ9Ø�#ˆC؈ˆA‰‰Ø €Jrl)r)Ú__doc__Úsysr…ÚrÚversionÚ f2py_versionÚstderrÚwriterrrtrurrr rrr r r r rrkrprŒr�rlrjúr”s£ðððð € € € Ø € € € àÐÐÐÐÐàÔ"€ Ø Œ*Ô €ð¨¸ÐSUØØ r¸È2Øð ð €ð €Ø Ð.Ð /€ Ø Ð+Ð ,€ØÐ 7Ð8€ Ø Ð+Ð ,€Ø*Ð,IÐJÐØ Ð.Ð /€ Ø Ð%Ð &€Ø Ð.Ð /€ Ø4Ø(CØ)Eðð€ ð5Ø"<ðð€ ð *€ ˆ(ÑØ-€ ˆ*ÑØ-€ ˆ*Ñð€ˆÑð9€ˆÑØ,€ˆÑðC€ˆÑØE€Ð ÑØB€ˆÑØ<€ˆÑð€ˆÑð"€Ð Ñð€ˆÑð Vð ØñàH€ˆÑØK€Ð ÑØ1€ˆÑØ5€ˆÑð € ˆ,Ñð#€ ˆ(ÑðH#€ ˆ/ÑðH!€ ˆ+ÑðD€ ˆ,Ñð € ˆ&Ñð€ ˆ/Ñð € ˆ(Ñð € ˆ'ÑðMð ØñðOð Øñà)˜?€ÐÑØP€ Ð ÑàLð Øñà"- €ÐÑð&€ Ð !Ñ"ð%2 ?€ÐÑ à!]ð ØñðTð ØñðRð Øñà,AÐ+B€Ð'Ñ(à)vð Ø%ñ'à'7Ð&8€Ð"Ñ#à$lð Ø ñ"à&5Ð%6€Ð!Ñ"à#jð Øñ!à'˜j€ÐÑà]ð Øñà#+ *€ÐÑà uð Øñà.Ð/€ÐÑð"#€ Ð ÑðH'6Ð%6€Ð!Ñ"ð(*€ Ð %Ñ&ðT,¨_Ð=€ÐÑð"€ Ð Ñð%€ Ð Ñ!ð€ ˆ*Ñð  Ð+€€iÑð€ ˆ)Ñð€ ˆ.Ñð€ ˆ,Ñð"�l€€lÑð€ ˆ,Ñð(# JÐ/€€mÑð€ ˆ-Ñð" :Ð.€€lÑð€ ˆ,Ñð€ ˆ.Ñð € ˆ,Ñð € ˆ-Ñð€ ˆ-Ñð"Rð Ø ñð€ ˆ*Ñð '€ Ð "Ñ#ð4€€~Ñð€ÐÑð'€€yÑðP"LÐ!KÐ!K€ÐÑð"#€ÐÑðFGÐFÐF€ÐÑðb€ÐÑðHA"€ÐÑðF-Ð-€ÐÑð €ÐÑð$4°]Ð"C€ÐÑð $€ÐÑ ð.Ð.€ÐÑð €ÐÑð/€ÐÑðd-€ÐÑð`"-  €ÐÑð."€ÐÑðb$7¸ Ð"F€ÐÑð$€ÐÑ ð0(€ÐÑðV1Ð1€ÐÑð €ÐÑð+Hð+Hð+H€Ð&Ñ'ð,€Ð'Ñ(ð4'7Ð%7€Ð!Ñ"ðH'€Ð"Ñ#ðXÐ0ð%2€Ð Ñ!ð &€Ð!Ñ"ð&€Ð!Ñ"ð2!3Ð4HÐI€ÐÑðAðØñà';¸_Ð&M€Ð"Ñ#ð'eðØ"ñ$à';¸]Ð&K€Ð"Ñ#ð%]ðØ ñ"à!4Ð6JÐ K€ÐÑðEðØñà0Ð2FÐG€ÐÑà|ðØñà 2Ð4HÐI€ÐÑðAðØñð%@ð%@ð%@€Ð Ñ!ð#UðØñ à!4Ð6JÐ K€ÐÑðEðØñà"6Ð8LÐ!M€ÐÑð IðØñð)Oð)Oð)O€Ð$Ñ%ð'dðØ"ñ$ð*Qð*Qð*Q€Ð%Ñ&ð(hðØ#ñ%ðGÐFÐF€ÐÑð@€ÐÑðF ~ð ~ð ~ð@ð@ð@ð@ðF ð ð ð ð rl