proteus 1.9.0
C/C++/Fortran libraries
Loading...
Searching...
No Matches
canalyticalSolutions.c
Go to the documentation of this file.
1/* Generated by Cython 3.3.0 */
2
3/* BEGIN: Cython Metadata
4{
5 "distutils": {
6 "depends": [
7 "/work/cekees/miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayobject.h",
8 "/work/cekees/miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayscalars.h",
9 "/work/cekees/miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarrayobject.h",
10 "/work/cekees/miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarraytypes.h",
11 "/work/cekees/miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/_core/include/numpy/ufuncobject.h",
12 "proteus/analyticalSolutions.h"
13 ],
14 "include_dirs": [
15 "proteus",
16 "/work/cekees/miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/_core/include"
17 ],
18 "language": "c",
19 "name": "canalyticalSolutions",
20 "sources": [
21 "proteus/canalyticalSolutions.pyx",
22 "proteus/analyticalSolutions.c"
23 ]
24 },
25 "module_name": "canalyticalSolutions"
26}
27END: Cython Metadata */
28
29#ifndef PY_SSIZE_T_CLEAN
30#define PY_SSIZE_T_CLEAN
31#endif /* PY_SSIZE_T_CLEAN */
32/* InitLimitedAPI */
33#if defined(Py_LIMITED_API)
34 #if !defined(CYTHON_LIMITED_API)
35 #define CYTHON_LIMITED_API 1
36 #endif
37#elif defined(CYTHON_LIMITED_API)
38 #ifdef _MSC_VER
39 #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.")
40 #else
41 #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.
42 #endif
43#endif
44
45#include "Python.h"
46#ifndef Py_PYTHON_H
47 #error Python headers needed to compile C extensions, please install development version of Python.
48#elif PY_VERSION_HEX < 0x03090000
49 #error Cython requires Python 3.9+.
50#elif defined(Py_LIMITED_API) && (Py_LIMITED_API & 0xFFFF0000) > (PY_VERSION_HEX & 0xFFFF0000)
51 #error 'Py_LIMITED_API' can only select past Python X.Y versions, not future ones.
52#else
53#define __PYX_ABI_VERSION "3_3_0"
54#define CYTHON_HEX_VERSION 0x030300F0
55#define CYTHON_FUTURE_DIVISION 1
56/* CModulePreamble */
57#include <stddef.h>
58#ifndef offsetof
59 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
60#endif
61#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
62 #ifndef __stdcall
63 #define __stdcall
64 #endif
65 #ifndef __cdecl
66 #define __cdecl
67 #endif
68 #ifndef __fastcall
69 #define __fastcall
70 #endif
71#endif
72#ifdef __has_builtin
73 #define __Pyx_has_cbuiltin(name) __has_builtin(name)
74#else
75 #define __Pyx_has_cbuiltin(name) (0)
76#endif
77#ifndef DL_IMPORT
78 #define DL_IMPORT(t) t
79#endif
80#ifndef DL_EXPORT
81 #define DL_EXPORT(t) t
82#endif
83#define __PYX_COMMA ,
84#ifndef PY_LONG_LONG
85 #define PY_LONG_LONG LONG_LONG
86#endif
87#ifndef Py_HUGE_VAL
88 #define Py_HUGE_VAL HUGE_VAL
89#endif
90#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
91#if defined(CYTHON_LIMITED_API)
92 #ifdef Py_LIMITED_API
93 #undef __PYX_LIMITED_VERSION_HEX
94 #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
95 #if Py_LIMITED_API < 0x03090000
96 #error "Cython 3.3 requires the Python Limited API version to be 3.9 or greater."
97 #endif
98 #endif
99 #if defined(GRAALVM_PYTHON) || defined(PYPY_VERSION)
100 #ifdef _MSC_VER
101 #pragma message ("Py_LIMITED_API is defined on PyPy or GraalPy. This takes precedence over Cython's specialized\
102 code for PyPy and GraalPy and is unlikely to work.")
103 #else
104 #warning "Py_LIMITED_API is defined on PyPy or GraalPy. This takes precedence over Cython's specialized\
105 code for PyPy and GraalPy and is unlikely to work."
106 #endif
107 #endif
108 #define CYTHON_COMPILING_IN_PYPY 0
109 #define CYTHON_COMPILING_IN_CPYTHON 0
110 #define CYTHON_COMPILING_IN_LIMITED_API 1
111 #define CYTHON_COMPILING_IN_GRAAL 0
112 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
113 #undef CYTHON_USE_TYPE_SLOTS
114 #define CYTHON_USE_TYPE_SLOTS 0
115 #undef CYTHON_USE_TYPE_SPECS
116 #define CYTHON_USE_TYPE_SPECS 1
117 #undef CYTHON_USE_PYTYPE_LOOKUP
118 #define CYTHON_USE_PYTYPE_LOOKUP 0
119 #undef CYTHON_USE_PYLIST_INTERNALS
120 #define CYTHON_USE_PYLIST_INTERNALS 0
121 #undef CYTHON_USE_UNICODE_INTERNALS
122 #define CYTHON_USE_UNICODE_INTERNALS 0
123 #ifndef CYTHON_USE_UNICODE_WRITER
124 #define CYTHON_USE_UNICODE_WRITER 0
125 #endif
126 #undef CYTHON_USE_PYLONG_INTERNALS
127 #define CYTHON_USE_PYLONG_INTERNALS 0
128 #ifndef CYTHON_AVOID_BORROWED_REFS
129 #define CYTHON_AVOID_BORROWED_REFS 0
130 #endif
131 #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
132 #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
133 #endif
134 #undef CYTHON_ASSUME_SAFE_MACROS
135 #define CYTHON_ASSUME_SAFE_MACROS 0
136 #undef CYTHON_ASSUME_SAFE_SIZE
137 #define CYTHON_ASSUME_SAFE_SIZE 0
138 #undef CYTHON_UNPACK_METHODS
139 #define CYTHON_UNPACK_METHODS 0
140 #undef CYTHON_FAST_THREAD_STATE
141 #define CYTHON_FAST_THREAD_STATE 0
142 #undef CYTHON_FAST_GIL
143 #define CYTHON_FAST_GIL 0
144 #undef CYTHON_VECTORCALL
145 #define CYTHON_VECTORCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
146 #ifndef CYTHON_VECTORCALL_TPNEW
147 #define CYTHON_VECTORCALL_TPNEW (CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030E0000)
148 #endif
149 #ifndef CYTHON_PEP487_INIT_SUBCLASS
150 #define CYTHON_PEP487_INIT_SUBCLASS 1
151 #endif
152 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
153 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
154 #endif
155 #ifndef CYTHON_USE_MODULE_STATE
156 #define CYTHON_USE_MODULE_STATE 0
157 #endif
158 #undef CYTHON_USE_SYS_MONITORING
159 #define CYTHON_USE_SYS_MONITORING 0
160 #ifndef CYTHON_USE_TP_FINALIZE
161 #define CYTHON_USE_TP_FINALIZE (__PYX_LIMITED_VERSION_HEX >= 0x030F0000 && PY_VERSION_HEX > 0x030F00A8)
162 #endif
163 #ifndef CYTHON_USE_AM_SEND
164 #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000)
165 #endif
166 #undef CYTHON_USE_DICT_VERSIONS
167 #define CYTHON_USE_DICT_VERSIONS 0
168 #undef CYTHON_USE_EXC_INFO_STACK
169 #define CYTHON_USE_EXC_INFO_STACK 0
170 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
171 #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
172 #endif
173 #ifndef CYTHON_USE_OWN_PREP_RERAISE_STAR
174 #define CYTHON_USE_OWN_PREP_RERAISE_STAR 1
175 #endif
176 #ifndef CYTHON_USE_FREELISTS
177 #define CYTHON_USE_FREELISTS 1
178 #endif
179 #undef CYTHON_IMMORTAL_CONSTANTS
180 #define CYTHON_IMMORTAL_CONSTANTS 0
181 #if __PYX_LIMITED_VERSION_HEX < 0x030E0000
182 #undef CYTHON_OPAQUE_OBJECTS
183 #define CYTHON_OPAQUE_OBJECTS 0
184 #elif !defined(CYTHON_OPAQUE_OBJECTS)
185 #define CYTHON_OPAQUE_OBJECTS (__PYX_LIMITED_VERSION_HEX >= 0x030F0000)
186 #endif
187#elif defined(GRAALVM_PYTHON)
188 /* For very preliminary testing purposes. Most variables are set the same as PyPy.
189 The existence of this section does not imply that anything works or is even tested */
190 #define CYTHON_COMPILING_IN_PYPY 0
191 #define CYTHON_COMPILING_IN_CPYTHON 0
192 #define CYTHON_COMPILING_IN_LIMITED_API 0
193 #define CYTHON_COMPILING_IN_GRAAL 1
194 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
195 #ifndef CYTHON_USE_TYPE_SLOTS
196 #define CYTHON_USE_TYPE_SLOTS 0
197 #endif
198 #undef CYTHON_USE_TYPE_SPECS
199 #define CYTHON_USE_TYPE_SPECS 0
200 #undef CYTHON_USE_PYTYPE_LOOKUP
201 #define CYTHON_USE_PYTYPE_LOOKUP 0
202 #undef CYTHON_USE_PYLIST_INTERNALS
203 #define CYTHON_USE_PYLIST_INTERNALS 0
204 #undef CYTHON_USE_UNICODE_INTERNALS
205 #define CYTHON_USE_UNICODE_INTERNALS 0
206 #undef CYTHON_USE_UNICODE_WRITER
207 #define CYTHON_USE_UNICODE_WRITER 0
208 #undef CYTHON_USE_PYLONG_INTERNALS
209 #define CYTHON_USE_PYLONG_INTERNALS 0
210 #undef CYTHON_AVOID_BORROWED_REFS
211 #define CYTHON_AVOID_BORROWED_REFS 1
212 #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
213 #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
214 #undef CYTHON_ASSUME_SAFE_MACROS
215 #define CYTHON_ASSUME_SAFE_MACROS 0
216 #undef CYTHON_ASSUME_SAFE_SIZE
217 #define CYTHON_ASSUME_SAFE_SIZE 0
218 #undef CYTHON_UNPACK_METHODS
219 #define CYTHON_UNPACK_METHODS 0
220 #undef CYTHON_FAST_THREAD_STATE
221 #define CYTHON_FAST_THREAD_STATE 0
222 #undef CYTHON_FAST_GIL
223 #define CYTHON_FAST_GIL 0
224 #ifndef CYTHON_VECTORCALL
225 #define CYTHON_VECTORCALL 1
226 #endif
227 #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX < 0x030E0000
228 #undef CYTHON_VECTORCALL_TPNEW
229 #define CYTHON_VECTORCALL_TPNEW 0
230 #elif !defined(CYTHON_VECTORCALL_TPNEW)
231 #define CYTHON_VECTORCALL_TPNEW CYTHON_VECTORCALL
232 #endif
233 #ifndef CYTHON_PEP487_INIT_SUBCLASS
234 #define CYTHON_PEP487_INIT_SUBCLASS 1
235 #endif
236 #undef CYTHON_PEP489_MULTI_PHASE_INIT
237 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
238 #undef CYTHON_USE_MODULE_STATE
239 #define CYTHON_USE_MODULE_STATE 0
240 #undef CYTHON_USE_SYS_MONITORING
241 #define CYTHON_USE_SYS_MONITORING 0
242 #undef CYTHON_USE_TP_FINALIZE
243 #define CYTHON_USE_TP_FINALIZE 0
244 #undef CYTHON_USE_AM_SEND
245 #define CYTHON_USE_AM_SEND 0
246 #undef CYTHON_USE_DICT_VERSIONS
247 #define CYTHON_USE_DICT_VERSIONS 0
248 #undef CYTHON_USE_EXC_INFO_STACK
249 #define CYTHON_USE_EXC_INFO_STACK 1
250 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
251 #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
252 #endif
253 #ifndef CYTHON_USE_OWN_PREP_RERAISE_STAR
254 #define CYTHON_USE_OWN_PREP_RERAISE_STAR 1
255 #endif
256 #undef CYTHON_USE_FREELISTS
257 #define CYTHON_USE_FREELISTS 0
258 #undef CYTHON_IMMORTAL_CONSTANTS
259 #define CYTHON_IMMORTAL_CONSTANTS 0
260 #undef CYTHON_OPAQUE_OBJECTS
261 #define CYTHON_OPAQUE_OBJECTS 0
262#elif defined(PYPY_VERSION)
263 #define CYTHON_COMPILING_IN_PYPY 1
264 #define CYTHON_COMPILING_IN_CPYTHON 0
265 #define CYTHON_COMPILING_IN_LIMITED_API 0
266 #define CYTHON_COMPILING_IN_GRAAL 0
267 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
268 #undef CYTHON_USE_TYPE_SLOTS
269 #define CYTHON_USE_TYPE_SLOTS 1
270 #ifndef CYTHON_USE_TYPE_SPECS
271 #define CYTHON_USE_TYPE_SPECS 0
272 #endif
273 #undef CYTHON_USE_PYTYPE_LOOKUP
274 #define CYTHON_USE_PYTYPE_LOOKUP 0
275 #undef CYTHON_USE_PYLIST_INTERNALS
276 #define CYTHON_USE_PYLIST_INTERNALS 0
277 #undef CYTHON_USE_UNICODE_INTERNALS
278 #define CYTHON_USE_UNICODE_INTERNALS 0
279 #undef CYTHON_USE_UNICODE_WRITER
280 #define CYTHON_USE_UNICODE_WRITER 0
281 #undef CYTHON_USE_PYLONG_INTERNALS
282 #define CYTHON_USE_PYLONG_INTERNALS 0
283 #undef CYTHON_AVOID_BORROWED_REFS
284 #define CYTHON_AVOID_BORROWED_REFS 1
285 #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
286 #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
287 #undef CYTHON_ASSUME_SAFE_MACROS
288 #define CYTHON_ASSUME_SAFE_MACROS 0
289 #ifndef CYTHON_ASSUME_SAFE_SIZE
290 #define CYTHON_ASSUME_SAFE_SIZE 1
291 #endif
292 #undef CYTHON_UNPACK_METHODS
293 #define CYTHON_UNPACK_METHODS 0
294 #undef CYTHON_FAST_THREAD_STATE
295 #define CYTHON_FAST_THREAD_STATE 0
296 #undef CYTHON_FAST_GIL
297 #define CYTHON_FAST_GIL 0
298 #ifndef CYTHON_VECTORCALL
299 #define CYTHON_VECTORCALL 1
300 #endif
301 #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX < 0x030E0000
302 #undef CYTHON_VECTORCALL_TPNEW
303 #define CYTHON_VECTORCALL_TPNEW 0
304 #elif !defined(CYTHON_VECTORCALL_TPNEW)
305 #define CYTHON_VECTORCALL_TPNEW (PYPY_VERSION_NUM >= 0x07030800 && CYTHON_VECTORCALL)
306 #endif
307 #ifndef CYTHON_PEP487_INIT_SUBCLASS
308 #define CYTHON_PEP487_INIT_SUBCLASS 1
309 #endif
310 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
311 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
312 #endif
313 #undef CYTHON_USE_MODULE_STATE
314 #define CYTHON_USE_MODULE_STATE 0
315 #undef CYTHON_USE_SYS_MONITORING
316 #define CYTHON_USE_SYS_MONITORING 0
317 #ifndef CYTHON_USE_TP_FINALIZE
318 #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00)
319 #endif
320 #undef CYTHON_USE_AM_SEND
321 #define CYTHON_USE_AM_SEND 0
322 #undef CYTHON_USE_DICT_VERSIONS
323 #define CYTHON_USE_DICT_VERSIONS 0
324 #undef CYTHON_USE_EXC_INFO_STACK
325 #define CYTHON_USE_EXC_INFO_STACK 0
326 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
327 #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_NUM >= 0x07031100)
328 #endif
329 #ifndef CYTHON_USE_OWN_PREP_RERAISE_STAR
330 #define CYTHON_USE_OWN_PREP_RERAISE_STAR 1
331 #endif
332 #undef CYTHON_USE_FREELISTS
333 #define CYTHON_USE_FREELISTS 0
334 #undef CYTHON_IMMORTAL_CONSTANTS
335 #define CYTHON_IMMORTAL_CONSTANTS 0
336 #undef CYTHON_OPAQUE_OBJECTS
337 #define CYTHON_OPAQUE_OBJECTS 0
338#else
339 #define CYTHON_COMPILING_IN_PYPY 0
340 #define CYTHON_COMPILING_IN_CPYTHON 1
341 #define CYTHON_COMPILING_IN_LIMITED_API 0
342 #define CYTHON_COMPILING_IN_GRAAL 0
343 #ifdef Py_GIL_DISABLED
344 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1
345 #else
346 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
347 #endif
348 #if PY_VERSION_HEX < 0x030A0000
349 #undef CYTHON_USE_TYPE_SLOTS
350 #define CYTHON_USE_TYPE_SLOTS 1
351 #elif !defined(CYTHON_USE_TYPE_SLOTS)
352 #define CYTHON_USE_TYPE_SLOTS 1
353 #endif
354 #ifndef CYTHON_USE_TYPE_SPECS
355 #define CYTHON_USE_TYPE_SPECS 0
356 #endif
357 #ifndef CYTHON_USE_PYTYPE_LOOKUP
358 #define CYTHON_USE_PYTYPE_LOOKUP 1
359 #endif
360 #ifndef CYTHON_USE_PYLONG_INTERNALS
361 #define CYTHON_USE_PYLONG_INTERNALS 1
362 #endif
363 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
364 #undef CYTHON_USE_PYLIST_INTERNALS
365 #define CYTHON_USE_PYLIST_INTERNALS 0
366 #elif !defined(CYTHON_USE_PYLIST_INTERNALS)
367 #define CYTHON_USE_PYLIST_INTERNALS 1
368 #endif
369 #ifndef CYTHON_USE_UNICODE_INTERNALS
370 #define CYTHON_USE_UNICODE_INTERNALS 1
371 #endif
372 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || PY_VERSION_HEX >= 0x030B00A2
373 #undef CYTHON_USE_UNICODE_WRITER
374 #define CYTHON_USE_UNICODE_WRITER 0
375 #elif !defined(CYTHON_USE_UNICODE_WRITER)
376 #define CYTHON_USE_UNICODE_WRITER 1
377 #endif
378 #ifndef CYTHON_AVOID_BORROWED_REFS
379 #define CYTHON_AVOID_BORROWED_REFS 0
380 #endif
381 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
382 #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
383 #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
384 #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)
385 #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
386 #endif
387 #ifndef CYTHON_ASSUME_SAFE_MACROS
388 #define CYTHON_ASSUME_SAFE_MACROS 1
389 #endif
390 #ifndef CYTHON_ASSUME_SAFE_SIZE
391 #define CYTHON_ASSUME_SAFE_SIZE 1
392 #endif
393 #ifndef CYTHON_UNPACK_METHODS
394 #define CYTHON_UNPACK_METHODS 1
395 #endif
396 #ifndef CYTHON_FAST_THREAD_STATE
397 #define CYTHON_FAST_THREAD_STATE 1
398 #endif
399 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
400 #undef CYTHON_FAST_GIL
401 #define CYTHON_FAST_GIL 0
402 #elif !defined(CYTHON_FAST_GIL)
403 #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6)
404 #endif
405 #ifndef CYTHON_VECTORCALL
406 #define CYTHON_VECTORCALL 1
407 #endif
408 #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX < 0x030E0000
409 #undef CYTHON_VECTORCALL_TPNEW
410 #define CYTHON_VECTORCALL_TPNEW 0
411 #elif !defined(CYTHON_VECTORCALL_TPNEW)
412 #define CYTHON_VECTORCALL_TPNEW CYTHON_VECTORCALL
413 #endif
414 #ifndef CYTHON_PEP487_INIT_SUBCLASS
415 #define CYTHON_PEP487_INIT_SUBCLASS 1
416 #endif
417 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
418 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
419 #endif
420 #ifndef CYTHON_USE_MODULE_STATE
421 #define CYTHON_USE_MODULE_STATE 0
422 #endif
423 #ifndef CYTHON_USE_SYS_MONITORING
424 #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1)
425 #endif
426 #ifndef CYTHON_USE_TP_FINALIZE
427 #define CYTHON_USE_TP_FINALIZE 1
428 #endif
429 #ifndef CYTHON_USE_AM_SEND
430 #define CYTHON_USE_AM_SEND 1
431 #endif
432 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
433 #undef CYTHON_USE_DICT_VERSIONS
434 #define CYTHON_USE_DICT_VERSIONS 0
435 #elif !defined(CYTHON_USE_DICT_VERSIONS)
436 #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5 && !CYTHON_USE_MODULE_STATE)
437 #endif
438 #ifndef CYTHON_USE_EXC_INFO_STACK
439 #define CYTHON_USE_EXC_INFO_STACK 1
440 #endif
441 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
442 #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
443 #endif
444 #ifndef CYTHON_USE_OWN_PREP_RERAISE_STAR
445 #define CYTHON_USE_OWN_PREP_RERAISE_STAR (PY_VERSION_HEX < 0x030C00B2)
446 #endif
447 #ifndef CYTHON_USE_FREELISTS
448 #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
449 #endif
450 #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000
451 #undef CYTHON_IMMORTAL_CONSTANTS
452 #define CYTHON_IMMORTAL_CONSTANTS 0 // definitely won't work
453 #elif !defined(CYTHON_IMMORTAL_CONSTANTS)
454 #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
455 #endif
456 #ifndef CYTHON_OPAQUE_OBJECTS
457 #define CYTHON_OPAQUE_OBJECTS 0
458 #endif
459#endif
460#if CYTHON_USE_PYLONG_INTERNALS
461 #undef SHIFT
462 #undef BASE
463 #undef MASK
464 #ifdef SIZEOF_VOID_P
465 enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
466 #endif
467#endif
468#ifndef __has_attribute
469 #define __has_attribute(x) 0
470#endif
471#ifndef __has_cpp_attribute
472 #define __has_cpp_attribute(x) 0
473#endif
474#ifndef CYTHON_RESTRICT
475 #if defined(__GNUC__)
476 #define CYTHON_RESTRICT __restrict__
477 #elif defined(_MSC_VER) && _MSC_VER >= 1400
478 #define CYTHON_RESTRICT __restrict
479 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
480 #define CYTHON_RESTRICT restrict
481 #else
482 #define CYTHON_RESTRICT
483 #endif
484#endif
485#ifndef CYTHON_UNUSED
486 #if defined(__cplusplus)
487 /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
488 * but leads to warnings with -pedantic, since it is a C++17 feature */
489 #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
490 #if __has_cpp_attribute(maybe_unused)
491 #define CYTHON_UNUSED [[maybe_unused]]
492 #endif
493 #endif
494 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
495 #define CYTHON_UNUSED [[maybe_unused]]
496 #endif
497#endif
498#ifndef CYTHON_UNUSED
499# if defined(__GNUC__)
500# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
501# define CYTHON_UNUSED __attribute__ ((__unused__))
502# else
503# define CYTHON_UNUSED
504# endif
505# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
506# define CYTHON_UNUSED __attribute__ ((__unused__))
507# else
508# define CYTHON_UNUSED
509# endif
510#endif
511#ifndef CYTHON_UNUSED_VAR
512# if defined(__cplusplus)
513 template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
514# else
515# define CYTHON_UNUSED_VAR(x) (void)(x)
516# endif
517#endif
518#ifndef CYTHON_MAYBE_UNUSED_VAR
519 #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
520#endif
521#ifndef CYTHON_NCP_UNUSED
522# if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
523# define CYTHON_NCP_UNUSED
524# else
525# define CYTHON_NCP_UNUSED CYTHON_UNUSED
526# endif
527#endif
528#ifndef CYTHON_USE_CPP_STD_MOVE
529 #if defined(__cplusplus) && (\
530 __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
531 #define CYTHON_USE_CPP_STD_MOVE 1
532 #else
533 #define CYTHON_USE_CPP_STD_MOVE 0
534 #endif
535#endif
536#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
537#include <stdint.h>
538typedef uintptr_t __pyx_uintptr_t;
539#ifndef CYTHON_FALLTHROUGH
540 #if defined(__cplusplus)
541 /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
542 * but leads to warnings with -pedantic, since it is a C++17 feature */
543 #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
544 #if __has_cpp_attribute(fallthrough)
545 #define CYTHON_FALLTHROUGH [[fallthrough]]
546 #endif
547 #endif
548 #ifndef CYTHON_FALLTHROUGH
549 #if __has_cpp_attribute(clang::fallthrough)
550 #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
551 #elif __has_cpp_attribute(gnu::fallthrough)
552 #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
553 #endif
554 #endif
555 #endif
556 #ifndef CYTHON_FALLTHROUGH
557 #if __has_attribute(fallthrough)
558 #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
559 #else
560 #define CYTHON_FALLTHROUGH
561 #endif
562 #endif
563 #if defined(__clang__) && defined(__apple_build_version__)
564 #if __apple_build_version__ < 7000000
565 #undef CYTHON_FALLTHROUGH
566 #define CYTHON_FALLTHROUGH
567 #endif
568 #endif
569#endif
570#ifdef Py_UNREACHABLE
571 #define __Pyx_UNREACHABLE() Py_UNREACHABLE()
572#elif __Pyx_has_cbuiltin(__builtin_unreachable)
573 #define __Pyx_UNREACHABLE() __builtin_unreachable()
574#elif defined(__clang__) || defined(__INTEL_COMPILER) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)))
575 #define __Pyx_UNREACHABLE() __builtin_unreachable()
576#elif defined(_MSC_VER)
577 #define __Pyx_UNREACHABLE() __assume(0)
578#else
579 #define __Pyx_UNREACHABLE() Py_FatalError("Unreachable C code path reached")
580#endif
581#ifndef Py_UNREACHABLE
582 #define Py_UNREACHABLE() __Pyx_UNREACHABLE()
583#endif
584#ifdef __cplusplus
585 template <typename T>
586 struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
587 #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
588#else
589 #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
590#endif
591#if CYTHON_COMPILING_IN_PYPY == 1
592 #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x030A0000)
593#else
594 #define __PYX_NEED_TP_PRINT_SLOT 0
595#endif
596#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
597#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
598#define __Pyx_PyErr_FetchException(petype, peval, petb) PyErr_Fetch(petype, peval, petb)
599#define __Pyx_PyErr_RestoreException(etype, eval, etb) PyErr_Restore(etype, eval, etb)
600#else
601#define __Pyx_PyErr_FetchException(petype, peval, petb) *(petype)=NULL; *(peval)=PyErr_GetRaisedException(); *(petb)=NULL
602#define __Pyx_PyErr_RestoreException(etype, eval, etb) PyErr_SetRaisedException(eval)
603#endif
604
605/* CInitCode */
606#ifndef CYTHON_INLINE
607 #if defined(__clang__)
608 #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
609 #elif defined(__GNUC__)
610 #define CYTHON_INLINE __inline__
611 #elif defined(_MSC_VER)
612 #define CYTHON_INLINE __inline
613 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
614 #define CYTHON_INLINE inline
615 #else
616 #define CYTHON_INLINE
617 #endif
618#endif
619
620/* PythonCompatibility */
621#define __PYX_BUILD_PY_SSIZE_T "n"
622#define CYTHON_FORMAT_SSIZE_T "z"
623#define __Pyx_BUILTIN_MODULE_NAME "builtins"
624#define __Pyx_DefaultClassType PyType_Type
625#if CYTHON_COMPILING_IN_LIMITED_API
626 #ifndef CO_OPTIMIZED
627 static int CO_OPTIMIZED;
628 #endif
629 #ifndef CO_NEWLOCALS
630 static int CO_NEWLOCALS;
631 #endif
632 #ifndef CO_VARARGS
633 static int CO_VARARGS;
634 #endif
635 #ifndef CO_VARKEYWORDS
636 static int CO_VARKEYWORDS;
637 #endif
638 #ifndef CO_ASYNC_GENERATOR
639 static int CO_ASYNC_GENERATOR;
640 #endif
641 #ifndef CO_GENERATOR
642 static int CO_GENERATOR;
643 #endif
644 #ifndef CO_COROUTINE
645 static int CO_COROUTINE;
646 #endif
647#else
648 #ifndef CO_COROUTINE
649 #define CO_COROUTINE 0x80
650 #endif
651 #ifndef CO_ASYNC_GENERATOR
652 #define CO_ASYNC_GENERATOR 0x200
653 #endif
654#endif
655static int __Pyx_init_co_variables(void);
656#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
657 #define __Pyx_Py_Is(x, y) Py_Is(x, y)
658#else
659 #define __Pyx_Py_Is(x, y) ((x) == (y))
660#endif
661#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
662 #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
663#else
664 #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
665#endif
666#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
667 #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
668#else
669 #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
670#endif
671#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
672 #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
673#else
674 #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
675#endif
676#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj))
677#if CYTHON_COMPILING_IN_PYPY
678 #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
679#else
680 #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
681#endif
682#if CYTHON_COMPILING_IN_LIMITED_API
683static unsigned long __Pyx_Runtime_TPFLAGS_SEQUENCE;
684static unsigned long __Pyx_Runtime_TPFLAGS_MAPPING;
685#else
686#define __Pyx_Runtime_TPFLAGS_SEQUENCE Py_TPFLAGS_SEQUENCE
687#define __Pyx_Runtime_TPFLAGS_MAPPING Py_TPFLAGS_MAPPING
688#endif
689static int __Pyx_init_tpflags_variables(void);
690#ifndef Py_TPFLAGS_HAVE_FINALIZE
691 #define Py_TPFLAGS_HAVE_FINALIZE 0
692#endif
693#ifndef Py_TPFLAGS_SEQUENCE
694 #define Py_TPFLAGS_SEQUENCE (CYTHON_COMPILING_IN_LIMITED_API ? 0 : 1 << 5)
695#endif
696#ifndef Py_TPFLAGS_MAPPING
697 #define Py_TPFLAGS_MAPPING (CYTHON_COMPILING_IN_LIMITED_API ? 0 : 1 << 6)
698#endif
699#ifndef Py_TPFLAGS_IMMUTABLETYPE
700 #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
701#endif
702#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION
703 #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
704#endif
705#ifndef METH_STACKLESS
706 #define METH_STACKLESS 0
707#endif
708#if !defined(METH_FASTCALL) || CYTHON_COMPILING_IN_PYPY
709 #ifndef METH_FASTCALL
710 #define METH_FASTCALL 0x80
711 #endif
712 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
713 typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
714 Py_ssize_t nargs, PyObject *kwnames);
715#else
716 #if PY_VERSION_HEX >= 0x030d00A4
717 # define __Pyx_PyCFunctionFast PyCFunctionFast
718 # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
719 #else
720 # define __Pyx_PyCFunctionFast _PyCFunctionFast
721 # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
722 #endif
723#endif
724#if CYTHON_VECTORCALL
725 #define __Pyx_METH_FASTCALL METH_FASTCALL
726 #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
727 #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
728#else
729 #define __Pyx_METH_FASTCALL METH_VARARGS
730 #define __Pyx_PyCFunction_FastCall PyCFunction
731 #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
732#endif
733#if CYTHON_VECTORCALL
734 #define __pyx_vectorcallfunc vectorcallfunc
735 #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET
736 #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n))
737#else
738 #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0
739 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n))
740#endif
741#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func)
742#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func)
743#if CYTHON_COMPILING_IN_CPYTHON
744#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth)
745#elif !CYTHON_COMPILING_IN_LIMITED_API
746#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func)
747#endif
748#if CYTHON_COMPILING_IN_CPYTHON
749#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags)
750static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
751 return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
752}
753#endif
754static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(void)) {
755#if CYTHON_COMPILING_IN_LIMITED_API
756 return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
757#else
758 return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
759#endif
760}
761#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc)
762#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
763 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b))
764#else
765 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b)
766#endif
767#if CYTHON_COMPILING_IN_PYPY
768 typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
769#else
770 #define __Pyx_PyCMethod PyCMethod
771#endif
772#ifndef METH_METHOD
773 #define METH_METHOD 0x200
774#endif
775#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
776 #define PyObject_Malloc(s) PyMem_Malloc(s)
777 #define PyObject_Free(p) PyMem_Free(p)
778 #define PyObject_Realloc(p) PyMem_Realloc(p)
779#endif
780#if CYTHON_COMPILING_IN_LIMITED_API
781 #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
782#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
783 #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
784 #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno))
785#elif CYTHON_COMPILING_IN_GRAAL
786 #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
787 #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno))
788#else
789 #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
790 #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
791#endif
792#if CYTHON_COMPILING_IN_LIMITED_API
793 #define __Pyx_PyThreadState_Current PyThreadState_Get()
794#elif !CYTHON_FAST_THREAD_STATE
795 #define __Pyx_PyThreadState_Current PyThreadState_GET()
796#elif PY_VERSION_HEX >= 0x030d00A1
797 #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
798#else
799 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
800#endif
801#if CYTHON_OPAQUE_OBJECTS && CYTHON_COMPILING_IN_LIMITED_API
802 #define __PYX_SHARED_SIZEOF(T) -((int)sizeof(T))
803 #define __PYX_SHARED_RELATIVE_OFFSET Py_RELATIVE_OFFSET
804 #define CYTHON_OPAQUE_SHARED_TYPES 1
805#else
806 #define __PYX_SHARED_SIZEOF(T) sizeof(T)
807 #define __PYX_SHARED_RELATIVE_OFFSET 0
808 #define CYTHON_OPAQUE_SHARED_TYPES 0
809#endif
810#if CYTHON_USE_MODULE_STATE
811static CYTHON_INLINE void *__Pyx__PyModule_GetState(PyObject *op)
812{
813 void *result;
814 result = PyModule_GetState(op);
815 if (!result)
816 Py_FatalError("Couldn't find the module state");
817 return result;
818}
819#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o)
820#else
821#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global)
822#endif
823#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype)
824#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype)
825#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
826#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
827#if CYTHON_USE_TYPE_SLOTS
828 #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name)
829 #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype)
830 #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL)
831 #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype)
832#else
833 #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name))
834 #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\
835 ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\
836 (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\
837 __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL)
838 #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype)
839 #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype)
840#endif
841#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
842#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
843#else
844#define __Pyx_PyDict_NewPresized(n) PyDict_New()
845#endif
846#define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
847#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
848#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_UNICODE_INTERNALS
849#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
850static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
851 PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
852 if (res == NULL && PyErr_Occurred()) {
853 PyErr_WriteUnraisable(NULL);
854 }
855 return res;
856}
857#elif !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000
858#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError
859#define __Pyx_PyDict_GetItemStr PyDict_GetItem
860#else
861static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
862#if CYTHON_COMPILING_IN_PYPY
863 return PyDict_GetItem(dict, name);
864#else
865 PyDictEntry *ep;
866 PyDictObject *mp = (PyDictObject*) dict;
867 long hash = ((PyStringObject *) name)->ob_shash;
868 assert(hash != -1);
869 ep = (mp->ma_lookup)(mp, name, hash);
870 if (ep == NULL) {
871 return NULL;
872 }
873 return ep->me_value;
874#endif
875}
876#define __Pyx_PyDict_GetItemStr PyDict_GetItem
877#endif
878#if CYTHON_USE_TYPE_SLOTS
879 #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags)
880 #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
881#else
882 #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp))
883 #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature)
884#endif
885#define __Pyx_PyObject_GetIterNextFunc(iterator) __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc)
886#if CYTHON_USE_TYPE_SPECS
887#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\
888 PyTypeObject *type = Py_TYPE((PyObject*)obj);\
889 assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
890 PyObject_GC_Del(obj);\
891 Py_DECREF(type);\
892}
893#else
894#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj)
895#endif
896#if CYTHON_COMPILING_IN_LIMITED_API
897 #define __Pyx_PyUnicode_READY(op) (0)
898 #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
899 #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U)
900 #define __Pyx_PyUnicode_KIND(u) ((void)u, (0))
901 #define __Pyx_PyUnicode_KIND_04(u) __Pyx_PyUnicode_KIND(u)
902 #define __Pyx_PyUnicode_DATA(u) ((void*)u)
903 #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
904 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u))
905#else
906 #if PY_VERSION_HEX >= 0x030C0000
907 #define __Pyx_PyUnicode_READY(op) (0)
908 #else
909 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
910 0 : _PyUnicode_Ready((PyObject *)(op)))
911 #endif
912 #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
913 #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
914 #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u))
915 #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
916 #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
917 #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
918 #if PY_VERSION_HEX >= 0x030C0000
919 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
920 #else
921 #if CYTHON_COMPILING_IN_CPYTHON
922 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
923 #else
924 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
925 #endif
926 #endif
927 static CYTHON_INLINE int __Pyx_PyUnicode_KIND_04(PyObject *o) {
928 return __Pyx_PyUnicode_KIND(o) - (int) !!PyUnicode_IS_ASCII(o);
929 }
930#endif
931#if CYTHON_COMPILING_IN_PYPY
932 #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
933 #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
934#else
935 #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
936 #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
937 PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
938#endif
939#if CYTHON_COMPILING_IN_PYPY
940 #if !defined(PyUnicode_DecodeUnicodeEscape)
941 #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors)
942 #endif
943 #if !defined(PyUnicode_Contains)
944 #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
945 #endif
946 #if !defined(PyByteArray_Check)
947 #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
948 #endif
949 #if !defined(PyObject_Format)
950 #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
951 #endif
952#endif
953#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
954#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
955 #define __Pyx_PySequence_ListKeepNew(obj)\
956 (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj))
957#elif CYTHON_COMPILING_IN_CPYTHON
958 #define __Pyx_PySequence_ListKeepNew(obj)\
959 (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
960#else
961 #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj)
962#endif
963#ifndef PySet_CheckExact
964 #define PySet_CheckExact(obj) Py_IS_TYPE(obj, &PySet_Type)
965#endif
966enum __Pyx_ReferenceSharing {
967 __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check
968 __Pyx_ReferenceSharing_OwnStrongReference,
969 __Pyx_ReferenceSharing_FunctionArgument,
970 __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar
971};
972#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000
973#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\
974 (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\
975 (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\
976 (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0)))
977#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API
978#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1)
979#else
980#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0)
981#endif
982#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
983 #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
984#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
985 #if CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
986 #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
987 #else
988 #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i)
989 #endif
990#elif CYTHON_COMPILING_IN_LIMITED_API || !(CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE)
991 #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i))
992#else
993 #define __Pyx_PyList_GetItemRef(o, i) (likely(__Pyx_is_valid_index(i, PyList_GET_SIZE(o))) ?\
994 __Pyx_NewRef(PyList_GET_ITEM(o, i)) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
995#endif
996#if CYTHON_AVOID_BORROWED_REFS || CYTHON_COMPILING_IN_LIMITED_API
997 #define __Pyx_PyList_GET_ITEM_REF(o, i, unsafe_shared) ((void)(unsafe_shared),\
998 __Pyx_PyList_GetItemRef(o, i))
999#elif CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
1000 #if CYTHON_ASSUME_SAFE_MACROS
1001 #define __Pyx_PyList_GET_ITEM_REF(o, i, unsafe_shared) (\
1002 __Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\
1003 __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i))
1004 #else
1005 #define __Pyx_PyList_GET_ITEM_REF(o, i, unsafe_shared) (\
1006 __Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\
1007 __Pyx_XNewRef(PyList_GetItem(o, i)) : __Pyx_PyList_GetItemRef(o, i))
1008 #endif
1009#elif CYTHON_ASSUME_SAFE_MACROS
1010 #define __Pyx_PyList_GET_ITEM_REF(o, i, unsafe_shared) ((void)(unsafe_shared),\
1011 __Pyx_NewRef(PyList_GET_ITEM(o, i)))
1012#else
1013 #define __Pyx_PyList_GET_ITEM_REF(o, i, unsafe_shared) ((void)(unsafe_shared),\
1014 __Pyx_XNewRef(PyList_GetItem(o, i)))
1015#endif
1016#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
1017#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result)
1018#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
1019static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
1020 *result = PyObject_GetItem(dict, key);
1021 if (*result == NULL) {
1022 if (PyErr_ExceptionMatches(PyExc_KeyError)) {
1023 PyErr_Clear();
1024 return 0;
1025 }
1026 return -1;
1027 }
1028 return 1;
1029}
1030#else
1031static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
1032 *result = PyDict_GetItemWithError(dict, key);
1033 if (*result == NULL) {
1034 return PyErr_Occurred() ? -1 : 0;
1035 }
1036 Py_INCREF(*result);
1037 return 1;
1038}
1039#endif
1040#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST
1041 #define __Pyx_VISIT_CONST(obj) Py_VISIT(obj)
1042#else
1043 #define __Pyx_VISIT_CONST(obj)
1044#endif
1045#if CYTHON_ASSUME_SAFE_MACROS
1046 #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
1047 #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
1048 #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
1049 #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i)
1050 #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
1051 #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i)
1052#else
1053 #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
1054 #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
1055 #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
1056 #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i)
1057 #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
1058 #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i)
1059#endif
1060#if CYTHON_ASSUME_SAFE_SIZE
1061 #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
1062 #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
1063 #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
1064 #define __Pyx_PyDict_GET_SIZE(o) PyDict_GET_SIZE(o)
1065 #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
1066 #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
1067 #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o)
1068#else
1069 #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
1070 #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
1071 #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
1072 #define __Pyx_PyDict_GET_SIZE(o) PyDict_Size(o)
1073 #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
1074 #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
1075 #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o)
1076#endif
1077#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString)
1078 #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
1079#endif
1080#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t
1081#define __Pyx_PyLong_AsHash_t __Pyx_PyIndex_AsSsize_t
1082#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000
1083 #define __Pyx_PySendResult PySendResult
1084#else
1085 typedef enum {
1086 PYGEN_RETURN = 0,
1087 PYGEN_ERROR = -1,
1088 PYGEN_NEXT = 1,
1089 } __Pyx_PySendResult;
1090#endif
1091#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3
1092 typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result);
1093#else
1094 #define __Pyx_pyiter_sendfunc sendfunc
1095#endif
1096#if !CYTHON_USE_AM_SEND
1097#define __PYX_HAS_PY_AM_SEND 0
1098#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000
1099#define __PYX_HAS_PY_AM_SEND 1
1100#else
1101#define __PYX_HAS_PY_AM_SEND 2 // our own backported implementation
1102#endif
1103#if __PYX_HAS_PY_AM_SEND < 2
1104 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
1105#else
1106 typedef struct {
1107 unaryfunc am_await;
1108 unaryfunc am_aiter;
1109 unaryfunc am_anext;
1110 __Pyx_pyiter_sendfunc am_send;
1111 } __Pyx_PyAsyncMethodsStruct;
1112 #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s))
1113#endif
1114#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0
1115 #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21)
1116#else
1117 #define __Pyx_TPFLAGS_HAVE_AM_SEND (0)
1118#endif
1119#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000
1120#ifdef __cplusplus
1121extern "C"
1122#endif
1123PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);
1124#endif
1125#if CYTHON_COMPILING_IN_LIMITED_API
1126static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) {
1127 int value;
1128 PyObject *py_value = PyObject_GetAttrString(inspect, name);
1129 if (!py_value) return 0;
1130 value = (int) PyLong_AsLong(py_value);
1131 Py_DECREF(py_value);
1132 *write_to = value;
1133 return value != -1 || !PyErr_Occurred();
1134}
1135static int __Pyx_init_co_variables(void) {
1136 PyObject *inspect;
1137 int result;
1138 inspect = PyImport_ImportModule("inspect");
1139 result =
1140#if !defined(CO_OPTIMIZED)
1141 __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) &&
1142#endif
1143#if !defined(CO_NEWLOCALS)
1144 __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) &&
1145#endif
1146#if !defined(CO_VARARGS)
1147 __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) &&
1148#endif
1149#if !defined(CO_VARKEYWORDS)
1150 __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) &&
1151#endif
1152#if !defined(CO_ASYNC_GENERATOR)
1153 __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) &&
1154#endif
1155#if !defined(CO_GENERATOR)
1156 __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) &&
1157#endif
1158#if !defined(CO_COROUTINE)
1159 __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) &&
1160#endif
1161 1;
1162 Py_DECREF(inspect);
1163 return result ? 0 : -1;
1164}
1165static int __Pyx_init_tpflags_bitcount(unsigned long flag) {
1166 int count = 0;
1167 while (flag) {
1168 count += (int) (flag & 1);
1169 flag >>= 1;
1170 }
1171 return count;
1172}
1173static int __Pyx_init_tpflags_variables(void) {
1174 if (__Pyx_Runtime_TPFLAGS_SEQUENCE != 0 && __Pyx_Runtime_TPFLAGS_MAPPING != 0) {
1175 return 0;
1176 }
1177 PyObject *collections_abc = PyImport_ImportModule("collections.abc");
1178 if (!collections_abc) return -1;
1179 int result = 0;
1180 PyObject *sequence = NULL, *mapping = NULL;
1181#if __PYX_LIMITED_VERSION_HEX >= 0x030D0000
1182 if (PyObject_GetOptionalAttrString(collections_abc, "Sequence", &sequence) != 1) goto fail;
1183 if (PyObject_GetOptionalAttrString(collections_abc, "Mapping", &mapping) != 1) goto fail;
1184#else
1185 sequence = PyObject_GetAttrString(collections_abc, "Sequence");
1186 if (!sequence) goto fail_attr_lookup;
1187 mapping = PyObject_GetAttrString(collections_abc, "Mapping");
1188 if (!mapping) goto fail_attr_lookup;
1189#endif
1190 if (!PyType_Check(sequence) || !PyType_Check(mapping)) goto fail;
1191 {
1192 unsigned long sequence_flags = PyType_GetFlags((PyTypeObject*)sequence);
1193 unsigned long mapping_flags = PyType_GetFlags((PyTypeObject*)mapping);
1194 unsigned long mutual_flags = sequence_flags & mapping_flags;
1195 sequence_flags = sequence_flags ^ mutual_flags;
1196 mapping_flags = mapping_flags ^ mutual_flags;
1197 if (__Pyx_Runtime_TPFLAGS_SEQUENCE == 0 && __Pyx_init_tpflags_bitcount(sequence_flags) == 1) {
1198 __Pyx_Runtime_TPFLAGS_SEQUENCE = sequence_flags;
1199 }
1200 if (__Pyx_Runtime_TPFLAGS_MAPPING == 0 && __Pyx_init_tpflags_bitcount(mapping_flags) == 1) {
1201 __Pyx_Runtime_TPFLAGS_MAPPING = mapping_flags;
1202 }
1203 }
1204 cleanup:
1205 Py_XDECREF(mapping);
1206 Py_XDECREF(sequence);
1207 Py_DECREF(collections_abc);
1208 return result;
1209#if __PYX_LIMITED_VERSION_HEX < 0x030D0000
1210 fail_attr_lookup:
1211 if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
1212 PyErr_Clear();
1213 }
1214#endif
1215 fail:
1216 result = PyErr_Occurred() ? -1 : 0;
1217 goto cleanup;
1218}
1219#else
1220static int __Pyx_init_co_variables(void) {
1221 return 0; // It's a limited API-only feature
1222}
1223static int __Pyx_init_tpflags_variables(void) {
1224 return 0; // It's a limited API-only feature
1225}
1226#endif
1227
1228/* MathInitCode */
1229#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
1230 #ifndef _USE_MATH_DEFINES
1231 #define _USE_MATH_DEFINES
1232 #endif
1233#endif
1234#include <math.h>
1235#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
1236#define __Pyx_truncl trunc
1237#else
1238#define __Pyx_truncl truncl
1239#endif
1240
1241#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME
1242#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 1
1243#endif
1244#ifndef CYTHON_CLINE_IN_TRACEBACK
1245#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME
1246#endif
1247#if CYTHON_CLINE_IN_TRACEBACK
1248#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; __pyx_clineno = __LINE__; (void) __pyx_clineno; }
1249#else
1250#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; }
1251#endif
1252#define __PYX_ERR(f_index, lineno, Ln_error) \
1253 { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
1254
1255#ifdef CYTHON_EXTERN_C
1256 #undef __PYX_EXTERN_C
1257 #define __PYX_EXTERN_C CYTHON_EXTERN_C
1258#elif defined(__PYX_EXTERN_C)
1259 #ifdef _MSC_VER
1260 #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
1261 #else
1262 #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
1263 #endif
1264#else
1265 #ifdef __cplusplus
1266 #define __PYX_EXTERN_C extern "C"
1267 #else
1268 #define __PYX_EXTERN_C extern
1269 #endif
1270#endif
1271
1272#define __PYX_HAVE__canalyticalSolutions
1273#define __PYX_HAVE_API__canalyticalSolutions
1274/* Early includes */
1275#include <string.h>
1276#include <stdio.h>
1277
1278 /* Using NumPy API declarations from "numpy/__init__.cython-30.pxd" */
1279
1280#include "numpy/arrayobject.h"
1281#include "numpy/ndarrayobject.h"
1282#include "numpy/ndarraytypes.h"
1283#include "numpy/arrayscalars.h"
1284#include "numpy/ufuncobject.h"
1285#include "analyticalSolutions.h"
1286#ifdef _OPENMP
1287#include <omp.h>
1288#endif /* _OPENMP */
1289
1290#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
1291#define CYTHON_WITHOUT_ASSERTIONS
1292#endif
1293
1294#ifdef CYTHON_FREETHREADING_COMPATIBLE
1295#if CYTHON_FREETHREADING_COMPATIBLE
1296#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
1297#else
1298#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1299#endif
1300#else
1301#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
1302#endif
1303#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1304#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
1305#define __PYX_DEFAULT_STRING_ENCODING ""
1306#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
1307#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
1308#define __Pyx_uchar_cast(c) ((unsigned char)c)
1309#define __Pyx_long_cast(x) ((long)x)
1310#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
1311 (sizeof(type) < sizeof(Py_ssize_t)) ||\
1312 (sizeof(type) > sizeof(Py_ssize_t) &&\
1313 likely(v < (type)PY_SSIZE_T_MAX ||\
1314 v == (type)PY_SSIZE_T_MAX) &&\
1315 (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
1316 v == (type)PY_SSIZE_T_MIN))) ||\
1317 (sizeof(type) == sizeof(Py_ssize_t) &&\
1318 (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
1319 v == (type)PY_SSIZE_T_MAX))) )
1320static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
1321 return (size_t) i < (size_t) limit;
1322}
1323#if defined (__cplusplus) && __cplusplus >= 201103L
1324 #include <cstdlib>
1325 #define __Pyx_sst_abs(value) std::abs(value)
1326#elif SIZEOF_INT >= SIZEOF_SIZE_T
1327 #define __Pyx_sst_abs(value) abs(value)
1328#elif SIZEOF_LONG >= SIZEOF_SIZE_T
1329 #define __Pyx_sst_abs(value) labs(value)
1330#elif defined (_MSC_VER)
1331 #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
1332#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
1333 #define __Pyx_sst_abs(value) llabs(value)
1334#elif defined (__GNUC__)
1335 #define __Pyx_sst_abs(value) __builtin_llabs(value)
1336#else
1337 #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
1338#endif
1339static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
1340static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
1341static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
1342static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
1343#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
1344#define __Pyx_PyBytes_FromString PyBytes_FromString
1345#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
1346static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
1347#if CYTHON_ASSUME_SAFE_MACROS
1348 #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
1349 #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
1350 #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
1351 #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
1352 #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
1353 #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
1354 #define __Pyx_PyByteArray_AsString(s) PyByteArray_AS_STRING(s)
1355#else
1356 #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AsString(s))
1357 #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AsString(s))
1358 #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AsString(s))
1359 #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AsString(s))
1360 #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AsString(s))
1361 #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AsString(s))
1362 #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s)
1363#endif
1364#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
1365#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
1366#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
1367#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
1368#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
1369#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
1370#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
1371#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
1372#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
1373#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o)
1374#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
1375static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) {
1376#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef)
1377 return Py_NewRef(obj);
1378#else
1379 Py_INCREF(obj);
1380 return obj;
1381#endif
1382}
1383static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) {
1384#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef)
1385 return Py_XNewRef(obj);
1386#else
1387 Py_XINCREF(obj);
1388 return obj;
1389#endif
1390}
1391static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b);
1392static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
1393static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
1394static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
1395static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x);
1396#define __Pyx_PyObject_RichCompareBool(a,b,cmp) __Pyx_PyObject_IsTrueAndDecref(PyObject_RichCompare((a),(b),(cmp)))
1397#define __Pyx_PySequence_Tuple(obj)\
1398 (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
1399static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
1400static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t);
1401static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
1402#if CYTHON_ASSUME_SAFE_MACROS
1403#define __Pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
1404#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x)
1405#define __Pyx_PyFloat_IsNonZero(x) (PyFloat_AS_DOUBLE(x) != 0.0)
1406#else
1407#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
1408#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x)
1409#define __Pyx_PyFloat_IsNonZero(x) PyObject_IsTrue(x)
1410#endif
1411#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x))
1412#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
1413#if CYTHON_USE_PYLONG_INTERNALS
1414 #if PY_VERSION_HEX >= 0x030C00A7
1415 #ifndef _PyLong_SIGN_MASK
1416 #define _PyLong_SIGN_MASK 3
1417 #endif
1418 #ifndef _PyLong_NON_SIZE_BITS
1419 #define _PyLong_NON_SIZE_BITS 3
1420 #endif
1421 #define __Pyx_PyLong_SignBits(x) ((int) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK))
1422 #define __Pyx_PyLong_Sign(x) (1 - __Pyx_PyLong_SignBits(x))
1423 #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_SignBits(x) & 2) != 0)
1424 #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x))
1425 #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_SignBits(x) & 1)
1426 #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_SignBits(x) == 0)
1427 #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0])
1428 #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
1429 #define __Pyx_PyLong_SignedDigitCount(x)\
1430 (((Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
1431 #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
1432 #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x)
1433 #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x)
1434 #else
1435 #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
1436 #define __Pyx_PyLong_CompactValue(x) (((Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
1437 #endif
1438 static CYTHON_INLINE Py_ssize_t __Pyx_PyLong_CompareSignAndSize(PyObject *a, PyObject *b) {
1439 uintptr_t tag_a = ((PyLongObject*)a)->long_value.lv_tag;
1440 uintptr_t tag_b = ((PyLongObject*)b)->long_value.lv_tag;
1441 if (tag_a == tag_b) return 0;
1442 int sign_a = (int) (tag_a & _PyLong_SIGN_MASK);
1443 int sign_b = (int) (tag_b & _PyLong_SIGN_MASK);
1444 if (sign_a > sign_b) return -1;
1445 if (sign_a < sign_b) return 1;
1446 Py_ssize_t size_a = (Py_ssize_t) (tag_a >> _PyLong_NON_SIZE_BITS);
1447 Py_ssize_t size_b = (Py_ssize_t) (tag_b >> _PyLong_NON_SIZE_BITS);
1448 return (1 - sign_a) * (size_a - size_b);
1449 }
1450 typedef Py_ssize_t __Pyx_compact_pylong;
1451 typedef size_t __Pyx_compact_upylong;
1452 #else
1453 #define __Pyx_PyLong_Sign(x) ((int) ((Py_SIZE(x) == 0) ? 0 : (Py_SIZE(x) < 0) ? -1 : 1))
1454 #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0)
1455 #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0)
1456 #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0)
1457 #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0)
1458 #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
1459 #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x))
1460 #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x)
1461 #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
1462 #define __Pyx_PyLong_CompactValue(x)\
1463 ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
1464 #define __Pyx_PyLong_CompareSignAndSize(a, b) (Py_SIZE(a) - Py_SIZE(b))
1465 typedef sdigit __Pyx_compact_pylong;
1466 typedef digit __Pyx_compact_upylong;
1467 #endif
1468 #if PY_VERSION_HEX >= 0x030C00A5
1469 #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit)
1470 #else
1471 #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit)
1472 #endif
1473 #define __Pyx_PyLong_IsNonZero(x) (!__Pyx_PyLong_IsZero(x))
1474#else
1475 #define __Pyx_PyLong_IsNonZero(x) PyObject_IsTrue(x)
1476#endif
1477#if __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
1478 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
1479#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
1480 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL)
1481#else
1482 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
1483#endif
1484
1485
1486/* Test for GCC > 2.95 */
1487#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
1488 #define likely(x) __builtin_expect(!!(x), 1)
1489 #define unlikely(x) __builtin_expect(!!(x), 0)
1490#else /* !__GNUC__ or GCC < 2.95 */
1491 #define likely(x) (x)
1492 #define unlikely(x) (x)
1493#endif /* __GNUC__ */
1494/* PretendToInitialize */
1495#ifdef __cplusplus
1496#if __cplusplus > 201103L
1497#include <type_traits>
1498#endif
1499template <typename T>
1500static void __Pyx_pretend_to_initialize(T* ptr) {
1501#if __cplusplus > 201103L
1502 if ((std::is_trivially_default_constructible<T>::value))
1503#endif
1504 *ptr = T();
1505 (void)ptr;
1506}
1507#else
1508static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
1509#endif
1510
1511
1512#if !CYTHON_USE_MODULE_STATE
1513static PyObject *__pyx_m = NULL;
1514#endif
1515static const char * const __pyx_cfilenm = __FILE__;
1516
1517/* Header.proto */
1518#if !defined(CYTHON_CCOMPLEX)
1519 #if defined(__cplusplus)
1520 #define CYTHON_CCOMPLEX 1
1521 #elif (defined(_Complex_I) && !defined(_MSC_VER)) || ((defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_COMPLEX__) && !defined(_MSC_VER))
1522 #define CYTHON_CCOMPLEX 1
1523 #else
1524 #define CYTHON_CCOMPLEX 0
1525 #endif
1526#endif
1527#if CYTHON_CCOMPLEX
1528 #ifdef __cplusplus
1529 #include <complex>
1530 #else
1531 #include <complex.h>
1532 #endif
1533#endif
1534#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
1535 #undef _Complex_I
1536 #define _Complex_I 1.0fj
1537#endif
1538
1539/* #### Code section: filename_table ### */
1540
1541static const char* const __pyx_f[] = {
1542 "proteus/canalyticalSolutions.pyx",
1543 "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd",
1544 "cpython/type.pxd",
1545};
1546/* #### Code section: utility_code_proto_before_types ### */
1547/* Atomics.proto (used by UnpackUnboundCMethod) */
1548#include <pythread.h>
1549#ifndef CYTHON_ATOMICS
1550 #define CYTHON_ATOMICS 1
1551#endif
1552#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS
1553#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
1554#define __pyx_atomic_int_type int
1555#define __pyx_nonatomic_int_type int
1556#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
1557 (__STDC_VERSION__ >= 201112L) &&\
1558 !defined(__STDC_NO_ATOMICS__))
1559 #include <stdatomic.h>
1560#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
1561 (__cplusplus >= 201103L) ||\
1562 (defined(_MSC_VER) && _MSC_VER >= 1700)))
1563 #include <atomic>
1564#endif
1565#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
1566 (__STDC_VERSION__ >= 201112L) &&\
1567 !defined(__STDC_NO_ATOMICS__) &&\
1568 ATOMIC_INT_LOCK_FREE == 2)
1569 #undef __pyx_atomic_int_type
1570 #define __pyx_atomic_int_type atomic_int
1571 #define __pyx_atomic_ptr_type atomic_uintptr_t
1572 #define __pyx_nonatomic_ptr_type uintptr_t
1573 #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed)
1574 #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel)
1575 #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel)
1576 #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg)
1577 #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
1578 #define __pyx_atomic_load(value) atomic_load(value)
1579 #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value)
1580 #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed)
1581 #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire)
1582 #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
1583 #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
1584 #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
1585 #pragma message ("Using standard C atomics")
1586 #elif defined(__PYX_DEBUG_ATOMICS)
1587 #warning "Using standard C atomics"
1588 #endif
1589#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
1590 (__cplusplus >= 201103L) ||\
1591\
1592 (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\
1593 ATOMIC_INT_LOCK_FREE == 2)
1594 #undef __pyx_atomic_int_type
1595 #define __pyx_atomic_int_type std::atomic_int
1596 #define __pyx_atomic_ptr_type std::atomic_uintptr_t
1597 #define __pyx_nonatomic_ptr_type uintptr_t
1598 #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed)
1599 #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel)
1600 #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel)
1601 #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg)
1602 #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
1603 #define __pyx_atomic_load(value) std::atomic_load(value)
1604 #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value)
1605 #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed)
1606 #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire)
1607 #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
1608 #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
1609 #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
1610 #pragma message ("Using standard C++ atomics")
1611 #elif defined(__PYX_DEBUG_ATOMICS)
1612 #warning "Using standard C++ atomics"
1613 #endif
1614#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\
1615 (__GNUC_MINOR__ > 1 ||\
1616 (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2))))
1617 #define __pyx_atomic_ptr_type void*
1618 #define __pyx_nonatomic_ptr_type void*
1619 #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1)
1620 #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1)
1621 #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1)
1622 #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg)
1623 static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
1624 __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired);
1625 int result = old == *expected;
1626 *expected = old;
1627 return result;
1628 }
1629 #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0)
1630 #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value)
1631 #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0)
1632 #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0)
1633 #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value)
1634 static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) {
1635 __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired);
1636 int result = old == *expected;
1637 *expected = old;
1638 return result;
1639 }
1640 #ifdef __PYX_DEBUG_ATOMICS
1641 #warning "Using GNU atomics"
1642 #endif
1643#elif CYTHON_ATOMICS && defined(_MSC_VER)
1644 #include <intrin.h>
1645 #undef __pyx_atomic_int_type
1646 #define __pyx_atomic_int_type long
1647 #define __pyx_atomic_ptr_type void*
1648 #undef __pyx_nonatomic_int_type
1649 #define __pyx_nonatomic_int_type long
1650 #define __pyx_nonatomic_ptr_type void*
1651 #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer)
1652 #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1)
1653 #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1)
1654 #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1)
1655 #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg)
1656 static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
1657 __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected);
1658 int result = old == *expected;
1659 *expected = old;
1660 return result;
1661 }
1662 #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0)
1663 #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value)
1664 #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value
1665 #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0)
1666 #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value)
1667 static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) {
1668 __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected);
1669 int result = old == *expected;
1670 *expected = old;
1671 return result;
1672 }
1673 #ifdef __PYX_DEBUG_ATOMICS
1674 #pragma message ("Using MSVC atomics")
1675 #endif
1676#else
1677 #undef CYTHON_ATOMICS
1678 #define CYTHON_ATOMICS 0
1679 #ifdef __PYX_DEBUG_ATOMICS
1680 #warning "Not using atomics"
1681 #endif
1682#endif
1683
1684/* CriticalSectionsDefinition.proto (used by CriticalSections) */
1685#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
1686#define __Pyx_PyCriticalSection void*
1687#define __Pyx_PyCriticalSection2 void*
1688#define __Pyx_PyCriticalSection_End(cs)
1689#define __Pyx_PyCriticalSection2_End(cs)
1690#else
1691#define __Pyx_PyCriticalSection PyCriticalSection
1692#define __Pyx_PyCriticalSection2 PyCriticalSection2
1693#define __Pyx_PyCriticalSection_End PyCriticalSection_End
1694#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End
1695#endif
1696
1697/* CriticalSections.proto (used by ParseKeywordsImpl) */
1698#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
1699#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs)
1700#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs)
1701#else
1702#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin
1703#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin
1704#endif
1705#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
1706#define __Pyx_BEGIN_CRITICAL_SECTION(o) {
1707#define __Pyx_END_CRITICAL_SECTION() }
1708#else
1709#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION
1710#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION
1711#endif
1712
1713/* IncludeStructmemberH.proto (used by CythonFunctionShared) */
1714#include <structmember.h>
1715
1716/* #### Code section: numeric_typedefs ### */
1717
1718/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":761
1719 * # in Cython to enable them only on the right systems.
1720 *
1721 * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
1722 * ctypedef npy_int16 int16_t
1723 * ctypedef npy_int32 int32_t
1724*/
1725typedef npy_int8 __pyx_t_5numpy_int8_t;
1726
1727/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":762
1728 *
1729 * ctypedef npy_int8 int8_t
1730 * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
1731 * ctypedef npy_int32 int32_t
1732 * ctypedef npy_int64 int64_t
1733*/
1734typedef npy_int16 __pyx_t_5numpy_int16_t;
1735
1736/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":763
1737 * ctypedef npy_int8 int8_t
1738 * ctypedef npy_int16 int16_t
1739 * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
1740 * ctypedef npy_int64 int64_t
1741 *
1742*/
1743typedef npy_int32 __pyx_t_5numpy_int32_t;
1744
1745/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":764
1746 * ctypedef npy_int16 int16_t
1747 * ctypedef npy_int32 int32_t
1748 * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
1749 *
1750 * ctypedef npy_uint8 uint8_t
1751*/
1752typedef npy_int64 __pyx_t_5numpy_int64_t;
1753
1754/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":766
1755 * ctypedef npy_int64 int64_t
1756 *
1757 * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
1758 * ctypedef npy_uint16 uint16_t
1759 * ctypedef npy_uint32 uint32_t
1760*/
1761typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1762
1763/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":767
1764 *
1765 * ctypedef npy_uint8 uint8_t
1766 * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
1767 * ctypedef npy_uint32 uint32_t
1768 * ctypedef npy_uint64 uint64_t
1769*/
1770typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1771
1772/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":768
1773 * ctypedef npy_uint8 uint8_t
1774 * ctypedef npy_uint16 uint16_t
1775 * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
1776 * ctypedef npy_uint64 uint64_t
1777 *
1778*/
1779typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1780
1781/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":769
1782 * ctypedef npy_uint16 uint16_t
1783 * ctypedef npy_uint32 uint32_t
1784 * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
1785 *
1786 * ctypedef npy_float32 float32_t
1787*/
1788typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1789
1790/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":771
1791 * ctypedef npy_uint64 uint64_t
1792 *
1793 * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
1794 * ctypedef npy_float64 float64_t
1795 * #ctypedef npy_float80 float80_t
1796*/
1797typedef npy_float32 __pyx_t_5numpy_float32_t;
1798
1799/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":772
1800 *
1801 * ctypedef npy_float32 float32_t
1802 * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
1803 * #ctypedef npy_float80 float80_t
1804 * #ctypedef npy_float128 float128_t
1805*/
1806typedef npy_float64 __pyx_t_5numpy_float64_t;
1807
1808/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":779
1809 * ctypedef double complex complex128_t
1810 *
1811 * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
1812 * ctypedef npy_ulonglong ulonglong_t
1813 *
1814*/
1815typedef npy_longlong __pyx_t_5numpy_longlong_t;
1816
1817/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":780
1818 *
1819 * ctypedef npy_longlong longlong_t
1820 * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
1821 *
1822 * ctypedef npy_intp intp_t
1823*/
1824typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1825
1826/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":782
1827 * ctypedef npy_ulonglong ulonglong_t
1828 *
1829 * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
1830 * ctypedef npy_uintp uintp_t
1831 *
1832*/
1833typedef npy_intp __pyx_t_5numpy_intp_t;
1834
1835/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":783
1836 *
1837 * ctypedef npy_intp intp_t
1838 * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
1839 *
1840 * ctypedef npy_double float_t
1841*/
1842typedef npy_uintp __pyx_t_5numpy_uintp_t;
1843
1844/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":785
1845 * ctypedef npy_uintp uintp_t
1846 *
1847 * ctypedef npy_double float_t # <<<<<<<<<<<<<<
1848 * ctypedef npy_double double_t
1849 * ctypedef npy_longdouble longdouble_t
1850*/
1851typedef npy_double __pyx_t_5numpy_float_t;
1852
1853/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":786
1854 *
1855 * ctypedef npy_double float_t
1856 * ctypedef npy_double double_t # <<<<<<<<<<<<<<
1857 * ctypedef npy_longdouble longdouble_t
1858 *
1859*/
1860typedef npy_double __pyx_t_5numpy_double_t;
1861
1862/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":787
1863 * ctypedef npy_double float_t
1864 * ctypedef npy_double double_t
1865 * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
1866 *
1867 * ctypedef float complex cfloat_t
1868*/
1869typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
1870/* #### Code section: complex_type_declarations ### */
1871/* Declarations.proto */
1872#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
1873 #ifdef __cplusplus
1874 typedef ::std::complex< float > __pyx_t_float_complex;
1875 #else
1876 typedef float _Complex __pyx_t_float_complex;
1877 #endif
1878#else
1879 typedef struct { float real, imag; } __pyx_t_float_complex;
1880#endif
1881static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
1882
1883/* Declarations.proto */
1884#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
1885 #ifdef __cplusplus
1886 typedef ::std::complex< double > __pyx_t_double_complex;
1887 #else
1888 typedef double _Complex __pyx_t_double_complex;
1889 #endif
1890#else
1891 typedef struct { double real, imag; } __pyx_t_double_complex;
1892#endif
1893static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
1894
1895/* Declarations.proto */
1896#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
1897 #ifdef __cplusplus
1898 typedef ::std::complex< long double > __pyx_t_long_double_complex;
1899 #else
1900 typedef long double _Complex __pyx_t_long_double_complex;
1901 #endif
1902#else
1903 typedef struct { long double real, imag; } __pyx_t_long_double_complex;
1904#endif
1905static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double, long double);
1906
1907/* #### Code section: type_declarations ### */
1908
1909/*--- Type declarations ---*/
1910/* #### Code section: utility_code_proto ### */
1911
1912/* --- Runtime support code (head) --- */
1913/* Refnanny.proto */
1914#ifndef CYTHON_REFNANNY
1915 #define CYTHON_REFNANNY 0
1916#endif
1917#if CYTHON_REFNANNY
1918 typedef struct {
1919 void (*INCREF)(void*, PyObject*, Py_ssize_t);
1920 void (*DECREF)(void*, PyObject*, Py_ssize_t);
1921 void (*GOTREF)(void*, PyObject*, Py_ssize_t);
1922 void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
1923 void* (*SetupContext)(const char*, Py_ssize_t, const char*);
1924 void (*FinishContext)(void**);
1925 } __Pyx_RefNannyAPIStruct;
1926 static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
1927 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
1928 #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
1929 #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1930 if (acquire_gil) {\
1931 PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1932 __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
1933 PyGILState_Release(__pyx_gilstate_save);\
1934 } else {\
1935 __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
1936 }
1937 #define __Pyx_RefNannyFinishContextNogil() {\
1938 PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1939 __Pyx_RefNannyFinishContext();\
1940 PyGILState_Release(__pyx_gilstate_save);\
1941 }
1942 #define __Pyx_RefNannyFinishContextNogil() {\
1943 PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1944 __Pyx_RefNannyFinishContext();\
1945 PyGILState_Release(__pyx_gilstate_save);\
1946 }
1947 #define __Pyx_RefNannyFinishContext()\
1948 __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
1949 #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1950 #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1951 #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1952 #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1953 #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
1954 #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
1955 #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
1956 #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
1957#else
1958 #define __Pyx_RefNannyDeclarations
1959 #define __Pyx_RefNannySetupContext(name, acquire_gil)
1960 #define __Pyx_RefNannyFinishContextNogil()
1961 #define __Pyx_RefNannyFinishContext()
1962 #define __Pyx_INCREF(r) Py_INCREF(r)
1963 #define __Pyx_DECREF(r) Py_DECREF(r)
1964 #define __Pyx_GOTREF(r)
1965 #define __Pyx_GIVEREF(r)
1966 #define __Pyx_XINCREF(r) Py_XINCREF(r)
1967 #define __Pyx_XDECREF(r) Py_XDECREF(r)
1968 #define __Pyx_XGOTREF(r)
1969 #define __Pyx_XGIVEREF(r)
1970#endif
1971#define __Pyx_Py_XDECREF_SET(r, v) do {\
1972 PyObject *tmp = (PyObject *) r;\
1973 r = v; Py_XDECREF(tmp);\
1974 } while (0)
1975#define __Pyx_XDECREF_SET(r, v) do {\
1976 PyObject *tmp = (PyObject *) r;\
1977 r = v; __Pyx_XDECREF(tmp);\
1978 } while (0)
1979#define __Pyx_DECREF_SET(r, v) do {\
1980 PyObject *tmp = (PyObject *) r;\
1981 r = v; __Pyx_DECREF(tmp);\
1982 } while (0)
1983#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
1984#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
1985
1986/* GetTopmostException.proto (used by SaveResetException) */
1987#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
1988static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
1989#endif
1990
1991/* PyThreadStateGet.proto (used by SaveResetException) */
1992#if CYTHON_FAST_THREAD_STATE
1993#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
1994#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
1995#if PY_VERSION_HEX >= 0x030C00A6
1996#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL)
1997#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
1998#else
1999#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL)
2000#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type)
2001#endif
2002#else
2003#define __Pyx_PyThreadState_declare
2004#define __Pyx_PyThreadState_assign
2005#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL)
2006#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred()
2007#endif
2008
2009/* SaveResetException.proto */
2010#if CYTHON_FAST_THREAD_STATE
2011#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
2012static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2013#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
2014static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
2015#else
2016#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
2017#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
2018#endif
2019
2020/* FastTypeChecks.proto (used by PyException_Check) */
2021#if CYTHON_COMPILING_IN_CPYTHON
2022#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
2023#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
2024static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
2025static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
2026#define __Pyx_PyAnySet_Check(obj) __Pyx_TypeCheck2(obj, &PySet_Type, &PyFrozenSet_Type)
2027#else
2028#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
2029#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
2030#define __Pyx_PyAnySet_Check(obj) PyAnySet_Check(obj)
2031#endif
2032
2033/* PyException_Check.proto */
2034#define __Pyx_PyExc_Exception_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
2035
2036/* PyErrFetchRestore.proto (used by GivenExceptionMatches) */
2037#if CYTHON_FAST_THREAD_STATE
2038#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
2039#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
2040#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
2041#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
2042#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
2043static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
2044static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2045#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
2046#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
2047#else
2048#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
2049#endif
2050#else
2051#define __Pyx_PyErr_Clear() PyErr_Clear()
2052#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
2053#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
2054#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
2055#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
2056#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
2057#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
2058#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
2059#endif
2060
2061/* GivenExceptionMatches.proto (used by PyErrExceptionMatches) */
2062#if CYTHON_COMPILING_IN_CPYTHON
2063static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
2064static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
2065#else
2066#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
2067static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) {
2068 return PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2);
2069}
2070#endif
2071#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
2072
2073/* PyErrExceptionMatches.proto */
2074#if CYTHON_FAST_THREAD_STATE
2075#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
2076static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
2077#else
2078#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
2079#endif
2080
2081/* GetException.proto */
2082#if CYTHON_FAST_THREAD_STATE
2083#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
2084static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2085#else
2086static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
2087#endif
2088
2089/* PyImportError_Check.proto */
2090#define __Pyx_PyExc_ImportError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ImportError)
2091
2092/* PyObjectCall.proto (used by PyObjectFastCall) */
2093#if CYTHON_COMPILING_IN_CPYTHON
2094static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
2095#else
2096#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
2097#endif
2098
2099/* PyObjectCallMethO.proto (used by PyObjectFastCall) */
2100#if CYTHON_COMPILING_IN_CPYTHON
2101static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
2102#endif
2103
2104/* PyObjectFastCall.proto */
2105#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
2106static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargsf, PyObject *kwargs);
2107
2108/* RaiseException.export */
2109static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
2110
2111/* CopyObjectArray.proto (used by TupleOrListFromArrayImpl) */
2112#if CYTHON_COMPILING_IN_CPYTHON
2113static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length);
2114#endif
2115
2116/* TupleOrListFromArrayImpl.proto (used by TupleFromArray) */
2117#if PY_VERSION_HEX >= 0x030F0000 && !CYTHON_COMPILING_IN_LIMITED_API
2118#define __Pyx_PyTuple_FromArray(src, n) PyTuple_FromArray(src, ((n)<0) ? 0 : (n))
2119#else
2120CYTHON_UNUSED static PyObject *
2121__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
2122#endif
2123
2124/* TupleFromArray.proto (used by fastcall) */
2125
2126
2127/* IncludeStringH.proto (used by PyObjectCompare) */
2128#include <string.h>
2129
2130/* PyObjectCompare.proto (used by UnicodeEquals) */
2131static CYTHON_INLINE int __Pyx_PyObject_CompareBoolEq_str_str(PyObject *op1, PyObject *op2, int pyop);
2132
2133/* UnicodeEquals.proto (used by fastcall) */
2134#define __Pyx_PyUnicode_Equals(s1, s2) __Pyx_PyObject_CompareBoolEq_str_str(s1, s2, Py_EQ)
2135
2136/* fastcall.proto */
2137#if CYTHON_AVOID_BORROWED_REFS
2138 #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i)
2139#elif CYTHON_ASSUME_SAFE_MACROS
2140 #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i))
2141#else
2142 #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i))
2143#endif
2144#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
2145#define __Pyx_KwValues_VARARGS(args, nargs) NULL
2146#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
2147#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
2148#if CYTHON_VECTORCALL
2149 #define __Pyx_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i])
2150 #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_PyTuple_GET_SIZE(kwds)
2151 #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
2152 static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
2153 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_GRAAL
2154 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
2155 #else
2156 #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
2157 #endif
2158#else
2159 #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_VARARGS
2160 #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
2161 #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
2162 #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
2163 #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
2164#endif
2165#if CYTHON_VECTORCALL_TPNEW
2166 #if !CYTHON_VECTORCALL
2167 #error Enabling CYTHON_VECTORCALL_TPNEW without CYTHON_VECTORCALL is not supported
2168 #endif
2169 #define __Pyx_ArgRef_FASTCALL_TPNEW __Pyx_ArgRef_FASTCALL
2170 #define __Pyx_NumKwargs_FASTCALL_TPNEW __Pyx_NumKwargs_FASTCALL
2171 #define __Pyx_KwValues_FASTCALL_TPNEW __Pyx_KwValues_FASTCALL
2172 #define __Pyx_GetKwValue_FASTCALL_TPNEW __Pyx_GetKwValue_FASTCALL
2173 #define __Pyx_KwargsAsDict_FASTCALL_TPNEW __Pyx_KwargsAsDict_FASTCALL
2174#else
2175 #define __Pyx_ArgRef_FASTCALL_TPNEW __Pyx_ArgRef_VARARGS
2176 #define __Pyx_NumKwargs_FASTCALL_TPNEW __Pyx_NumKwargs_VARARGS
2177 #define __Pyx_KwValues_FASTCALL_TPNEW __Pyx_KwValues_VARARGS
2178 #define __Pyx_GetKwValue_FASTCALL_TPNEW __Pyx_GetKwValue_VARARGS
2179 #define __Pyx_KwargsAsDict_FASTCALL_TPNEW __Pyx_KwargsAsDict_VARARGS
2180#endif
2181#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
2182#if CYTHON_VECTORCALL
2183#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start)
2184#else
2185#define __Pyx_ArgsSlice_FASTCALL __Pyx_ArgsSlice_VARARGS
2186#endif
2187
2188/* py_dict_items.proto (used by OwnedDictNext) */
2189#define __Pyx_PyDict_items_TypePtr (&PyDictKeys_Type)
2190#define __Pyx_PyDict_items_Check(obj) PyObject_TypeCheck((obj), __Pyx_PyDictItems_TypePtr)
2191#define __Pyx_PyDict_items_CheckExact(obj) Py_IS_TYPE((obj), __Pyx_PyDictItems_TypePtr)
2192static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d);
2193
2194/* CallCFunction.proto (used by CallUnboundCMethod0) */
2195#define __Pyx_CallCFunction(cfunc, self, args)\
2196 ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args)
2197#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\
2198 ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs)
2199#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\
2200 ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs)
2201#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\
2202 ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames)
2203
2204/* PyObjectCallOneArg.proto (used by CallUnboundCMethod0) */
2205static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
2206
2207/* UnpackUnboundCMethod_decl.proto (used by UnpackUnboundCMethod) */
2208typedef struct {
2209 PyObject *type;
2210 PyObject **method_name;
2211 PyCFunction func;
2212 PyObject *method;
2213 int flag;
2214#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS
2215 __pyx_atomic_int_type initialized;
2216#endif
2217} __Pyx_CachedCFunction;
2218
2219/* IgnoreException.proto (used by UnpackUnboundCMethod_impl) */
2220static CYTHON_INLINE int __Pyx_IgnoreGivenException(PyObject *given_exception, PyObject *ignorable_exception);
2221#define __Pyx_IgnoreException(ignorable_exception) __Pyx_IgnoreGivenException(NULL, ignorable_exception)
2222
2223/* PyObjectGetAttrStr.proto (used by UnpackUnboundCMethod_impl) */
2224#if CYTHON_USE_TYPE_SLOTS
2225static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
2226#else
2227#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
2228#endif
2229
2230/* UnpackUnboundCMethod_impl.export */
2231static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target);
2232
2233/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod0) */
2234#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
2235static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) {
2236#if !CYTHON_ATOMICS
2237 return 1;
2238#else
2239 __pyx_nonatomic_int_type expected = 0;
2240 if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) {
2241 return 0;
2242 }
2243 return expected;
2244#endif
2245}
2246static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) {
2247#if CYTHON_ATOMICS
2248 __pyx_atomic_store(&cfunc->initialized, 2);
2249#endif
2250}
2251#else
2252#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2
2253#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc)
2254#endif
2255
2256/* CallUnboundCMethod0.proto */
2257CYTHON_UNUSED
2258static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
2259#if CYTHON_COMPILING_IN_CPYTHON
2260static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
2261#else
2262#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self)
2263#endif
2264
2265/* py_dict_values.proto (used by OwnedDictNext) */
2266#define __Pyx_PyDict_values_TypePtr (&PyDictKeys_Type)
2267#define __Pyx_PyDict_values_Check(obj) PyObject_TypeCheck((obj), __Pyx_PyDictValues_TypePtr)
2268#define __Pyx_PyDict_values_CheckExact(obj) Py_IS_TYPE((obj), __Pyx_PyDictValues_TypePtr)
2269static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
2270
2271/* OwnedDictNext.proto (used by ParseKeywordsImpl) */
2272#if CYTHON_AVOID_BORROWED_REFS
2273static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue);
2274#else
2275CYTHON_INLINE
2276static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue);
2277#endif
2278
2279/* RaiseDoubleKeywords.proto (used by ParseKeywordsImpl) */
2280static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
2281
2282/* ParseKeywordsImpl.export */
2283static int __Pyx_ParseKeywordsTuple(
2284 PyObject *kwds,
2285 PyObject * const *kwvalues,
2286 PyObject ** const argnames[],
2287 PyObject *kwds2,
2288 PyObject *values[],
2289 Py_ssize_t num_pos_args,
2290 Py_ssize_t num_kwargs,
2291 const char* function_name,
2292 int ignore_unknown_kwargs
2293);
2294static int __Pyx_ParseKeywordDictToDict(
2295 PyObject *kwds,
2296 PyObject ** const argnames[],
2297 PyObject *kwds2,
2298 PyObject *values[],
2299 Py_ssize_t num_pos_args,
2300 const char* function_name
2301);
2302static int __Pyx_ParseKeywordDict(
2303 PyObject *kwds,
2304 PyObject ** const argnames[],
2305 PyObject *values[],
2306 Py_ssize_t num_pos_args,
2307 Py_ssize_t num_kwargs,
2308 const char* function_name,
2309 int ignore_unknown_kwargs
2310);
2311
2312/* CallUnboundCMethod2.proto */
2313CYTHON_UNUSED
2314static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
2315#if CYTHON_COMPILING_IN_CPYTHON
2316static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
2317#else
2318#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
2319#endif
2320
2321/* ParseKeywords.proto */
2322static CYTHON_INLINE int __Pyx_ParseKeywords(
2323 PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[],
2324 PyObject *kwds2, PyObject *values[],
2325 Py_ssize_t num_pos_args, Py_ssize_t num_kwargs,
2326 const char* function_name,
2327 int ignore_unknown_kwargs
2328);
2329
2330/* RaiseArgTupleInvalid.export */
2331static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
2332 Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
2333
2334/* ArgTypeTestError.export */
2335static void __Pyx_ArgTypeError(PyObject *obj, PyTypeObject *type, const char *name, int exact);
2336
2337/* ArgTypeTest.proto */
2338static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact);
2339
2340/* DivInt[npy_intp].proto */
2341static CYTHON_INLINE npy_intp __Pyx_div_npy_intp(npy_intp, npy_intp, int b_is_constant);
2342
2343/* UnaryNegOverflows.proto */
2344#define __Pyx_UNARY_NEG_WOULD_OVERFLOW(x)\
2345 (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
2346
2347/* FormatTypeName.proto (used by pybuiltin_invalid) */
2348#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030d0000
2349typedef PyObject *__Pyx_TypeName;
2350#define __Pyx_FMT_TYPENAME "%N"
2351#define __Pyx_PyType_GetFullyQualifiedName(tp) Py_NewRef((PyObject*)tp)
2352#define __Pyx_DECREF_TypeName(obj) Py_DECREF(obj)
2353#elif CYTHON_COMPILING_IN_LIMITED_API
2354typedef PyObject *__Pyx_TypeName;
2355#define __Pyx_FMT_TYPENAME "%U"
2356#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
2357static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp);
2358#else // !LIMITED_API
2359typedef const char *__Pyx_TypeName;
2360#define __Pyx_FMT_TYPENAME "%.200s"
2361#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name)
2362#define __Pyx_DECREF_TypeName(obj)
2363#endif
2364
2365/* pybuiltin_invalid.export */
2366static void __Pyx_PyBuiltin_Invalid(PyObject *obj, const char *builtin_type_name, const char *argname);
2367
2368/* pyint_simplify.proto */
2369static CYTHON_INLINE int __Pyx_PyInt_FromNumber(PyObject **number_var, const char *argname, int accept_none);
2370
2371/* TypeImport.proto */
2372#ifndef __PYX_HAVE_RT_ImportType_proto_3_3_0
2373#define __PYX_HAVE_RT_ImportType_proto_3_3_0
2374#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
2375#include <stdalign.h>
2376#endif
2377#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
2378#define __PYX_GET_STRUCT_ALIGNMENT_3_3_0(s) alignof(s)
2379#else
2380#define __PYX_GET_STRUCT_ALIGNMENT_3_3_0(s) sizeof(void*)
2381#endif
2382enum __Pyx_ImportType_CheckSize_3_3_0 {
2383 __Pyx_ImportType_CheckSize_Error_3_3_0 = 0,
2384 __Pyx_ImportType_CheckSize_Warn_3_3_0 = 1,
2385 __Pyx_ImportType_CheckSize_Ignore_3_3_0 = 2
2386};
2387static PyTypeObject *__Pyx_ImportType_3_3_0(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_3_0 check_size);
2388#endif
2389
2390/* PyObjectGetAttrStrNoError.proto (used by HasAttr) */
2391static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
2392
2393/* HasAttr.proto (used by ImportImpl) */
2394#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
2395#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n)
2396#else
2397static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
2398#endif
2399
2400/* TupleOrListFromArrayImpl.proto (used by ListFromArray) */
2401CYTHON_UNUSED static PyObject *
2402__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
2403
2404/* ListFromArray.proto (used by ImportImpl) */
2405
2406
2407/* ImportImpl.export */
2408static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level);
2409
2410/* Import.proto */
2411static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level);
2412
2413/* dict_setdefault.proto (used by FetchCommonType) */
2414static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value);
2415
2416/* AddModuleRef.proto (used by FetchSharedCythonModule) */
2417#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX < 0x030F00a3) ||\
2418 __PYX_LIMITED_VERSION_HEX < 0x030d0000)
2419 static PyObject *__Pyx_PyImport_AddModuleRef(const char *name);
2420#else
2421 #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
2422#endif
2423
2424/* FetchSharedCythonModule.proto (used by FetchCommonType) */
2425static PyObject *__Pyx_FetchSharedCythonABIModule(void);
2426
2427/* VerifyCachedType.proto (used by FetchCommonType) */
2428static int __Pyx_VerifyCachedType(PyObject *cached_type,
2429 const char *name,
2430 Py_ssize_t expected_basicsize);
2431
2432/* FetchCommonType.proto (used by CommonTypesMetaclass) */
2433static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases);
2434
2435/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */
2436static int __pyx_CommonTypesMetaclass_init(PyObject *module);
2437#define __Pyx_CommonTypesMetaclass_USED
2438
2439/* CythonFunctionPerModule.proto (used by CythonFunctionShared) */
2440#define __Pyx_CyFunction_USED
2441#if CYTHON_OPAQUE_SHARED_TYPES
2442#define __Pyx_as_CyFunctionObject(o) ((__pyx_CyFunctionObject *)PyObject_GetTypeData((o), __pyx_mstate_global->__pyx_CyFunctionType))
2443#else
2444#define __Pyx_as_CyFunctionObject(o) ((__pyx_CyFunctionObject *)o)
2445#endif
2446#define __Pyx_CYFUNCTION_STATICMETHOD 0x01
2447#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
2448#define __Pyx_CYFUNCTION_CCLASS 0x04
2449#define __Pyx_CYFUNCTION_COROUTINE 0x08
2450#define __Pyx_CyFunction_GetClosure(f)\
2451 ((__Pyx_as_CyFunctionObject(f))->func_closure)
2452#if CYTHON_COMPILING_IN_LIMITED_API
2453 #define __Pyx__CyFunction_GetClassObj(f)\
2454 ((f)->func_classobj)
2455#else
2456 #define __Pyx__CyFunction_GetClassObj(f)\
2457 ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
2458#endif
2459#define __Pyx_CyFunction_GetClassObj(f)\
2460 __Pyx__CyFunction_GetClassObj(__Pyx_as_CyFunctionObject(f))
2461#define __Pyx_CyFunction_SetClassObj(f, classobj)\
2462 __Pyx__CyFunction_SetClassObj(__Pyx_as_CyFunctionObject(f), (classobj))
2463#define __Pyx_CyFunction_Defaults(type, f)\
2464 ((type *)((__Pyx_as_CyFunctionObject(f))->defaults))
2465#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
2466 (__Pyx_as_CyFunctionObject(f))->defaults_getter = (g)
2467typedef struct {
2468#if CYTHON_COMPILING_IN_LIMITED_API
2469#if !CYTHON_OPAQUE_OBJECTS
2470 PyObject_HEAD
2471#endif
2472 PyMethodDef *func_methoddef;
2473 PyObject *func_module;
2474#else
2475 PyCMethodObject func;
2476#endif
2477#if (CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY) && CYTHON_VECTORCALL
2478 __pyx_vectorcallfunc func_vectorcall;
2479#endif
2480#if CYTHON_COMPILING_IN_LIMITED_API
2481 PyObject *func_weakreflist;
2482#endif
2483#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
2484 PyObject *func_dict;
2485#endif
2486 PyObject *func_name;
2487 PyObject *func_qualname;
2488 PyObject *func_doc;
2489 PyObject *func_globals;
2490 PyObject *func_code;
2491 PyObject *func_closure;
2492#if CYTHON_COMPILING_IN_LIMITED_API
2493 PyObject *func_classobj;
2494#endif
2495 PyObject *defaults;
2496 int flags;
2497 PyObject *defaults_tuple;
2498 PyObject *defaults_kwdict;
2499 PyObject *(*defaults_getter)(PyObject *);
2500 PyObject *func_annotations;
2501#if __PYX_LIMITED_VERSION_HEX < 0x030B0000
2502 PyObject *func_is_coroutine;
2503#endif
2504} __pyx_CyFunctionObject;
2505#undef __Pyx_CyOrPyCFunction_Check
2506#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_mstate_global->__pyx_CyFunctionType)
2507#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type)
2508#define __Pyx_CyFunction_CheckExact(obj) Py_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType)
2509static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void));
2510#undef __Pyx_IsSameCFunction
2511#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc)
2512static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
2513static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func,
2514 PyTypeObject *defaults_type);
2515static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
2516 PyObject *tuple);
2517static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
2518 PyObject *dict);
2519static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
2520 PyObject *dict);
2521static int __pyx_CyFunction_init(PyObject *module);
2522#if CYTHON_VECTORCALL
2523#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
2524#define __Pyx_CyFunction_func_vectorcall(f) ((f)->func_vectorcall)
2525#else
2526#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
2527#endif
2528#endif
2529
2530/* CallTypeTraverse.proto (used by CythonFunctionShared) */
2531#if !CYTHON_USE_TYPE_SPECS
2532#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0
2533#else
2534static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg);
2535#endif
2536
2537/* PyMethodNew.proto (used by CythonFunctionShared) */
2538static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ);
2539
2540/* PyVectorcallFastCallDict.proto (used by CythonFunctionShared) */
2541#if CYTHON_VECTORCALL
2542static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
2543#endif
2544
2545/* CythonFunctionShared.proto (used by CythonFunction) */
2546static PyObject *__Pyx_CyFunction_Init(PyObject *op_in, PyMethodDef *ml,
2547 int flags, PyObject* qualname,
2548 PyObject *closure,
2549 PyObject *module, PyObject *globals,
2550 PyObject* code);
2551#if CYTHON_VECTORCALL
2552static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2553static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2554static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2555static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2556#endif
2557
2558/* CythonFunction.export */
2559static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
2560 int flags, PyObject* qualname,
2561 PyObject *closure,
2562 PyObject *module, PyObject *globals,
2563 PyObject* code);
2564static PyTypeObject *__Pyx_Get_CyFunction_Type(void);
2565
2566/* PyDictVersioning.proto (used by CLineInTraceback) */
2567#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
2568#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
2569#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
2570#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
2571 (version_var) = __PYX_GET_DICT_VERSION(dict);\
2572 (cache_var) = (value);
2573#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
2574 static PY_UINT64_T __pyx_dict_version = 0;\
2575 static PyObject *__pyx_dict_cached_value = NULL;\
2576 if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
2577 (VAR) = __Pyx_XNewRef(__pyx_dict_cached_value);\
2578 } else {\
2579 (VAR) = __pyx_dict_cached_value = (LOOKUP);\
2580 __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
2581 }\
2582}
2583static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
2584static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
2585static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
2586#else
2587#define __PYX_GET_DICT_VERSION(dict) (0)
2588#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
2589#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
2590#endif
2591
2592/* CLineInTraceback.proto (used by AddTraceback) */
2593#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
2594static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
2595#else
2596#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
2597#endif
2598
2599/* CodeObjectCache.proto (used by AddTraceback) */
2600#if CYTHON_COMPILING_IN_LIMITED_API
2601typedef PyObject __Pyx_CachedCodeObjectType;
2602#else
2603typedef PyCodeObject __Pyx_CachedCodeObjectType;
2604#endif
2605typedef struct {
2606 __Pyx_CachedCodeObjectType* code_object;
2607 int code_line;
2608} __Pyx_CodeObjectCacheEntry;
2609struct __Pyx_CodeObjectCache {
2610 int count;
2611 int max_count;
2612 __Pyx_CodeObjectCacheEntry* entries;
2613 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
2614 __pyx_atomic_int_type accessor_count;
2615 #endif
2616};
2617static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
2618static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line);
2619static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object);
2620
2621/* AddTraceback.proto */
2622static void __Pyx_AddTraceback(const char *funcname, int c_line,
2623 int py_line, const char *filename);
2624
2625/* GCCDiagnostics.proto */
2626#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
2627#define __Pyx_HAS_GCC_DIAGNOSTIC
2628#endif
2629
2630/* RealImag.proto */
2631#if CYTHON_CCOMPLEX
2632 #ifdef __cplusplus
2633 #define __Pyx_CREAL(z) ((z).real())
2634 #define __Pyx_CIMAG(z) ((z).imag())
2635 #else
2636 #define __Pyx_CREAL(z) (__real__(z))
2637 #define __Pyx_CIMAG(z) (__imag__(z))
2638 #endif
2639#else
2640 #define __Pyx_CREAL(z) ((z).real)
2641 #define __Pyx_CIMAG(z) ((z).imag)
2642#endif
2643#if defined(__cplusplus) && CYTHON_CCOMPLEX\
2644 && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
2645 #define __Pyx_SET_CREAL(z,x) ((z).real(x))
2646 #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
2647#else
2648 #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
2649 #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
2650#endif
2651
2652/* Arithmetic.proto */
2653#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
2654 #define __Pyx_c_eq_float(a, b) ((a)==(b))
2655 #define __Pyx_c_sum_float(a, b) ((a)+(b))
2656 #define __Pyx_c_diff_float(a, b) ((a)-(b))
2657 #define __Pyx_c_prod_float(a, b) ((a)*(b))
2658 #define __Pyx_c_quot_float(a, b) ((a)/(b))
2659 #define __Pyx_c_neg_float(a) (-(a))
2660 #ifdef __cplusplus
2661 #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
2662 #define __Pyx_c_conj_float(z) (::std::conj(z))
2663 #if 1
2664 #define __Pyx_c_abs_float(z) (::std::abs(z))
2665 #define __Pyx_c_pow_float(a, b) (::std::pow(a, b))
2666 #endif
2667 #else
2668 #define __Pyx_c_is_zero_float(z) ((z)==0)
2669 #define __Pyx_c_conj_float(z) (conjf(z))
2670 #if 1
2671 #define __Pyx_c_abs_float(z) (cabsf(z))
2672 #define __Pyx_c_pow_float(a, b) (cpowf(a, b))
2673 #endif
2674 #endif
2675#else
2676 static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
2677 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
2678 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
2679 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
2680 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
2681 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
2682 static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
2683 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
2684 #if 1
2685 static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
2686 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
2687 #endif
2688#endif
2689
2690/* Arithmetic.proto */
2691#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
2692 #define __Pyx_c_eq_double(a, b) ((a)==(b))
2693 #define __Pyx_c_sum_double(a, b) ((a)+(b))
2694 #define __Pyx_c_diff_double(a, b) ((a)-(b))
2695 #define __Pyx_c_prod_double(a, b) ((a)*(b))
2696 #define __Pyx_c_quot_double(a, b) ((a)/(b))
2697 #define __Pyx_c_neg_double(a) (-(a))
2698 #ifdef __cplusplus
2699 #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
2700 #define __Pyx_c_conj_double(z) (::std::conj(z))
2701 #if 1
2702 #define __Pyx_c_abs_double(z) (::std::abs(z))
2703 #define __Pyx_c_pow_double(a, b) (::std::pow(a, b))
2704 #endif
2705 #else
2706 #define __Pyx_c_is_zero_double(z) ((z)==0)
2707 #define __Pyx_c_conj_double(z) (conj(z))
2708 #if 1
2709 #define __Pyx_c_abs_double(z) (cabs(z))
2710 #define __Pyx_c_pow_double(a, b) (cpow(a, b))
2711 #endif
2712 #endif
2713#else
2714 static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
2715 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
2716 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
2717 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
2718 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
2719 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
2720 static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
2721 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
2722 #if 1
2723 static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
2724 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
2725 #endif
2726#endif
2727
2728/* Arithmetic.proto */
2729#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
2730 #define __Pyx_c_eq_long__double(a, b) ((a)==(b))
2731 #define __Pyx_c_sum_long__double(a, b) ((a)+(b))
2732 #define __Pyx_c_diff_long__double(a, b) ((a)-(b))
2733 #define __Pyx_c_prod_long__double(a, b) ((a)*(b))
2734 #define __Pyx_c_quot_long__double(a, b) ((a)/(b))
2735 #define __Pyx_c_neg_long__double(a) (-(a))
2736 #ifdef __cplusplus
2737 #define __Pyx_c_is_zero_long__double(z) ((z)==(long double)0)
2738 #define __Pyx_c_conj_long__double(z) (::std::conj(z))
2739 #if 1
2740 #define __Pyx_c_abs_long__double(z) (::std::abs(z))
2741 #define __Pyx_c_pow_long__double(a, b) (::std::pow(a, b))
2742 #endif
2743 #else
2744 #define __Pyx_c_is_zero_long__double(z) ((z)==0)
2745 #define __Pyx_c_conj_long__double(z) (conjl(z))
2746 #if 1
2747 #define __Pyx_c_abs_long__double(z) (cabsl(z))
2748 #define __Pyx_c_pow_long__double(a, b) (cpowl(a, b))
2749 #endif
2750 #endif
2751#else
2752 static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
2753 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
2754 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
2755 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
2756 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
2757 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex);
2758 static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex);
2759 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex);
2760 #if 1
2761 static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex);
2762 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
2763 #endif
2764#endif
2765
2766/* PyObjectVectorcallKwds.proto (used by PyObjectVectorcallMethodKwds) */
2767#if CYTHON_VECTORCALL
2768#define __Pyx_Object_VectorcallKwds PyObject_Vectorcall
2769CYTHON_UNUSED static int __Pyx_CheckVectorcallKwarg(PyObject *kwnames, Py_ssize_t i);
2770#else
2771#define __Pyx_Object_VectorcallKwds __Pyx_PyObject_FastCallDict
2772CYTHON_UNUSED static PyObject *__Pyx_MakeKwargDict(PyObject **keys, PyObject **values, Py_ssize_t n);
2773CYTHON_UNUSED static int __Pyx_CheckVectorcallKwarg(PyObject **kwnames, Py_ssize_t i);
2774#endif
2775
2776/* PyObjectVectorcallMethodKwds.proto (used by CIntToPy) */
2777#if CYTHON_VECTORCALL
2778#define __Pyx_Object_VectorcallMethodKwds PyObject_VectorcallMethod
2779#else
2780static PyObject *__Pyx_Object_VectorcallMethodKwds(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2781#endif
2782
2783/* CIntToPy.proto */
2784static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value);
2785
2786/* CIntToPy.proto */
2787static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value);
2788
2789/* CIntFromPy.proto */
2790static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *);
2791
2792/* CIntFromPy.proto */
2793static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *);
2794
2795/* GetRuntimeVersion.proto */
2796#if __PYX_LIMITED_VERSION_HEX < 0x030b0000
2797static unsigned long __Pyx_cached_runtime_version = 0;
2798static void __Pyx_init_runtime_version(void);
2799#else
2800#define __Pyx_init_runtime_version()
2801#endif
2802static unsigned long __Pyx_get_runtime_version(void);
2803
2804/* CheckBinaryVersion.proto */
2805static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
2806
2807/* DecompressString.proto */
2808static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo);
2809
2810/* DecompressString_LZSS.proto */
2811static PyObject *__Pyx_DecompressString_LZSS(const char *s, size_t compressed_length, size_t uncompressed_length);
2812
2813/* MultiPhaseInitModuleState.proto */
2814#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
2815#include <stdlib.h>
2816static PyObject *__Pyx_State_FindModule(void*);
2817static int __Pyx_State_AddModule(PyObject* module, void*);
2818static int __Pyx_State_RemoveModule(void*);
2819#elif CYTHON_USE_MODULE_STATE
2820#define __Pyx_State_FindModule PyState_FindModule
2821#define __Pyx_State_AddModule PyState_AddModule
2822#define __Pyx_State_RemoveModule PyState_RemoveModule
2823#endif
2824
2825/* #### Code section: module_declarations ### */
2826/* CythonABIVersion.proto */
2827#if CYTHON_COMPILING_IN_LIMITED_API
2828 #if CYTHON_VECTORCALL
2829 #define __PYX_VECTORCALL_ABI_SUFFIX "_vectorcall"
2830 #else
2831 #define __PYX_VECTORCALL_ABI_SUFFIX
2832 #endif
2833 #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_VECTORCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
2834#else
2835 #define __PYX_LIMITED_ABI_SUFFIX
2836#endif
2837#if __PYX_HAS_PY_AM_SEND == 1
2838 #define __PYX_AM_SEND_ABI_SUFFIX
2839#elif __PYX_HAS_PY_AM_SEND == 2
2840 #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport"
2841#else
2842 #define __PYX_AM_SEND_ABI_SUFFIX "noamsend"
2843#endif
2844#ifndef __PYX_MONITORING_ABI_SUFFIX
2845 #define __PYX_MONITORING_ABI_SUFFIX
2846#endif
2847#if CYTHON_USE_TP_FINALIZE
2848 #define __PYX_TP_FINALIZE_ABI_SUFFIX
2849#else
2850 #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize"
2851#endif
2852#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED)
2853 #define __PYX_FREELISTS_ABI_SUFFIX
2854#else
2855 #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists"
2856#endif
2857#if CYTHON_OPAQUE_OBJECTS && CYTHON_COMPILING_IN_LIMITED_API
2858 #define __PYX_OPAQUE_OBJECTS_ABI_SUFFIX "opaque"
2859#else
2860 #define __PYX_OPAQUE_OBJECTS_ABI_SUFFIX
2861#endif
2862#define CYTHON_ABI __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX __PYX_OPAQUE_OBJECTS_ABI_SUFFIX
2863#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
2864#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
2865
2866static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2867static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2868static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2869static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2870static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2871static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2872static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2873static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2874static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2875static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2876static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self); /* proto*/
2877static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
2878static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
2879static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
2880static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
2881static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
2882static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
2883static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self); /* proto*/
2884static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArrayObject *__pyx_v_self); /* proto*/
2885static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self); /* proto*/
2886static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self); /* proto*/
2887static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self); /* proto*/
2888static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self); /* proto*/
2889static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self); /* proto*/
2890static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2891static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2892static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2893static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2894static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2895static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2896static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2897static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2898static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2899static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2900static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self); /* proto*/
2901
2902/* Module declarations from "libc.string" */
2903
2904/* Module declarations from "libc.stdio" */
2905
2906/* Module declarations from "__builtin__" */
2907
2908/* Module declarations from "cpython.type" */
2909
2910/* Module declarations from "cpython" */
2911
2912/* Module declarations from "cpython.object" */
2913
2914/* Module declarations from "cpython.ref" */
2915
2916/* Module declarations from "numpy" */
2917
2918/* Module declarations from "numpy" */
2919
2920/* Module declarations from "canalyticalSolutions" */
2921/* #### Code section: typeinfo ### */
2922/* #### Code section: before_global_var ### */
2923#define __Pyx_MODULE_NAME "canalyticalSolutions"
2924extern int __pyx_module_is_main_canalyticalSolutions;
2925int __pyx_module_is_main_canalyticalSolutions = 0;
2926
2927/* Implementation of "canalyticalSolutions" */
2928/* #### Code section: global_var ### */
2929/* #### Code section: string_decls ### */
2930/* #### Code section: decls ### */
2931static PyObject *__pyx_pf_20canalyticalSolutions_PlaneCouetteFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2932static PyObject *__pyx_pf_20canalyticalSolutions_2diffusionSin1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2933static PyObject *__pyx_pf_20canalyticalSolutions_4diffusionSin2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2934static PyObject *__pyx_pf_20canalyticalSolutions_6diffusionSin3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2935static PyObject *__pyx_pf_20canalyticalSolutions_8diffusionSin1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2936static PyObject *__pyx_pf_20canalyticalSolutions_10diffusionSin2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2937static PyObject *__pyx_pf_20canalyticalSolutions_12diffusionSin3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2938static PyObject *__pyx_pf_20canalyticalSolutions_14LinearAD_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2939static PyObject *__pyx_pf_20canalyticalSolutions_16LinearAD_DiracIC_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
2940static PyObject *__pyx_pf_20canalyticalSolutions_18LinearAD_DiracIC_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
2941static PyObject *__pyx_pf_20canalyticalSolutions_20LinearAD_DiracIC_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du); /* proto */
2942static PyObject *__pyx_pf_20canalyticalSolutions_22LinearAD_DiracIC_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2943static PyObject *__pyx_pf_20canalyticalSolutions_24LinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2944static PyObject *__pyx_pf_20canalyticalSolutions_26LinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2945static PyObject *__pyx_pf_20canalyticalSolutions_28LinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
2946static PyObject *__pyx_pf_20canalyticalSolutions_30LinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2947static PyObject *__pyx_pf_20canalyticalSolutions_32LinearADR_Sine(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2948static PyObject *__pyx_pf_20canalyticalSolutions_34LinearADR_Sine_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
2949static PyObject *__pyx_pf_20canalyticalSolutions_36LinearADR_Sine_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
2950static PyObject *__pyx_pf_20canalyticalSolutions_38LinearADR_Sine_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
2951static PyObject *__pyx_pf_20canalyticalSolutions_40LinearADR_Sine_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du); /* proto */
2952static PyObject *__pyx_pf_20canalyticalSolutions_42LinearADR_Sine_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2953static PyObject *__pyx_pf_20canalyticalSolutions_44LinearADR_Sine_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2954static PyObject *__pyx_pf_20canalyticalSolutions_46NonlinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2955static PyObject *__pyx_pf_20canalyticalSolutions_48NonlinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2956static PyObject *__pyx_pf_20canalyticalSolutions_50NonlinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
2957static PyObject *__pyx_pf_20canalyticalSolutions_52NonlinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2958static PyObject *__pyx_pf_20canalyticalSolutions_54NonlinearDAE(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2959static PyObject *__pyx_pf_20canalyticalSolutions_56NonlinearDAE_f(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2960static PyObject *__pyx_pf_20canalyticalSolutions_58PlanePoiseuilleFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2961static PyObject *__pyx_pf_20canalyticalSolutions_60PoiseuillePipeFlow(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2962static PyObject *__pyx_pf_20canalyticalSolutions_62PoiseuillePipeFlow_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2963static PyObject *__pyx_pf_20canalyticalSolutions_64poissonsEquationExp1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2964static PyObject *__pyx_pf_20canalyticalSolutions_66poissonsEquationExp2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2965static PyObject *__pyx_pf_20canalyticalSolutions_68poissonsEquationExp3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2966static PyObject *__pyx_pf_20canalyticalSolutions_70poissonsEquationExp3D_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
2967static PyObject *__pyx_pf_20canalyticalSolutions_72poissonsEquationExp1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2968static PyObject *__pyx_pf_20canalyticalSolutions_74poissonsEquationExp2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2969static PyObject *__pyx_pf_20canalyticalSolutions_76poissonsEquationExp3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
2970static PyObject *__pyx_pf_20canalyticalSolutions_78STflowSphere_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2971static PyObject *__pyx_pf_20canalyticalSolutions_80STflowSphere_Vx(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2972static PyObject *__pyx_pf_20canalyticalSolutions_82STflowSphere_Vy(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2973static PyObject *__pyx_pf_20canalyticalSolutions_84STflowSphere_Vz(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
2974/* #### Code section: late_includes ### */
2975/* #### Code section: module_state ### */
2976/* SmallCodeConfig */
2977#ifndef CYTHON_SMALL_CODE
2978#if defined(__clang__)
2979 #define CYTHON_SMALL_CODE
2980#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
2981 #define CYTHON_SMALL_CODE __attribute__((cold))
2982#else
2983 #define CYTHON_SMALL_CODE
2984#endif
2985#endif
2986
2987#ifdef __cplusplus
2988namespace {
2989 #endif
2990 typedef struct {
2991 PyObject *__pyx_d;
2992 PyObject *__pyx_b;
2993 PyObject *__pyx_cython_runtime;
2994 PyObject *__pyx_empty_tuple;
2995 PyObject *__pyx_empty_bytes;
2996 PyObject *__pyx_empty_unicode;
2997 PyTypeObject *__pyx_ptype_7cpython_4type_type;
2998 PyTypeObject *__pyx_ptype_5numpy_dtype;
2999 PyTypeObject *__pyx_ptype_5numpy_flatiter;
3000 PyTypeObject *__pyx_ptype_5numpy_broadcast;
3001 PyTypeObject *__pyx_ptype_5numpy_ndarray;
3002 PyTypeObject *__pyx_ptype_5numpy_generic;
3003 PyTypeObject *__pyx_ptype_5numpy_number;
3004 PyTypeObject *__pyx_ptype_5numpy_integer;
3005 PyTypeObject *__pyx_ptype_5numpy_signedinteger;
3006 PyTypeObject *__pyx_ptype_5numpy_unsignedinteger;
3007 PyTypeObject *__pyx_ptype_5numpy_inexact;
3008 PyTypeObject *__pyx_ptype_5numpy_floating;
3009 PyTypeObject *__pyx_ptype_5numpy_complexfloating;
3010 PyTypeObject *__pyx_ptype_5numpy_flexible;
3011 PyTypeObject *__pyx_ptype_5numpy_character;
3012 PyTypeObject *__pyx_ptype_5numpy_ufunc;
3013 __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items;
3014 __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop;
3015 __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values;
3016 PyObject *__pyx_codeobj_tab[43];
3017 PyObject *__pyx_string_tab[101];
3018/* #### Code section: module_state_contents ### */
3019/* CommonTypesMetaclass.module_state_decls */
3020PyTypeObject *__pyx_CommonTypesMetaclassType;
3021
3022/* CachedMethodType.module_state_decls */
3023#if CYTHON_COMPILING_IN_LIMITED_API
3024PyObject *__Pyx_CachedMethodType;
3025#endif
3026
3027/* CythonFunctionPerModule.module_state_decls */
3028PyTypeObject *__pyx_CyFunctionType;
3029
3030/* CodeObjectCache.module_state_decls */
3031struct __Pyx_CodeObjectCache __pyx_code_cache;
3032
3033/* #### Code section: module_state_end ### */
3034} __pyx_mstatetype;
3035#ifdef __cplusplus
3036} /* anonymous namespace */
3037#endif
3038
3039#if CYTHON_USE_MODULE_STATE
3040#ifdef __cplusplus
3041namespace {
3042extern struct PyModuleDef __pyx_moduledef;
3043} /* anonymous namespace */
3044#else
3045static struct PyModuleDef __pyx_moduledef;
3046#endif
3047
3048#define __pyx_mstate_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef)))
3049
3050#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef))
3051#else
3052static __pyx_mstatetype __pyx_mstate_global_static =
3053#ifdef __cplusplus
3054 {};
3055#else
3056 {0};
3057#endif
3058static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static;
3059#endif
3060/* #### Code section: constant_name_defines ### */
3061#define __pyx_kp_u_ __pyx_string_tab[0]
3062#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[1]
3063#define __pyx_kp_u_add_note __pyx_string_tab[2]
3064#define __pyx_kp_u_numpy__core_multiarray_failed_to __pyx_string_tab[3]
3065#define __pyx_kp_u_numpy__core_umath_failed_to_impo __pyx_string_tab[4]
3066#define __pyx_kp_u_proteus_canalyticalSolutions_pyx __pyx_string_tab[5]
3067#define __pyx_n_u_LinearADR_Decay_DiracIC __pyx_string_tab[6]
3068#define __pyx_n_u_LinearADR_Decay_DiracIC_dr __pyx_string_tab[7]
3069#define __pyx_n_u_LinearADR_Decay_DiracIC_r __pyx_string_tab[8]
3070#define __pyx_n_u_LinearADR_Sine __pyx_string_tab[9]
3071#define __pyx_n_u_LinearADR_Sine_advectiveVelocity __pyx_string_tab[10]
3072#define __pyx_n_u_LinearADR_Sine_diffusiveVelocity __pyx_string_tab[11]
3073#define __pyx_n_u_LinearADR_Sine_dr __pyx_string_tab[12]
3074#define __pyx_n_u_LinearADR_Sine_du __pyx_string_tab[13]
3075#define __pyx_n_u_LinearADR_Sine_r __pyx_string_tab[14]
3076#define __pyx_n_u_LinearADR_Sine_totalVelocity __pyx_string_tab[15]
3077#define __pyx_n_u_LinearAD_DiracIC __pyx_string_tab[16]
3078#define __pyx_n_u_LinearAD_DiracIC_advectiveVeloci __pyx_string_tab[17]
3079#define __pyx_n_u_LinearAD_DiracIC_diffusiveVeloci __pyx_string_tab[18]
3080#define __pyx_n_u_LinearAD_DiracIC_du __pyx_string_tab[19]
3081#define __pyx_n_u_LinearAD_DiracIC_totalVelocity __pyx_string_tab[20]
3082#define __pyx_n_u_LinearAD_SteadyState __pyx_string_tab[21]
3083#define __pyx_n_u_NonlinearADR_Decay_DiracIC __pyx_string_tab[22]
3084#define __pyx_n_u_NonlinearADR_Decay_DiracIC_dr __pyx_string_tab[23]
3085#define __pyx_n_u_NonlinearADR_Decay_DiracIC_r __pyx_string_tab[24]
3086#define __pyx_n_u_NonlinearAD_SteadyState __pyx_string_tab[25]
3087#define __pyx_n_u_NonlinearDAE __pyx_string_tab[26]
3088#define __pyx_n_u_NonlinearDAE_f __pyx_string_tab[27]
3089#define __pyx_n_u_PlaneCouetteFlow_u __pyx_string_tab[28]
3090#define __pyx_n_u_PlanePoiseuilleFlow_u __pyx_string_tab[29]
3091#define __pyx_n_u_PoiseuillePipeFlow __pyx_string_tab[30]
3092#define __pyx_n_u_PoiseuillePipeFlow_P __pyx_string_tab[31]
3093#define __pyx_n_u_STflowSphere_P __pyx_string_tab[32]
3094#define __pyx_n_u_STflowSphere_Vx __pyx_string_tab[33]
3095#define __pyx_n_u_STflowSphere_Vy __pyx_string_tab[34]
3096#define __pyx_n_u_STflowSphere_Vz __pyx_string_tab[35]
3097#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[36]
3098#define __pyx_n_u_annotate __pyx_string_tab[37]
3099#define __pyx_n_u_func __pyx_string_tab[38]
3100#define __pyx_n_u_main __pyx_string_tab[39]
3101#define __pyx_n_u_module __pyx_string_tab[40]
3102#define __pyx_n_u_name __pyx_string_tab[41]
3103#define __pyx_n_u_qualname __pyx_string_tab[42]
3104#define __pyx_n_u_test __pyx_string_tab[43]
3105#define __pyx_n_u_is_coroutine __pyx_string_tab[44]
3106#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[45]
3107#define __pyx_n_u_canalyticalSolutions __pyx_string_tab[46]
3108#define __pyx_n_u_cline_in_traceback __pyx_string_tab[47]
3109#define __pyx_n_u_diffusionSin1D __pyx_string_tab[48]
3110#define __pyx_n_u_diffusionSin1D_r __pyx_string_tab[49]
3111#define __pyx_n_u_diffusionSin2D __pyx_string_tab[50]
3112#define __pyx_n_u_diffusionSin2D_r __pyx_string_tab[51]
3113#define __pyx_n_u_diffusionSin3D __pyx_string_tab[52]
3114#define __pyx_n_u_diffusionSin3D_r __pyx_string_tab[53]
3115#define __pyx_n_u_dr __pyx_string_tab[54]
3116#define __pyx_n_u_du __pyx_string_tab[55]
3117#define __pyx_n_u_f __pyx_string_tab[56]
3118#define __pyx_n_u_int __pyx_string_tab[57]
3119#define __pyx_n_u_items __pyx_string_tab[58]
3120#define __pyx_n_u_iwork __pyx_string_tab[59]
3121#define __pyx_n_u_np __pyx_string_tab[60]
3122#define __pyx_n_u_numpy __pyx_string_tab[61]
3123#define __pyx_n_u_poissonsEquationExp1D __pyx_string_tab[62]
3124#define __pyx_n_u_poissonsEquationExp1D_r __pyx_string_tab[63]
3125#define __pyx_n_u_poissonsEquationExp2D __pyx_string_tab[64]
3126#define __pyx_n_u_poissonsEquationExp2D_r __pyx_string_tab[65]
3127#define __pyx_n_u_poissonsEquationExp3D __pyx_string_tab[66]
3128#define __pyx_n_u_poissonsEquationExp3D_dr __pyx_string_tab[67]
3129#define __pyx_n_u_poissonsEquationExp3D_r __pyx_string_tab[68]
3130#define __pyx_n_u_pop __pyx_string_tab[69]
3131#define __pyx_n_u_r __pyx_string_tab[70]
3132#define __pyx_n_u_return __pyx_string_tab[71]
3133#define __pyx_n_u_rwork __pyx_string_tab[72]
3134#define __pyx_n_u_setdefault __pyx_string_tab[73]
3135#define __pyx_n_u_t __pyx_string_tab[74]
3136#define __pyx_n_u_u __pyx_string_tab[75]
3137#define __pyx_n_u_values __pyx_string_tab[76]
3138#define __pyx_n_u_x __pyx_string_tab[77]
3139#define __pyx_kp_b_iso88591_E_U_rQRRXXYYZZ___ddggttuu_J_J __pyx_string_tab[78]
3140#define __pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww __pyx_string_tab[79]
3141#define __pyx_kp_b_iso88591_aab_2ZuG_WAURTTUU_bbccggjjwwxx __pyx_string_tab[80]
3142#define __pyx_kp_b_iso88591_bbc_Bj_WM_gQeSUUVV_ccddhhkkxxy __pyx_string_tab[81]
3143#define __pyx_kp_b_iso88591_dde_Rz_g_wauTVVWW___ddeeiillyyz __pyx_string_tab[82]
3144#define __pyx_kp_b_iso88591_dde_b_wm5_qPUUWWXX____eeffjjmmz __pyx_string_tab[83]
3145#define __pyx_kp_b_iso88591_ffg_r_5_E_PQQVVXXYY___aaffggkkn __pyx_string_tab[84]
3146#define __pyx_kp_b_iso88591_ffg_E_U_QRRWWYYZZ_aabbgghhlloo __pyx_string_tab[85]
3147#define __pyx_kp_b_iso88591_ggh_U_e7RSSXXZZ_aabbcchhiimmpp __pyx_string_tab[86]
3148#define __pyx_kp_b_iso88591_iij_2ZuG_WTUUZZ_ccddeejjkkoorr __pyx_string_tab[87]
3149#define __pyx_kp_b_iso88591_llm_b_wm5PWWXX____ffgghhmmnnrru __pyx_string_tab[88]
3150#define __pyx_kp_b_iso88591_nno_E_URYYZZ__aabbhhiijjooppttw __pyx_string_tab[89]
3151#define __pyx_kp_b_iso88591_ppq_Bj_WM_gQeSUUVV_ccddhhkkxxy __pyx_string_tab[90]
3152#define __pyx_kp_b_iso88591_ppq_Je7_uT_aaccddjjkkllqqrrvvy __pyx_string_tab[91]
3153#define __pyx_kp_b_iso88591_rrs_Rz_g_wauTVVWW___ddeeiillyyz __pyx_string_tab[92]
3154#define __pyx_kp_b_iso88591_rrs_Bj_WMQVV_cceeffllmmnnssttxx __pyx_string_tab[93]
3155#define __pyx_kp_b_iso88591_ttu_b_wmSXX___eegghhnnooppuuvvz __pyx_string_tab[94]
3156#define __pyx_kp_b_iso88591_wwx_2ZuG_WTUUZZ_ccddeejjkkoorr __pyx_string_tab[95]
3157#define __pyx_kp_b_iso88591_yyz_Bj_WM_gUVV_ddeeffkkllpps_t __pyx_string_tab[96]
3158#define __pyx_kp_b_iso88591_yyz_Rz_g_wVWW___eeffggllmmqqt_u __pyx_string_tab[97]
3159#define __pyx_kp_b_iso88591_b_wm5PWWXX____ffgghhmmnnrru_v_C __pyx_string_tab[98]
3160#define __pyx_kp_b_iso88591_E_URYYZZ__aabbhhiijjooppttw_x_E __pyx_string_tab[99]
3161#define __pyx_kp_b_iso88591_U_eSZZ_bbcciijjkkppqquux_y_F_F __pyx_string_tab[100]
3162/* #### Code section: module_state_clear ### */
3163#if CYTHON_USE_MODULE_STATE
3164static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
3165 __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(m);
3166 if (!clear_module_state) return 0;
3167 Py_CLEAR(clear_module_state->__pyx_d);
3168 Py_CLEAR(clear_module_state->__pyx_b);
3169 Py_CLEAR(clear_module_state->__pyx_cython_runtime);
3170 Py_CLEAR(clear_module_state->__pyx_empty_tuple);
3171 Py_CLEAR(clear_module_state->__pyx_empty_bytes);
3172 Py_CLEAR(clear_module_state->__pyx_empty_unicode);
3173 #if CYTHON_PEP489_MULTI_PHASE_INIT
3174 __Pyx_State_RemoveModule(NULL);
3175 #endif
3176 Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type);
3177 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_dtype);
3178 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flatiter);
3179 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_broadcast);
3180 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ndarray);
3181 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_generic);
3182 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_number);
3183 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_integer);
3184 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_signedinteger);
3185 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_unsignedinteger);
3186 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_inexact);
3187 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_floating);
3188 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_complexfloating);
3189 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flexible);
3190 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_character);
3191 Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ufunc);
3192 Py_CLEAR(clear_module_state->__pyx_umethod_PyDict_Type_items.method);
3193 Py_CLEAR(clear_module_state->__pyx_umethod_PyDict_Type_pop.method);
3194 Py_CLEAR(clear_module_state->__pyx_umethod_PyDict_Type_values.method);
3195 for (int i=0; i<43; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); }
3196 for (int i=0; i<101; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
3197/* #### Code section: module_state_clear_contents ### */
3198/* CommonTypesMetaclass.module_state_clear */
3199Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType);
3200
3201/* CythonFunctionPerModule.module_state_clear */
3202Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
3203
3204/* #### Code section: module_state_clear_end ### */
3205return 0;
3206}
3207#endif
3208/* #### Code section: module_state_traverse ### */
3209#if CYTHON_USE_MODULE_STATE
3210static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3211 __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(m);
3212 if (!traverse_module_state) return 0;
3213 Py_VISIT(traverse_module_state->__pyx_d);
3214 Py_VISIT(traverse_module_state->__pyx_b);
3215 Py_VISIT(traverse_module_state->__pyx_cython_runtime);
3216 __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple);
3217 __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes);
3218 __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode);
3219 Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type);
3220 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_dtype);
3221 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flatiter);
3222 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_broadcast);
3223 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ndarray);
3224 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_generic);
3225 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_number);
3226 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_integer);
3227 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_signedinteger);
3228 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_unsignedinteger);
3229 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_inexact);
3230 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_floating);
3231 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_complexfloating);
3232 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flexible);
3233 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_character);
3234 Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ufunc);
3235 Py_VISIT(traverse_module_state->__pyx_umethod_PyDict_Type_items.method);
3236 Py_VISIT(traverse_module_state->__pyx_umethod_PyDict_Type_pop.method);
3237 Py_VISIT(traverse_module_state->__pyx_umethod_PyDict_Type_values.method);
3238 for (int i=0; i<43; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); }
3239 for (int i=0; i<101; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
3240/* #### Code section: module_state_traverse_contents ### */
3241/* CommonTypesMetaclass.module_state_traverse */
3242Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType);
3243
3244/* CythonFunctionPerModule.module_state_traverse */
3245Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
3246
3247/* #### Code section: module_state_traverse_end ### */
3248return 0;
3249}
3250#endif
3251/* #### Code section: module_code ### */
3252
3253/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":230
3254 *
3255 * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
3256 * @property # <<<<<<<<<<<<<<
3257 * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
3258 * return PyDataType_TYPEOBJ(self)
3259*/
3260
3261static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
3262 PyTypeObject *__pyx_r;
3263
3264 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":232
3265 * @property
3266 * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
3267 * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
3268 *
3269 * @property
3270*/
3271 {
3272
3273 __pyx_r = PyDataType_TYPEOBJ(__pyx_v_self);
3274 }
3275 goto __pyx_L0;
3276
3277 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":230
3278 *
3279 * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
3280 * @property # <<<<<<<<<<<<<<
3281 * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
3282 * return PyDataType_TYPEOBJ(self)
3283*/
3284
3285 /* function exit code */
3286 __pyx_L0:;
3287 return __pyx_r;
3288}
3289
3290/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":234
3291 * return PyDataType_TYPEOBJ(self)
3292 *
3293 * @property # <<<<<<<<<<<<<<
3294 * cdef inline char kind(self) noexcept nogil:
3295 * return PyDataType_KIND(self)
3296*/
3297
3298static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
3299 char __pyx_r;
3300
3301 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":236
3302 * @property
3303 * cdef inline char kind(self) noexcept nogil:
3304 * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
3305 *
3306 * @property
3307*/
3308 {
3309
3310 __pyx_r = PyDataType_KIND(__pyx_v_self);
3311 }
3312 goto __pyx_L0;
3313
3314 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":234
3315 * return PyDataType_TYPEOBJ(self)
3316 *
3317 * @property # <<<<<<<<<<<<<<
3318 * cdef inline char kind(self) noexcept nogil:
3319 * return PyDataType_KIND(self)
3320*/
3321
3322 /* function exit code */
3323 __pyx_L0:;
3324 return __pyx_r;
3325}
3326
3327/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":238
3328 * return PyDataType_KIND(self)
3329 *
3330 * @property # <<<<<<<<<<<<<<
3331 * cdef inline char type(self) noexcept nogil:
3332 * return PyDataType_TYPE(self)
3333*/
3334
3335static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
3336 char __pyx_r;
3337
3338 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":240
3339 * @property
3340 * cdef inline char type(self) noexcept nogil:
3341 * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
3342 *
3343 * # Numpy sometimes mutates this without warning (e.g. it'll
3344*/
3345 {
3346
3347 __pyx_r = PyDataType_TYPE(__pyx_v_self);
3348 }
3349 goto __pyx_L0;
3350
3351 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":238
3352 * return PyDataType_KIND(self)
3353 *
3354 * @property # <<<<<<<<<<<<<<
3355 * cdef inline char type(self) noexcept nogil:
3356 * return PyDataType_TYPE(self)
3357*/
3358
3359 /* function exit code */
3360 __pyx_L0:;
3361 return __pyx_r;
3362}
3363
3364/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":247
3365 * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
3366 * # directly accessing this field.
3367 * @property # <<<<<<<<<<<<<<
3368 * cdef inline char byteorder(self) noexcept nogil:
3369 * return PyDataType_BYTEORDER(self)
3370*/
3371
3372static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
3373 char __pyx_r;
3374
3375 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":249
3376 * @property
3377 * cdef inline char byteorder(self) noexcept nogil:
3378 * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
3379 *
3380 * @property
3381*/
3382 {
3383
3384 __pyx_r = PyDataType_BYTEORDER(__pyx_v_self);
3385 }
3386 goto __pyx_L0;
3387
3388 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":247
3389 * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
3390 * # directly accessing this field.
3391 * @property # <<<<<<<<<<<<<<
3392 * cdef inline char byteorder(self) noexcept nogil:
3393 * return PyDataType_BYTEORDER(self)
3394*/
3395
3396 /* function exit code */
3397 __pyx_L0:;
3398 return __pyx_r;
3399}
3400
3401/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":251
3402 * return PyDataType_BYTEORDER(self)
3403 *
3404 * @property # <<<<<<<<<<<<<<
3405 * cdef inline int type_num(self) noexcept nogil:
3406 * return PyDataType_TYPENUM(self)
3407*/
3408
3409static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
3410 int __pyx_r;
3411
3412 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":253
3413 * @property
3414 * cdef inline int type_num(self) noexcept nogil:
3415 * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
3416 *
3417 * @property
3418*/
3419 {
3420
3421 __pyx_r = PyDataType_TYPENUM(__pyx_v_self);
3422 }
3423 goto __pyx_L0;
3424
3425 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":251
3426 * return PyDataType_BYTEORDER(self)
3427 *
3428 * @property # <<<<<<<<<<<<<<
3429 * cdef inline int type_num(self) noexcept nogil:
3430 * return PyDataType_TYPENUM(self)
3431*/
3432
3433 /* function exit code */
3434 __pyx_L0:;
3435 return __pyx_r;
3436}
3437
3438/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":255
3439 * return PyDataType_TYPENUM(self)
3440 *
3441 * @property # <<<<<<<<<<<<<<
3442 * cdef inline npy_intp itemsize(self) noexcept nogil:
3443 * return PyDataType_ELSIZE(self)
3444*/
3445
3446static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
3447 npy_intp __pyx_r;
3448
3449 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":257
3450 * @property
3451 * cdef inline npy_intp itemsize(self) noexcept nogil:
3452 * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
3453 *
3454 * @property
3455*/
3456 {
3457
3458 __pyx_r = PyDataType_ELSIZE(__pyx_v_self);
3459 }
3460 goto __pyx_L0;
3461
3462 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":255
3463 * return PyDataType_TYPENUM(self)
3464 *
3465 * @property # <<<<<<<<<<<<<<
3466 * cdef inline npy_intp itemsize(self) noexcept nogil:
3467 * return PyDataType_ELSIZE(self)
3468*/
3469
3470 /* function exit code */
3471 __pyx_L0:;
3472 return __pyx_r;
3473}
3474
3475/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":259
3476 * return PyDataType_ELSIZE(self)
3477 *
3478 * @property # <<<<<<<<<<<<<<
3479 * cdef inline npy_intp alignment(self) noexcept nogil:
3480 * return PyDataType_ALIGNMENT(self)
3481*/
3482
3483static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
3484 npy_intp __pyx_r;
3485
3486 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":261
3487 * @property
3488 * cdef inline npy_intp alignment(self) noexcept nogil:
3489 * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
3490 *
3491 * # Use fields/names with care as they may be NULL. You must check
3492*/
3493 {
3494
3495 __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self);
3496 }
3497 goto __pyx_L0;
3498
3499 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":259
3500 * return PyDataType_ELSIZE(self)
3501 *
3502 * @property # <<<<<<<<<<<<<<
3503 * cdef inline npy_intp alignment(self) noexcept nogil:
3504 * return PyDataType_ALIGNMENT(self)
3505*/
3506
3507 /* function exit code */
3508 __pyx_L0:;
3509 return __pyx_r;
3510}
3511
3512/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":265
3513 * # Use fields/names with care as they may be NULL. You must check
3514 * # for this using PyDataType_HASFIELDS.
3515 * @property # <<<<<<<<<<<<<<
3516 * cdef inline object fields(self):
3517 * return <object>PyDataType_FIELDS(self)
3518*/
3519
3520static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Descr *__pyx_v_self) {
3521 PyObject *__pyx_r = NULL;
3522 __Pyx_RefNannyDeclarations
3523 PyObject *__pyx_t_1;
3524 __Pyx_RefNannySetupContext("__get__", 0);
3525
3526 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":267
3527 * @property
3528 * cdef inline object fields(self):
3529 * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
3530 *
3531 * @property
3532*/
3533 __pyx_t_1 = PyDataType_FIELDS(__pyx_v_self);
3534
3535 {
3536 PyObject *__pyx_temp;
3537 {
3538 __pyx_temp = __pyx_r;
3539 __Pyx_INCREF(((PyObject *)__pyx_t_1));
3540 __pyx_r = ((PyObject *)__pyx_t_1);
3541 }
3542 __Pyx_XDECREF(__pyx_temp);
3543 }
3544
3545 goto __pyx_L0;
3546
3547 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":265
3548 * # Use fields/names with care as they may be NULL. You must check
3549 * # for this using PyDataType_HASFIELDS.
3550 * @property # <<<<<<<<<<<<<<
3551 * cdef inline object fields(self):
3552 * return <object>PyDataType_FIELDS(self)
3553*/
3554
3555 /* function exit code */
3556 __pyx_L0:;
3557 __Pyx_XGIVEREF(__pyx_r);
3558 __Pyx_RefNannyFinishContext();
3559 return __pyx_r;
3560}
3561
3562/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":269
3563 * return <object>PyDataType_FIELDS(self)
3564 *
3565 * @property # <<<<<<<<<<<<<<
3566 * cdef inline tuple names(self):
3567 * return <tuple>PyDataType_NAMES(self)
3568*/
3569
3570static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Descr *__pyx_v_self) {
3571 PyObject *__pyx_r = NULL;
3572 __Pyx_RefNannyDeclarations
3573 PyObject *__pyx_t_1;
3574 __Pyx_RefNannySetupContext("__get__", 0);
3575
3576 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":271
3577 * @property
3578 * cdef inline tuple names(self):
3579 * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
3580 *
3581 * # Use PyDataType_HASSUBARRAY to test whether this field is
3582*/
3583 __pyx_t_1 = PyDataType_NAMES(__pyx_v_self);
3584
3585 {
3586 PyObject *__pyx_temp;
3587 {
3588 __pyx_temp = __pyx_r;
3589 __Pyx_INCREF(((PyObject*)__pyx_t_1));
3590 __pyx_r = ((PyObject*)__pyx_t_1);
3591 }
3592 __Pyx_XDECREF(__pyx_temp);
3593 }
3594
3595 goto __pyx_L0;
3596
3597 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":269
3598 * return <object>PyDataType_FIELDS(self)
3599 *
3600 * @property # <<<<<<<<<<<<<<
3601 * cdef inline tuple names(self):
3602 * return <tuple>PyDataType_NAMES(self)
3603*/
3604
3605 /* function exit code */
3606 __pyx_L0:;
3607 __Pyx_XGIVEREF(__pyx_r);
3608 __Pyx_RefNannyFinishContext();
3609 return __pyx_r;
3610}
3611
3612/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":276
3613 * # valid (the pointer can be NULL). Most users should access
3614 * # this field via the inline helper method PyDataType_SHAPE.
3615 * @property # <<<<<<<<<<<<<<
3616 * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
3617 * return PyDataType_SUBARRAY(self)
3618*/
3619
3620static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
3621 PyArray_ArrayDescr *__pyx_r;
3622
3623 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":278
3624 * @property
3625 * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
3626 * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
3627 *
3628 * @property
3629*/
3630 {
3631
3632 __pyx_r = PyDataType_SUBARRAY(__pyx_v_self);
3633 }
3634 goto __pyx_L0;
3635
3636 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":276
3637 * # valid (the pointer can be NULL). Most users should access
3638 * # this field via the inline helper method PyDataType_SHAPE.
3639 * @property # <<<<<<<<<<<<<<
3640 * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
3641 * return PyDataType_SUBARRAY(self)
3642*/
3643
3644 /* function exit code */
3645 __pyx_L0:;
3646 return __pyx_r;
3647}
3648
3649/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":280
3650 * return PyDataType_SUBARRAY(self)
3651 *
3652 * @property # <<<<<<<<<<<<<<
3653 * cdef inline npy_uint64 flags(self) noexcept nogil:
3654 * """The data types flags."""
3655*/
3656
3657static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
3658 npy_uint64 __pyx_r;
3659
3660 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":283
3661 * cdef inline npy_uint64 flags(self) noexcept nogil:
3662 * """The data types flags."""
3663 * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
3664 *
3665 *
3666*/
3667 {
3668
3669 __pyx_r = PyDataType_FLAGS(__pyx_v_self);
3670 }
3671 goto __pyx_L0;
3672
3673 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":280
3674 * return PyDataType_SUBARRAY(self)
3675 *
3676 * @property # <<<<<<<<<<<<<<
3677 * cdef inline npy_uint64 flags(self) noexcept nogil:
3678 * """The data types flags."""
3679*/
3680
3681 /* function exit code */
3682 __pyx_L0:;
3683 return __pyx_r;
3684}
3685
3686/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":292
3687 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
3688 *
3689 * @property # <<<<<<<<<<<<<<
3690 * cdef inline int numiter(self) noexcept nogil:
3691 * """The number of arrays that need to be broadcast to the same shape."""
3692*/
3693
3694static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
3695 int __pyx_r;
3696
3697 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":295
3698 * cdef inline int numiter(self) noexcept nogil:
3699 * """The number of arrays that need to be broadcast to the same shape."""
3700 * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
3701 *
3702 * @property
3703*/
3704 {
3705
3706 __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self);
3707 }
3708 goto __pyx_L0;
3709
3710 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":292
3711 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
3712 *
3713 * @property # <<<<<<<<<<<<<<
3714 * cdef inline int numiter(self) noexcept nogil:
3715 * """The number of arrays that need to be broadcast to the same shape."""
3716*/
3717
3718 /* function exit code */
3719 __pyx_L0:;
3720 return __pyx_r;
3721}
3722
3723/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":297
3724 * return PyArray_MultiIter_NUMITER(self)
3725 *
3726 * @property # <<<<<<<<<<<<<<
3727 * cdef inline npy_intp size(self) noexcept nogil:
3728 * """The total broadcasted size."""
3729*/
3730
3731static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
3732 npy_intp __pyx_r;
3733
3734 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":300
3735 * cdef inline npy_intp size(self) noexcept nogil:
3736 * """The total broadcasted size."""
3737 * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
3738 *
3739 * @property
3740*/
3741 {
3742
3743 __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self);
3744 }
3745 goto __pyx_L0;
3746
3747 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":297
3748 * return PyArray_MultiIter_NUMITER(self)
3749 *
3750 * @property # <<<<<<<<<<<<<<
3751 * cdef inline npy_intp size(self) noexcept nogil:
3752 * """The total broadcasted size."""
3753*/
3754
3755 /* function exit code */
3756 __pyx_L0:;
3757 return __pyx_r;
3758}
3759
3760/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":302
3761 * return PyArray_MultiIter_SIZE(self)
3762 *
3763 * @property # <<<<<<<<<<<<<<
3764 * cdef inline npy_intp index(self) noexcept nogil:
3765 * """The current (1-d) index into the broadcasted result."""
3766*/
3767
3768static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
3769 npy_intp __pyx_r;
3770
3771 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":305
3772 * cdef inline npy_intp index(self) noexcept nogil:
3773 * """The current (1-d) index into the broadcasted result."""
3774 * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
3775 *
3776 * @property
3777*/
3778 {
3779
3780 __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self);
3781 }
3782 goto __pyx_L0;
3783
3784 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":302
3785 * return PyArray_MultiIter_SIZE(self)
3786 *
3787 * @property # <<<<<<<<<<<<<<
3788 * cdef inline npy_intp index(self) noexcept nogil:
3789 * """The current (1-d) index into the broadcasted result."""
3790*/
3791
3792 /* function exit code */
3793 __pyx_L0:;
3794 return __pyx_r;
3795}
3796
3797/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":307
3798 * return PyArray_MultiIter_INDEX(self)
3799 *
3800 * @property # <<<<<<<<<<<<<<
3801 * cdef inline int nd(self) noexcept nogil:
3802 * """The number of dimensions in the broadcasted result."""
3803*/
3804
3805static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
3806 int __pyx_r;
3807
3808 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":310
3809 * cdef inline int nd(self) noexcept nogil:
3810 * """The number of dimensions in the broadcasted result."""
3811 * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
3812 *
3813 * @property
3814*/
3815 {
3816
3817 __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self);
3818 }
3819 goto __pyx_L0;
3820
3821 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":307
3822 * return PyArray_MultiIter_INDEX(self)
3823 *
3824 * @property # <<<<<<<<<<<<<<
3825 * cdef inline int nd(self) noexcept nogil:
3826 * """The number of dimensions in the broadcasted result."""
3827*/
3828
3829 /* function exit code */
3830 __pyx_L0:;
3831 return __pyx_r;
3832}
3833
3834/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":312
3835 * return PyArray_MultiIter_NDIM(self)
3836 *
3837 * @property # <<<<<<<<<<<<<<
3838 * cdef inline npy_intp* dimensions(self) noexcept nogil:
3839 * """The shape of the broadcasted result."""
3840*/
3841
3842static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
3843 npy_intp *__pyx_r;
3844
3845 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":315
3846 * cdef inline npy_intp* dimensions(self) noexcept nogil:
3847 * """The shape of the broadcasted result."""
3848 * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
3849 *
3850 * @property
3851*/
3852 {
3853
3854 __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self);
3855 }
3856 goto __pyx_L0;
3857
3858 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":312
3859 * return PyArray_MultiIter_NDIM(self)
3860 *
3861 * @property # <<<<<<<<<<<<<<
3862 * cdef inline npy_intp* dimensions(self) noexcept nogil:
3863 * """The shape of the broadcasted result."""
3864*/
3865
3866 /* function exit code */
3867 __pyx_L0:;
3868 return __pyx_r;
3869}
3870
3871/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":317
3872 * return PyArray_MultiIter_DIMS(self)
3873 *
3874 * @property # <<<<<<<<<<<<<<
3875 * cdef inline void** iters(self) noexcept nogil:
3876 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
3877*/
3878
3879static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
3880 void **__pyx_r;
3881
3882 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":321
3883 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
3884 * On return, the iterators are adjusted for broadcasting."""
3885 * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
3886 *
3887 *
3888*/
3889 {
3890
3891 __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self);
3892 }
3893 goto __pyx_L0;
3894
3895 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":317
3896 * return PyArray_MultiIter_DIMS(self)
3897 *
3898 * @property # <<<<<<<<<<<<<<
3899 * cdef inline void** iters(self) noexcept nogil:
3900 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
3901*/
3902
3903 /* function exit code */
3904 __pyx_L0:;
3905 return __pyx_r;
3906}
3907
3908/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":335
3909 * # Instead, we use properties that map to the corresponding C-API functions.
3910 *
3911 * @property # <<<<<<<<<<<<<<
3912 * cdef inline PyObject* base(self) noexcept nogil:
3913 * """Returns a borrowed reference to the object owning the data/memory.
3914*/
3915
3916static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
3917 PyObject *__pyx_r;
3918
3919 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":339
3920 * """Returns a borrowed reference to the object owning the data/memory.
3921 * """
3922 * return PyArray_BASE(self) # <<<<<<<<<<<<<<
3923 *
3924 * @property
3925*/
3926 {
3927
3928 __pyx_r = PyArray_BASE(__pyx_v_self);
3929 }
3930 goto __pyx_L0;
3931
3932 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":335
3933 * # Instead, we use properties that map to the corresponding C-API functions.
3934 *
3935 * @property # <<<<<<<<<<<<<<
3936 * cdef inline PyObject* base(self) noexcept nogil:
3937 * """Returns a borrowed reference to the object owning the data/memory.
3938*/
3939
3940 /* function exit code */
3941 __pyx_L0:;
3942 return __pyx_r;
3943}
3944
3945/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":341
3946 * return PyArray_BASE(self)
3947 *
3948 * @property # <<<<<<<<<<<<<<
3949 * cdef inline dtype descr(self):
3950 * """Returns an owned reference to the dtype of the array.
3951*/
3952
3953static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArrayObject *__pyx_v_self) {
3954 PyArray_Descr *__pyx_r = NULL;
3955 __Pyx_RefNannyDeclarations
3956 PyArray_Descr *__pyx_t_1;
3957 __Pyx_RefNannySetupContext("__get__", 0);
3958
3959 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":345
3960 * """Returns an owned reference to the dtype of the array.
3961 * """
3962 * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
3963 *
3964 * @property
3965*/
3966 __pyx_t_1 = PyArray_DESCR(__pyx_v_self);
3967
3968 {
3969 PyArray_Descr *__pyx_temp;
3970 {
3971 __pyx_temp = __pyx_r;
3972 __Pyx_INCREF((PyObject *)((PyArray_Descr *)__pyx_t_1));
3973 __pyx_r = ((PyArray_Descr *)__pyx_t_1);
3974 }
3975 __Pyx_XDECREF((PyObject *)__pyx_temp);
3976 }
3977
3978 goto __pyx_L0;
3979
3980 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":341
3981 * return PyArray_BASE(self)
3982 *
3983 * @property # <<<<<<<<<<<<<<
3984 * cdef inline dtype descr(self):
3985 * """Returns an owned reference to the dtype of the array.
3986*/
3987
3988 /* function exit code */
3989 __pyx_L0:;
3990 __Pyx_XGIVEREF((PyObject *)__pyx_r);
3991 __Pyx_RefNannyFinishContext();
3992 return __pyx_r;
3993}
3994
3995/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":347
3996 * return <dtype>PyArray_DESCR(self)
3997 *
3998 * @property # <<<<<<<<<<<<<<
3999 * cdef inline int ndim(self) noexcept nogil:
4000 * """Returns the number of dimensions in the array.
4001*/
4002
4003static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
4004 int __pyx_r;
4005
4006 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":351
4007 * """Returns the number of dimensions in the array.
4008 * """
4009 * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
4010 *
4011 * @property
4012*/
4013 {
4014
4015 __pyx_r = PyArray_NDIM(__pyx_v_self);
4016 }
4017 goto __pyx_L0;
4018
4019 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":347
4020 * return <dtype>PyArray_DESCR(self)
4021 *
4022 * @property # <<<<<<<<<<<<<<
4023 * cdef inline int ndim(self) noexcept nogil:
4024 * """Returns the number of dimensions in the array.
4025*/
4026
4027 /* function exit code */
4028 __pyx_L0:;
4029 return __pyx_r;
4030}
4031
4032/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":353
4033 * return PyArray_NDIM(self)
4034 *
4035 * @property # <<<<<<<<<<<<<<
4036 * cdef inline npy_intp *shape(self) noexcept nogil:
4037 * """Returns a pointer to the dimensions/shape of the array.
4038*/
4039
4040static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
4041 npy_intp *__pyx_r;
4042
4043 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":359
4044 * Can return NULL for 0-dimensional arrays.
4045 * """
4046 * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
4047 *
4048 * @property
4049*/
4050 {
4051
4052 __pyx_r = PyArray_DIMS(__pyx_v_self);
4053 }
4054 goto __pyx_L0;
4055
4056 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":353
4057 * return PyArray_NDIM(self)
4058 *
4059 * @property # <<<<<<<<<<<<<<
4060 * cdef inline npy_intp *shape(self) noexcept nogil:
4061 * """Returns a pointer to the dimensions/shape of the array.
4062*/
4063
4064 /* function exit code */
4065 __pyx_L0:;
4066 return __pyx_r;
4067}
4068
4069/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":361
4070 * return PyArray_DIMS(self)
4071 *
4072 * @property # <<<<<<<<<<<<<<
4073 * cdef inline npy_intp *strides(self) noexcept nogil:
4074 * """Returns a pointer to the strides of the array.
4075*/
4076
4077static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
4078 npy_intp *__pyx_r;
4079
4080 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":366
4081 * The number of elements matches the number of dimensions of the array (ndim).
4082 * """
4083 * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
4084 *
4085 * @property
4086*/
4087 {
4088
4089 __pyx_r = PyArray_STRIDES(__pyx_v_self);
4090 }
4091 goto __pyx_L0;
4092
4093 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":361
4094 * return PyArray_DIMS(self)
4095 *
4096 * @property # <<<<<<<<<<<<<<
4097 * cdef inline npy_intp *strides(self) noexcept nogil:
4098 * """Returns a pointer to the strides of the array.
4099*/
4100
4101 /* function exit code */
4102 __pyx_L0:;
4103 return __pyx_r;
4104}
4105
4106/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":368
4107 * return PyArray_STRIDES(self)
4108 *
4109 * @property # <<<<<<<<<<<<<<
4110 * cdef inline npy_intp size(self) noexcept nogil:
4111 * """Returns the total size (in number of elements) of the array.
4112*/
4113
4114static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
4115 npy_intp __pyx_r;
4116
4117 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":372
4118 * """Returns the total size (in number of elements) of the array.
4119 * """
4120 * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
4121 *
4122 * @property
4123*/
4124 {
4125
4126 __pyx_r = PyArray_SIZE(__pyx_v_self);
4127 }
4128 goto __pyx_L0;
4129
4130 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":368
4131 * return PyArray_STRIDES(self)
4132 *
4133 * @property # <<<<<<<<<<<<<<
4134 * cdef inline npy_intp size(self) noexcept nogil:
4135 * """Returns the total size (in number of elements) of the array.
4136*/
4137
4138 /* function exit code */
4139 __pyx_L0:;
4140 return __pyx_r;
4141}
4142
4143/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":374
4144 * return PyArray_SIZE(self)
4145 *
4146 * @property # <<<<<<<<<<<<<<
4147 * cdef inline char* data(self) noexcept nogil:
4148 * """The pointer to the data buffer as a char*.
4149*/
4150
4151static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
4152 char *__pyx_r;
4153
4154 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":381
4155 * of `PyArray_DATA()` instead, which returns a 'void*'.
4156 * """
4157 * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
4158 *
4159 *
4160*/
4161 {
4162
4163 __pyx_r = PyArray_BYTES(__pyx_v_self);
4164 }
4165 goto __pyx_L0;
4166
4167 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":374
4168 * return PyArray_SIZE(self)
4169 *
4170 * @property # <<<<<<<<<<<<<<
4171 * cdef inline char* data(self) noexcept nogil:
4172 * """The pointer to the data buffer as a char*.
4173*/
4174
4175 /* function exit code */
4176 __pyx_L0:;
4177 return __pyx_r;
4178}
4179
4180/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":794
4181 * ctypedef long double complex clongdouble_t
4182 *
4183 * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
4184 * return PyArray_MultiIterNew(1, <void*>a)
4185 *
4186*/
4187
4188static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
4189 PyObject *__pyx_r = NULL;
4190 __Pyx_RefNannyDeclarations
4191 PyObject *__pyx_t_1 = NULL;
4192 int __pyx_lineno = 0;
4193 const char *__pyx_filename = NULL;
4194 int __pyx_clineno = 0;
4195 __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
4196
4197 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":795
4198 *
4199 * cdef inline object PyArray_MultiIterNew1(a):
4200 * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
4201 *
4202 * cdef inline object PyArray_MultiIterNew2(a, b):
4203*/
4204 __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 795, __pyx_L1_error)
4205 __Pyx_GOTREF(__pyx_t_1);
4206 {
4207 PyObject *__pyx_temp;
4208 {
4209 __pyx_temp = __pyx_r;
4210 __pyx_r = __pyx_t_1;
4211 }
4212 __Pyx_XDECREF(__pyx_temp);
4213 }
4214 __pyx_t_1 = 0;
4215 goto __pyx_L0;
4216
4217 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":794
4218 * ctypedef long double complex clongdouble_t
4219 *
4220 * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
4221 * return PyArray_MultiIterNew(1, <void*>a)
4222 *
4223*/
4224
4225 /* function exit code */
4226 __pyx_L1_error:;
4227 __Pyx_XDECREF(__pyx_t_1);
4228 __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
4229 __pyx_r = 0;
4230 __pyx_L0:;
4231 __Pyx_XGIVEREF(__pyx_r);
4232 __Pyx_RefNannyFinishContext();
4233 return __pyx_r;
4234}
4235
4236/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":797
4237 * return PyArray_MultiIterNew(1, <void*>a)
4238 *
4239 * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
4240 * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
4241 *
4242*/
4243
4244static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
4245 PyObject *__pyx_r = NULL;
4246 __Pyx_RefNannyDeclarations
4247 PyObject *__pyx_t_1 = NULL;
4248 int __pyx_lineno = 0;
4249 const char *__pyx_filename = NULL;
4250 int __pyx_clineno = 0;
4251 __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
4252
4253 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":798
4254 *
4255 * cdef inline object PyArray_MultiIterNew2(a, b):
4256 * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
4257 *
4258 * cdef inline object PyArray_MultiIterNew3(a, b, c):
4259*/
4260 __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 798, __pyx_L1_error)
4261 __Pyx_GOTREF(__pyx_t_1);
4262 {
4263 PyObject *__pyx_temp;
4264 {
4265 __pyx_temp = __pyx_r;
4266 __pyx_r = __pyx_t_1;
4267 }
4268 __Pyx_XDECREF(__pyx_temp);
4269 }
4270 __pyx_t_1 = 0;
4271 goto __pyx_L0;
4272
4273 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":797
4274 * return PyArray_MultiIterNew(1, <void*>a)
4275 *
4276 * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
4277 * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
4278 *
4279*/
4280
4281 /* function exit code */
4282 __pyx_L1_error:;
4283 __Pyx_XDECREF(__pyx_t_1);
4284 __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
4285 __pyx_r = 0;
4286 __pyx_L0:;
4287 __Pyx_XGIVEREF(__pyx_r);
4288 __Pyx_RefNannyFinishContext();
4289 return __pyx_r;
4290}
4291
4292/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":800
4293 * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
4294 *
4295 * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
4296 * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
4297 *
4298*/
4299
4300static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
4301 PyObject *__pyx_r = NULL;
4302 __Pyx_RefNannyDeclarations
4303 PyObject *__pyx_t_1 = NULL;
4304 int __pyx_lineno = 0;
4305 const char *__pyx_filename = NULL;
4306 int __pyx_clineno = 0;
4307 __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
4308
4309 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":801
4310 *
4311 * cdef inline object PyArray_MultiIterNew3(a, b, c):
4312 * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
4313 *
4314 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
4315*/
4316 __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 801, __pyx_L1_error)
4317 __Pyx_GOTREF(__pyx_t_1);
4318 {
4319 PyObject *__pyx_temp;
4320 {
4321 __pyx_temp = __pyx_r;
4322 __pyx_r = __pyx_t_1;
4323 }
4324 __Pyx_XDECREF(__pyx_temp);
4325 }
4326 __pyx_t_1 = 0;
4327 goto __pyx_L0;
4328
4329 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":800
4330 * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
4331 *
4332 * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
4333 * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
4334 *
4335*/
4336
4337 /* function exit code */
4338 __pyx_L1_error:;
4339 __Pyx_XDECREF(__pyx_t_1);
4340 __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
4341 __pyx_r = 0;
4342 __pyx_L0:;
4343 __Pyx_XGIVEREF(__pyx_r);
4344 __Pyx_RefNannyFinishContext();
4345 return __pyx_r;
4346}
4347
4348/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":803
4349 * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
4350 *
4351 * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
4352 * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
4353 *
4354*/
4355
4356static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
4357 PyObject *__pyx_r = NULL;
4358 __Pyx_RefNannyDeclarations
4359 PyObject *__pyx_t_1 = NULL;
4360 int __pyx_lineno = 0;
4361 const char *__pyx_filename = NULL;
4362 int __pyx_clineno = 0;
4363 __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
4364
4365 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":804
4366 *
4367 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
4368 * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
4369 *
4370 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
4371*/
4372 __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 804, __pyx_L1_error)
4373 __Pyx_GOTREF(__pyx_t_1);
4374 {
4375 PyObject *__pyx_temp;
4376 {
4377 __pyx_temp = __pyx_r;
4378 __pyx_r = __pyx_t_1;
4379 }
4380 __Pyx_XDECREF(__pyx_temp);
4381 }
4382 __pyx_t_1 = 0;
4383 goto __pyx_L0;
4384
4385 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":803
4386 * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
4387 *
4388 * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
4389 * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
4390 *
4391*/
4392
4393 /* function exit code */
4394 __pyx_L1_error:;
4395 __Pyx_XDECREF(__pyx_t_1);
4396 __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
4397 __pyx_r = 0;
4398 __pyx_L0:;
4399 __Pyx_XGIVEREF(__pyx_r);
4400 __Pyx_RefNannyFinishContext();
4401 return __pyx_r;
4402}
4403
4404/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":806
4405 * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
4406 *
4407 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
4408 * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
4409 *
4410*/
4411
4412static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
4413 PyObject *__pyx_r = NULL;
4414 __Pyx_RefNannyDeclarations
4415 PyObject *__pyx_t_1 = NULL;
4416 int __pyx_lineno = 0;
4417 const char *__pyx_filename = NULL;
4418 int __pyx_clineno = 0;
4419 __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
4420
4421 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":807
4422 *
4423 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
4424 * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
4425 *
4426 * cdef inline tuple PyDataType_SHAPE(dtype d):
4427*/
4428 __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 807, __pyx_L1_error)
4429 __Pyx_GOTREF(__pyx_t_1);
4430 {
4431 PyObject *__pyx_temp;
4432 {
4433 __pyx_temp = __pyx_r;
4434 __pyx_r = __pyx_t_1;
4435 }
4436 __Pyx_XDECREF(__pyx_temp);
4437 }
4438 __pyx_t_1 = 0;
4439 goto __pyx_L0;
4440
4441 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":806
4442 * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
4443 *
4444 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
4445 * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
4446 *
4447*/
4448
4449 /* function exit code */
4450 __pyx_L1_error:;
4451 __Pyx_XDECREF(__pyx_t_1);
4452 __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
4453 __pyx_r = 0;
4454 __pyx_L0:;
4455 __Pyx_XGIVEREF(__pyx_r);
4456 __Pyx_RefNannyFinishContext();
4457 return __pyx_r;
4458}
4459
4460/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":809
4461 * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
4462 *
4463 * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
4464 * if PyDataType_HASSUBARRAY(d):
4465 * return <tuple>d.subarray.shape
4466*/
4467
4468static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
4469 PyObject *__pyx_r = NULL;
4470 __Pyx_RefNannyDeclarations
4471 int __pyx_t_1;
4472 PyObject *__pyx_t_2;
4473 __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
4474
4475 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":810
4476 *
4477 * cdef inline tuple PyDataType_SHAPE(dtype d):
4478 * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
4479 * return <tuple>d.subarray.shape
4480 * else:
4481*/
4482 __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d);
4483
4484 if (__pyx_t_1) {
4485
4486
4487 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":811
4488 * cdef inline tuple PyDataType_SHAPE(dtype d):
4489 * if PyDataType_HASSUBARRAY(d):
4490 * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
4491 * else:
4492 * return ()
4493*/
4494 __pyx_t_2 = __pyx_f_5numpy_5dtype_8subarray___get__(__pyx_v_d)->shape;
4495
4496 {
4497 PyObject *__pyx_temp;
4498 {
4499 __pyx_temp = __pyx_r;
4500 __Pyx_INCREF(((PyObject*)__pyx_t_2));
4501 __pyx_r = ((PyObject*)__pyx_t_2);
4502 }
4503 __Pyx_XDECREF(__pyx_temp);
4504 }
4505
4506 goto __pyx_L0;
4507
4508 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":810
4509 *
4510 * cdef inline tuple PyDataType_SHAPE(dtype d):
4511 * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
4512 * return <tuple>d.subarray.shape
4513 * else:
4514*/
4515 }
4516
4517 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":813
4518 * return <tuple>d.subarray.shape
4519 * else:
4520 * return () # <<<<<<<<<<<<<<
4521 *
4522 *
4523*/
4524 /*else*/ {
4525 {
4526 PyObject *__pyx_temp;
4527 {
4528 __pyx_temp = __pyx_r;
4529 __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
4530 __pyx_r = __pyx_mstate_global->__pyx_empty_tuple;
4531 }
4532 __Pyx_XDECREF(__pyx_temp);
4533 }
4534 goto __pyx_L0;
4535 }
4536
4537 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":809
4538 * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
4539 *
4540 * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
4541 * if PyDataType_HASSUBARRAY(d):
4542 * return <tuple>d.subarray.shape
4543*/
4544
4545 /* function exit code */
4546 __pyx_L0:;
4547 __Pyx_XGIVEREF(__pyx_r);
4548 __Pyx_RefNannyFinishContext();
4549 return __pyx_r;
4550}
4551
4552/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":947
4553 *
4554 * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
4555 * @property # <<<<<<<<<<<<<<
4556 * cdef inline int nin(self) noexcept nogil:
4557 * return _PyUFuncObject_GET_ITEM_DATA(self).nin
4558*/
4559
4560static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
4561 int __pyx_r;
4562
4563 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":949
4564 * @property
4565 * cdef inline int nin(self) noexcept nogil:
4566 * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
4567 *
4568 * @property
4569*/
4570 {
4571
4572 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->nin;
4573 }
4574 goto __pyx_L0;
4575
4576 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":947
4577 *
4578 * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
4579 * @property # <<<<<<<<<<<<<<
4580 * cdef inline int nin(self) noexcept nogil:
4581 * return _PyUFuncObject_GET_ITEM_DATA(self).nin
4582*/
4583
4584 /* function exit code */
4585 __pyx_L0:;
4586 return __pyx_r;
4587}
4588
4589/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":951
4590 * return _PyUFuncObject_GET_ITEM_DATA(self).nin
4591 *
4592 * @property # <<<<<<<<<<<<<<
4593 * cdef inline int nout(self) noexcept nogil:
4594 * return _PyUFuncObject_GET_ITEM_DATA(self).nout
4595*/
4596
4597static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
4598 int __pyx_r;
4599
4600 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":953
4601 * @property
4602 * cdef inline int nout(self) noexcept nogil:
4603 * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
4604 *
4605 * @property
4606*/
4607 {
4608
4609 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->nout;
4610 }
4611 goto __pyx_L0;
4612
4613 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":951
4614 * return _PyUFuncObject_GET_ITEM_DATA(self).nin
4615 *
4616 * @property # <<<<<<<<<<<<<<
4617 * cdef inline int nout(self) noexcept nogil:
4618 * return _PyUFuncObject_GET_ITEM_DATA(self).nout
4619*/
4620
4621 /* function exit code */
4622 __pyx_L0:;
4623 return __pyx_r;
4624}
4625
4626/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":955
4627 * return _PyUFuncObject_GET_ITEM_DATA(self).nout
4628 *
4629 * @property # <<<<<<<<<<<<<<
4630 * cdef inline int nargs(self) noexcept nogil:
4631 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
4632*/
4633
4634static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
4635 int __pyx_r;
4636
4637 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":957
4638 * @property
4639 * cdef inline int nargs(self) noexcept nogil:
4640 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
4641 *
4642 * @property
4643*/
4644 {
4645
4646 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->nargs;
4647 }
4648 goto __pyx_L0;
4649
4650 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":955
4651 * return _PyUFuncObject_GET_ITEM_DATA(self).nout
4652 *
4653 * @property # <<<<<<<<<<<<<<
4654 * cdef inline int nargs(self) noexcept nogil:
4655 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
4656*/
4657
4658 /* function exit code */
4659 __pyx_L0:;
4660 return __pyx_r;
4661}
4662
4663/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":959
4664 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
4665 *
4666 * @property # <<<<<<<<<<<<<<
4667 * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
4668 * return _PyUFuncObject_GET_ITEM_DATA(self).functions
4669*/
4670
4671static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
4672 PyUFuncGenericFunction *__pyx_r;
4673
4674 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":961
4675 * @property
4676 * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
4677 * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
4678 *
4679 * @property
4680*/
4681 {
4682
4683 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->functions;
4684 }
4685 goto __pyx_L0;
4686
4687 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":959
4688 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
4689 *
4690 * @property # <<<<<<<<<<<<<<
4691 * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
4692 * return _PyUFuncObject_GET_ITEM_DATA(self).functions
4693*/
4694
4695 /* function exit code */
4696 __pyx_L0:;
4697 return __pyx_r;
4698}
4699
4700/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":963
4701 * return _PyUFuncObject_GET_ITEM_DATA(self).functions
4702 *
4703 * @property # <<<<<<<<<<<<<<
4704 * cdef inline void ** data(self) noexcept nogil:
4705 * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
4706*/
4707
4708static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
4709 void **__pyx_r;
4710
4711 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":965
4712 * @property
4713 * cdef inline void ** data(self) noexcept nogil:
4714 * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
4715 *
4716 * @property
4717*/
4718 {
4719
4720 __pyx_r = ((void **)_PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->data);
4721 }
4722 goto __pyx_L0;
4723
4724 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":963
4725 * return _PyUFuncObject_GET_ITEM_DATA(self).functions
4726 *
4727 * @property # <<<<<<<<<<<<<<
4728 * cdef inline void ** data(self) noexcept nogil:
4729 * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
4730*/
4731
4732 /* function exit code */
4733 __pyx_L0:;
4734 return __pyx_r;
4735}
4736
4737/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":967
4738 * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
4739 *
4740 * @property # <<<<<<<<<<<<<<
4741 * cdef inline int ntypes(self) noexcept nogil:
4742 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
4743*/
4744
4745static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
4746 int __pyx_r;
4747
4748 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":969
4749 * @property
4750 * cdef inline int ntypes(self) noexcept nogil:
4751 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
4752 *
4753 * @property
4754*/
4755 {
4756
4757 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->ntypes;
4758 }
4759 goto __pyx_L0;
4760
4761 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":967
4762 * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
4763 *
4764 * @property # <<<<<<<<<<<<<<
4765 * cdef inline int ntypes(self) noexcept nogil:
4766 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
4767*/
4768
4769 /* function exit code */
4770 __pyx_L0:;
4771 return __pyx_r;
4772}
4773
4774/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":971
4775 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
4776 *
4777 * @property # <<<<<<<<<<<<<<
4778 * cdef inline const char* name(self) noexcept nogil:
4779 * return _PyUFuncObject_GET_ITEM_DATA(self).name
4780*/
4781
4782static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
4783 char const *__pyx_r;
4784
4785 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":973
4786 * @property
4787 * cdef inline const char* name(self) noexcept nogil:
4788 * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
4789 *
4790 * @property
4791*/
4792 {
4793
4794 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->name;
4795 }
4796 goto __pyx_L0;
4797
4798 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":971
4799 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
4800 *
4801 * @property # <<<<<<<<<<<<<<
4802 * cdef inline const char* name(self) noexcept nogil:
4803 * return _PyUFuncObject_GET_ITEM_DATA(self).name
4804*/
4805
4806 /* function exit code */
4807 __pyx_L0:;
4808 return __pyx_r;
4809}
4810
4811/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":975
4812 * return _PyUFuncObject_GET_ITEM_DATA(self).name
4813 *
4814 * @property # <<<<<<<<<<<<<<
4815 * cdef inline const char* doc(self) noexcept nogil:
4816 * return _PyUFuncObject_GET_ITEM_DATA(self).doc
4817*/
4818
4819static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
4820 char const *__pyx_r;
4821
4822 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":977
4823 * @property
4824 * cdef inline const char* doc(self) noexcept nogil:
4825 * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
4826 *
4827 * @property
4828*/
4829 {
4830
4831 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->doc;
4832 }
4833 goto __pyx_L0;
4834
4835 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":975
4836 * return _PyUFuncObject_GET_ITEM_DATA(self).name
4837 *
4838 * @property # <<<<<<<<<<<<<<
4839 * cdef inline const char* doc(self) noexcept nogil:
4840 * return _PyUFuncObject_GET_ITEM_DATA(self).doc
4841*/
4842
4843 /* function exit code */
4844 __pyx_L0:;
4845 return __pyx_r;
4846}
4847
4848/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":979
4849 * return _PyUFuncObject_GET_ITEM_DATA(self).doc
4850 *
4851 * @property # <<<<<<<<<<<<<<
4852 * cdef inline void* ptr(self) noexcept nogil:
4853 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
4854*/
4855
4856static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
4857 void *__pyx_r;
4858
4859 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":981
4860 * @property
4861 * cdef inline void* ptr(self) noexcept nogil:
4862 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
4863 *
4864 * @property
4865*/
4866 {
4867
4868 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->ptr;
4869 }
4870 goto __pyx_L0;
4871
4872 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":979
4873 * return _PyUFuncObject_GET_ITEM_DATA(self).doc
4874 *
4875 * @property # <<<<<<<<<<<<<<
4876 * cdef inline void* ptr(self) noexcept nogil:
4877 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
4878*/
4879
4880 /* function exit code */
4881 __pyx_L0:;
4882 return __pyx_r;
4883}
4884
4885/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":983
4886 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
4887 *
4888 * @property # <<<<<<<<<<<<<<
4889 * cdef inline PyObject* obj(self) noexcept nogil:
4890 * return _PyUFuncObject_GET_ITEM_DATA(self).obj
4891*/
4892
4893static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
4894 PyObject *__pyx_r;
4895
4896 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":985
4897 * @property
4898 * cdef inline PyObject* obj(self) noexcept nogil:
4899 * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
4900 *
4901 * @property
4902*/
4903 {
4904
4905 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->obj;
4906 }
4907 goto __pyx_L0;
4908
4909 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":983
4910 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
4911 *
4912 * @property # <<<<<<<<<<<<<<
4913 * cdef inline PyObject* obj(self) noexcept nogil:
4914 * return _PyUFuncObject_GET_ITEM_DATA(self).obj
4915*/
4916
4917 /* function exit code */
4918 __pyx_L0:;
4919 return __pyx_r;
4920}
4921
4922/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":987
4923 * return _PyUFuncObject_GET_ITEM_DATA(self).obj
4924 *
4925 * @property # <<<<<<<<<<<<<<
4926 * cdef inline PyObject* userloops(self) noexcept nogil:
4927 * return _PyUFuncObject_GET_ITEM_DATA(self).userloops
4928*/
4929
4930static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
4931 PyObject *__pyx_r;
4932
4933 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":989
4934 * @property
4935 * cdef inline PyObject* userloops(self) noexcept nogil:
4936 * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
4937 *
4938 * PyUFuncObject_fields *_PyUFuncObject_GET_ITEM_DATA(ufunc) nogil
4939*/
4940 {
4941
4942 __pyx_r = _PyUFuncObject_GET_ITEM_DATA(__pyx_v_self)->userloops;
4943 }
4944 goto __pyx_L0;
4945
4946 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":987
4947 * return _PyUFuncObject_GET_ITEM_DATA(self).obj
4948 *
4949 * @property # <<<<<<<<<<<<<<
4950 * cdef inline PyObject* userloops(self) noexcept nogil:
4951 * return _PyUFuncObject_GET_ITEM_DATA(self).userloops
4952*/
4953
4954 /* function exit code */
4955 __pyx_L0:;
4956 return __pyx_r;
4957}
4958
4959/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1065
4960 * int _import_umath() except -1
4961 *
4962 * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
4963 * Py_INCREF(base) # important to do this before stealing the reference below!
4964 * PyArray_SetBaseObject(arr, base)
4965*/
4966
4967static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
4968 int __pyx_t_1;
4969 int __pyx_lineno = 0;
4970 const char *__pyx_filename = NULL;
4971 int __pyx_clineno = 0;
4972
4973 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1066
4974 *
4975 * cdef inline void set_array_base(ndarray arr, object base) except *:
4976 * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
4977 * PyArray_SetBaseObject(arr, base)
4978 *
4979*/
4980 Py_INCREF(__pyx_v_base);
4981
4982 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1067
4983 * cdef inline void set_array_base(ndarray arr, object base) except *:
4984 * Py_INCREF(base) # important to do this before stealing the reference below!
4985 * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
4986 *
4987 * cdef inline object get_array_base(ndarray arr):
4988*/
4989 __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 1067, __pyx_L1_error)
4990
4991
4992 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1065
4993 * int _import_umath() except -1
4994 *
4995 * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
4996 * Py_INCREF(base) # important to do this before stealing the reference below!
4997 * PyArray_SetBaseObject(arr, base)
4998*/
4999
5000 /* function exit code */
5001 goto __pyx_L0;
5002 __pyx_L1_error:;
5003 __Pyx_AddTraceback("numpy.set_array_base", __pyx_clineno, __pyx_lineno, __pyx_filename);
5004 __pyx_L0:;
5005
5006}
5007
5008/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1069
5009 * PyArray_SetBaseObject(arr, base)
5010 *
5011 * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
5012 * base = PyArray_BASE(arr)
5013 * if base is NULL:
5014*/
5015
5016static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
5017 PyObject *__pyx_v_base;
5018 PyObject *__pyx_r = NULL;
5019 __Pyx_RefNannyDeclarations
5020 int __pyx_t_1;
5021 __Pyx_RefNannySetupContext("get_array_base", 0);
5022
5023 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1070
5024 *
5025 * cdef inline object get_array_base(ndarray arr):
5026 * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
5027 * if base is NULL:
5028 * return None
5029*/
5030 __pyx_v_base = PyArray_BASE(__pyx_v_arr);
5031
5032 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1071
5033 * cdef inline object get_array_base(ndarray arr):
5034 * base = PyArray_BASE(arr)
5035 * if base is NULL: # <<<<<<<<<<<<<<
5036 * return None
5037 * return <object>base
5038*/
5039 __pyx_t_1 = (__pyx_v_base == NULL);
5040
5041 if (__pyx_t_1) {
5042
5043
5044 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1072
5045 * base = PyArray_BASE(arr)
5046 * if base is NULL:
5047 * return None # <<<<<<<<<<<<<<
5048 * return <object>base
5049 *
5050*/
5051 {
5052 PyObject *__pyx_temp;
5053 {
5054 __pyx_temp = __pyx_r;
5055 __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5056 }
5057 __Pyx_XDECREF(__pyx_temp);
5058 }
5059 goto __pyx_L0;
5060
5061 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1071
5062 * cdef inline object get_array_base(ndarray arr):
5063 * base = PyArray_BASE(arr)
5064 * if base is NULL: # <<<<<<<<<<<<<<
5065 * return None
5066 * return <object>base
5067*/
5068 }
5069
5070 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1073
5071 * if base is NULL:
5072 * return None
5073 * return <object>base # <<<<<<<<<<<<<<
5074 *
5075 * # Versions of the import_* functions which are more suitable for
5076*/
5077 {
5078 PyObject *__pyx_temp;
5079 {
5080 __pyx_temp = __pyx_r;
5081 __Pyx_INCREF(((PyObject *)__pyx_v_base));
5082 __pyx_r = ((PyObject *)__pyx_v_base);
5083 }
5084 __Pyx_XDECREF(__pyx_temp);
5085 }
5086 goto __pyx_L0;
5087
5088 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1069
5089 * PyArray_SetBaseObject(arr, base)
5090 *
5091 * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
5092 * base = PyArray_BASE(arr)
5093 * if base is NULL:
5094*/
5095
5096 /* function exit code */
5097 __pyx_L0:;
5098
5099 __Pyx_XGIVEREF(__pyx_r);
5100 __Pyx_RefNannyFinishContext();
5101 return __pyx_r;
5102}
5103
5104/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1077
5105 * # Versions of the import_* functions which are more suitable for
5106 * # Cython code.
5107 * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
5108 * try:
5109 * __pyx_import_array()
5110*/
5111
5112static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
5113 int __pyx_r;
5114 __Pyx_RefNannyDeclarations
5115 PyObject *__pyx_t_1 = NULL;
5116 PyObject *__pyx_t_2 = NULL;
5117 PyObject *__pyx_t_3 = NULL;
5118 int __pyx_t_4;
5119 PyObject *__pyx_t_5 = NULL;
5120 PyObject *__pyx_t_6 = NULL;
5121 PyObject *__pyx_t_7 = NULL;
5122 PyObject *__pyx_t_8 = NULL;
5123 PyObject *__pyx_t_9 = NULL;
5124 size_t __pyx_t_10;
5125 int __pyx_lineno = 0;
5126 const char *__pyx_filename = NULL;
5127 int __pyx_clineno = 0;
5128 __Pyx_RefNannySetupContext("import_array", 0);
5129
5130 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1078
5131 * # Cython code.
5132 * cdef inline int import_array() except -1:
5133 * try: # <<<<<<<<<<<<<<
5134 * __pyx_import_array()
5135 * except Exception:
5136*/
5137 {
5138 __Pyx_PyThreadState_declare
5139 __Pyx_PyThreadState_assign
5140 __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
5141 __Pyx_XGOTREF(__pyx_t_1);
5142 __Pyx_XGOTREF(__pyx_t_2);
5143 __Pyx_XGOTREF(__pyx_t_3);
5144 /*try:*/ {
5145
5146 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1079
5147 * cdef inline int import_array() except -1:
5148 * try:
5149 * __pyx_import_array() # <<<<<<<<<<<<<<
5150 * except Exception:
5151 * raise ImportError("numpy._core.multiarray failed to import")
5152*/
5153 __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1079, __pyx_L3_error)
5154
5155
5156 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1078
5157 * # Cython code.
5158 * cdef inline int import_array() except -1:
5159 * try: # <<<<<<<<<<<<<<
5160 * __pyx_import_array()
5161 * except Exception:
5162*/
5163 }
5164 __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
5165 __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
5166 __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5167 goto __pyx_L8_try_end;
5168 __pyx_L3_error:;
5169
5170 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1080
5171 * try:
5172 * __pyx_import_array()
5173 * except Exception: # <<<<<<<<<<<<<<
5174 * raise ImportError("numpy._core.multiarray failed to import")
5175 *
5176*/
5177 __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
5178 if (__pyx_t_4) {
5179 __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
5180 if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1080, __pyx_L5_except_error)
5181 __Pyx_XGOTREF(__pyx_t_5);
5182 __Pyx_XGOTREF(__pyx_t_6);
5183 __Pyx_XGOTREF(__pyx_t_7);
5184
5185 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1081
5186 * __pyx_import_array()
5187 * except Exception:
5188 * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
5189 *
5190 * cdef inline int import_umath() except -1:
5191*/
5192 __pyx_t_9 = NULL;
5193 __pyx_t_10 = 1;
5194 {
5195 PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_multiarray_failed_to};
5196 __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
5197 __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
5198 if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1081, __pyx_L5_except_error)
5199 __Pyx_GOTREF(__pyx_t_8);
5200 }
5201 __Pyx_Raise(__pyx_t_8, 0, 0, 0);
5202 __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5203 __PYX_ERR(1, 1081, __pyx_L5_except_error)
5204 }
5205 goto __pyx_L5_except_error;
5206
5207 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1078
5208 * # Cython code.
5209 * cdef inline int import_array() except -1:
5210 * try: # <<<<<<<<<<<<<<
5211 * __pyx_import_array()
5212 * except Exception:
5213*/
5214 __pyx_L5_except_error:;
5215 __Pyx_XGIVEREF(__pyx_t_1);
5216 __Pyx_XGIVEREF(__pyx_t_2);
5217 __Pyx_XGIVEREF(__pyx_t_3);
5218 __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
5219 goto __pyx_L1_error;
5220 __pyx_L8_try_end:;
5221 }
5222
5223 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1077
5224 * # Versions of the import_* functions which are more suitable for
5225 * # Cython code.
5226 * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
5227 * try:
5228 * __pyx_import_array()
5229*/
5230
5231 /* function exit code */
5232 __pyx_r = 0;
5233 goto __pyx_L0;
5234 __pyx_L1_error:;
5235 __Pyx_XDECREF(__pyx_t_5);
5236 __Pyx_XDECREF(__pyx_t_6);
5237 __Pyx_XDECREF(__pyx_t_7);
5238 __Pyx_XDECREF(__pyx_t_8);
5239 __Pyx_XDECREF(__pyx_t_9);
5240 __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
5241 __pyx_r = -1;
5242 __pyx_L0:;
5243
5244 __Pyx_RefNannyFinishContext();
5245 return __pyx_r;
5246}
5247
5248/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1083
5249 * raise ImportError("numpy._core.multiarray failed to import")
5250 *
5251 * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
5252 * try:
5253 * _import_umath()
5254*/
5255
5256static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
5257 int __pyx_r;
5258 __Pyx_RefNannyDeclarations
5259 PyObject *__pyx_t_1 = NULL;
5260 PyObject *__pyx_t_2 = NULL;
5261 PyObject *__pyx_t_3 = NULL;
5262 int __pyx_t_4;
5263 PyObject *__pyx_t_5 = NULL;
5264 PyObject *__pyx_t_6 = NULL;
5265 PyObject *__pyx_t_7 = NULL;
5266 PyObject *__pyx_t_8 = NULL;
5267 PyObject *__pyx_t_9 = NULL;
5268 size_t __pyx_t_10;
5269 int __pyx_lineno = 0;
5270 const char *__pyx_filename = NULL;
5271 int __pyx_clineno = 0;
5272 __Pyx_RefNannySetupContext("import_umath", 0);
5273
5274 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1084
5275 *
5276 * cdef inline int import_umath() except -1:
5277 * try: # <<<<<<<<<<<<<<
5278 * _import_umath()
5279 * except Exception:
5280*/
5281 {
5282 __Pyx_PyThreadState_declare
5283 __Pyx_PyThreadState_assign
5284 __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
5285 __Pyx_XGOTREF(__pyx_t_1);
5286 __Pyx_XGOTREF(__pyx_t_2);
5287 __Pyx_XGOTREF(__pyx_t_3);
5288 /*try:*/ {
5289
5290 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1085
5291 * cdef inline int import_umath() except -1:
5292 * try:
5293 * _import_umath() # <<<<<<<<<<<<<<
5294 * except Exception:
5295 * raise ImportError("numpy._core.umath failed to import")
5296*/
5297 __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1085, __pyx_L3_error)
5298
5299
5300 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1084
5301 *
5302 * cdef inline int import_umath() except -1:
5303 * try: # <<<<<<<<<<<<<<
5304 * _import_umath()
5305 * except Exception:
5306*/
5307 }
5308 __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
5309 __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
5310 __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5311 goto __pyx_L8_try_end;
5312 __pyx_L3_error:;
5313
5314 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1086
5315 * try:
5316 * _import_umath()
5317 * except Exception: # <<<<<<<<<<<<<<
5318 * raise ImportError("numpy._core.umath failed to import")
5319 *
5320*/
5321 __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
5322 if (__pyx_t_4) {
5323 __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
5324 if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1086, __pyx_L5_except_error)
5325 __Pyx_XGOTREF(__pyx_t_5);
5326 __Pyx_XGOTREF(__pyx_t_6);
5327 __Pyx_XGOTREF(__pyx_t_7);
5328
5329 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1087
5330 * _import_umath()
5331 * except Exception:
5332 * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
5333 *
5334 * cdef inline int import_ufunc() except -1:
5335*/
5336 __pyx_t_9 = NULL;
5337 __pyx_t_10 = 1;
5338 {
5339 PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo};
5340 __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
5341 __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
5342 if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1087, __pyx_L5_except_error)
5343 __Pyx_GOTREF(__pyx_t_8);
5344 }
5345 __Pyx_Raise(__pyx_t_8, 0, 0, 0);
5346 __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5347 __PYX_ERR(1, 1087, __pyx_L5_except_error)
5348 }
5349 goto __pyx_L5_except_error;
5350
5351 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1084
5352 *
5353 * cdef inline int import_umath() except -1:
5354 * try: # <<<<<<<<<<<<<<
5355 * _import_umath()
5356 * except Exception:
5357*/
5358 __pyx_L5_except_error:;
5359 __Pyx_XGIVEREF(__pyx_t_1);
5360 __Pyx_XGIVEREF(__pyx_t_2);
5361 __Pyx_XGIVEREF(__pyx_t_3);
5362 __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
5363 goto __pyx_L1_error;
5364 __pyx_L8_try_end:;
5365 }
5366
5367 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1083
5368 * raise ImportError("numpy._core.multiarray failed to import")
5369 *
5370 * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
5371 * try:
5372 * _import_umath()
5373*/
5374
5375 /* function exit code */
5376 __pyx_r = 0;
5377 goto __pyx_L0;
5378 __pyx_L1_error:;
5379 __Pyx_XDECREF(__pyx_t_5);
5380 __Pyx_XDECREF(__pyx_t_6);
5381 __Pyx_XDECREF(__pyx_t_7);
5382 __Pyx_XDECREF(__pyx_t_8);
5383 __Pyx_XDECREF(__pyx_t_9);
5384 __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
5385 __pyx_r = -1;
5386 __pyx_L0:;
5387
5388 __Pyx_RefNannyFinishContext();
5389 return __pyx_r;
5390}
5391
5392/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1089
5393 * raise ImportError("numpy._core.umath failed to import")
5394 *
5395 * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
5396 * try:
5397 * _import_umath()
5398*/
5399
5400static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
5401 int __pyx_r;
5402 __Pyx_RefNannyDeclarations
5403 PyObject *__pyx_t_1 = NULL;
5404 PyObject *__pyx_t_2 = NULL;
5405 PyObject *__pyx_t_3 = NULL;
5406 int __pyx_t_4;
5407 PyObject *__pyx_t_5 = NULL;
5408 PyObject *__pyx_t_6 = NULL;
5409 PyObject *__pyx_t_7 = NULL;
5410 PyObject *__pyx_t_8 = NULL;
5411 PyObject *__pyx_t_9 = NULL;
5412 size_t __pyx_t_10;
5413 int __pyx_lineno = 0;
5414 const char *__pyx_filename = NULL;
5415 int __pyx_clineno = 0;
5416 __Pyx_RefNannySetupContext("import_ufunc", 0);
5417
5418 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1090
5419 *
5420 * cdef inline int import_ufunc() except -1:
5421 * try: # <<<<<<<<<<<<<<
5422 * _import_umath()
5423 * except Exception:
5424*/
5425 {
5426 __Pyx_PyThreadState_declare
5427 __Pyx_PyThreadState_assign
5428 __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
5429 __Pyx_XGOTREF(__pyx_t_1);
5430 __Pyx_XGOTREF(__pyx_t_2);
5431 __Pyx_XGOTREF(__pyx_t_3);
5432 /*try:*/ {
5433
5434 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1091
5435 * cdef inline int import_ufunc() except -1:
5436 * try:
5437 * _import_umath() # <<<<<<<<<<<<<<
5438 * except Exception:
5439 * raise ImportError("numpy._core.umath failed to import")
5440*/
5441 __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1091, __pyx_L3_error)
5442
5443
5444 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1090
5445 *
5446 * cdef inline int import_ufunc() except -1:
5447 * try: # <<<<<<<<<<<<<<
5448 * _import_umath()
5449 * except Exception:
5450*/
5451 }
5452 __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
5453 __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
5454 __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5455 goto __pyx_L8_try_end;
5456 __pyx_L3_error:;
5457
5458 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1092
5459 * try:
5460 * _import_umath()
5461 * except Exception: # <<<<<<<<<<<<<<
5462 * raise ImportError("numpy._core.umath failed to import")
5463 *
5464*/
5465 __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
5466 if (__pyx_t_4) {
5467 __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
5468 if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1092, __pyx_L5_except_error)
5469 __Pyx_XGOTREF(__pyx_t_5);
5470 __Pyx_XGOTREF(__pyx_t_6);
5471 __Pyx_XGOTREF(__pyx_t_7);
5472
5473 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1093
5474 * _import_umath()
5475 * except Exception:
5476 * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
5477 *
5478 *
5479*/
5480 __pyx_t_9 = NULL;
5481 __pyx_t_10 = 1;
5482 {
5483 PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo};
5484 __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
5485 __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
5486 if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1093, __pyx_L5_except_error)
5487 __Pyx_GOTREF(__pyx_t_8);
5488 }
5489 __Pyx_Raise(__pyx_t_8, 0, 0, 0);
5490 __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5491 __PYX_ERR(1, 1093, __pyx_L5_except_error)
5492 }
5493 goto __pyx_L5_except_error;
5494
5495 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1090
5496 *
5497 * cdef inline int import_ufunc() except -1:
5498 * try: # <<<<<<<<<<<<<<
5499 * _import_umath()
5500 * except Exception:
5501*/
5502 __pyx_L5_except_error:;
5503 __Pyx_XGIVEREF(__pyx_t_1);
5504 __Pyx_XGIVEREF(__pyx_t_2);
5505 __Pyx_XGIVEREF(__pyx_t_3);
5506 __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
5507 goto __pyx_L1_error;
5508 __pyx_L8_try_end:;
5509 }
5510
5511 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1089
5512 * raise ImportError("numpy._core.umath failed to import")
5513 *
5514 * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
5515 * try:
5516 * _import_umath()
5517*/
5518
5519 /* function exit code */
5520 __pyx_r = 0;
5521 goto __pyx_L0;
5522 __pyx_L1_error:;
5523 __Pyx_XDECREF(__pyx_t_5);
5524 __Pyx_XDECREF(__pyx_t_6);
5525 __Pyx_XDECREF(__pyx_t_7);
5526 __Pyx_XDECREF(__pyx_t_8);
5527 __Pyx_XDECREF(__pyx_t_9);
5528 __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
5529 __pyx_r = -1;
5530 __pyx_L0:;
5531
5532 __Pyx_RefNannyFinishContext();
5533 return __pyx_r;
5534}
5535
5536/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1096
5537 *
5538 *
5539 * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
5540 * """
5541 * Cython equivalent of `isinstance(obj, np.timedelta64)`
5542*/
5543
5544static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
5545 int __pyx_r;
5546
5547 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1108
5548 * bool
5549 * """
5550 * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
5551 *
5552 *
5553*/
5554 {
5555
5556 __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type));
5557 }
5558 goto __pyx_L0;
5559
5560 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1096
5561 *
5562 *
5563 * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
5564 * """
5565 * Cython equivalent of `isinstance(obj, np.timedelta64)`
5566*/
5567
5568 /* function exit code */
5569 __pyx_L0:;
5570
5571 return __pyx_r;
5572}
5573
5574/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1111
5575 *
5576 *
5577 * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
5578 * """
5579 * Cython equivalent of `isinstance(obj, np.datetime64)`
5580*/
5581
5582static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
5583 int __pyx_r;
5584
5585 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1123
5586 * bool
5587 * """
5588 * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
5589 *
5590 *
5591*/
5592 {
5593
5594 __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type));
5595 }
5596 goto __pyx_L0;
5597
5598 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1111
5599 *
5600 *
5601 * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
5602 * """
5603 * Cython equivalent of `isinstance(obj, np.datetime64)`
5604*/
5605
5606 /* function exit code */
5607 __pyx_L0:;
5608
5609 return __pyx_r;
5610}
5611
5612/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1126
5613 *
5614 *
5615 * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
5616 * """
5617 * returns the int64 value underlying scalar numpy datetime64 object
5618*/
5619
5620static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
5621 npy_datetime __pyx_r;
5622
5623 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1133
5624 * also needed. That can be found using `get_datetime64_unit`.
5625 * """
5626 * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
5627 *
5628 *
5629*/
5630 {
5631
5632 __pyx_r = _PyDatetimeScalarObject_GetValue(__pyx_v_obj);
5633 }
5634 goto __pyx_L0;
5635
5636 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1126
5637 *
5638 *
5639 * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
5640 * """
5641 * returns the int64 value underlying scalar numpy datetime64 object
5642*/
5643
5644 /* function exit code */
5645 __pyx_L0:;
5646 return __pyx_r;
5647}
5648
5649/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1136
5650 *
5651 *
5652 * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
5653 * """
5654 * returns the int64 value underlying scalar numpy timedelta64 object
5655*/
5656
5657static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
5658 npy_timedelta __pyx_r;
5659
5660 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1140
5661 * returns the int64 value underlying scalar numpy timedelta64 object
5662 * """
5663 * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
5664 *
5665 *
5666*/
5667 {
5668
5669 __pyx_r = _PyTimedeltaScalarObject_GetValue(__pyx_v_obj);
5670 }
5671 goto __pyx_L0;
5672
5673 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1136
5674 *
5675 *
5676 * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
5677 * """
5678 * returns the int64 value underlying scalar numpy timedelta64 object
5679*/
5680
5681 /* function exit code */
5682 __pyx_L0:;
5683 return __pyx_r;
5684}
5685
5686/* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1143
5687 *
5688 *
5689 * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
5690 * """
5691 * returns the unit part of the dtype for a numpy datetime64 object.
5692*/
5693
5694static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
5695 NPY_DATETIMEUNIT __pyx_r;
5696
5697 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1147
5698 * returns the unit part of the dtype for a numpy datetime64 object.
5699 * """
5700 * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
5701 *
5702 *
5703*/
5704 {
5705
5706 __pyx_r = _PyDatetimeScalarObject_GetMetadata(__pyx_v_obj).base;
5707 }
5708 goto __pyx_L0;
5709
5710 /* "../miniforge3/envs/proteus-jupyterhub/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1143
5711 *
5712 *
5713 * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
5714 * """
5715 * returns the unit part of the dtype for a numpy datetime64 object.
5716*/
5717
5718 /* function exit code */
5719 __pyx_L0:;
5720 return __pyx_r;
5721}
5722
5723/* "canalyticalSolutions.pyx":51
5724 *
5725 *
5726 * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
5727 * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
5728 *
5729*/
5730
5731/* Python wrapper */
5732static PyObject *__pyx_pw_20canalyticalSolutions_1PlaneCouetteFlow_u(PyObject *__pyx_self,
5733#if CYTHON_VECTORCALL
5734PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
5735#else
5736PyObject *__pyx_args, PyObject *__pyx_kwds
5737#endif
5738); /*proto*/
5739static PyMethodDef __pyx_mdef_20canalyticalSolutions_1PlaneCouetteFlow_u = {"PlaneCouetteFlow_u", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_1PlaneCouetteFlow_u, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
5740static PyObject *__pyx_pw_20canalyticalSolutions_1PlaneCouetteFlow_u(PyObject *__pyx_self,
5741#if CYTHON_VECTORCALL
5742PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
5743#else
5744PyObject *__pyx_args, PyObject *__pyx_kwds
5745#endif
5746) {
5747 PyArrayObject *__pyx_v_iwork = 0;
5748 PyArrayObject *__pyx_v_rwork = 0;
5749 double __pyx_v_t;
5750 PyArrayObject *__pyx_v_x = 0;
5751 PyArrayObject *__pyx_v_u = 0;
5752 #if !CYTHON_VECTORCALL
5753 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
5754 #endif
5755 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
5756 PyObject* values[5] = {0,0,0,0,0};
5757 int __pyx_lineno = 0;
5758 const char *__pyx_filename = NULL;
5759 int __pyx_clineno = 0;
5760 PyObject *__pyx_r = 0;
5761 __Pyx_RefNannyDeclarations
5762 __Pyx_RefNannySetupContext("PlaneCouetteFlow_u (wrapper)", 0);
5763 #if !CYTHON_VECTORCALL
5764 #if CYTHON_ASSUME_SAFE_SIZE
5765 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
5766 #else
5767 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
5768 #endif
5769 #endif
5770 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
5771 {
5772 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
5773 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
5774 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 51, __pyx_L3_error)
5775 if (__pyx_kwds_len > 0) {
5776 switch (__pyx_nargs) {
5777 case 5:
5778 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
5779 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 51, __pyx_L3_error)
5780 CYTHON_FALLTHROUGH;
5781 case 4:
5782 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
5783 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 51, __pyx_L3_error)
5784 CYTHON_FALLTHROUGH;
5785 case 3:
5786 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
5787 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 51, __pyx_L3_error)
5788 CYTHON_FALLTHROUGH;
5789 case 2:
5790 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
5791 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 51, __pyx_L3_error)
5792 CYTHON_FALLTHROUGH;
5793 case 1:
5794 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
5795 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 51, __pyx_L3_error)
5796 CYTHON_FALLTHROUGH;
5797 case 0: break;
5798 default: goto __pyx_L5_argtuple_error;
5799 }
5800 const Py_ssize_t kwd_pos_args = __pyx_nargs;
5801 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "PlaneCouetteFlow_u", 0) < (0)) __PYX_ERR(0, 51, __pyx_L3_error)
5802 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
5803 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, i); __PYX_ERR(0, 51, __pyx_L3_error) }
5804 }
5805 } else if (unlikely(__pyx_nargs != 5)) {
5806 goto __pyx_L5_argtuple_error;
5807 } else {
5808 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
5809 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 51, __pyx_L3_error)
5810 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
5811 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 51, __pyx_L3_error)
5812 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
5813 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 51, __pyx_L3_error)
5814 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
5815 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 51, __pyx_L3_error)
5816 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
5817 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 51, __pyx_L3_error)
5818 }
5819 __pyx_v_iwork = ((PyArrayObject *)values[0]);
5820 __pyx_v_rwork = ((PyArrayObject *)values[1]);
5821 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L3_error)
5822 __pyx_v_x = ((PyArrayObject *)values[3]);
5823 __pyx_v_u = ((PyArrayObject *)values[4]);
5824 }
5825 goto __pyx_L6_skip;
5826 __pyx_L5_argtuple_error:;
5827 __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 51, __pyx_L3_error)
5828 __pyx_L6_skip:;
5829 goto __pyx_L4_argument_unpacking_done;
5830 __pyx_L3_error:;
5831 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
5832 Py_XDECREF(values[__pyx_temp]);
5833 }
5834 __Pyx_AddTraceback("canalyticalSolutions.PlaneCouetteFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
5835 __Pyx_RefNannyFinishContext();
5836 return NULL;
5837 __pyx_L4_argument_unpacking_done:;
5838 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 51, __pyx_L1_error)
5839 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 51, __pyx_L1_error)
5840 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 51, __pyx_L1_error)
5841 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 51, __pyx_L1_error)
5842 __pyx_r = __pyx_pf_20canalyticalSolutions_PlaneCouetteFlow_u(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
5843
5844 /* function exit code */
5845 goto __pyx_L0;
5846 __pyx_L1_error:;
5847 __pyx_r = NULL;
5848 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
5849 Py_XDECREF(values[__pyx_temp]);
5850 }
5851 goto __pyx_L7_cleaned_up;
5852 __pyx_L0:;
5853 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
5854 Py_XDECREF(values[__pyx_temp]);
5855 }
5856 __pyx_L7_cleaned_up:;
5857
5858 __Pyx_RefNannyFinishContext();
5859 return __pyx_r;
5860}
5861
5862static PyObject *__pyx_pf_20canalyticalSolutions_PlaneCouetteFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
5863 PyObject *__pyx_r = NULL;
5864 __Pyx_RefNannyDeclarations
5865 npy_intp __pyx_t_1;
5866 npy_intp __pyx_t_2;
5867 PyObject *__pyx_t_3 = NULL;
5868 int __pyx_lineno = 0;
5869 const char *__pyx_filename = NULL;
5870 int __pyx_clineno = 0;
5871 __Pyx_RefNannySetupContext("PlaneCouetteFlow_u", 0);
5872
5873 /* "canalyticalSolutions.pyx":52
5874 *
5875 * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
5876 * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
5877 *
5878 *
5879*/
5880 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
5881
5882 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
5883
5884 if (unlikely(__pyx_t_2 == 0)) {
5885 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
5886 __PYX_ERR(0, 52, __pyx_L1_error)
5887 }
5888 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
5889 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
5890 __PYX_ERR(0, 52, __pyx_L1_error)
5891 }
5892 __pyx_t_3 = __Pyx_PyLong_From_int(PlaneCouetteFlow_u(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
5893 __Pyx_GOTREF(__pyx_t_3);
5894
5895
5896 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 52, __pyx_L1_error)
5897 {
5898 PyObject *__pyx_temp;
5899 {
5900 __pyx_temp = __pyx_r;
5901 __pyx_r = ((PyObject*)__pyx_t_3);
5902 }
5903 __Pyx_XDECREF(__pyx_temp);
5904 }
5905 __pyx_t_3 = 0;
5906 goto __pyx_L0;
5907
5908 /* "canalyticalSolutions.pyx":51
5909 *
5910 *
5911 * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
5912 * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
5913 *
5914*/
5915
5916 /* function exit code */
5917 __pyx_L1_error:;
5918 __Pyx_XDECREF(__pyx_t_3);
5919 __Pyx_AddTraceback("canalyticalSolutions.PlaneCouetteFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
5920 __pyx_r = NULL;
5921 __pyx_L0:;
5922 __Pyx_XGIVEREF(__pyx_r);
5923 __Pyx_RefNannyFinishContext();
5924 return __pyx_r;
5925}
5926
5927/* "canalyticalSolutions.pyx":55
5928 *
5929 *
5930 * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
5931 * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
5932 *
5933*/
5934
5935/* Python wrapper */
5936static PyObject *__pyx_pw_20canalyticalSolutions_3diffusionSin1D(PyObject *__pyx_self,
5937#if CYTHON_VECTORCALL
5938PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
5939#else
5940PyObject *__pyx_args, PyObject *__pyx_kwds
5941#endif
5942); /*proto*/
5943static PyMethodDef __pyx_mdef_20canalyticalSolutions_3diffusionSin1D = {"diffusionSin1D", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_3diffusionSin1D, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
5944static PyObject *__pyx_pw_20canalyticalSolutions_3diffusionSin1D(PyObject *__pyx_self,
5945#if CYTHON_VECTORCALL
5946PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
5947#else
5948PyObject *__pyx_args, PyObject *__pyx_kwds
5949#endif
5950) {
5951 PyArrayObject *__pyx_v_iwork = 0;
5952 PyArrayObject *__pyx_v_rwork = 0;
5953 double __pyx_v_t;
5954 PyArrayObject *__pyx_v_x = 0;
5955 PyArrayObject *__pyx_v_u = 0;
5956 #if !CYTHON_VECTORCALL
5957 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
5958 #endif
5959 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
5960 PyObject* values[5] = {0,0,0,0,0};
5961 int __pyx_lineno = 0;
5962 const char *__pyx_filename = NULL;
5963 int __pyx_clineno = 0;
5964 PyObject *__pyx_r = 0;
5965 __Pyx_RefNannyDeclarations
5966 __Pyx_RefNannySetupContext("diffusionSin1D (wrapper)", 0);
5967 #if !CYTHON_VECTORCALL
5968 #if CYTHON_ASSUME_SAFE_SIZE
5969 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
5970 #else
5971 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
5972 #endif
5973 #endif
5974 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
5975 {
5976 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
5977 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
5978 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 55, __pyx_L3_error)
5979 if (__pyx_kwds_len > 0) {
5980 switch (__pyx_nargs) {
5981 case 5:
5982 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
5983 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 55, __pyx_L3_error)
5984 CYTHON_FALLTHROUGH;
5985 case 4:
5986 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
5987 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 55, __pyx_L3_error)
5988 CYTHON_FALLTHROUGH;
5989 case 3:
5990 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
5991 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 55, __pyx_L3_error)
5992 CYTHON_FALLTHROUGH;
5993 case 2:
5994 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
5995 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 55, __pyx_L3_error)
5996 CYTHON_FALLTHROUGH;
5997 case 1:
5998 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
5999 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 55, __pyx_L3_error)
6000 CYTHON_FALLTHROUGH;
6001 case 0: break;
6002 default: goto __pyx_L5_argtuple_error;
6003 }
6004 const Py_ssize_t kwd_pos_args = __pyx_nargs;
6005 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "diffusionSin1D", 0) < (0)) __PYX_ERR(0, 55, __pyx_L3_error)
6006 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
6007 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, i); __PYX_ERR(0, 55, __pyx_L3_error) }
6008 }
6009 } else if (unlikely(__pyx_nargs != 5)) {
6010 goto __pyx_L5_argtuple_error;
6011 } else {
6012 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6013 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 55, __pyx_L3_error)
6014 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6015 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 55, __pyx_L3_error)
6016 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6017 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 55, __pyx_L3_error)
6018 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6019 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 55, __pyx_L3_error)
6020 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6021 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 55, __pyx_L3_error)
6022 }
6023 __pyx_v_iwork = ((PyArrayObject *)values[0]);
6024 __pyx_v_rwork = ((PyArrayObject *)values[1]);
6025 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L3_error)
6026 __pyx_v_x = ((PyArrayObject *)values[3]);
6027 __pyx_v_u = ((PyArrayObject *)values[4]);
6028 }
6029 goto __pyx_L6_skip;
6030 __pyx_L5_argtuple_error:;
6031 __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 55, __pyx_L3_error)
6032 __pyx_L6_skip:;
6033 goto __pyx_L4_argument_unpacking_done;
6034 __pyx_L3_error:;
6035 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6036 Py_XDECREF(values[__pyx_temp]);
6037 }
6038 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
6039 __Pyx_RefNannyFinishContext();
6040 return NULL;
6041 __pyx_L4_argument_unpacking_done:;
6042 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 55, __pyx_L1_error)
6043 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 55, __pyx_L1_error)
6044 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 55, __pyx_L1_error)
6045 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 55, __pyx_L1_error)
6046 __pyx_r = __pyx_pf_20canalyticalSolutions_2diffusionSin1D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
6047
6048 /* function exit code */
6049 goto __pyx_L0;
6050 __pyx_L1_error:;
6051 __pyx_r = NULL;
6052 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6053 Py_XDECREF(values[__pyx_temp]);
6054 }
6055 goto __pyx_L7_cleaned_up;
6056 __pyx_L0:;
6057 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6058 Py_XDECREF(values[__pyx_temp]);
6059 }
6060 __pyx_L7_cleaned_up:;
6061
6062 __Pyx_RefNannyFinishContext();
6063 return __pyx_r;
6064}
6065
6066static PyObject *__pyx_pf_20canalyticalSolutions_2diffusionSin1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6067 PyObject *__pyx_r = NULL;
6068 __Pyx_RefNannyDeclarations
6069 npy_intp __pyx_t_1;
6070 npy_intp __pyx_t_2;
6071 PyObject *__pyx_t_3 = NULL;
6072 int __pyx_lineno = 0;
6073 const char *__pyx_filename = NULL;
6074 int __pyx_clineno = 0;
6075 __Pyx_RefNannySetupContext("diffusionSin1D", 0);
6076
6077 /* "canalyticalSolutions.pyx":56
6078 *
6079 * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6080 * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6081 *
6082 *
6083*/
6084 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
6085
6086 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
6087
6088 if (unlikely(__pyx_t_2 == 0)) {
6089 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
6090 __PYX_ERR(0, 56, __pyx_L1_error)
6091 }
6092 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
6093 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
6094 __PYX_ERR(0, 56, __pyx_L1_error)
6095 }
6096 __pyx_t_3 = __Pyx_PyLong_From_int(diffusionSin1D(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
6097 __Pyx_GOTREF(__pyx_t_3);
6098
6099
6100 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 56, __pyx_L1_error)
6101 {
6102 PyObject *__pyx_temp;
6103 {
6104 __pyx_temp = __pyx_r;
6105 __pyx_r = ((PyObject*)__pyx_t_3);
6106 }
6107 __Pyx_XDECREF(__pyx_temp);
6108 }
6109 __pyx_t_3 = 0;
6110 goto __pyx_L0;
6111
6112 /* "canalyticalSolutions.pyx":55
6113 *
6114 *
6115 * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6116 * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6117 *
6118*/
6119
6120 /* function exit code */
6121 __pyx_L1_error:;
6122 __Pyx_XDECREF(__pyx_t_3);
6123 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
6124 __pyx_r = NULL;
6125 __pyx_L0:;
6126 __Pyx_XGIVEREF(__pyx_r);
6127 __Pyx_RefNannyFinishContext();
6128 return __pyx_r;
6129}
6130
6131/* "canalyticalSolutions.pyx":59
6132 *
6133 *
6134 * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6135 * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6136 *
6137*/
6138
6139/* Python wrapper */
6140static PyObject *__pyx_pw_20canalyticalSolutions_5diffusionSin2D(PyObject *__pyx_self,
6141#if CYTHON_VECTORCALL
6142PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6143#else
6144PyObject *__pyx_args, PyObject *__pyx_kwds
6145#endif
6146); /*proto*/
6147static PyMethodDef __pyx_mdef_20canalyticalSolutions_5diffusionSin2D = {"diffusionSin2D", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_5diffusionSin2D, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
6148static PyObject *__pyx_pw_20canalyticalSolutions_5diffusionSin2D(PyObject *__pyx_self,
6149#if CYTHON_VECTORCALL
6150PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6151#else
6152PyObject *__pyx_args, PyObject *__pyx_kwds
6153#endif
6154) {
6155 PyArrayObject *__pyx_v_iwork = 0;
6156 PyArrayObject *__pyx_v_rwork = 0;
6157 double __pyx_v_t;
6158 PyArrayObject *__pyx_v_x = 0;
6159 PyArrayObject *__pyx_v_u = 0;
6160 #if !CYTHON_VECTORCALL
6161 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6162 #endif
6163 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6164 PyObject* values[5] = {0,0,0,0,0};
6165 int __pyx_lineno = 0;
6166 const char *__pyx_filename = NULL;
6167 int __pyx_clineno = 0;
6168 PyObject *__pyx_r = 0;
6169 __Pyx_RefNannyDeclarations
6170 __Pyx_RefNannySetupContext("diffusionSin2D (wrapper)", 0);
6171 #if !CYTHON_VECTORCALL
6172 #if CYTHON_ASSUME_SAFE_SIZE
6173 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
6174 #else
6175 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
6176 #endif
6177 #endif
6178 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
6179 {
6180 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
6181 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
6182 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 59, __pyx_L3_error)
6183 if (__pyx_kwds_len > 0) {
6184 switch (__pyx_nargs) {
6185 case 5:
6186 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6187 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 59, __pyx_L3_error)
6188 CYTHON_FALLTHROUGH;
6189 case 4:
6190 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6191 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 59, __pyx_L3_error)
6192 CYTHON_FALLTHROUGH;
6193 case 3:
6194 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6195 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 59, __pyx_L3_error)
6196 CYTHON_FALLTHROUGH;
6197 case 2:
6198 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6199 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 59, __pyx_L3_error)
6200 CYTHON_FALLTHROUGH;
6201 case 1:
6202 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6203 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 59, __pyx_L3_error)
6204 CYTHON_FALLTHROUGH;
6205 case 0: break;
6206 default: goto __pyx_L5_argtuple_error;
6207 }
6208 const Py_ssize_t kwd_pos_args = __pyx_nargs;
6209 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "diffusionSin2D", 0) < (0)) __PYX_ERR(0, 59, __pyx_L3_error)
6210 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
6211 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, i); __PYX_ERR(0, 59, __pyx_L3_error) }
6212 }
6213 } else if (unlikely(__pyx_nargs != 5)) {
6214 goto __pyx_L5_argtuple_error;
6215 } else {
6216 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6217 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 59, __pyx_L3_error)
6218 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6219 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 59, __pyx_L3_error)
6220 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6221 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 59, __pyx_L3_error)
6222 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6223 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 59, __pyx_L3_error)
6224 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6225 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 59, __pyx_L3_error)
6226 }
6227 __pyx_v_iwork = ((PyArrayObject *)values[0]);
6228 __pyx_v_rwork = ((PyArrayObject *)values[1]);
6229 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error)
6230 __pyx_v_x = ((PyArrayObject *)values[3]);
6231 __pyx_v_u = ((PyArrayObject *)values[4]);
6232 }
6233 goto __pyx_L6_skip;
6234 __pyx_L5_argtuple_error:;
6235 __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 59, __pyx_L3_error)
6236 __pyx_L6_skip:;
6237 goto __pyx_L4_argument_unpacking_done;
6238 __pyx_L3_error:;
6239 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6240 Py_XDECREF(values[__pyx_temp]);
6241 }
6242 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
6243 __Pyx_RefNannyFinishContext();
6244 return NULL;
6245 __pyx_L4_argument_unpacking_done:;
6246 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 59, __pyx_L1_error)
6247 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 59, __pyx_L1_error)
6248 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 59, __pyx_L1_error)
6249 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 59, __pyx_L1_error)
6250 __pyx_r = __pyx_pf_20canalyticalSolutions_4diffusionSin2D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
6251
6252 /* function exit code */
6253 goto __pyx_L0;
6254 __pyx_L1_error:;
6255 __pyx_r = NULL;
6256 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6257 Py_XDECREF(values[__pyx_temp]);
6258 }
6259 goto __pyx_L7_cleaned_up;
6260 __pyx_L0:;
6261 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6262 Py_XDECREF(values[__pyx_temp]);
6263 }
6264 __pyx_L7_cleaned_up:;
6265
6266 __Pyx_RefNannyFinishContext();
6267 return __pyx_r;
6268}
6269
6270static PyObject *__pyx_pf_20canalyticalSolutions_4diffusionSin2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6271 PyObject *__pyx_r = NULL;
6272 __Pyx_RefNannyDeclarations
6273 npy_intp __pyx_t_1;
6274 npy_intp __pyx_t_2;
6275 PyObject *__pyx_t_3 = NULL;
6276 int __pyx_lineno = 0;
6277 const char *__pyx_filename = NULL;
6278 int __pyx_clineno = 0;
6279 __Pyx_RefNannySetupContext("diffusionSin2D", 0);
6280
6281 /* "canalyticalSolutions.pyx":60
6282 *
6283 * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6284 * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6285 *
6286 *
6287*/
6288 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
6289
6290 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
6291
6292 if (unlikely(__pyx_t_2 == 0)) {
6293 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
6294 __PYX_ERR(0, 60, __pyx_L1_error)
6295 }
6296 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
6297 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
6298 __PYX_ERR(0, 60, __pyx_L1_error)
6299 }
6300 __pyx_t_3 = __Pyx_PyLong_From_int(diffusionSin2D(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
6301 __Pyx_GOTREF(__pyx_t_3);
6302
6303
6304 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 60, __pyx_L1_error)
6305 {
6306 PyObject *__pyx_temp;
6307 {
6308 __pyx_temp = __pyx_r;
6309 __pyx_r = ((PyObject*)__pyx_t_3);
6310 }
6311 __Pyx_XDECREF(__pyx_temp);
6312 }
6313 __pyx_t_3 = 0;
6314 goto __pyx_L0;
6315
6316 /* "canalyticalSolutions.pyx":59
6317 *
6318 *
6319 * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6320 * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6321 *
6322*/
6323
6324 /* function exit code */
6325 __pyx_L1_error:;
6326 __Pyx_XDECREF(__pyx_t_3);
6327 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
6328 __pyx_r = NULL;
6329 __pyx_L0:;
6330 __Pyx_XGIVEREF(__pyx_r);
6331 __Pyx_RefNannyFinishContext();
6332 return __pyx_r;
6333}
6334
6335/* "canalyticalSolutions.pyx":63
6336 *
6337 *
6338 * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6339 * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6340 *
6341*/
6342
6343/* Python wrapper */
6344static PyObject *__pyx_pw_20canalyticalSolutions_7diffusionSin3D(PyObject *__pyx_self,
6345#if CYTHON_VECTORCALL
6346PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6347#else
6348PyObject *__pyx_args, PyObject *__pyx_kwds
6349#endif
6350); /*proto*/
6351static PyMethodDef __pyx_mdef_20canalyticalSolutions_7diffusionSin3D = {"diffusionSin3D", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_7diffusionSin3D, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
6352static PyObject *__pyx_pw_20canalyticalSolutions_7diffusionSin3D(PyObject *__pyx_self,
6353#if CYTHON_VECTORCALL
6354PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6355#else
6356PyObject *__pyx_args, PyObject *__pyx_kwds
6357#endif
6358) {
6359 PyArrayObject *__pyx_v_iwork = 0;
6360 PyArrayObject *__pyx_v_rwork = 0;
6361 double __pyx_v_t;
6362 PyArrayObject *__pyx_v_x = 0;
6363 PyArrayObject *__pyx_v_u = 0;
6364 #if !CYTHON_VECTORCALL
6365 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6366 #endif
6367 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6368 PyObject* values[5] = {0,0,0,0,0};
6369 int __pyx_lineno = 0;
6370 const char *__pyx_filename = NULL;
6371 int __pyx_clineno = 0;
6372 PyObject *__pyx_r = 0;
6373 __Pyx_RefNannyDeclarations
6374 __Pyx_RefNannySetupContext("diffusionSin3D (wrapper)", 0);
6375 #if !CYTHON_VECTORCALL
6376 #if CYTHON_ASSUME_SAFE_SIZE
6377 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
6378 #else
6379 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
6380 #endif
6381 #endif
6382 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
6383 {
6384 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
6385 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
6386 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 63, __pyx_L3_error)
6387 if (__pyx_kwds_len > 0) {
6388 switch (__pyx_nargs) {
6389 case 5:
6390 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6391 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 63, __pyx_L3_error)
6392 CYTHON_FALLTHROUGH;
6393 case 4:
6394 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6395 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 63, __pyx_L3_error)
6396 CYTHON_FALLTHROUGH;
6397 case 3:
6398 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6399 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 63, __pyx_L3_error)
6400 CYTHON_FALLTHROUGH;
6401 case 2:
6402 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6403 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 63, __pyx_L3_error)
6404 CYTHON_FALLTHROUGH;
6405 case 1:
6406 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6407 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 63, __pyx_L3_error)
6408 CYTHON_FALLTHROUGH;
6409 case 0: break;
6410 default: goto __pyx_L5_argtuple_error;
6411 }
6412 const Py_ssize_t kwd_pos_args = __pyx_nargs;
6413 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "diffusionSin3D", 0) < (0)) __PYX_ERR(0, 63, __pyx_L3_error)
6414 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
6415 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, i); __PYX_ERR(0, 63, __pyx_L3_error) }
6416 }
6417 } else if (unlikely(__pyx_nargs != 5)) {
6418 goto __pyx_L5_argtuple_error;
6419 } else {
6420 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6421 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 63, __pyx_L3_error)
6422 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6423 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 63, __pyx_L3_error)
6424 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6425 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 63, __pyx_L3_error)
6426 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6427 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 63, __pyx_L3_error)
6428 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6429 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 63, __pyx_L3_error)
6430 }
6431 __pyx_v_iwork = ((PyArrayObject *)values[0]);
6432 __pyx_v_rwork = ((PyArrayObject *)values[1]);
6433 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 63, __pyx_L3_error)
6434 __pyx_v_x = ((PyArrayObject *)values[3]);
6435 __pyx_v_u = ((PyArrayObject *)values[4]);
6436 }
6437 goto __pyx_L6_skip;
6438 __pyx_L5_argtuple_error:;
6439 __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 63, __pyx_L3_error)
6440 __pyx_L6_skip:;
6441 goto __pyx_L4_argument_unpacking_done;
6442 __pyx_L3_error:;
6443 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6444 Py_XDECREF(values[__pyx_temp]);
6445 }
6446 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
6447 __Pyx_RefNannyFinishContext();
6448 return NULL;
6449 __pyx_L4_argument_unpacking_done:;
6450 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 63, __pyx_L1_error)
6451 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 63, __pyx_L1_error)
6452 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 63, __pyx_L1_error)
6453 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 63, __pyx_L1_error)
6454 __pyx_r = __pyx_pf_20canalyticalSolutions_6diffusionSin3D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
6455
6456 /* function exit code */
6457 goto __pyx_L0;
6458 __pyx_L1_error:;
6459 __pyx_r = NULL;
6460 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6461 Py_XDECREF(values[__pyx_temp]);
6462 }
6463 goto __pyx_L7_cleaned_up;
6464 __pyx_L0:;
6465 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6466 Py_XDECREF(values[__pyx_temp]);
6467 }
6468 __pyx_L7_cleaned_up:;
6469
6470 __Pyx_RefNannyFinishContext();
6471 return __pyx_r;
6472}
6473
6474static PyObject *__pyx_pf_20canalyticalSolutions_6diffusionSin3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6475 PyObject *__pyx_r = NULL;
6476 __Pyx_RefNannyDeclarations
6477 npy_intp __pyx_t_1;
6478 npy_intp __pyx_t_2;
6479 PyObject *__pyx_t_3 = NULL;
6480 int __pyx_lineno = 0;
6481 const char *__pyx_filename = NULL;
6482 int __pyx_clineno = 0;
6483 __Pyx_RefNannySetupContext("diffusionSin3D", 0);
6484
6485 /* "canalyticalSolutions.pyx":64
6486 *
6487 * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6488 * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6489 *
6490 *
6491*/
6492 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
6493
6494 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
6495
6496 if (unlikely(__pyx_t_2 == 0)) {
6497 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
6498 __PYX_ERR(0, 64, __pyx_L1_error)
6499 }
6500 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
6501 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
6502 __PYX_ERR(0, 64, __pyx_L1_error)
6503 }
6504 __pyx_t_3 = __Pyx_PyLong_From_int(diffusionSin3D(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 64, __pyx_L1_error)
6505 __Pyx_GOTREF(__pyx_t_3);
6506
6507
6508 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 64, __pyx_L1_error)
6509 {
6510 PyObject *__pyx_temp;
6511 {
6512 __pyx_temp = __pyx_r;
6513 __pyx_r = ((PyObject*)__pyx_t_3);
6514 }
6515 __Pyx_XDECREF(__pyx_temp);
6516 }
6517 __pyx_t_3 = 0;
6518 goto __pyx_L0;
6519
6520 /* "canalyticalSolutions.pyx":63
6521 *
6522 *
6523 * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6524 * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6525 *
6526*/
6527
6528 /* function exit code */
6529 __pyx_L1_error:;
6530 __Pyx_XDECREF(__pyx_t_3);
6531 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
6532 __pyx_r = NULL;
6533 __pyx_L0:;
6534 __Pyx_XGIVEREF(__pyx_r);
6535 __Pyx_RefNannyFinishContext();
6536 return __pyx_r;
6537}
6538
6539/* "canalyticalSolutions.pyx":67
6540 *
6541 *
6542 * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6543 * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6544 *
6545*/
6546
6547/* Python wrapper */
6548static PyObject *__pyx_pw_20canalyticalSolutions_9diffusionSin1D_r(PyObject *__pyx_self,
6549#if CYTHON_VECTORCALL
6550PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6551#else
6552PyObject *__pyx_args, PyObject *__pyx_kwds
6553#endif
6554); /*proto*/
6555static PyMethodDef __pyx_mdef_20canalyticalSolutions_9diffusionSin1D_r = {"diffusionSin1D_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_9diffusionSin1D_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
6556static PyObject *__pyx_pw_20canalyticalSolutions_9diffusionSin1D_r(PyObject *__pyx_self,
6557#if CYTHON_VECTORCALL
6558PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6559#else
6560PyObject *__pyx_args, PyObject *__pyx_kwds
6561#endif
6562) {
6563 PyArrayObject *__pyx_v_iwork = 0;
6564 PyArrayObject *__pyx_v_rwork = 0;
6565 double __pyx_v_t;
6566 PyArrayObject *__pyx_v_x = 0;
6567 PyArrayObject *__pyx_v_u = 0;
6568 PyArrayObject *__pyx_v_r = 0;
6569 #if !CYTHON_VECTORCALL
6570 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6571 #endif
6572 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6573 PyObject* values[6] = {0,0,0,0,0,0};
6574 int __pyx_lineno = 0;
6575 const char *__pyx_filename = NULL;
6576 int __pyx_clineno = 0;
6577 PyObject *__pyx_r = 0;
6578 __Pyx_RefNannyDeclarations
6579 __Pyx_RefNannySetupContext("diffusionSin1D_r (wrapper)", 0);
6580 #if !CYTHON_VECTORCALL
6581 #if CYTHON_ASSUME_SAFE_SIZE
6582 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
6583 #else
6584 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
6585 #endif
6586 #endif
6587 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
6588 {
6589 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
6590 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
6591 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 67, __pyx_L3_error)
6592 if (__pyx_kwds_len > 0) {
6593 switch (__pyx_nargs) {
6594 case 6:
6595 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
6596 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 67, __pyx_L3_error)
6597 CYTHON_FALLTHROUGH;
6598 case 5:
6599 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6600 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 67, __pyx_L3_error)
6601 CYTHON_FALLTHROUGH;
6602 case 4:
6603 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6604 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 67, __pyx_L3_error)
6605 CYTHON_FALLTHROUGH;
6606 case 3:
6607 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6608 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 67, __pyx_L3_error)
6609 CYTHON_FALLTHROUGH;
6610 case 2:
6611 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6612 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 67, __pyx_L3_error)
6613 CYTHON_FALLTHROUGH;
6614 case 1:
6615 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6616 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 67, __pyx_L3_error)
6617 CYTHON_FALLTHROUGH;
6618 case 0: break;
6619 default: goto __pyx_L5_argtuple_error;
6620 }
6621 const Py_ssize_t kwd_pos_args = __pyx_nargs;
6622 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "diffusionSin1D_r", 0) < (0)) __PYX_ERR(0, 67, __pyx_L3_error)
6623 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
6624 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, i); __PYX_ERR(0, 67, __pyx_L3_error) }
6625 }
6626 } else if (unlikely(__pyx_nargs != 6)) {
6627 goto __pyx_L5_argtuple_error;
6628 } else {
6629 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6630 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 67, __pyx_L3_error)
6631 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6632 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 67, __pyx_L3_error)
6633 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6634 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 67, __pyx_L3_error)
6635 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6636 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 67, __pyx_L3_error)
6637 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6638 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 67, __pyx_L3_error)
6639 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
6640 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 67, __pyx_L3_error)
6641 }
6642 __pyx_v_iwork = ((PyArrayObject *)values[0]);
6643 __pyx_v_rwork = ((PyArrayObject *)values[1]);
6644 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 67, __pyx_L3_error)
6645 __pyx_v_x = ((PyArrayObject *)values[3]);
6646 __pyx_v_u = ((PyArrayObject *)values[4]);
6647 __pyx_v_r = ((PyArrayObject *)values[5]);
6648 }
6649 goto __pyx_L6_skip;
6650 __pyx_L5_argtuple_error:;
6651 __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 67, __pyx_L3_error)
6652 __pyx_L6_skip:;
6653 goto __pyx_L4_argument_unpacking_done;
6654 __pyx_L3_error:;
6655 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6656 Py_XDECREF(values[__pyx_temp]);
6657 }
6658 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
6659 __Pyx_RefNannyFinishContext();
6660 return NULL;
6661 __pyx_L4_argument_unpacking_done:;
6662 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 67, __pyx_L1_error)
6663 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 67, __pyx_L1_error)
6664 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 67, __pyx_L1_error)
6665 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 67, __pyx_L1_error)
6666 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 67, __pyx_L1_error)
6667 __pyx_r = __pyx_pf_20canalyticalSolutions_8diffusionSin1D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
6668
6669 /* function exit code */
6670 goto __pyx_L0;
6671 __pyx_L1_error:;
6672 __pyx_r = NULL;
6673 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6674 Py_XDECREF(values[__pyx_temp]);
6675 }
6676 goto __pyx_L7_cleaned_up;
6677 __pyx_L0:;
6678 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6679 Py_XDECREF(values[__pyx_temp]);
6680 }
6681 __pyx_L7_cleaned_up:;
6682
6683 __Pyx_RefNannyFinishContext();
6684 return __pyx_r;
6685}
6686
6687static PyObject *__pyx_pf_20canalyticalSolutions_8diffusionSin1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
6688 PyObject *__pyx_r = NULL;
6689 __Pyx_RefNannyDeclarations
6690 npy_intp __pyx_t_1;
6691 npy_intp __pyx_t_2;
6692 PyObject *__pyx_t_3 = NULL;
6693 int __pyx_lineno = 0;
6694 const char *__pyx_filename = NULL;
6695 int __pyx_clineno = 0;
6696 __Pyx_RefNannySetupContext("diffusionSin1D_r", 0);
6697
6698 /* "canalyticalSolutions.pyx":68
6699 *
6700 * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
6701 * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
6702 *
6703 *
6704*/
6705 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
6706
6707 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
6708
6709 if (unlikely(__pyx_t_2 == 0)) {
6710 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
6711 __PYX_ERR(0, 68, __pyx_L1_error)
6712 }
6713 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
6714 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
6715 __PYX_ERR(0, 68, __pyx_L1_error)
6716 }
6717 __pyx_t_3 = __Pyx_PyLong_From_int(diffusionSin1D_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error)
6718 __Pyx_GOTREF(__pyx_t_3);
6719
6720
6721 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 68, __pyx_L1_error)
6722 {
6723 PyObject *__pyx_temp;
6724 {
6725 __pyx_temp = __pyx_r;
6726 __pyx_r = ((PyObject*)__pyx_t_3);
6727 }
6728 __Pyx_XDECREF(__pyx_temp);
6729 }
6730 __pyx_t_3 = 0;
6731 goto __pyx_L0;
6732
6733 /* "canalyticalSolutions.pyx":67
6734 *
6735 *
6736 * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6737 * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6738 *
6739*/
6740
6741 /* function exit code */
6742 __pyx_L1_error:;
6743 __Pyx_XDECREF(__pyx_t_3);
6744 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
6745 __pyx_r = NULL;
6746 __pyx_L0:;
6747 __Pyx_XGIVEREF(__pyx_r);
6748 __Pyx_RefNannyFinishContext();
6749 return __pyx_r;
6750}
6751
6752/* "canalyticalSolutions.pyx":71
6753 *
6754 *
6755 * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6756 * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6757 *
6758*/
6759
6760/* Python wrapper */
6761static PyObject *__pyx_pw_20canalyticalSolutions_11diffusionSin2D_r(PyObject *__pyx_self,
6762#if CYTHON_VECTORCALL
6763PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6764#else
6765PyObject *__pyx_args, PyObject *__pyx_kwds
6766#endif
6767); /*proto*/
6768static PyMethodDef __pyx_mdef_20canalyticalSolutions_11diffusionSin2D_r = {"diffusionSin2D_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_11diffusionSin2D_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
6769static PyObject *__pyx_pw_20canalyticalSolutions_11diffusionSin2D_r(PyObject *__pyx_self,
6770#if CYTHON_VECTORCALL
6771PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6772#else
6773PyObject *__pyx_args, PyObject *__pyx_kwds
6774#endif
6775) {
6776 PyArrayObject *__pyx_v_iwork = 0;
6777 PyArrayObject *__pyx_v_rwork = 0;
6778 double __pyx_v_t;
6779 PyArrayObject *__pyx_v_x = 0;
6780 PyArrayObject *__pyx_v_u = 0;
6781 PyArrayObject *__pyx_v_r = 0;
6782 #if !CYTHON_VECTORCALL
6783 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6784 #endif
6785 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6786 PyObject* values[6] = {0,0,0,0,0,0};
6787 int __pyx_lineno = 0;
6788 const char *__pyx_filename = NULL;
6789 int __pyx_clineno = 0;
6790 PyObject *__pyx_r = 0;
6791 __Pyx_RefNannyDeclarations
6792 __Pyx_RefNannySetupContext("diffusionSin2D_r (wrapper)", 0);
6793 #if !CYTHON_VECTORCALL
6794 #if CYTHON_ASSUME_SAFE_SIZE
6795 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
6796 #else
6797 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
6798 #endif
6799 #endif
6800 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
6801 {
6802 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
6803 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
6804 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 71, __pyx_L3_error)
6805 if (__pyx_kwds_len > 0) {
6806 switch (__pyx_nargs) {
6807 case 6:
6808 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
6809 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 71, __pyx_L3_error)
6810 CYTHON_FALLTHROUGH;
6811 case 5:
6812 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6813 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 71, __pyx_L3_error)
6814 CYTHON_FALLTHROUGH;
6815 case 4:
6816 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6817 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 71, __pyx_L3_error)
6818 CYTHON_FALLTHROUGH;
6819 case 3:
6820 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6821 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 71, __pyx_L3_error)
6822 CYTHON_FALLTHROUGH;
6823 case 2:
6824 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6825 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 71, __pyx_L3_error)
6826 CYTHON_FALLTHROUGH;
6827 case 1:
6828 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6829 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 71, __pyx_L3_error)
6830 CYTHON_FALLTHROUGH;
6831 case 0: break;
6832 default: goto __pyx_L5_argtuple_error;
6833 }
6834 const Py_ssize_t kwd_pos_args = __pyx_nargs;
6835 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "diffusionSin2D_r", 0) < (0)) __PYX_ERR(0, 71, __pyx_L3_error)
6836 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
6837 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, i); __PYX_ERR(0, 71, __pyx_L3_error) }
6838 }
6839 } else if (unlikely(__pyx_nargs != 6)) {
6840 goto __pyx_L5_argtuple_error;
6841 } else {
6842 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
6843 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 71, __pyx_L3_error)
6844 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
6845 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 71, __pyx_L3_error)
6846 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
6847 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 71, __pyx_L3_error)
6848 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
6849 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 71, __pyx_L3_error)
6850 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
6851 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 71, __pyx_L3_error)
6852 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
6853 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 71, __pyx_L3_error)
6854 }
6855 __pyx_v_iwork = ((PyArrayObject *)values[0]);
6856 __pyx_v_rwork = ((PyArrayObject *)values[1]);
6857 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L3_error)
6858 __pyx_v_x = ((PyArrayObject *)values[3]);
6859 __pyx_v_u = ((PyArrayObject *)values[4]);
6860 __pyx_v_r = ((PyArrayObject *)values[5]);
6861 }
6862 goto __pyx_L6_skip;
6863 __pyx_L5_argtuple_error:;
6864 __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 71, __pyx_L3_error)
6865 __pyx_L6_skip:;
6866 goto __pyx_L4_argument_unpacking_done;
6867 __pyx_L3_error:;
6868 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6869 Py_XDECREF(values[__pyx_temp]);
6870 }
6871 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
6872 __Pyx_RefNannyFinishContext();
6873 return NULL;
6874 __pyx_L4_argument_unpacking_done:;
6875 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 71, __pyx_L1_error)
6876 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 71, __pyx_L1_error)
6877 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 71, __pyx_L1_error)
6878 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 71, __pyx_L1_error)
6879 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 71, __pyx_L1_error)
6880 __pyx_r = __pyx_pf_20canalyticalSolutions_10diffusionSin2D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
6881
6882 /* function exit code */
6883 goto __pyx_L0;
6884 __pyx_L1_error:;
6885 __pyx_r = NULL;
6886 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6887 Py_XDECREF(values[__pyx_temp]);
6888 }
6889 goto __pyx_L7_cleaned_up;
6890 __pyx_L0:;
6891 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6892 Py_XDECREF(values[__pyx_temp]);
6893 }
6894 __pyx_L7_cleaned_up:;
6895
6896 __Pyx_RefNannyFinishContext();
6897 return __pyx_r;
6898}
6899
6900static PyObject *__pyx_pf_20canalyticalSolutions_10diffusionSin2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
6901 PyObject *__pyx_r = NULL;
6902 __Pyx_RefNannyDeclarations
6903 npy_intp __pyx_t_1;
6904 npy_intp __pyx_t_2;
6905 PyObject *__pyx_t_3 = NULL;
6906 int __pyx_lineno = 0;
6907 const char *__pyx_filename = NULL;
6908 int __pyx_clineno = 0;
6909 __Pyx_RefNannySetupContext("diffusionSin2D_r", 0);
6910
6911 /* "canalyticalSolutions.pyx":72
6912 *
6913 * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
6914 * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
6915 *
6916 *
6917*/
6918 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
6919
6920 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
6921
6922 if (unlikely(__pyx_t_2 == 0)) {
6923 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
6924 __PYX_ERR(0, 72, __pyx_L1_error)
6925 }
6926 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
6927 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
6928 __PYX_ERR(0, 72, __pyx_L1_error)
6929 }
6930 __pyx_t_3 = __Pyx_PyLong_From_int(diffusionSin2D_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error)
6931 __Pyx_GOTREF(__pyx_t_3);
6932
6933
6934 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 72, __pyx_L1_error)
6935 {
6936 PyObject *__pyx_temp;
6937 {
6938 __pyx_temp = __pyx_r;
6939 __pyx_r = ((PyObject*)__pyx_t_3);
6940 }
6941 __Pyx_XDECREF(__pyx_temp);
6942 }
6943 __pyx_t_3 = 0;
6944 goto __pyx_L0;
6945
6946 /* "canalyticalSolutions.pyx":71
6947 *
6948 *
6949 * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6950 * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6951 *
6952*/
6953
6954 /* function exit code */
6955 __pyx_L1_error:;
6956 __Pyx_XDECREF(__pyx_t_3);
6957 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
6958 __pyx_r = NULL;
6959 __pyx_L0:;
6960 __Pyx_XGIVEREF(__pyx_r);
6961 __Pyx_RefNannyFinishContext();
6962 return __pyx_r;
6963}
6964
6965/* "canalyticalSolutions.pyx":75
6966 *
6967 *
6968 * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6969 * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6970 *
6971*/
6972
6973/* Python wrapper */
6974static PyObject *__pyx_pw_20canalyticalSolutions_13diffusionSin3D_r(PyObject *__pyx_self,
6975#if CYTHON_VECTORCALL
6976PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6977#else
6978PyObject *__pyx_args, PyObject *__pyx_kwds
6979#endif
6980); /*proto*/
6981static PyMethodDef __pyx_mdef_20canalyticalSolutions_13diffusionSin3D_r = {"diffusionSin3D_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_13diffusionSin3D_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
6982static PyObject *__pyx_pw_20canalyticalSolutions_13diffusionSin3D_r(PyObject *__pyx_self,
6983#if CYTHON_VECTORCALL
6984PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6985#else
6986PyObject *__pyx_args, PyObject *__pyx_kwds
6987#endif
6988) {
6989 PyArrayObject *__pyx_v_iwork = 0;
6990 PyArrayObject *__pyx_v_rwork = 0;
6991 double __pyx_v_t;
6992 PyArrayObject *__pyx_v_x = 0;
6993 PyArrayObject *__pyx_v_u = 0;
6994 PyArrayObject *__pyx_v_r = 0;
6995 #if !CYTHON_VECTORCALL
6996 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6997 #endif
6998 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6999 PyObject* values[6] = {0,0,0,0,0,0};
7000 int __pyx_lineno = 0;
7001 const char *__pyx_filename = NULL;
7002 int __pyx_clineno = 0;
7003 PyObject *__pyx_r = 0;
7004 __Pyx_RefNannyDeclarations
7005 __Pyx_RefNannySetupContext("diffusionSin3D_r (wrapper)", 0);
7006 #if !CYTHON_VECTORCALL
7007 #if CYTHON_ASSUME_SAFE_SIZE
7008 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
7009 #else
7010 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
7011 #endif
7012 #endif
7013 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
7014 {
7015 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
7016 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
7017 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 75, __pyx_L3_error)
7018 if (__pyx_kwds_len > 0) {
7019 switch (__pyx_nargs) {
7020 case 6:
7021 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
7022 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 75, __pyx_L3_error)
7023 CYTHON_FALLTHROUGH;
7024 case 5:
7025 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7026 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 75, __pyx_L3_error)
7027 CYTHON_FALLTHROUGH;
7028 case 4:
7029 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7030 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 75, __pyx_L3_error)
7031 CYTHON_FALLTHROUGH;
7032 case 3:
7033 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7034 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 75, __pyx_L3_error)
7035 CYTHON_FALLTHROUGH;
7036 case 2:
7037 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7038 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 75, __pyx_L3_error)
7039 CYTHON_FALLTHROUGH;
7040 case 1:
7041 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7042 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 75, __pyx_L3_error)
7043 CYTHON_FALLTHROUGH;
7044 case 0: break;
7045 default: goto __pyx_L5_argtuple_error;
7046 }
7047 const Py_ssize_t kwd_pos_args = __pyx_nargs;
7048 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "diffusionSin3D_r", 0) < (0)) __PYX_ERR(0, 75, __pyx_L3_error)
7049 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
7050 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, i); __PYX_ERR(0, 75, __pyx_L3_error) }
7051 }
7052 } else if (unlikely(__pyx_nargs != 6)) {
7053 goto __pyx_L5_argtuple_error;
7054 } else {
7055 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7056 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 75, __pyx_L3_error)
7057 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7058 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 75, __pyx_L3_error)
7059 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7060 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 75, __pyx_L3_error)
7061 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7062 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 75, __pyx_L3_error)
7063 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7064 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 75, __pyx_L3_error)
7065 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
7066 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 75, __pyx_L3_error)
7067 }
7068 __pyx_v_iwork = ((PyArrayObject *)values[0]);
7069 __pyx_v_rwork = ((PyArrayObject *)values[1]);
7070 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 75, __pyx_L3_error)
7071 __pyx_v_x = ((PyArrayObject *)values[3]);
7072 __pyx_v_u = ((PyArrayObject *)values[4]);
7073 __pyx_v_r = ((PyArrayObject *)values[5]);
7074 }
7075 goto __pyx_L6_skip;
7076 __pyx_L5_argtuple_error:;
7077 __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 75, __pyx_L3_error)
7078 __pyx_L6_skip:;
7079 goto __pyx_L4_argument_unpacking_done;
7080 __pyx_L3_error:;
7081 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7082 Py_XDECREF(values[__pyx_temp]);
7083 }
7084 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
7085 __Pyx_RefNannyFinishContext();
7086 return NULL;
7087 __pyx_L4_argument_unpacking_done:;
7088 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 75, __pyx_L1_error)
7089 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 75, __pyx_L1_error)
7090 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 75, __pyx_L1_error)
7091 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 75, __pyx_L1_error)
7092 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 75, __pyx_L1_error)
7093 __pyx_r = __pyx_pf_20canalyticalSolutions_12diffusionSin3D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
7094
7095 /* function exit code */
7096 goto __pyx_L0;
7097 __pyx_L1_error:;
7098 __pyx_r = NULL;
7099 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7100 Py_XDECREF(values[__pyx_temp]);
7101 }
7102 goto __pyx_L7_cleaned_up;
7103 __pyx_L0:;
7104 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7105 Py_XDECREF(values[__pyx_temp]);
7106 }
7107 __pyx_L7_cleaned_up:;
7108
7109 __Pyx_RefNannyFinishContext();
7110 return __pyx_r;
7111}
7112
7113static PyObject *__pyx_pf_20canalyticalSolutions_12diffusionSin3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
7114 PyObject *__pyx_r = NULL;
7115 __Pyx_RefNannyDeclarations
7116 npy_intp __pyx_t_1;
7117 npy_intp __pyx_t_2;
7118 PyObject *__pyx_t_3 = NULL;
7119 int __pyx_lineno = 0;
7120 const char *__pyx_filename = NULL;
7121 int __pyx_clineno = 0;
7122 __Pyx_RefNannySetupContext("diffusionSin3D_r", 0);
7123
7124 /* "canalyticalSolutions.pyx":76
7125 *
7126 * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
7127 * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
7128 *
7129 *
7130*/
7131 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
7132
7133 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
7134
7135 if (unlikely(__pyx_t_2 == 0)) {
7136 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
7137 __PYX_ERR(0, 76, __pyx_L1_error)
7138 }
7139 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
7140 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
7141 __PYX_ERR(0, 76, __pyx_L1_error)
7142 }
7143 __pyx_t_3 = __Pyx_PyLong_From_int(diffusionSin3D_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error)
7144 __Pyx_GOTREF(__pyx_t_3);
7145
7146
7147 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 76, __pyx_L1_error)
7148 {
7149 PyObject *__pyx_temp;
7150 {
7151 __pyx_temp = __pyx_r;
7152 __pyx_r = ((PyObject*)__pyx_t_3);
7153 }
7154 __Pyx_XDECREF(__pyx_temp);
7155 }
7156 __pyx_t_3 = 0;
7157 goto __pyx_L0;
7158
7159 /* "canalyticalSolutions.pyx":75
7160 *
7161 *
7162 * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
7163 * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
7164 *
7165*/
7166
7167 /* function exit code */
7168 __pyx_L1_error:;
7169 __Pyx_XDECREF(__pyx_t_3);
7170 __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
7171 __pyx_r = NULL;
7172 __pyx_L0:;
7173 __Pyx_XGIVEREF(__pyx_r);
7174 __Pyx_RefNannyFinishContext();
7175 return __pyx_r;
7176}
7177
7178/* "canalyticalSolutions.pyx":79
7179 *
7180 *
7181 * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7182 * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7183 *
7184*/
7185
7186/* Python wrapper */
7187static PyObject *__pyx_pw_20canalyticalSolutions_15LinearAD_DiracIC(PyObject *__pyx_self,
7188#if CYTHON_VECTORCALL
7189PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7190#else
7191PyObject *__pyx_args, PyObject *__pyx_kwds
7192#endif
7193); /*proto*/
7194static PyMethodDef __pyx_mdef_20canalyticalSolutions_15LinearAD_DiracIC = {"LinearAD_DiracIC", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_15LinearAD_DiracIC, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
7195static PyObject *__pyx_pw_20canalyticalSolutions_15LinearAD_DiracIC(PyObject *__pyx_self,
7196#if CYTHON_VECTORCALL
7197PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7198#else
7199PyObject *__pyx_args, PyObject *__pyx_kwds
7200#endif
7201) {
7202 PyArrayObject *__pyx_v_iwork = 0;
7203 PyArrayObject *__pyx_v_rwork = 0;
7204 double __pyx_v_t;
7205 PyArrayObject *__pyx_v_x = 0;
7206 PyArrayObject *__pyx_v_u = 0;
7207 #if !CYTHON_VECTORCALL
7208 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
7209 #endif
7210 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7211 PyObject* values[5] = {0,0,0,0,0};
7212 int __pyx_lineno = 0;
7213 const char *__pyx_filename = NULL;
7214 int __pyx_clineno = 0;
7215 PyObject *__pyx_r = 0;
7216 __Pyx_RefNannyDeclarations
7217 __Pyx_RefNannySetupContext("LinearAD_DiracIC (wrapper)", 0);
7218 #if !CYTHON_VECTORCALL
7219 #if CYTHON_ASSUME_SAFE_SIZE
7220 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
7221 #else
7222 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
7223 #endif
7224 #endif
7225 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
7226 {
7227 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
7228 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
7229 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 79, __pyx_L3_error)
7230 if (__pyx_kwds_len > 0) {
7231 switch (__pyx_nargs) {
7232 case 5:
7233 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7234 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 79, __pyx_L3_error)
7235 CYTHON_FALLTHROUGH;
7236 case 4:
7237 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7238 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 79, __pyx_L3_error)
7239 CYTHON_FALLTHROUGH;
7240 case 3:
7241 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7242 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 79, __pyx_L3_error)
7243 CYTHON_FALLTHROUGH;
7244 case 2:
7245 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7246 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 79, __pyx_L3_error)
7247 CYTHON_FALLTHROUGH;
7248 case 1:
7249 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7250 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 79, __pyx_L3_error)
7251 CYTHON_FALLTHROUGH;
7252 case 0: break;
7253 default: goto __pyx_L5_argtuple_error;
7254 }
7255 const Py_ssize_t kwd_pos_args = __pyx_nargs;
7256 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearAD_DiracIC", 0) < (0)) __PYX_ERR(0, 79, __pyx_L3_error)
7257 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
7258 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, i); __PYX_ERR(0, 79, __pyx_L3_error) }
7259 }
7260 } else if (unlikely(__pyx_nargs != 5)) {
7261 goto __pyx_L5_argtuple_error;
7262 } else {
7263 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7264 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 79, __pyx_L3_error)
7265 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7266 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 79, __pyx_L3_error)
7267 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7268 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 79, __pyx_L3_error)
7269 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7270 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 79, __pyx_L3_error)
7271 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7272 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 79, __pyx_L3_error)
7273 }
7274 __pyx_v_iwork = ((PyArrayObject *)values[0]);
7275 __pyx_v_rwork = ((PyArrayObject *)values[1]);
7276 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 79, __pyx_L3_error)
7277 __pyx_v_x = ((PyArrayObject *)values[3]);
7278 __pyx_v_u = ((PyArrayObject *)values[4]);
7279 }
7280 goto __pyx_L6_skip;
7281 __pyx_L5_argtuple_error:;
7282 __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 79, __pyx_L3_error)
7283 __pyx_L6_skip:;
7284 goto __pyx_L4_argument_unpacking_done;
7285 __pyx_L3_error:;
7286 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7287 Py_XDECREF(values[__pyx_temp]);
7288 }
7289 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
7290 __Pyx_RefNannyFinishContext();
7291 return NULL;
7292 __pyx_L4_argument_unpacking_done:;
7293 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 79, __pyx_L1_error)
7294 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 79, __pyx_L1_error)
7295 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 79, __pyx_L1_error)
7296 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 79, __pyx_L1_error)
7297 __pyx_r = __pyx_pf_20canalyticalSolutions_14LinearAD_DiracIC(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7298
7299 /* function exit code */
7300 goto __pyx_L0;
7301 __pyx_L1_error:;
7302 __pyx_r = NULL;
7303 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7304 Py_XDECREF(values[__pyx_temp]);
7305 }
7306 goto __pyx_L7_cleaned_up;
7307 __pyx_L0:;
7308 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7309 Py_XDECREF(values[__pyx_temp]);
7310 }
7311 __pyx_L7_cleaned_up:;
7312
7313 __Pyx_RefNannyFinishContext();
7314 return __pyx_r;
7315}
7316
7317static PyObject *__pyx_pf_20canalyticalSolutions_14LinearAD_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7318 PyObject *__pyx_r = NULL;
7319 __Pyx_RefNannyDeclarations
7320 npy_intp __pyx_t_1;
7321 npy_intp __pyx_t_2;
7322 PyObject *__pyx_t_3 = NULL;
7323 int __pyx_lineno = 0;
7324 const char *__pyx_filename = NULL;
7325 int __pyx_clineno = 0;
7326 __Pyx_RefNannySetupContext("LinearAD_DiracIC", 0);
7327
7328 /* "canalyticalSolutions.pyx":80
7329 *
7330 * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7331 * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7332 *
7333 *
7334*/
7335 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
7336
7337 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
7338
7339 if (unlikely(__pyx_t_2 == 0)) {
7340 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
7341 __PYX_ERR(0, 80, __pyx_L1_error)
7342 }
7343 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
7344 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
7345 __PYX_ERR(0, 80, __pyx_L1_error)
7346 }
7347 __pyx_t_3 = __Pyx_PyLong_From_int(LinearAD_DiracIC(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
7348 __Pyx_GOTREF(__pyx_t_3);
7349
7350
7351 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 80, __pyx_L1_error)
7352 {
7353 PyObject *__pyx_temp;
7354 {
7355 __pyx_temp = __pyx_r;
7356 __pyx_r = ((PyObject*)__pyx_t_3);
7357 }
7358 __Pyx_XDECREF(__pyx_temp);
7359 }
7360 __pyx_t_3 = 0;
7361 goto __pyx_L0;
7362
7363 /* "canalyticalSolutions.pyx":79
7364 *
7365 *
7366 * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7367 * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7368 *
7369*/
7370
7371 /* function exit code */
7372 __pyx_L1_error:;
7373 __Pyx_XDECREF(__pyx_t_3);
7374 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
7375 __pyx_r = NULL;
7376 __pyx_L0:;
7377 __Pyx_XGIVEREF(__pyx_r);
7378 __Pyx_RefNannyFinishContext();
7379 return __pyx_r;
7380}
7381
7382/* "canalyticalSolutions.pyx":83
7383 *
7384 *
7385 * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
7386 * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
7387 *
7388*/
7389
7390/* Python wrapper */
7391static PyObject *__pyx_pw_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity(PyObject *__pyx_self,
7392#if CYTHON_VECTORCALL
7393PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7394#else
7395PyObject *__pyx_args, PyObject *__pyx_kwds
7396#endif
7397); /*proto*/
7398static PyMethodDef __pyx_mdef_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity = {"LinearAD_DiracIC_advectiveVelocity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
7399static PyObject *__pyx_pw_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity(PyObject *__pyx_self,
7400#if CYTHON_VECTORCALL
7401PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7402#else
7403PyObject *__pyx_args, PyObject *__pyx_kwds
7404#endif
7405) {
7406 PyArrayObject *__pyx_v_iwork = 0;
7407 PyArrayObject *__pyx_v_rwork = 0;
7408 double __pyx_v_t;
7409 PyArrayObject *__pyx_v_x = 0;
7410 PyArrayObject *__pyx_v_f = 0;
7411 #if !CYTHON_VECTORCALL
7412 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
7413 #endif
7414 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7415 PyObject* values[5] = {0,0,0,0,0};
7416 int __pyx_lineno = 0;
7417 const char *__pyx_filename = NULL;
7418 int __pyx_clineno = 0;
7419 PyObject *__pyx_r = 0;
7420 __Pyx_RefNannyDeclarations
7421 __Pyx_RefNannySetupContext("LinearAD_DiracIC_advectiveVelocity (wrapper)", 0);
7422 #if !CYTHON_VECTORCALL
7423 #if CYTHON_ASSUME_SAFE_SIZE
7424 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
7425 #else
7426 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
7427 #endif
7428 #endif
7429 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
7430 {
7431 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_f,0};
7432 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
7433 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 83, __pyx_L3_error)
7434 if (__pyx_kwds_len > 0) {
7435 switch (__pyx_nargs) {
7436 case 5:
7437 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7438 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 83, __pyx_L3_error)
7439 CYTHON_FALLTHROUGH;
7440 case 4:
7441 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7442 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 83, __pyx_L3_error)
7443 CYTHON_FALLTHROUGH;
7444 case 3:
7445 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7446 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 83, __pyx_L3_error)
7447 CYTHON_FALLTHROUGH;
7448 case 2:
7449 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7450 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 83, __pyx_L3_error)
7451 CYTHON_FALLTHROUGH;
7452 case 1:
7453 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7454 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 83, __pyx_L3_error)
7455 CYTHON_FALLTHROUGH;
7456 case 0: break;
7457 default: goto __pyx_L5_argtuple_error;
7458 }
7459 const Py_ssize_t kwd_pos_args = __pyx_nargs;
7460 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearAD_DiracIC_advectiveVelocity", 0) < (0)) __PYX_ERR(0, 83, __pyx_L3_error)
7461 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
7462 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, i); __PYX_ERR(0, 83, __pyx_L3_error) }
7463 }
7464 } else if (unlikely(__pyx_nargs != 5)) {
7465 goto __pyx_L5_argtuple_error;
7466 } else {
7467 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7468 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 83, __pyx_L3_error)
7469 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7470 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 83, __pyx_L3_error)
7471 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7472 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 83, __pyx_L3_error)
7473 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7474 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 83, __pyx_L3_error)
7475 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7476 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 83, __pyx_L3_error)
7477 }
7478 __pyx_v_iwork = ((PyArrayObject *)values[0]);
7479 __pyx_v_rwork = ((PyArrayObject *)values[1]);
7480 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
7481 __pyx_v_x = ((PyArrayObject *)values[3]);
7482 __pyx_v_f = ((PyArrayObject *)values[4]);
7483 }
7484 goto __pyx_L6_skip;
7485 __pyx_L5_argtuple_error:;
7486 __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 83, __pyx_L3_error)
7487 __pyx_L6_skip:;
7488 goto __pyx_L4_argument_unpacking_done;
7489 __pyx_L3_error:;
7490 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7491 Py_XDECREF(values[__pyx_temp]);
7492 }
7493 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
7494 __Pyx_RefNannyFinishContext();
7495 return NULL;
7496 __pyx_L4_argument_unpacking_done:;
7497 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 83, __pyx_L1_error)
7498 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 83, __pyx_L1_error)
7499 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 83, __pyx_L1_error)
7500 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 83, __pyx_L1_error)
7501 __pyx_r = __pyx_pf_20canalyticalSolutions_16LinearAD_DiracIC_advectiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
7502
7503 /* function exit code */
7504 goto __pyx_L0;
7505 __pyx_L1_error:;
7506 __pyx_r = NULL;
7507 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7508 Py_XDECREF(values[__pyx_temp]);
7509 }
7510 goto __pyx_L7_cleaned_up;
7511 __pyx_L0:;
7512 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7513 Py_XDECREF(values[__pyx_temp]);
7514 }
7515 __pyx_L7_cleaned_up:;
7516
7517 __Pyx_RefNannyFinishContext();
7518 return __pyx_r;
7519}
7520
7521static PyObject *__pyx_pf_20canalyticalSolutions_16LinearAD_DiracIC_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
7522 PyObject *__pyx_r = NULL;
7523 __Pyx_RefNannyDeclarations
7524 npy_intp __pyx_t_1;
7525 npy_intp __pyx_t_2;
7526 PyObject *__pyx_t_3 = NULL;
7527 int __pyx_lineno = 0;
7528 const char *__pyx_filename = NULL;
7529 int __pyx_clineno = 0;
7530 __Pyx_RefNannySetupContext("LinearAD_DiracIC_advectiveVelocity", 0);
7531
7532 /* "canalyticalSolutions.pyx":84
7533 *
7534 * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
7535 * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
7536 *
7537 *
7538*/
7539 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
7540
7541 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
7542
7543 if (unlikely(__pyx_t_2 == 0)) {
7544 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
7545 __PYX_ERR(0, 84, __pyx_L1_error)
7546 }
7547 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
7548 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
7549 __PYX_ERR(0, 84, __pyx_L1_error)
7550 }
7551 __pyx_t_3 = __Pyx_PyLong_From_int(LinearAD_DiracIC_advectiveVelocity(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_f)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error)
7552 __Pyx_GOTREF(__pyx_t_3);
7553
7554
7555 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 84, __pyx_L1_error)
7556 {
7557 PyObject *__pyx_temp;
7558 {
7559 __pyx_temp = __pyx_r;
7560 __pyx_r = ((PyObject*)__pyx_t_3);
7561 }
7562 __Pyx_XDECREF(__pyx_temp);
7563 }
7564 __pyx_t_3 = 0;
7565 goto __pyx_L0;
7566
7567 /* "canalyticalSolutions.pyx":83
7568 *
7569 *
7570 * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
7571 * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
7572 *
7573*/
7574
7575 /* function exit code */
7576 __pyx_L1_error:;
7577 __Pyx_XDECREF(__pyx_t_3);
7578 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
7579 __pyx_r = NULL;
7580 __pyx_L0:;
7581 __Pyx_XGIVEREF(__pyx_r);
7582 __Pyx_RefNannyFinishContext();
7583 return __pyx_r;
7584}
7585
7586/* "canalyticalSolutions.pyx":87
7587 *
7588 *
7589 * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
7590 * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
7591 *
7592*/
7593
7594/* Python wrapper */
7595static PyObject *__pyx_pw_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity(PyObject *__pyx_self,
7596#if CYTHON_VECTORCALL
7597PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7598#else
7599PyObject *__pyx_args, PyObject *__pyx_kwds
7600#endif
7601); /*proto*/
7602static PyMethodDef __pyx_mdef_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity = {"LinearAD_DiracIC_diffusiveVelocity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
7603static PyObject *__pyx_pw_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity(PyObject *__pyx_self,
7604#if CYTHON_VECTORCALL
7605PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7606#else
7607PyObject *__pyx_args, PyObject *__pyx_kwds
7608#endif
7609) {
7610 PyArrayObject *__pyx_v_iwork = 0;
7611 PyArrayObject *__pyx_v_rwork = 0;
7612 double __pyx_v_t;
7613 PyArrayObject *__pyx_v_x = 0;
7614 PyArrayObject *__pyx_v_f = 0;
7615 #if !CYTHON_VECTORCALL
7616 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
7617 #endif
7618 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7619 PyObject* values[5] = {0,0,0,0,0};
7620 int __pyx_lineno = 0;
7621 const char *__pyx_filename = NULL;
7622 int __pyx_clineno = 0;
7623 PyObject *__pyx_r = 0;
7624 __Pyx_RefNannyDeclarations
7625 __Pyx_RefNannySetupContext("LinearAD_DiracIC_diffusiveVelocity (wrapper)", 0);
7626 #if !CYTHON_VECTORCALL
7627 #if CYTHON_ASSUME_SAFE_SIZE
7628 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
7629 #else
7630 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
7631 #endif
7632 #endif
7633 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
7634 {
7635 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_f,0};
7636 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
7637 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 87, __pyx_L3_error)
7638 if (__pyx_kwds_len > 0) {
7639 switch (__pyx_nargs) {
7640 case 5:
7641 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7642 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 87, __pyx_L3_error)
7643 CYTHON_FALLTHROUGH;
7644 case 4:
7645 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7646 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 87, __pyx_L3_error)
7647 CYTHON_FALLTHROUGH;
7648 case 3:
7649 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7650 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 87, __pyx_L3_error)
7651 CYTHON_FALLTHROUGH;
7652 case 2:
7653 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7654 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 87, __pyx_L3_error)
7655 CYTHON_FALLTHROUGH;
7656 case 1:
7657 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7658 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 87, __pyx_L3_error)
7659 CYTHON_FALLTHROUGH;
7660 case 0: break;
7661 default: goto __pyx_L5_argtuple_error;
7662 }
7663 const Py_ssize_t kwd_pos_args = __pyx_nargs;
7664 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearAD_DiracIC_diffusiveVelocity", 0) < (0)) __PYX_ERR(0, 87, __pyx_L3_error)
7665 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
7666 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, i); __PYX_ERR(0, 87, __pyx_L3_error) }
7667 }
7668 } else if (unlikely(__pyx_nargs != 5)) {
7669 goto __pyx_L5_argtuple_error;
7670 } else {
7671 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7672 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 87, __pyx_L3_error)
7673 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7674 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 87, __pyx_L3_error)
7675 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7676 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 87, __pyx_L3_error)
7677 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7678 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 87, __pyx_L3_error)
7679 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7680 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 87, __pyx_L3_error)
7681 }
7682 __pyx_v_iwork = ((PyArrayObject *)values[0]);
7683 __pyx_v_rwork = ((PyArrayObject *)values[1]);
7684 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L3_error)
7685 __pyx_v_x = ((PyArrayObject *)values[3]);
7686 __pyx_v_f = ((PyArrayObject *)values[4]);
7687 }
7688 goto __pyx_L6_skip;
7689 __pyx_L5_argtuple_error:;
7690 __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 87, __pyx_L3_error)
7691 __pyx_L6_skip:;
7692 goto __pyx_L4_argument_unpacking_done;
7693 __pyx_L3_error:;
7694 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7695 Py_XDECREF(values[__pyx_temp]);
7696 }
7697 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
7698 __Pyx_RefNannyFinishContext();
7699 return NULL;
7700 __pyx_L4_argument_unpacking_done:;
7701 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 87, __pyx_L1_error)
7702 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 87, __pyx_L1_error)
7703 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 87, __pyx_L1_error)
7704 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 87, __pyx_L1_error)
7705 __pyx_r = __pyx_pf_20canalyticalSolutions_18LinearAD_DiracIC_diffusiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
7706
7707 /* function exit code */
7708 goto __pyx_L0;
7709 __pyx_L1_error:;
7710 __pyx_r = NULL;
7711 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7712 Py_XDECREF(values[__pyx_temp]);
7713 }
7714 goto __pyx_L7_cleaned_up;
7715 __pyx_L0:;
7716 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7717 Py_XDECREF(values[__pyx_temp]);
7718 }
7719 __pyx_L7_cleaned_up:;
7720
7721 __Pyx_RefNannyFinishContext();
7722 return __pyx_r;
7723}
7724
7725static PyObject *__pyx_pf_20canalyticalSolutions_18LinearAD_DiracIC_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
7726 PyObject *__pyx_r = NULL;
7727 __Pyx_RefNannyDeclarations
7728 npy_intp __pyx_t_1;
7729 npy_intp __pyx_t_2;
7730 PyObject *__pyx_t_3 = NULL;
7731 int __pyx_lineno = 0;
7732 const char *__pyx_filename = NULL;
7733 int __pyx_clineno = 0;
7734 __Pyx_RefNannySetupContext("LinearAD_DiracIC_diffusiveVelocity", 0);
7735
7736 /* "canalyticalSolutions.pyx":88
7737 *
7738 * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
7739 * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
7740 *
7741 *
7742*/
7743 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
7744
7745 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
7746
7747 if (unlikely(__pyx_t_2 == 0)) {
7748 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
7749 __PYX_ERR(0, 88, __pyx_L1_error)
7750 }
7751 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
7752 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
7753 __PYX_ERR(0, 88, __pyx_L1_error)
7754 }
7755 __pyx_t_3 = __Pyx_PyLong_From_int(LinearAD_DiracIC_diffusiveVelocity(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_f)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error)
7756 __Pyx_GOTREF(__pyx_t_3);
7757
7758
7759 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 88, __pyx_L1_error)
7760 {
7761 PyObject *__pyx_temp;
7762 {
7763 __pyx_temp = __pyx_r;
7764 __pyx_r = ((PyObject*)__pyx_t_3);
7765 }
7766 __Pyx_XDECREF(__pyx_temp);
7767 }
7768 __pyx_t_3 = 0;
7769 goto __pyx_L0;
7770
7771 /* "canalyticalSolutions.pyx":87
7772 *
7773 *
7774 * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
7775 * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
7776 *
7777*/
7778
7779 /* function exit code */
7780 __pyx_L1_error:;
7781 __Pyx_XDECREF(__pyx_t_3);
7782 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
7783 __pyx_r = NULL;
7784 __pyx_L0:;
7785 __Pyx_XGIVEREF(__pyx_r);
7786 __Pyx_RefNannyFinishContext();
7787 return __pyx_r;
7788}
7789
7790/* "canalyticalSolutions.pyx":91
7791 *
7792 *
7793 * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
7794 * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
7795 *
7796*/
7797
7798/* Python wrapper */
7799static PyObject *__pyx_pw_20canalyticalSolutions_21LinearAD_DiracIC_du(PyObject *__pyx_self,
7800#if CYTHON_VECTORCALL
7801PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7802#else
7803PyObject *__pyx_args, PyObject *__pyx_kwds
7804#endif
7805); /*proto*/
7806static PyMethodDef __pyx_mdef_20canalyticalSolutions_21LinearAD_DiracIC_du = {"LinearAD_DiracIC_du", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_21LinearAD_DiracIC_du, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
7807static PyObject *__pyx_pw_20canalyticalSolutions_21LinearAD_DiracIC_du(PyObject *__pyx_self,
7808#if CYTHON_VECTORCALL
7809PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7810#else
7811PyObject *__pyx_args, PyObject *__pyx_kwds
7812#endif
7813) {
7814 PyArrayObject *__pyx_v_iwork = 0;
7815 PyArrayObject *__pyx_v_rwork = 0;
7816 double __pyx_v_t;
7817 PyArrayObject *__pyx_v_x = 0;
7818 PyArrayObject *__pyx_v_du = 0;
7819 #if !CYTHON_VECTORCALL
7820 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
7821 #endif
7822 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7823 PyObject* values[5] = {0,0,0,0,0};
7824 int __pyx_lineno = 0;
7825 const char *__pyx_filename = NULL;
7826 int __pyx_clineno = 0;
7827 PyObject *__pyx_r = 0;
7828 __Pyx_RefNannyDeclarations
7829 __Pyx_RefNannySetupContext("LinearAD_DiracIC_du (wrapper)", 0);
7830 #if !CYTHON_VECTORCALL
7831 #if CYTHON_ASSUME_SAFE_SIZE
7832 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
7833 #else
7834 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
7835 #endif
7836 #endif
7837 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
7838 {
7839 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_du,0};
7840 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
7841 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 91, __pyx_L3_error)
7842 if (__pyx_kwds_len > 0) {
7843 switch (__pyx_nargs) {
7844 case 5:
7845 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7846 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 91, __pyx_L3_error)
7847 CYTHON_FALLTHROUGH;
7848 case 4:
7849 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7850 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 91, __pyx_L3_error)
7851 CYTHON_FALLTHROUGH;
7852 case 3:
7853 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7854 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 91, __pyx_L3_error)
7855 CYTHON_FALLTHROUGH;
7856 case 2:
7857 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7858 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 91, __pyx_L3_error)
7859 CYTHON_FALLTHROUGH;
7860 case 1:
7861 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7862 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 91, __pyx_L3_error)
7863 CYTHON_FALLTHROUGH;
7864 case 0: break;
7865 default: goto __pyx_L5_argtuple_error;
7866 }
7867 const Py_ssize_t kwd_pos_args = __pyx_nargs;
7868 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearAD_DiracIC_du", 0) < (0)) __PYX_ERR(0, 91, __pyx_L3_error)
7869 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
7870 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, i); __PYX_ERR(0, 91, __pyx_L3_error) }
7871 }
7872 } else if (unlikely(__pyx_nargs != 5)) {
7873 goto __pyx_L5_argtuple_error;
7874 } else {
7875 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
7876 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 91, __pyx_L3_error)
7877 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
7878 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 91, __pyx_L3_error)
7879 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
7880 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 91, __pyx_L3_error)
7881 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
7882 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 91, __pyx_L3_error)
7883 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
7884 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 91, __pyx_L3_error)
7885 }
7886 __pyx_v_iwork = ((PyArrayObject *)values[0]);
7887 __pyx_v_rwork = ((PyArrayObject *)values[1]);
7888 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L3_error)
7889 __pyx_v_x = ((PyArrayObject *)values[3]);
7890 __pyx_v_du = ((PyArrayObject *)values[4]);
7891 }
7892 goto __pyx_L6_skip;
7893 __pyx_L5_argtuple_error:;
7894 __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 91, __pyx_L3_error)
7895 __pyx_L6_skip:;
7896 goto __pyx_L4_argument_unpacking_done;
7897 __pyx_L3_error:;
7898 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7899 Py_XDECREF(values[__pyx_temp]);
7900 }
7901 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
7902 __Pyx_RefNannyFinishContext();
7903 return NULL;
7904 __pyx_L4_argument_unpacking_done:;
7905 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 91, __pyx_L1_error)
7906 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 91, __pyx_L1_error)
7907 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 91, __pyx_L1_error)
7908 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_du), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "du", 0))) __PYX_ERR(0, 91, __pyx_L1_error)
7909 __pyx_r = __pyx_pf_20canalyticalSolutions_20LinearAD_DiracIC_du(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_du);
7910
7911 /* function exit code */
7912 goto __pyx_L0;
7913 __pyx_L1_error:;
7914 __pyx_r = NULL;
7915 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7916 Py_XDECREF(values[__pyx_temp]);
7917 }
7918 goto __pyx_L7_cleaned_up;
7919 __pyx_L0:;
7920 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
7921 Py_XDECREF(values[__pyx_temp]);
7922 }
7923 __pyx_L7_cleaned_up:;
7924
7925 __Pyx_RefNannyFinishContext();
7926 return __pyx_r;
7927}
7928
7929static PyObject *__pyx_pf_20canalyticalSolutions_20LinearAD_DiracIC_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du) {
7930 PyObject *__pyx_r = NULL;
7931 __Pyx_RefNannyDeclarations
7932 npy_intp __pyx_t_1;
7933 npy_intp __pyx_t_2;
7934 PyObject *__pyx_t_3 = NULL;
7935 int __pyx_lineno = 0;
7936 const char *__pyx_filename = NULL;
7937 int __pyx_clineno = 0;
7938 __Pyx_RefNannySetupContext("LinearAD_DiracIC_du", 0);
7939
7940 /* "canalyticalSolutions.pyx":92
7941 *
7942 * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int:
7943 * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data) # <<<<<<<<<<<<<<
7944 *
7945 *
7946*/
7947 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
7948
7949 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
7950
7951 if (unlikely(__pyx_t_2 == 0)) {
7952 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
7953 __PYX_ERR(0, 92, __pyx_L1_error)
7954 }
7955 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
7956 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
7957 __PYX_ERR(0, 92, __pyx_L1_error)
7958 }
7959 __pyx_t_3 = __Pyx_PyLong_From_int(LinearAD_DiracIC_du(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_du)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error)
7960 __Pyx_GOTREF(__pyx_t_3);
7961
7962
7963 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 92, __pyx_L1_error)
7964 {
7965 PyObject *__pyx_temp;
7966 {
7967 __pyx_temp = __pyx_r;
7968 __pyx_r = ((PyObject*)__pyx_t_3);
7969 }
7970 __Pyx_XDECREF(__pyx_temp);
7971 }
7972 __pyx_t_3 = 0;
7973 goto __pyx_L0;
7974
7975 /* "canalyticalSolutions.pyx":91
7976 *
7977 *
7978 * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
7979 * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
7980 *
7981*/
7982
7983 /* function exit code */
7984 __pyx_L1_error:;
7985 __Pyx_XDECREF(__pyx_t_3);
7986 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
7987 __pyx_r = NULL;
7988 __pyx_L0:;
7989 __Pyx_XGIVEREF(__pyx_r);
7990 __Pyx_RefNannyFinishContext();
7991 return __pyx_r;
7992}
7993
7994/* "canalyticalSolutions.pyx":95
7995 *
7996 *
7997 * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7998 * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7999 *
8000*/
8001
8002/* Python wrapper */
8003static PyObject *__pyx_pw_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity(PyObject *__pyx_self,
8004#if CYTHON_VECTORCALL
8005PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8006#else
8007PyObject *__pyx_args, PyObject *__pyx_kwds
8008#endif
8009); /*proto*/
8010static PyMethodDef __pyx_mdef_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity = {"LinearAD_DiracIC_totalVelocity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
8011static PyObject *__pyx_pw_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity(PyObject *__pyx_self,
8012#if CYTHON_VECTORCALL
8013PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8014#else
8015PyObject *__pyx_args, PyObject *__pyx_kwds
8016#endif
8017) {
8018 PyArrayObject *__pyx_v_iwork = 0;
8019 PyArrayObject *__pyx_v_rwork = 0;
8020 double __pyx_v_t;
8021 PyArrayObject *__pyx_v_x = 0;
8022 PyArrayObject *__pyx_v_u = 0;
8023 #if !CYTHON_VECTORCALL
8024 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8025 #endif
8026 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8027 PyObject* values[5] = {0,0,0,0,0};
8028 int __pyx_lineno = 0;
8029 const char *__pyx_filename = NULL;
8030 int __pyx_clineno = 0;
8031 PyObject *__pyx_r = 0;
8032 __Pyx_RefNannyDeclarations
8033 __Pyx_RefNannySetupContext("LinearAD_DiracIC_totalVelocity (wrapper)", 0);
8034 #if !CYTHON_VECTORCALL
8035 #if CYTHON_ASSUME_SAFE_SIZE
8036 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8037 #else
8038 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8039 #endif
8040 #endif
8041 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8042 {
8043 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
8044 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
8045 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 95, __pyx_L3_error)
8046 if (__pyx_kwds_len > 0) {
8047 switch (__pyx_nargs) {
8048 case 5:
8049 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8050 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 95, __pyx_L3_error)
8051 CYTHON_FALLTHROUGH;
8052 case 4:
8053 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8054 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 95, __pyx_L3_error)
8055 CYTHON_FALLTHROUGH;
8056 case 3:
8057 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8058 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 95, __pyx_L3_error)
8059 CYTHON_FALLTHROUGH;
8060 case 2:
8061 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8062 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 95, __pyx_L3_error)
8063 CYTHON_FALLTHROUGH;
8064 case 1:
8065 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8066 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 95, __pyx_L3_error)
8067 CYTHON_FALLTHROUGH;
8068 case 0: break;
8069 default: goto __pyx_L5_argtuple_error;
8070 }
8071 const Py_ssize_t kwd_pos_args = __pyx_nargs;
8072 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearAD_DiracIC_totalVelocity", 0) < (0)) __PYX_ERR(0, 95, __pyx_L3_error)
8073 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
8074 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, i); __PYX_ERR(0, 95, __pyx_L3_error) }
8075 }
8076 } else if (unlikely(__pyx_nargs != 5)) {
8077 goto __pyx_L5_argtuple_error;
8078 } else {
8079 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8080 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 95, __pyx_L3_error)
8081 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8082 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 95, __pyx_L3_error)
8083 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8084 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 95, __pyx_L3_error)
8085 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8086 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 95, __pyx_L3_error)
8087 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8088 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 95, __pyx_L3_error)
8089 }
8090 __pyx_v_iwork = ((PyArrayObject *)values[0]);
8091 __pyx_v_rwork = ((PyArrayObject *)values[1]);
8092 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L3_error)
8093 __pyx_v_x = ((PyArrayObject *)values[3]);
8094 __pyx_v_u = ((PyArrayObject *)values[4]);
8095 }
8096 goto __pyx_L6_skip;
8097 __pyx_L5_argtuple_error:;
8098 __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 95, __pyx_L3_error)
8099 __pyx_L6_skip:;
8100 goto __pyx_L4_argument_unpacking_done;
8101 __pyx_L3_error:;
8102 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8103 Py_XDECREF(values[__pyx_temp]);
8104 }
8105 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
8106 __Pyx_RefNannyFinishContext();
8107 return NULL;
8108 __pyx_L4_argument_unpacking_done:;
8109 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 95, __pyx_L1_error)
8110 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 95, __pyx_L1_error)
8111 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 95, __pyx_L1_error)
8112 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 95, __pyx_L1_error)
8113 __pyx_r = __pyx_pf_20canalyticalSolutions_22LinearAD_DiracIC_totalVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
8114
8115 /* function exit code */
8116 goto __pyx_L0;
8117 __pyx_L1_error:;
8118 __pyx_r = NULL;
8119 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8120 Py_XDECREF(values[__pyx_temp]);
8121 }
8122 goto __pyx_L7_cleaned_up;
8123 __pyx_L0:;
8124 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8125 Py_XDECREF(values[__pyx_temp]);
8126 }
8127 __pyx_L7_cleaned_up:;
8128
8129 __Pyx_RefNannyFinishContext();
8130 return __pyx_r;
8131}
8132
8133static PyObject *__pyx_pf_20canalyticalSolutions_22LinearAD_DiracIC_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
8134 PyObject *__pyx_r = NULL;
8135 __Pyx_RefNannyDeclarations
8136 npy_intp __pyx_t_1;
8137 npy_intp __pyx_t_2;
8138 PyObject *__pyx_t_3 = NULL;
8139 int __pyx_lineno = 0;
8140 const char *__pyx_filename = NULL;
8141 int __pyx_clineno = 0;
8142 __Pyx_RefNannySetupContext("LinearAD_DiracIC_totalVelocity", 0);
8143
8144 /* "canalyticalSolutions.pyx":96
8145 *
8146 * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
8147 * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
8148 *
8149 *
8150*/
8151 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
8152
8153 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
8154
8155 if (unlikely(__pyx_t_2 == 0)) {
8156 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
8157 __PYX_ERR(0, 96, __pyx_L1_error)
8158 }
8159 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
8160 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
8161 __PYX_ERR(0, 96, __pyx_L1_error)
8162 }
8163 __pyx_t_3 = __Pyx_PyLong_From_int(LinearAD_DiracIC_totalVelocity(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error)
8164 __Pyx_GOTREF(__pyx_t_3);
8165
8166
8167 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 96, __pyx_L1_error)
8168 {
8169 PyObject *__pyx_temp;
8170 {
8171 __pyx_temp = __pyx_r;
8172 __pyx_r = ((PyObject*)__pyx_t_3);
8173 }
8174 __Pyx_XDECREF(__pyx_temp);
8175 }
8176 __pyx_t_3 = 0;
8177 goto __pyx_L0;
8178
8179 /* "canalyticalSolutions.pyx":95
8180 *
8181 *
8182 * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8183 * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8184 *
8185*/
8186
8187 /* function exit code */
8188 __pyx_L1_error:;
8189 __Pyx_XDECREF(__pyx_t_3);
8190 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
8191 __pyx_r = NULL;
8192 __pyx_L0:;
8193 __Pyx_XGIVEREF(__pyx_r);
8194 __Pyx_RefNannyFinishContext();
8195 return __pyx_r;
8196}
8197
8198/* "canalyticalSolutions.pyx":99
8199 *
8200 *
8201 * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8202 * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8203 *
8204*/
8205
8206/* Python wrapper */
8207static PyObject *__pyx_pw_20canalyticalSolutions_25LinearAD_SteadyState(PyObject *__pyx_self,
8208#if CYTHON_VECTORCALL
8209PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8210#else
8211PyObject *__pyx_args, PyObject *__pyx_kwds
8212#endif
8213); /*proto*/
8214static PyMethodDef __pyx_mdef_20canalyticalSolutions_25LinearAD_SteadyState = {"LinearAD_SteadyState", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_25LinearAD_SteadyState, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
8215static PyObject *__pyx_pw_20canalyticalSolutions_25LinearAD_SteadyState(PyObject *__pyx_self,
8216#if CYTHON_VECTORCALL
8217PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8218#else
8219PyObject *__pyx_args, PyObject *__pyx_kwds
8220#endif
8221) {
8222 PyArrayObject *__pyx_v_iwork = 0;
8223 PyArrayObject *__pyx_v_rwork = 0;
8224 double __pyx_v_t;
8225 PyArrayObject *__pyx_v_x = 0;
8226 PyArrayObject *__pyx_v_u = 0;
8227 #if !CYTHON_VECTORCALL
8228 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8229 #endif
8230 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8231 PyObject* values[5] = {0,0,0,0,0};
8232 int __pyx_lineno = 0;
8233 const char *__pyx_filename = NULL;
8234 int __pyx_clineno = 0;
8235 PyObject *__pyx_r = 0;
8236 __Pyx_RefNannyDeclarations
8237 __Pyx_RefNannySetupContext("LinearAD_SteadyState (wrapper)", 0);
8238 #if !CYTHON_VECTORCALL
8239 #if CYTHON_ASSUME_SAFE_SIZE
8240 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8241 #else
8242 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8243 #endif
8244 #endif
8245 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8246 {
8247 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
8248 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
8249 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 99, __pyx_L3_error)
8250 if (__pyx_kwds_len > 0) {
8251 switch (__pyx_nargs) {
8252 case 5:
8253 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8254 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 99, __pyx_L3_error)
8255 CYTHON_FALLTHROUGH;
8256 case 4:
8257 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8258 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 99, __pyx_L3_error)
8259 CYTHON_FALLTHROUGH;
8260 case 3:
8261 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8262 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 99, __pyx_L3_error)
8263 CYTHON_FALLTHROUGH;
8264 case 2:
8265 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8266 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 99, __pyx_L3_error)
8267 CYTHON_FALLTHROUGH;
8268 case 1:
8269 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8270 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 99, __pyx_L3_error)
8271 CYTHON_FALLTHROUGH;
8272 case 0: break;
8273 default: goto __pyx_L5_argtuple_error;
8274 }
8275 const Py_ssize_t kwd_pos_args = __pyx_nargs;
8276 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearAD_SteadyState", 0) < (0)) __PYX_ERR(0, 99, __pyx_L3_error)
8277 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
8278 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, i); __PYX_ERR(0, 99, __pyx_L3_error) }
8279 }
8280 } else if (unlikely(__pyx_nargs != 5)) {
8281 goto __pyx_L5_argtuple_error;
8282 } else {
8283 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8284 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 99, __pyx_L3_error)
8285 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8286 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 99, __pyx_L3_error)
8287 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8288 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 99, __pyx_L3_error)
8289 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8290 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 99, __pyx_L3_error)
8291 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8292 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 99, __pyx_L3_error)
8293 }
8294 __pyx_v_iwork = ((PyArrayObject *)values[0]);
8295 __pyx_v_rwork = ((PyArrayObject *)values[1]);
8296 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L3_error)
8297 __pyx_v_x = ((PyArrayObject *)values[3]);
8298 __pyx_v_u = ((PyArrayObject *)values[4]);
8299 }
8300 goto __pyx_L6_skip;
8301 __pyx_L5_argtuple_error:;
8302 __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 99, __pyx_L3_error)
8303 __pyx_L6_skip:;
8304 goto __pyx_L4_argument_unpacking_done;
8305 __pyx_L3_error:;
8306 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8307 Py_XDECREF(values[__pyx_temp]);
8308 }
8309 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
8310 __Pyx_RefNannyFinishContext();
8311 return NULL;
8312 __pyx_L4_argument_unpacking_done:;
8313 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 99, __pyx_L1_error)
8314 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 99, __pyx_L1_error)
8315 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 99, __pyx_L1_error)
8316 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 99, __pyx_L1_error)
8317 __pyx_r = __pyx_pf_20canalyticalSolutions_24LinearAD_SteadyState(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
8318
8319 /* function exit code */
8320 goto __pyx_L0;
8321 __pyx_L1_error:;
8322 __pyx_r = NULL;
8323 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8324 Py_XDECREF(values[__pyx_temp]);
8325 }
8326 goto __pyx_L7_cleaned_up;
8327 __pyx_L0:;
8328 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8329 Py_XDECREF(values[__pyx_temp]);
8330 }
8331 __pyx_L7_cleaned_up:;
8332
8333 __Pyx_RefNannyFinishContext();
8334 return __pyx_r;
8335}
8336
8337static PyObject *__pyx_pf_20canalyticalSolutions_24LinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
8338 PyObject *__pyx_r = NULL;
8339 __Pyx_RefNannyDeclarations
8340 npy_intp __pyx_t_1;
8341 npy_intp __pyx_t_2;
8342 PyObject *__pyx_t_3 = NULL;
8343 int __pyx_lineno = 0;
8344 const char *__pyx_filename = NULL;
8345 int __pyx_clineno = 0;
8346 __Pyx_RefNannySetupContext("LinearAD_SteadyState", 0);
8347
8348 /* "canalyticalSolutions.pyx":100
8349 *
8350 * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
8351 * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
8352 *
8353 *
8354*/
8355 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
8356
8357 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
8358
8359 if (unlikely(__pyx_t_2 == 0)) {
8360 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
8361 __PYX_ERR(0, 100, __pyx_L1_error)
8362 }
8363 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
8364 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
8365 __PYX_ERR(0, 100, __pyx_L1_error)
8366 }
8367 __pyx_t_3 = __Pyx_PyLong_From_int(LinearAD_SteadyState(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error)
8368 __Pyx_GOTREF(__pyx_t_3);
8369
8370
8371 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 100, __pyx_L1_error)
8372 {
8373 PyObject *__pyx_temp;
8374 {
8375 __pyx_temp = __pyx_r;
8376 __pyx_r = ((PyObject*)__pyx_t_3);
8377 }
8378 __Pyx_XDECREF(__pyx_temp);
8379 }
8380 __pyx_t_3 = 0;
8381 goto __pyx_L0;
8382
8383 /* "canalyticalSolutions.pyx":99
8384 *
8385 *
8386 * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8387 * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8388 *
8389*/
8390
8391 /* function exit code */
8392 __pyx_L1_error:;
8393 __Pyx_XDECREF(__pyx_t_3);
8394 __Pyx_AddTraceback("canalyticalSolutions.LinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
8395 __pyx_r = NULL;
8396 __pyx_L0:;
8397 __Pyx_XGIVEREF(__pyx_r);
8398 __Pyx_RefNannyFinishContext();
8399 return __pyx_r;
8400}
8401
8402/* "canalyticalSolutions.pyx":103
8403 *
8404 *
8405 * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8406 * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8407 *
8408*/
8409
8410/* Python wrapper */
8411static PyObject *__pyx_pw_20canalyticalSolutions_27LinearADR_Decay_DiracIC(PyObject *__pyx_self,
8412#if CYTHON_VECTORCALL
8413PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8414#else
8415PyObject *__pyx_args, PyObject *__pyx_kwds
8416#endif
8417); /*proto*/
8418static PyMethodDef __pyx_mdef_20canalyticalSolutions_27LinearADR_Decay_DiracIC = {"LinearADR_Decay_DiracIC", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_27LinearADR_Decay_DiracIC, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
8419static PyObject *__pyx_pw_20canalyticalSolutions_27LinearADR_Decay_DiracIC(PyObject *__pyx_self,
8420#if CYTHON_VECTORCALL
8421PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8422#else
8423PyObject *__pyx_args, PyObject *__pyx_kwds
8424#endif
8425) {
8426 PyArrayObject *__pyx_v_iwork = 0;
8427 PyArrayObject *__pyx_v_rwork = 0;
8428 double __pyx_v_t;
8429 PyArrayObject *__pyx_v_x = 0;
8430 PyArrayObject *__pyx_v_u = 0;
8431 #if !CYTHON_VECTORCALL
8432 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8433 #endif
8434 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8435 PyObject* values[5] = {0,0,0,0,0};
8436 int __pyx_lineno = 0;
8437 const char *__pyx_filename = NULL;
8438 int __pyx_clineno = 0;
8439 PyObject *__pyx_r = 0;
8440 __Pyx_RefNannyDeclarations
8441 __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC (wrapper)", 0);
8442 #if !CYTHON_VECTORCALL
8443 #if CYTHON_ASSUME_SAFE_SIZE
8444 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8445 #else
8446 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8447 #endif
8448 #endif
8449 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8450 {
8451 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
8452 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
8453 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 103, __pyx_L3_error)
8454 if (__pyx_kwds_len > 0) {
8455 switch (__pyx_nargs) {
8456 case 5:
8457 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8458 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 103, __pyx_L3_error)
8459 CYTHON_FALLTHROUGH;
8460 case 4:
8461 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8462 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 103, __pyx_L3_error)
8463 CYTHON_FALLTHROUGH;
8464 case 3:
8465 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8466 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 103, __pyx_L3_error)
8467 CYTHON_FALLTHROUGH;
8468 case 2:
8469 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8470 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 103, __pyx_L3_error)
8471 CYTHON_FALLTHROUGH;
8472 case 1:
8473 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8474 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 103, __pyx_L3_error)
8475 CYTHON_FALLTHROUGH;
8476 case 0: break;
8477 default: goto __pyx_L5_argtuple_error;
8478 }
8479 const Py_ssize_t kwd_pos_args = __pyx_nargs;
8480 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Decay_DiracIC", 0) < (0)) __PYX_ERR(0, 103, __pyx_L3_error)
8481 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
8482 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, i); __PYX_ERR(0, 103, __pyx_L3_error) }
8483 }
8484 } else if (unlikely(__pyx_nargs != 5)) {
8485 goto __pyx_L5_argtuple_error;
8486 } else {
8487 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8488 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 103, __pyx_L3_error)
8489 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8490 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 103, __pyx_L3_error)
8491 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8492 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 103, __pyx_L3_error)
8493 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8494 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 103, __pyx_L3_error)
8495 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8496 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 103, __pyx_L3_error)
8497 }
8498 __pyx_v_iwork = ((PyArrayObject *)values[0]);
8499 __pyx_v_rwork = ((PyArrayObject *)values[1]);
8500 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error)
8501 __pyx_v_x = ((PyArrayObject *)values[3]);
8502 __pyx_v_u = ((PyArrayObject *)values[4]);
8503 }
8504 goto __pyx_L6_skip;
8505 __pyx_L5_argtuple_error:;
8506 __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 103, __pyx_L3_error)
8507 __pyx_L6_skip:;
8508 goto __pyx_L4_argument_unpacking_done;
8509 __pyx_L3_error:;
8510 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8511 Py_XDECREF(values[__pyx_temp]);
8512 }
8513 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
8514 __Pyx_RefNannyFinishContext();
8515 return NULL;
8516 __pyx_L4_argument_unpacking_done:;
8517 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 103, __pyx_L1_error)
8518 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 103, __pyx_L1_error)
8519 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 103, __pyx_L1_error)
8520 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 103, __pyx_L1_error)
8521 __pyx_r = __pyx_pf_20canalyticalSolutions_26LinearADR_Decay_DiracIC(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
8522
8523 /* function exit code */
8524 goto __pyx_L0;
8525 __pyx_L1_error:;
8526 __pyx_r = NULL;
8527 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8528 Py_XDECREF(values[__pyx_temp]);
8529 }
8530 goto __pyx_L7_cleaned_up;
8531 __pyx_L0:;
8532 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8533 Py_XDECREF(values[__pyx_temp]);
8534 }
8535 __pyx_L7_cleaned_up:;
8536
8537 __Pyx_RefNannyFinishContext();
8538 return __pyx_r;
8539}
8540
8541static PyObject *__pyx_pf_20canalyticalSolutions_26LinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
8542 PyObject *__pyx_r = NULL;
8543 __Pyx_RefNannyDeclarations
8544 npy_intp __pyx_t_1;
8545 npy_intp __pyx_t_2;
8546 PyObject *__pyx_t_3 = NULL;
8547 int __pyx_lineno = 0;
8548 const char *__pyx_filename = NULL;
8549 int __pyx_clineno = 0;
8550 __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC", 0);
8551
8552 /* "canalyticalSolutions.pyx":104
8553 *
8554 * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
8555 * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
8556 *
8557 *
8558*/
8559 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
8560
8561 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
8562
8563 if (unlikely(__pyx_t_2 == 0)) {
8564 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
8565 __PYX_ERR(0, 104, __pyx_L1_error)
8566 }
8567 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
8568 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
8569 __PYX_ERR(0, 104, __pyx_L1_error)
8570 }
8571 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Decay_DiracIC(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
8572 __Pyx_GOTREF(__pyx_t_3);
8573
8574
8575 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 104, __pyx_L1_error)
8576 {
8577 PyObject *__pyx_temp;
8578 {
8579 __pyx_temp = __pyx_r;
8580 __pyx_r = ((PyObject*)__pyx_t_3);
8581 }
8582 __Pyx_XDECREF(__pyx_temp);
8583 }
8584 __pyx_t_3 = 0;
8585 goto __pyx_L0;
8586
8587 /* "canalyticalSolutions.pyx":103
8588 *
8589 *
8590 * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8591 * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8592 *
8593*/
8594
8595 /* function exit code */
8596 __pyx_L1_error:;
8597 __Pyx_XDECREF(__pyx_t_3);
8598 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
8599 __pyx_r = NULL;
8600 __pyx_L0:;
8601 __Pyx_XGIVEREF(__pyx_r);
8602 __Pyx_RefNannyFinishContext();
8603 return __pyx_r;
8604}
8605
8606/* "canalyticalSolutions.pyx":107
8607 *
8608 *
8609 * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
8610 * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
8611 *
8612*/
8613
8614/* Python wrapper */
8615static PyObject *__pyx_pw_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr(PyObject *__pyx_self,
8616#if CYTHON_VECTORCALL
8617PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8618#else
8619PyObject *__pyx_args, PyObject *__pyx_kwds
8620#endif
8621); /*proto*/
8622static PyMethodDef __pyx_mdef_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr = {"LinearADR_Decay_DiracIC_dr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
8623static PyObject *__pyx_pw_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr(PyObject *__pyx_self,
8624#if CYTHON_VECTORCALL
8625PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8626#else
8627PyObject *__pyx_args, PyObject *__pyx_kwds
8628#endif
8629) {
8630 PyArrayObject *__pyx_v_iwork = 0;
8631 PyArrayObject *__pyx_v_rwork = 0;
8632 double __pyx_v_t;
8633 PyArrayObject *__pyx_v_x = 0;
8634 PyArrayObject *__pyx_v_u = 0;
8635 PyArrayObject *__pyx_v_dr = 0;
8636 #if !CYTHON_VECTORCALL
8637 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8638 #endif
8639 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8640 PyObject* values[6] = {0,0,0,0,0,0};
8641 int __pyx_lineno = 0;
8642 const char *__pyx_filename = NULL;
8643 int __pyx_clineno = 0;
8644 PyObject *__pyx_r = 0;
8645 __Pyx_RefNannyDeclarations
8646 __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_dr (wrapper)", 0);
8647 #if !CYTHON_VECTORCALL
8648 #if CYTHON_ASSUME_SAFE_SIZE
8649 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8650 #else
8651 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8652 #endif
8653 #endif
8654 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8655 {
8656 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_dr,0};
8657 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
8658 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 107, __pyx_L3_error)
8659 if (__pyx_kwds_len > 0) {
8660 switch (__pyx_nargs) {
8661 case 6:
8662 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
8663 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 107, __pyx_L3_error)
8664 CYTHON_FALLTHROUGH;
8665 case 5:
8666 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8667 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 107, __pyx_L3_error)
8668 CYTHON_FALLTHROUGH;
8669 case 4:
8670 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8671 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 107, __pyx_L3_error)
8672 CYTHON_FALLTHROUGH;
8673 case 3:
8674 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8675 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 107, __pyx_L3_error)
8676 CYTHON_FALLTHROUGH;
8677 case 2:
8678 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8679 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 107, __pyx_L3_error)
8680 CYTHON_FALLTHROUGH;
8681 case 1:
8682 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8683 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 107, __pyx_L3_error)
8684 CYTHON_FALLTHROUGH;
8685 case 0: break;
8686 default: goto __pyx_L5_argtuple_error;
8687 }
8688 const Py_ssize_t kwd_pos_args = __pyx_nargs;
8689 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Decay_DiracIC_dr", 0) < (0)) __PYX_ERR(0, 107, __pyx_L3_error)
8690 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
8691 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, i); __PYX_ERR(0, 107, __pyx_L3_error) }
8692 }
8693 } else if (unlikely(__pyx_nargs != 6)) {
8694 goto __pyx_L5_argtuple_error;
8695 } else {
8696 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8697 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 107, __pyx_L3_error)
8698 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8699 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 107, __pyx_L3_error)
8700 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8701 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 107, __pyx_L3_error)
8702 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8703 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 107, __pyx_L3_error)
8704 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8705 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 107, __pyx_L3_error)
8706 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
8707 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 107, __pyx_L3_error)
8708 }
8709 __pyx_v_iwork = ((PyArrayObject *)values[0]);
8710 __pyx_v_rwork = ((PyArrayObject *)values[1]);
8711 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 107, __pyx_L3_error)
8712 __pyx_v_x = ((PyArrayObject *)values[3]);
8713 __pyx_v_u = ((PyArrayObject *)values[4]);
8714 __pyx_v_dr = ((PyArrayObject *)values[5]);
8715 }
8716 goto __pyx_L6_skip;
8717 __pyx_L5_argtuple_error:;
8718 __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 107, __pyx_L3_error)
8719 __pyx_L6_skip:;
8720 goto __pyx_L4_argument_unpacking_done;
8721 __pyx_L3_error:;
8722 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8723 Py_XDECREF(values[__pyx_temp]);
8724 }
8725 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
8726 __Pyx_RefNannyFinishContext();
8727 return NULL;
8728 __pyx_L4_argument_unpacking_done:;
8729 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 107, __pyx_L1_error)
8730 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 107, __pyx_L1_error)
8731 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 107, __pyx_L1_error)
8732 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 107, __pyx_L1_error)
8733 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 107, __pyx_L1_error)
8734 __pyx_r = __pyx_pf_20canalyticalSolutions_28LinearADR_Decay_DiracIC_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
8735
8736 /* function exit code */
8737 goto __pyx_L0;
8738 __pyx_L1_error:;
8739 __pyx_r = NULL;
8740 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8741 Py_XDECREF(values[__pyx_temp]);
8742 }
8743 goto __pyx_L7_cleaned_up;
8744 __pyx_L0:;
8745 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8746 Py_XDECREF(values[__pyx_temp]);
8747 }
8748 __pyx_L7_cleaned_up:;
8749
8750 __Pyx_RefNannyFinishContext();
8751 return __pyx_r;
8752}
8753
8754static PyObject *__pyx_pf_20canalyticalSolutions_28LinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
8755 PyObject *__pyx_r = NULL;
8756 __Pyx_RefNannyDeclarations
8757 npy_intp __pyx_t_1;
8758 npy_intp __pyx_t_2;
8759 PyObject *__pyx_t_3 = NULL;
8760 int __pyx_lineno = 0;
8761 const char *__pyx_filename = NULL;
8762 int __pyx_clineno = 0;
8763 __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_dr", 0);
8764
8765 /* "canalyticalSolutions.pyx":108
8766 *
8767 * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
8768 * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
8769 *
8770 *
8771*/
8772 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
8773
8774 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
8775
8776 if (unlikely(__pyx_t_2 == 0)) {
8777 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
8778 __PYX_ERR(0, 108, __pyx_L1_error)
8779 }
8780 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
8781 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
8782 __PYX_ERR(0, 108, __pyx_L1_error)
8783 }
8784 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Decay_DiracIC_dr(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_dr)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error)
8785 __Pyx_GOTREF(__pyx_t_3);
8786
8787
8788 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 108, __pyx_L1_error)
8789 {
8790 PyObject *__pyx_temp;
8791 {
8792 __pyx_temp = __pyx_r;
8793 __pyx_r = ((PyObject*)__pyx_t_3);
8794 }
8795 __Pyx_XDECREF(__pyx_temp);
8796 }
8797 __pyx_t_3 = 0;
8798 goto __pyx_L0;
8799
8800 /* "canalyticalSolutions.pyx":107
8801 *
8802 *
8803 * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
8804 * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
8805 *
8806*/
8807
8808 /* function exit code */
8809 __pyx_L1_error:;
8810 __Pyx_XDECREF(__pyx_t_3);
8811 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
8812 __pyx_r = NULL;
8813 __pyx_L0:;
8814 __Pyx_XGIVEREF(__pyx_r);
8815 __Pyx_RefNannyFinishContext();
8816 return __pyx_r;
8817}
8818
8819/* "canalyticalSolutions.pyx":111
8820 *
8821 *
8822 * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8823 * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8824 *
8825*/
8826
8827/* Python wrapper */
8828static PyObject *__pyx_pw_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r(PyObject *__pyx_self,
8829#if CYTHON_VECTORCALL
8830PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8831#else
8832PyObject *__pyx_args, PyObject *__pyx_kwds
8833#endif
8834); /*proto*/
8835static PyMethodDef __pyx_mdef_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r = {"LinearADR_Decay_DiracIC_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
8836static PyObject *__pyx_pw_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r(PyObject *__pyx_self,
8837#if CYTHON_VECTORCALL
8838PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8839#else
8840PyObject *__pyx_args, PyObject *__pyx_kwds
8841#endif
8842) {
8843 PyArrayObject *__pyx_v_iwork = 0;
8844 PyArrayObject *__pyx_v_rwork = 0;
8845 double __pyx_v_t;
8846 PyArrayObject *__pyx_v_x = 0;
8847 PyArrayObject *__pyx_v_u = 0;
8848 PyArrayObject *__pyx_v_r = 0;
8849 #if !CYTHON_VECTORCALL
8850 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8851 #endif
8852 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8853 PyObject* values[6] = {0,0,0,0,0,0};
8854 int __pyx_lineno = 0;
8855 const char *__pyx_filename = NULL;
8856 int __pyx_clineno = 0;
8857 PyObject *__pyx_r = 0;
8858 __Pyx_RefNannyDeclarations
8859 __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_r (wrapper)", 0);
8860 #if !CYTHON_VECTORCALL
8861 #if CYTHON_ASSUME_SAFE_SIZE
8862 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8863 #else
8864 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8865 #endif
8866 #endif
8867 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8868 {
8869 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
8870 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
8871 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 111, __pyx_L3_error)
8872 if (__pyx_kwds_len > 0) {
8873 switch (__pyx_nargs) {
8874 case 6:
8875 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
8876 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 111, __pyx_L3_error)
8877 CYTHON_FALLTHROUGH;
8878 case 5:
8879 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8880 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 111, __pyx_L3_error)
8881 CYTHON_FALLTHROUGH;
8882 case 4:
8883 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8884 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 111, __pyx_L3_error)
8885 CYTHON_FALLTHROUGH;
8886 case 3:
8887 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8888 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 111, __pyx_L3_error)
8889 CYTHON_FALLTHROUGH;
8890 case 2:
8891 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8892 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 111, __pyx_L3_error)
8893 CYTHON_FALLTHROUGH;
8894 case 1:
8895 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8896 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 111, __pyx_L3_error)
8897 CYTHON_FALLTHROUGH;
8898 case 0: break;
8899 default: goto __pyx_L5_argtuple_error;
8900 }
8901 const Py_ssize_t kwd_pos_args = __pyx_nargs;
8902 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Decay_DiracIC_r", 0) < (0)) __PYX_ERR(0, 111, __pyx_L3_error)
8903 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
8904 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, i); __PYX_ERR(0, 111, __pyx_L3_error) }
8905 }
8906 } else if (unlikely(__pyx_nargs != 6)) {
8907 goto __pyx_L5_argtuple_error;
8908 } else {
8909 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
8910 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 111, __pyx_L3_error)
8911 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
8912 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 111, __pyx_L3_error)
8913 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
8914 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 111, __pyx_L3_error)
8915 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
8916 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 111, __pyx_L3_error)
8917 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
8918 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 111, __pyx_L3_error)
8919 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
8920 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 111, __pyx_L3_error)
8921 }
8922 __pyx_v_iwork = ((PyArrayObject *)values[0]);
8923 __pyx_v_rwork = ((PyArrayObject *)values[1]);
8924 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 111, __pyx_L3_error)
8925 __pyx_v_x = ((PyArrayObject *)values[3]);
8926 __pyx_v_u = ((PyArrayObject *)values[4]);
8927 __pyx_v_r = ((PyArrayObject *)values[5]);
8928 }
8929 goto __pyx_L6_skip;
8930 __pyx_L5_argtuple_error:;
8931 __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 111, __pyx_L3_error)
8932 __pyx_L6_skip:;
8933 goto __pyx_L4_argument_unpacking_done;
8934 __pyx_L3_error:;
8935 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8936 Py_XDECREF(values[__pyx_temp]);
8937 }
8938 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8939 __Pyx_RefNannyFinishContext();
8940 return NULL;
8941 __pyx_L4_argument_unpacking_done:;
8942 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 111, __pyx_L1_error)
8943 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 111, __pyx_L1_error)
8944 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 111, __pyx_L1_error)
8945 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 111, __pyx_L1_error)
8946 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 111, __pyx_L1_error)
8947 __pyx_r = __pyx_pf_20canalyticalSolutions_30LinearADR_Decay_DiracIC_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
8948
8949 /* function exit code */
8950 goto __pyx_L0;
8951 __pyx_L1_error:;
8952 __pyx_r = NULL;
8953 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8954 Py_XDECREF(values[__pyx_temp]);
8955 }
8956 goto __pyx_L7_cleaned_up;
8957 __pyx_L0:;
8958 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
8959 Py_XDECREF(values[__pyx_temp]);
8960 }
8961 __pyx_L7_cleaned_up:;
8962
8963 __Pyx_RefNannyFinishContext();
8964 return __pyx_r;
8965}
8966
8967static PyObject *__pyx_pf_20canalyticalSolutions_30LinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
8968 PyObject *__pyx_r = NULL;
8969 __Pyx_RefNannyDeclarations
8970 npy_intp __pyx_t_1;
8971 npy_intp __pyx_t_2;
8972 PyObject *__pyx_t_3 = NULL;
8973 int __pyx_lineno = 0;
8974 const char *__pyx_filename = NULL;
8975 int __pyx_clineno = 0;
8976 __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_r", 0);
8977
8978 /* "canalyticalSolutions.pyx":112
8979 *
8980 * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
8981 * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
8982 *
8983 *
8984*/
8985 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
8986
8987 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
8988
8989 if (unlikely(__pyx_t_2 == 0)) {
8990 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
8991 __PYX_ERR(0, 112, __pyx_L1_error)
8992 }
8993 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
8994 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
8995 __PYX_ERR(0, 112, __pyx_L1_error)
8996 }
8997 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Decay_DiracIC_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
8998 __Pyx_GOTREF(__pyx_t_3);
8999
9000
9001 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 112, __pyx_L1_error)
9002 {
9003 PyObject *__pyx_temp;
9004 {
9005 __pyx_temp = __pyx_r;
9006 __pyx_r = ((PyObject*)__pyx_t_3);
9007 }
9008 __Pyx_XDECREF(__pyx_temp);
9009 }
9010 __pyx_t_3 = 0;
9011 goto __pyx_L0;
9012
9013 /* "canalyticalSolutions.pyx":111
9014 *
9015 *
9016 * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
9017 * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
9018 *
9019*/
9020
9021 /* function exit code */
9022 __pyx_L1_error:;
9023 __Pyx_XDECREF(__pyx_t_3);
9024 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
9025 __pyx_r = NULL;
9026 __pyx_L0:;
9027 __Pyx_XGIVEREF(__pyx_r);
9028 __Pyx_RefNannyFinishContext();
9029 return __pyx_r;
9030}
9031
9032/* "canalyticalSolutions.pyx":115
9033 *
9034 *
9035 * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9036 * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9037 *
9038*/
9039
9040/* Python wrapper */
9041static PyObject *__pyx_pw_20canalyticalSolutions_33LinearADR_Sine(PyObject *__pyx_self,
9042#if CYTHON_VECTORCALL
9043PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9044#else
9045PyObject *__pyx_args, PyObject *__pyx_kwds
9046#endif
9047); /*proto*/
9048static PyMethodDef __pyx_mdef_20canalyticalSolutions_33LinearADR_Sine = {"LinearADR_Sine", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_33LinearADR_Sine, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9049static PyObject *__pyx_pw_20canalyticalSolutions_33LinearADR_Sine(PyObject *__pyx_self,
9050#if CYTHON_VECTORCALL
9051PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9052#else
9053PyObject *__pyx_args, PyObject *__pyx_kwds
9054#endif
9055) {
9056 PyArrayObject *__pyx_v_iwork = 0;
9057 PyArrayObject *__pyx_v_rwork = 0;
9058 double __pyx_v_t;
9059 PyArrayObject *__pyx_v_x = 0;
9060 PyArrayObject *__pyx_v_u = 0;
9061 #if !CYTHON_VECTORCALL
9062 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9063 #endif
9064 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9065 PyObject* values[5] = {0,0,0,0,0};
9066 int __pyx_lineno = 0;
9067 const char *__pyx_filename = NULL;
9068 int __pyx_clineno = 0;
9069 PyObject *__pyx_r = 0;
9070 __Pyx_RefNannyDeclarations
9071 __Pyx_RefNannySetupContext("LinearADR_Sine (wrapper)", 0);
9072 #if !CYTHON_VECTORCALL
9073 #if CYTHON_ASSUME_SAFE_SIZE
9074 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9075 #else
9076 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9077 #endif
9078 #endif
9079 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9080 {
9081 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
9082 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
9083 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 115, __pyx_L3_error)
9084 if (__pyx_kwds_len > 0) {
9085 switch (__pyx_nargs) {
9086 case 5:
9087 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9088 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 115, __pyx_L3_error)
9089 CYTHON_FALLTHROUGH;
9090 case 4:
9091 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9092 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 115, __pyx_L3_error)
9093 CYTHON_FALLTHROUGH;
9094 case 3:
9095 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9096 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 115, __pyx_L3_error)
9097 CYTHON_FALLTHROUGH;
9098 case 2:
9099 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9100 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 115, __pyx_L3_error)
9101 CYTHON_FALLTHROUGH;
9102 case 1:
9103 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9104 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 115, __pyx_L3_error)
9105 CYTHON_FALLTHROUGH;
9106 case 0: break;
9107 default: goto __pyx_L5_argtuple_error;
9108 }
9109 const Py_ssize_t kwd_pos_args = __pyx_nargs;
9110 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine", 0) < (0)) __PYX_ERR(0, 115, __pyx_L3_error)
9111 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
9112 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, i); __PYX_ERR(0, 115, __pyx_L3_error) }
9113 }
9114 } else if (unlikely(__pyx_nargs != 5)) {
9115 goto __pyx_L5_argtuple_error;
9116 } else {
9117 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9118 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 115, __pyx_L3_error)
9119 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9120 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 115, __pyx_L3_error)
9121 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9122 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 115, __pyx_L3_error)
9123 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9124 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 115, __pyx_L3_error)
9125 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9126 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 115, __pyx_L3_error)
9127 }
9128 __pyx_v_iwork = ((PyArrayObject *)values[0]);
9129 __pyx_v_rwork = ((PyArrayObject *)values[1]);
9130 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L3_error)
9131 __pyx_v_x = ((PyArrayObject *)values[3]);
9132 __pyx_v_u = ((PyArrayObject *)values[4]);
9133 }
9134 goto __pyx_L6_skip;
9135 __pyx_L5_argtuple_error:;
9136 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 115, __pyx_L3_error)
9137 __pyx_L6_skip:;
9138 goto __pyx_L4_argument_unpacking_done;
9139 __pyx_L3_error:;
9140 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9141 Py_XDECREF(values[__pyx_temp]);
9142 }
9143 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine", __pyx_clineno, __pyx_lineno, __pyx_filename);
9144 __Pyx_RefNannyFinishContext();
9145 return NULL;
9146 __pyx_L4_argument_unpacking_done:;
9147 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 115, __pyx_L1_error)
9148 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 115, __pyx_L1_error)
9149 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 115, __pyx_L1_error)
9150 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 115, __pyx_L1_error)
9151 __pyx_r = __pyx_pf_20canalyticalSolutions_32LinearADR_Sine(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
9152
9153 /* function exit code */
9154 goto __pyx_L0;
9155 __pyx_L1_error:;
9156 __pyx_r = NULL;
9157 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9158 Py_XDECREF(values[__pyx_temp]);
9159 }
9160 goto __pyx_L7_cleaned_up;
9161 __pyx_L0:;
9162 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9163 Py_XDECREF(values[__pyx_temp]);
9164 }
9165 __pyx_L7_cleaned_up:;
9166
9167 __Pyx_RefNannyFinishContext();
9168 return __pyx_r;
9169}
9170
9171static PyObject *__pyx_pf_20canalyticalSolutions_32LinearADR_Sine(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
9172 PyObject *__pyx_r = NULL;
9173 __Pyx_RefNannyDeclarations
9174 npy_intp __pyx_t_1;
9175 npy_intp __pyx_t_2;
9176 PyObject *__pyx_t_3 = NULL;
9177 int __pyx_lineno = 0;
9178 const char *__pyx_filename = NULL;
9179 int __pyx_clineno = 0;
9180 __Pyx_RefNannySetupContext("LinearADR_Sine", 0);
9181
9182 /* "canalyticalSolutions.pyx":116
9183 *
9184 * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
9185 * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
9186 *
9187 *
9188*/
9189 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
9190
9191 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
9192
9193 if (unlikely(__pyx_t_2 == 0)) {
9194 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
9195 __PYX_ERR(0, 116, __pyx_L1_error)
9196 }
9197 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
9198 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
9199 __PYX_ERR(0, 116, __pyx_L1_error)
9200 }
9201 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error)
9202 __Pyx_GOTREF(__pyx_t_3);
9203
9204
9205 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 116, __pyx_L1_error)
9206 {
9207 PyObject *__pyx_temp;
9208 {
9209 __pyx_temp = __pyx_r;
9210 __pyx_r = ((PyObject*)__pyx_t_3);
9211 }
9212 __Pyx_XDECREF(__pyx_temp);
9213 }
9214 __pyx_t_3 = 0;
9215 goto __pyx_L0;
9216
9217 /* "canalyticalSolutions.pyx":115
9218 *
9219 *
9220 * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9221 * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9222 *
9223*/
9224
9225 /* function exit code */
9226 __pyx_L1_error:;
9227 __Pyx_XDECREF(__pyx_t_3);
9228 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine", __pyx_clineno, __pyx_lineno, __pyx_filename);
9229 __pyx_r = NULL;
9230 __pyx_L0:;
9231 __Pyx_XGIVEREF(__pyx_r);
9232 __Pyx_RefNannyFinishContext();
9233 return __pyx_r;
9234}
9235
9236/* "canalyticalSolutions.pyx":119
9237 *
9238 *
9239 * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
9240 * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
9241 *
9242*/
9243
9244/* Python wrapper */
9245static PyObject *__pyx_pw_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity(PyObject *__pyx_self,
9246#if CYTHON_VECTORCALL
9247PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9248#else
9249PyObject *__pyx_args, PyObject *__pyx_kwds
9250#endif
9251); /*proto*/
9252static PyMethodDef __pyx_mdef_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity = {"LinearADR_Sine_advectiveVelocity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9253static PyObject *__pyx_pw_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity(PyObject *__pyx_self,
9254#if CYTHON_VECTORCALL
9255PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9256#else
9257PyObject *__pyx_args, PyObject *__pyx_kwds
9258#endif
9259) {
9260 PyArrayObject *__pyx_v_iwork = 0;
9261 PyArrayObject *__pyx_v_rwork = 0;
9262 double __pyx_v_t;
9263 PyArrayObject *__pyx_v_x = 0;
9264 PyArrayObject *__pyx_v_f = 0;
9265 #if !CYTHON_VECTORCALL
9266 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9267 #endif
9268 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9269 PyObject* values[5] = {0,0,0,0,0};
9270 int __pyx_lineno = 0;
9271 const char *__pyx_filename = NULL;
9272 int __pyx_clineno = 0;
9273 PyObject *__pyx_r = 0;
9274 __Pyx_RefNannyDeclarations
9275 __Pyx_RefNannySetupContext("LinearADR_Sine_advectiveVelocity (wrapper)", 0);
9276 #if !CYTHON_VECTORCALL
9277 #if CYTHON_ASSUME_SAFE_SIZE
9278 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9279 #else
9280 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9281 #endif
9282 #endif
9283 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9284 {
9285 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_f,0};
9286 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
9287 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 119, __pyx_L3_error)
9288 if (__pyx_kwds_len > 0) {
9289 switch (__pyx_nargs) {
9290 case 5:
9291 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9292 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 119, __pyx_L3_error)
9293 CYTHON_FALLTHROUGH;
9294 case 4:
9295 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9296 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 119, __pyx_L3_error)
9297 CYTHON_FALLTHROUGH;
9298 case 3:
9299 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9300 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 119, __pyx_L3_error)
9301 CYTHON_FALLTHROUGH;
9302 case 2:
9303 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9304 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 119, __pyx_L3_error)
9305 CYTHON_FALLTHROUGH;
9306 case 1:
9307 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9308 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 119, __pyx_L3_error)
9309 CYTHON_FALLTHROUGH;
9310 case 0: break;
9311 default: goto __pyx_L5_argtuple_error;
9312 }
9313 const Py_ssize_t kwd_pos_args = __pyx_nargs;
9314 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine_advectiveVelocity", 0) < (0)) __PYX_ERR(0, 119, __pyx_L3_error)
9315 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
9316 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, i); __PYX_ERR(0, 119, __pyx_L3_error) }
9317 }
9318 } else if (unlikely(__pyx_nargs != 5)) {
9319 goto __pyx_L5_argtuple_error;
9320 } else {
9321 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9322 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 119, __pyx_L3_error)
9323 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9324 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 119, __pyx_L3_error)
9325 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9326 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 119, __pyx_L3_error)
9327 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9328 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 119, __pyx_L3_error)
9329 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9330 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 119, __pyx_L3_error)
9331 }
9332 __pyx_v_iwork = ((PyArrayObject *)values[0]);
9333 __pyx_v_rwork = ((PyArrayObject *)values[1]);
9334 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 119, __pyx_L3_error)
9335 __pyx_v_x = ((PyArrayObject *)values[3]);
9336 __pyx_v_f = ((PyArrayObject *)values[4]);
9337 }
9338 goto __pyx_L6_skip;
9339 __pyx_L5_argtuple_error:;
9340 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 119, __pyx_L3_error)
9341 __pyx_L6_skip:;
9342 goto __pyx_L4_argument_unpacking_done;
9343 __pyx_L3_error:;
9344 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9345 Py_XDECREF(values[__pyx_temp]);
9346 }
9347 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
9348 __Pyx_RefNannyFinishContext();
9349 return NULL;
9350 __pyx_L4_argument_unpacking_done:;
9351 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 119, __pyx_L1_error)
9352 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 119, __pyx_L1_error)
9353 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 119, __pyx_L1_error)
9354 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 119, __pyx_L1_error)
9355 __pyx_r = __pyx_pf_20canalyticalSolutions_34LinearADR_Sine_advectiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
9356
9357 /* function exit code */
9358 goto __pyx_L0;
9359 __pyx_L1_error:;
9360 __pyx_r = NULL;
9361 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9362 Py_XDECREF(values[__pyx_temp]);
9363 }
9364 goto __pyx_L7_cleaned_up;
9365 __pyx_L0:;
9366 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9367 Py_XDECREF(values[__pyx_temp]);
9368 }
9369 __pyx_L7_cleaned_up:;
9370
9371 __Pyx_RefNannyFinishContext();
9372 return __pyx_r;
9373}
9374
9375static PyObject *__pyx_pf_20canalyticalSolutions_34LinearADR_Sine_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
9376 PyObject *__pyx_r = NULL;
9377 __Pyx_RefNannyDeclarations
9378 npy_intp __pyx_t_1;
9379 npy_intp __pyx_t_2;
9380 PyObject *__pyx_t_3 = NULL;
9381 int __pyx_lineno = 0;
9382 const char *__pyx_filename = NULL;
9383 int __pyx_clineno = 0;
9384 __Pyx_RefNannySetupContext("LinearADR_Sine_advectiveVelocity", 0);
9385
9386 /* "canalyticalSolutions.pyx":120
9387 *
9388 * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
9389 * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
9390 *
9391 *
9392*/
9393 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
9394
9395 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
9396
9397 if (unlikely(__pyx_t_2 == 0)) {
9398 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
9399 __PYX_ERR(0, 120, __pyx_L1_error)
9400 }
9401 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
9402 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
9403 __PYX_ERR(0, 120, __pyx_L1_error)
9404 }
9405 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine_advectiveVelocity(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_f)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
9406 __Pyx_GOTREF(__pyx_t_3);
9407
9408
9409 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 120, __pyx_L1_error)
9410 {
9411 PyObject *__pyx_temp;
9412 {
9413 __pyx_temp = __pyx_r;
9414 __pyx_r = ((PyObject*)__pyx_t_3);
9415 }
9416 __Pyx_XDECREF(__pyx_temp);
9417 }
9418 __pyx_t_3 = 0;
9419 goto __pyx_L0;
9420
9421 /* "canalyticalSolutions.pyx":119
9422 *
9423 *
9424 * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
9425 * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
9426 *
9427*/
9428
9429 /* function exit code */
9430 __pyx_L1_error:;
9431 __Pyx_XDECREF(__pyx_t_3);
9432 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
9433 __pyx_r = NULL;
9434 __pyx_L0:;
9435 __Pyx_XGIVEREF(__pyx_r);
9436 __Pyx_RefNannyFinishContext();
9437 return __pyx_r;
9438}
9439
9440/* "canalyticalSolutions.pyx":123
9441 *
9442 *
9443 * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
9444 * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
9445 *
9446*/
9447
9448/* Python wrapper */
9449static PyObject *__pyx_pw_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity(PyObject *__pyx_self,
9450#if CYTHON_VECTORCALL
9451PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9452#else
9453PyObject *__pyx_args, PyObject *__pyx_kwds
9454#endif
9455); /*proto*/
9456static PyMethodDef __pyx_mdef_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity = {"LinearADR_Sine_diffusiveVelocity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9457static PyObject *__pyx_pw_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity(PyObject *__pyx_self,
9458#if CYTHON_VECTORCALL
9459PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9460#else
9461PyObject *__pyx_args, PyObject *__pyx_kwds
9462#endif
9463) {
9464 PyArrayObject *__pyx_v_iwork = 0;
9465 PyArrayObject *__pyx_v_rwork = 0;
9466 double __pyx_v_t;
9467 PyArrayObject *__pyx_v_x = 0;
9468 PyArrayObject *__pyx_v_f = 0;
9469 #if !CYTHON_VECTORCALL
9470 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9471 #endif
9472 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9473 PyObject* values[5] = {0,0,0,0,0};
9474 int __pyx_lineno = 0;
9475 const char *__pyx_filename = NULL;
9476 int __pyx_clineno = 0;
9477 PyObject *__pyx_r = 0;
9478 __Pyx_RefNannyDeclarations
9479 __Pyx_RefNannySetupContext("LinearADR_Sine_diffusiveVelocity (wrapper)", 0);
9480 #if !CYTHON_VECTORCALL
9481 #if CYTHON_ASSUME_SAFE_SIZE
9482 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9483 #else
9484 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9485 #endif
9486 #endif
9487 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9488 {
9489 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_f,0};
9490 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
9491 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 123, __pyx_L3_error)
9492 if (__pyx_kwds_len > 0) {
9493 switch (__pyx_nargs) {
9494 case 5:
9495 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9496 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 123, __pyx_L3_error)
9497 CYTHON_FALLTHROUGH;
9498 case 4:
9499 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9500 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 123, __pyx_L3_error)
9501 CYTHON_FALLTHROUGH;
9502 case 3:
9503 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9504 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 123, __pyx_L3_error)
9505 CYTHON_FALLTHROUGH;
9506 case 2:
9507 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9508 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 123, __pyx_L3_error)
9509 CYTHON_FALLTHROUGH;
9510 case 1:
9511 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9512 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 123, __pyx_L3_error)
9513 CYTHON_FALLTHROUGH;
9514 case 0: break;
9515 default: goto __pyx_L5_argtuple_error;
9516 }
9517 const Py_ssize_t kwd_pos_args = __pyx_nargs;
9518 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine_diffusiveVelocity", 0) < (0)) __PYX_ERR(0, 123, __pyx_L3_error)
9519 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
9520 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, i); __PYX_ERR(0, 123, __pyx_L3_error) }
9521 }
9522 } else if (unlikely(__pyx_nargs != 5)) {
9523 goto __pyx_L5_argtuple_error;
9524 } else {
9525 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9526 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 123, __pyx_L3_error)
9527 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9528 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 123, __pyx_L3_error)
9529 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9530 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 123, __pyx_L3_error)
9531 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9532 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 123, __pyx_L3_error)
9533 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9534 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 123, __pyx_L3_error)
9535 }
9536 __pyx_v_iwork = ((PyArrayObject *)values[0]);
9537 __pyx_v_rwork = ((PyArrayObject *)values[1]);
9538 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 123, __pyx_L3_error)
9539 __pyx_v_x = ((PyArrayObject *)values[3]);
9540 __pyx_v_f = ((PyArrayObject *)values[4]);
9541 }
9542 goto __pyx_L6_skip;
9543 __pyx_L5_argtuple_error:;
9544 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 123, __pyx_L3_error)
9545 __pyx_L6_skip:;
9546 goto __pyx_L4_argument_unpacking_done;
9547 __pyx_L3_error:;
9548 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9549 Py_XDECREF(values[__pyx_temp]);
9550 }
9551 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
9552 __Pyx_RefNannyFinishContext();
9553 return NULL;
9554 __pyx_L4_argument_unpacking_done:;
9555 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 123, __pyx_L1_error)
9556 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 123, __pyx_L1_error)
9557 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 123, __pyx_L1_error)
9558 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 123, __pyx_L1_error)
9559 __pyx_r = __pyx_pf_20canalyticalSolutions_36LinearADR_Sine_diffusiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
9560
9561 /* function exit code */
9562 goto __pyx_L0;
9563 __pyx_L1_error:;
9564 __pyx_r = NULL;
9565 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9566 Py_XDECREF(values[__pyx_temp]);
9567 }
9568 goto __pyx_L7_cleaned_up;
9569 __pyx_L0:;
9570 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9571 Py_XDECREF(values[__pyx_temp]);
9572 }
9573 __pyx_L7_cleaned_up:;
9574
9575 __Pyx_RefNannyFinishContext();
9576 return __pyx_r;
9577}
9578
9579static PyObject *__pyx_pf_20canalyticalSolutions_36LinearADR_Sine_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
9580 PyObject *__pyx_r = NULL;
9581 __Pyx_RefNannyDeclarations
9582 npy_intp __pyx_t_1;
9583 npy_intp __pyx_t_2;
9584 PyObject *__pyx_t_3 = NULL;
9585 int __pyx_lineno = 0;
9586 const char *__pyx_filename = NULL;
9587 int __pyx_clineno = 0;
9588 __Pyx_RefNannySetupContext("LinearADR_Sine_diffusiveVelocity", 0);
9589
9590 /* "canalyticalSolutions.pyx":124
9591 *
9592 * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
9593 * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
9594 *
9595 *
9596*/
9597 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
9598
9599 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
9600
9601 if (unlikely(__pyx_t_2 == 0)) {
9602 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
9603 __PYX_ERR(0, 124, __pyx_L1_error)
9604 }
9605 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
9606 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
9607 __PYX_ERR(0, 124, __pyx_L1_error)
9608 }
9609 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine_diffusiveVelocity(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_f)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
9610 __Pyx_GOTREF(__pyx_t_3);
9611
9612
9613 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 124, __pyx_L1_error)
9614 {
9615 PyObject *__pyx_temp;
9616 {
9617 __pyx_temp = __pyx_r;
9618 __pyx_r = ((PyObject*)__pyx_t_3);
9619 }
9620 __Pyx_XDECREF(__pyx_temp);
9621 }
9622 __pyx_t_3 = 0;
9623 goto __pyx_L0;
9624
9625 /* "canalyticalSolutions.pyx":123
9626 *
9627 *
9628 * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
9629 * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
9630 *
9631*/
9632
9633 /* function exit code */
9634 __pyx_L1_error:;
9635 __Pyx_XDECREF(__pyx_t_3);
9636 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
9637 __pyx_r = NULL;
9638 __pyx_L0:;
9639 __Pyx_XGIVEREF(__pyx_r);
9640 __Pyx_RefNannyFinishContext();
9641 return __pyx_r;
9642}
9643
9644/* "canalyticalSolutions.pyx":127
9645 *
9646 *
9647 * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
9648 * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
9649 *
9650*/
9651
9652/* Python wrapper */
9653static PyObject *__pyx_pw_20canalyticalSolutions_39LinearADR_Sine_dr(PyObject *__pyx_self,
9654#if CYTHON_VECTORCALL
9655PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9656#else
9657PyObject *__pyx_args, PyObject *__pyx_kwds
9658#endif
9659); /*proto*/
9660static PyMethodDef __pyx_mdef_20canalyticalSolutions_39LinearADR_Sine_dr = {"LinearADR_Sine_dr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_39LinearADR_Sine_dr, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9661static PyObject *__pyx_pw_20canalyticalSolutions_39LinearADR_Sine_dr(PyObject *__pyx_self,
9662#if CYTHON_VECTORCALL
9663PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9664#else
9665PyObject *__pyx_args, PyObject *__pyx_kwds
9666#endif
9667) {
9668 PyArrayObject *__pyx_v_iwork = 0;
9669 PyArrayObject *__pyx_v_rwork = 0;
9670 double __pyx_v_t;
9671 PyArrayObject *__pyx_v_x = 0;
9672 PyArrayObject *__pyx_v_u = 0;
9673 PyArrayObject *__pyx_v_dr = 0;
9674 #if !CYTHON_VECTORCALL
9675 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9676 #endif
9677 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9678 PyObject* values[6] = {0,0,0,0,0,0};
9679 int __pyx_lineno = 0;
9680 const char *__pyx_filename = NULL;
9681 int __pyx_clineno = 0;
9682 PyObject *__pyx_r = 0;
9683 __Pyx_RefNannyDeclarations
9684 __Pyx_RefNannySetupContext("LinearADR_Sine_dr (wrapper)", 0);
9685 #if !CYTHON_VECTORCALL
9686 #if CYTHON_ASSUME_SAFE_SIZE
9687 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9688 #else
9689 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9690 #endif
9691 #endif
9692 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9693 {
9694 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_dr,0};
9695 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
9696 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 127, __pyx_L3_error)
9697 if (__pyx_kwds_len > 0) {
9698 switch (__pyx_nargs) {
9699 case 6:
9700 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
9701 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 127, __pyx_L3_error)
9702 CYTHON_FALLTHROUGH;
9703 case 5:
9704 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9705 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 127, __pyx_L3_error)
9706 CYTHON_FALLTHROUGH;
9707 case 4:
9708 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9709 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 127, __pyx_L3_error)
9710 CYTHON_FALLTHROUGH;
9711 case 3:
9712 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9713 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 127, __pyx_L3_error)
9714 CYTHON_FALLTHROUGH;
9715 case 2:
9716 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9717 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 127, __pyx_L3_error)
9718 CYTHON_FALLTHROUGH;
9719 case 1:
9720 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9721 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 127, __pyx_L3_error)
9722 CYTHON_FALLTHROUGH;
9723 case 0: break;
9724 default: goto __pyx_L5_argtuple_error;
9725 }
9726 const Py_ssize_t kwd_pos_args = __pyx_nargs;
9727 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine_dr", 0) < (0)) __PYX_ERR(0, 127, __pyx_L3_error)
9728 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
9729 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, i); __PYX_ERR(0, 127, __pyx_L3_error) }
9730 }
9731 } else if (unlikely(__pyx_nargs != 6)) {
9732 goto __pyx_L5_argtuple_error;
9733 } else {
9734 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9735 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 127, __pyx_L3_error)
9736 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9737 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 127, __pyx_L3_error)
9738 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9739 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 127, __pyx_L3_error)
9740 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9741 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 127, __pyx_L3_error)
9742 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9743 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 127, __pyx_L3_error)
9744 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
9745 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 127, __pyx_L3_error)
9746 }
9747 __pyx_v_iwork = ((PyArrayObject *)values[0]);
9748 __pyx_v_rwork = ((PyArrayObject *)values[1]);
9749 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 127, __pyx_L3_error)
9750 __pyx_v_x = ((PyArrayObject *)values[3]);
9751 __pyx_v_u = ((PyArrayObject *)values[4]);
9752 __pyx_v_dr = ((PyArrayObject *)values[5]);
9753 }
9754 goto __pyx_L6_skip;
9755 __pyx_L5_argtuple_error:;
9756 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 127, __pyx_L3_error)
9757 __pyx_L6_skip:;
9758 goto __pyx_L4_argument_unpacking_done;
9759 __pyx_L3_error:;
9760 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9761 Py_XDECREF(values[__pyx_temp]);
9762 }
9763 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
9764 __Pyx_RefNannyFinishContext();
9765 return NULL;
9766 __pyx_L4_argument_unpacking_done:;
9767 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 127, __pyx_L1_error)
9768 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 127, __pyx_L1_error)
9769 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 127, __pyx_L1_error)
9770 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 127, __pyx_L1_error)
9771 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 127, __pyx_L1_error)
9772 __pyx_r = __pyx_pf_20canalyticalSolutions_38LinearADR_Sine_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
9773
9774 /* function exit code */
9775 goto __pyx_L0;
9776 __pyx_L1_error:;
9777 __pyx_r = NULL;
9778 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9779 Py_XDECREF(values[__pyx_temp]);
9780 }
9781 goto __pyx_L7_cleaned_up;
9782 __pyx_L0:;
9783 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9784 Py_XDECREF(values[__pyx_temp]);
9785 }
9786 __pyx_L7_cleaned_up:;
9787
9788 __Pyx_RefNannyFinishContext();
9789 return __pyx_r;
9790}
9791
9792static PyObject *__pyx_pf_20canalyticalSolutions_38LinearADR_Sine_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
9793 PyObject *__pyx_r = NULL;
9794 __Pyx_RefNannyDeclarations
9795 npy_intp __pyx_t_1;
9796 npy_intp __pyx_t_2;
9797 PyObject *__pyx_t_3 = NULL;
9798 int __pyx_lineno = 0;
9799 const char *__pyx_filename = NULL;
9800 int __pyx_clineno = 0;
9801 __Pyx_RefNannySetupContext("LinearADR_Sine_dr", 0);
9802
9803 /* "canalyticalSolutions.pyx":128
9804 *
9805 * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
9806 * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
9807 *
9808 *
9809*/
9810 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
9811
9812 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
9813
9814 if (unlikely(__pyx_t_2 == 0)) {
9815 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
9816 __PYX_ERR(0, 128, __pyx_L1_error)
9817 }
9818 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
9819 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
9820 __PYX_ERR(0, 128, __pyx_L1_error)
9821 }
9822 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine_dr(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_dr)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 128, __pyx_L1_error)
9823 __Pyx_GOTREF(__pyx_t_3);
9824
9825
9826 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 128, __pyx_L1_error)
9827 {
9828 PyObject *__pyx_temp;
9829 {
9830 __pyx_temp = __pyx_r;
9831 __pyx_r = ((PyObject*)__pyx_t_3);
9832 }
9833 __Pyx_XDECREF(__pyx_temp);
9834 }
9835 __pyx_t_3 = 0;
9836 goto __pyx_L0;
9837
9838 /* "canalyticalSolutions.pyx":127
9839 *
9840 *
9841 * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
9842 * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
9843 *
9844*/
9845
9846 /* function exit code */
9847 __pyx_L1_error:;
9848 __Pyx_XDECREF(__pyx_t_3);
9849 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
9850 __pyx_r = NULL;
9851 __pyx_L0:;
9852 __Pyx_XGIVEREF(__pyx_r);
9853 __Pyx_RefNannyFinishContext();
9854 return __pyx_r;
9855}
9856
9857/* "canalyticalSolutions.pyx":131
9858 *
9859 *
9860 * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
9861 * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
9862 *
9863*/
9864
9865/* Python wrapper */
9866static PyObject *__pyx_pw_20canalyticalSolutions_41LinearADR_Sine_du(PyObject *__pyx_self,
9867#if CYTHON_VECTORCALL
9868PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9869#else
9870PyObject *__pyx_args, PyObject *__pyx_kwds
9871#endif
9872); /*proto*/
9873static PyMethodDef __pyx_mdef_20canalyticalSolutions_41LinearADR_Sine_du = {"LinearADR_Sine_du", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_41LinearADR_Sine_du, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9874static PyObject *__pyx_pw_20canalyticalSolutions_41LinearADR_Sine_du(PyObject *__pyx_self,
9875#if CYTHON_VECTORCALL
9876PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9877#else
9878PyObject *__pyx_args, PyObject *__pyx_kwds
9879#endif
9880) {
9881 PyArrayObject *__pyx_v_iwork = 0;
9882 PyArrayObject *__pyx_v_rwork = 0;
9883 double __pyx_v_t;
9884 PyArrayObject *__pyx_v_x = 0;
9885 PyArrayObject *__pyx_v_du = 0;
9886 #if !CYTHON_VECTORCALL
9887 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9888 #endif
9889 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9890 PyObject* values[5] = {0,0,0,0,0};
9891 int __pyx_lineno = 0;
9892 const char *__pyx_filename = NULL;
9893 int __pyx_clineno = 0;
9894 PyObject *__pyx_r = 0;
9895 __Pyx_RefNannyDeclarations
9896 __Pyx_RefNannySetupContext("LinearADR_Sine_du (wrapper)", 0);
9897 #if !CYTHON_VECTORCALL
9898 #if CYTHON_ASSUME_SAFE_SIZE
9899 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9900 #else
9901 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9902 #endif
9903 #endif
9904 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9905 {
9906 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_du,0};
9907 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
9908 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 131, __pyx_L3_error)
9909 if (__pyx_kwds_len > 0) {
9910 switch (__pyx_nargs) {
9911 case 5:
9912 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9913 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 131, __pyx_L3_error)
9914 CYTHON_FALLTHROUGH;
9915 case 4:
9916 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9917 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 131, __pyx_L3_error)
9918 CYTHON_FALLTHROUGH;
9919 case 3:
9920 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9921 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 131, __pyx_L3_error)
9922 CYTHON_FALLTHROUGH;
9923 case 2:
9924 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9925 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 131, __pyx_L3_error)
9926 CYTHON_FALLTHROUGH;
9927 case 1:
9928 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9929 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 131, __pyx_L3_error)
9930 CYTHON_FALLTHROUGH;
9931 case 0: break;
9932 default: goto __pyx_L5_argtuple_error;
9933 }
9934 const Py_ssize_t kwd_pos_args = __pyx_nargs;
9935 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine_du", 0) < (0)) __PYX_ERR(0, 131, __pyx_L3_error)
9936 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
9937 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, i); __PYX_ERR(0, 131, __pyx_L3_error) }
9938 }
9939 } else if (unlikely(__pyx_nargs != 5)) {
9940 goto __pyx_L5_argtuple_error;
9941 } else {
9942 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
9943 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 131, __pyx_L3_error)
9944 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
9945 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 131, __pyx_L3_error)
9946 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
9947 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 131, __pyx_L3_error)
9948 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
9949 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 131, __pyx_L3_error)
9950 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
9951 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 131, __pyx_L3_error)
9952 }
9953 __pyx_v_iwork = ((PyArrayObject *)values[0]);
9954 __pyx_v_rwork = ((PyArrayObject *)values[1]);
9955 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L3_error)
9956 __pyx_v_x = ((PyArrayObject *)values[3]);
9957 __pyx_v_du = ((PyArrayObject *)values[4]);
9958 }
9959 goto __pyx_L6_skip;
9960 __pyx_L5_argtuple_error:;
9961 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 131, __pyx_L3_error)
9962 __pyx_L6_skip:;
9963 goto __pyx_L4_argument_unpacking_done;
9964 __pyx_L3_error:;
9965 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9966 Py_XDECREF(values[__pyx_temp]);
9967 }
9968 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
9969 __Pyx_RefNannyFinishContext();
9970 return NULL;
9971 __pyx_L4_argument_unpacking_done:;
9972 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 131, __pyx_L1_error)
9973 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 131, __pyx_L1_error)
9974 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 131, __pyx_L1_error)
9975 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_du), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "du", 0))) __PYX_ERR(0, 131, __pyx_L1_error)
9976 __pyx_r = __pyx_pf_20canalyticalSolutions_40LinearADR_Sine_du(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_du);
9977
9978 /* function exit code */
9979 goto __pyx_L0;
9980 __pyx_L1_error:;
9981 __pyx_r = NULL;
9982 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9983 Py_XDECREF(values[__pyx_temp]);
9984 }
9985 goto __pyx_L7_cleaned_up;
9986 __pyx_L0:;
9987 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9988 Py_XDECREF(values[__pyx_temp]);
9989 }
9990 __pyx_L7_cleaned_up:;
9991
9992 __Pyx_RefNannyFinishContext();
9993 return __pyx_r;
9994}
9995
9996static PyObject *__pyx_pf_20canalyticalSolutions_40LinearADR_Sine_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du) {
9997 PyObject *__pyx_r = NULL;
9998 __Pyx_RefNannyDeclarations
9999 npy_intp __pyx_t_1;
10000 npy_intp __pyx_t_2;
10001 PyObject *__pyx_t_3 = NULL;
10002 int __pyx_lineno = 0;
10003 const char *__pyx_filename = NULL;
10004 int __pyx_clineno = 0;
10005 __Pyx_RefNannySetupContext("LinearADR_Sine_du", 0);
10006
10007 /* "canalyticalSolutions.pyx":132
10008 *
10009 * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int:
10010 * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data) # <<<<<<<<<<<<<<
10011 *
10012 *
10013*/
10014 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
10015
10016 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
10017
10018 if (unlikely(__pyx_t_2 == 0)) {
10019 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
10020 __PYX_ERR(0, 132, __pyx_L1_error)
10021 }
10022 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
10023 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
10024 __PYX_ERR(0, 132, __pyx_L1_error)
10025 }
10026 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine_du(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_du)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 132, __pyx_L1_error)
10027 __Pyx_GOTREF(__pyx_t_3);
10028
10029
10030 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 132, __pyx_L1_error)
10031 {
10032 PyObject *__pyx_temp;
10033 {
10034 __pyx_temp = __pyx_r;
10035 __pyx_r = ((PyObject*)__pyx_t_3);
10036 }
10037 __Pyx_XDECREF(__pyx_temp);
10038 }
10039 __pyx_t_3 = 0;
10040 goto __pyx_L0;
10041
10042 /* "canalyticalSolutions.pyx":131
10043 *
10044 *
10045 * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
10046 * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
10047 *
10048*/
10049
10050 /* function exit code */
10051 __pyx_L1_error:;
10052 __Pyx_XDECREF(__pyx_t_3);
10053 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
10054 __pyx_r = NULL;
10055 __pyx_L0:;
10056 __Pyx_XGIVEREF(__pyx_r);
10057 __Pyx_RefNannyFinishContext();
10058 return __pyx_r;
10059}
10060
10061/* "canalyticalSolutions.pyx":135
10062 *
10063 *
10064 * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10065 * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10066 *
10067*/
10068
10069/* Python wrapper */
10070static PyObject *__pyx_pw_20canalyticalSolutions_43LinearADR_Sine_r(PyObject *__pyx_self,
10071#if CYTHON_VECTORCALL
10072PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10073#else
10074PyObject *__pyx_args, PyObject *__pyx_kwds
10075#endif
10076); /*proto*/
10077static PyMethodDef __pyx_mdef_20canalyticalSolutions_43LinearADR_Sine_r = {"LinearADR_Sine_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_43LinearADR_Sine_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
10078static PyObject *__pyx_pw_20canalyticalSolutions_43LinearADR_Sine_r(PyObject *__pyx_self,
10079#if CYTHON_VECTORCALL
10080PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10081#else
10082PyObject *__pyx_args, PyObject *__pyx_kwds
10083#endif
10084) {
10085 PyArrayObject *__pyx_v_iwork = 0;
10086 PyArrayObject *__pyx_v_rwork = 0;
10087 double __pyx_v_t;
10088 PyArrayObject *__pyx_v_x = 0;
10089 PyArrayObject *__pyx_v_u = 0;
10090 PyArrayObject *__pyx_v_r = 0;
10091 #if !CYTHON_VECTORCALL
10092 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10093 #endif
10094 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10095 PyObject* values[6] = {0,0,0,0,0,0};
10096 int __pyx_lineno = 0;
10097 const char *__pyx_filename = NULL;
10098 int __pyx_clineno = 0;
10099 PyObject *__pyx_r = 0;
10100 __Pyx_RefNannyDeclarations
10101 __Pyx_RefNannySetupContext("LinearADR_Sine_r (wrapper)", 0);
10102 #if !CYTHON_VECTORCALL
10103 #if CYTHON_ASSUME_SAFE_SIZE
10104 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10105 #else
10106 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10107 #endif
10108 #endif
10109 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10110 {
10111 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
10112 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
10113 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 135, __pyx_L3_error)
10114 if (__pyx_kwds_len > 0) {
10115 switch (__pyx_nargs) {
10116 case 6:
10117 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
10118 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 135, __pyx_L3_error)
10119 CYTHON_FALLTHROUGH;
10120 case 5:
10121 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10122 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 135, __pyx_L3_error)
10123 CYTHON_FALLTHROUGH;
10124 case 4:
10125 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10126 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 135, __pyx_L3_error)
10127 CYTHON_FALLTHROUGH;
10128 case 3:
10129 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10130 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 135, __pyx_L3_error)
10131 CYTHON_FALLTHROUGH;
10132 case 2:
10133 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10134 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 135, __pyx_L3_error)
10135 CYTHON_FALLTHROUGH;
10136 case 1:
10137 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10138 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 135, __pyx_L3_error)
10139 CYTHON_FALLTHROUGH;
10140 case 0: break;
10141 default: goto __pyx_L5_argtuple_error;
10142 }
10143 const Py_ssize_t kwd_pos_args = __pyx_nargs;
10144 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine_r", 0) < (0)) __PYX_ERR(0, 135, __pyx_L3_error)
10145 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
10146 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, i); __PYX_ERR(0, 135, __pyx_L3_error) }
10147 }
10148 } else if (unlikely(__pyx_nargs != 6)) {
10149 goto __pyx_L5_argtuple_error;
10150 } else {
10151 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10152 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 135, __pyx_L3_error)
10153 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10154 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 135, __pyx_L3_error)
10155 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10156 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 135, __pyx_L3_error)
10157 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10158 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 135, __pyx_L3_error)
10159 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10160 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 135, __pyx_L3_error)
10161 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
10162 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 135, __pyx_L3_error)
10163 }
10164 __pyx_v_iwork = ((PyArrayObject *)values[0]);
10165 __pyx_v_rwork = ((PyArrayObject *)values[1]);
10166 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
10167 __pyx_v_x = ((PyArrayObject *)values[3]);
10168 __pyx_v_u = ((PyArrayObject *)values[4]);
10169 __pyx_v_r = ((PyArrayObject *)values[5]);
10170 }
10171 goto __pyx_L6_skip;
10172 __pyx_L5_argtuple_error:;
10173 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 135, __pyx_L3_error)
10174 __pyx_L6_skip:;
10175 goto __pyx_L4_argument_unpacking_done;
10176 __pyx_L3_error:;
10177 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10178 Py_XDECREF(values[__pyx_temp]);
10179 }
10180 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
10181 __Pyx_RefNannyFinishContext();
10182 return NULL;
10183 __pyx_L4_argument_unpacking_done:;
10184 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 135, __pyx_L1_error)
10185 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 135, __pyx_L1_error)
10186 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 135, __pyx_L1_error)
10187 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 135, __pyx_L1_error)
10188 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 135, __pyx_L1_error)
10189 __pyx_r = __pyx_pf_20canalyticalSolutions_42LinearADR_Sine_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
10190
10191 /* function exit code */
10192 goto __pyx_L0;
10193 __pyx_L1_error:;
10194 __pyx_r = NULL;
10195 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10196 Py_XDECREF(values[__pyx_temp]);
10197 }
10198 goto __pyx_L7_cleaned_up;
10199 __pyx_L0:;
10200 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10201 Py_XDECREF(values[__pyx_temp]);
10202 }
10203 __pyx_L7_cleaned_up:;
10204
10205 __Pyx_RefNannyFinishContext();
10206 return __pyx_r;
10207}
10208
10209static PyObject *__pyx_pf_20canalyticalSolutions_42LinearADR_Sine_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
10210 PyObject *__pyx_r = NULL;
10211 __Pyx_RefNannyDeclarations
10212 npy_intp __pyx_t_1;
10213 npy_intp __pyx_t_2;
10214 PyObject *__pyx_t_3 = NULL;
10215 int __pyx_lineno = 0;
10216 const char *__pyx_filename = NULL;
10217 int __pyx_clineno = 0;
10218 __Pyx_RefNannySetupContext("LinearADR_Sine_r", 0);
10219
10220 /* "canalyticalSolutions.pyx":136
10221 *
10222 * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
10223 * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
10224 *
10225 *
10226*/
10227 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
10228
10229 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
10230
10231 if (unlikely(__pyx_t_2 == 0)) {
10232 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
10233 __PYX_ERR(0, 136, __pyx_L1_error)
10234 }
10235 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
10236 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
10237 __PYX_ERR(0, 136, __pyx_L1_error)
10238 }
10239 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
10240 __Pyx_GOTREF(__pyx_t_3);
10241
10242
10243 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 136, __pyx_L1_error)
10244 {
10245 PyObject *__pyx_temp;
10246 {
10247 __pyx_temp = __pyx_r;
10248 __pyx_r = ((PyObject*)__pyx_t_3);
10249 }
10250 __Pyx_XDECREF(__pyx_temp);
10251 }
10252 __pyx_t_3 = 0;
10253 goto __pyx_L0;
10254
10255 /* "canalyticalSolutions.pyx":135
10256 *
10257 *
10258 * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10259 * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10260 *
10261*/
10262
10263 /* function exit code */
10264 __pyx_L1_error:;
10265 __Pyx_XDECREF(__pyx_t_3);
10266 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
10267 __pyx_r = NULL;
10268 __pyx_L0:;
10269 __Pyx_XGIVEREF(__pyx_r);
10270 __Pyx_RefNannyFinishContext();
10271 return __pyx_r;
10272}
10273
10274/* "canalyticalSolutions.pyx":139
10275 *
10276 *
10277 * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10278 * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10279 *
10280*/
10281
10282/* Python wrapper */
10283static PyObject *__pyx_pw_20canalyticalSolutions_45LinearADR_Sine_totalVelocity(PyObject *__pyx_self,
10284#if CYTHON_VECTORCALL
10285PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10286#else
10287PyObject *__pyx_args, PyObject *__pyx_kwds
10288#endif
10289); /*proto*/
10290static PyMethodDef __pyx_mdef_20canalyticalSolutions_45LinearADR_Sine_totalVelocity = {"LinearADR_Sine_totalVelocity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_45LinearADR_Sine_totalVelocity, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
10291static PyObject *__pyx_pw_20canalyticalSolutions_45LinearADR_Sine_totalVelocity(PyObject *__pyx_self,
10292#if CYTHON_VECTORCALL
10293PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10294#else
10295PyObject *__pyx_args, PyObject *__pyx_kwds
10296#endif
10297) {
10298 PyArrayObject *__pyx_v_iwork = 0;
10299 PyArrayObject *__pyx_v_rwork = 0;
10300 double __pyx_v_t;
10301 PyArrayObject *__pyx_v_x = 0;
10302 PyArrayObject *__pyx_v_u = 0;
10303 #if !CYTHON_VECTORCALL
10304 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10305 #endif
10306 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10307 PyObject* values[5] = {0,0,0,0,0};
10308 int __pyx_lineno = 0;
10309 const char *__pyx_filename = NULL;
10310 int __pyx_clineno = 0;
10311 PyObject *__pyx_r = 0;
10312 __Pyx_RefNannyDeclarations
10313 __Pyx_RefNannySetupContext("LinearADR_Sine_totalVelocity (wrapper)", 0);
10314 #if !CYTHON_VECTORCALL
10315 #if CYTHON_ASSUME_SAFE_SIZE
10316 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10317 #else
10318 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10319 #endif
10320 #endif
10321 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10322 {
10323 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
10324 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
10325 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 139, __pyx_L3_error)
10326 if (__pyx_kwds_len > 0) {
10327 switch (__pyx_nargs) {
10328 case 5:
10329 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10330 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 139, __pyx_L3_error)
10331 CYTHON_FALLTHROUGH;
10332 case 4:
10333 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10334 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 139, __pyx_L3_error)
10335 CYTHON_FALLTHROUGH;
10336 case 3:
10337 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10338 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 139, __pyx_L3_error)
10339 CYTHON_FALLTHROUGH;
10340 case 2:
10341 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10342 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 139, __pyx_L3_error)
10343 CYTHON_FALLTHROUGH;
10344 case 1:
10345 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10346 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 139, __pyx_L3_error)
10347 CYTHON_FALLTHROUGH;
10348 case 0: break;
10349 default: goto __pyx_L5_argtuple_error;
10350 }
10351 const Py_ssize_t kwd_pos_args = __pyx_nargs;
10352 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "LinearADR_Sine_totalVelocity", 0) < (0)) __PYX_ERR(0, 139, __pyx_L3_error)
10353 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
10354 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, i); __PYX_ERR(0, 139, __pyx_L3_error) }
10355 }
10356 } else if (unlikely(__pyx_nargs != 5)) {
10357 goto __pyx_L5_argtuple_error;
10358 } else {
10359 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10360 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 139, __pyx_L3_error)
10361 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10362 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 139, __pyx_L3_error)
10363 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10364 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 139, __pyx_L3_error)
10365 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10366 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 139, __pyx_L3_error)
10367 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10368 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 139, __pyx_L3_error)
10369 }
10370 __pyx_v_iwork = ((PyArrayObject *)values[0]);
10371 __pyx_v_rwork = ((PyArrayObject *)values[1]);
10372 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 139, __pyx_L3_error)
10373 __pyx_v_x = ((PyArrayObject *)values[3]);
10374 __pyx_v_u = ((PyArrayObject *)values[4]);
10375 }
10376 goto __pyx_L6_skip;
10377 __pyx_L5_argtuple_error:;
10378 __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 139, __pyx_L3_error)
10379 __pyx_L6_skip:;
10380 goto __pyx_L4_argument_unpacking_done;
10381 __pyx_L3_error:;
10382 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10383 Py_XDECREF(values[__pyx_temp]);
10384 }
10385 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
10386 __Pyx_RefNannyFinishContext();
10387 return NULL;
10388 __pyx_L4_argument_unpacking_done:;
10389 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 139, __pyx_L1_error)
10390 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 139, __pyx_L1_error)
10391 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 139, __pyx_L1_error)
10392 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 139, __pyx_L1_error)
10393 __pyx_r = __pyx_pf_20canalyticalSolutions_44LinearADR_Sine_totalVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
10394
10395 /* function exit code */
10396 goto __pyx_L0;
10397 __pyx_L1_error:;
10398 __pyx_r = NULL;
10399 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10400 Py_XDECREF(values[__pyx_temp]);
10401 }
10402 goto __pyx_L7_cleaned_up;
10403 __pyx_L0:;
10404 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10405 Py_XDECREF(values[__pyx_temp]);
10406 }
10407 __pyx_L7_cleaned_up:;
10408
10409 __Pyx_RefNannyFinishContext();
10410 return __pyx_r;
10411}
10412
10413static PyObject *__pyx_pf_20canalyticalSolutions_44LinearADR_Sine_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
10414 PyObject *__pyx_r = NULL;
10415 __Pyx_RefNannyDeclarations
10416 npy_intp __pyx_t_1;
10417 npy_intp __pyx_t_2;
10418 PyObject *__pyx_t_3 = NULL;
10419 int __pyx_lineno = 0;
10420 const char *__pyx_filename = NULL;
10421 int __pyx_clineno = 0;
10422 __Pyx_RefNannySetupContext("LinearADR_Sine_totalVelocity", 0);
10423
10424 /* "canalyticalSolutions.pyx":140
10425 *
10426 * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
10427 * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
10428 *
10429 *
10430*/
10431 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
10432
10433 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
10434
10435 if (unlikely(__pyx_t_2 == 0)) {
10436 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
10437 __PYX_ERR(0, 140, __pyx_L1_error)
10438 }
10439 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
10440 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
10441 __PYX_ERR(0, 140, __pyx_L1_error)
10442 }
10443 __pyx_t_3 = __Pyx_PyLong_From_int(LinearADR_Sine_totalVelocity(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error)
10444 __Pyx_GOTREF(__pyx_t_3);
10445
10446
10447 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 140, __pyx_L1_error)
10448 {
10449 PyObject *__pyx_temp;
10450 {
10451 __pyx_temp = __pyx_r;
10452 __pyx_r = ((PyObject*)__pyx_t_3);
10453 }
10454 __Pyx_XDECREF(__pyx_temp);
10455 }
10456 __pyx_t_3 = 0;
10457 goto __pyx_L0;
10458
10459 /* "canalyticalSolutions.pyx":139
10460 *
10461 *
10462 * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10463 * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10464 *
10465*/
10466
10467 /* function exit code */
10468 __pyx_L1_error:;
10469 __Pyx_XDECREF(__pyx_t_3);
10470 __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
10471 __pyx_r = NULL;
10472 __pyx_L0:;
10473 __Pyx_XGIVEREF(__pyx_r);
10474 __Pyx_RefNannyFinishContext();
10475 return __pyx_r;
10476}
10477
10478/* "canalyticalSolutions.pyx":143
10479 *
10480 *
10481 * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10482 * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10483 *
10484*/
10485
10486/* Python wrapper */
10487static PyObject *__pyx_pw_20canalyticalSolutions_47NonlinearAD_SteadyState(PyObject *__pyx_self,
10488#if CYTHON_VECTORCALL
10489PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10490#else
10491PyObject *__pyx_args, PyObject *__pyx_kwds
10492#endif
10493); /*proto*/
10494static PyMethodDef __pyx_mdef_20canalyticalSolutions_47NonlinearAD_SteadyState = {"NonlinearAD_SteadyState", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_47NonlinearAD_SteadyState, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
10495static PyObject *__pyx_pw_20canalyticalSolutions_47NonlinearAD_SteadyState(PyObject *__pyx_self,
10496#if CYTHON_VECTORCALL
10497PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10498#else
10499PyObject *__pyx_args, PyObject *__pyx_kwds
10500#endif
10501) {
10502 PyArrayObject *__pyx_v_iwork = 0;
10503 PyArrayObject *__pyx_v_rwork = 0;
10504 double __pyx_v_t;
10505 PyArrayObject *__pyx_v_x = 0;
10506 PyArrayObject *__pyx_v_u = 0;
10507 #if !CYTHON_VECTORCALL
10508 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10509 #endif
10510 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10511 PyObject* values[5] = {0,0,0,0,0};
10512 int __pyx_lineno = 0;
10513 const char *__pyx_filename = NULL;
10514 int __pyx_clineno = 0;
10515 PyObject *__pyx_r = 0;
10516 __Pyx_RefNannyDeclarations
10517 __Pyx_RefNannySetupContext("NonlinearAD_SteadyState (wrapper)", 0);
10518 #if !CYTHON_VECTORCALL
10519 #if CYTHON_ASSUME_SAFE_SIZE
10520 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10521 #else
10522 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10523 #endif
10524 #endif
10525 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10526 {
10527 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
10528 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
10529 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 143, __pyx_L3_error)
10530 if (__pyx_kwds_len > 0) {
10531 switch (__pyx_nargs) {
10532 case 5:
10533 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10534 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 143, __pyx_L3_error)
10535 CYTHON_FALLTHROUGH;
10536 case 4:
10537 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10538 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 143, __pyx_L3_error)
10539 CYTHON_FALLTHROUGH;
10540 case 3:
10541 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10542 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 143, __pyx_L3_error)
10543 CYTHON_FALLTHROUGH;
10544 case 2:
10545 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10546 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 143, __pyx_L3_error)
10547 CYTHON_FALLTHROUGH;
10548 case 1:
10549 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10550 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 143, __pyx_L3_error)
10551 CYTHON_FALLTHROUGH;
10552 case 0: break;
10553 default: goto __pyx_L5_argtuple_error;
10554 }
10555 const Py_ssize_t kwd_pos_args = __pyx_nargs;
10556 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "NonlinearAD_SteadyState", 0) < (0)) __PYX_ERR(0, 143, __pyx_L3_error)
10557 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
10558 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, i); __PYX_ERR(0, 143, __pyx_L3_error) }
10559 }
10560 } else if (unlikely(__pyx_nargs != 5)) {
10561 goto __pyx_L5_argtuple_error;
10562 } else {
10563 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10564 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 143, __pyx_L3_error)
10565 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10566 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 143, __pyx_L3_error)
10567 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10568 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 143, __pyx_L3_error)
10569 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10570 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 143, __pyx_L3_error)
10571 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10572 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 143, __pyx_L3_error)
10573 }
10574 __pyx_v_iwork = ((PyArrayObject *)values[0]);
10575 __pyx_v_rwork = ((PyArrayObject *)values[1]);
10576 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 143, __pyx_L3_error)
10577 __pyx_v_x = ((PyArrayObject *)values[3]);
10578 __pyx_v_u = ((PyArrayObject *)values[4]);
10579 }
10580 goto __pyx_L6_skip;
10581 __pyx_L5_argtuple_error:;
10582 __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 143, __pyx_L3_error)
10583 __pyx_L6_skip:;
10584 goto __pyx_L4_argument_unpacking_done;
10585 __pyx_L3_error:;
10586 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10587 Py_XDECREF(values[__pyx_temp]);
10588 }
10589 __Pyx_AddTraceback("canalyticalSolutions.NonlinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
10590 __Pyx_RefNannyFinishContext();
10591 return NULL;
10592 __pyx_L4_argument_unpacking_done:;
10593 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 143, __pyx_L1_error)
10594 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 143, __pyx_L1_error)
10595 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 143, __pyx_L1_error)
10596 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 143, __pyx_L1_error)
10597 __pyx_r = __pyx_pf_20canalyticalSolutions_46NonlinearAD_SteadyState(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
10598
10599 /* function exit code */
10600 goto __pyx_L0;
10601 __pyx_L1_error:;
10602 __pyx_r = NULL;
10603 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10604 Py_XDECREF(values[__pyx_temp]);
10605 }
10606 goto __pyx_L7_cleaned_up;
10607 __pyx_L0:;
10608 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10609 Py_XDECREF(values[__pyx_temp]);
10610 }
10611 __pyx_L7_cleaned_up:;
10612
10613 __Pyx_RefNannyFinishContext();
10614 return __pyx_r;
10615}
10616
10617static PyObject *__pyx_pf_20canalyticalSolutions_46NonlinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
10618 PyObject *__pyx_r = NULL;
10619 __Pyx_RefNannyDeclarations
10620 npy_intp __pyx_t_1;
10621 npy_intp __pyx_t_2;
10622 PyObject *__pyx_t_3 = NULL;
10623 int __pyx_lineno = 0;
10624 const char *__pyx_filename = NULL;
10625 int __pyx_clineno = 0;
10626 __Pyx_RefNannySetupContext("NonlinearAD_SteadyState", 0);
10627
10628 /* "canalyticalSolutions.pyx":144
10629 *
10630 * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
10631 * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
10632 *
10633 *
10634*/
10635 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
10636
10637 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
10638
10639 if (unlikely(__pyx_t_2 == 0)) {
10640 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
10641 __PYX_ERR(0, 144, __pyx_L1_error)
10642 }
10643 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
10644 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
10645 __PYX_ERR(0, 144, __pyx_L1_error)
10646 }
10647 __pyx_t_3 = __Pyx_PyLong_From_int(NonlinearAD_SteadyState(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
10648 __Pyx_GOTREF(__pyx_t_3);
10649
10650
10651 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 144, __pyx_L1_error)
10652 {
10653 PyObject *__pyx_temp;
10654 {
10655 __pyx_temp = __pyx_r;
10656 __pyx_r = ((PyObject*)__pyx_t_3);
10657 }
10658 __Pyx_XDECREF(__pyx_temp);
10659 }
10660 __pyx_t_3 = 0;
10661 goto __pyx_L0;
10662
10663 /* "canalyticalSolutions.pyx":143
10664 *
10665 *
10666 * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10667 * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10668 *
10669*/
10670
10671 /* function exit code */
10672 __pyx_L1_error:;
10673 __Pyx_XDECREF(__pyx_t_3);
10674 __Pyx_AddTraceback("canalyticalSolutions.NonlinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
10675 __pyx_r = NULL;
10676 __pyx_L0:;
10677 __Pyx_XGIVEREF(__pyx_r);
10678 __Pyx_RefNannyFinishContext();
10679 return __pyx_r;
10680}
10681
10682/* "canalyticalSolutions.pyx":147
10683 *
10684 *
10685 * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10686 * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10687 *
10688*/
10689
10690/* Python wrapper */
10691static PyObject *__pyx_pw_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC(PyObject *__pyx_self,
10692#if CYTHON_VECTORCALL
10693PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10694#else
10695PyObject *__pyx_args, PyObject *__pyx_kwds
10696#endif
10697); /*proto*/
10698static PyMethodDef __pyx_mdef_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC = {"NonlinearADR_Decay_DiracIC", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
10699static PyObject *__pyx_pw_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC(PyObject *__pyx_self,
10700#if CYTHON_VECTORCALL
10701PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10702#else
10703PyObject *__pyx_args, PyObject *__pyx_kwds
10704#endif
10705) {
10706 PyArrayObject *__pyx_v_iwork = 0;
10707 PyArrayObject *__pyx_v_rwork = 0;
10708 double __pyx_v_t;
10709 PyArrayObject *__pyx_v_x = 0;
10710 PyArrayObject *__pyx_v_u = 0;
10711 #if !CYTHON_VECTORCALL
10712 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10713 #endif
10714 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10715 PyObject* values[5] = {0,0,0,0,0};
10716 int __pyx_lineno = 0;
10717 const char *__pyx_filename = NULL;
10718 int __pyx_clineno = 0;
10719 PyObject *__pyx_r = 0;
10720 __Pyx_RefNannyDeclarations
10721 __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC (wrapper)", 0);
10722 #if !CYTHON_VECTORCALL
10723 #if CYTHON_ASSUME_SAFE_SIZE
10724 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10725 #else
10726 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10727 #endif
10728 #endif
10729 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10730 {
10731 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
10732 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
10733 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 147, __pyx_L3_error)
10734 if (__pyx_kwds_len > 0) {
10735 switch (__pyx_nargs) {
10736 case 5:
10737 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10738 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 147, __pyx_L3_error)
10739 CYTHON_FALLTHROUGH;
10740 case 4:
10741 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10742 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 147, __pyx_L3_error)
10743 CYTHON_FALLTHROUGH;
10744 case 3:
10745 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10746 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 147, __pyx_L3_error)
10747 CYTHON_FALLTHROUGH;
10748 case 2:
10749 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10750 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 147, __pyx_L3_error)
10751 CYTHON_FALLTHROUGH;
10752 case 1:
10753 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10754 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 147, __pyx_L3_error)
10755 CYTHON_FALLTHROUGH;
10756 case 0: break;
10757 default: goto __pyx_L5_argtuple_error;
10758 }
10759 const Py_ssize_t kwd_pos_args = __pyx_nargs;
10760 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "NonlinearADR_Decay_DiracIC", 0) < (0)) __PYX_ERR(0, 147, __pyx_L3_error)
10761 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
10762 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, i); __PYX_ERR(0, 147, __pyx_L3_error) }
10763 }
10764 } else if (unlikely(__pyx_nargs != 5)) {
10765 goto __pyx_L5_argtuple_error;
10766 } else {
10767 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10768 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 147, __pyx_L3_error)
10769 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10770 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 147, __pyx_L3_error)
10771 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10772 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 147, __pyx_L3_error)
10773 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10774 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 147, __pyx_L3_error)
10775 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10776 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 147, __pyx_L3_error)
10777 }
10778 __pyx_v_iwork = ((PyArrayObject *)values[0]);
10779 __pyx_v_rwork = ((PyArrayObject *)values[1]);
10780 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L3_error)
10781 __pyx_v_x = ((PyArrayObject *)values[3]);
10782 __pyx_v_u = ((PyArrayObject *)values[4]);
10783 }
10784 goto __pyx_L6_skip;
10785 __pyx_L5_argtuple_error:;
10786 __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 147, __pyx_L3_error)
10787 __pyx_L6_skip:;
10788 goto __pyx_L4_argument_unpacking_done;
10789 __pyx_L3_error:;
10790 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10791 Py_XDECREF(values[__pyx_temp]);
10792 }
10793 __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
10794 __Pyx_RefNannyFinishContext();
10795 return NULL;
10796 __pyx_L4_argument_unpacking_done:;
10797 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 147, __pyx_L1_error)
10798 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 147, __pyx_L1_error)
10799 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 147, __pyx_L1_error)
10800 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 147, __pyx_L1_error)
10801 __pyx_r = __pyx_pf_20canalyticalSolutions_48NonlinearADR_Decay_DiracIC(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
10802
10803 /* function exit code */
10804 goto __pyx_L0;
10805 __pyx_L1_error:;
10806 __pyx_r = NULL;
10807 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10808 Py_XDECREF(values[__pyx_temp]);
10809 }
10810 goto __pyx_L7_cleaned_up;
10811 __pyx_L0:;
10812 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10813 Py_XDECREF(values[__pyx_temp]);
10814 }
10815 __pyx_L7_cleaned_up:;
10816
10817 __Pyx_RefNannyFinishContext();
10818 return __pyx_r;
10819}
10820
10821static PyObject *__pyx_pf_20canalyticalSolutions_48NonlinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
10822 PyObject *__pyx_r = NULL;
10823 __Pyx_RefNannyDeclarations
10824 npy_intp __pyx_t_1;
10825 npy_intp __pyx_t_2;
10826 PyObject *__pyx_t_3 = NULL;
10827 int __pyx_lineno = 0;
10828 const char *__pyx_filename = NULL;
10829 int __pyx_clineno = 0;
10830 __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC", 0);
10831
10832 /* "canalyticalSolutions.pyx":148
10833 *
10834 * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
10835 * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
10836 *
10837 *
10838*/
10839 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
10840
10841 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
10842
10843 if (unlikely(__pyx_t_2 == 0)) {
10844 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
10845 __PYX_ERR(0, 148, __pyx_L1_error)
10846 }
10847 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
10848 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
10849 __PYX_ERR(0, 148, __pyx_L1_error)
10850 }
10851 __pyx_t_3 = __Pyx_PyLong_From_int(NonlinearADR_Decay_DiracIC(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
10852 __Pyx_GOTREF(__pyx_t_3);
10853
10854
10855 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 148, __pyx_L1_error)
10856 {
10857 PyObject *__pyx_temp;
10858 {
10859 __pyx_temp = __pyx_r;
10860 __pyx_r = ((PyObject*)__pyx_t_3);
10861 }
10862 __Pyx_XDECREF(__pyx_temp);
10863 }
10864 __pyx_t_3 = 0;
10865 goto __pyx_L0;
10866
10867 /* "canalyticalSolutions.pyx":147
10868 *
10869 *
10870 * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10871 * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10872 *
10873*/
10874
10875 /* function exit code */
10876 __pyx_L1_error:;
10877 __Pyx_XDECREF(__pyx_t_3);
10878 __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
10879 __pyx_r = NULL;
10880 __pyx_L0:;
10881 __Pyx_XGIVEREF(__pyx_r);
10882 __Pyx_RefNannyFinishContext();
10883 return __pyx_r;
10884}
10885
10886/* "canalyticalSolutions.pyx":151
10887 *
10888 *
10889 * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
10890 * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
10891 *
10892*/
10893
10894/* Python wrapper */
10895static PyObject *__pyx_pw_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr(PyObject *__pyx_self,
10896#if CYTHON_VECTORCALL
10897PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10898#else
10899PyObject *__pyx_args, PyObject *__pyx_kwds
10900#endif
10901); /*proto*/
10902static PyMethodDef __pyx_mdef_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr = {"NonlinearADR_Decay_DiracIC_dr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
10903static PyObject *__pyx_pw_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr(PyObject *__pyx_self,
10904#if CYTHON_VECTORCALL
10905PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10906#else
10907PyObject *__pyx_args, PyObject *__pyx_kwds
10908#endif
10909) {
10910 PyArrayObject *__pyx_v_iwork = 0;
10911 PyArrayObject *__pyx_v_rwork = 0;
10912 double __pyx_v_t;
10913 PyArrayObject *__pyx_v_x = 0;
10914 PyArrayObject *__pyx_v_u = 0;
10915 PyArrayObject *__pyx_v_dr = 0;
10916 #if !CYTHON_VECTORCALL
10917 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10918 #endif
10919 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10920 PyObject* values[6] = {0,0,0,0,0,0};
10921 int __pyx_lineno = 0;
10922 const char *__pyx_filename = NULL;
10923 int __pyx_clineno = 0;
10924 PyObject *__pyx_r = 0;
10925 __Pyx_RefNannyDeclarations
10926 __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_dr (wrapper)", 0);
10927 #if !CYTHON_VECTORCALL
10928 #if CYTHON_ASSUME_SAFE_SIZE
10929 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10930 #else
10931 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10932 #endif
10933 #endif
10934 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10935 {
10936 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_dr,0};
10937 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
10938 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 151, __pyx_L3_error)
10939 if (__pyx_kwds_len > 0) {
10940 switch (__pyx_nargs) {
10941 case 6:
10942 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
10943 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 151, __pyx_L3_error)
10944 CYTHON_FALLTHROUGH;
10945 case 5:
10946 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10947 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 151, __pyx_L3_error)
10948 CYTHON_FALLTHROUGH;
10949 case 4:
10950 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10951 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 151, __pyx_L3_error)
10952 CYTHON_FALLTHROUGH;
10953 case 3:
10954 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10955 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 151, __pyx_L3_error)
10956 CYTHON_FALLTHROUGH;
10957 case 2:
10958 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10959 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 151, __pyx_L3_error)
10960 CYTHON_FALLTHROUGH;
10961 case 1:
10962 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10963 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 151, __pyx_L3_error)
10964 CYTHON_FALLTHROUGH;
10965 case 0: break;
10966 default: goto __pyx_L5_argtuple_error;
10967 }
10968 const Py_ssize_t kwd_pos_args = __pyx_nargs;
10969 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "NonlinearADR_Decay_DiracIC_dr", 0) < (0)) __PYX_ERR(0, 151, __pyx_L3_error)
10970 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
10971 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, i); __PYX_ERR(0, 151, __pyx_L3_error) }
10972 }
10973 } else if (unlikely(__pyx_nargs != 6)) {
10974 goto __pyx_L5_argtuple_error;
10975 } else {
10976 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
10977 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 151, __pyx_L3_error)
10978 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
10979 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 151, __pyx_L3_error)
10980 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
10981 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 151, __pyx_L3_error)
10982 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
10983 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 151, __pyx_L3_error)
10984 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
10985 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 151, __pyx_L3_error)
10986 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
10987 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 151, __pyx_L3_error)
10988 }
10989 __pyx_v_iwork = ((PyArrayObject *)values[0]);
10990 __pyx_v_rwork = ((PyArrayObject *)values[1]);
10991 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 151, __pyx_L3_error)
10992 __pyx_v_x = ((PyArrayObject *)values[3]);
10993 __pyx_v_u = ((PyArrayObject *)values[4]);
10994 __pyx_v_dr = ((PyArrayObject *)values[5]);
10995 }
10996 goto __pyx_L6_skip;
10997 __pyx_L5_argtuple_error:;
10998 __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 151, __pyx_L3_error)
10999 __pyx_L6_skip:;
11000 goto __pyx_L4_argument_unpacking_done;
11001 __pyx_L3_error:;
11002 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11003 Py_XDECREF(values[__pyx_temp]);
11004 }
11005 __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
11006 __Pyx_RefNannyFinishContext();
11007 return NULL;
11008 __pyx_L4_argument_unpacking_done:;
11009 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 151, __pyx_L1_error)
11010 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 151, __pyx_L1_error)
11011 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 151, __pyx_L1_error)
11012 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 151, __pyx_L1_error)
11013 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 151, __pyx_L1_error)
11014 __pyx_r = __pyx_pf_20canalyticalSolutions_50NonlinearADR_Decay_DiracIC_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
11015
11016 /* function exit code */
11017 goto __pyx_L0;
11018 __pyx_L1_error:;
11019 __pyx_r = NULL;
11020 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11021 Py_XDECREF(values[__pyx_temp]);
11022 }
11023 goto __pyx_L7_cleaned_up;
11024 __pyx_L0:;
11025 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11026 Py_XDECREF(values[__pyx_temp]);
11027 }
11028 __pyx_L7_cleaned_up:;
11029
11030 __Pyx_RefNannyFinishContext();
11031 return __pyx_r;
11032}
11033
11034static PyObject *__pyx_pf_20canalyticalSolutions_50NonlinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
11035 PyObject *__pyx_r = NULL;
11036 __Pyx_RefNannyDeclarations
11037 npy_intp __pyx_t_1;
11038 npy_intp __pyx_t_2;
11039 PyObject *__pyx_t_3 = NULL;
11040 int __pyx_lineno = 0;
11041 const char *__pyx_filename = NULL;
11042 int __pyx_clineno = 0;
11043 __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_dr", 0);
11044
11045 /* "canalyticalSolutions.pyx":152
11046 *
11047 * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
11048 * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
11049 *
11050 *
11051*/
11052 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
11053
11054 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
11055
11056 if (unlikely(__pyx_t_2 == 0)) {
11057 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
11058 __PYX_ERR(0, 152, __pyx_L1_error)
11059 }
11060 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
11061 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
11062 __PYX_ERR(0, 152, __pyx_L1_error)
11063 }
11064 __pyx_t_3 = __Pyx_PyLong_From_int(NonlinearADR_Decay_DiracIC_dr(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_dr)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error)
11065 __Pyx_GOTREF(__pyx_t_3);
11066
11067
11068 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 152, __pyx_L1_error)
11069 {
11070 PyObject *__pyx_temp;
11071 {
11072 __pyx_temp = __pyx_r;
11073 __pyx_r = ((PyObject*)__pyx_t_3);
11074 }
11075 __Pyx_XDECREF(__pyx_temp);
11076 }
11077 __pyx_t_3 = 0;
11078 goto __pyx_L0;
11079
11080 /* "canalyticalSolutions.pyx":151
11081 *
11082 *
11083 * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
11084 * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
11085 *
11086*/
11087
11088 /* function exit code */
11089 __pyx_L1_error:;
11090 __Pyx_XDECREF(__pyx_t_3);
11091 __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
11092 __pyx_r = NULL;
11093 __pyx_L0:;
11094 __Pyx_XGIVEREF(__pyx_r);
11095 __Pyx_RefNannyFinishContext();
11096 return __pyx_r;
11097}
11098
11099/* "canalyticalSolutions.pyx":155
11100 *
11101 *
11102 * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11103 * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11104 *
11105*/
11106
11107/* Python wrapper */
11108static PyObject *__pyx_pw_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r(PyObject *__pyx_self,
11109#if CYTHON_VECTORCALL
11110PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11111#else
11112PyObject *__pyx_args, PyObject *__pyx_kwds
11113#endif
11114); /*proto*/
11115static PyMethodDef __pyx_mdef_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r = {"NonlinearADR_Decay_DiracIC_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
11116static PyObject *__pyx_pw_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r(PyObject *__pyx_self,
11117#if CYTHON_VECTORCALL
11118PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11119#else
11120PyObject *__pyx_args, PyObject *__pyx_kwds
11121#endif
11122) {
11123 PyArrayObject *__pyx_v_iwork = 0;
11124 PyArrayObject *__pyx_v_rwork = 0;
11125 double __pyx_v_t;
11126 PyArrayObject *__pyx_v_x = 0;
11127 PyArrayObject *__pyx_v_u = 0;
11128 PyArrayObject *__pyx_v_r = 0;
11129 #if !CYTHON_VECTORCALL
11130 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
11131 #endif
11132 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11133 PyObject* values[6] = {0,0,0,0,0,0};
11134 int __pyx_lineno = 0;
11135 const char *__pyx_filename = NULL;
11136 int __pyx_clineno = 0;
11137 PyObject *__pyx_r = 0;
11138 __Pyx_RefNannyDeclarations
11139 __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_r (wrapper)", 0);
11140 #if !CYTHON_VECTORCALL
11141 #if CYTHON_ASSUME_SAFE_SIZE
11142 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
11143 #else
11144 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
11145 #endif
11146 #endif
11147 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
11148 {
11149 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
11150 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
11151 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 155, __pyx_L3_error)
11152 if (__pyx_kwds_len > 0) {
11153 switch (__pyx_nargs) {
11154 case 6:
11155 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
11156 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 155, __pyx_L3_error)
11157 CYTHON_FALLTHROUGH;
11158 case 5:
11159 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11160 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 155, __pyx_L3_error)
11161 CYTHON_FALLTHROUGH;
11162 case 4:
11163 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11164 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 155, __pyx_L3_error)
11165 CYTHON_FALLTHROUGH;
11166 case 3:
11167 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11168 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 155, __pyx_L3_error)
11169 CYTHON_FALLTHROUGH;
11170 case 2:
11171 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11172 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 155, __pyx_L3_error)
11173 CYTHON_FALLTHROUGH;
11174 case 1:
11175 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11176 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 155, __pyx_L3_error)
11177 CYTHON_FALLTHROUGH;
11178 case 0: break;
11179 default: goto __pyx_L5_argtuple_error;
11180 }
11181 const Py_ssize_t kwd_pos_args = __pyx_nargs;
11182 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "NonlinearADR_Decay_DiracIC_r", 0) < (0)) __PYX_ERR(0, 155, __pyx_L3_error)
11183 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
11184 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, i); __PYX_ERR(0, 155, __pyx_L3_error) }
11185 }
11186 } else if (unlikely(__pyx_nargs != 6)) {
11187 goto __pyx_L5_argtuple_error;
11188 } else {
11189 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11190 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 155, __pyx_L3_error)
11191 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11192 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 155, __pyx_L3_error)
11193 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11194 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 155, __pyx_L3_error)
11195 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11196 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 155, __pyx_L3_error)
11197 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11198 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 155, __pyx_L3_error)
11199 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
11200 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 155, __pyx_L3_error)
11201 }
11202 __pyx_v_iwork = ((PyArrayObject *)values[0]);
11203 __pyx_v_rwork = ((PyArrayObject *)values[1]);
11204 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L3_error)
11205 __pyx_v_x = ((PyArrayObject *)values[3]);
11206 __pyx_v_u = ((PyArrayObject *)values[4]);
11207 __pyx_v_r = ((PyArrayObject *)values[5]);
11208 }
11209 goto __pyx_L6_skip;
11210 __pyx_L5_argtuple_error:;
11211 __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 155, __pyx_L3_error)
11212 __pyx_L6_skip:;
11213 goto __pyx_L4_argument_unpacking_done;
11214 __pyx_L3_error:;
11215 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11216 Py_XDECREF(values[__pyx_temp]);
11217 }
11218 __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
11219 __Pyx_RefNannyFinishContext();
11220 return NULL;
11221 __pyx_L4_argument_unpacking_done:;
11222 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 155, __pyx_L1_error)
11223 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 155, __pyx_L1_error)
11224 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 155, __pyx_L1_error)
11225 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 155, __pyx_L1_error)
11226 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 155, __pyx_L1_error)
11227 __pyx_r = __pyx_pf_20canalyticalSolutions_52NonlinearADR_Decay_DiracIC_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
11228
11229 /* function exit code */
11230 goto __pyx_L0;
11231 __pyx_L1_error:;
11232 __pyx_r = NULL;
11233 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11234 Py_XDECREF(values[__pyx_temp]);
11235 }
11236 goto __pyx_L7_cleaned_up;
11237 __pyx_L0:;
11238 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11239 Py_XDECREF(values[__pyx_temp]);
11240 }
11241 __pyx_L7_cleaned_up:;
11242
11243 __Pyx_RefNannyFinishContext();
11244 return __pyx_r;
11245}
11246
11247static PyObject *__pyx_pf_20canalyticalSolutions_52NonlinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
11248 PyObject *__pyx_r = NULL;
11249 __Pyx_RefNannyDeclarations
11250 npy_intp __pyx_t_1;
11251 npy_intp __pyx_t_2;
11252 PyObject *__pyx_t_3 = NULL;
11253 int __pyx_lineno = 0;
11254 const char *__pyx_filename = NULL;
11255 int __pyx_clineno = 0;
11256 __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_r", 0);
11257
11258 /* "canalyticalSolutions.pyx":156
11259 *
11260 * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
11261 * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
11262 *
11263 *
11264*/
11265 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
11266
11267 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
11268
11269 if (unlikely(__pyx_t_2 == 0)) {
11270 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
11271 __PYX_ERR(0, 156, __pyx_L1_error)
11272 }
11273 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
11274 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
11275 __PYX_ERR(0, 156, __pyx_L1_error)
11276 }
11277 __pyx_t_3 = __Pyx_PyLong_From_int(NonlinearADR_Decay_DiracIC_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
11278 __Pyx_GOTREF(__pyx_t_3);
11279
11280
11281 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 156, __pyx_L1_error)
11282 {
11283 PyObject *__pyx_temp;
11284 {
11285 __pyx_temp = __pyx_r;
11286 __pyx_r = ((PyObject*)__pyx_t_3);
11287 }
11288 __Pyx_XDECREF(__pyx_temp);
11289 }
11290 __pyx_t_3 = 0;
11291 goto __pyx_L0;
11292
11293 /* "canalyticalSolutions.pyx":155
11294 *
11295 *
11296 * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11297 * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11298 *
11299*/
11300
11301 /* function exit code */
11302 __pyx_L1_error:;
11303 __Pyx_XDECREF(__pyx_t_3);
11304 __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
11305 __pyx_r = NULL;
11306 __pyx_L0:;
11307 __Pyx_XGIVEREF(__pyx_r);
11308 __Pyx_RefNannyFinishContext();
11309 return __pyx_r;
11310}
11311
11312/* "canalyticalSolutions.pyx":159
11313 *
11314 *
11315 * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11316 * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11317 *
11318*/
11319
11320/* Python wrapper */
11321static PyObject *__pyx_pw_20canalyticalSolutions_55NonlinearDAE(PyObject *__pyx_self,
11322#if CYTHON_VECTORCALL
11323PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11324#else
11325PyObject *__pyx_args, PyObject *__pyx_kwds
11326#endif
11327); /*proto*/
11328static PyMethodDef __pyx_mdef_20canalyticalSolutions_55NonlinearDAE = {"NonlinearDAE", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_55NonlinearDAE, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
11329static PyObject *__pyx_pw_20canalyticalSolutions_55NonlinearDAE(PyObject *__pyx_self,
11330#if CYTHON_VECTORCALL
11331PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11332#else
11333PyObject *__pyx_args, PyObject *__pyx_kwds
11334#endif
11335) {
11336 PyArrayObject *__pyx_v_iwork = 0;
11337 PyArrayObject *__pyx_v_rwork = 0;
11338 double __pyx_v_t;
11339 PyArrayObject *__pyx_v_x = 0;
11340 PyArrayObject *__pyx_v_u = 0;
11341 #if !CYTHON_VECTORCALL
11342 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
11343 #endif
11344 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11345 PyObject* values[5] = {0,0,0,0,0};
11346 int __pyx_lineno = 0;
11347 const char *__pyx_filename = NULL;
11348 int __pyx_clineno = 0;
11349 PyObject *__pyx_r = 0;
11350 __Pyx_RefNannyDeclarations
11351 __Pyx_RefNannySetupContext("NonlinearDAE (wrapper)", 0);
11352 #if !CYTHON_VECTORCALL
11353 #if CYTHON_ASSUME_SAFE_SIZE
11354 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
11355 #else
11356 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
11357 #endif
11358 #endif
11359 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
11360 {
11361 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
11362 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
11363 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 159, __pyx_L3_error)
11364 if (__pyx_kwds_len > 0) {
11365 switch (__pyx_nargs) {
11366 case 5:
11367 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11368 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 159, __pyx_L3_error)
11369 CYTHON_FALLTHROUGH;
11370 case 4:
11371 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11372 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 159, __pyx_L3_error)
11373 CYTHON_FALLTHROUGH;
11374 case 3:
11375 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11376 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 159, __pyx_L3_error)
11377 CYTHON_FALLTHROUGH;
11378 case 2:
11379 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11380 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 159, __pyx_L3_error)
11381 CYTHON_FALLTHROUGH;
11382 case 1:
11383 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11384 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 159, __pyx_L3_error)
11385 CYTHON_FALLTHROUGH;
11386 case 0: break;
11387 default: goto __pyx_L5_argtuple_error;
11388 }
11389 const Py_ssize_t kwd_pos_args = __pyx_nargs;
11390 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "NonlinearDAE", 0) < (0)) __PYX_ERR(0, 159, __pyx_L3_error)
11391 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
11392 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, i); __PYX_ERR(0, 159, __pyx_L3_error) }
11393 }
11394 } else if (unlikely(__pyx_nargs != 5)) {
11395 goto __pyx_L5_argtuple_error;
11396 } else {
11397 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11398 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 159, __pyx_L3_error)
11399 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11400 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 159, __pyx_L3_error)
11401 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11402 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 159, __pyx_L3_error)
11403 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11404 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 159, __pyx_L3_error)
11405 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11406 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 159, __pyx_L3_error)
11407 }
11408 __pyx_v_iwork = ((PyArrayObject *)values[0]);
11409 __pyx_v_rwork = ((PyArrayObject *)values[1]);
11410 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L3_error)
11411 __pyx_v_x = ((PyArrayObject *)values[3]);
11412 __pyx_v_u = ((PyArrayObject *)values[4]);
11413 }
11414 goto __pyx_L6_skip;
11415 __pyx_L5_argtuple_error:;
11416 __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 159, __pyx_L3_error)
11417 __pyx_L6_skip:;
11418 goto __pyx_L4_argument_unpacking_done;
11419 __pyx_L3_error:;
11420 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11421 Py_XDECREF(values[__pyx_temp]);
11422 }
11423 __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE", __pyx_clineno, __pyx_lineno, __pyx_filename);
11424 __Pyx_RefNannyFinishContext();
11425 return NULL;
11426 __pyx_L4_argument_unpacking_done:;
11427 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 159, __pyx_L1_error)
11428 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 159, __pyx_L1_error)
11429 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 159, __pyx_L1_error)
11430 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 159, __pyx_L1_error)
11431 __pyx_r = __pyx_pf_20canalyticalSolutions_54NonlinearDAE(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
11432
11433 /* function exit code */
11434 goto __pyx_L0;
11435 __pyx_L1_error:;
11436 __pyx_r = NULL;
11437 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11438 Py_XDECREF(values[__pyx_temp]);
11439 }
11440 goto __pyx_L7_cleaned_up;
11441 __pyx_L0:;
11442 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11443 Py_XDECREF(values[__pyx_temp]);
11444 }
11445 __pyx_L7_cleaned_up:;
11446
11447 __Pyx_RefNannyFinishContext();
11448 return __pyx_r;
11449}
11450
11451static PyObject *__pyx_pf_20canalyticalSolutions_54NonlinearDAE(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
11452 PyObject *__pyx_r = NULL;
11453 __Pyx_RefNannyDeclarations
11454 npy_intp __pyx_t_1;
11455 npy_intp __pyx_t_2;
11456 PyObject *__pyx_t_3 = NULL;
11457 int __pyx_lineno = 0;
11458 const char *__pyx_filename = NULL;
11459 int __pyx_clineno = 0;
11460 __Pyx_RefNannySetupContext("NonlinearDAE", 0);
11461
11462 /* "canalyticalSolutions.pyx":160
11463 *
11464 * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
11465 * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
11466 *
11467 *
11468*/
11469 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
11470
11471 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
11472
11473 if (unlikely(__pyx_t_2 == 0)) {
11474 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
11475 __PYX_ERR(0, 160, __pyx_L1_error)
11476 }
11477 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
11478 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
11479 __PYX_ERR(0, 160, __pyx_L1_error)
11480 }
11481 __pyx_t_3 = __Pyx_PyLong_From_int(NonlinearDAE(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error)
11482 __Pyx_GOTREF(__pyx_t_3);
11483
11484
11485 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 160, __pyx_L1_error)
11486 {
11487 PyObject *__pyx_temp;
11488 {
11489 __pyx_temp = __pyx_r;
11490 __pyx_r = ((PyObject*)__pyx_t_3);
11491 }
11492 __Pyx_XDECREF(__pyx_temp);
11493 }
11494 __pyx_t_3 = 0;
11495 goto __pyx_L0;
11496
11497 /* "canalyticalSolutions.pyx":159
11498 *
11499 *
11500 * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11501 * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11502 *
11503*/
11504
11505 /* function exit code */
11506 __pyx_L1_error:;
11507 __Pyx_XDECREF(__pyx_t_3);
11508 __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE", __pyx_clineno, __pyx_lineno, __pyx_filename);
11509 __pyx_r = NULL;
11510 __pyx_L0:;
11511 __Pyx_XGIVEREF(__pyx_r);
11512 __Pyx_RefNannyFinishContext();
11513 return __pyx_r;
11514}
11515
11516/* "canalyticalSolutions.pyx":163
11517 *
11518 *
11519 * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11520 * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11521 *
11522*/
11523
11524/* Python wrapper */
11525static PyObject *__pyx_pw_20canalyticalSolutions_57NonlinearDAE_f(PyObject *__pyx_self,
11526#if CYTHON_VECTORCALL
11527PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11528#else
11529PyObject *__pyx_args, PyObject *__pyx_kwds
11530#endif
11531); /*proto*/
11532static PyMethodDef __pyx_mdef_20canalyticalSolutions_57NonlinearDAE_f = {"NonlinearDAE_f", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_57NonlinearDAE_f, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
11533static PyObject *__pyx_pw_20canalyticalSolutions_57NonlinearDAE_f(PyObject *__pyx_self,
11534#if CYTHON_VECTORCALL
11535PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11536#else
11537PyObject *__pyx_args, PyObject *__pyx_kwds
11538#endif
11539) {
11540 PyArrayObject *__pyx_v_iwork = 0;
11541 PyArrayObject *__pyx_v_rwork = 0;
11542 double __pyx_v_t;
11543 PyArrayObject *__pyx_v_x = 0;
11544 PyArrayObject *__pyx_v_u = 0;
11545 #if !CYTHON_VECTORCALL
11546 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
11547 #endif
11548 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11549 PyObject* values[5] = {0,0,0,0,0};
11550 int __pyx_lineno = 0;
11551 const char *__pyx_filename = NULL;
11552 int __pyx_clineno = 0;
11553 PyObject *__pyx_r = 0;
11554 __Pyx_RefNannyDeclarations
11555 __Pyx_RefNannySetupContext("NonlinearDAE_f (wrapper)", 0);
11556 #if !CYTHON_VECTORCALL
11557 #if CYTHON_ASSUME_SAFE_SIZE
11558 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
11559 #else
11560 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
11561 #endif
11562 #endif
11563 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
11564 {
11565 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
11566 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
11567 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 163, __pyx_L3_error)
11568 if (__pyx_kwds_len > 0) {
11569 switch (__pyx_nargs) {
11570 case 5:
11571 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11572 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 163, __pyx_L3_error)
11573 CYTHON_FALLTHROUGH;
11574 case 4:
11575 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11576 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 163, __pyx_L3_error)
11577 CYTHON_FALLTHROUGH;
11578 case 3:
11579 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11580 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 163, __pyx_L3_error)
11581 CYTHON_FALLTHROUGH;
11582 case 2:
11583 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11584 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 163, __pyx_L3_error)
11585 CYTHON_FALLTHROUGH;
11586 case 1:
11587 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11588 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 163, __pyx_L3_error)
11589 CYTHON_FALLTHROUGH;
11590 case 0: break;
11591 default: goto __pyx_L5_argtuple_error;
11592 }
11593 const Py_ssize_t kwd_pos_args = __pyx_nargs;
11594 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "NonlinearDAE_f", 0) < (0)) __PYX_ERR(0, 163, __pyx_L3_error)
11595 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
11596 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, i); __PYX_ERR(0, 163, __pyx_L3_error) }
11597 }
11598 } else if (unlikely(__pyx_nargs != 5)) {
11599 goto __pyx_L5_argtuple_error;
11600 } else {
11601 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11602 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 163, __pyx_L3_error)
11603 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11604 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 163, __pyx_L3_error)
11605 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11606 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 163, __pyx_L3_error)
11607 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11608 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 163, __pyx_L3_error)
11609 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11610 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 163, __pyx_L3_error)
11611 }
11612 __pyx_v_iwork = ((PyArrayObject *)values[0]);
11613 __pyx_v_rwork = ((PyArrayObject *)values[1]);
11614 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 163, __pyx_L3_error)
11615 __pyx_v_x = ((PyArrayObject *)values[3]);
11616 __pyx_v_u = ((PyArrayObject *)values[4]);
11617 }
11618 goto __pyx_L6_skip;
11619 __pyx_L5_argtuple_error:;
11620 __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 163, __pyx_L3_error)
11621 __pyx_L6_skip:;
11622 goto __pyx_L4_argument_unpacking_done;
11623 __pyx_L3_error:;
11624 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11625 Py_XDECREF(values[__pyx_temp]);
11626 }
11627 __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE_f", __pyx_clineno, __pyx_lineno, __pyx_filename);
11628 __Pyx_RefNannyFinishContext();
11629 return NULL;
11630 __pyx_L4_argument_unpacking_done:;
11631 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 163, __pyx_L1_error)
11632 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 163, __pyx_L1_error)
11633 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 163, __pyx_L1_error)
11634 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 163, __pyx_L1_error)
11635 __pyx_r = __pyx_pf_20canalyticalSolutions_56NonlinearDAE_f(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
11636
11637 /* function exit code */
11638 goto __pyx_L0;
11639 __pyx_L1_error:;
11640 __pyx_r = NULL;
11641 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11642 Py_XDECREF(values[__pyx_temp]);
11643 }
11644 goto __pyx_L7_cleaned_up;
11645 __pyx_L0:;
11646 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11647 Py_XDECREF(values[__pyx_temp]);
11648 }
11649 __pyx_L7_cleaned_up:;
11650
11651 __Pyx_RefNannyFinishContext();
11652 return __pyx_r;
11653}
11654
11655static PyObject *__pyx_pf_20canalyticalSolutions_56NonlinearDAE_f(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
11656 PyObject *__pyx_r = NULL;
11657 __Pyx_RefNannyDeclarations
11658 npy_intp __pyx_t_1;
11659 npy_intp __pyx_t_2;
11660 PyObject *__pyx_t_3 = NULL;
11661 int __pyx_lineno = 0;
11662 const char *__pyx_filename = NULL;
11663 int __pyx_clineno = 0;
11664 __Pyx_RefNannySetupContext("NonlinearDAE_f", 0);
11665
11666 /* "canalyticalSolutions.pyx":164
11667 *
11668 * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
11669 * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
11670 *
11671 *
11672*/
11673 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
11674
11675 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
11676
11677 if (unlikely(__pyx_t_2 == 0)) {
11678 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
11679 __PYX_ERR(0, 164, __pyx_L1_error)
11680 }
11681 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
11682 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
11683 __PYX_ERR(0, 164, __pyx_L1_error)
11684 }
11685 __pyx_t_3 = __Pyx_PyLong_From_int(NonlinearDAE_f(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
11686 __Pyx_GOTREF(__pyx_t_3);
11687
11688
11689 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 164, __pyx_L1_error)
11690 {
11691 PyObject *__pyx_temp;
11692 {
11693 __pyx_temp = __pyx_r;
11694 __pyx_r = ((PyObject*)__pyx_t_3);
11695 }
11696 __Pyx_XDECREF(__pyx_temp);
11697 }
11698 __pyx_t_3 = 0;
11699 goto __pyx_L0;
11700
11701 /* "canalyticalSolutions.pyx":163
11702 *
11703 *
11704 * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11705 * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11706 *
11707*/
11708
11709 /* function exit code */
11710 __pyx_L1_error:;
11711 __Pyx_XDECREF(__pyx_t_3);
11712 __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE_f", __pyx_clineno, __pyx_lineno, __pyx_filename);
11713 __pyx_r = NULL;
11714 __pyx_L0:;
11715 __Pyx_XGIVEREF(__pyx_r);
11716 __Pyx_RefNannyFinishContext();
11717 return __pyx_r;
11718}
11719
11720/* "canalyticalSolutions.pyx":167
11721 *
11722 *
11723 * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11724 * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11725 *
11726*/
11727
11728/* Python wrapper */
11729static PyObject *__pyx_pw_20canalyticalSolutions_59PlanePoiseuilleFlow_u(PyObject *__pyx_self,
11730#if CYTHON_VECTORCALL
11731PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11732#else
11733PyObject *__pyx_args, PyObject *__pyx_kwds
11734#endif
11735); /*proto*/
11736static PyMethodDef __pyx_mdef_20canalyticalSolutions_59PlanePoiseuilleFlow_u = {"PlanePoiseuilleFlow_u", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_59PlanePoiseuilleFlow_u, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
11737static PyObject *__pyx_pw_20canalyticalSolutions_59PlanePoiseuilleFlow_u(PyObject *__pyx_self,
11738#if CYTHON_VECTORCALL
11739PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11740#else
11741PyObject *__pyx_args, PyObject *__pyx_kwds
11742#endif
11743) {
11744 PyArrayObject *__pyx_v_iwork = 0;
11745 PyArrayObject *__pyx_v_rwork = 0;
11746 double __pyx_v_t;
11747 PyArrayObject *__pyx_v_x = 0;
11748 PyArrayObject *__pyx_v_u = 0;
11749 #if !CYTHON_VECTORCALL
11750 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
11751 #endif
11752 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11753 PyObject* values[5] = {0,0,0,0,0};
11754 int __pyx_lineno = 0;
11755 const char *__pyx_filename = NULL;
11756 int __pyx_clineno = 0;
11757 PyObject *__pyx_r = 0;
11758 __Pyx_RefNannyDeclarations
11759 __Pyx_RefNannySetupContext("PlanePoiseuilleFlow_u (wrapper)", 0);
11760 #if !CYTHON_VECTORCALL
11761 #if CYTHON_ASSUME_SAFE_SIZE
11762 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
11763 #else
11764 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
11765 #endif
11766 #endif
11767 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
11768 {
11769 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
11770 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
11771 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 167, __pyx_L3_error)
11772 if (__pyx_kwds_len > 0) {
11773 switch (__pyx_nargs) {
11774 case 5:
11775 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11776 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 167, __pyx_L3_error)
11777 CYTHON_FALLTHROUGH;
11778 case 4:
11779 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11780 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 167, __pyx_L3_error)
11781 CYTHON_FALLTHROUGH;
11782 case 3:
11783 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11784 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 167, __pyx_L3_error)
11785 CYTHON_FALLTHROUGH;
11786 case 2:
11787 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11788 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 167, __pyx_L3_error)
11789 CYTHON_FALLTHROUGH;
11790 case 1:
11791 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11792 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 167, __pyx_L3_error)
11793 CYTHON_FALLTHROUGH;
11794 case 0: break;
11795 default: goto __pyx_L5_argtuple_error;
11796 }
11797 const Py_ssize_t kwd_pos_args = __pyx_nargs;
11798 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "PlanePoiseuilleFlow_u", 0) < (0)) __PYX_ERR(0, 167, __pyx_L3_error)
11799 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
11800 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, i); __PYX_ERR(0, 167, __pyx_L3_error) }
11801 }
11802 } else if (unlikely(__pyx_nargs != 5)) {
11803 goto __pyx_L5_argtuple_error;
11804 } else {
11805 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11806 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 167, __pyx_L3_error)
11807 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11808 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 167, __pyx_L3_error)
11809 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11810 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 167, __pyx_L3_error)
11811 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11812 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 167, __pyx_L3_error)
11813 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11814 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 167, __pyx_L3_error)
11815 }
11816 __pyx_v_iwork = ((PyArrayObject *)values[0]);
11817 __pyx_v_rwork = ((PyArrayObject *)values[1]);
11818 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
11819 __pyx_v_x = ((PyArrayObject *)values[3]);
11820 __pyx_v_u = ((PyArrayObject *)values[4]);
11821 }
11822 goto __pyx_L6_skip;
11823 __pyx_L5_argtuple_error:;
11824 __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 167, __pyx_L3_error)
11825 __pyx_L6_skip:;
11826 goto __pyx_L4_argument_unpacking_done;
11827 __pyx_L3_error:;
11828 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11829 Py_XDECREF(values[__pyx_temp]);
11830 }
11831 __Pyx_AddTraceback("canalyticalSolutions.PlanePoiseuilleFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
11832 __Pyx_RefNannyFinishContext();
11833 return NULL;
11834 __pyx_L4_argument_unpacking_done:;
11835 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 167, __pyx_L1_error)
11836 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 167, __pyx_L1_error)
11837 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 167, __pyx_L1_error)
11838 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 167, __pyx_L1_error)
11839 __pyx_r = __pyx_pf_20canalyticalSolutions_58PlanePoiseuilleFlow_u(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
11840
11841 /* function exit code */
11842 goto __pyx_L0;
11843 __pyx_L1_error:;
11844 __pyx_r = NULL;
11845 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11846 Py_XDECREF(values[__pyx_temp]);
11847 }
11848 goto __pyx_L7_cleaned_up;
11849 __pyx_L0:;
11850 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11851 Py_XDECREF(values[__pyx_temp]);
11852 }
11853 __pyx_L7_cleaned_up:;
11854
11855 __Pyx_RefNannyFinishContext();
11856 return __pyx_r;
11857}
11858
11859static PyObject *__pyx_pf_20canalyticalSolutions_58PlanePoiseuilleFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
11860 PyObject *__pyx_r = NULL;
11861 __Pyx_RefNannyDeclarations
11862 npy_intp __pyx_t_1;
11863 npy_intp __pyx_t_2;
11864 PyObject *__pyx_t_3 = NULL;
11865 int __pyx_lineno = 0;
11866 const char *__pyx_filename = NULL;
11867 int __pyx_clineno = 0;
11868 __Pyx_RefNannySetupContext("PlanePoiseuilleFlow_u", 0);
11869
11870 /* "canalyticalSolutions.pyx":168
11871 *
11872 * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
11873 * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
11874 *
11875 *
11876*/
11877 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
11878
11879 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
11880
11881 if (unlikely(__pyx_t_2 == 0)) {
11882 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
11883 __PYX_ERR(0, 168, __pyx_L1_error)
11884 }
11885 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
11886 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
11887 __PYX_ERR(0, 168, __pyx_L1_error)
11888 }
11889 __pyx_t_3 = __Pyx_PyLong_From_int(PlanePoiseuilleFlow_u(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error)
11890 __Pyx_GOTREF(__pyx_t_3);
11891
11892
11893 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 168, __pyx_L1_error)
11894 {
11895 PyObject *__pyx_temp;
11896 {
11897 __pyx_temp = __pyx_r;
11898 __pyx_r = ((PyObject*)__pyx_t_3);
11899 }
11900 __Pyx_XDECREF(__pyx_temp);
11901 }
11902 __pyx_t_3 = 0;
11903 goto __pyx_L0;
11904
11905 /* "canalyticalSolutions.pyx":167
11906 *
11907 *
11908 * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11909 * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11910 *
11911*/
11912
11913 /* function exit code */
11914 __pyx_L1_error:;
11915 __Pyx_XDECREF(__pyx_t_3);
11916 __Pyx_AddTraceback("canalyticalSolutions.PlanePoiseuilleFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
11917 __pyx_r = NULL;
11918 __pyx_L0:;
11919 __Pyx_XGIVEREF(__pyx_r);
11920 __Pyx_RefNannyFinishContext();
11921 return __pyx_r;
11922}
11923
11924/* "canalyticalSolutions.pyx":171
11925 *
11926 *
11927 * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11928 * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11929 *
11930*/
11931
11932/* Python wrapper */
11933static PyObject *__pyx_pw_20canalyticalSolutions_61PoiseuillePipeFlow(PyObject *__pyx_self,
11934#if CYTHON_VECTORCALL
11935PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11936#else
11937PyObject *__pyx_args, PyObject *__pyx_kwds
11938#endif
11939); /*proto*/
11940static PyMethodDef __pyx_mdef_20canalyticalSolutions_61PoiseuillePipeFlow = {"PoiseuillePipeFlow", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_61PoiseuillePipeFlow, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
11941static PyObject *__pyx_pw_20canalyticalSolutions_61PoiseuillePipeFlow(PyObject *__pyx_self,
11942#if CYTHON_VECTORCALL
11943PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11944#else
11945PyObject *__pyx_args, PyObject *__pyx_kwds
11946#endif
11947) {
11948 PyArrayObject *__pyx_v_iwork = 0;
11949 PyArrayObject *__pyx_v_rwork = 0;
11950 double __pyx_v_t;
11951 PyArrayObject *__pyx_v_x = 0;
11952 PyArrayObject *__pyx_v_u = 0;
11953 #if !CYTHON_VECTORCALL
11954 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
11955 #endif
11956 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11957 PyObject* values[5] = {0,0,0,0,0};
11958 int __pyx_lineno = 0;
11959 const char *__pyx_filename = NULL;
11960 int __pyx_clineno = 0;
11961 PyObject *__pyx_r = 0;
11962 __Pyx_RefNannyDeclarations
11963 __Pyx_RefNannySetupContext("PoiseuillePipeFlow (wrapper)", 0);
11964 #if !CYTHON_VECTORCALL
11965 #if CYTHON_ASSUME_SAFE_SIZE
11966 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
11967 #else
11968 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
11969 #endif
11970 #endif
11971 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
11972 {
11973 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
11974 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
11975 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 171, __pyx_L3_error)
11976 if (__pyx_kwds_len > 0) {
11977 switch (__pyx_nargs) {
11978 case 5:
11979 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
11980 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 171, __pyx_L3_error)
11981 CYTHON_FALLTHROUGH;
11982 case 4:
11983 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
11984 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 171, __pyx_L3_error)
11985 CYTHON_FALLTHROUGH;
11986 case 3:
11987 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
11988 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 171, __pyx_L3_error)
11989 CYTHON_FALLTHROUGH;
11990 case 2:
11991 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
11992 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 171, __pyx_L3_error)
11993 CYTHON_FALLTHROUGH;
11994 case 1:
11995 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
11996 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 171, __pyx_L3_error)
11997 CYTHON_FALLTHROUGH;
11998 case 0: break;
11999 default: goto __pyx_L5_argtuple_error;
12000 }
12001 const Py_ssize_t kwd_pos_args = __pyx_nargs;
12002 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "PoiseuillePipeFlow", 0) < (0)) __PYX_ERR(0, 171, __pyx_L3_error)
12003 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
12004 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, i); __PYX_ERR(0, 171, __pyx_L3_error) }
12005 }
12006 } else if (unlikely(__pyx_nargs != 5)) {
12007 goto __pyx_L5_argtuple_error;
12008 } else {
12009 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12010 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 171, __pyx_L3_error)
12011 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12012 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 171, __pyx_L3_error)
12013 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12014 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 171, __pyx_L3_error)
12015 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12016 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 171, __pyx_L3_error)
12017 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12018 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 171, __pyx_L3_error)
12019 }
12020 __pyx_v_iwork = ((PyArrayObject *)values[0]);
12021 __pyx_v_rwork = ((PyArrayObject *)values[1]);
12022 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L3_error)
12023 __pyx_v_x = ((PyArrayObject *)values[3]);
12024 __pyx_v_u = ((PyArrayObject *)values[4]);
12025 }
12026 goto __pyx_L6_skip;
12027 __pyx_L5_argtuple_error:;
12028 __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 171, __pyx_L3_error)
12029 __pyx_L6_skip:;
12030 goto __pyx_L4_argument_unpacking_done;
12031 __pyx_L3_error:;
12032 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12033 Py_XDECREF(values[__pyx_temp]);
12034 }
12035 __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12036 __Pyx_RefNannyFinishContext();
12037 return NULL;
12038 __pyx_L4_argument_unpacking_done:;
12039 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 171, __pyx_L1_error)
12040 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 171, __pyx_L1_error)
12041 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 171, __pyx_L1_error)
12042 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 171, __pyx_L1_error)
12043 __pyx_r = __pyx_pf_20canalyticalSolutions_60PoiseuillePipeFlow(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
12044
12045 /* function exit code */
12046 goto __pyx_L0;
12047 __pyx_L1_error:;
12048 __pyx_r = NULL;
12049 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12050 Py_XDECREF(values[__pyx_temp]);
12051 }
12052 goto __pyx_L7_cleaned_up;
12053 __pyx_L0:;
12054 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12055 Py_XDECREF(values[__pyx_temp]);
12056 }
12057 __pyx_L7_cleaned_up:;
12058
12059 __Pyx_RefNannyFinishContext();
12060 return __pyx_r;
12061}
12062
12063static PyObject *__pyx_pf_20canalyticalSolutions_60PoiseuillePipeFlow(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
12064 PyObject *__pyx_r = NULL;
12065 __Pyx_RefNannyDeclarations
12066 npy_intp __pyx_t_1;
12067 npy_intp __pyx_t_2;
12068 PyObject *__pyx_t_3 = NULL;
12069 int __pyx_lineno = 0;
12070 const char *__pyx_filename = NULL;
12071 int __pyx_clineno = 0;
12072 __Pyx_RefNannySetupContext("PoiseuillePipeFlow", 0);
12073
12074 /* "canalyticalSolutions.pyx":172
12075 *
12076 * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
12077 * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
12078 *
12079 *
12080*/
12081 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
12082
12083 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
12084
12085 if (unlikely(__pyx_t_2 == 0)) {
12086 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
12087 __PYX_ERR(0, 172, __pyx_L1_error)
12088 }
12089 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
12090 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
12091 __PYX_ERR(0, 172, __pyx_L1_error)
12092 }
12093 __pyx_t_3 = __Pyx_PyLong_From_int(PoiseuillePipeFlow(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error)
12094 __Pyx_GOTREF(__pyx_t_3);
12095
12096
12097 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 172, __pyx_L1_error)
12098 {
12099 PyObject *__pyx_temp;
12100 {
12101 __pyx_temp = __pyx_r;
12102 __pyx_r = ((PyObject*)__pyx_t_3);
12103 }
12104 __Pyx_XDECREF(__pyx_temp);
12105 }
12106 __pyx_t_3 = 0;
12107 goto __pyx_L0;
12108
12109 /* "canalyticalSolutions.pyx":171
12110 *
12111 *
12112 * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12113 * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12114 *
12115*/
12116
12117 /* function exit code */
12118 __pyx_L1_error:;
12119 __Pyx_XDECREF(__pyx_t_3);
12120 __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12121 __pyx_r = NULL;
12122 __pyx_L0:;
12123 __Pyx_XGIVEREF(__pyx_r);
12124 __Pyx_RefNannyFinishContext();
12125 return __pyx_r;
12126}
12127
12128/* "canalyticalSolutions.pyx":175
12129 *
12130 *
12131 * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12132 * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12133 *
12134*/
12135
12136/* Python wrapper */
12137static PyObject *__pyx_pw_20canalyticalSolutions_63PoiseuillePipeFlow_P(PyObject *__pyx_self,
12138#if CYTHON_VECTORCALL
12139PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12140#else
12141PyObject *__pyx_args, PyObject *__pyx_kwds
12142#endif
12143); /*proto*/
12144static PyMethodDef __pyx_mdef_20canalyticalSolutions_63PoiseuillePipeFlow_P = {"PoiseuillePipeFlow_P", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_63PoiseuillePipeFlow_P, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
12145static PyObject *__pyx_pw_20canalyticalSolutions_63PoiseuillePipeFlow_P(PyObject *__pyx_self,
12146#if CYTHON_VECTORCALL
12147PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12148#else
12149PyObject *__pyx_args, PyObject *__pyx_kwds
12150#endif
12151) {
12152 PyArrayObject *__pyx_v_iwork = 0;
12153 PyArrayObject *__pyx_v_rwork = 0;
12154 double __pyx_v_t;
12155 PyArrayObject *__pyx_v_x = 0;
12156 PyArrayObject *__pyx_v_u = 0;
12157 #if !CYTHON_VECTORCALL
12158 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
12159 #endif
12160 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12161 PyObject* values[5] = {0,0,0,0,0};
12162 int __pyx_lineno = 0;
12163 const char *__pyx_filename = NULL;
12164 int __pyx_clineno = 0;
12165 PyObject *__pyx_r = 0;
12166 __Pyx_RefNannyDeclarations
12167 __Pyx_RefNannySetupContext("PoiseuillePipeFlow_P (wrapper)", 0);
12168 #if !CYTHON_VECTORCALL
12169 #if CYTHON_ASSUME_SAFE_SIZE
12170 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
12171 #else
12172 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
12173 #endif
12174 #endif
12175 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
12176 {
12177 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
12178 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
12179 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 175, __pyx_L3_error)
12180 if (__pyx_kwds_len > 0) {
12181 switch (__pyx_nargs) {
12182 case 5:
12183 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12184 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 175, __pyx_L3_error)
12185 CYTHON_FALLTHROUGH;
12186 case 4:
12187 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12188 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 175, __pyx_L3_error)
12189 CYTHON_FALLTHROUGH;
12190 case 3:
12191 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12192 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 175, __pyx_L3_error)
12193 CYTHON_FALLTHROUGH;
12194 case 2:
12195 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12196 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 175, __pyx_L3_error)
12197 CYTHON_FALLTHROUGH;
12198 case 1:
12199 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12200 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 175, __pyx_L3_error)
12201 CYTHON_FALLTHROUGH;
12202 case 0: break;
12203 default: goto __pyx_L5_argtuple_error;
12204 }
12205 const Py_ssize_t kwd_pos_args = __pyx_nargs;
12206 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "PoiseuillePipeFlow_P", 0) < (0)) __PYX_ERR(0, 175, __pyx_L3_error)
12207 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
12208 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, i); __PYX_ERR(0, 175, __pyx_L3_error) }
12209 }
12210 } else if (unlikely(__pyx_nargs != 5)) {
12211 goto __pyx_L5_argtuple_error;
12212 } else {
12213 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12214 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 175, __pyx_L3_error)
12215 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12216 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 175, __pyx_L3_error)
12217 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12218 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 175, __pyx_L3_error)
12219 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12220 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 175, __pyx_L3_error)
12221 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12222 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 175, __pyx_L3_error)
12223 }
12224 __pyx_v_iwork = ((PyArrayObject *)values[0]);
12225 __pyx_v_rwork = ((PyArrayObject *)values[1]);
12226 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 175, __pyx_L3_error)
12227 __pyx_v_x = ((PyArrayObject *)values[3]);
12228 __pyx_v_u = ((PyArrayObject *)values[4]);
12229 }
12230 goto __pyx_L6_skip;
12231 __pyx_L5_argtuple_error:;
12232 __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 175, __pyx_L3_error)
12233 __pyx_L6_skip:;
12234 goto __pyx_L4_argument_unpacking_done;
12235 __pyx_L3_error:;
12236 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12237 Py_XDECREF(values[__pyx_temp]);
12238 }
12239 __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
12240 __Pyx_RefNannyFinishContext();
12241 return NULL;
12242 __pyx_L4_argument_unpacking_done:;
12243 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 175, __pyx_L1_error)
12244 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 175, __pyx_L1_error)
12245 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 175, __pyx_L1_error)
12246 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 175, __pyx_L1_error)
12247 __pyx_r = __pyx_pf_20canalyticalSolutions_62PoiseuillePipeFlow_P(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
12248
12249 /* function exit code */
12250 goto __pyx_L0;
12251 __pyx_L1_error:;
12252 __pyx_r = NULL;
12253 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12254 Py_XDECREF(values[__pyx_temp]);
12255 }
12256 goto __pyx_L7_cleaned_up;
12257 __pyx_L0:;
12258 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12259 Py_XDECREF(values[__pyx_temp]);
12260 }
12261 __pyx_L7_cleaned_up:;
12262
12263 __Pyx_RefNannyFinishContext();
12264 return __pyx_r;
12265}
12266
12267static PyObject *__pyx_pf_20canalyticalSolutions_62PoiseuillePipeFlow_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
12268 PyObject *__pyx_r = NULL;
12269 __Pyx_RefNannyDeclarations
12270 npy_intp __pyx_t_1;
12271 npy_intp __pyx_t_2;
12272 PyObject *__pyx_t_3 = NULL;
12273 int __pyx_lineno = 0;
12274 const char *__pyx_filename = NULL;
12275 int __pyx_clineno = 0;
12276 __Pyx_RefNannySetupContext("PoiseuillePipeFlow_P", 0);
12277
12278 /* "canalyticalSolutions.pyx":176
12279 *
12280 * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
12281 * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
12282 *
12283 *
12284*/
12285 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
12286
12287 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
12288
12289 if (unlikely(__pyx_t_2 == 0)) {
12290 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
12291 __PYX_ERR(0, 176, __pyx_L1_error)
12292 }
12293 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
12294 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
12295 __PYX_ERR(0, 176, __pyx_L1_error)
12296 }
12297 __pyx_t_3 = __Pyx_PyLong_From_int(PoiseuillePipeFlow_P(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error)
12298 __Pyx_GOTREF(__pyx_t_3);
12299
12300
12301 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 176, __pyx_L1_error)
12302 {
12303 PyObject *__pyx_temp;
12304 {
12305 __pyx_temp = __pyx_r;
12306 __pyx_r = ((PyObject*)__pyx_t_3);
12307 }
12308 __Pyx_XDECREF(__pyx_temp);
12309 }
12310 __pyx_t_3 = 0;
12311 goto __pyx_L0;
12312
12313 /* "canalyticalSolutions.pyx":175
12314 *
12315 *
12316 * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12317 * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12318 *
12319*/
12320
12321 /* function exit code */
12322 __pyx_L1_error:;
12323 __Pyx_XDECREF(__pyx_t_3);
12324 __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
12325 __pyx_r = NULL;
12326 __pyx_L0:;
12327 __Pyx_XGIVEREF(__pyx_r);
12328 __Pyx_RefNannyFinishContext();
12329 return __pyx_r;
12330}
12331
12332/* "canalyticalSolutions.pyx":179
12333 *
12334 *
12335 * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12336 * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12337 *
12338*/
12339
12340/* Python wrapper */
12341static PyObject *__pyx_pw_20canalyticalSolutions_65poissonsEquationExp1D(PyObject *__pyx_self,
12342#if CYTHON_VECTORCALL
12343PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12344#else
12345PyObject *__pyx_args, PyObject *__pyx_kwds
12346#endif
12347); /*proto*/
12348static PyMethodDef __pyx_mdef_20canalyticalSolutions_65poissonsEquationExp1D = {"poissonsEquationExp1D", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_65poissonsEquationExp1D, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
12349static PyObject *__pyx_pw_20canalyticalSolutions_65poissonsEquationExp1D(PyObject *__pyx_self,
12350#if CYTHON_VECTORCALL
12351PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12352#else
12353PyObject *__pyx_args, PyObject *__pyx_kwds
12354#endif
12355) {
12356 PyArrayObject *__pyx_v_iwork = 0;
12357 PyArrayObject *__pyx_v_rwork = 0;
12358 double __pyx_v_t;
12359 PyArrayObject *__pyx_v_x = 0;
12360 PyArrayObject *__pyx_v_u = 0;
12361 #if !CYTHON_VECTORCALL
12362 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
12363 #endif
12364 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12365 PyObject* values[5] = {0,0,0,0,0};
12366 int __pyx_lineno = 0;
12367 const char *__pyx_filename = NULL;
12368 int __pyx_clineno = 0;
12369 PyObject *__pyx_r = 0;
12370 __Pyx_RefNannyDeclarations
12371 __Pyx_RefNannySetupContext("poissonsEquationExp1D (wrapper)", 0);
12372 #if !CYTHON_VECTORCALL
12373 #if CYTHON_ASSUME_SAFE_SIZE
12374 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
12375 #else
12376 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
12377 #endif
12378 #endif
12379 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
12380 {
12381 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
12382 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
12383 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 179, __pyx_L3_error)
12384 if (__pyx_kwds_len > 0) {
12385 switch (__pyx_nargs) {
12386 case 5:
12387 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12388 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 179, __pyx_L3_error)
12389 CYTHON_FALLTHROUGH;
12390 case 4:
12391 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12392 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 179, __pyx_L3_error)
12393 CYTHON_FALLTHROUGH;
12394 case 3:
12395 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12396 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 179, __pyx_L3_error)
12397 CYTHON_FALLTHROUGH;
12398 case 2:
12399 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12400 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 179, __pyx_L3_error)
12401 CYTHON_FALLTHROUGH;
12402 case 1:
12403 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12404 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 179, __pyx_L3_error)
12405 CYTHON_FALLTHROUGH;
12406 case 0: break;
12407 default: goto __pyx_L5_argtuple_error;
12408 }
12409 const Py_ssize_t kwd_pos_args = __pyx_nargs;
12410 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp1D", 0) < (0)) __PYX_ERR(0, 179, __pyx_L3_error)
12411 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
12412 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, i); __PYX_ERR(0, 179, __pyx_L3_error) }
12413 }
12414 } else if (unlikely(__pyx_nargs != 5)) {
12415 goto __pyx_L5_argtuple_error;
12416 } else {
12417 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12418 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 179, __pyx_L3_error)
12419 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12420 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 179, __pyx_L3_error)
12421 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12422 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 179, __pyx_L3_error)
12423 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12424 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 179, __pyx_L3_error)
12425 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12426 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 179, __pyx_L3_error)
12427 }
12428 __pyx_v_iwork = ((PyArrayObject *)values[0]);
12429 __pyx_v_rwork = ((PyArrayObject *)values[1]);
12430 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L3_error)
12431 __pyx_v_x = ((PyArrayObject *)values[3]);
12432 __pyx_v_u = ((PyArrayObject *)values[4]);
12433 }
12434 goto __pyx_L6_skip;
12435 __pyx_L5_argtuple_error:;
12436 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 179, __pyx_L3_error)
12437 __pyx_L6_skip:;
12438 goto __pyx_L4_argument_unpacking_done;
12439 __pyx_L3_error:;
12440 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12441 Py_XDECREF(values[__pyx_temp]);
12442 }
12443 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
12444 __Pyx_RefNannyFinishContext();
12445 return NULL;
12446 __pyx_L4_argument_unpacking_done:;
12447 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 179, __pyx_L1_error)
12448 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 179, __pyx_L1_error)
12449 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 179, __pyx_L1_error)
12450 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 179, __pyx_L1_error)
12451 __pyx_r = __pyx_pf_20canalyticalSolutions_64poissonsEquationExp1D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
12452
12453 /* function exit code */
12454 goto __pyx_L0;
12455 __pyx_L1_error:;
12456 __pyx_r = NULL;
12457 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12458 Py_XDECREF(values[__pyx_temp]);
12459 }
12460 goto __pyx_L7_cleaned_up;
12461 __pyx_L0:;
12462 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12463 Py_XDECREF(values[__pyx_temp]);
12464 }
12465 __pyx_L7_cleaned_up:;
12466
12467 __Pyx_RefNannyFinishContext();
12468 return __pyx_r;
12469}
12470
12471static PyObject *__pyx_pf_20canalyticalSolutions_64poissonsEquationExp1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
12472 PyObject *__pyx_r = NULL;
12473 __Pyx_RefNannyDeclarations
12474 npy_intp __pyx_t_1;
12475 npy_intp __pyx_t_2;
12476 PyObject *__pyx_t_3 = NULL;
12477 int __pyx_lineno = 0;
12478 const char *__pyx_filename = NULL;
12479 int __pyx_clineno = 0;
12480 __Pyx_RefNannySetupContext("poissonsEquationExp1D", 0);
12481
12482 /* "canalyticalSolutions.pyx":180
12483 *
12484 * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
12485 * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
12486 *
12487 *
12488*/
12489 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
12490
12491 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
12492
12493 if (unlikely(__pyx_t_2 == 0)) {
12494 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
12495 __PYX_ERR(0, 180, __pyx_L1_error)
12496 }
12497 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
12498 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
12499 __PYX_ERR(0, 180, __pyx_L1_error)
12500 }
12501 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp1D(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error)
12502 __Pyx_GOTREF(__pyx_t_3);
12503
12504
12505 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 180, __pyx_L1_error)
12506 {
12507 PyObject *__pyx_temp;
12508 {
12509 __pyx_temp = __pyx_r;
12510 __pyx_r = ((PyObject*)__pyx_t_3);
12511 }
12512 __Pyx_XDECREF(__pyx_temp);
12513 }
12514 __pyx_t_3 = 0;
12515 goto __pyx_L0;
12516
12517 /* "canalyticalSolutions.pyx":179
12518 *
12519 *
12520 * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12521 * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12522 *
12523*/
12524
12525 /* function exit code */
12526 __pyx_L1_error:;
12527 __Pyx_XDECREF(__pyx_t_3);
12528 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
12529 __pyx_r = NULL;
12530 __pyx_L0:;
12531 __Pyx_XGIVEREF(__pyx_r);
12532 __Pyx_RefNannyFinishContext();
12533 return __pyx_r;
12534}
12535
12536/* "canalyticalSolutions.pyx":183
12537 *
12538 *
12539 * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12540 * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12541 *
12542*/
12543
12544/* Python wrapper */
12545static PyObject *__pyx_pw_20canalyticalSolutions_67poissonsEquationExp2D(PyObject *__pyx_self,
12546#if CYTHON_VECTORCALL
12547PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12548#else
12549PyObject *__pyx_args, PyObject *__pyx_kwds
12550#endif
12551); /*proto*/
12552static PyMethodDef __pyx_mdef_20canalyticalSolutions_67poissonsEquationExp2D = {"poissonsEquationExp2D", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_67poissonsEquationExp2D, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
12553static PyObject *__pyx_pw_20canalyticalSolutions_67poissonsEquationExp2D(PyObject *__pyx_self,
12554#if CYTHON_VECTORCALL
12555PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12556#else
12557PyObject *__pyx_args, PyObject *__pyx_kwds
12558#endif
12559) {
12560 PyArrayObject *__pyx_v_iwork = 0;
12561 PyArrayObject *__pyx_v_rwork = 0;
12562 double __pyx_v_t;
12563 PyArrayObject *__pyx_v_x = 0;
12564 PyArrayObject *__pyx_v_u = 0;
12565 #if !CYTHON_VECTORCALL
12566 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
12567 #endif
12568 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12569 PyObject* values[5] = {0,0,0,0,0};
12570 int __pyx_lineno = 0;
12571 const char *__pyx_filename = NULL;
12572 int __pyx_clineno = 0;
12573 PyObject *__pyx_r = 0;
12574 __Pyx_RefNannyDeclarations
12575 __Pyx_RefNannySetupContext("poissonsEquationExp2D (wrapper)", 0);
12576 #if !CYTHON_VECTORCALL
12577 #if CYTHON_ASSUME_SAFE_SIZE
12578 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
12579 #else
12580 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
12581 #endif
12582 #endif
12583 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
12584 {
12585 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
12586 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
12587 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 183, __pyx_L3_error)
12588 if (__pyx_kwds_len > 0) {
12589 switch (__pyx_nargs) {
12590 case 5:
12591 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12592 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 183, __pyx_L3_error)
12593 CYTHON_FALLTHROUGH;
12594 case 4:
12595 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12596 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 183, __pyx_L3_error)
12597 CYTHON_FALLTHROUGH;
12598 case 3:
12599 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12600 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 183, __pyx_L3_error)
12601 CYTHON_FALLTHROUGH;
12602 case 2:
12603 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12604 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 183, __pyx_L3_error)
12605 CYTHON_FALLTHROUGH;
12606 case 1:
12607 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12608 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 183, __pyx_L3_error)
12609 CYTHON_FALLTHROUGH;
12610 case 0: break;
12611 default: goto __pyx_L5_argtuple_error;
12612 }
12613 const Py_ssize_t kwd_pos_args = __pyx_nargs;
12614 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp2D", 0) < (0)) __PYX_ERR(0, 183, __pyx_L3_error)
12615 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
12616 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, i); __PYX_ERR(0, 183, __pyx_L3_error) }
12617 }
12618 } else if (unlikely(__pyx_nargs != 5)) {
12619 goto __pyx_L5_argtuple_error;
12620 } else {
12621 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12622 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 183, __pyx_L3_error)
12623 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12624 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 183, __pyx_L3_error)
12625 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12626 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 183, __pyx_L3_error)
12627 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12628 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 183, __pyx_L3_error)
12629 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12630 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 183, __pyx_L3_error)
12631 }
12632 __pyx_v_iwork = ((PyArrayObject *)values[0]);
12633 __pyx_v_rwork = ((PyArrayObject *)values[1]);
12634 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L3_error)
12635 __pyx_v_x = ((PyArrayObject *)values[3]);
12636 __pyx_v_u = ((PyArrayObject *)values[4]);
12637 }
12638 goto __pyx_L6_skip;
12639 __pyx_L5_argtuple_error:;
12640 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 183, __pyx_L3_error)
12641 __pyx_L6_skip:;
12642 goto __pyx_L4_argument_unpacking_done;
12643 __pyx_L3_error:;
12644 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12645 Py_XDECREF(values[__pyx_temp]);
12646 }
12647 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
12648 __Pyx_RefNannyFinishContext();
12649 return NULL;
12650 __pyx_L4_argument_unpacking_done:;
12651 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 183, __pyx_L1_error)
12652 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 183, __pyx_L1_error)
12653 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 183, __pyx_L1_error)
12654 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 183, __pyx_L1_error)
12655 __pyx_r = __pyx_pf_20canalyticalSolutions_66poissonsEquationExp2D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
12656
12657 /* function exit code */
12658 goto __pyx_L0;
12659 __pyx_L1_error:;
12660 __pyx_r = NULL;
12661 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12662 Py_XDECREF(values[__pyx_temp]);
12663 }
12664 goto __pyx_L7_cleaned_up;
12665 __pyx_L0:;
12666 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12667 Py_XDECREF(values[__pyx_temp]);
12668 }
12669 __pyx_L7_cleaned_up:;
12670
12671 __Pyx_RefNannyFinishContext();
12672 return __pyx_r;
12673}
12674
12675static PyObject *__pyx_pf_20canalyticalSolutions_66poissonsEquationExp2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
12676 PyObject *__pyx_r = NULL;
12677 __Pyx_RefNannyDeclarations
12678 npy_intp __pyx_t_1;
12679 npy_intp __pyx_t_2;
12680 PyObject *__pyx_t_3 = NULL;
12681 int __pyx_lineno = 0;
12682 const char *__pyx_filename = NULL;
12683 int __pyx_clineno = 0;
12684 __Pyx_RefNannySetupContext("poissonsEquationExp2D", 0);
12685
12686 /* "canalyticalSolutions.pyx":184
12687 *
12688 * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
12689 * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
12690 *
12691 *
12692*/
12693 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
12694
12695 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
12696
12697 if (unlikely(__pyx_t_2 == 0)) {
12698 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
12699 __PYX_ERR(0, 184, __pyx_L1_error)
12700 }
12701 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
12702 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
12703 __PYX_ERR(0, 184, __pyx_L1_error)
12704 }
12705 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp2D(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error)
12706 __Pyx_GOTREF(__pyx_t_3);
12707
12708
12709 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 184, __pyx_L1_error)
12710 {
12711 PyObject *__pyx_temp;
12712 {
12713 __pyx_temp = __pyx_r;
12714 __pyx_r = ((PyObject*)__pyx_t_3);
12715 }
12716 __Pyx_XDECREF(__pyx_temp);
12717 }
12718 __pyx_t_3 = 0;
12719 goto __pyx_L0;
12720
12721 /* "canalyticalSolutions.pyx":183
12722 *
12723 *
12724 * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12725 * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12726 *
12727*/
12728
12729 /* function exit code */
12730 __pyx_L1_error:;
12731 __Pyx_XDECREF(__pyx_t_3);
12732 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
12733 __pyx_r = NULL;
12734 __pyx_L0:;
12735 __Pyx_XGIVEREF(__pyx_r);
12736 __Pyx_RefNannyFinishContext();
12737 return __pyx_r;
12738}
12739
12740/* "canalyticalSolutions.pyx":187
12741 *
12742 *
12743 * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12744 * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12745 *
12746*/
12747
12748/* Python wrapper */
12749static PyObject *__pyx_pw_20canalyticalSolutions_69poissonsEquationExp3D(PyObject *__pyx_self,
12750#if CYTHON_VECTORCALL
12751PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12752#else
12753PyObject *__pyx_args, PyObject *__pyx_kwds
12754#endif
12755); /*proto*/
12756static PyMethodDef __pyx_mdef_20canalyticalSolutions_69poissonsEquationExp3D = {"poissonsEquationExp3D", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_69poissonsEquationExp3D, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
12757static PyObject *__pyx_pw_20canalyticalSolutions_69poissonsEquationExp3D(PyObject *__pyx_self,
12758#if CYTHON_VECTORCALL
12759PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12760#else
12761PyObject *__pyx_args, PyObject *__pyx_kwds
12762#endif
12763) {
12764 PyArrayObject *__pyx_v_iwork = 0;
12765 PyArrayObject *__pyx_v_rwork = 0;
12766 double __pyx_v_t;
12767 PyArrayObject *__pyx_v_x = 0;
12768 PyArrayObject *__pyx_v_u = 0;
12769 #if !CYTHON_VECTORCALL
12770 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
12771 #endif
12772 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12773 PyObject* values[5] = {0,0,0,0,0};
12774 int __pyx_lineno = 0;
12775 const char *__pyx_filename = NULL;
12776 int __pyx_clineno = 0;
12777 PyObject *__pyx_r = 0;
12778 __Pyx_RefNannyDeclarations
12779 __Pyx_RefNannySetupContext("poissonsEquationExp3D (wrapper)", 0);
12780 #if !CYTHON_VECTORCALL
12781 #if CYTHON_ASSUME_SAFE_SIZE
12782 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
12783 #else
12784 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
12785 #endif
12786 #endif
12787 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
12788 {
12789 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
12790 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
12791 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 187, __pyx_L3_error)
12792 if (__pyx_kwds_len > 0) {
12793 switch (__pyx_nargs) {
12794 case 5:
12795 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12796 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 187, __pyx_L3_error)
12797 CYTHON_FALLTHROUGH;
12798 case 4:
12799 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12800 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 187, __pyx_L3_error)
12801 CYTHON_FALLTHROUGH;
12802 case 3:
12803 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12804 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 187, __pyx_L3_error)
12805 CYTHON_FALLTHROUGH;
12806 case 2:
12807 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12808 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 187, __pyx_L3_error)
12809 CYTHON_FALLTHROUGH;
12810 case 1:
12811 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12812 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 187, __pyx_L3_error)
12813 CYTHON_FALLTHROUGH;
12814 case 0: break;
12815 default: goto __pyx_L5_argtuple_error;
12816 }
12817 const Py_ssize_t kwd_pos_args = __pyx_nargs;
12818 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp3D", 0) < (0)) __PYX_ERR(0, 187, __pyx_L3_error)
12819 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
12820 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, i); __PYX_ERR(0, 187, __pyx_L3_error) }
12821 }
12822 } else if (unlikely(__pyx_nargs != 5)) {
12823 goto __pyx_L5_argtuple_error;
12824 } else {
12825 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
12826 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 187, __pyx_L3_error)
12827 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
12828 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 187, __pyx_L3_error)
12829 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
12830 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 187, __pyx_L3_error)
12831 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
12832 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 187, __pyx_L3_error)
12833 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
12834 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 187, __pyx_L3_error)
12835 }
12836 __pyx_v_iwork = ((PyArrayObject *)values[0]);
12837 __pyx_v_rwork = ((PyArrayObject *)values[1]);
12838 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
12839 __pyx_v_x = ((PyArrayObject *)values[3]);
12840 __pyx_v_u = ((PyArrayObject *)values[4]);
12841 }
12842 goto __pyx_L6_skip;
12843 __pyx_L5_argtuple_error:;
12844 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 187, __pyx_L3_error)
12845 __pyx_L6_skip:;
12846 goto __pyx_L4_argument_unpacking_done;
12847 __pyx_L3_error:;
12848 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12849 Py_XDECREF(values[__pyx_temp]);
12850 }
12851 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
12852 __Pyx_RefNannyFinishContext();
12853 return NULL;
12854 __pyx_L4_argument_unpacking_done:;
12855 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 187, __pyx_L1_error)
12856 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 187, __pyx_L1_error)
12857 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 187, __pyx_L1_error)
12858 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 187, __pyx_L1_error)
12859 __pyx_r = __pyx_pf_20canalyticalSolutions_68poissonsEquationExp3D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
12860
12861 /* function exit code */
12862 goto __pyx_L0;
12863 __pyx_L1_error:;
12864 __pyx_r = NULL;
12865 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12866 Py_XDECREF(values[__pyx_temp]);
12867 }
12868 goto __pyx_L7_cleaned_up;
12869 __pyx_L0:;
12870 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
12871 Py_XDECREF(values[__pyx_temp]);
12872 }
12873 __pyx_L7_cleaned_up:;
12874
12875 __Pyx_RefNannyFinishContext();
12876 return __pyx_r;
12877}
12878
12879static PyObject *__pyx_pf_20canalyticalSolutions_68poissonsEquationExp3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
12880 PyObject *__pyx_r = NULL;
12881 __Pyx_RefNannyDeclarations
12882 npy_intp __pyx_t_1;
12883 npy_intp __pyx_t_2;
12884 PyObject *__pyx_t_3 = NULL;
12885 int __pyx_lineno = 0;
12886 const char *__pyx_filename = NULL;
12887 int __pyx_clineno = 0;
12888 __Pyx_RefNannySetupContext("poissonsEquationExp3D", 0);
12889
12890 /* "canalyticalSolutions.pyx":188
12891 *
12892 * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
12893 * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
12894 *
12895 *
12896*/
12897 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
12898
12899 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
12900
12901 if (unlikely(__pyx_t_2 == 0)) {
12902 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
12903 __PYX_ERR(0, 188, __pyx_L1_error)
12904 }
12905 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
12906 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
12907 __PYX_ERR(0, 188, __pyx_L1_error)
12908 }
12909 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp3D(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error)
12910 __Pyx_GOTREF(__pyx_t_3);
12911
12912
12913 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 188, __pyx_L1_error)
12914 {
12915 PyObject *__pyx_temp;
12916 {
12917 __pyx_temp = __pyx_r;
12918 __pyx_r = ((PyObject*)__pyx_t_3);
12919 }
12920 __Pyx_XDECREF(__pyx_temp);
12921 }
12922 __pyx_t_3 = 0;
12923 goto __pyx_L0;
12924
12925 /* "canalyticalSolutions.pyx":187
12926 *
12927 *
12928 * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
12929 * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
12930 *
12931*/
12932
12933 /* function exit code */
12934 __pyx_L1_error:;
12935 __Pyx_XDECREF(__pyx_t_3);
12936 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
12937 __pyx_r = NULL;
12938 __pyx_L0:;
12939 __Pyx_XGIVEREF(__pyx_r);
12940 __Pyx_RefNannyFinishContext();
12941 return __pyx_r;
12942}
12943
12944/* "canalyticalSolutions.pyx":191
12945 *
12946 *
12947 * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
12948 * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
12949 *
12950*/
12951
12952/* Python wrapper */
12953static PyObject *__pyx_pw_20canalyticalSolutions_71poissonsEquationExp3D_dr(PyObject *__pyx_self,
12954#if CYTHON_VECTORCALL
12955PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12956#else
12957PyObject *__pyx_args, PyObject *__pyx_kwds
12958#endif
12959); /*proto*/
12960static PyMethodDef __pyx_mdef_20canalyticalSolutions_71poissonsEquationExp3D_dr = {"poissonsEquationExp3D_dr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_71poissonsEquationExp3D_dr, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
12961static PyObject *__pyx_pw_20canalyticalSolutions_71poissonsEquationExp3D_dr(PyObject *__pyx_self,
12962#if CYTHON_VECTORCALL
12963PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
12964#else
12965PyObject *__pyx_args, PyObject *__pyx_kwds
12966#endif
12967) {
12968 PyArrayObject *__pyx_v_iwork = 0;
12969 PyArrayObject *__pyx_v_rwork = 0;
12970 double __pyx_v_t;
12971 PyArrayObject *__pyx_v_x = 0;
12972 PyArrayObject *__pyx_v_u = 0;
12973 PyArrayObject *__pyx_v_dr = 0;
12974 #if !CYTHON_VECTORCALL
12975 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
12976 #endif
12977 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12978 PyObject* values[6] = {0,0,0,0,0,0};
12979 int __pyx_lineno = 0;
12980 const char *__pyx_filename = NULL;
12981 int __pyx_clineno = 0;
12982 PyObject *__pyx_r = 0;
12983 __Pyx_RefNannyDeclarations
12984 __Pyx_RefNannySetupContext("poissonsEquationExp3D_dr (wrapper)", 0);
12985 #if !CYTHON_VECTORCALL
12986 #if CYTHON_ASSUME_SAFE_SIZE
12987 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
12988 #else
12989 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
12990 #endif
12991 #endif
12992 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
12993 {
12994 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_dr,0};
12995 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
12996 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 191, __pyx_L3_error)
12997 if (__pyx_kwds_len > 0) {
12998 switch (__pyx_nargs) {
12999 case 6:
13000 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13001 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 191, __pyx_L3_error)
13002 CYTHON_FALLTHROUGH;
13003 case 5:
13004 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13005 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 191, __pyx_L3_error)
13006 CYTHON_FALLTHROUGH;
13007 case 4:
13008 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13009 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 191, __pyx_L3_error)
13010 CYTHON_FALLTHROUGH;
13011 case 3:
13012 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13013 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 191, __pyx_L3_error)
13014 CYTHON_FALLTHROUGH;
13015 case 2:
13016 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13017 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 191, __pyx_L3_error)
13018 CYTHON_FALLTHROUGH;
13019 case 1:
13020 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13021 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 191, __pyx_L3_error)
13022 CYTHON_FALLTHROUGH;
13023 case 0: break;
13024 default: goto __pyx_L5_argtuple_error;
13025 }
13026 const Py_ssize_t kwd_pos_args = __pyx_nargs;
13027 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp3D_dr", 0) < (0)) __PYX_ERR(0, 191, __pyx_L3_error)
13028 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
13029 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, i); __PYX_ERR(0, 191, __pyx_L3_error) }
13030 }
13031 } else if (unlikely(__pyx_nargs != 6)) {
13032 goto __pyx_L5_argtuple_error;
13033 } else {
13034 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13035 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 191, __pyx_L3_error)
13036 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13037 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 191, __pyx_L3_error)
13038 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13039 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 191, __pyx_L3_error)
13040 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13041 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 191, __pyx_L3_error)
13042 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13043 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 191, __pyx_L3_error)
13044 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13045 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 191, __pyx_L3_error)
13046 }
13047 __pyx_v_iwork = ((PyArrayObject *)values[0]);
13048 __pyx_v_rwork = ((PyArrayObject *)values[1]);
13049 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 191, __pyx_L3_error)
13050 __pyx_v_x = ((PyArrayObject *)values[3]);
13051 __pyx_v_u = ((PyArrayObject *)values[4]);
13052 __pyx_v_dr = ((PyArrayObject *)values[5]);
13053 }
13054 goto __pyx_L6_skip;
13055 __pyx_L5_argtuple_error:;
13056 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 191, __pyx_L3_error)
13057 __pyx_L6_skip:;
13058 goto __pyx_L4_argument_unpacking_done;
13059 __pyx_L3_error:;
13060 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13061 Py_XDECREF(values[__pyx_temp]);
13062 }
13063 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
13064 __Pyx_RefNannyFinishContext();
13065 return NULL;
13066 __pyx_L4_argument_unpacking_done:;
13067 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 191, __pyx_L1_error)
13068 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 191, __pyx_L1_error)
13069 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 191, __pyx_L1_error)
13070 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 191, __pyx_L1_error)
13071 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 191, __pyx_L1_error)
13072 __pyx_r = __pyx_pf_20canalyticalSolutions_70poissonsEquationExp3D_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
13073
13074 /* function exit code */
13075 goto __pyx_L0;
13076 __pyx_L1_error:;
13077 __pyx_r = NULL;
13078 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13079 Py_XDECREF(values[__pyx_temp]);
13080 }
13081 goto __pyx_L7_cleaned_up;
13082 __pyx_L0:;
13083 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13084 Py_XDECREF(values[__pyx_temp]);
13085 }
13086 __pyx_L7_cleaned_up:;
13087
13088 __Pyx_RefNannyFinishContext();
13089 return __pyx_r;
13090}
13091
13092static PyObject *__pyx_pf_20canalyticalSolutions_70poissonsEquationExp3D_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
13093 PyObject *__pyx_r = NULL;
13094 __Pyx_RefNannyDeclarations
13095 npy_intp __pyx_t_1;
13096 npy_intp __pyx_t_2;
13097 PyObject *__pyx_t_3 = NULL;
13098 int __pyx_lineno = 0;
13099 const char *__pyx_filename = NULL;
13100 int __pyx_clineno = 0;
13101 __Pyx_RefNannySetupContext("poissonsEquationExp3D_dr", 0);
13102
13103 /* "canalyticalSolutions.pyx":192
13104 *
13105 * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
13106 * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
13107 *
13108 *
13109*/
13110 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
13111
13112 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
13113
13114 if (unlikely(__pyx_t_2 == 0)) {
13115 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
13116 __PYX_ERR(0, 192, __pyx_L1_error)
13117 }
13118 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
13119 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
13120 __PYX_ERR(0, 192, __pyx_L1_error)
13121 }
13122 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp3D_dr(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_dr)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
13123 __Pyx_GOTREF(__pyx_t_3);
13124
13125
13126 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 192, __pyx_L1_error)
13127 {
13128 PyObject *__pyx_temp;
13129 {
13130 __pyx_temp = __pyx_r;
13131 __pyx_r = ((PyObject*)__pyx_t_3);
13132 }
13133 __Pyx_XDECREF(__pyx_temp);
13134 }
13135 __pyx_t_3 = 0;
13136 goto __pyx_L0;
13137
13138 /* "canalyticalSolutions.pyx":191
13139 *
13140 *
13141 * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
13142 * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
13143 *
13144*/
13145
13146 /* function exit code */
13147 __pyx_L1_error:;
13148 __Pyx_XDECREF(__pyx_t_3);
13149 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
13150 __pyx_r = NULL;
13151 __pyx_L0:;
13152 __Pyx_XGIVEREF(__pyx_r);
13153 __Pyx_RefNannyFinishContext();
13154 return __pyx_r;
13155}
13156
13157/* "canalyticalSolutions.pyx":195
13158 *
13159 *
13160 * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
13161 * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
13162 *
13163*/
13164
13165/* Python wrapper */
13166static PyObject *__pyx_pw_20canalyticalSolutions_73poissonsEquationExp1D_r(PyObject *__pyx_self,
13167#if CYTHON_VECTORCALL
13168PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13169#else
13170PyObject *__pyx_args, PyObject *__pyx_kwds
13171#endif
13172); /*proto*/
13173static PyMethodDef __pyx_mdef_20canalyticalSolutions_73poissonsEquationExp1D_r = {"poissonsEquationExp1D_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_73poissonsEquationExp1D_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
13174static PyObject *__pyx_pw_20canalyticalSolutions_73poissonsEquationExp1D_r(PyObject *__pyx_self,
13175#if CYTHON_VECTORCALL
13176PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13177#else
13178PyObject *__pyx_args, PyObject *__pyx_kwds
13179#endif
13180) {
13181 PyArrayObject *__pyx_v_iwork = 0;
13182 PyArrayObject *__pyx_v_rwork = 0;
13183 double __pyx_v_t;
13184 PyArrayObject *__pyx_v_x = 0;
13185 PyArrayObject *__pyx_v_u = 0;
13186 PyArrayObject *__pyx_v_r = 0;
13187 #if !CYTHON_VECTORCALL
13188 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
13189 #endif
13190 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13191 PyObject* values[6] = {0,0,0,0,0,0};
13192 int __pyx_lineno = 0;
13193 const char *__pyx_filename = NULL;
13194 int __pyx_clineno = 0;
13195 PyObject *__pyx_r = 0;
13196 __Pyx_RefNannyDeclarations
13197 __Pyx_RefNannySetupContext("poissonsEquationExp1D_r (wrapper)", 0);
13198 #if !CYTHON_VECTORCALL
13199 #if CYTHON_ASSUME_SAFE_SIZE
13200 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
13201 #else
13202 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
13203 #endif
13204 #endif
13205 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
13206 {
13207 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
13208 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
13209 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 195, __pyx_L3_error)
13210 if (__pyx_kwds_len > 0) {
13211 switch (__pyx_nargs) {
13212 case 6:
13213 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13214 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 195, __pyx_L3_error)
13215 CYTHON_FALLTHROUGH;
13216 case 5:
13217 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13218 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 195, __pyx_L3_error)
13219 CYTHON_FALLTHROUGH;
13220 case 4:
13221 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13222 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 195, __pyx_L3_error)
13223 CYTHON_FALLTHROUGH;
13224 case 3:
13225 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13226 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 195, __pyx_L3_error)
13227 CYTHON_FALLTHROUGH;
13228 case 2:
13229 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13230 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 195, __pyx_L3_error)
13231 CYTHON_FALLTHROUGH;
13232 case 1:
13233 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13234 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 195, __pyx_L3_error)
13235 CYTHON_FALLTHROUGH;
13236 case 0: break;
13237 default: goto __pyx_L5_argtuple_error;
13238 }
13239 const Py_ssize_t kwd_pos_args = __pyx_nargs;
13240 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp1D_r", 0) < (0)) __PYX_ERR(0, 195, __pyx_L3_error)
13241 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
13242 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, i); __PYX_ERR(0, 195, __pyx_L3_error) }
13243 }
13244 } else if (unlikely(__pyx_nargs != 6)) {
13245 goto __pyx_L5_argtuple_error;
13246 } else {
13247 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13248 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 195, __pyx_L3_error)
13249 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13250 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 195, __pyx_L3_error)
13251 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13252 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 195, __pyx_L3_error)
13253 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13254 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 195, __pyx_L3_error)
13255 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13256 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 195, __pyx_L3_error)
13257 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13258 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 195, __pyx_L3_error)
13259 }
13260 __pyx_v_iwork = ((PyArrayObject *)values[0]);
13261 __pyx_v_rwork = ((PyArrayObject *)values[1]);
13262 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 195, __pyx_L3_error)
13263 __pyx_v_x = ((PyArrayObject *)values[3]);
13264 __pyx_v_u = ((PyArrayObject *)values[4]);
13265 __pyx_v_r = ((PyArrayObject *)values[5]);
13266 }
13267 goto __pyx_L6_skip;
13268 __pyx_L5_argtuple_error:;
13269 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 195, __pyx_L3_error)
13270 __pyx_L6_skip:;
13271 goto __pyx_L4_argument_unpacking_done;
13272 __pyx_L3_error:;
13273 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13274 Py_XDECREF(values[__pyx_temp]);
13275 }
13276 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
13277 __Pyx_RefNannyFinishContext();
13278 return NULL;
13279 __pyx_L4_argument_unpacking_done:;
13280 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 195, __pyx_L1_error)
13281 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 195, __pyx_L1_error)
13282 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 195, __pyx_L1_error)
13283 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 195, __pyx_L1_error)
13284 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 195, __pyx_L1_error)
13285 __pyx_r = __pyx_pf_20canalyticalSolutions_72poissonsEquationExp1D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
13286
13287 /* function exit code */
13288 goto __pyx_L0;
13289 __pyx_L1_error:;
13290 __pyx_r = NULL;
13291 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13292 Py_XDECREF(values[__pyx_temp]);
13293 }
13294 goto __pyx_L7_cleaned_up;
13295 __pyx_L0:;
13296 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13297 Py_XDECREF(values[__pyx_temp]);
13298 }
13299 __pyx_L7_cleaned_up:;
13300
13301 __Pyx_RefNannyFinishContext();
13302 return __pyx_r;
13303}
13304
13305static PyObject *__pyx_pf_20canalyticalSolutions_72poissonsEquationExp1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
13306 PyObject *__pyx_r = NULL;
13307 __Pyx_RefNannyDeclarations
13308 npy_intp __pyx_t_1;
13309 npy_intp __pyx_t_2;
13310 PyObject *__pyx_t_3 = NULL;
13311 int __pyx_lineno = 0;
13312 const char *__pyx_filename = NULL;
13313 int __pyx_clineno = 0;
13314 __Pyx_RefNannySetupContext("poissonsEquationExp1D_r", 0);
13315
13316 /* "canalyticalSolutions.pyx":196
13317 *
13318 * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
13319 * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
13320 *
13321 *
13322*/
13323 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
13324
13325 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
13326
13327 if (unlikely(__pyx_t_2 == 0)) {
13328 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
13329 __PYX_ERR(0, 196, __pyx_L1_error)
13330 }
13331 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
13332 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
13333 __PYX_ERR(0, 196, __pyx_L1_error)
13334 }
13335 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp1D_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error)
13336 __Pyx_GOTREF(__pyx_t_3);
13337
13338
13339 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 196, __pyx_L1_error)
13340 {
13341 PyObject *__pyx_temp;
13342 {
13343 __pyx_temp = __pyx_r;
13344 __pyx_r = ((PyObject*)__pyx_t_3);
13345 }
13346 __Pyx_XDECREF(__pyx_temp);
13347 }
13348 __pyx_t_3 = 0;
13349 goto __pyx_L0;
13350
13351 /* "canalyticalSolutions.pyx":195
13352 *
13353 *
13354 * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
13355 * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
13356 *
13357*/
13358
13359 /* function exit code */
13360 __pyx_L1_error:;
13361 __Pyx_XDECREF(__pyx_t_3);
13362 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
13363 __pyx_r = NULL;
13364 __pyx_L0:;
13365 __Pyx_XGIVEREF(__pyx_r);
13366 __Pyx_RefNannyFinishContext();
13367 return __pyx_r;
13368}
13369
13370/* "canalyticalSolutions.pyx":199
13371 *
13372 *
13373 * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
13374 * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
13375 *
13376*/
13377
13378/* Python wrapper */
13379static PyObject *__pyx_pw_20canalyticalSolutions_75poissonsEquationExp2D_r(PyObject *__pyx_self,
13380#if CYTHON_VECTORCALL
13381PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13382#else
13383PyObject *__pyx_args, PyObject *__pyx_kwds
13384#endif
13385); /*proto*/
13386static PyMethodDef __pyx_mdef_20canalyticalSolutions_75poissonsEquationExp2D_r = {"poissonsEquationExp2D_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_75poissonsEquationExp2D_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
13387static PyObject *__pyx_pw_20canalyticalSolutions_75poissonsEquationExp2D_r(PyObject *__pyx_self,
13388#if CYTHON_VECTORCALL
13389PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13390#else
13391PyObject *__pyx_args, PyObject *__pyx_kwds
13392#endif
13393) {
13394 PyArrayObject *__pyx_v_iwork = 0;
13395 PyArrayObject *__pyx_v_rwork = 0;
13396 double __pyx_v_t;
13397 PyArrayObject *__pyx_v_x = 0;
13398 PyArrayObject *__pyx_v_u = 0;
13399 PyArrayObject *__pyx_v_r = 0;
13400 #if !CYTHON_VECTORCALL
13401 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
13402 #endif
13403 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13404 PyObject* values[6] = {0,0,0,0,0,0};
13405 int __pyx_lineno = 0;
13406 const char *__pyx_filename = NULL;
13407 int __pyx_clineno = 0;
13408 PyObject *__pyx_r = 0;
13409 __Pyx_RefNannyDeclarations
13410 __Pyx_RefNannySetupContext("poissonsEquationExp2D_r (wrapper)", 0);
13411 #if !CYTHON_VECTORCALL
13412 #if CYTHON_ASSUME_SAFE_SIZE
13413 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
13414 #else
13415 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
13416 #endif
13417 #endif
13418 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
13419 {
13420 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
13421 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
13422 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 199, __pyx_L3_error)
13423 if (__pyx_kwds_len > 0) {
13424 switch (__pyx_nargs) {
13425 case 6:
13426 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13427 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 199, __pyx_L3_error)
13428 CYTHON_FALLTHROUGH;
13429 case 5:
13430 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13431 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 199, __pyx_L3_error)
13432 CYTHON_FALLTHROUGH;
13433 case 4:
13434 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13435 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 199, __pyx_L3_error)
13436 CYTHON_FALLTHROUGH;
13437 case 3:
13438 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13439 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 199, __pyx_L3_error)
13440 CYTHON_FALLTHROUGH;
13441 case 2:
13442 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13443 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 199, __pyx_L3_error)
13444 CYTHON_FALLTHROUGH;
13445 case 1:
13446 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13447 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 199, __pyx_L3_error)
13448 CYTHON_FALLTHROUGH;
13449 case 0: break;
13450 default: goto __pyx_L5_argtuple_error;
13451 }
13452 const Py_ssize_t kwd_pos_args = __pyx_nargs;
13453 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp2D_r", 0) < (0)) __PYX_ERR(0, 199, __pyx_L3_error)
13454 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
13455 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, i); __PYX_ERR(0, 199, __pyx_L3_error) }
13456 }
13457 } else if (unlikely(__pyx_nargs != 6)) {
13458 goto __pyx_L5_argtuple_error;
13459 } else {
13460 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13461 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 199, __pyx_L3_error)
13462 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13463 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 199, __pyx_L3_error)
13464 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13465 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 199, __pyx_L3_error)
13466 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13467 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 199, __pyx_L3_error)
13468 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13469 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 199, __pyx_L3_error)
13470 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13471 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 199, __pyx_L3_error)
13472 }
13473 __pyx_v_iwork = ((PyArrayObject *)values[0]);
13474 __pyx_v_rwork = ((PyArrayObject *)values[1]);
13475 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 199, __pyx_L3_error)
13476 __pyx_v_x = ((PyArrayObject *)values[3]);
13477 __pyx_v_u = ((PyArrayObject *)values[4]);
13478 __pyx_v_r = ((PyArrayObject *)values[5]);
13479 }
13480 goto __pyx_L6_skip;
13481 __pyx_L5_argtuple_error:;
13482 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 199, __pyx_L3_error)
13483 __pyx_L6_skip:;
13484 goto __pyx_L4_argument_unpacking_done;
13485 __pyx_L3_error:;
13486 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13487 Py_XDECREF(values[__pyx_temp]);
13488 }
13489 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
13490 __Pyx_RefNannyFinishContext();
13491 return NULL;
13492 __pyx_L4_argument_unpacking_done:;
13493 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 199, __pyx_L1_error)
13494 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 199, __pyx_L1_error)
13495 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 199, __pyx_L1_error)
13496 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 199, __pyx_L1_error)
13497 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 199, __pyx_L1_error)
13498 __pyx_r = __pyx_pf_20canalyticalSolutions_74poissonsEquationExp2D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
13499
13500 /* function exit code */
13501 goto __pyx_L0;
13502 __pyx_L1_error:;
13503 __pyx_r = NULL;
13504 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13505 Py_XDECREF(values[__pyx_temp]);
13506 }
13507 goto __pyx_L7_cleaned_up;
13508 __pyx_L0:;
13509 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13510 Py_XDECREF(values[__pyx_temp]);
13511 }
13512 __pyx_L7_cleaned_up:;
13513
13514 __Pyx_RefNannyFinishContext();
13515 return __pyx_r;
13516}
13517
13518static PyObject *__pyx_pf_20canalyticalSolutions_74poissonsEquationExp2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
13519 PyObject *__pyx_r = NULL;
13520 __Pyx_RefNannyDeclarations
13521 npy_intp __pyx_t_1;
13522 npy_intp __pyx_t_2;
13523 PyObject *__pyx_t_3 = NULL;
13524 int __pyx_lineno = 0;
13525 const char *__pyx_filename = NULL;
13526 int __pyx_clineno = 0;
13527 __Pyx_RefNannySetupContext("poissonsEquationExp2D_r", 0);
13528
13529 /* "canalyticalSolutions.pyx":200
13530 *
13531 * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
13532 * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
13533 *
13534 *
13535*/
13536 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
13537
13538 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
13539
13540 if (unlikely(__pyx_t_2 == 0)) {
13541 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
13542 __PYX_ERR(0, 200, __pyx_L1_error)
13543 }
13544 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
13545 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
13546 __PYX_ERR(0, 200, __pyx_L1_error)
13547 }
13548 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp2D_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
13549 __Pyx_GOTREF(__pyx_t_3);
13550
13551
13552 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 200, __pyx_L1_error)
13553 {
13554 PyObject *__pyx_temp;
13555 {
13556 __pyx_temp = __pyx_r;
13557 __pyx_r = ((PyObject*)__pyx_t_3);
13558 }
13559 __Pyx_XDECREF(__pyx_temp);
13560 }
13561 __pyx_t_3 = 0;
13562 goto __pyx_L0;
13563
13564 /* "canalyticalSolutions.pyx":199
13565 *
13566 *
13567 * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
13568 * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
13569 *
13570*/
13571
13572 /* function exit code */
13573 __pyx_L1_error:;
13574 __Pyx_XDECREF(__pyx_t_3);
13575 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
13576 __pyx_r = NULL;
13577 __pyx_L0:;
13578 __Pyx_XGIVEREF(__pyx_r);
13579 __Pyx_RefNannyFinishContext();
13580 return __pyx_r;
13581}
13582
13583/* "canalyticalSolutions.pyx":203
13584 *
13585 *
13586 * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
13587 * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
13588 *
13589*/
13590
13591/* Python wrapper */
13592static PyObject *__pyx_pw_20canalyticalSolutions_77poissonsEquationExp3D_r(PyObject *__pyx_self,
13593#if CYTHON_VECTORCALL
13594PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13595#else
13596PyObject *__pyx_args, PyObject *__pyx_kwds
13597#endif
13598); /*proto*/
13599static PyMethodDef __pyx_mdef_20canalyticalSolutions_77poissonsEquationExp3D_r = {"poissonsEquationExp3D_r", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_77poissonsEquationExp3D_r, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
13600static PyObject *__pyx_pw_20canalyticalSolutions_77poissonsEquationExp3D_r(PyObject *__pyx_self,
13601#if CYTHON_VECTORCALL
13602PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13603#else
13604PyObject *__pyx_args, PyObject *__pyx_kwds
13605#endif
13606) {
13607 PyArrayObject *__pyx_v_iwork = 0;
13608 PyArrayObject *__pyx_v_rwork = 0;
13609 double __pyx_v_t;
13610 PyArrayObject *__pyx_v_x = 0;
13611 PyArrayObject *__pyx_v_u = 0;
13612 PyArrayObject *__pyx_v_r = 0;
13613 #if !CYTHON_VECTORCALL
13614 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
13615 #endif
13616 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13617 PyObject* values[6] = {0,0,0,0,0,0};
13618 int __pyx_lineno = 0;
13619 const char *__pyx_filename = NULL;
13620 int __pyx_clineno = 0;
13621 PyObject *__pyx_r = 0;
13622 __Pyx_RefNannyDeclarations
13623 __Pyx_RefNannySetupContext("poissonsEquationExp3D_r (wrapper)", 0);
13624 #if !CYTHON_VECTORCALL
13625 #if CYTHON_ASSUME_SAFE_SIZE
13626 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
13627 #else
13628 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
13629 #endif
13630 #endif
13631 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
13632 {
13633 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,&__pyx_mstate_global->__pyx_n_u_r,0};
13634 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
13635 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 203, __pyx_L3_error)
13636 if (__pyx_kwds_len > 0) {
13637 switch (__pyx_nargs) {
13638 case 6:
13639 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13640 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 203, __pyx_L3_error)
13641 CYTHON_FALLTHROUGH;
13642 case 5:
13643 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13644 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 203, __pyx_L3_error)
13645 CYTHON_FALLTHROUGH;
13646 case 4:
13647 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13648 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 203, __pyx_L3_error)
13649 CYTHON_FALLTHROUGH;
13650 case 3:
13651 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13652 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 203, __pyx_L3_error)
13653 CYTHON_FALLTHROUGH;
13654 case 2:
13655 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13656 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 203, __pyx_L3_error)
13657 CYTHON_FALLTHROUGH;
13658 case 1:
13659 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13660 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 203, __pyx_L3_error)
13661 CYTHON_FALLTHROUGH;
13662 case 0: break;
13663 default: goto __pyx_L5_argtuple_error;
13664 }
13665 const Py_ssize_t kwd_pos_args = __pyx_nargs;
13666 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poissonsEquationExp3D_r", 0) < (0)) __PYX_ERR(0, 203, __pyx_L3_error)
13667 for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
13668 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, i); __PYX_ERR(0, 203, __pyx_L3_error) }
13669 }
13670 } else if (unlikely(__pyx_nargs != 6)) {
13671 goto __pyx_L5_argtuple_error;
13672 } else {
13673 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13674 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 203, __pyx_L3_error)
13675 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13676 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 203, __pyx_L3_error)
13677 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13678 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 203, __pyx_L3_error)
13679 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13680 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 203, __pyx_L3_error)
13681 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13682 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 203, __pyx_L3_error)
13683 values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
13684 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 203, __pyx_L3_error)
13685 }
13686 __pyx_v_iwork = ((PyArrayObject *)values[0]);
13687 __pyx_v_rwork = ((PyArrayObject *)values[1]);
13688 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error)
13689 __pyx_v_x = ((PyArrayObject *)values[3]);
13690 __pyx_v_u = ((PyArrayObject *)values[4]);
13691 __pyx_v_r = ((PyArrayObject *)values[5]);
13692 }
13693 goto __pyx_L6_skip;
13694 __pyx_L5_argtuple_error:;
13695 __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 203, __pyx_L3_error)
13696 __pyx_L6_skip:;
13697 goto __pyx_L4_argument_unpacking_done;
13698 __pyx_L3_error:;
13699 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13700 Py_XDECREF(values[__pyx_temp]);
13701 }
13702 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
13703 __Pyx_RefNannyFinishContext();
13704 return NULL;
13705 __pyx_L4_argument_unpacking_done:;
13706 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
13707 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
13708 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
13709 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
13710 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
13711 __pyx_r = __pyx_pf_20canalyticalSolutions_76poissonsEquationExp3D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
13712
13713 /* function exit code */
13714 goto __pyx_L0;
13715 __pyx_L1_error:;
13716 __pyx_r = NULL;
13717 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13718 Py_XDECREF(values[__pyx_temp]);
13719 }
13720 goto __pyx_L7_cleaned_up;
13721 __pyx_L0:;
13722 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13723 Py_XDECREF(values[__pyx_temp]);
13724 }
13725 __pyx_L7_cleaned_up:;
13726
13727 __Pyx_RefNannyFinishContext();
13728 return __pyx_r;
13729}
13730
13731static PyObject *__pyx_pf_20canalyticalSolutions_76poissonsEquationExp3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
13732 PyObject *__pyx_r = NULL;
13733 __Pyx_RefNannyDeclarations
13734 npy_intp __pyx_t_1;
13735 npy_intp __pyx_t_2;
13736 PyObject *__pyx_t_3 = NULL;
13737 int __pyx_lineno = 0;
13738 const char *__pyx_filename = NULL;
13739 int __pyx_clineno = 0;
13740 __Pyx_RefNannySetupContext("poissonsEquationExp3D_r", 0);
13741
13742 /* "canalyticalSolutions.pyx":204
13743 *
13744 * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
13745 * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
13746 *
13747 *
13748*/
13749 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
13750
13751 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
13752
13753 if (unlikely(__pyx_t_2 == 0)) {
13754 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
13755 __PYX_ERR(0, 204, __pyx_L1_error)
13756 }
13757 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
13758 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
13759 __PYX_ERR(0, 204, __pyx_L1_error)
13760 }
13761 __pyx_t_3 = __Pyx_PyLong_From_int(poissonsEquationExp3D_r(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_r)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error)
13762 __Pyx_GOTREF(__pyx_t_3);
13763
13764
13765 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 204, __pyx_L1_error)
13766 {
13767 PyObject *__pyx_temp;
13768 {
13769 __pyx_temp = __pyx_r;
13770 __pyx_r = ((PyObject*)__pyx_t_3);
13771 }
13772 __Pyx_XDECREF(__pyx_temp);
13773 }
13774 __pyx_t_3 = 0;
13775 goto __pyx_L0;
13776
13777 /* "canalyticalSolutions.pyx":203
13778 *
13779 *
13780 * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
13781 * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
13782 *
13783*/
13784
13785 /* function exit code */
13786 __pyx_L1_error:;
13787 __Pyx_XDECREF(__pyx_t_3);
13788 __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
13789 __pyx_r = NULL;
13790 __pyx_L0:;
13791 __Pyx_XGIVEREF(__pyx_r);
13792 __Pyx_RefNannyFinishContext();
13793 return __pyx_r;
13794}
13795
13796/* "canalyticalSolutions.pyx":207
13797 *
13798 *
13799 * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
13800 * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
13801 *
13802*/
13803
13804/* Python wrapper */
13805static PyObject *__pyx_pw_20canalyticalSolutions_79STflowSphere_P(PyObject *__pyx_self,
13806#if CYTHON_VECTORCALL
13807PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13808#else
13809PyObject *__pyx_args, PyObject *__pyx_kwds
13810#endif
13811); /*proto*/
13812static PyMethodDef __pyx_mdef_20canalyticalSolutions_79STflowSphere_P = {"STflowSphere_P", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_79STflowSphere_P, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
13813static PyObject *__pyx_pw_20canalyticalSolutions_79STflowSphere_P(PyObject *__pyx_self,
13814#if CYTHON_VECTORCALL
13815PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
13816#else
13817PyObject *__pyx_args, PyObject *__pyx_kwds
13818#endif
13819) {
13820 PyArrayObject *__pyx_v_iwork = 0;
13821 PyArrayObject *__pyx_v_rwork = 0;
13822 double __pyx_v_t;
13823 PyArrayObject *__pyx_v_x = 0;
13824 PyArrayObject *__pyx_v_u = 0;
13825 #if !CYTHON_VECTORCALL
13826 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
13827 #endif
13828 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13829 PyObject* values[5] = {0,0,0,0,0};
13830 int __pyx_lineno = 0;
13831 const char *__pyx_filename = NULL;
13832 int __pyx_clineno = 0;
13833 PyObject *__pyx_r = 0;
13834 __Pyx_RefNannyDeclarations
13835 __Pyx_RefNannySetupContext("STflowSphere_P (wrapper)", 0);
13836 #if !CYTHON_VECTORCALL
13837 #if CYTHON_ASSUME_SAFE_SIZE
13838 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
13839 #else
13840 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
13841 #endif
13842 #endif
13843 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
13844 {
13845 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
13846 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
13847 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 207, __pyx_L3_error)
13848 if (__pyx_kwds_len > 0) {
13849 switch (__pyx_nargs) {
13850 case 5:
13851 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13852 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 207, __pyx_L3_error)
13853 CYTHON_FALLTHROUGH;
13854 case 4:
13855 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13856 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 207, __pyx_L3_error)
13857 CYTHON_FALLTHROUGH;
13858 case 3:
13859 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13860 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 207, __pyx_L3_error)
13861 CYTHON_FALLTHROUGH;
13862 case 2:
13863 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13864 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 207, __pyx_L3_error)
13865 CYTHON_FALLTHROUGH;
13866 case 1:
13867 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13868 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 207, __pyx_L3_error)
13869 CYTHON_FALLTHROUGH;
13870 case 0: break;
13871 default: goto __pyx_L5_argtuple_error;
13872 }
13873 const Py_ssize_t kwd_pos_args = __pyx_nargs;
13874 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "STflowSphere_P", 0) < (0)) __PYX_ERR(0, 207, __pyx_L3_error)
13875 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
13876 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, i); __PYX_ERR(0, 207, __pyx_L3_error) }
13877 }
13878 } else if (unlikely(__pyx_nargs != 5)) {
13879 goto __pyx_L5_argtuple_error;
13880 } else {
13881 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
13882 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 207, __pyx_L3_error)
13883 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
13884 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 207, __pyx_L3_error)
13885 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
13886 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 207, __pyx_L3_error)
13887 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
13888 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 207, __pyx_L3_error)
13889 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
13890 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 207, __pyx_L3_error)
13891 }
13892 __pyx_v_iwork = ((PyArrayObject *)values[0]);
13893 __pyx_v_rwork = ((PyArrayObject *)values[1]);
13894 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 207, __pyx_L3_error)
13895 __pyx_v_x = ((PyArrayObject *)values[3]);
13896 __pyx_v_u = ((PyArrayObject *)values[4]);
13897 }
13898 goto __pyx_L6_skip;
13899 __pyx_L5_argtuple_error:;
13900 __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 207, __pyx_L3_error)
13901 __pyx_L6_skip:;
13902 goto __pyx_L4_argument_unpacking_done;
13903 __pyx_L3_error:;
13904 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13905 Py_XDECREF(values[__pyx_temp]);
13906 }
13907 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
13908 __Pyx_RefNannyFinishContext();
13909 return NULL;
13910 __pyx_L4_argument_unpacking_done:;
13911 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 207, __pyx_L1_error)
13912 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 207, __pyx_L1_error)
13913 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 207, __pyx_L1_error)
13914 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 207, __pyx_L1_error)
13915 __pyx_r = __pyx_pf_20canalyticalSolutions_78STflowSphere_P(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
13916
13917 /* function exit code */
13918 goto __pyx_L0;
13919 __pyx_L1_error:;
13920 __pyx_r = NULL;
13921 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13922 Py_XDECREF(values[__pyx_temp]);
13923 }
13924 goto __pyx_L7_cleaned_up;
13925 __pyx_L0:;
13926 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
13927 Py_XDECREF(values[__pyx_temp]);
13928 }
13929 __pyx_L7_cleaned_up:;
13930
13931 __Pyx_RefNannyFinishContext();
13932 return __pyx_r;
13933}
13934
13935static PyObject *__pyx_pf_20canalyticalSolutions_78STflowSphere_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
13936 PyObject *__pyx_r = NULL;
13937 __Pyx_RefNannyDeclarations
13938 npy_intp __pyx_t_1;
13939 npy_intp __pyx_t_2;
13940 PyObject *__pyx_t_3 = NULL;
13941 int __pyx_lineno = 0;
13942 const char *__pyx_filename = NULL;
13943 int __pyx_clineno = 0;
13944 __Pyx_RefNannySetupContext("STflowSphere_P", 0);
13945
13946 /* "canalyticalSolutions.pyx":208
13947 *
13948 * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
13949 * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
13950 *
13951 *
13952*/
13953 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
13954
13955 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
13956
13957 if (unlikely(__pyx_t_2 == 0)) {
13958 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
13959 __PYX_ERR(0, 208, __pyx_L1_error)
13960 }
13961 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
13962 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
13963 __PYX_ERR(0, 208, __pyx_L1_error)
13964 }
13965 __pyx_t_3 = __Pyx_PyLong_From_int(STflowSphere_P(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error)
13966 __Pyx_GOTREF(__pyx_t_3);
13967
13968
13969 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 208, __pyx_L1_error)
13970 {
13971 PyObject *__pyx_temp;
13972 {
13973 __pyx_temp = __pyx_r;
13974 __pyx_r = ((PyObject*)__pyx_t_3);
13975 }
13976 __Pyx_XDECREF(__pyx_temp);
13977 }
13978 __pyx_t_3 = 0;
13979 goto __pyx_L0;
13980
13981 /* "canalyticalSolutions.pyx":207
13982 *
13983 *
13984 * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
13985 * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
13986 *
13987*/
13988
13989 /* function exit code */
13990 __pyx_L1_error:;
13991 __Pyx_XDECREF(__pyx_t_3);
13992 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
13993 __pyx_r = NULL;
13994 __pyx_L0:;
13995 __Pyx_XGIVEREF(__pyx_r);
13996 __Pyx_RefNannyFinishContext();
13997 return __pyx_r;
13998}
13999
14000/* "canalyticalSolutions.pyx":211
14001 *
14002 *
14003 * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
14004 * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
14005 *
14006*/
14007
14008/* Python wrapper */
14009static PyObject *__pyx_pw_20canalyticalSolutions_81STflowSphere_Vx(PyObject *__pyx_self,
14010#if CYTHON_VECTORCALL
14011PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14012#else
14013PyObject *__pyx_args, PyObject *__pyx_kwds
14014#endif
14015); /*proto*/
14016static PyMethodDef __pyx_mdef_20canalyticalSolutions_81STflowSphere_Vx = {"STflowSphere_Vx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_81STflowSphere_Vx, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
14017static PyObject *__pyx_pw_20canalyticalSolutions_81STflowSphere_Vx(PyObject *__pyx_self,
14018#if CYTHON_VECTORCALL
14019PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14020#else
14021PyObject *__pyx_args, PyObject *__pyx_kwds
14022#endif
14023) {
14024 PyArrayObject *__pyx_v_iwork = 0;
14025 PyArrayObject *__pyx_v_rwork = 0;
14026 double __pyx_v_t;
14027 PyArrayObject *__pyx_v_x = 0;
14028 PyArrayObject *__pyx_v_u = 0;
14029 #if !CYTHON_VECTORCALL
14030 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
14031 #endif
14032 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14033 PyObject* values[5] = {0,0,0,0,0};
14034 int __pyx_lineno = 0;
14035 const char *__pyx_filename = NULL;
14036 int __pyx_clineno = 0;
14037 PyObject *__pyx_r = 0;
14038 __Pyx_RefNannyDeclarations
14039 __Pyx_RefNannySetupContext("STflowSphere_Vx (wrapper)", 0);
14040 #if !CYTHON_VECTORCALL
14041 #if CYTHON_ASSUME_SAFE_SIZE
14042 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
14043 #else
14044 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
14045 #endif
14046 #endif
14047 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
14048 {
14049 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
14050 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
14051 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 211, __pyx_L3_error)
14052 if (__pyx_kwds_len > 0) {
14053 switch (__pyx_nargs) {
14054 case 5:
14055 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
14056 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 211, __pyx_L3_error)
14057 CYTHON_FALLTHROUGH;
14058 case 4:
14059 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
14060 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 211, __pyx_L3_error)
14061 CYTHON_FALLTHROUGH;
14062 case 3:
14063 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
14064 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 211, __pyx_L3_error)
14065 CYTHON_FALLTHROUGH;
14066 case 2:
14067 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
14068 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 211, __pyx_L3_error)
14069 CYTHON_FALLTHROUGH;
14070 case 1:
14071 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
14072 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 211, __pyx_L3_error)
14073 CYTHON_FALLTHROUGH;
14074 case 0: break;
14075 default: goto __pyx_L5_argtuple_error;
14076 }
14077 const Py_ssize_t kwd_pos_args = __pyx_nargs;
14078 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "STflowSphere_Vx", 0) < (0)) __PYX_ERR(0, 211, __pyx_L3_error)
14079 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
14080 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, i); __PYX_ERR(0, 211, __pyx_L3_error) }
14081 }
14082 } else if (unlikely(__pyx_nargs != 5)) {
14083 goto __pyx_L5_argtuple_error;
14084 } else {
14085 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
14086 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 211, __pyx_L3_error)
14087 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
14088 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 211, __pyx_L3_error)
14089 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
14090 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 211, __pyx_L3_error)
14091 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
14092 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 211, __pyx_L3_error)
14093 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
14094 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 211, __pyx_L3_error)
14095 }
14096 __pyx_v_iwork = ((PyArrayObject *)values[0]);
14097 __pyx_v_rwork = ((PyArrayObject *)values[1]);
14098 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L3_error)
14099 __pyx_v_x = ((PyArrayObject *)values[3]);
14100 __pyx_v_u = ((PyArrayObject *)values[4]);
14101 }
14102 goto __pyx_L6_skip;
14103 __pyx_L5_argtuple_error:;
14104 __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 211, __pyx_L3_error)
14105 __pyx_L6_skip:;
14106 goto __pyx_L4_argument_unpacking_done;
14107 __pyx_L3_error:;
14108 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14109 Py_XDECREF(values[__pyx_temp]);
14110 }
14111 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vx", __pyx_clineno, __pyx_lineno, __pyx_filename);
14112 __Pyx_RefNannyFinishContext();
14113 return NULL;
14114 __pyx_L4_argument_unpacking_done:;
14115 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 211, __pyx_L1_error)
14116 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 211, __pyx_L1_error)
14117 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 211, __pyx_L1_error)
14118 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 211, __pyx_L1_error)
14119 __pyx_r = __pyx_pf_20canalyticalSolutions_80STflowSphere_Vx(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
14120
14121 /* function exit code */
14122 goto __pyx_L0;
14123 __pyx_L1_error:;
14124 __pyx_r = NULL;
14125 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14126 Py_XDECREF(values[__pyx_temp]);
14127 }
14128 goto __pyx_L7_cleaned_up;
14129 __pyx_L0:;
14130 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14131 Py_XDECREF(values[__pyx_temp]);
14132 }
14133 __pyx_L7_cleaned_up:;
14134
14135 __Pyx_RefNannyFinishContext();
14136 return __pyx_r;
14137}
14138
14139static PyObject *__pyx_pf_20canalyticalSolutions_80STflowSphere_Vx(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
14140 PyObject *__pyx_r = NULL;
14141 __Pyx_RefNannyDeclarations
14142 npy_intp __pyx_t_1;
14143 npy_intp __pyx_t_2;
14144 PyObject *__pyx_t_3 = NULL;
14145 int __pyx_lineno = 0;
14146 const char *__pyx_filename = NULL;
14147 int __pyx_clineno = 0;
14148 __Pyx_RefNannySetupContext("STflowSphere_Vx", 0);
14149
14150 /* "canalyticalSolutions.pyx":212
14151 *
14152 * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
14153 * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
14154 *
14155 *
14156*/
14157 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
14158
14159 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
14160
14161 if (unlikely(__pyx_t_2 == 0)) {
14162 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
14163 __PYX_ERR(0, 212, __pyx_L1_error)
14164 }
14165 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
14166 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
14167 __PYX_ERR(0, 212, __pyx_L1_error)
14168 }
14169 __pyx_t_3 = __Pyx_PyLong_From_int(STflowSphere_Vx(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error)
14170 __Pyx_GOTREF(__pyx_t_3);
14171
14172
14173 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 212, __pyx_L1_error)
14174 {
14175 PyObject *__pyx_temp;
14176 {
14177 __pyx_temp = __pyx_r;
14178 __pyx_r = ((PyObject*)__pyx_t_3);
14179 }
14180 __Pyx_XDECREF(__pyx_temp);
14181 }
14182 __pyx_t_3 = 0;
14183 goto __pyx_L0;
14184
14185 /* "canalyticalSolutions.pyx":211
14186 *
14187 *
14188 * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
14189 * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
14190 *
14191*/
14192
14193 /* function exit code */
14194 __pyx_L1_error:;
14195 __Pyx_XDECREF(__pyx_t_3);
14196 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vx", __pyx_clineno, __pyx_lineno, __pyx_filename);
14197 __pyx_r = NULL;
14198 __pyx_L0:;
14199 __Pyx_XGIVEREF(__pyx_r);
14200 __Pyx_RefNannyFinishContext();
14201 return __pyx_r;
14202}
14203
14204/* "canalyticalSolutions.pyx":215
14205 *
14206 *
14207 * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
14208 * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
14209 *
14210*/
14211
14212/* Python wrapper */
14213static PyObject *__pyx_pw_20canalyticalSolutions_83STflowSphere_Vy(PyObject *__pyx_self,
14214#if CYTHON_VECTORCALL
14215PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14216#else
14217PyObject *__pyx_args, PyObject *__pyx_kwds
14218#endif
14219); /*proto*/
14220static PyMethodDef __pyx_mdef_20canalyticalSolutions_83STflowSphere_Vy = {"STflowSphere_Vy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_83STflowSphere_Vy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
14221static PyObject *__pyx_pw_20canalyticalSolutions_83STflowSphere_Vy(PyObject *__pyx_self,
14222#if CYTHON_VECTORCALL
14223PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14224#else
14225PyObject *__pyx_args, PyObject *__pyx_kwds
14226#endif
14227) {
14228 PyArrayObject *__pyx_v_iwork = 0;
14229 PyArrayObject *__pyx_v_rwork = 0;
14230 double __pyx_v_t;
14231 PyArrayObject *__pyx_v_x = 0;
14232 PyArrayObject *__pyx_v_u = 0;
14233 #if !CYTHON_VECTORCALL
14234 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
14235 #endif
14236 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14237 PyObject* values[5] = {0,0,0,0,0};
14238 int __pyx_lineno = 0;
14239 const char *__pyx_filename = NULL;
14240 int __pyx_clineno = 0;
14241 PyObject *__pyx_r = 0;
14242 __Pyx_RefNannyDeclarations
14243 __Pyx_RefNannySetupContext("STflowSphere_Vy (wrapper)", 0);
14244 #if !CYTHON_VECTORCALL
14245 #if CYTHON_ASSUME_SAFE_SIZE
14246 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
14247 #else
14248 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
14249 #endif
14250 #endif
14251 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
14252 {
14253 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
14254 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
14255 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 215, __pyx_L3_error)
14256 if (__pyx_kwds_len > 0) {
14257 switch (__pyx_nargs) {
14258 case 5:
14259 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
14260 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 215, __pyx_L3_error)
14261 CYTHON_FALLTHROUGH;
14262 case 4:
14263 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
14264 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 215, __pyx_L3_error)
14265 CYTHON_FALLTHROUGH;
14266 case 3:
14267 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
14268 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 215, __pyx_L3_error)
14269 CYTHON_FALLTHROUGH;
14270 case 2:
14271 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
14272 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 215, __pyx_L3_error)
14273 CYTHON_FALLTHROUGH;
14274 case 1:
14275 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
14276 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 215, __pyx_L3_error)
14277 CYTHON_FALLTHROUGH;
14278 case 0: break;
14279 default: goto __pyx_L5_argtuple_error;
14280 }
14281 const Py_ssize_t kwd_pos_args = __pyx_nargs;
14282 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "STflowSphere_Vy", 0) < (0)) __PYX_ERR(0, 215, __pyx_L3_error)
14283 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
14284 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, i); __PYX_ERR(0, 215, __pyx_L3_error) }
14285 }
14286 } else if (unlikely(__pyx_nargs != 5)) {
14287 goto __pyx_L5_argtuple_error;
14288 } else {
14289 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
14290 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 215, __pyx_L3_error)
14291 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
14292 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 215, __pyx_L3_error)
14293 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
14294 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 215, __pyx_L3_error)
14295 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
14296 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 215, __pyx_L3_error)
14297 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
14298 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 215, __pyx_L3_error)
14299 }
14300 __pyx_v_iwork = ((PyArrayObject *)values[0]);
14301 __pyx_v_rwork = ((PyArrayObject *)values[1]);
14302 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 215, __pyx_L3_error)
14303 __pyx_v_x = ((PyArrayObject *)values[3]);
14304 __pyx_v_u = ((PyArrayObject *)values[4]);
14305 }
14306 goto __pyx_L6_skip;
14307 __pyx_L5_argtuple_error:;
14308 __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 215, __pyx_L3_error)
14309 __pyx_L6_skip:;
14310 goto __pyx_L4_argument_unpacking_done;
14311 __pyx_L3_error:;
14312 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14313 Py_XDECREF(values[__pyx_temp]);
14314 }
14315 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vy", __pyx_clineno, __pyx_lineno, __pyx_filename);
14316 __Pyx_RefNannyFinishContext();
14317 return NULL;
14318 __pyx_L4_argument_unpacking_done:;
14319 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 215, __pyx_L1_error)
14320 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 215, __pyx_L1_error)
14321 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 215, __pyx_L1_error)
14322 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 215, __pyx_L1_error)
14323 __pyx_r = __pyx_pf_20canalyticalSolutions_82STflowSphere_Vy(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
14324
14325 /* function exit code */
14326 goto __pyx_L0;
14327 __pyx_L1_error:;
14328 __pyx_r = NULL;
14329 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14330 Py_XDECREF(values[__pyx_temp]);
14331 }
14332 goto __pyx_L7_cleaned_up;
14333 __pyx_L0:;
14334 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14335 Py_XDECREF(values[__pyx_temp]);
14336 }
14337 __pyx_L7_cleaned_up:;
14338
14339 __Pyx_RefNannyFinishContext();
14340 return __pyx_r;
14341}
14342
14343static PyObject *__pyx_pf_20canalyticalSolutions_82STflowSphere_Vy(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
14344 PyObject *__pyx_r = NULL;
14345 __Pyx_RefNannyDeclarations
14346 npy_intp __pyx_t_1;
14347 npy_intp __pyx_t_2;
14348 PyObject *__pyx_t_3 = NULL;
14349 int __pyx_lineno = 0;
14350 const char *__pyx_filename = NULL;
14351 int __pyx_clineno = 0;
14352 __Pyx_RefNannySetupContext("STflowSphere_Vy", 0);
14353
14354 /* "canalyticalSolutions.pyx":216
14355 *
14356 * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
14357 * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
14358 *
14359 *
14360*/
14361 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
14362
14363 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
14364
14365 if (unlikely(__pyx_t_2 == 0)) {
14366 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
14367 __PYX_ERR(0, 216, __pyx_L1_error)
14368 }
14369 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
14370 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
14371 __PYX_ERR(0, 216, __pyx_L1_error)
14372 }
14373 __pyx_t_3 = __Pyx_PyLong_From_int(STflowSphere_Vy(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error)
14374 __Pyx_GOTREF(__pyx_t_3);
14375
14376
14377 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 216, __pyx_L1_error)
14378 {
14379 PyObject *__pyx_temp;
14380 {
14381 __pyx_temp = __pyx_r;
14382 __pyx_r = ((PyObject*)__pyx_t_3);
14383 }
14384 __Pyx_XDECREF(__pyx_temp);
14385 }
14386 __pyx_t_3 = 0;
14387 goto __pyx_L0;
14388
14389 /* "canalyticalSolutions.pyx":215
14390 *
14391 *
14392 * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
14393 * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
14394 *
14395*/
14396
14397 /* function exit code */
14398 __pyx_L1_error:;
14399 __Pyx_XDECREF(__pyx_t_3);
14400 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vy", __pyx_clineno, __pyx_lineno, __pyx_filename);
14401 __pyx_r = NULL;
14402 __pyx_L0:;
14403 __Pyx_XGIVEREF(__pyx_r);
14404 __Pyx_RefNannyFinishContext();
14405 return __pyx_r;
14406}
14407
14408/* "canalyticalSolutions.pyx":219
14409 *
14410 *
14411 * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
14412 * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
14413*/
14414
14415/* Python wrapper */
14416static PyObject *__pyx_pw_20canalyticalSolutions_85STflowSphere_Vz(PyObject *__pyx_self,
14417#if CYTHON_VECTORCALL
14418PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14419#else
14420PyObject *__pyx_args, PyObject *__pyx_kwds
14421#endif
14422); /*proto*/
14423static PyMethodDef __pyx_mdef_20canalyticalSolutions_85STflowSphere_Vz = {"STflowSphere_Vz", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_20canalyticalSolutions_85STflowSphere_Vz, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
14424static PyObject *__pyx_pw_20canalyticalSolutions_85STflowSphere_Vz(PyObject *__pyx_self,
14425#if CYTHON_VECTORCALL
14426PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14427#else
14428PyObject *__pyx_args, PyObject *__pyx_kwds
14429#endif
14430) {
14431 PyArrayObject *__pyx_v_iwork = 0;
14432 PyArrayObject *__pyx_v_rwork = 0;
14433 double __pyx_v_t;
14434 PyArrayObject *__pyx_v_x = 0;
14435 PyArrayObject *__pyx_v_u = 0;
14436 #if !CYTHON_VECTORCALL
14437 CYTHON_UNUSED Py_ssize_t __pyx_nargs;
14438 #endif
14439 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14440 PyObject* values[5] = {0,0,0,0,0};
14441 int __pyx_lineno = 0;
14442 const char *__pyx_filename = NULL;
14443 int __pyx_clineno = 0;
14444 PyObject *__pyx_r = 0;
14445 __Pyx_RefNannyDeclarations
14446 __Pyx_RefNannySetupContext("STflowSphere_Vz (wrapper)", 0);
14447 #if !CYTHON_VECTORCALL
14448 #if CYTHON_ASSUME_SAFE_SIZE
14449 __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
14450 #else
14451 __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
14452 #endif
14453 #endif
14454 __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
14455 {
14456 PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iwork,&__pyx_mstate_global->__pyx_n_u_rwork,&__pyx_mstate_global->__pyx_n_u_t,&__pyx_mstate_global->__pyx_n_u_x,&__pyx_mstate_global->__pyx_n_u_u,0};
14457 const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
14458 if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 219, __pyx_L3_error)
14459 if (__pyx_kwds_len > 0) {
14460 switch (__pyx_nargs) {
14461 case 5:
14462 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
14463 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 219, __pyx_L3_error)
14464 CYTHON_FALLTHROUGH;
14465 case 4:
14466 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
14467 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 219, __pyx_L3_error)
14468 CYTHON_FALLTHROUGH;
14469 case 3:
14470 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
14471 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 219, __pyx_L3_error)
14472 CYTHON_FALLTHROUGH;
14473 case 2:
14474 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
14475 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 219, __pyx_L3_error)
14476 CYTHON_FALLTHROUGH;
14477 case 1:
14478 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
14479 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 219, __pyx_L3_error)
14480 CYTHON_FALLTHROUGH;
14481 case 0: break;
14482 default: goto __pyx_L5_argtuple_error;
14483 }
14484 const Py_ssize_t kwd_pos_args = __pyx_nargs;
14485 if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "STflowSphere_Vz", 0) < (0)) __PYX_ERR(0, 219, __pyx_L3_error)
14486 for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
14487 if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, i); __PYX_ERR(0, 219, __pyx_L3_error) }
14488 }
14489 } else if (unlikely(__pyx_nargs != 5)) {
14490 goto __pyx_L5_argtuple_error;
14491 } else {
14492 values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
14493 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 219, __pyx_L3_error)
14494 values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
14495 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 219, __pyx_L3_error)
14496 values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
14497 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 219, __pyx_L3_error)
14498 values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
14499 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 219, __pyx_L3_error)
14500 values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
14501 if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 219, __pyx_L3_error)
14502 }
14503 __pyx_v_iwork = ((PyArrayObject *)values[0]);
14504 __pyx_v_rwork = ((PyArrayObject *)values[1]);
14505 __pyx_v_t = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 219, __pyx_L3_error)
14506 __pyx_v_x = ((PyArrayObject *)values[3]);
14507 __pyx_v_u = ((PyArrayObject *)values[4]);
14508 }
14509 goto __pyx_L6_skip;
14510 __pyx_L5_argtuple_error:;
14511 __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 219, __pyx_L3_error)
14512 __pyx_L6_skip:;
14513 goto __pyx_L4_argument_unpacking_done;
14514 __pyx_L3_error:;
14515 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14516 Py_XDECREF(values[__pyx_temp]);
14517 }
14518 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vz", __pyx_clineno, __pyx_lineno, __pyx_filename);
14519 __Pyx_RefNannyFinishContext();
14520 return NULL;
14521 __pyx_L4_argument_unpacking_done:;
14522 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 219, __pyx_L1_error)
14523 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 219, __pyx_L1_error)
14524 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 219, __pyx_L1_error)
14525 if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_mstate_global->__pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 219, __pyx_L1_error)
14526 __pyx_r = __pyx_pf_20canalyticalSolutions_84STflowSphere_Vz(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
14527
14528 /* function exit code */
14529 goto __pyx_L0;
14530 __pyx_L1_error:;
14531 __pyx_r = NULL;
14532 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14533 Py_XDECREF(values[__pyx_temp]);
14534 }
14535 goto __pyx_L7_cleaned_up;
14536 __pyx_L0:;
14537 for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14538 Py_XDECREF(values[__pyx_temp]);
14539 }
14540 __pyx_L7_cleaned_up:;
14541
14542 __Pyx_RefNannyFinishContext();
14543 return __pyx_r;
14544}
14545
14546static PyObject *__pyx_pf_20canalyticalSolutions_84STflowSphere_Vz(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
14547 PyObject *__pyx_r = NULL;
14548 __Pyx_RefNannyDeclarations
14549 npy_intp __pyx_t_1;
14550 npy_intp __pyx_t_2;
14551 PyObject *__pyx_t_3 = NULL;
14552 int __pyx_lineno = 0;
14553 const char *__pyx_filename = NULL;
14554 int __pyx_clineno = 0;
14555 __Pyx_RefNannySetupContext("STflowSphere_Vz", 0);
14556
14557 /* "canalyticalSolutions.pyx":220
14558 *
14559 * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
14560 * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
14561*/
14562 __pyx_t_1 = __pyx_f_5numpy_7ndarray_4size___get__(__pyx_v_x);
14563
14564 __pyx_t_2 = (__pyx_f_5numpy_7ndarray_5shape___get__(__pyx_v_x)[(__pyx_f_5numpy_7ndarray_4ndim___get__(__pyx_v_x) - 1)]);
14565
14566 if (unlikely(__pyx_t_2 == 0)) {
14567 PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
14568 __PYX_ERR(0, 220, __pyx_L1_error)
14569 }
14570 else if (sizeof(npy_intp) == sizeof(long) && (!(((npy_intp)-1) > 0)) && unlikely(__pyx_t_2 == (npy_intp)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) {
14571 PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
14572 __PYX_ERR(0, 220, __pyx_L1_error)
14573 }
14574 __pyx_t_3 = __Pyx_PyLong_From_int(STflowSphere_Vz(((int *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_iwork)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_rwork)), __Pyx_div_npy_intp(__pyx_t_1, __pyx_t_2, 0), __pyx_v_t, ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_x)), ((double *)__pyx_f_5numpy_7ndarray_4data___get__(__pyx_v_u)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error)
14575 __Pyx_GOTREF(__pyx_t_3);
14576
14577
14578 if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 0) < (0)) __PYX_ERR(0, 220, __pyx_L1_error)
14579 {
14580 PyObject *__pyx_temp;
14581 {
14582 __pyx_temp = __pyx_r;
14583 __pyx_r = ((PyObject*)__pyx_t_3);
14584 }
14585 __Pyx_XDECREF(__pyx_temp);
14586 }
14587 __pyx_t_3 = 0;
14588 goto __pyx_L0;
14589
14590 /* "canalyticalSolutions.pyx":219
14591 *
14592 *
14593 * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
14594 * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
14595*/
14596
14597 /* function exit code */
14598 __pyx_L1_error:;
14599 __Pyx_XDECREF(__pyx_t_3);
14600 __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vz", __pyx_clineno, __pyx_lineno, __pyx_filename);
14601 __pyx_r = NULL;
14602 __pyx_L0:;
14603 __Pyx_XGIVEREF(__pyx_r);
14604 __Pyx_RefNannyFinishContext();
14605 return __pyx_r;
14606}
14607/* #### Code section: module_exttypes ### */
14608
14609static PyMethodDef __pyx_methods[] = {
14610 {0, 0, 0, 0}
14611};
14612/* #### Code section: initfunc_declarations ### */
14613static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/
14614static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
14615static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/
14616static CYTHON_SMALL_CODE int __Pyx_InitAfterSharedUtility(void); /*proto*/
14617static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
14618static CYTHON_SMALL_CODE int __Pyx_modinit_Global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
14619static CYTHON_SMALL_CODE int __Pyx_modinit_Variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
14620static CYTHON_SMALL_CODE int __Pyx_modinit_Function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
14621static CYTHON_SMALL_CODE int __Pyx_modinit_Type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
14622static CYTHON_SMALL_CODE int __Pyx_modinit_Variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
14623static CYTHON_SMALL_CODE int __Pyx_modinit_Function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
14624static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/
14625/* #### Code section: init_module ### */
14626
14627static int __Pyx_modinit_Global_init_code(__pyx_mstatetype *__pyx_mstate) {
14628 __Pyx_RefNannyDeclarations
14629 CYTHON_UNUSED_VAR(__pyx_mstate);
14630 __Pyx_RefNannySetupContext("__Pyx_modinit_Global_init_code", 0);
14631 /*--- Global init code ---*/
14632 __Pyx_RefNannyFinishContext();
14633 return 0;
14634}
14635
14636static int __Pyx_modinit_Variable_export_code(__pyx_mstatetype *__pyx_mstate) {
14637 __Pyx_RefNannyDeclarations
14638 CYTHON_UNUSED_VAR(__pyx_mstate);
14639 __Pyx_RefNannySetupContext("__Pyx_modinit_Variable_export_code", 0);
14640 /*--- Variable export code ---*/
14641 __Pyx_RefNannyFinishContext();
14642 return 0;
14643}
14644
14645static int __Pyx_modinit_Function_export_code(__pyx_mstatetype *__pyx_mstate) {
14646 __Pyx_RefNannyDeclarations
14647 CYTHON_UNUSED_VAR(__pyx_mstate);
14648 __Pyx_RefNannySetupContext("__Pyx_modinit_Function_export_code", 0);
14649 /*--- Function export code ---*/
14650 __Pyx_RefNannyFinishContext();
14651 return 0;
14652}
14653
14654static int __Pyx_modinit_Type_import_code(__pyx_mstatetype *__pyx_mstate) {
14655 __Pyx_RefNannyDeclarations
14656 PyObject *__pyx_t_1 = NULL;
14657 int __pyx_lineno = 0;
14658 const char *__pyx_filename = NULL;
14659 int __pyx_clineno = 0;
14660 CYTHON_UNUSED_VAR(__pyx_mstate);
14661 __Pyx_RefNannySetupContext("__Pyx_modinit_Type_import_code", 0);
14662 /*--- Type import code ---*/
14663 __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error)
14664 __Pyx_GOTREF(__pyx_t_1);
14665 __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_3_0(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
14666 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14667 sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyTypeObject),
14668 #elif CYTHON_COMPILING_IN_LIMITED_API
14669 0, 0,
14670 #else
14671 sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyHeapTypeObject),
14672 #endif
14673 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error)
14674 __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14675 __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 229, __pyx_L1_error)
14676 __Pyx_GOTREF(__pyx_t_1);
14677 __pyx_mstate->__pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "dtype",
14678 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14679 sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArray_Descr),
14680 #elif CYTHON_COMPILING_IN_LIMITED_API
14681 sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArray_Descr),
14682 #else
14683 sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArray_Descr),
14684 #endif
14685 __Pyx_ImportType_CheckSize_Ignore_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 229, __pyx_L1_error)
14686 __pyx_mstate->__pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "flatiter",
14687 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14688 sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayIterObject),
14689 #elif CYTHON_COMPILING_IN_LIMITED_API
14690 sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayIterObject),
14691 #else
14692 sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayIterObject),
14693 #endif
14694 __Pyx_ImportType_CheckSize_Ignore_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 286, __pyx_L1_error)
14695 __pyx_mstate->__pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "broadcast",
14696 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14697 sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayMultiIterObject),
14698 #elif CYTHON_COMPILING_IN_LIMITED_API
14699 sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayMultiIterObject),
14700 #else
14701 sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayMultiIterObject),
14702 #endif
14703 __Pyx_ImportType_CheckSize_Ignore_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 290, __pyx_L1_error)
14704 __pyx_mstate->__pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "ndarray",
14705 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14706 sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayObject),
14707 #elif CYTHON_COMPILING_IN_LIMITED_API
14708 sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayObject),
14709 #else
14710 sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyArrayObject),
14711 #endif
14712 __Pyx_ImportType_CheckSize_Ignore_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 329, __pyx_L1_error)
14713 __pyx_mstate->__pyx_ptype_5numpy_generic = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "generic",
14714 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14715 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14716 #elif CYTHON_COMPILING_IN_LIMITED_API
14717 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14718 #else
14719 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14720 #endif
14721 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_generic) __PYX_ERR(1, 847, __pyx_L1_error)
14722 __pyx_mstate->__pyx_ptype_5numpy_number = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "number",
14723 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14724 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14725 #elif CYTHON_COMPILING_IN_LIMITED_API
14726 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14727 #else
14728 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14729 #endif
14730 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_number) __PYX_ERR(1, 849, __pyx_L1_error)
14731 __pyx_mstate->__pyx_ptype_5numpy_integer = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "integer",
14732 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14733 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14734 #elif CYTHON_COMPILING_IN_LIMITED_API
14735 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14736 #else
14737 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14738 #endif
14739 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_integer) __PYX_ERR(1, 851, __pyx_L1_error)
14740 __pyx_mstate->__pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "signedinteger",
14741 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14742 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14743 #elif CYTHON_COMPILING_IN_LIMITED_API
14744 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14745 #else
14746 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14747 #endif
14748 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 853, __pyx_L1_error)
14749 __pyx_mstate->__pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "unsignedinteger",
14750 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14751 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14752 #elif CYTHON_COMPILING_IN_LIMITED_API
14753 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14754 #else
14755 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14756 #endif
14757 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 855, __pyx_L1_error)
14758 __pyx_mstate->__pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "inexact",
14759 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14760 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14761 #elif CYTHON_COMPILING_IN_LIMITED_API
14762 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14763 #else
14764 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14765 #endif
14766 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 857, __pyx_L1_error)
14767 __pyx_mstate->__pyx_ptype_5numpy_floating = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "floating",
14768 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14769 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14770 #elif CYTHON_COMPILING_IN_LIMITED_API
14771 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14772 #else
14773 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14774 #endif
14775 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_floating) __PYX_ERR(1, 859, __pyx_L1_error)
14776 __pyx_mstate->__pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "complexfloating",
14777 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14778 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14779 #elif CYTHON_COMPILING_IN_LIMITED_API
14780 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14781 #else
14782 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14783 #endif
14784 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 861, __pyx_L1_error)
14785 __pyx_mstate->__pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "flexible",
14786 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14787 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14788 #elif CYTHON_COMPILING_IN_LIMITED_API
14789 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14790 #else
14791 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14792 #endif
14793 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 863, __pyx_L1_error)
14794 __pyx_mstate->__pyx_ptype_5numpy_character = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "character",
14795 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14796 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14797 #elif CYTHON_COMPILING_IN_LIMITED_API
14798 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14799 #else
14800 sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyObject),
14801 #endif
14802 __Pyx_ImportType_CheckSize_Warn_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_character) __PYX_ERR(1, 865, __pyx_L1_error)
14803 __pyx_mstate->__pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_3_0(__pyx_t_1, "numpy", "ufunc",
14804 #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
14805 sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyUFuncObject),
14806 #elif CYTHON_COMPILING_IN_LIMITED_API
14807 sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyUFuncObject),
14808 #else
14809 sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_3_0(PyUFuncObject),
14810 #endif
14811 __Pyx_ImportType_CheckSize_Ignore_3_3_0); if (!__pyx_mstate->__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 946, __pyx_L1_error)
14812 __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14813 __Pyx_RefNannyFinishContext();
14814 return 0;
14815 __pyx_L1_error:;
14816 __Pyx_XDECREF(__pyx_t_1);
14817 __Pyx_RefNannyFinishContext();
14818 return -1;
14819}
14820
14821static int __Pyx_modinit_Variable_import_code(__pyx_mstatetype *__pyx_mstate) {
14822 __Pyx_RefNannyDeclarations
14823 CYTHON_UNUSED_VAR(__pyx_mstate);
14824 __Pyx_RefNannySetupContext("__Pyx_modinit_Variable_import_code", 0);
14825 /*--- Variable import code ---*/
14826 __Pyx_RefNannyFinishContext();
14827 return 0;
14828}
14829
14830static int __Pyx_modinit_Function_import_code(__pyx_mstatetype *__pyx_mstate) {
14831 __Pyx_RefNannyDeclarations
14832 CYTHON_UNUSED_VAR(__pyx_mstate);
14833 __Pyx_RefNannySetupContext("__Pyx_modinit_Function_import_code", 0);
14834 /*--- Function import code ---*/
14835 __Pyx_RefNannyFinishContext();
14836 return 0;
14837}
14838
14839#if CYTHON_PEP489_MULTI_PHASE_INIT
14840static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
14841static int __pyx_pymod_exec_canalyticalSolutions(PyObject* module); /*proto*/
14842static PyModuleDef_Slot __pyx_moduledef_slots[] = {
14843 {Py_mod_create, (void*)__pyx_pymod_create},
14844 {Py_mod_exec, (void*)__pyx_pymod_exec_canalyticalSolutions},
14845 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
14846 {Py_mod_gil, __Pyx_FREETHREADING_COMPATIBLE},
14847 #endif
14848 #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE
14849 {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
14850 #endif
14851 {0, NULL}
14852};
14853#endif
14854
14855#ifdef __cplusplus
14856namespace {
14857 struct PyModuleDef __pyx_moduledef =
14858 #else
14859 static struct PyModuleDef __pyx_moduledef =
14860 #endif
14861 {
14862 PyModuleDef_HEAD_INIT,
14863 "canalyticalSolutions",
14864 0, /* m_doc */
14865 #if CYTHON_USE_MODULE_STATE
14866 sizeof(__pyx_mstatetype), /* m_size */
14867 #else
14868 (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */
14869 #endif
14870 __pyx_methods /* m_methods */,
14871 #if CYTHON_PEP489_MULTI_PHASE_INIT
14872 __pyx_moduledef_slots, /* m_slots */
14873 #else
14874 NULL, /* m_reload */
14875 #endif
14876 #if CYTHON_USE_MODULE_STATE
14877 __pyx_m_traverse, /* m_traverse */
14878 __pyx_m_clear, /* m_clear */
14879 NULL /* m_free */
14880 #else
14881 NULL, /* m_traverse */
14882 NULL, /* m_clear */
14883 NULL /* m_free */
14884 #endif
14885 };
14886 #ifdef __cplusplus
14887} /* anonymous namespace */
14888#endif
14889
14890/* PyModInitFuncType */
14891#ifndef CYTHON_NO_PYINIT_EXPORT
14892 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
14893#else
14894 #ifdef __cplusplus
14895 #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
14896 #else
14897 #define __Pyx_PyMODINIT_FUNC PyObject *
14898 #endif
14899#endif
14900
14901__Pyx_PyMODINIT_FUNC PyInit_canalyticalSolutions(void) CYTHON_SMALL_CODE; /*proto*/
14902__Pyx_PyMODINIT_FUNC PyInit_canalyticalSolutions(void)
14903#if CYTHON_PEP489_MULTI_PHASE_INIT
14904{
14905 return PyModuleDef_Init(&__pyx_moduledef);
14906}
14907/* ModuleCreationPEP489 */
14908#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x030A0000 &&\
14909 (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)))
14910static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) {
14911 {
14912 PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think
14913 if (!module) {
14914 if (!PyErr_ExceptionMatches(PyExc_Exception)) {
14915 goto bad; // BaseException
14916 }
14917 PyErr_Clear(); // just try the 3.8-3.12 version
14918 module = PyImport_ImportModule("_xxsubinterpreters");
14919 if (!module) goto bad;
14920 }
14921 PyObject *current = PyObject_CallMethod(module, "get_current", NULL);
14922 Py_DECREF(module);
14923 if (!current) goto bad;
14924 if (PyTuple_Check(current)) {
14925 PyObject *new_current = PySequence_GetItem(current, 0);
14926 Py_DECREF(current);
14927 current = new_current;
14928 if (!new_current) goto bad;
14929 }
14930 long long as_c_int = PyLong_AsLongLong(current);
14931 Py_DECREF(current);
14932 return as_c_int;
14933 }
14934 bad:
14935 PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n");
14936 return -1;
14937}
14938#endif
14939#if !CYTHON_USE_MODULE_STATE
14940static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
14941 static PY_INT64_T main_interpreter_id = -1;
14942#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
14943 PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
14944#elif CYTHON_COMPILING_IN_GRAAL
14945 PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
14946#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x030A0000 &&\
14947 (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)))
14948 PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId();
14949#elif CYTHON_COMPILING_IN_LIMITED_API
14950 PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get());
14951#else
14952 PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
14953#endif
14954 if (unlikely(current_id == -1)) {
14955 return -1;
14956 }
14957 if (main_interpreter_id == -1) {
14958 main_interpreter_id = current_id;
14959 return 0;
14960 } else if (unlikely(main_interpreter_id != current_id)) {
14961 PyErr_SetString(
14962 PyExc_ImportError,
14963 "Interpreter change detected - this module can only be loaded into one interpreter per process.");
14964 return -1;
14965 }
14966 return 0;
14967}
14968#endif
14969static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
14970{
14971 PyObject *value = PyObject_GetAttrString(spec, from_name);
14972 int result = 0;
14973 if (likely(value)) {
14974 if (allow_none || value != Py_None) {
14975 result = PyDict_SetItemString(moddict, to_name, value);
14976 }
14977 Py_DECREF(value);
14978 } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
14979 PyErr_Clear();
14980 } else {
14981 result = -1;
14982 }
14983 return result;
14984}
14985static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
14986 PyObject *module = NULL, *moddict, *modname;
14987 CYTHON_UNUSED_VAR(def);
14988 #if !CYTHON_USE_MODULE_STATE
14989 if (__Pyx_check_single_interpreter())
14990 return NULL;
14991 #endif
14992 if (__pyx_m)
14993 return __Pyx_NewRef(__pyx_m);
14994 modname = PyObject_GetAttrString(spec, "name");
14995 if (unlikely(!modname)) goto bad;
14996 module = PyModule_NewObject(modname);
14997 Py_DECREF(modname);
14998 if (unlikely(!module)) goto bad;
14999 moddict = PyModule_GetDict(module);
15000 if (unlikely(!moddict)) goto bad;
15001 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
15002 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
15003 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
15004 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
15005 return module;
15006bad:
15007 Py_XDECREF(module);
15008 return NULL;
15009}
15010
15011
15012static CYTHON_SMALL_CODE int __pyx_pymod_exec_canalyticalSolutions(PyObject *__pyx_pyinit_module)
15013#endif
15014{
15015 int stringtab_initialized = 0;
15016 #if CYTHON_USE_MODULE_STATE
15017 int pystate_addmodule_run = 0;
15018 #endif
15019 __pyx_mstatetype *__pyx_mstate = NULL;
15020 PyObject *__pyx_t_1 = NULL;
15021 PyObject *__pyx_t_2 = NULL;
15022 PyObject *__pyx_t_3 = NULL;
15023 int __pyx_lineno = 0;
15024 const char *__pyx_filename = NULL;
15025 int __pyx_clineno = 0;
15026 __Pyx_RefNannyDeclarations
15027 #if CYTHON_PEP489_MULTI_PHASE_INIT
15028 if (__pyx_m) {
15029 if (__pyx_m == __pyx_pyinit_module) return 0;
15030 PyErr_SetString(PyExc_RuntimeError, "Module 'canalyticalSolutions' has already been imported. Re-initialisation is not supported.");
15031 return -1;
15032 }
15033 #else
15034 if (__pyx_m) return __Pyx_NewRef(__pyx_m);
15035 #endif
15036 /*--- Module creation code ---*/
15037 #if CYTHON_PEP489_MULTI_PHASE_INIT
15038 __pyx_t_1 = __pyx_pyinit_module;
15039 Py_INCREF(__pyx_t_1);
15040 #else
15041 __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
15042 #endif
15043 #if CYTHON_USE_MODULE_STATE
15044 {
15045 int add_module_result = __Pyx_State_AddModule(__pyx_t_1, &__pyx_moduledef);
15046 __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "canalyticalSolutions" pseudovariable */
15047 if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
15048 pystate_addmodule_run = 1;
15049 }
15050 #else
15051 __pyx_m = __pyx_t_1;
15052 #endif
15053 #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
15054 PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
15055 #endif
15056 __pyx_mstate = __pyx_mstate_global;
15057 CYTHON_UNUSED_VAR(__pyx_t_1);
15058 __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
15059 Py_INCREF(__pyx_mstate->__pyx_d);
15060 __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
15061 __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
15062 if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
15063 /* ImportRefnannyAPI */
15064 #if CYTHON_REFNANNY
15065 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
15066 if (!__Pyx_RefNanny) {
15067 if (PyErr_ExceptionMatches(PyExc_Exception)) {
15068 PyErr_Clear();
15069 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
15070 }
15071 if (!__Pyx_RefNanny)
15072 Py_FatalError("failed to import 'refnanny' module");
15073 }
15074 #endif
15075
15076__Pyx_RefNannySetupContext("PyInit_canalyticalSolutions", 0);
15077 __Pyx_init_runtime_version();
15078 if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15079 __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
15080 __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
15081 __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
15082 /*--- Library function declarations ---*/
15083 /*--- Initialize various global constants etc. ---*/
15084 if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15085 stringtab_initialized = 1;
15086 if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15087 if (__pyx_module_is_main_canalyticalSolutions) {
15088 if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15089 }
15090 {
15091 PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
15092 if (!PyDict_GetItemString(modules, "canalyticalSolutions")) {
15093 if (unlikely((PyDict_SetItemString(modules, "canalyticalSolutions", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
15094 }
15095 }
15096 /*--- Builtin init code ---*/
15097 if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15098 /*--- Constants init code ---*/
15099 if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15100 if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15101 /*--- Global type/function init code ---*/
15102 (void)__Pyx_modinit_Global_init_code(__pyx_mstate);
15103 (void)__Pyx_modinit_Variable_export_code(__pyx_mstate);
15104 (void)__Pyx_modinit_Function_export_code(__pyx_mstate);
15105 /*--- Type init code ---*/
15106 if (unlikely((__Pyx_modinit_Type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
15107 (void)__Pyx_modinit_Variable_import_code(__pyx_mstate);
15108 (void)__Pyx_modinit_Function_import_code(__pyx_mstate);
15109 if (__Pyx_InitAfterSharedUtility() < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15110 /*--- Execution code ---*/
15111
15112 /* "canalyticalSolutions.pyx":3
15113 * # A type of -*- python -*- file
15114 * # cython: language_level=3
15115 * import numpy as np # <<<<<<<<<<<<<<
15116 * cimport numpy as np
15117 * cdef extern from "analyticalSolutions.h":
15118*/
15119 __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
15120 __pyx_t_2 = __pyx_t_1;
15121 __Pyx_GOTREF(__pyx_t_2);
15122 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_np, __pyx_t_2) < (0)) __PYX_ERR(0, 3, __pyx_L1_error)
15123 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15124
15125 /* "canalyticalSolutions.pyx":51
15126 *
15127 *
15128 * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15129 * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15130 *
15131*/
15132 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
15133 __Pyx_GOTREF(__pyx_t_2);
15134 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 51, __pyx_L1_error)
15135 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_1PlaneCouetteFlow_u, 0, __pyx_mstate_global->__pyx_n_u_PlaneCouetteFlow_u, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
15136 __Pyx_GOTREF(__pyx_t_3);
15137 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15138 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15139 #endif
15140 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15141 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15142 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PlaneCouetteFlow_u, __pyx_t_3) < (0)) __PYX_ERR(0, 51, __pyx_L1_error)
15143 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15144
15145 /* "canalyticalSolutions.pyx":55
15146 *
15147 *
15148 * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15149 * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15150 *
15151*/
15152 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
15153 __Pyx_GOTREF(__pyx_t_3);
15154 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 55, __pyx_L1_error)
15155 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_3diffusionSin1D, 0, __pyx_mstate_global->__pyx_n_u_diffusionSin1D, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
15156 __Pyx_GOTREF(__pyx_t_2);
15157 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15158 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15159 #endif
15160 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15161 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15162 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_diffusionSin1D, __pyx_t_2) < (0)) __PYX_ERR(0, 55, __pyx_L1_error)
15163 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15164
15165 /* "canalyticalSolutions.pyx":59
15166 *
15167 *
15168 * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15169 * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15170 *
15171*/
15172 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
15173 __Pyx_GOTREF(__pyx_t_2);
15174 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 59, __pyx_L1_error)
15175 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_5diffusionSin2D, 0, __pyx_mstate_global->__pyx_n_u_diffusionSin2D, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
15176 __Pyx_GOTREF(__pyx_t_3);
15177 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15178 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15179 #endif
15180 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15181 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15182 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_diffusionSin2D, __pyx_t_3) < (0)) __PYX_ERR(0, 59, __pyx_L1_error)
15183 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15184
15185 /* "canalyticalSolutions.pyx":63
15186 *
15187 *
15188 * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15189 * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15190 *
15191*/
15192 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error)
15193 __Pyx_GOTREF(__pyx_t_3);
15194 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 63, __pyx_L1_error)
15195 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_7diffusionSin3D, 0, __pyx_mstate_global->__pyx_n_u_diffusionSin3D, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error)
15196 __Pyx_GOTREF(__pyx_t_2);
15197 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15198 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15199 #endif
15200 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15201 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15202 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_diffusionSin3D, __pyx_t_2) < (0)) __PYX_ERR(0, 63, __pyx_L1_error)
15203 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15204
15205 /* "canalyticalSolutions.pyx":67
15206 *
15207 *
15208 * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15209 * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15210 *
15211*/
15212 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error)
15213 __Pyx_GOTREF(__pyx_t_2);
15214 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 67, __pyx_L1_error)
15215 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_9diffusionSin1D_r, 0, __pyx_mstate_global->__pyx_n_u_diffusionSin1D_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error)
15216 __Pyx_GOTREF(__pyx_t_3);
15217 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15218 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15219 #endif
15220 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15221 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15222 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_diffusionSin1D_r, __pyx_t_3) < (0)) __PYX_ERR(0, 67, __pyx_L1_error)
15223 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15224
15225 /* "canalyticalSolutions.pyx":71
15226 *
15227 *
15228 * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15229 * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15230 *
15231*/
15232 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error)
15233 __Pyx_GOTREF(__pyx_t_3);
15234 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 71, __pyx_L1_error)
15235 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_11diffusionSin2D_r, 0, __pyx_mstate_global->__pyx_n_u_diffusionSin2D_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
15236 __Pyx_GOTREF(__pyx_t_2);
15237 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15238 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15239 #endif
15240 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15241 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15242 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_diffusionSin2D_r, __pyx_t_2) < (0)) __PYX_ERR(0, 71, __pyx_L1_error)
15243 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15244
15245 /* "canalyticalSolutions.pyx":75
15246 *
15247 *
15248 * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15249 * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15250 *
15251*/
15252 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error)
15253 __Pyx_GOTREF(__pyx_t_2);
15254 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 75, __pyx_L1_error)
15255 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_13diffusionSin3D_r, 0, __pyx_mstate_global->__pyx_n_u_diffusionSin3D_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error)
15256 __Pyx_GOTREF(__pyx_t_3);
15257 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15258 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15259 #endif
15260 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15261 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15262 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_diffusionSin3D_r, __pyx_t_3) < (0)) __PYX_ERR(0, 75, __pyx_L1_error)
15263 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15264
15265 /* "canalyticalSolutions.pyx":79
15266 *
15267 *
15268 * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15269 * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15270 *
15271*/
15272 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
15273 __Pyx_GOTREF(__pyx_t_3);
15274 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 79, __pyx_L1_error)
15275 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_15LinearAD_DiracIC, 0, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
15276 __Pyx_GOTREF(__pyx_t_2);
15277 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15278 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15279 #endif
15280 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15281 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15282 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC, __pyx_t_2) < (0)) __PYX_ERR(0, 79, __pyx_L1_error)
15283 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15284
15285 /* "canalyticalSolutions.pyx":83
15286 *
15287 *
15288 * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
15289 * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
15290 *
15291*/
15292 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error)
15293 __Pyx_GOTREF(__pyx_t_2);
15294 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 83, __pyx_L1_error)
15295 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity, 0, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_advectiveVeloci, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
15296 __Pyx_GOTREF(__pyx_t_3);
15297 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15298 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15299 #endif
15300 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15301 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15302 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_advectiveVeloci, __pyx_t_3) < (0)) __PYX_ERR(0, 83, __pyx_L1_error)
15303 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15304
15305 /* "canalyticalSolutions.pyx":87
15306 *
15307 *
15308 * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
15309 * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
15310 *
15311*/
15312 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error)
15313 __Pyx_GOTREF(__pyx_t_3);
15314 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 87, __pyx_L1_error)
15315 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity, 0, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_diffusiveVeloci, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
15316 __Pyx_GOTREF(__pyx_t_2);
15317 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15318 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15319 #endif
15320 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15321 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15322 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_diffusiveVeloci, __pyx_t_2) < (0)) __PYX_ERR(0, 87, __pyx_L1_error)
15323 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15324
15325 /* "canalyticalSolutions.pyx":91
15326 *
15327 *
15328 * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
15329 * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
15330 *
15331*/
15332 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
15333 __Pyx_GOTREF(__pyx_t_2);
15334 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 91, __pyx_L1_error)
15335 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_21LinearAD_DiracIC_du, 0, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_du, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
15336 __Pyx_GOTREF(__pyx_t_3);
15337 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15338 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15339 #endif
15340 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15341 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15342 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_du, __pyx_t_3) < (0)) __PYX_ERR(0, 91, __pyx_L1_error)
15343 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15344
15345 /* "canalyticalSolutions.pyx":95
15346 *
15347 *
15348 * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15349 * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15350 *
15351*/
15352 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error)
15353 __Pyx_GOTREF(__pyx_t_3);
15354 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 95, __pyx_L1_error)
15355 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity, 0, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_totalVelocity, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error)
15356 __Pyx_GOTREF(__pyx_t_2);
15357 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15358 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15359 #endif
15360 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15361 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15362 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearAD_DiracIC_totalVelocity, __pyx_t_2) < (0)) __PYX_ERR(0, 95, __pyx_L1_error)
15363 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15364
15365 /* "canalyticalSolutions.pyx":99
15366 *
15367 *
15368 * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15369 * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15370 *
15371*/
15372 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
15373 __Pyx_GOTREF(__pyx_t_2);
15374 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 99, __pyx_L1_error)
15375 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_25LinearAD_SteadyState, 0, __pyx_mstate_global->__pyx_n_u_LinearAD_SteadyState, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
15376 __Pyx_GOTREF(__pyx_t_3);
15377 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15378 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15379 #endif
15380 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15381 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15382 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearAD_SteadyState, __pyx_t_3) < (0)) __PYX_ERR(0, 99, __pyx_L1_error)
15383 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15384
15385 /* "canalyticalSolutions.pyx":103
15386 *
15387 *
15388 * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15389 * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15390 *
15391*/
15392 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
15393 __Pyx_GOTREF(__pyx_t_3);
15394 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 103, __pyx_L1_error)
15395 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_27LinearADR_Decay_DiracIC, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Decay_DiracIC, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error)
15396 __Pyx_GOTREF(__pyx_t_2);
15397 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15398 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15399 #endif
15400 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15401 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15402 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Decay_DiracIC, __pyx_t_2) < (0)) __PYX_ERR(0, 103, __pyx_L1_error)
15403 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15404
15405 /* "canalyticalSolutions.pyx":107
15406 *
15407 *
15408 * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
15409 * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
15410 *
15411*/
15412 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
15413 __Pyx_GOTREF(__pyx_t_2);
15414 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 107, __pyx_L1_error)
15415 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Decay_DiracIC_dr, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error)
15416 __Pyx_GOTREF(__pyx_t_3);
15417 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15418 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15419 #endif
15420 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15421 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15422 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Decay_DiracIC_dr, __pyx_t_3) < (0)) __PYX_ERR(0, 107, __pyx_L1_error)
15423 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15424
15425 /* "canalyticalSolutions.pyx":111
15426 *
15427 *
15428 * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15429 * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15430 *
15431*/
15432 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
15433 __Pyx_GOTREF(__pyx_t_3);
15434 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 111, __pyx_L1_error)
15435 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Decay_DiracIC_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
15436 __Pyx_GOTREF(__pyx_t_2);
15437 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15438 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15439 #endif
15440 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15441 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15442 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Decay_DiracIC_r, __pyx_t_2) < (0)) __PYX_ERR(0, 111, __pyx_L1_error)
15443 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15444
15445 /* "canalyticalSolutions.pyx":115
15446 *
15447 *
15448 * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15449 * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15450 *
15451*/
15452 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error)
15453 __Pyx_GOTREF(__pyx_t_2);
15454 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 115, __pyx_L1_error)
15455 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_33LinearADR_Sine, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
15456 __Pyx_GOTREF(__pyx_t_3);
15457 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15458 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15459 #endif
15460 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15461 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15462 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine, __pyx_t_3) < (0)) __PYX_ERR(0, 115, __pyx_L1_error)
15463 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15464
15465 /* "canalyticalSolutions.pyx":119
15466 *
15467 *
15468 * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
15469 * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
15470 *
15471*/
15472 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
15473 __Pyx_GOTREF(__pyx_t_3);
15474 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 119, __pyx_L1_error)
15475 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_advectiveVelocity, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error)
15476 __Pyx_GOTREF(__pyx_t_2);
15477 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15478 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15479 #endif
15480 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15481 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15482 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_advectiveVelocity, __pyx_t_2) < (0)) __PYX_ERR(0, 119, __pyx_L1_error)
15483 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15484
15485 /* "canalyticalSolutions.pyx":123
15486 *
15487 *
15488 * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
15489 * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
15490 *
15491*/
15492 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
15493 __Pyx_GOTREF(__pyx_t_2);
15494 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 123, __pyx_L1_error)
15495 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_diffusiveVelocity, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error)
15496 __Pyx_GOTREF(__pyx_t_3);
15497 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15498 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15499 #endif
15500 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15501 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15502 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_diffusiveVelocity, __pyx_t_3) < (0)) __PYX_ERR(0, 123, __pyx_L1_error)
15503 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15504
15505 /* "canalyticalSolutions.pyx":127
15506 *
15507 *
15508 * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
15509 * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
15510 *
15511*/
15512 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 127, __pyx_L1_error)
15513 __Pyx_GOTREF(__pyx_t_3);
15514 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 127, __pyx_L1_error)
15515 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_39LinearADR_Sine_dr, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_dr, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error)
15516 __Pyx_GOTREF(__pyx_t_2);
15517 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15518 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15519 #endif
15520 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15521 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15522 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_dr, __pyx_t_2) < (0)) __PYX_ERR(0, 127, __pyx_L1_error)
15523 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15524
15525 /* "canalyticalSolutions.pyx":131
15526 *
15527 *
15528 * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
15529 * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
15530 *
15531*/
15532 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
15533 __Pyx_GOTREF(__pyx_t_2);
15534 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 131, __pyx_L1_error)
15535 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_41LinearADR_Sine_du, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_du, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 131, __pyx_L1_error)
15536 __Pyx_GOTREF(__pyx_t_3);
15537 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15538 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15539 #endif
15540 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15541 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15542 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_du, __pyx_t_3) < (0)) __PYX_ERR(0, 131, __pyx_L1_error)
15543 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15544
15545 /* "canalyticalSolutions.pyx":135
15546 *
15547 *
15548 * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15549 * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15550 *
15551*/
15552 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error)
15553 __Pyx_GOTREF(__pyx_t_3);
15554 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 135, __pyx_L1_error)
15555 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_43LinearADR_Sine_r, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
15556 __Pyx_GOTREF(__pyx_t_2);
15557 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15558 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15559 #endif
15560 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15561 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15562 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_r, __pyx_t_2) < (0)) __PYX_ERR(0, 135, __pyx_L1_error)
15563 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15564
15565 /* "canalyticalSolutions.pyx":139
15566 *
15567 *
15568 * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15569 * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15570 *
15571*/
15572 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
15573 __Pyx_GOTREF(__pyx_t_2);
15574 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 139, __pyx_L1_error)
15575 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_45LinearADR_Sine_totalVelocity, 0, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_totalVelocity, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
15576 __Pyx_GOTREF(__pyx_t_3);
15577 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15578 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15579 #endif
15580 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15581 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15582 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LinearADR_Sine_totalVelocity, __pyx_t_3) < (0)) __PYX_ERR(0, 139, __pyx_L1_error)
15583 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15584
15585 /* "canalyticalSolutions.pyx":143
15586 *
15587 *
15588 * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15589 * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15590 *
15591*/
15592 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
15593 __Pyx_GOTREF(__pyx_t_3);
15594 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 143, __pyx_L1_error)
15595 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_47NonlinearAD_SteadyState, 0, __pyx_mstate_global->__pyx_n_u_NonlinearAD_SteadyState, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
15596 __Pyx_GOTREF(__pyx_t_2);
15597 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15598 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15599 #endif
15600 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15601 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15602 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NonlinearAD_SteadyState, __pyx_t_2) < (0)) __PYX_ERR(0, 143, __pyx_L1_error)
15603 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15604
15605 /* "canalyticalSolutions.pyx":147
15606 *
15607 *
15608 * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15609 * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15610 *
15611*/
15612 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
15613 __Pyx_GOTREF(__pyx_t_2);
15614 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 147, __pyx_L1_error)
15615 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC, 0, __pyx_mstate_global->__pyx_n_u_NonlinearADR_Decay_DiracIC, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
15616 __Pyx_GOTREF(__pyx_t_3);
15617 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15618 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15619 #endif
15620 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15621 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15622 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NonlinearADR_Decay_DiracIC, __pyx_t_3) < (0)) __PYX_ERR(0, 147, __pyx_L1_error)
15623 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15624
15625 /* "canalyticalSolutions.pyx":151
15626 *
15627 *
15628 * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
15629 * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
15630 *
15631*/
15632 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
15633 __Pyx_GOTREF(__pyx_t_3);
15634 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 151, __pyx_L1_error)
15635 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr, 0, __pyx_mstate_global->__pyx_n_u_NonlinearADR_Decay_DiracIC_dr, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
15636 __Pyx_GOTREF(__pyx_t_2);
15637 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15638 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15639 #endif
15640 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15641 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15642 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NonlinearADR_Decay_DiracIC_dr, __pyx_t_2) < (0)) __PYX_ERR(0, 151, __pyx_L1_error)
15643 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15644
15645 /* "canalyticalSolutions.pyx":155
15646 *
15647 *
15648 * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15649 * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15650 *
15651*/
15652 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error)
15653 __Pyx_GOTREF(__pyx_t_2);
15654 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 155, __pyx_L1_error)
15655 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r, 0, __pyx_mstate_global->__pyx_n_u_NonlinearADR_Decay_DiracIC_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
15656 __Pyx_GOTREF(__pyx_t_3);
15657 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15658 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15659 #endif
15660 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15661 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15662 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NonlinearADR_Decay_DiracIC_r, __pyx_t_3) < (0)) __PYX_ERR(0, 155, __pyx_L1_error)
15663 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15664
15665 /* "canalyticalSolutions.pyx":159
15666 *
15667 *
15668 * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15669 * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15670 *
15671*/
15672 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
15673 __Pyx_GOTREF(__pyx_t_3);
15674 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 159, __pyx_L1_error)
15675 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_55NonlinearDAE, 0, __pyx_mstate_global->__pyx_n_u_NonlinearDAE, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
15676 __Pyx_GOTREF(__pyx_t_2);
15677 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15678 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15679 #endif
15680 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15681 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15682 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NonlinearDAE, __pyx_t_2) < (0)) __PYX_ERR(0, 159, __pyx_L1_error)
15683 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15684
15685 /* "canalyticalSolutions.pyx":163
15686 *
15687 *
15688 * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15689 * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15690 *
15691*/
15692 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error)
15693 __Pyx_GOTREF(__pyx_t_2);
15694 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 163, __pyx_L1_error)
15695 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_57NonlinearDAE_f, 0, __pyx_mstate_global->__pyx_n_u_NonlinearDAE_f, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
15696 __Pyx_GOTREF(__pyx_t_3);
15697 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15698 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15699 #endif
15700 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15701 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15702 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NonlinearDAE_f, __pyx_t_3) < (0)) __PYX_ERR(0, 163, __pyx_L1_error)
15703 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15704
15705 /* "canalyticalSolutions.pyx":167
15706 *
15707 *
15708 * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15709 * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15710 *
15711*/
15712 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
15713 __Pyx_GOTREF(__pyx_t_3);
15714 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 167, __pyx_L1_error)
15715 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_59PlanePoiseuilleFlow_u, 0, __pyx_mstate_global->__pyx_n_u_PlanePoiseuilleFlow_u, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error)
15716 __Pyx_GOTREF(__pyx_t_2);
15717 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15718 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15719 #endif
15720 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15721 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15722 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PlanePoiseuilleFlow_u, __pyx_t_2) < (0)) __PYX_ERR(0, 167, __pyx_L1_error)
15723 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15724
15725 /* "canalyticalSolutions.pyx":171
15726 *
15727 *
15728 * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15729 * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15730 *
15731*/
15732 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error)
15733 __Pyx_GOTREF(__pyx_t_2);
15734 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 171, __pyx_L1_error)
15735 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_61PoiseuillePipeFlow, 0, __pyx_mstate_global->__pyx_n_u_PoiseuillePipeFlow, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error)
15736 __Pyx_GOTREF(__pyx_t_3);
15737 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15738 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15739 #endif
15740 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15741 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15742 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PoiseuillePipeFlow, __pyx_t_3) < (0)) __PYX_ERR(0, 171, __pyx_L1_error)
15743 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15744
15745 /* "canalyticalSolutions.pyx":175
15746 *
15747 *
15748 * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15749 * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15750 *
15751*/
15752 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
15753 __Pyx_GOTREF(__pyx_t_3);
15754 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 175, __pyx_L1_error)
15755 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_63PoiseuillePipeFlow_P, 0, __pyx_mstate_global->__pyx_n_u_PoiseuillePipeFlow_P, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
15756 __Pyx_GOTREF(__pyx_t_2);
15757 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15758 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15759 #endif
15760 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15761 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15762 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PoiseuillePipeFlow_P, __pyx_t_2) < (0)) __PYX_ERR(0, 175, __pyx_L1_error)
15763 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15764
15765 /* "canalyticalSolutions.pyx":179
15766 *
15767 *
15768 * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15769 * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15770 *
15771*/
15772 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
15773 __Pyx_GOTREF(__pyx_t_2);
15774 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 179, __pyx_L1_error)
15775 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_65poissonsEquationExp1D, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp1D, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
15776 __Pyx_GOTREF(__pyx_t_3);
15777 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15778 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15779 #endif
15780 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15781 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15782 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp1D, __pyx_t_3) < (0)) __PYX_ERR(0, 179, __pyx_L1_error)
15783 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15784
15785 /* "canalyticalSolutions.pyx":183
15786 *
15787 *
15788 * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15789 * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15790 *
15791*/
15792 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error)
15793 __Pyx_GOTREF(__pyx_t_3);
15794 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 183, __pyx_L1_error)
15795 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_67poissonsEquationExp2D, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp2D, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L1_error)
15796 __Pyx_GOTREF(__pyx_t_2);
15797 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15798 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15799 #endif
15800 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15801 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15802 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp2D, __pyx_t_2) < (0)) __PYX_ERR(0, 183, __pyx_L1_error)
15803 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15804
15805 /* "canalyticalSolutions.pyx":187
15806 *
15807 *
15808 * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15809 * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15810 *
15811*/
15812 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error)
15813 __Pyx_GOTREF(__pyx_t_2);
15814 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 187, __pyx_L1_error)
15815 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_69poissonsEquationExp3D, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp3D, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
15816 __Pyx_GOTREF(__pyx_t_3);
15817 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15818 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15819 #endif
15820 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15821 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15822 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp3D, __pyx_t_3) < (0)) __PYX_ERR(0, 187, __pyx_L1_error)
15823 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15824
15825 /* "canalyticalSolutions.pyx":191
15826 *
15827 *
15828 * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
15829 * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
15830 *
15831*/
15832 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
15833 __Pyx_GOTREF(__pyx_t_3);
15834 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 191, __pyx_L1_error)
15835 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_71poissonsEquationExp3D_dr, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp3D_dr, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error)
15836 __Pyx_GOTREF(__pyx_t_2);
15837 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15838 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15839 #endif
15840 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15841 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15842 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp3D_dr, __pyx_t_2) < (0)) __PYX_ERR(0, 191, __pyx_L1_error)
15843 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15844
15845 /* "canalyticalSolutions.pyx":195
15846 *
15847 *
15848 * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15849 * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15850 *
15851*/
15852 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error)
15853 __Pyx_GOTREF(__pyx_t_2);
15854 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 195, __pyx_L1_error)
15855 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_73poissonsEquationExp1D_r, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp1D_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
15856 __Pyx_GOTREF(__pyx_t_3);
15857 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15858 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15859 #endif
15860 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15861 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15862 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp1D_r, __pyx_t_3) < (0)) __PYX_ERR(0, 195, __pyx_L1_error)
15863 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15864
15865 /* "canalyticalSolutions.pyx":199
15866 *
15867 *
15868 * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15869 * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15870 *
15871*/
15872 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
15873 __Pyx_GOTREF(__pyx_t_3);
15874 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 199, __pyx_L1_error)
15875 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_75poissonsEquationExp2D_r, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp2D_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error)
15876 __Pyx_GOTREF(__pyx_t_2);
15877 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15878 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15879 #endif
15880 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15881 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15882 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp2D_r, __pyx_t_2) < (0)) __PYX_ERR(0, 199, __pyx_L1_error)
15883 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15884
15885 /* "canalyticalSolutions.pyx":203
15886 *
15887 *
15888 * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
15889 * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
15890 *
15891*/
15892 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
15893 __Pyx_GOTREF(__pyx_t_2);
15894 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 203, __pyx_L1_error)
15895 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_77poissonsEquationExp3D_r, 0, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp3D_r, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error)
15896 __Pyx_GOTREF(__pyx_t_3);
15897 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15898 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15899 #endif
15900 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15901 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15902 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_poissonsEquationExp3D_r, __pyx_t_3) < (0)) __PYX_ERR(0, 203, __pyx_L1_error)
15903 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15904
15905 /* "canalyticalSolutions.pyx":207
15906 *
15907 *
15908 * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15909 * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15910 *
15911*/
15912 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
15913 __Pyx_GOTREF(__pyx_t_3);
15914 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 207, __pyx_L1_error)
15915 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_79STflowSphere_P, 0, __pyx_mstate_global->__pyx_n_u_STflowSphere_P, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error)
15916 __Pyx_GOTREF(__pyx_t_2);
15917 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15918 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15919 #endif
15920 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15921 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15922 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_STflowSphere_P, __pyx_t_2) < (0)) __PYX_ERR(0, 207, __pyx_L1_error)
15923 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15924
15925 /* "canalyticalSolutions.pyx":211
15926 *
15927 *
15928 * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15929 * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15930 *
15931*/
15932 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error)
15933 __Pyx_GOTREF(__pyx_t_2);
15934 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 211, __pyx_L1_error)
15935 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_81STflowSphere_Vx, 0, __pyx_mstate_global->__pyx_n_u_STflowSphere_Vx, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
15936 __Pyx_GOTREF(__pyx_t_3);
15937 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15938 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15939 #endif
15940 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15941 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15942 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_STflowSphere_Vx, __pyx_t_3) < (0)) __PYX_ERR(0, 211, __pyx_L1_error)
15943 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15944
15945 /* "canalyticalSolutions.pyx":215
15946 *
15947 *
15948 * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15949 * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15950 *
15951*/
15952 __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error)
15953 __Pyx_GOTREF(__pyx_t_3);
15954 if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 215, __pyx_L1_error)
15955 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_83STflowSphere_Vy, 0, __pyx_mstate_global->__pyx_n_u_STflowSphere_Vy, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error)
15956 __Pyx_GOTREF(__pyx_t_2);
15957 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15958 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
15959 #endif
15960 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
15961 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15962 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_STflowSphere_Vy, __pyx_t_2) < (0)) __PYX_ERR(0, 215, __pyx_L1_error)
15963 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15964
15965 /* "canalyticalSolutions.pyx":219
15966 *
15967 *
15968 * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
15969 * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size//x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
15970*/
15971 __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error)
15972 __Pyx_GOTREF(__pyx_t_2);
15973 if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 219, __pyx_L1_error)
15974 __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_20canalyticalSolutions_85STflowSphere_Vz, 0, __pyx_mstate_global->__pyx_n_u_STflowSphere_Vz, NULL, __pyx_mstate_global->__pyx_n_u_canalyticalSolutions, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error)
15975 __Pyx_GOTREF(__pyx_t_3);
15976 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
15977 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3);
15978 #endif
15979 __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
15980 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15981 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_STflowSphere_Vz, __pyx_t_3) < (0)) __PYX_ERR(0, 219, __pyx_L1_error)
15982 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15983
15984 /* "canalyticalSolutions.pyx":1
15985 * # A type of -*- python -*- file # <<<<<<<<<<<<<<
15986 * # cython: language_level=3
15987 * import numpy as np
15988*/
15989 __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
15990 __Pyx_GOTREF(__pyx_t_3);
15991 if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_3) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
15992 __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15993
15994 /*--- Wrapped vars code ---*/
15995
15996 goto __pyx_L0;
15997 __pyx_L1_error:;
15998 __Pyx_XDECREF(__pyx_t_2);
15999 __Pyx_XDECREF(__pyx_t_3);
16000 if (__pyx_m) {
16001 if (__pyx_mstate->__pyx_d && stringtab_initialized) {
16002 __Pyx_AddTraceback("init canalyticalSolutions", __pyx_clineno, __pyx_lineno, __pyx_filename);
16003 }
16004 #if !CYTHON_USE_MODULE_STATE
16005 Py_CLEAR(__pyx_m);
16006 #else
16007 Py_DECREF(__pyx_m);
16008 if (pystate_addmodule_run) {
16009 PyObject *tp, *value, *tb;
16010 __Pyx_PyErr_FetchException(&tp, &value, &tb);
16011 __Pyx_State_RemoveModule(&__pyx_moduledef);
16012 __Pyx_PyErr_RestoreException(tp, value, tb);
16013 }
16014 #endif
16015 } else if (!PyErr_Occurred()) {
16016 PyErr_SetString(PyExc_ImportError, "init canalyticalSolutions");
16017 }
16018 __pyx_L0:;
16019 __Pyx_RefNannyFinishContext();
16020 #if CYTHON_PEP489_MULTI_PHASE_INIT
16021 return (__pyx_m != NULL) ? 0 : -1;
16022 #else
16023 return __pyx_m;
16024 #endif
16025}
16026/* #### Code section: pystring_table ### */
16027/* #### Code section: cached_builtins ### */
16028
16029static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) {
16030 CYTHON_UNUSED_VAR(__pyx_mstate);
16031
16032 /* Cached unbound methods */
16033 __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type;
16034 __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items;
16035 __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
16036 __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop;
16037 __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
16038 __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values;
16039 return 0;
16040}
16041/* #### Code section: cached_constants ### */
16042
16043static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
16044 __Pyx_RefNannyDeclarations
16045 CYTHON_UNUSED_VAR(__pyx_mstate);
16046 __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
16047 __Pyx_RefNannyFinishContext();
16048 return 0;
16049}
16050/* #### Code section: init_constants ### */
16051
16052static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
16053 int __pyx_lineno = 0;
16054 const char *__pyx_filename = NULL;
16055 int __pyx_clineno = 0;
16056 CYTHON_UNUSED_VAR(__pyx_mstate);
16057 {
16058 const struct { const unsigned int length: 8; } str_length_index[] = {{1},{179},{8},{39},{34},{32},{23},{26},{25},{14},{32},{32},{17},{17},{16},{28},{16},{34},{34},{19},{30},{20},{26},{29},{28},{23},{12},{14},{18},{21},{18},{20},{14},{15},{15},{15},{20},{12},{8},{8},{10},{8},{12},{8},{13},{18},{20},{18},{14},{16},{14},{16},{14},{16},{2},{2},{1},{3},{5},{5},{2},{5},{21},{23},{21},{23},{21},{24},{23},{3},{1},{6},{5},{10},{1},{1},{6},{1}};
16059 const struct { const unsigned int length: 7; } bytes_length_index[] = {{85},{86},{87},{91},{91},{92},{93},{93},{93},{97},{102},{102},{112},{102},{112},{103},{103},{118},{122},{122},{123},{123},{123}};
16060 #ifndef CYTHON_COMPRESS_STRINGS
16061 #define CYTHON_COMPRESS_STRINGS 90
16062 #endif
16063 #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (1626 bytes) */
16064static const char cstring[] = "(\265/\375`\303\r\2052\000\032D\\\016:\020ws\000\000\200\200\212\004\004 \000\001\010@\000\002\005\200\n\024\334Q\355H\251\340\322Z\257\260%\241\235|\202\3316d\235\362\024\215?S_~6!\255\037\360\341\025\274FB\024\307\000\322\000\340\000\230_\336*\275\213y\253\203\274\353\335\277/{%\317\335\010b\034\"\357r-\355q+/\335\3259\305\225\267\303)\216\225J\321\027\213Y\206V\222\250\335\301\261\005\336.\363\022\274\342\355:v\327d\020\277a\347z$\303\014\346\373m\345\325\372\366\020\205\365\330q\250\222\014\273(r\236wQx\203\227\005\023e\235\275\355\"&fN\0343\277|\024\305{\261q\2747\021\357Kn#\337<\214\305\255\217\345\366\275l\250\215\311\222ob\346`\356\260\355\033\267\215\367\276`\007\353{\333\274\3032\2547O\274[\010I\010\307J\265\332D\215y\2275\337[\tb~5\206e\020{\333\316\2338\006\361re\3437\210o\230\2174\047\001\034\350\310\211M\230\332D\355\344\002\274\225\26111\026\306\302\004 \001\0004\035\365\357\374y\354c\336{@\017\304=\267\363;:\257\223\3639\254g\331\274^O+\302z\241\272\322\003t\341T\231\0325[3Y2\020`\342~\376\007\340i\033w\360\022u\316\301~?\354q\274\265\250;\307Z\223 \251\217\224\007IS\2516I\212Bz\234\345\035b\236\271\230\277\356i\220\324\207\346R\036B\335\205a\316u\0335\346N,7\357\343\316|c\016\336>\024^\021\354\336(\346\033vb\3778\314q\037fq\032\246\341R\264r\305qE%\r\007k\034D\266\276\233\326\212#\363\n\004s\307;\217\253\316\315F\220\005s\216\373\270\202\305\013\256>N\225\222\002\305\221&f\202)\301bY\225* \t\351\350\217\306\037/V\227z\220.\240\252S\303\264\346vc[\255T\312\350\215\304\027m\336f\365\013\253JEB\tP\221\223\301\324\265\210\330jeWV\002\216\214\212\276(\374p\365C+\301*\242\206\350\354<\235\005&\254\006\301\26266**\001FE\345\227\340\203\370\361\353_7\337\327\273\316\324\223\352\203\306N\205\263\250\306\252=\340\225\255II\t(*\205^(\350\203p\036\247\365x\265Yc\252\202:\203\276\316\201SVS\2519\324X\032\024%\332\323d/\353\276\363y\037\327\273X\357ZS\326\227:\240\232\240-g7wj\037\265\006\203\247\26133VF&@)i\3663\242\047\312\237\277\377`\017\273\177{\276\207\347y""n\376\246\365-\233W\255\036k\213\332\323v[\r\000\320duI{P/R\027Zr&\234\031JI\2374dI\030\214\264\343\010\202\235\317\326\323\352\223\306P\005\264\310d\231\047\321\206!\337\261Ua\235I_\350\000*3U\314\n\320\n\tY\231\014f\357\265@@2\375{\250\316\322SZ\200\302NT\007\262\034g\177~\354\313\313\376=\243\276\322\201Tv\252\234\0331\373}\257\327\376\261>>\266\247\247\245e\350\2078\324\221\024\2430\347\304\251\201\255\347\331\256\033\352\261<<vg\2076\343\317\017\324\205T\205j\234\366\304\030w\254\216\216\315\311!\352\253\027Y\303t\206\236\320\202\023fZ\204/\213\203c]..\372\365k\035XM\322\026\264\237;\346\207I!s\331\033\026\026\244G\"\237l}\213\365#+V\037\322\013\324u\226\004\201q\250q\261\241FFDDAR\220$\303\030\321\030QJa\245|\342\262\020j\250\022\210\005##IAR\331\277\016(\177\210n1\354Q\347\300o\360\027\014\324g\"\216\036\353&\373\204\231\017\310\257\210\305q8\243\217\335\233x\010\261bTA\355\362\301\020\301[\016\377;\333\204*\305\022\364x\024*\225\340w0\266\310\336A\013}qq\322@\306d\024\375\"\201\273\002*(\364x)\332\256\004x\n S\214\320U\"\221\276\270\3169Dh\235\210}RD\254\002\206P\004\277\245\034\033\204\374S9\243\210J_\354Pa\000\227\334\305\032\376\365\223Q4Q\370 D\200H\026\035\272\202\370\262\315\224:\3226\325f\221\217#\2464u\240\371q\004\327\212\200\200\225\344\356\\\356\000\001\303\300\237Y\221)\251S\254\277\001\205\324\335-\225F\204W5\3479~\201C\350\250\361 l0L\332y\0034\372\206\026\3563J\032\rc\370\307\317*\262\306Ti\t\256\245bR\254\373\353\010E\226\21292\363C#\242\017\364\032 \212~u[\246E+\000i\311\231>\353\246;P\014\354\352j?\307\334\027\371\024\000\375\013P:\215\004%\314\264\330\243Y\221\363\217\243K]\3504\233K{Q]\002\343\323\002\ng\003\225Jd&\034 >\333\005\020\374:\203\356F\036\t\240\033\010\214\325\200\245*Z\nf\261-\216\270\216y\216;\030\204\316\010\274A\002D\244\\YW\350\0302\n\243\370\305\004\335\215\n\022 7`E\327\352\253\256\026\206v0\312:\016w?\273\003\007\000o\274\363\226\344\355\322\013\307/\001\357_\306\350\334B\255\320%\257\210\202\024\325\370$\010\270\373""\262\350\234W@`\253h\365\212r\252\317\330S\331Z\"*\363\302\346Z\225\225\255H)\231\026\243\236\n\230Y\025\251\020j2\253\232\035(\356\270F\306\235\030\376\342\010aW\307H\233\010\304\231qZ\375B\254`\037dv\314r\262\200\340\266@v\rB+`/\344/\t\000IVfs\001\344!m\244\335Qc\365qG6\226>\371\205^B\013\211\230\314@\230l\357\014\274\354\367\337\3216\025\261\333\230\312E\304\232\362\215<\203,\016Dj\262\037\302m\037\304\003\036 ^h\361\000\252s\200\240\020\323\033\271\222\317JB\215<d\360\305l\020y\342.\225\314\321\023\220\336I\016\320\310\030\267\257\004\276^\377c\265\320pt\362[\304\214@\276\224\027ZY%l\036/z]x\200Ct\246P\223LXg\267\240\211JH\223\250\001";
16065 PyObject *data = __Pyx_DecompressString(cstring, 1626, 3);
16066 #define __Pyx_DecompressString_LZSS_UNUSED
16067 if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
16068 const char* const bytes = __Pyx_PyBytes_AsString(data);
16069 #if !CYTHON_ASSUME_SAFE_MACROS
16070 if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
16071 #endif
16072 #elif (CYTHON_COMPRESS_STRINGS) == 1 /* compression: zlib (1656 bytes) */
16073static const char cstring[] = "x\332\265U\313n\333F\024\215\0075\n\244\310\242\001\202\000m\323\262i]\267A\343\"i\203\024\001\202\324\266\0247\017;\262dY\211c\233\036\221#\2312E\312\344\320\022\2358\331\366\023\264\324\222K.\265\344\222\313Y\3663\372\t=\303\241d\331\221\273j\002\004G\363\3409w\316}\370\321\232\313\231\306\367)\327\226C\276\357:\232\345k&\263\255:\363(gv\250\371\334\263\014\316<y\311\321J\305\322\355\337~\377M\243\216\251y\254\305\014\356k~P7l\352\373\314\327\334\206V\017,\233[\216\306\303\016\363\027\264\047\r-t\003\315a\314\324\270\253upo\362\003\276\317\034\315g\\\376\320\346\251\343\270\234r\313ut|n9\315y\315\264<\210XGL~\375\230\332>[\240\246\251\343\036s\202v\047\\\320\r\327c\013\355\000\242\324\363h\2505\250e+1\253\335q=>y-hS\276\377\301\215\216\007\266\300\377\305\240\016\265Cn\031\324\256\270v \343\360\027:a\357\271\3450\352-\026\312z\201\0314\324\013\226G\215\047\313\027l\353\246w\321\311\304A\005\277\316\256tj\036\251\247n2\3335,\036\236;7\255F#\360\377\343\334;\277\021\234\3338\177\201\303m\373<\333\371\347\215\243\2770\276\323\227_\024\341\351\215\340\203\255\351AT8\243fXA5\2605\327\261\247\033z\361\t\314\370\217\303\311\263\251J\205\305\342\344o\275Q\262\251\303\226\335\200q\316\036\333nW\017\262\235\222k\371\014\005o\2176\307\353\222\325\311\366>\334\321K\225\215\006\260\322\331g\036;\267\332\354\235]\206g\227\307\272^\n{\370_@O\352k\254\307\313\254\241\353y\3370\035\377\032\201cHlS\313\311\3205\003;;qh;\303\303\200\332\243\337\234\371\034`\371\262?\\\224<^\354\207\216a\271\013\343\r\177Z_\030\322\034\035\022\034\226\262:5\016\362\344\273\016J\353N\341\354J\367&\327w\013gWgO\177-\234]\341\3243\203\206\345p\213\263\266ou]\357\300\351d]\335\201\271>\202)\342I2\252b\257s\2470uS\367\246l\337-L\335\234z\367\327\302\324M\324\331\364}lw<\217\361\300s<\0311f\234\311\032\024c\212\007G\324\016\230\337\023\227v\305\256\376\367\047\237\375\365\260O\372\267\006\305\350z|eXM\346\323\317\323\271\324\023\353eQ~)^\276\022\257\266\304\226.\364=\261g\n\263)\232\\\360@\004o\377\271t""\351d\346)\001<%\317$<#\317\211\270\204kT\222>\352\337\354?\035\260\350~|{\030$+\351\235\264(\326+\242\262!6\300\367Z\274\336\026\333T\320\272\2507D\303\022\326\2218\352\212\356;\360\274\237y.\351\236\223U\t\253d\r\254\362&X\305g_\366\357\366\267\006A\264\022?Lf\223Z\272\230VE\031\234UQU\234;b\007\234\2060\020iK\264\300\331\023\275\367 \372\343\224\017\260F^\200V\336\314h\277\352/\365[\321lT\213W\223kI3]O\231\250\200sSl*Nx\005N\030\260/\366\017\304\0018C\260\034\317,J\262\305SN\300\013R\0025\256\262\214\372F\277\334?\216\256E\315x\047\231K\272)M\003\261\001\336\232\250)^x+/\013\006\027la\207\"<\006\313\233\231%I\2664\342\\\227\260N\312\223\324_\367\353\203\313\321\\\324\215\333\311\275\364\323\364P\224\0203\210\2217E\214l\200\030\016\303\212\266h\037\213\3437\240y;\263,\331\226\021(\2404\311\215\253\315\214\373\233\2767\370\"\272\027\177\032\237$\305\364\272(\255\213uD\255*B1#)\362\272h\302\020G8o\304\033U\024\005IW\030\261V$T\310\306$\2716 \203[Q1\276>\274\222T\323\371\254\326\020\266\2525\305\214\324\200\031n\303\022W\270o\305\333\023\360\274\233)J\272\"b\005\224\047\311\345\355\214\374\333\301\325\301\203\250\032\317\017o$,\275/\312\250:\204\255\252N1#\225`\206\337\360\244#:\047\342D\025\336cI\367\370\224\025\260A\252 \307\325VF\376\335\340\356`+\n\342\225\341\303t6\255e\205\007fU$\252B`8\334\206\047\010\333\023\236\252\275\274N\376\224\360\047(\001U\262)a\223\324 \200W\2663\201\037\006\365\350r<\027w\207\355\364\236(\251d\202[Y\256\374F\354\010\034\226\203>\000\305\321(\237\271\363y;\276\224\360\222\274\222\360\212lA\005\237\270\231\312\217\021\211n\305\305\341\365\344\212l\240q\223+{\2247x\004^\000{\320\360]P\364F\336\347.\345\355\264%a\213\274\226\360\232lC\005\237\034~\204\256\312\3352$\030\304\224`\0226\251w+\272\031=\215\331\360~r[6\331x\310(\r\225\024\030}(\016a\034\006\216\022[\221L+\243\324\344b\333\022\266\311\216\204\035\262\013\025|\342\377\237\r\235\367^MBm\364\234\206\204\006iN\352\375\034-E\255\341\354\260\226\254f-8\366Mu\266\254\234\254\030|\341#""S\360P\265\370\023I\365\204\344\023:o\306]\t\273D\227\240\223=\310\310i\236\311,D\365\370\362pn\330M\332Y\277\214\247\207*8Y:Y5`\366\303:L\022\325\217\343\321\237\215\354\274s\366$\354\021*\201\222:d\344\034\376h\r\224g\251%\241E\016$\034\020\033\252\322\372L\365\373\301\322\240\025\317\306\265\341jz-mf%\210\362PV*IX\251\312\003o\364\301\300GU\230\247-\367s\334\263Y\332r?s\311\266\2046q&\225\347\006\345\301q|-n\016w\360g\265\233\225\t\036\253\312D\311\302`\225D\024&\007C0\252\224\274\253\363\024\346\222yW\347)\264%\330\223\312r\014\177\334I\222g7\327t%\270\244\003i9\244?\356x\251K\250\237j\002:\344\020\322\357\304\273\367\231\364O\321\325\350A\\\035\316\0477\344\264QS\037\357US_\351\"\317rf\210C\324r\017\024\341h\360\347\243 \237;\343\221\226\215\202|\356\344\232\236\004\217\370\344_\267B\276\377";
16074 PyObject *data = __Pyx_DecompressString(cstring, 1656, 1);
16075 #define __Pyx_DecompressString_LZSS_UNUSED
16076 if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
16077 const char* const bytes = __Pyx_PyBytes_AsString(data);
16078 #if !CYTHON_ASSUME_SAFE_MACROS
16079 if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
16080 #endif
16081 #elif (CYTHON_COMPRESS_STRINGS) > 0 && (CYTHON_COMPRESS_STRINGS) <= 90 /* compression: lzss (2236 bytes) */
16082static const char cstring[] = "\377?Note th\377at Cytho\377n is del\377iberatel\377y strict\373er!\001n PEP\377-484 and\377 rejects\377 subclas\377ses of b\377uiltin t\377ypes. If\377 you nee?d to p%\000%\t\377then set\376\200\000e \047anno\177tation_<\000\377ing\047 dir\366b\000iv\242\000o Fa\377lse.add_\376%\000enumpy.\377_core.mu\376r\000array f\367ailg\003impo\373rt\033\tumath\366\021\016pr\202 us/c\377analytic\277alSolu\204\001s\377.pyxLine\377arADR_De\377cay_DirawcIC\000\024_dr\002\025\342\016\010SQ\000N\007\n\001_ad\375v\345\003Veloci\373ty\021\014diffuqs\210 \010\025P\014_duS\014\n\021\rt\353 l^\r\317\r\347\005\206\027\300\031\006\211\026\030\007\212\006N\006o\023St\337eadyS\213`eN\207onl\3543\000\027\202@\002\030r:H\010_V\021DAEm\006\t\000\377_fPlaneC\377ouetteFl\357ow_u\r\002Poi?seuill\r\005\007\006\327Pip$\002P\001\016_P\367STf@\000Sphe\273re\000\013_Vx\020\nV\375y\001\013z__Pyx\376\001\000Dict_Ne\177xtRef__\261\205\004\377e____fun\275c\004\001main\003\002owdul\025\002nam\035\002\357qual\004\005tes\355t3\000is\303\205\001out\376\346\204\001syncio.Wcor\013\003s\204\205\021c\217A\375_`\000traceb\367ack\230\204\004onSi\267n1D\000\013_r\022\t2V\021\n2D\020\0133/\n3\032\001\377rdufinti\377temsiwor\327knp\370\206\002p\374 so\347nsE\320\000\262\207\001Exp[1D\000\022_r\031\0202\030\021$\213\001E\0203D\021\232\000dE\021\261\001\377poprretu\367rnr\256\001setd\377efaulttu\377valuesx\320\377\000^\320^_\330\004\013\377\210=\230\002\230*\240E\377\250\027\260\r\270U\300\047\377\310\021\310%\310r\320Q\377R\320RX\320XY\320\377YZ\320Z_\320_`\377\320`d\320dg\320g\377t\320tu\320u|\360\277\000\000}\001J\002\004\000J\373\002K\003\001K\002L\002\320\365\000$\000aQ\001?\230\"\230\377J\240e\2507\260-\270\377u\300G\3101\310E\320\177QS\320ST\320TM\000\377[\320[\\\320\\a\320\377ab\320bf\320fi\377\320iv\320vw\320w\335~S\000\177\001LR\001L\002\035MY\001M\002NS\000&\001\250\000\377\320\013\033\2302\230Z\240\377u\250G\260=\300\005\300\177W\310A\310U\320RQ\000wU\320UN\003]\320]Q\000wc\320c\247\000j\320jQ\000/x\320x""\177\252\000@F\007\270\000\307N\002O\252\000&\001R\002\034\230\377B\230j\250\005\250W\260\377M\300\025\300g\310Q\310we\320SQ\000V\320V\245\000\360Q\000\251 Q\000\376\000h\320hk\353\320kQ\000y\376\000z\001A\342\375\001A\241\000M\004\223 O\002P\364\205 \251 e\255\002\035\230R\230\377z\250\025\250g\260]\300\377%\300w\310a\310u\320\035TU\000W\320WR\003\331 )\001\373\320e\203 l\320ly\320\273yz\331 {\001B\330!Bt\245\000O\002Q\346!Q\002RO\t\377\036\230b\240\n\250%\250\377w\260m\3005\310\007\310\007q\320P\205 V\000\265@\331A\260B\347e\320e\337 \210 m\320m\357z\320z{\265@|\001C2\264AC\246\000\303@P\002Q\010\212@\375g\344\"\037\230r\240\032\250\3775\260\007\260}\300E\310?\027\320PQ\320Q\213 \214c\330\211c\274@+\001\320g\216 n\320\257n{\320{\217cD\221aD:N\005S\237aS\002T\231`T\006\377 \240\002\240*\250E\260\177\027\270\r\300U\310\047\347b\200\215 \346c\276a\224b\351`\353 \220 o\277\320o|\320|}\357`~\313\001E\356aE\205 \375`R\002\370R\010*\001\236b!\240\022\240:\377\250U\260\047\270\035\300e\357\3107\320R\363`X\320X\300\360c\355c\234`\305@\363`\221 p\320\257p}\320}\363cF\313\204\001F\376L\007\360\000\000T\002U\002\277\320\000i\320ij\373b#\377\2402\240Z\250u\260G\377\270=\310\005\310W\320T\016\366`Z\320Z\237c\234c\356 \366`\234\242`\264\000r\320r\366c\241dH\372\254\205\001HP\000\360\000\000U\002\375V\272\205\001V\002W\002\320\000\372\366@m\334\204\002&\240b\250\n\377\260%\260w\270m\3105;\320P\307C]\320]\374\205\003\352#\307h\320h\312@\360 \\\000u\360G\000\000v\310E\363$\210\206\004X\231\206\001\367X\002Y\240\206\001Y\002Z\002\353\320\000\243@o\302\205\002(\250\002\377\250*\260E\270\027\300\rp\275\205\001\334\206\006\214\206\003\226#j\320j\366 \376\234 t\320tw\360\000\000\321x\364%\237$\230\206\004Z\377\206\001Z\002\375[\206\207\001[\002\\\002\320\000\322\317 q\203\205P\247$c\357\207\001c\002\335d\366\207\001d\002ed\t*\250\377\"\250J\260e\2707\300\341-\341\205\001\334\207\006\264\206\003\217Cl\320lwq\320q\225@v\320v\275\206\003\255G\300\210\001G\002\224DO\316\210\001O~\305\000""\360\000\000\\\002]\334\210\001\277]\002^\002\320\000\310@s\352\205\206IP\267\211\001P\372@\360\000\000uW\307\005f\314\211\001f\002gd\t\377,\250B\250j\270\005\270\207W\300M\376\205\002\205\210\006\324\206\003\266a\320\377mn\320ns\320st_\320tx\320x\335\206\003I\227\212\001\323I\002\233\212\004\270\207\004^\254\212\001^\002\375_\263\212\001_\002`\002\320\000\374\312\212\001\325\211\002.\250b\260\n\270\377%\270w\300m\320SX\307\320X_\266\207\005\201\206\003\267a\320o\377p\320pu\320uv\320\317vz\320z\212\206\003\362\212\006\360\000\353\000L\210\206\005`\223\213\001`\002a~\232\213\001a\002b\002\320\000\204\212\001t\350\204V\237Dj\211\214\001j\002k\220\214\001?k\002l\002\320\000\310\211\001\262\213\002\377$\240B\240j\260\005\260\377W\270M\310\025\310g\320\177UV\320V[\320[\323\212\003\376\370\211\003f\320fk\320kl\377\320lp\320ps\360\000\003\000t\324\212\005\201\212\004\311$\253\206\006\262B\311$\272l\004m\212\215\001m\002nn\t%\377\240R\240z\260\025\260g\377\270]\310%\310w\320V?W\320W\\\320\\\231\212\003\226\212\003\367g\320g\277Cq\320qt\217\360\000\000u\363\212\005\237\212\004\336\215\004W\246\350\215\001W\002\317\206\004\274Dl\375\215\001lA\002o\010\203\212\001\354\206[\327D\347\004o\377\216\001?o\002p\002\320\000\241\212\001\201\207[\355b\354\217\001b\002k\006\360\000\000\377p\002q\002\320\000~\320\373~\177\234\217\002)\250\022\250:?\260U\270\047\300\035\300\216\001\346\217\003\347`\320`\217\217\003\304\212\001\320jk\373\320k\240\210\001\320qu\320u?x\360\000\000y\001\362\212\004\204\207\004EN\322\220\001N\311\210\007\206\207\002\361\207\004p\356\220\001\367p\002r\365\220\001r\002s\002";
16083 PyObject *data = __Pyx_DecompressString_LZSS(cstring, 2236, 3779);
16084 #define __Pyx_DecompressString_UNUSED
16085 if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
16086 const char* const bytes = __Pyx_PyBytes_AsString(data);
16087 #if !CYTHON_ASSUME_SAFE_MACROS
16088 if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
16089 #endif
16090 #else /* compression: none (3779 bytes) */
16091static const char bytes[] = "?Note that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the \047annotation_typing\047 directive to False.add_notenumpy._core.multiarray failed to importnumpy._core.umath failed to importproteus/canalyticalSolutions.pyxLinearADR_Decay_DiracICLinearADR_Decay_DiracIC_drLinearADR_Decay_DiracIC_rLinearADR_SineLinearADR_Sine_advectiveVelocityLinearADR_Sine_diffusiveVelocityLinearADR_Sine_drLinearADR_Sine_duLinearADR_Sine_rLinearADR_Sine_totalVelocityLinearAD_DiracICLinearAD_DiracIC_advectiveVelocityLinearAD_DiracIC_diffusiveVelocityLinearAD_DiracIC_duLinearAD_DiracIC_totalVelocityLinearAD_SteadyStateNonlinearADR_Decay_DiracICNonlinearADR_Decay_DiracIC_drNonlinearADR_Decay_DiracIC_rNonlinearAD_SteadyStateNonlinearDAENonlinearDAE_fPlaneCouetteFlow_uPlanePoiseuilleFlow_uPoiseuillePipeFlowPoiseuillePipeFlow_PSTflowSphere_PSTflowSphere_VxSTflowSphere_VySTflowSphere_Vz__Pyx_PyDict_NextRef__annotate____func____main____module____name____qualname____test___is_coroutineasyncio.coroutinescanalyticalSolutionscline_in_tracebackdiffusionSin1DdiffusionSin1D_rdiffusionSin2DdiffusionSin2D_rdiffusionSin3DdiffusionSin3D_rdrdufintitemsiworknpnumpypoissonsEquationExp1DpoissonsEquationExp1D_rpoissonsEquationExp2DpoissonsEquationExp2D_rpoissonsEquationExp3DpoissonsEquationExp3D_drpoissonsEquationExp3D_rpoprreturnrworksetdefaulttuvaluesx\320\000^\320^_\330\004\013\210=\230\002\230*\240E\250\027\260\r\270U\300\047\310\021\310%\310r\320QR\320RX\320XY\320YZ\320Z_\320_`\320`d\320dg\320gt\320tu\320u|\360\000\000}\001J\002\360\000\000J\002K\002\360\000\000K\002L\002\320\000`\320`a\330\004\013\210?\230\"\230J\240e\2507\260-\270u\300G\3101\310E\320QS\320ST\320TZ\320Z[\320[\\\320\\a\320ab\320bf\320fi\320iv\320vw\320w~\360\000\000\177\001L\002\360\000\000L\002M\002\360\000\000M\002N\002\320\000a\320ab\330\004\013\320\013\033\2302\230Z\240u\250G\260=\300\005\300W\310A\310U\320RT\320TU\320U[\320[\\\320\\]\320]b\320bc\320cg\320g""j\320jw\320wx\320x\177\360\000\000@\002M\002\360\000\000M\002N\002\360\000\000N\002O\002\320\000b\320bc\330\004\013\320\013\034\230B\230j\250\005\250W\260M\300\025\300g\310Q\310e\320SU\320UV\320V\\\320\\]\320]^\320^c\320cd\320dh\320hk\320kx\320xy\360\000\000z\001A\002\360\000\000A\002N\002\360\000\000N\002O\002\360\000\000O\002P\002\320\000d\320de\330\004\013\320\013\035\230R\230z\250\025\250g\260]\300%\300w\310a\310u\320TV\320VW\320W]\320]^\320^_\320_d\320de\320ei\320il\320ly\320yz\360\000\000{\001B\002\360\000\000B\002O\002\360\000\000O\002Q\002\360\000\000Q\002R\002\320\000d\320de\330\004\013\320\013\036\230b\240\n\250%\250w\260m\3005\310\007\310q\320PU\320UW\320WX\320X^\320^_\320_`\320`e\320ef\320fj\320jm\320mz\320z{\360\000\000|\001C\002\360\000\000C\002P\002\360\000\000P\002Q\002\360\000\000Q\002R\002\320\000f\320fg\330\004\013\320\013\037\230r\240\032\2505\260\007\260}\300E\310\027\320PQ\320QV\320VX\320XY\320Y_\320_`\320`a\320af\320fg\320gk\320kn\320n{\320{|\360\000\000}\001D\002\360\000\000D\002Q\002\360\000\000Q\002S\002\360\000\000S\002T\002\320\000f\320fg\330\004\013\320\013 \240\002\240*\250E\260\027\270\r\300U\310\047\320QR\320RW\320WY\320YZ\320Z`\320`a\320ab\320bg\320gh\320hl\320lo\320o|\320|}\360\000\000~\001E\002\360\000\000E\002R\002\360\000\000R\002S\002\360\000\000S\002T\002\320\000g\320gh\330\004\013\320\013!\240\022\240:\250U\260\047\270\035\300e\3107\320RS\320SX\320XZ\320Z[\320[a\320ab\320bc\320ch\320hi\320im\320mp\320p}\320}~\360\000\000\177\001F\002\360\000\000F\002S\002\360\000\000S\002T\002\360\000\000T\002U\002\320\000i\320ij\330\004\013\320\013#\2402\240Z\250u\260G\270=\310\005\310W\320TU\320UZ\320Z\\\320\\]\320]c\320cd\320de\320ej\320jk\320ko\320or\320r\177\360\000\000@\002A\002\360\000\000A\002H\002\360\000\000H\002U\002\360\000\000U\002V\002\360\000\000V\002W\002\320\000l\320lm\330\004\013\320\013&\240b\250\n\260%\260w\270m\3105\320PW\320WX\320X]\320]_\320_`\320`f\320fg\320gh\320hm\320mn\320nr\320ru\360\000\000v\001C\002\360\000\000C""\002D\002\360\000\000D\002K\002\360\000\000K\002X\002\360\000\000X\002Y\002\360\000\000Y\002Z\002\320\000n\320no\330\004\013\320\013(\250\002\250*\260E\270\027\300\r\310U\320RY\320YZ\320Z_\320_a\320ab\320bh\320hi\320ij\320jo\320op\320pt\320tw\360\000\000x\001E\002\360\000\000E\002F\002\360\000\000F\002M\002\360\000\000M\002Z\002\360\000\000Z\002[\002\360\000\000[\002\\\002\320\000p\320pq\330\004\013\320\013\034\230B\230j\250\005\250W\260M\300\025\300g\310Q\310e\320SU\320UV\320V\\\320\\]\320]^\320^c\320cd\320dh\320hk\320kx\320xy\360\000\000z\001A\002\360\000\000A\002N\002\360\000\000N\002O\002\360\000\000O\002V\002\360\000\000V\002c\002\360\000\000c\002d\002\360\000\000d\002e\002\320\000p\320pq\330\004\013\320\013*\250\"\250J\260e\2707\300-\310u\320T[\320[\\\320\\a\320ac\320cd\320dj\320jk\320kl\320lq\320qr\320rv\320vy\360\000\000z\001G\002\360\000\000G\002H\002\360\000\000H\002O\002\360\000\000O\002\\\002\360\000\000\\\002]\002\360\000\000]\002^\002\320\000r\320rs\330\004\013\320\013\035\230R\230z\250\025\250g\260]\300%\300w\310a\310u\320TV\320VW\320W]\320]^\320^_\320_d\320de\320ei\320il\320ly\320yz\360\000\000{\001B\002\360\000\000B\002O\002\360\000\000O\002P\002\360\000\000P\002W\002\360\000\000W\002d\002\360\000\000d\002f\002\360\000\000f\002g\002\320\000r\320rs\330\004\013\320\013,\250B\250j\270\005\270W\300M\320QV\320V]\320]^\320^c\320ce\320ef\320fl\320lm\320mn\320ns\320st\320tx\320x{\360\000\000|\001I\002\360\000\000I\002J\002\360\000\000J\002Q\002\360\000\000Q\002^\002\360\000\000^\002_\002\360\000\000_\002`\002\320\000t\320tu\330\004\013\320\013.\250b\260\n\270%\270w\300m\320SX\320X_\320_`\320`e\320eg\320gh\320hn\320no\320op\320pu\320uv\320vz\320z}\360\000\000~\001K\002\360\000\000K\002L\002\360\000\000L\002S\002\360\000\000S\002`\002\360\000\000`\002a\002\360\000\000a\002b\002\320\000w\320wx\330\004\013\320\013#\2402\240Z\250u\260G\270=\310\005\310W\320TU\320UZ\320Z\\\320\\]\320]c\320cd\320de\320ej\320jk\320ko\320or\320r\177\360\000\000@\002A\002\360\000""\000A\002H\002\360\000\000H\002U\002\360\000\000U\002V\002\360\000\000V\002]\002\360\000\000]\002j\002\360\000\000j\002k\002\360\000\000k\002l\002\320\000y\320yz\330\004\013\320\013$\240B\240j\260\005\260W\270M\310\025\310g\320UV\320V[\320[]\320]^\320^d\320de\320ef\320fk\320kl\320lp\320ps\360\000\000t\001A\002\360\000\000A\002B\002\360\000\000B\002I\002\360\000\000I\002V\002\360\000\000V\002W\002\360\000\000W\002^\002\360\000\000^\002k\002\360\000\000k\002m\002\360\000\000m\002n\002\320\000y\320yz\330\004\013\320\013%\240R\240z\260\025\260g\270]\310%\310w\320VW\320W\\\320\\^\320^_\320_e\320ef\320fg\320gl\320lm\320mq\320qt\360\000\000u\001B\002\360\000\000B\002C\002\360\000\000C\002J\002\360\000\000J\002W\002\360\000\000W\002X\002\360\000\000X\002_\002\360\000\000_\002l\002\360\000\000l\002m\002\360\000\000m\002n\002\320\000{\320{|\330\004\013\320\013&\240b\250\n\260%\260w\270m\3105\320PW\320WX\320X]\320]_\320_`\320`f\320fg\320gh\320hm\320mn\320nr\320ru\360\000\000v\001C\002\360\000\000C\002D\002\360\000\000D\002K\002\360\000\000K\002X\002\360\000\000X\002Y\002\360\000\000Y\002`\002\360\000\000`\002m\002\360\000\000m\002o\002\360\000\000o\002p\002\320\000|\320|}\330\004\013\320\013(\250\002\250*\260E\270\027\300\r\310U\320RY\320YZ\320Z_\320_a\320ab\320bh\320hi\320ij\320jo\320op\320pt\320tw\360\000\000x\001E\002\360\000\000E\002F\002\360\000\000F\002M\002\360\000\000M\002Z\002\360\000\000Z\002[\002\360\000\000[\002b\002\360\000\000b\002o\002\360\000\000o\002p\002\360\000\000p\002q\002\320\000~\320~\177\330\004\013\320\013)\250\022\250:\260U\270\047\300\035\310e\320SZ\320Z[\320[`\320`b\320bc\320ci\320ij\320jk\320kp\320pq\320qu\320ux\360\000\000y\001F\002\360\000\000F\002G\002\360\000\000G\002N\002\360\000\000N\002[\002\360\000\000[\002\\\002\360\000\000\\\002c\002\360\000\000c\002p\002\360\000\000p\002r\002\360\000\000r\002s\002";
16092 PyObject *data = NULL;
16093 #define __Pyx_DecompressString_UNUSED
16094 #define __Pyx_DecompressString_LZSS_UNUSED
16095 #endif
16096 PyObject **stringtab = __pyx_mstate->__pyx_string_tab;
16097 Py_ssize_t pos = 0;
16098 for (int i = 0; i < 78; i++) {
16099 Py_ssize_t bytes_length = str_length_index[i].length;
16100 PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL);
16101 if (likely(string) && i >= 6) PyUnicode_InternInPlace(&string);
16102 if (unlikely(!string)) {
16103 Py_XDECREF(data);
16104 __PYX_ERR(0, 1, __pyx_L1_error)
16105 }
16106 stringtab[i] = string;
16107 pos += bytes_length;
16108 }
16109 for (int i = 78; i < 101; i++) {
16110 Py_ssize_t bytes_length = bytes_length_index[i-78].length;
16111 PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length);
16112 stringtab[i] = string;
16113 pos += bytes_length;
16114 if (unlikely(!string)) {
16115 Py_XDECREF(data);
16116 __PYX_ERR(0, 1, __pyx_L1_error)
16117 }
16118 }
16119 Py_XDECREF(data);
16120 for (Py_ssize_t i = 0; i < 101; i++) {
16121 if (unlikely(PyObject_Hash(stringtab[i]) == -1)) {
16122 __PYX_ERR(0, 1, __pyx_L1_error)
16123 }
16124 }
16125 #if CYTHON_IMMORTAL_CONSTANTS
16126 {
16127 PyObject **table = stringtab + 78;
16128 for (Py_ssize_t i=0; i<23; ++i) {
16129 #if PY_VERSION_HEX >= 0x030F0000
16130 PyUnstable_SetImmortal(table[i]);
16131 #elif CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
16132 if ((PY_SSIZE_T_MAX <= _Py_IMMORTAL_REFCNT_LOCAL)) break;
16133 #if PY_VERSION_HEX < 0x030E0000
16134 if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
16135 #else
16136 if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
16137 #endif
16138 {
16139 Py_SET_REFCNT(table[i], ((Py_ssize_t)_Py_IMMORTAL_REFCNT_LOCAL + 1));
16140 }
16141 #else
16142 if ((PY_SSIZE_T_MAX < _Py_IMMORTAL_INITIAL_REFCNT)) break;
16143 Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
16144 #endif
16145 }
16146 }
16147 #endif
16148 }
16149 return 0;
16150 __pyx_L1_error:;
16151 return -1;
16152}
16153/* #### Code section: init_codeobjects ### */
16154#ifdef __cplusplus
16155namespace {
16156#endif
16157typedef struct {
16158 unsigned int argcount : 3;
16159 unsigned int num_posonly_args : 1;
16160 unsigned int num_kwonly_args : 1;
16161 unsigned int nlocals : 3;
16162 unsigned int flags : 10;
16163 unsigned int first_line : 8;
16164} __Pyx_PyCode_New_function_description;
16165#ifdef __cplusplus
16166} /* anonymous namespace */
16167#endif
16168/* NewCodeObj.proto */
16169static PyObject* __Pyx_PyCode_New(
16170 const __Pyx_PyCode_New_function_description descr,
16171 PyObject * const *varnames,
16172 PyObject *filename,
16173 PyObject *funcname,
16174 PyObject *line_table,
16175 PyObject *tuple_dedup_map
16176);
16177
16178
16179static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) {
16180 PyObject* tuple_dedup_map = PyDict_New();
16181 if (unlikely(!tuple_dedup_map)) return -1;
16182 {
16183 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 51};
16184 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16185 __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_PlaneCouetteFlow_u, __pyx_mstate->__pyx_kp_b_iso88591_dde_b_wm5_qPUUWWXX____eeffjjmmz, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad;
16186 }
16187 {
16188 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 55};
16189 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16190 __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_diffusionSin1D, __pyx_mstate->__pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad;
16191 }
16192 {
16193 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 59};
16194 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16195 __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_diffusionSin2D, __pyx_mstate->__pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad;
16196 }
16197 {
16198 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 63};
16199 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16200 __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_diffusionSin3D, __pyx_mstate->__pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad;
16201 }
16202 {
16203 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 67};
16204 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16205 __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_diffusionSin1D_r, __pyx_mstate->__pyx_kp_b_iso88591_ppq_Bj_WM_gQeSUUVV_ccddhhkkxxy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad;
16206 }
16207 {
16208 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 71};
16209 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16210 __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_diffusionSin2D_r, __pyx_mstate->__pyx_kp_b_iso88591_ppq_Bj_WM_gQeSUUVV_ccddhhkkxxy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad;
16211 }
16212 {
16213 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 75};
16214 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16215 __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_diffusionSin3D_r, __pyx_mstate->__pyx_kp_b_iso88591_ppq_Bj_WM_gQeSUUVV_ccddhhkkxxy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad;
16216 }
16217 {
16218 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 79};
16219 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16220 __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearAD_DiracIC, __pyx_mstate->__pyx_kp_b_iso88591_bbc_Bj_WM_gQeSUUVV_ccddhhkkxxy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad;
16221 }
16222 {
16223 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 83};
16224 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_f};
16225 __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearAD_DiracIC_advectiveVeloci, __pyx_mstate->__pyx_kp_b_iso88591_ttu_b_wmSXX___eegghhnnooppuuvvz, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad;
16226 }
16227 {
16228 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 87};
16229 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_f};
16230 __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearAD_DiracIC_diffusiveVeloci, __pyx_mstate->__pyx_kp_b_iso88591_ttu_b_wmSXX___eegghhnnooppuuvvz, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad;
16231 }
16232 {
16233 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 91};
16234 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_du};
16235 __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearAD_DiracIC_du, __pyx_mstate->__pyx_kp_b_iso88591_ffg_r_5_E_PQQVVXXYY___aaffggkkn, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad;
16236 }
16237 {
16238 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 95};
16239 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16240 __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearAD_DiracIC_totalVelocity, __pyx_mstate->__pyx_kp_b_iso88591_ppq_Je7_uT_aaccddjjkkllqqrrvvy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad;
16241 }
16242 {
16243 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 99};
16244 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16245 __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearAD_SteadyState, __pyx_mstate->__pyx_kp_b_iso88591_ffg_E_U_QRRWWYYZZ_aabbgghhlloo, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad;
16246 }
16247 {
16248 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 103};
16249 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16250 __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Decay_DiracIC, __pyx_mstate->__pyx_kp_b_iso88591_iij_2ZuG_WTUUZZ_ccddeejjkkoorr, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad;
16251 }
16252 {
16253 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 107};
16254 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_dr};
16255 __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Decay_DiracIC_dr, __pyx_mstate->__pyx_kp_b_iso88591_b_wm5PWWXX____ffgghhmmnnrru_v_C, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad;
16256 }
16257 {
16258 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 111};
16259 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16260 __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Decay_DiracIC_r, __pyx_mstate->__pyx_kp_b_iso88591_yyz_Rz_g_wVWW___eeffggllmmqqt_u, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad;
16261 }
16262 {
16263 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 115};
16264 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16265 __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine, __pyx_mstate->__pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad;
16266 }
16267 {
16268 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 119};
16269 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_f};
16270 __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine_advectiveVelocity, __pyx_mstate->__pyx_kp_b_iso88591_rrs_Bj_WMQVV_cceeffllmmnnssttxx, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad;
16271 }
16272 {
16273 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 123};
16274 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_f};
16275 __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine_diffusiveVelocity, __pyx_mstate->__pyx_kp_b_iso88591_rrs_Bj_WMQVV_cceeffllmmnnssttxx, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad;
16276 }
16277 {
16278 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 127};
16279 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_dr};
16280 __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine_dr, __pyx_mstate->__pyx_kp_b_iso88591_rrs_Rz_g_wauTVVWW___ddeeiillyyz, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad;
16281 }
16282 {
16283 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 131};
16284 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_du};
16285 __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine_du, __pyx_mstate->__pyx_kp_b_iso88591_dde_Rz_g_wauTVVWW___ddeeiillyyz, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad;
16286 }
16287 {
16288 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 135};
16289 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16290 __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine_r, __pyx_mstate->__pyx_kp_b_iso88591_ppq_Bj_WM_gQeSUUVV_ccddhhkkxxy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad;
16291 }
16292 {
16293 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 139};
16294 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16295 __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_LinearADR_Sine_totalVelocity, __pyx_mstate->__pyx_kp_b_iso88591_nno_E_URYYZZ__aabbhhiijjooppttw, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad;
16296 }
16297 {
16298 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 143};
16299 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16300 __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_NonlinearAD_SteadyState, __pyx_mstate->__pyx_kp_b_iso88591_iij_2ZuG_WTUUZZ_ccddeejjkkoorr, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad;
16301 }
16302 {
16303 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 147};
16304 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16305 __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_NonlinearADR_Decay_DiracIC, __pyx_mstate->__pyx_kp_b_iso88591_llm_b_wm5PWWXX____ffgghhmmnnrru, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad;
16306 }
16307 {
16308 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 151};
16309 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_dr};
16310 __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_NonlinearADR_Decay_DiracIC_dr, __pyx_mstate->__pyx_kp_b_iso88591_U_eSZZ_bbcciijjkkppqquux_y_F_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad;
16311 }
16312 {
16313 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 155};
16314 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16315 __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_NonlinearADR_Decay_DiracIC_r, __pyx_mstate->__pyx_kp_b_iso88591_E_URYYZZ__aabbhhiijjooppttw_x_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad;
16316 }
16317 {
16318 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 159};
16319 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16320 __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_NonlinearDAE, __pyx_mstate->__pyx_kp_b_iso88591_E_U_rQRRXXYYZZ___ddggttuu_J_J, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad;
16321 }
16322 {
16323 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 163};
16324 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16325 __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_NonlinearDAE_f, __pyx_mstate->__pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad;
16326 }
16327 {
16328 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 167};
16329 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16330 __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_PlanePoiseuilleFlow_u, __pyx_mstate->__pyx_kp_b_iso88591_ggh_U_e7RSSXXZZ_aabbcchhiimmpp, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad;
16331 }
16332 {
16333 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 171};
16334 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16335 __pyx_mstate_global->__pyx_codeobj_tab[30] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_PoiseuillePipeFlow, __pyx_mstate->__pyx_kp_b_iso88591_dde_b_wm5_qPUUWWXX____eeffjjmmz, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[30])) goto bad;
16336 }
16337 {
16338 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 175};
16339 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16340 __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_PoiseuillePipeFlow_P, __pyx_mstate->__pyx_kp_b_iso88591_ffg_E_U_QRRWWYYZZ_aabbgghhlloo, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad;
16341 }
16342 {
16343 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 179};
16344 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16345 __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp1D, __pyx_mstate->__pyx_kp_b_iso88591_ggh_U_e7RSSXXZZ_aabbcchhiimmpp, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad;
16346 }
16347 {
16348 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 183};
16349 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16350 __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp2D, __pyx_mstate->__pyx_kp_b_iso88591_ggh_U_e7RSSXXZZ_aabbcchhiimmpp, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad;
16351 }
16352 {
16353 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 187};
16354 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16355 __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp3D, __pyx_mstate->__pyx_kp_b_iso88591_ggh_U_e7RSSXXZZ_aabbcchhiimmpp, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad;
16356 }
16357 {
16358 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 191};
16359 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_dr};
16360 __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp3D_dr, __pyx_mstate->__pyx_kp_b_iso88591_yyz_Bj_WM_gUVV_ddeeffkkllpps_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad;
16361 }
16362 {
16363 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 195};
16364 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16365 __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp1D_r, __pyx_mstate->__pyx_kp_b_iso88591_wwx_2ZuG_WTUUZZ_ccddeejjkkoorr, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad;
16366 }
16367 {
16368 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 199};
16369 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16370 __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp2D_r, __pyx_mstate->__pyx_kp_b_iso88591_wwx_2ZuG_WTUUZZ_ccddeejjkkoorr, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad;
16371 }
16372 {
16373 const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 203};
16374 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u, __pyx_mstate->__pyx_n_u_r};
16375 __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_poissonsEquationExp3D_r, __pyx_mstate->__pyx_kp_b_iso88591_wwx_2ZuG_WTUUZZ_ccddeejjkkoorr, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad;
16376 }
16377 {
16378 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 207};
16379 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16380 __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_STflowSphere_P, __pyx_mstate->__pyx_kp_b_iso88591_a_Je7_uG1EQSSTTZZ_aabbffiivvww, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad;
16381 }
16382 {
16383 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 211};
16384 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16385 __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_STflowSphere_Vx, __pyx_mstate->__pyx_kp_b_iso88591_aab_2ZuG_WAURTTUU_bbccggjjwwxx, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad;
16386 }
16387 {
16388 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 215};
16389 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16390 __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_STflowSphere_Vy, __pyx_mstate->__pyx_kp_b_iso88591_aab_2ZuG_WAURTTUU_bbccggjjwwxx, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad;
16391 }
16392 {
16393 const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 219};
16394 PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_iwork, __pyx_mstate->__pyx_n_u_rwork, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_u};
16395 __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_proteus_canalyticalSolutions_pyx, __pyx_mstate->__pyx_n_u_STflowSphere_Vz, __pyx_mstate->__pyx_kp_b_iso88591_aab_2ZuG_WAURTTUU_bbccggjjwwxx, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad;
16396 }
16397 Py_DECREF(tuple_dedup_map);
16398 return 0;
16399 bad:
16400 Py_DECREF(tuple_dedup_map);
16401 return -1;
16402}
16403/* #### Code section: init_globals ### */
16404
16405static int __Pyx_InitGlobals(void) {
16406 int __pyx_lineno = 0;
16407 const char *__pyx_filename = NULL;
16408 int __pyx_clineno = 0;
16409 /* PythonCompatibility.init */
16410 if (likely(__Pyx_init_co_variables() == 0 && __Pyx_init_tpflags_variables() == 0)); else
16411
16412 if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
16413
16414 /* NumpyImportArray.init */
16415 /*
16416 * Cython has automatically inserted a call to _import_array since
16417 * you didn't include one when you cimported numpy. To disable this
16418 * add the line
16419 * <void>numpy._import_array
16420 */
16421 #ifdef NPY_FEATURE_VERSION
16422 #ifndef NO_IMPORT_ARRAY
16423 if (unlikely(_import_array() == -1)) {
16424 PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import "
16425 "(auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; "
16426 "use '<void>numpy._import_array' to disable if you are certain you don't need it).");
16427 }
16428 #endif
16429 #endif
16430
16431 if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
16432
16433 /* CommonTypesMetaclass.init */
16434 if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else
16435
16436 if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
16437
16438 /* CachedMethodType.init */
16439 #if CYTHON_COMPILING_IN_LIMITED_API
16440 {
16441 PyObject *typesModule=NULL;
16442 typesModule = PyImport_ImportModule("types");
16443 if (typesModule) {
16444 __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType");
16445 Py_DECREF(typesModule);
16446 }
16447 } // error handling follows
16448 #endif
16449
16450 if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
16451
16452 return 0;
16453 __pyx_L1_error:;
16454 return -1;
16455}
16456/* #### Code section: init_after_shared_utility ### */
16457
16458static int __Pyx_InitAfterSharedUtility(void) {
16459 int __pyx_lineno = 0;
16460 const char *__pyx_filename = NULL;
16461 int __pyx_clineno = 0;
16462 /* CythonFunctionPerModule.init */
16463 if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else
16464
16465 if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
16466
16467 return 0;
16468 __pyx_L1_error:;
16469 return -1;
16470}
16471/* #### Code section: cleanup_globals ### */
16472/* #### Code section: cleanup_module ### */
16473/* #### Code section: main_method ### */
16474/* #### Code section: utility_code_pragmas ### */
16475#ifdef _MSC_VER
16476#pragma warning( push )
16477/* Warning 4127: conditional expression is constant
16478 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
16479 * compile-time, so this warning is not useful
16480 */
16481#pragma warning( disable : 4127 )
16482#endif
16483
16484
16485
16486/* #### Code section: utility_code_def ### */
16487
16488/* --- Runtime support code --- */
16489/* Refnanny */
16490#if CYTHON_REFNANNY
16491static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
16492 PyObject *m = NULL, *p = NULL;
16493 void *r = NULL;
16494 m = PyImport_ImportModule(modname);
16495 if (!m) goto end;
16496 p = PyObject_GetAttrString(m, "RefNannyAPI");
16497 if (!p) goto end;
16498 r = PyLong_AsVoidPtr(p);
16499end:
16500 Py_XDECREF(p);
16501 Py_XDECREF(m);
16502 return (__Pyx_RefNannyAPIStruct *)r;
16503}
16504#endif
16505
16506/* GetTopmostException (used by SaveResetException) */
16507#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
16508static _PyErr_StackItem *
16509__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
16510{
16511 _PyErr_StackItem *exc_info = tstate->exc_info;
16512 while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
16513 exc_info->previous_item != NULL)
16514 {
16515 exc_info = exc_info->previous_item;
16516 }
16517 return exc_info;
16518}
16519#endif
16520
16521/* SaveResetException */
16522#if CYTHON_FAST_THREAD_STATE
16523static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
16524 #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
16525 _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
16526 PyObject *exc_value = exc_info->exc_value;
16527 if (exc_value == NULL || exc_value == Py_None) {
16528 *value = NULL;
16529 *type = NULL;
16530 *tb = NULL;
16531 } else {
16532 *value = exc_value;
16533 Py_INCREF(*value);
16534 *type = (PyObject*) Py_TYPE(exc_value);
16535 Py_INCREF(*type);
16536 *tb = PyException_GetTraceback(exc_value);
16537 }
16538 #elif CYTHON_USE_EXC_INFO_STACK
16539 _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
16540 *type = exc_info->exc_type;
16541 *value = exc_info->exc_value;
16542 *tb = exc_info->exc_traceback;
16543 Py_XINCREF(*type);
16544 Py_XINCREF(*value);
16545 Py_XINCREF(*tb);
16546 #else
16547 *type = tstate->exc_type;
16548 *value = tstate->exc_value;
16549 *tb = tstate->exc_traceback;
16550 Py_XINCREF(*type);
16551 Py_XINCREF(*value);
16552 Py_XINCREF(*tb);
16553 #endif
16554}
16555static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
16556 #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
16557 _PyErr_StackItem *exc_info = tstate->exc_info;
16558 PyObject *tmp_value = exc_info->exc_value;
16559 exc_info->exc_value = value;
16560 Py_XDECREF(tmp_value);
16561 Py_XDECREF(type);
16562 Py_XDECREF(tb);
16563 #else
16564 PyObject *tmp_type, *tmp_value, *tmp_tb;
16565 #if CYTHON_USE_EXC_INFO_STACK
16566 _PyErr_StackItem *exc_info = tstate->exc_info;
16567 tmp_type = exc_info->exc_type;
16568 tmp_value = exc_info->exc_value;
16569 tmp_tb = exc_info->exc_traceback;
16570 exc_info->exc_type = type;
16571 exc_info->exc_value = value;
16572 exc_info->exc_traceback = tb;
16573 #else
16574 tmp_type = tstate->exc_type;
16575 tmp_value = tstate->exc_value;
16576 tmp_tb = tstate->exc_traceback;
16577 tstate->exc_type = type;
16578 tstate->exc_value = value;
16579 tstate->exc_traceback = tb;
16580 #endif
16581 Py_XDECREF(tmp_type);
16582 Py_XDECREF(tmp_value);
16583 Py_XDECREF(tmp_tb);
16584 #endif
16585}
16586#endif
16587
16588/* FastTypeChecks (used by PyException_Check) */
16589#if CYTHON_COMPILING_IN_CPYTHON
16590static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
16591 while (a) {
16592 a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
16593 if (a == b)
16594 return 1;
16595 }
16596 return b == &PyBaseObject_Type;
16597}
16598static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
16599 PyObject *mro;
16600 if (a == b) return 1;
16601 mro = a->tp_mro;
16602 if (likely(mro)) {
16603 Py_ssize_t i, n;
16604 n = PyTuple_GET_SIZE(mro);
16605 for (i = 0; i < n; i++) {
16606 if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
16607 return 1;
16608 }
16609 return 0;
16610 }
16611 return __Pyx_InBases(a, b);
16612}
16613static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
16614 PyObject *mro;
16615 if (cls == a || cls == b) return 1;
16616 mro = cls->tp_mro;
16617 if (likely(mro)) {
16618 Py_ssize_t i, n;
16619 n = PyTuple_GET_SIZE(mro);
16620 for (i = 0; i < n; i++) {
16621 PyObject *base = PyTuple_GET_ITEM(mro, i);
16622 if (base == (PyObject *)a || base == (PyObject *)b)
16623 return 1;
16624 }
16625 return 0;
16626 }
16627 return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
16628}
16629#endif
16630
16631/* PyErrFetchRestore (used by GivenExceptionMatches) */
16632#if CYTHON_FAST_THREAD_STATE
16633static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
16634#if PY_VERSION_HEX >= 0x030C00A6
16635 PyObject *tmp_value;
16636 assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
16637 if (value) {
16638 #if CYTHON_COMPILING_IN_CPYTHON
16639 if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
16640 #endif
16641 PyException_SetTraceback(value, tb);
16642 }
16643 tmp_value = tstate->current_exception;
16644 tstate->current_exception = value;
16645 Py_XDECREF(tmp_value);
16646 Py_XDECREF(type);
16647 Py_XDECREF(tb);
16648#else
16649 PyObject *tmp_type, *tmp_value, *tmp_tb;
16650 tmp_type = tstate->curexc_type;
16651 tmp_value = tstate->curexc_value;
16652 tmp_tb = tstate->curexc_traceback;
16653 tstate->curexc_type = type;
16654 tstate->curexc_value = value;
16655 tstate->curexc_traceback = tb;
16656 Py_XDECREF(tmp_type);
16657 Py_XDECREF(tmp_value);
16658 Py_XDECREF(tmp_tb);
16659#endif
16660}
16661static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
16662#if PY_VERSION_HEX >= 0x030C00A6
16663 PyObject* exc_value;
16664 exc_value = tstate->current_exception;
16665 tstate->current_exception = 0;
16666 *value = exc_value;
16667 *type = NULL;
16668 *tb = NULL;
16669 if (exc_value) {
16670 *type = (PyObject*) Py_TYPE(exc_value);
16671 Py_INCREF(*type);
16672 #if CYTHON_COMPILING_IN_CPYTHON
16673 *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
16674 Py_XINCREF(*tb);
16675 #else
16676 *tb = PyException_GetTraceback(exc_value);
16677 #endif
16678 }
16679#else
16680 *type = tstate->curexc_type;
16681 *value = tstate->curexc_value;
16682 *tb = tstate->curexc_traceback;
16683 tstate->curexc_type = 0;
16684 tstate->curexc_value = 0;
16685 tstate->curexc_traceback = 0;
16686#endif
16687}
16688#endif
16689
16690/* GivenExceptionMatches (used by PyErrExceptionMatches) */
16691#if CYTHON_COMPILING_IN_CPYTHON
16692static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
16693 if (exc_type1) {
16694 return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
16695 } else {
16696 return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
16697 }
16698}
16699static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
16700 Py_ssize_t i, n;
16701 assert(PyExceptionClass_Check(exc_type));
16702 n = PyTuple_GET_SIZE(tuple);
16703 for (i=0; i<n; i++) {
16704 if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
16705 }
16706 for (i=0; i<n; i++) {
16707 PyObject *t = PyTuple_GET_ITEM(tuple, i);
16708 if (likely(PyExceptionClass_Check(t))) {
16709 if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
16710 } else {
16711 }
16712 }
16713 return 0;
16714}
16715static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
16716 if (likely(err == exc_type)) return 1;
16717 if (likely(PyExceptionClass_Check(err))) {
16718 if (likely(PyExceptionClass_Check(exc_type))) {
16719 return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
16720 } else if (likely(PyTuple_Check(exc_type))) {
16721 return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
16722 } else {
16723 }
16724 }
16725 return PyErr_GivenExceptionMatches(err, exc_type);
16726}
16727static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
16728 assert(PyExceptionClass_Check(exc_type1));
16729 assert(PyExceptionClass_Check(exc_type2));
16730 if (likely(err == exc_type1 || err == exc_type2)) return 1;
16731 if (likely(PyExceptionClass_Check(err))) {
16732 return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
16733 }
16734 return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
16735}
16736#endif
16737
16738/* PyErrExceptionMatches */
16739#if CYTHON_FAST_THREAD_STATE
16740static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
16741 Py_ssize_t i, n;
16742 n = PyTuple_GET_SIZE(tuple);
16743 for (i=0; i<n; i++) {
16744 if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
16745 }
16746 for (i=0; i<n; i++) {
16747 if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
16748 }
16749 return 0;
16750}
16751static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
16752 int result;
16753 PyObject *exc_type;
16754#if PY_VERSION_HEX >= 0x030C00A6
16755 PyObject *current_exception = tstate->current_exception;
16756 if (unlikely(!current_exception)) return 0;
16757 exc_type = (PyObject*) Py_TYPE(current_exception);
16758 if (exc_type == err) return 1;
16759#else
16760 exc_type = tstate->curexc_type;
16761 if (exc_type == err) return 1;
16762 if (unlikely(!exc_type)) return 0;
16763#endif
16764 #if CYTHON_AVOID_BORROWED_REFS
16765 Py_INCREF(exc_type);
16766 #endif
16767 if (unlikely(PyTuple_Check(err))) {
16768 result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
16769 } else {
16770 result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
16771 }
16772 #if CYTHON_AVOID_BORROWED_REFS
16773 Py_DECREF(exc_type);
16774 #endif
16775 return result;
16776}
16777#endif
16778
16779/* GetException */
16780#if CYTHON_FAST_THREAD_STATE
16781static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
16782#else
16783static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
16784#endif
16785{
16786 PyObject *local_type = NULL, *local_value, *local_tb = NULL;
16787#if CYTHON_FAST_THREAD_STATE
16788 PyObject *tmp_type, *tmp_value, *tmp_tb;
16789 #if PY_VERSION_HEX >= 0x030C0000
16790 local_value = tstate->current_exception;
16791 tstate->current_exception = 0;
16792 #else
16793 local_type = tstate->curexc_type;
16794 local_value = tstate->curexc_value;
16795 local_tb = tstate->curexc_traceback;
16796 tstate->curexc_type = 0;
16797 tstate->curexc_value = 0;
16798 tstate->curexc_traceback = 0;
16799 #endif
16800#elif __PYX_LIMITED_VERSION_HEX >= 0x030C0000
16801 local_value = PyErr_GetRaisedException();
16802#else
16803 PyErr_Fetch(&local_type, &local_value, &local_tb);
16804#endif
16805#if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
16806 if (likely(local_value)) {
16807 local_type = (PyObject*) Py_TYPE(local_value);
16808 Py_INCREF(local_type);
16809 local_tb = PyException_GetTraceback(local_value);
16810 }
16811#else
16812 PyErr_NormalizeException(&local_type, &local_value, &local_tb);
16813#if CYTHON_FAST_THREAD_STATE
16814 if (unlikely(tstate->curexc_type))
16815#else
16816 if (unlikely(PyErr_Occurred()))
16817#endif
16818 goto bad;
16819 if (local_tb) {
16820 if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
16821 goto bad;
16822 }
16823#endif // __PYX_LIMITED_VERSION_HEX >= 0x030C0000
16824 Py_XINCREF(local_tb);
16825 Py_XINCREF(local_type);
16826 Py_XINCREF(local_value);
16827 *type = local_type;
16828 *value = local_value;
16829 *tb = local_tb;
16830#if CYTHON_FAST_THREAD_STATE
16831 #if CYTHON_USE_EXC_INFO_STACK
16832 {
16833 _PyErr_StackItem *exc_info = tstate->exc_info;
16834 #if PY_VERSION_HEX >= 0x030B00a4
16835 tmp_value = exc_info->exc_value;
16836 exc_info->exc_value = local_value;
16837 tmp_type = NULL;
16838 tmp_tb = NULL;
16839 Py_XDECREF(local_type);
16840 Py_XDECREF(local_tb);
16841 #else
16842 tmp_type = exc_info->exc_type;
16843 tmp_value = exc_info->exc_value;
16844 tmp_tb = exc_info->exc_traceback;
16845 exc_info->exc_type = local_type;
16846 exc_info->exc_value = local_value;
16847 exc_info->exc_traceback = local_tb;
16848 #endif
16849 }
16850 #else
16851 tmp_type = tstate->exc_type;
16852 tmp_value = tstate->exc_value;
16853 tmp_tb = tstate->exc_traceback;
16854 tstate->exc_type = local_type;
16855 tstate->exc_value = local_value;
16856 tstate->exc_traceback = local_tb;
16857 #endif
16858 Py_XDECREF(tmp_type);
16859 Py_XDECREF(tmp_value);
16860 Py_XDECREF(tmp_tb);
16861#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000
16862 PyErr_SetHandledException(local_value);
16863 Py_XDECREF(local_value);
16864 Py_XDECREF(local_type);
16865 Py_XDECREF(local_tb);
16866#else
16867 PyErr_SetExcInfo(local_type, local_value, local_tb);
16868#endif
16869 return 0;
16870#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
16871bad:
16872 *type = 0;
16873 *value = 0;
16874 *tb = 0;
16875 Py_XDECREF(local_type);
16876 Py_XDECREF(local_value);
16877 Py_XDECREF(local_tb);
16878 return -1;
16879#endif
16880}
16881
16882/* PyObjectCall (used by PyObjectFastCall) */
16883#if CYTHON_COMPILING_IN_CPYTHON
16884static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
16885 PyObject *result;
16886 ternaryfunc call = Py_TYPE(func)->tp_call;
16887 if (unlikely(!call))
16888 return PyObject_Call(func, arg, kw);
16889 if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
16890 return NULL;
16891 result = (*call)(func, arg, kw);
16892 Py_LeaveRecursiveCall();
16893 if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
16894 PyErr_SetString(
16895 PyExc_SystemError,
16896 "NULL result without error in PyObject_Call");
16897 }
16898 return result;
16899}
16900#endif
16901
16902/* PyObjectCallMethO (used by PyObjectFastCall) */
16903#if CYTHON_COMPILING_IN_CPYTHON
16904static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
16905 PyObject *self, *result;
16906 PyCFunction cfunc;
16907 cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
16908 self = __Pyx_CyOrPyCFunction_GET_SELF(func);
16909 if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
16910 return NULL;
16911 result = cfunc(self, arg);
16912 Py_LeaveRecursiveCall();
16913 if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
16914 PyErr_SetString(
16915 PyExc_SystemError,
16916 "NULL result without error in PyObject_Call");
16917 }
16918 return result;
16919}
16920#endif
16921
16922/* PyObjectFastCall */
16923#if CYTHON_COMPILING_IN_LIMITED_API
16924static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) {
16925 PyObject *argstuple;
16926 PyObject *result = 0;
16927 size_t i;
16928 argstuple = PyTuple_New((Py_ssize_t)nargs);
16929 if (unlikely(!argstuple)) return NULL;
16930 for (i = 0; i < nargs; i++) {
16931 Py_INCREF(args[i]);
16932 if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) != (0)) goto bad;
16933 }
16934 result = __Pyx_PyObject_Call(func, argstuple, kwargs);
16935 bad:
16936 Py_DECREF(argstuple);
16937 return result;
16938}
16939#endif
16940#if CYTHON_VECTORCALL && !(CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY)
16941 #if CYTHON_COMPILING_IN_CPYTHON
16942static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) {
16943 PyTypeObject *tp = Py_TYPE(callable);
16944 #if defined(__Pyx_CyFunction_USED)
16945 if (__Pyx_CyFunction_CheckExact(callable)) {
16946 return __Pyx_CyFunction_func_vectorcall(callable);
16947 }
16948 #endif
16949 if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
16950 return NULL;
16951 }
16952 assert(PyCallable_Check(callable));
16953 Py_ssize_t offset = tp->tp_vectorcall_offset;
16954 assert(offset > 0);
16955 vectorcallfunc ptr;
16956 memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
16957 return ptr;
16958}
16959 #else
16960 #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable)
16961 #endif
16962#endif
16963static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwargs) {
16964 Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(nargsf);
16965#if CYTHON_COMPILING_IN_CPYTHON
16966 if (nargs == 0 && kwargs == NULL) {
16967 if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
16968 return __Pyx_PyObject_CallMethO(func, NULL);
16969 }
16970 else if (nargs == 1 && kwargs == NULL) {
16971 if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
16972 return __Pyx_PyObject_CallMethO(func, args[0]);
16973 }
16974#endif
16975 if (kwargs == NULL) {
16976 #if CYTHON_VECTORCALL
16977 #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
16978 return PyObject_Vectorcall(func, args, nargsf, NULL);
16979 #else
16980 vectorcallfunc f = __Pyx_PyVectorcall_Function(func);
16981 if (f) {
16982 return f(func, args, nargsf, NULL);
16983 }
16984 #endif
16985 #endif
16986 }
16987 if (nargs == 0) {
16988 return __Pyx_PyObject_Call(func, __pyx_mstate_global->__pyx_empty_tuple, kwargs);
16989 }
16990 #if CYTHON_COMPILING_IN_LIMITED_API
16991 return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
16992 #elif CYTHON_COMPILING_IN_PYPY
16993 return PyObject_VectorcallDict(func, args, (size_t) nargs, kwargs);
16994 #else
16995 return PyObject_VectorcallDict(func, args, nargsf, kwargs);
16996 #endif
16997}
16998
16999/* RaiseException */
17000static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
17001 PyObject* owned_instance = NULL;
17002 if (tb == Py_None) {
17003 tb = 0;
17004 } else if (tb && !PyTraceBack_Check(tb)) {
17005 PyErr_SetString(PyExc_TypeError,
17006 "raise: arg 3 must be a traceback or None");
17007 goto bad;
17008 }
17009 if (value == Py_None)
17010 value = 0;
17011 if (PyExceptionInstance_Check(type)) {
17012 if (value) {
17013 PyErr_SetString(PyExc_TypeError,
17014 "instance exception may not have a separate value");
17015 goto bad;
17016 }
17017 value = type;
17018 type = (PyObject*) Py_TYPE(value);
17019 } else if (PyExceptionClass_Check(type)) {
17020 PyObject *instance_class = NULL;
17021 if (value && PyExceptionInstance_Check(value)) {
17022 instance_class = (PyObject*) Py_TYPE(value);
17023 if (instance_class != type) {
17024 int is_subclass = PyObject_IsSubclass(instance_class, type);
17025 if (!is_subclass) {
17026 instance_class = NULL;
17027 } else if (unlikely(is_subclass == -1)) {
17028 goto bad;
17029 } else {
17030 type = instance_class;
17031 }
17032 }
17033 }
17034 if (!instance_class) {
17035 PyObject *args;
17036 if (!value)
17037 args = PyTuple_New(0);
17038 else if (PyTuple_Check(value)) {
17039 Py_INCREF(value);
17040 args = value;
17041 } else
17042 args = PyTuple_Pack(1, value);
17043 if (!args)
17044 goto bad;
17045 owned_instance = PyObject_Call(type, args, NULL);
17046 Py_DECREF(args);
17047 if (!owned_instance)
17048 goto bad;
17049 value = owned_instance;
17050 if (!PyExceptionInstance_Check(value)) {
17051 PyErr_Format(PyExc_TypeError,
17052 "calling %R should have returned an instance of "
17053 "BaseException, not %R",
17054 type, Py_TYPE(value));
17055 goto bad;
17056 }
17057 }
17058 } else {
17059 PyErr_SetString(PyExc_TypeError,
17060 "raise: exception class must be a subclass of BaseException");
17061 goto bad;
17062 }
17063 if (cause) {
17064 PyObject *fixed_cause;
17065 if (cause == Py_None) {
17066 fixed_cause = NULL;
17067 } else if (PyExceptionClass_Check(cause)) {
17068 fixed_cause = PyObject_CallObject(cause, NULL);
17069 if (fixed_cause == NULL)
17070 goto bad;
17071 } else if (PyExceptionInstance_Check(cause)) {
17072 fixed_cause = cause;
17073 Py_INCREF(fixed_cause);
17074 } else {
17075 PyErr_SetString(PyExc_TypeError,
17076 "exception causes must derive from "
17077 "BaseException");
17078 goto bad;
17079 }
17080 PyException_SetCause(value, fixed_cause);
17081 }
17082 PyErr_SetObject(type, value);
17083 if (tb) {
17084#if PY_VERSION_HEX >= 0x030C00A6
17085 PyException_SetTraceback(value, tb);
17086#elif CYTHON_FAST_THREAD_STATE
17087 PyThreadState *tstate = __Pyx_PyThreadState_Current;
17088 PyObject* tmp_tb = tstate->curexc_traceback;
17089 if (tb != tmp_tb) {
17090 Py_INCREF(tb);
17091 tstate->curexc_traceback = tb;
17092 Py_XDECREF(tmp_tb);
17093 }
17094#else
17095 PyObject *tmp_type, *tmp_value, *tmp_tb;
17096 PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
17097 Py_INCREF(tb);
17098 PyErr_Restore(tmp_type, tmp_value, tb);
17099 Py_XDECREF(tmp_tb);
17100#endif
17101 }
17102bad:
17103 Py_XDECREF(owned_instance);
17104 return;
17105}
17106
17107/* CopyObjectArray (used by TupleOrListFromArrayImpl) */
17108#if CYTHON_COMPILING_IN_CPYTHON
17109static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
17110 PyObject *v;
17111 Py_ssize_t i;
17112 for (i = 0; i < length; i++) {
17113 v = dest[i] = src[i];
17114 Py_INCREF(v);
17115 }
17116}
17117#endif
17118
17119/* TupleOrListFromArrayImpl (used by TupleFromArray) */
17120#if !(PY_VERSION_HEX >= 0x030F0000 && !CYTHON_COMPILING_IN_LIMITED_API)
17121CYTHON_UNUSED static PyObject *
17122__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) {
17123 if (n <= 0) {
17124 return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple);
17125 }
17126 PyObject *res = PyTuple_New(n);
17127 if (unlikely(res == NULL)) return NULL;
17128 #if CYTHON_COMPILING_IN_CPYTHON
17129 __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
17130 #else
17131 Py_ssize_t i;
17132 for (i = 0; i < n; i++) {
17133 Py_INCREF(src[i]);
17134 if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < (0))) {
17135 Py_DECREF(res);
17136 return NULL;
17137 }
17138 }
17139 #endif
17140 return res;
17141}
17142#endif
17143
17144/* PyObjectCompare (used by UnicodeEquals) */
17145#ifndef __Pyx_DEFINED_PyObject_CompareStrStrBoolEq
17146#define __Pyx_DEFINED_PyObject_CompareStrStrBoolEq
17147static CYTHON_INLINE int __Pyx_PyObject_CompareStrStrBoolEq(PyObject* s1, PyObject* s2) {
17148 #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000
17149 int result = PyUnicode_Equal(s1, s2);
17150 #if !CYTHON_COMPILING_IN_CPYTHON
17151 if (unlikely(result == -1)) return -1;
17152 #endif
17153 if (result == 0) goto __pyx_return_false; else goto __pyx_return_true;
17154 #else
17155 int result = PyUnicode_Compare(s1, s2);
17156 if (unlikely((result == -1) && PyErr_Occurred())) return -1;
17157 if (result == 0) goto __pyx_return_true; else goto __pyx_return_false;
17158 #endif
17159__pyx_return_true:
17160 return 1;
17161__pyx_return_false:
17162 return 0;
17163}
17164#endif
17165static CYTHON_INLINE int __Pyx_PyObject_CompareBoolEq_str_str(PyObject *op1, PyObject *op2, int pyop) {
17166 CYTHON_UNUSED_VAR(pyop);
17167 if (unlikely(op1 == Py_None)) {
17168 if (op2 == Py_None) goto __pyx_return_true; else goto __pyx_return_false;
17169 }
17170 if (unlikely(op2 == Py_None)) {
17171 if (op1 == Py_None) goto __pyx_return_true; else goto __pyx_return_false;
17172 }
17173
17174 if (likely(op1 != Py_None)) {
17175 if (op1 == op2) goto __pyx_return_true;
17176 if (likely(op2 != Py_None)) {
17177 return __Pyx_PyObject_CompareStrStrBoolEq(op1, op2);
17178 }
17179 goto __pyx_richcmp;
17180 }
17181
17182 if ((0)) goto __pyx_richcmp;
17183 if ((0)) goto __pyx_return_true;
17184 if ((0)) goto __pyx_return_false;
17185__pyx_richcmp:
17186 return __Pyx_PyObject_RichCompareBool(op1, op2, Py_EQ);
17187__pyx_return_true:
17188 return 1;
17189__pyx_return_false:
17190 return 0;
17191}
17192
17193/* fastcall */
17194#if CYTHON_VECTORCALL
17195static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
17196{
17197 Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames);
17198 #if !CYTHON_ASSUME_SAFE_SIZE
17199 if (unlikely(n == -1)) return NULL;
17200 #endif
17201 for (i = 0; i < n; i++)
17202 {
17203 PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
17204 #if !CYTHON_ASSUME_SAFE_MACROS
17205 if (unlikely(!namei)) return NULL;
17206 #endif
17207 if (s == namei) return kwvalues[i];
17208 }
17209 for (i = 0; i < n; i++)
17210 {
17211 PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
17212 #if !CYTHON_ASSUME_SAFE_MACROS
17213 if (unlikely(!namei)) return NULL;
17214 #endif
17215 int eq = __Pyx_PyUnicode_Equals(s, namei);
17216 if (unlikely(eq != 0)) {
17217 if (unlikely(eq < 0)) return NULL;
17218 return kwvalues[i];
17219 }
17220 }
17221 return NULL;
17222}
17223#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_GRAAL
17224CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
17225 Py_ssize_t i, nkwargs;
17226 PyObject *dict;
17227#if !CYTHON_ASSUME_SAFE_SIZE
17228 nkwargs = PyTuple_Size(kwnames);
17229 if (unlikely(nkwargs < 0)) return NULL;
17230#else
17231 nkwargs = PyTuple_GET_SIZE(kwnames);
17232#endif
17233 dict = PyDict_New();
17234 if (unlikely(!dict))
17235 return NULL;
17236 for (i=0; i<nkwargs; i++) {
17237#if !CYTHON_ASSUME_SAFE_MACROS
17238 PyObject *key = PyTuple_GetItem(kwnames, i);
17239 if (!key) goto bad;
17240#else
17241 PyObject *key = PyTuple_GET_ITEM(kwnames, i);
17242#endif
17243 if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
17244 goto bad;
17245 }
17246 return dict;
17247bad:
17248 Py_DECREF(dict);
17249 return NULL;
17250}
17251#endif
17252#endif
17253
17254/* PyObjectCallOneArg (used by CallUnboundCMethod0) */
17255static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
17256 PyObject *args[2] = {NULL, arg};
17257 return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
17258}
17259
17260/* IgnoreException (used by UnpackUnboundCMethod_impl) */
17261static CYTHON_INLINE int __Pyx_IgnoreGivenException(PyObject *given_exception, PyObject *ignorable_exception) {
17262 if (PyErr_GivenExceptionMatches(given_exception ? given_exception : PyErr_Occurred(), ignorable_exception)) {
17263 PyErr_Clear();
17264 return 1;
17265 }
17266 return 0;
17267}
17268
17269/* PyObjectGetAttrStr (used by UnpackUnboundCMethod_impl) */
17270#if CYTHON_USE_TYPE_SLOTS
17271static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
17272 PyTypeObject* tp = Py_TYPE(obj);
17273 if (likely(tp->tp_getattro))
17274 return tp->tp_getattro(obj, attr_name);
17275 return PyObject_GetAttr(obj, attr_name);
17276}
17277#endif
17278
17279/* UnpackUnboundCMethod_impl (used by UnpackUnboundCMethod) */
17280#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
17281static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
17282 PyObject *result;
17283 PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
17284 if (unlikely(!selfless_args)) return NULL;
17285 result = PyObject_Call(method, selfless_args, kwargs);
17286 Py_DECREF(selfless_args);
17287 return result;
17288}
17289#else
17290static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) {
17291 return PyObject_Vectorcall(method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames);
17292}
17293#endif
17294static PyMethodDef __Pyx_UnboundCMethod_Def = {
17295 "CythonUnboundCMethod",
17296 __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
17297#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
17298 METH_VARARGS | METH_KEYWORDS,
17299#else
17300 METH_FASTCALL | METH_KEYWORDS,
17301#endif
17302 NULL
17303};
17304static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
17305 PyObject *method, *result=NULL;
17306 method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
17307 if (unlikely(!method))
17308 return -1;
17309 result = method;
17310#if CYTHON_COMPILING_IN_CPYTHON
17311 if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
17312 {
17313 PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
17314 target->func = descr->d_method->ml_meth;
17315 target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
17316 } else
17317#endif
17318#if CYTHON_COMPILING_IN_PYPY
17319#else
17320 if (PyCFunction_Check(method))
17321#endif
17322 {
17323 PyObject *self;
17324 int self_found;
17325#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
17326 self = PyObject_GetAttrString(method, "__self__");
17327 if (!self && !__Pyx_IgnoreException(PyExc_AttributeError)) {
17328 return -1;
17329 }
17330#else
17331 self = PyCFunction_GET_SELF(method);
17332#endif
17333 self_found = (self && self != Py_None);
17334#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
17335 Py_XDECREF(self);
17336#endif
17337 if (self_found) {
17338 PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
17339 if (unlikely(!unbound_method)) return -1;
17340 Py_DECREF(method);
17341 result = unbound_method;
17342 }
17343 }
17344#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
17345 if (unlikely(target->method)) {
17346 Py_DECREF(result);
17347 } else
17348#endif
17349 target->method = result;
17350 return 0;
17351}
17352
17353/* CallUnboundCMethod0 */
17354#if CYTHON_COMPILING_IN_CPYTHON
17355static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
17356 int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
17357 if (likely(was_initialized == 2 && cfunc->func)) {
17358 if (likely(cfunc->flag == METH_NOARGS))
17359 return __Pyx_CallCFunction(cfunc, self, NULL);
17360 if (likely(cfunc->flag == METH_FASTCALL))
17361 return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0);
17362 if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
17363 return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL);
17364 if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS)))
17365 return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL);
17366 if (cfunc->flag == METH_VARARGS)
17367 return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple);
17368 return __Pyx__CallUnboundCMethod0(cfunc, self);
17369 }
17370#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
17371 else if (unlikely(was_initialized == 1)) {
17372 __Pyx_CachedCFunction tmp_cfunc = {
17373#ifndef __cplusplus
17374 0
17375#endif
17376 };
17377 tmp_cfunc.type = cfunc->type;
17378 tmp_cfunc.method_name = cfunc->method_name;
17379 return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self);
17380 }
17381#endif
17382 PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self);
17383 __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
17384 return result;
17385}
17386#endif
17387static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
17388 PyObject *result;
17389 if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
17390 result = __Pyx_PyObject_CallOneArg(cfunc->method, self);
17391 return result;
17392}
17393
17394/* py_dict_items (used by OwnedDictNext) */
17395static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) {
17396 return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d);
17397}
17398
17399/* py_dict_values (used by OwnedDictNext) */
17400static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
17401 return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d);
17402}
17403
17404/* OwnedDictNext (used by ParseKeywordsImpl) */
17405#if CYTHON_AVOID_BORROWED_REFS
17406static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) {
17407 PyObject *next = NULL;
17408 if (!*ppos) {
17409 if (pvalue) {
17410 PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p);
17411 if (unlikely(!dictview)) goto bad;
17412 *ppos = PyObject_GetIter(dictview);
17413 Py_DECREF(dictview);
17414 } else {
17415 *ppos = PyObject_GetIter(p);
17416 }
17417 if (unlikely(!*ppos)) goto bad;
17418 }
17419 next = PyIter_Next(*ppos);
17420 if (!next) {
17421 if (PyErr_Occurred()) goto bad;
17422 return 0;
17423 }
17424 if (pkey && pvalue) {
17425 *pkey = __Pyx_PySequence_ITEM(next, 0);
17426 if (unlikely(*pkey)) goto bad;
17427 *pvalue = __Pyx_PySequence_ITEM(next, 1);
17428 if (unlikely(*pvalue)) goto bad;
17429 Py_DECREF(next);
17430 } else if (pkey) {
17431 *pkey = next;
17432 } else {
17433 assert(pvalue);
17434 *pvalue = next;
17435 }
17436 return 1;
17437 bad:
17438 Py_XDECREF(next);
17439#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
17440 PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef");
17441#else
17442 PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef);
17443#endif
17444 if (pkey) *pkey = NULL;
17445 if (pvalue) *pvalue = NULL;
17446 return 0;
17447}
17448#else // !CYTHON_AVOID_BORROWED_REFS
17449static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) {
17450 int result = PyDict_Next(p, ppos, pkey, pvalue);
17451 if (likely(result == 1)) {
17452 if (pkey) Py_INCREF(*pkey);
17453 if (pvalue) Py_INCREF(*pvalue);
17454 }
17455 return result;
17456}
17457#endif
17458
17459/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */
17460static void __Pyx_RaiseDoubleKeywordsError(
17461 const char* func_name,
17462 PyObject* kw_name)
17463{
17464 PyErr_Format(PyExc_TypeError,
17465 "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
17466}
17467
17468/* CallUnboundCMethod2 */
17469#if CYTHON_COMPILING_IN_CPYTHON
17470static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
17471 int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
17472 if (likely(was_initialized == 2 && cfunc->func)) {
17473 PyObject *args[2] = {arg1, arg2};
17474 if (cfunc->flag == METH_FASTCALL) {
17475 return __Pyx_CallCFunctionFast(cfunc, self, args, 2);
17476 }
17477 if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
17478 return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL);
17479 }
17480#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
17481 else if (unlikely(was_initialized == 1)) {
17482 __Pyx_CachedCFunction tmp_cfunc = {
17483#ifndef __cplusplus
17484 0
17485#endif
17486 };
17487 tmp_cfunc.type = cfunc->type;
17488 tmp_cfunc.method_name = cfunc->method_name;
17489 return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2);
17490 }
17491#endif
17492 PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
17493 __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
17494 return result;
17495}
17496#endif
17497static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
17498 if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
17499#if CYTHON_COMPILING_IN_CPYTHON
17500 if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
17501 PyObject *result = NULL;
17502 PyObject *args = PyTuple_New(2);
17503 if (unlikely(!args)) return NULL;
17504 Py_INCREF(arg1);
17505 PyTuple_SET_ITEM(args, 0, arg1);
17506 Py_INCREF(arg2);
17507 PyTuple_SET_ITEM(args, 1, arg2);
17508 if (cfunc->flag & METH_KEYWORDS)
17509 result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL);
17510 else
17511 result = __Pyx_CallCFunction(cfunc, self, args);
17512 Py_DECREF(args);
17513 return result;
17514 }
17515#endif
17516 {
17517 PyObject *args[4] = {NULL, self, arg1, arg2};
17518 return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
17519 }
17520}
17521
17522/* ParseKeywordsImpl (used by ParseKeywords) */
17523static int __Pyx_ValidateDuplicatePosArgs(
17524 PyObject *kwds,
17525 PyObject ** const argnames[],
17526 PyObject ** const *first_kw_arg,
17527 const char* function_name)
17528{
17529 PyObject ** const *name = argnames;
17530 while (name != first_kw_arg) {
17531 PyObject *key = **name;
17532 int found = PyDict_Contains(kwds, key);
17533 if (unlikely(found)) {
17534 if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key);
17535 goto bad;
17536 }
17537 name++;
17538 }
17539 return 0;
17540bad:
17541 return -1;
17542}
17543#if CYTHON_USE_UNICODE_INTERNALS
17544static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) {
17545 int kind;
17546 Py_ssize_t len = PyUnicode_GET_LENGTH(s1);
17547 if (len != PyUnicode_GET_LENGTH(s2)) return 0;
17548 kind = PyUnicode_KIND(s1);
17549 if (kind != PyUnicode_KIND(s2)) return 0;
17550 const void *data1 = PyUnicode_DATA(s1);
17551 const void *data2 = PyUnicode_DATA(s2);
17552 return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0);
17553}
17554#endif
17555static int __Pyx_MatchKeywordArg_str(
17556 PyObject *key,
17557 PyObject ** const argnames[],
17558 PyObject ** const *first_kw_arg,
17559 size_t *index_found,
17560 const char *function_name)
17561{
17562 PyObject ** const *name;
17563 #if CYTHON_USE_UNICODE_INTERNALS
17564 Py_hash_t key_hash = ((PyASCIIObject*)key)->hash;
17565 if (unlikely(key_hash == -1)) {
17566 key_hash = PyObject_Hash(key);
17567 if (unlikely(key_hash == -1))
17568 goto bad;
17569 }
17570 #endif
17571 name = first_kw_arg;
17572 while (*name) {
17573 PyObject *name_str = **name;
17574 #if CYTHON_USE_UNICODE_INTERNALS
17575 if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) {
17576 *index_found = (size_t) (name - argnames);
17577 return 1;
17578 }
17579 #else
17580 #if CYTHON_ASSUME_SAFE_SIZE
17581 if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
17582 #endif
17583 {
17584 int cmp = PyUnicode_Compare(name_str, key);
17585 if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
17586 if (cmp == 0) {
17587 *index_found = (size_t) (name - argnames);
17588 return 1;
17589 }
17590 }
17591 #endif
17592 name++;
17593 }
17594 name = argnames;
17595 while (name != first_kw_arg) {
17596 PyObject *name_str = **name;
17597 #if CYTHON_USE_UNICODE_INTERNALS
17598 if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) {
17599 if (__Pyx_UnicodeKeywordsEqual(name_str, key))
17600 goto arg_passed_twice;
17601 }
17602 #else
17603 #if CYTHON_ASSUME_SAFE_SIZE
17604 if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
17605 #endif
17606 {
17607 if (unlikely(name_str == key)) goto arg_passed_twice;
17608 int cmp = PyUnicode_Compare(name_str, key);
17609 if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
17610 if (cmp == 0) goto arg_passed_twice;
17611 }
17612 #endif
17613 name++;
17614 }
17615 return 0;
17616arg_passed_twice:
17617 __Pyx_RaiseDoubleKeywordsError(function_name, key);
17618 goto bad;
17619bad:
17620 return -1;
17621}
17622static int __Pyx_MatchKeywordArg_nostr(
17623 PyObject *key,
17624 PyObject ** const argnames[],
17625 PyObject ** const *first_kw_arg,
17626 size_t *index_found,
17627 const char *function_name)
17628{
17629 PyObject ** const *name;
17630 if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type;
17631 name = first_kw_arg;
17632 while (*name) {
17633 int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
17634 if (cmp == 1) {
17635 *index_found = (size_t) (name - argnames);
17636 return 1;
17637 }
17638 if (unlikely(cmp == -1)) goto bad;
17639 name++;
17640 }
17641 name = argnames;
17642 while (name != first_kw_arg) {
17643 int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
17644 if (unlikely(cmp != 0)) {
17645 if (cmp == 1) goto arg_passed_twice;
17646 else goto bad;
17647 }
17648 name++;
17649 }
17650 return 0;
17651arg_passed_twice:
17652 __Pyx_RaiseDoubleKeywordsError(function_name, key);
17653 goto bad;
17654invalid_keyword_type:
17655 PyErr_Format(PyExc_TypeError,
17656 "%.200s() keywords must be strings", function_name);
17657 goto bad;
17658bad:
17659 return -1;
17660}
17661static CYTHON_INLINE int __Pyx_MatchKeywordArg(
17662 PyObject *key,
17663 PyObject ** const argnames[],
17664 PyObject ** const *first_kw_arg,
17665 size_t *index_found,
17666 const char *function_name)
17667{
17668 return likely(PyUnicode_CheckExact(key)) ?
17669 __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) :
17670 __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name);
17671}
17672static void __Pyx_RejectUnknownKeyword(
17673 PyObject *kwds,
17674 PyObject ** const argnames[],
17675 PyObject ** const *first_kw_arg,
17676 const char *function_name)
17677{
17678 #if CYTHON_AVOID_BORROWED_REFS
17679 PyObject *pos = NULL;
17680 #else
17681 Py_ssize_t pos = 0;
17682 #endif
17683 PyObject *key = NULL;
17684 __Pyx_BEGIN_CRITICAL_SECTION(kwds);
17685 #if CYTHON_AVOID_BORROWED_REFS
17686 while (__Pyx_PyDict_NextRef(kwds, &pos, &key, NULL))
17687 #else
17688 (void) __Pyx_PyDict_NextRef;
17689 while (PyDict_Next(kwds, &pos, &key, NULL))
17690 #endif
17691 {
17692 PyObject** const *name = first_kw_arg;
17693 while (*name && (**name != key)) name++;
17694 if (!*name) {
17695 size_t index_found = 0;
17696 int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
17697 if (cmp != 1) {
17698 if (cmp == 0) {
17699 PyErr_Format(PyExc_TypeError,
17700 "%s() got an unexpected keyword argument '%U'",
17701 function_name, key);
17702 }
17703 #if CYTHON_AVOID_BORROWED_REFS
17704 Py_DECREF(key);
17705 #endif
17706 break;
17707 }
17708 }
17709 #if CYTHON_AVOID_BORROWED_REFS
17710 Py_DECREF(key);
17711 #endif
17712 }
17713 __Pyx_END_CRITICAL_SECTION();
17714 #if CYTHON_AVOID_BORROWED_REFS
17715 Py_XDECREF(pos);
17716 #endif
17717 assert(PyErr_Occurred());
17718}
17719static int __Pyx_ParseKeywordDict(
17720 PyObject *kwds,
17721 PyObject ** const argnames[],
17722 PyObject *values[],
17723 Py_ssize_t num_pos_args,
17724 Py_ssize_t num_kwargs,
17725 const char* function_name,
17726 int ignore_unknown_kwargs)
17727{
17728 PyObject** const *name;
17729 PyObject** const *first_kw_arg = argnames + num_pos_args;
17730 Py_ssize_t extracted = 0;
17731#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
17732 if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
17733#endif
17734 name = first_kw_arg;
17735 while (*name && num_kwargs > extracted) {
17736 PyObject * key = **name;
17737 PyObject *value;
17738 int found = 0;
17739 #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
17740 found = PyDict_GetItemRef(kwds, key, &value);
17741 #else
17742 value = PyDict_GetItemWithError(kwds, key);
17743 if (value) {
17744 Py_INCREF(value);
17745 found = 1;
17746 } else {
17747 if (unlikely(PyErr_Occurred())) goto bad;
17748 }
17749 #endif
17750 if (found) {
17751 if (unlikely(found < 0)) goto bad;
17752 values[name-argnames] = value;
17753 extracted++;
17754 }
17755 name++;
17756 }
17757 if (num_kwargs > extracted) {
17758 if (ignore_unknown_kwargs) {
17759 if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1))
17760 goto bad;
17761 } else {
17762 __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name);
17763 goto bad;
17764 }
17765 }
17766 return 0;
17767bad:
17768 return -1;
17769}
17770static int __Pyx_ParseKeywordDictToDict(
17771 PyObject *kwds,
17772 PyObject ** const argnames[],
17773 PyObject *kwds2,
17774 PyObject *values[],
17775 Py_ssize_t num_pos_args,
17776 const char* function_name)
17777{
17778 PyObject** const *name;
17779 PyObject** const *first_kw_arg = argnames + num_pos_args;
17780 Py_ssize_t len;
17781#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
17782 if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
17783#endif
17784 if (PyDict_Update(kwds2, kwds) < 0) goto bad;
17785 name = first_kw_arg;
17786 while (*name) {
17787 PyObject *key = **name;
17788 PyObject *value;
17789#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop))
17790 int found = PyDict_Pop(kwds2, key, &value);
17791 if (found) {
17792 if (unlikely(found < 0)) goto bad;
17793 values[name-argnames] = value;
17794 }
17795#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000
17796 int found = PyDict_GetItemRef(kwds2, key, &value);
17797 if (found) {
17798 if (unlikely(found < 0)) goto bad;
17799 values[name-argnames] = value;
17800 if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad;
17801 }
17802#else
17803 #if CYTHON_COMPILING_IN_CPYTHON
17804 value = _PyDict_Pop(kwds2, key, kwds2);
17805 #else
17806 value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2);
17807 #endif
17808 if (value == kwds2) {
17809 Py_DECREF(value);
17810 } else {
17811 if (unlikely(!value)) goto bad;
17812 values[name-argnames] = value;
17813 }
17814#endif
17815 name++;
17816 }
17817 len = PyDict_Size(kwds2);
17818 if (len > 0) {
17819 return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name);
17820 } else if (unlikely(len == -1)) {
17821 goto bad;
17822 }
17823 return 0;
17824bad:
17825 return -1;
17826}
17827static int __Pyx_ParseKeywordsTuple(
17828 PyObject *kwds,
17829 PyObject * const *kwvalues,
17830 PyObject ** const argnames[],
17831 PyObject *kwds2,
17832 PyObject *values[],
17833 Py_ssize_t num_pos_args,
17834 Py_ssize_t num_kwargs,
17835 const char* function_name,
17836 int ignore_unknown_kwargs)
17837{
17838 PyObject *key = NULL;
17839 PyObject** const * name;
17840 PyObject** const *first_kw_arg = argnames + num_pos_args;
17841 for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) {
17842#if CYTHON_AVOID_BORROWED_REFS
17843 key = __Pyx_PySequence_ITEM(kwds, pos);
17844#else
17845 key = __Pyx_PyTuple_GET_ITEM(kwds, pos);
17846#endif
17847#if !CYTHON_ASSUME_SAFE_MACROS
17848 if (unlikely(!key)) goto bad;
17849#endif
17850 name = first_kw_arg;
17851 while (*name && (**name != key)) name++;
17852 if (*name) {
17853 PyObject *value = kwvalues[pos];
17854 values[name-argnames] = __Pyx_NewRef(value);
17855 } else {
17856 size_t index_found = 0;
17857 int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
17858 if (cmp == 1) {
17859 PyObject *value = kwvalues[pos];
17860 values[index_found] = __Pyx_NewRef(value);
17861 } else {
17862 if (unlikely(cmp == -1)) goto bad;
17863 if (kwds2) {
17864 PyObject *value = kwvalues[pos];
17865 if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
17866 } else if (!ignore_unknown_kwargs) {
17867 goto invalid_keyword;
17868 }
17869 }
17870 }
17871 #if CYTHON_AVOID_BORROWED_REFS
17872 Py_DECREF(key);
17873 key = NULL;
17874 #endif
17875 }
17876 return 0;
17877invalid_keyword:
17878 PyErr_Format(PyExc_TypeError,
17879 "%s() got an unexpected keyword argument '%U'",
17880 function_name, key);
17881 goto bad;
17882bad:
17883 #if CYTHON_AVOID_BORROWED_REFS
17884 Py_XDECREF(key);
17885 #endif
17886 return -1;
17887}
17888
17889/* ParseKeywords */
17890static int __Pyx_ParseKeywords(
17891 PyObject *kwds,
17892 PyObject * const *kwvalues,
17893 PyObject ** const argnames[],
17894 PyObject *kwds2,
17895 PyObject *values[],
17896 Py_ssize_t num_pos_args,
17897 Py_ssize_t num_kwargs,
17898 const char* function_name,
17899 int ignore_unknown_kwargs)
17900{
17901 if (CYTHON_VECTORCALL && likely(PyTuple_Check(kwds)))
17902 return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
17903 else if (kwds2)
17904 return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name);
17905 else
17906 return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
17907}
17908
17909/* RaiseArgTupleInvalid */
17910static void __Pyx_RaiseArgtupleInvalid(
17911 const char* func_name,
17912 int exact,
17913 Py_ssize_t num_min,
17914 Py_ssize_t num_max,
17915 Py_ssize_t num_found)
17916{
17917 Py_ssize_t num_expected;
17918 const char *more_or_less;
17919 if (num_found < num_min) {
17920 num_expected = num_min;
17921 more_or_less = "at least";
17922 } else {
17923 num_expected = num_max;
17924 more_or_less = "at most";
17925 }
17926 if (exact) {
17927 more_or_less = "exactly";
17928 }
17929 PyErr_Format(PyExc_TypeError,
17930 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
17931 func_name, more_or_less, num_expected,
17932 (num_expected == 1) ? "" : "s", num_found);
17933}
17934
17935/* ArgTypeTestError (used by ArgTypeTest) */
17936static void __Pyx_ArgTypeError(PyObject *obj, PyTypeObject *type, const char *name, int exact)
17937{
17938 __Pyx_TypeName type_name;
17939 __Pyx_TypeName obj_type_name;
17940 PyObject *extra_info = __pyx_mstate_global->__pyx_empty_unicode;
17941 int from_annotation_subclass = 0;
17942 if (unlikely(!type)) {
17943 PyErr_SetString(PyExc_SystemError, "Missing type object");
17944 return;
17945 } else if (exact == 2) {
17946 if (__Pyx_TypeCheck(obj, type)) {
17947 from_annotation_subclass = 1;
17948 extra_info = __pyx_mstate_global->__pyx_kp_u_Note_that_Cython_is_deliberately;
17949 }
17950 }
17951 type_name = __Pyx_PyType_GetFullyQualifiedName(type);
17952 #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
17953 if (unlikely(!type_name)) return;
17954 #endif
17955 obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
17956 #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
17957 if (unlikely(!obj_type_name)) goto obj_type_name_failed;
17958 #endif
17959 PyErr_Format(PyExc_TypeError,
17960 "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME ", got " __Pyx_FMT_TYPENAME ")"
17961#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
17962 "%s%U"
17963#endif
17964 , name, type_name, obj_type_name
17965#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
17966 , (from_annotation_subclass ? ". " : ""), extra_info
17967#endif
17968 );
17969#if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
17970 if (exact == 2 && from_annotation_subclass) {
17971 PyObject *res;
17972 PyObject *vargs[2];
17973 vargs[0] = PyErr_GetRaisedException();
17974 vargs[1] = extra_info;
17975 res = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_kp_u_add_note, vargs, 2, NULL);
17976 Py_XDECREF(res);
17977 PyErr_SetRaisedException(vargs[0]);
17978 }
17979#endif
17980 __Pyx_DECREF_TypeName(obj_type_name);
17981#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
17982obj_type_name_failed:
17983#endif
17984 __Pyx_DECREF_TypeName(type_name);
17985 return;
17986}
17987
17988/* ArgTypeTest */
17989static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact) {
17990 if (likely(Py_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None))))
17991 return 1;
17992 if (!exact && likely(type) && likely(__Pyx_TypeCheck(obj, type)))
17993 return 1;
17994 __Pyx_ArgTypeError(obj, type, name, exact);
17995 return 0;
17996}
17997
17998/* DivInt[npy_intp] */
17999static CYTHON_INLINE npy_intp __Pyx_div_npy_intp(npy_intp a, npy_intp b, int b_is_constant) {
18000 npy_intp q = a / b;
18001 npy_intp r = a - q*b;
18002 npy_intp adapt_python = (b_is_constant ?
18003 ((r != 0) & ((r < 0) ^ (b < 0))) :
18004 ((r != 0) & ((r ^ b) < 0))
18005 );
18006 return q - adapt_python;
18007}
18008
18009/* FormatTypeName (used by pybuiltin_invalid) */
18010#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
18011static __Pyx_TypeName
18012__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp)
18013{
18014 PyObject *module = NULL, *name = NULL, *result = NULL;
18015 #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
18016 name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
18017 __pyx_mstate_global->__pyx_n_u_qualname);
18018 #else
18019 name = PyType_GetQualName(tp);
18020 #endif
18021 if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad;
18022 module = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
18023 __pyx_mstate_global->__pyx_n_u_module);
18024 if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad;
18025 if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) {
18026 result = name;
18027 name = NULL;
18028 goto done;
18029 }
18030 result = PyUnicode_FromFormat("%U.%U", module, name);
18031 if (unlikely(result == NULL)) goto bad;
18032 done:
18033 Py_XDECREF(name);
18034 Py_XDECREF(module);
18035 return result;
18036 bad:
18037 PyErr_Clear();
18038 if (name) {
18039 result = name;
18040 name = NULL;
18041 } else {
18042 result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u_);
18043 }
18044 goto done;
18045}
18046#endif
18047
18048/* pybuiltin_invalid (used by pyint_simplify) */
18049static void __Pyx_PyBuiltin_Invalid(PyObject *obj, const char *builtin_type_name, const char *argname) {
18050 __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
18051 #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
18052 if (unlikely(!obj_type_name)) return;
18053 #endif
18054 if (argname) {
18055 PyErr_Format(PyExc_TypeError,
18056 "Argument '%.200s' has incorrect type (expected %.5s, got " __Pyx_FMT_TYPENAME ")",
18057 argname, builtin_type_name, obj_type_name
18058 );
18059 } else {
18060 PyErr_Format(PyExc_TypeError,
18061 "Expected %.5s, got " __Pyx_FMT_TYPENAME,
18062 builtin_type_name, obj_type_name
18063 );
18064 }
18065 __Pyx_DECREF_TypeName(obj_type_name);
18066}
18067
18068/* pyint_simplify */
18069static int __Pyx__PyInt_FromNumber(PyObject **number_var, const char *argname);
18070static CYTHON_INLINE int __Pyx_PyInt_FromNumber(PyObject **number_var, const char *argname, int accept_none) {
18071 PyObject *number = *number_var;
18072 if (likely((accept_none && number == Py_None) || PyLong_CheckExact(number))) {
18073 return 0;
18074 }
18075 return __Pyx__PyInt_FromNumber(number_var, argname);
18076}
18077static int __Pyx__PyInt_FromNumber(PyObject **number_var, const char *argname) {
18078 PyObject *number = *number_var;
18079 PyObject *int_object;
18080 if (likely(PyNumber_Check(number))) {
18081 int_object = PyNumber_Long(number);
18082 if (unlikely(!int_object)) goto bad;
18083 } else {
18084 __Pyx_PyBuiltin_Invalid(number, "int", argname);
18085 goto bad;
18086 }
18087 *number_var = int_object;
18088 Py_DECREF(number);
18089 return 0;
18090bad:
18091 *number_var = NULL;
18092 Py_DECREF(number);
18093 return -1;
18094}
18095
18096/* TypeImport */
18097#ifndef __PYX_HAVE_RT_ImportType_3_3_0
18098#define __PYX_HAVE_RT_ImportType_3_3_0
18099static PyTypeObject *__Pyx_ImportType_3_3_0(PyObject *module, const char *module_name, const char *class_name,
18100 size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_3_0 check_size)
18101{
18102 PyObject *result = 0;
18103 Py_ssize_t basicsize;
18104 Py_ssize_t itemsize;
18105#if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API)
18106 PyObject *py_basicsize;
18107 PyObject *py_itemsize;
18108#endif
18109 result = PyObject_GetAttrString(module, class_name);
18110 if (!result)
18111 goto bad;
18112 if (!PyType_Check(result)) {
18113 PyErr_Format(PyExc_TypeError,
18114 "%.200s.%.200s is not a type object",
18115 module_name, class_name);
18116 goto bad;
18117 }
18118#if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) )
18119 basicsize = ((PyTypeObject *)result)->tp_basicsize;
18120 itemsize = ((PyTypeObject *)result)->tp_itemsize;
18121#else
18122 if (size == 0) {
18123 return (PyTypeObject *)result;
18124 }
18125 py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
18126 if (!py_basicsize)
18127 goto bad;
18128 basicsize = PyLong_AsSsize_t(py_basicsize);
18129 Py_DECREF(py_basicsize);
18130 py_basicsize = 0;
18131 if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
18132 goto bad;
18133 py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
18134 if (!py_itemsize)
18135 goto bad;
18136 itemsize = PyLong_AsSsize_t(py_itemsize);
18137 Py_DECREF(py_itemsize);
18138 py_itemsize = 0;
18139 if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
18140 goto bad;
18141#endif
18142 if (itemsize) {
18143 if (size % alignment) {
18144 alignment = size % alignment;
18145 }
18146 if (itemsize < (Py_ssize_t)alignment)
18147 itemsize = (Py_ssize_t)alignment;
18148 }
18149 if ((size_t)(basicsize + itemsize) < size) {
18150 PyErr_Format(PyExc_ValueError,
18151 "%.200s.%.200s size changed, may indicate binary incompatibility. "
18152 "Expected %zd from C header, got %zd from PyObject",
18153 module_name, class_name, size, basicsize+itemsize);
18154 goto bad;
18155 }
18156 if (check_size == __Pyx_ImportType_CheckSize_Error_3_3_0 &&
18157 ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
18158 PyErr_Format(PyExc_ValueError,
18159 "%.200s.%.200s size changed, may indicate binary incompatibility. "
18160 "Expected %zd from C header, got %zd-%zd from PyObject",
18161 module_name, class_name, size, basicsize, basicsize+itemsize);
18162 goto bad;
18163 }
18164 else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_3_0 && (size_t)basicsize > size) {
18165 if (PyErr_WarnFormat(NULL, 0,
18166 "%.200s.%.200s size changed, may indicate binary incompatibility. "
18167 "Expected %zd from C header, got %zd from PyObject",
18168 module_name, class_name, size, basicsize) < 0) {
18169 goto bad;
18170 }
18171 }
18172 return (PyTypeObject *)result;
18173bad:
18174 Py_XDECREF(result);
18175 return NULL;
18176}
18177#endif
18178
18179/* PyObjectGetAttrStrNoError (used by HasAttr) */
18180#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
18181static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
18182 __Pyx_PyThreadState_declare
18183 __Pyx_PyThreadState_assign
18184 if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
18185 __Pyx_PyErr_Clear();
18186}
18187#endif
18188static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
18189 PyObject *result;
18190#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
18191 (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
18192 return result;
18193#else
18194#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS
18195 PyTypeObject* tp = Py_TYPE(obj);
18196 if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
18197 return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
18198 }
18199#endif
18200 result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
18201 if (unlikely(!result)) {
18202 __Pyx_PyObject_GetAttrStr_ClearAttributeError();
18203 }
18204 return result;
18205#endif
18206}
18207
18208/* HasAttr (used by ImportImpl) */
18209#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
18210static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
18211 PyObject *r;
18212 if (unlikely(!PyUnicode_Check(n))) {
18213 PyErr_SetString(PyExc_TypeError,
18214 "hasattr(): attribute name must be string");
18215 return -1;
18216 }
18217 r = __Pyx_PyObject_GetAttrStrNoError(o, n);
18218 if (!r) {
18219 return (unlikely(PyErr_Occurred())) ? -1 : 0;
18220 } else {
18221 Py_DECREF(r);
18222 return 1;
18223 }
18224}
18225#endif
18226
18227/* TupleOrListFromArrayImpl (used by ListFromArray) */
18228CYTHON_UNUSED static PyObject *
18229__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) {
18230 PyObject *res = PyList_New(n);
18231 if (unlikely(res == NULL)) return NULL;
18232 #if CYTHON_COMPILING_IN_CPYTHON
18233 __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
18234 #else
18235 Py_ssize_t i;
18236 for (i = 0; i < n; i++) {
18237 Py_INCREF(src[i]);
18238 if (unlikely(__Pyx_PyList_SET_ITEM(res, i, src[i]) < (0))) {
18239 Py_DECREF(res);
18240 return NULL;
18241 }
18242 }
18243 #endif
18244 return res;
18245}
18246
18247/* ImportImpl (used by Import) */
18248static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) {
18249 PyObject *imported_module = PyImport_GetModule(qualname);
18250 if (unlikely(!imported_module)) {
18251 *module = NULL;
18252 if (PyErr_Occurred()) {
18253 return -1;
18254 }
18255 return 0;
18256 }
18257 *module = imported_module;
18258 return 1;
18259}
18260static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) {
18261 PyObject *imported_module;
18262 PyObject *top_level_package_name;
18263 Py_ssize_t i;
18264 int status, module_found;
18265 Py_ssize_t dot_index;
18266 module_found = __Pyx__Import_GetModule(qualname, &imported_module);
18267 if (unlikely(!module_found || module_found == -1)) {
18268 *module = NULL;
18269 return module_found;
18270 }
18271 if (imported_names) {
18272 for (i = 0; i < len_imported_names; i++) {
18273 PyObject *imported_name = imported_names[i];
18274#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
18275 int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name);
18276#else
18277 int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name);
18278 if (unlikely(has_imported_attribute == -1)) goto error;
18279#endif
18280 if (!has_imported_attribute) {
18281 goto not_found;
18282 }
18283 }
18284 *module = imported_module;
18285 return 1;
18286 }
18287 dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1);
18288 if (dot_index == -1) {
18289 *module = imported_module;
18290 return 1;
18291 }
18292 if (unlikely(dot_index == -2)) goto error;
18293 top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index);
18294 if (unlikely(!top_level_package_name)) goto error;
18295 Py_DECREF(imported_module);
18296 status = __Pyx__Import_GetModule(top_level_package_name, module);
18297 Py_DECREF(top_level_package_name);
18298 return status;
18299error:
18300 Py_DECREF(imported_module);
18301 *module = NULL;
18302 return -1;
18303not_found:
18304 Py_DECREF(imported_module);
18305 *module = NULL;
18306 return 0;
18307}
18308static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) {
18309 PyObject *module = 0;
18310 PyObject *empty_dict = 0;
18311 PyObject *from_list = 0;
18312 int module_found;
18313 if (!qualname) {
18314 qualname = name;
18315 }
18316 module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module);
18317 if (likely(module_found == 1)) {
18318 return module;
18319 } else if (unlikely(module_found == -1)) {
18320 return NULL;
18321 }
18322 #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030f00a6
18323 empty_dict = PyFrozenDict_New(NULL);
18324 #else
18325 empty_dict = PyDict_New();
18326 #endif
18327 if (unlikely(!empty_dict))
18328 goto bad;
18329 if (imported_names) {
18330 from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names);
18331 if (unlikely(!from_list))
18332 goto bad;
18333 }
18334 if (level == -1) {
18335 const char* package_sep = strchr(__Pyx_MODULE_NAME, '.');
18336 if (package_sep != (0)) {
18337 module = PyImport_ImportModuleLevelObject(
18338 name, moddict, empty_dict, from_list, 1);
18339 if (unlikely(!module)) {
18340 if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
18341 goto bad;
18342 PyErr_Clear();
18343 }
18344 }
18345 level = 0;
18346 }
18347 if (!module) {
18348 module = PyImport_ImportModuleLevelObject(
18349 name, moddict, empty_dict, from_list, level);
18350 }
18351bad:
18352 Py_XDECREF(from_list);
18353 Py_XDECREF(empty_dict);
18354 return module;
18355}
18356
18357/* Import */
18358static PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level) {
18359 return __Pyx__Import(name, imported_names, len_imported_names, qualname, __pyx_mstate_global->__pyx_d, level);
18360}
18361
18362/* dict_setdefault (used by FetchCommonType) */
18363static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) {
18364 PyObject* value;
18365#if __PYX_LIMITED_VERSION_HEX >= 0x030F0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4)
18366 PyDict_SetDefaultRef(d, key, default_value, &value);
18367#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000
18368 PyObject *args[] = {d, key, default_value};
18369 value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
18370#elif CYTHON_COMPILING_IN_LIMITED_API
18371 value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL);
18372#else
18373 value = PyDict_SetDefault(d, key, default_value);
18374 if (unlikely(!value)) return NULL;
18375 Py_INCREF(value);
18376#endif
18377 return value;
18378}
18379
18380/* AddModuleRef (used by FetchSharedCythonModule) */
18381#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX < 0x030F00a3
18382 static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) {
18383 PyObject *module_dict = PyImport_GetModuleDict();
18384 PyObject *m;
18385 if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) {
18386 return NULL;
18387 }
18388 if (m != NULL && PyModule_Check(m)) {
18389 return m;
18390 }
18391 Py_XDECREF(m);
18392 m = PyModule_NewObject(name);
18393 if (m == NULL)
18394 return NULL;
18395 if (PyDict_CheckExact(module_dict)) {
18396 PyObject *new_m;
18397 (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m);
18398 Py_DECREF(m);
18399 return new_m;
18400 } else {
18401 if (PyObject_SetItem(module_dict, name, m) != 0) {
18402 Py_DECREF(m);
18403 return NULL;
18404 }
18405 return m;
18406 }
18407 }
18408 static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
18409 if ((PY_VERSION_HEX >= 0x030E0000) && Py_Version >= 0x030E0100) {
18410 return PyImport_AddModuleRef(name);
18411 }
18412 PyObject *py_name = PyUnicode_FromString(name);
18413 if (!py_name) return NULL;
18414 PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name);
18415 Py_DECREF(py_name);
18416 return module;
18417 }
18418#elif __PYX_LIMITED_VERSION_HEX < 0x030d0000
18419 static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
18420 PyObject *module = PyImport_AddModule(name);
18421 Py_XINCREF(module);
18422 return module;
18423 }
18424#endif
18425
18426/* FetchSharedCythonModule (used by FetchCommonType) */
18427static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
18428 return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME);
18429}
18430
18431/* VerifyCachedType (used by FetchCommonType) */
18432static int __Pyx_VerifyCachedType(PyObject *cached_type,
18433 const char *name,
18434 Py_ssize_t expected_basicsize) {
18435 Py_ssize_t basicsize;
18436 if (!PyType_Check(cached_type)) {
18437 PyErr_Format(PyExc_TypeError,
18438 "Shared Cython type %.200s is not a type object", name);
18439 return -1;
18440 }
18441 if (expected_basicsize == 0) {
18442 return 0; // size is inherited, nothing useful to check
18443 }
18444#if CYTHON_COMPILING_IN_LIMITED_API && CYTHON_OPAQUE_OBJECTS
18445 if (expected_basicsize < 0) {
18446 basicsize = PyType_GetTypeDataSize((PyTypeObject*)cached_type);
18447 } else
18448#endif
18449 {
18450 #if CYTHON_COMPILING_IN_LIMITED_API
18451 PyObject *py_basicsize;
18452 py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
18453 if (unlikely(!py_basicsize)) return -1;
18454 basicsize = PyLong_AsSsize_t(py_basicsize);
18455 Py_DECREF(py_basicsize);
18456 py_basicsize = NULL;
18457 if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1;
18458 #else
18459 basicsize = ((PyTypeObject*) cached_type)->tp_basicsize;
18460 #endif
18461 }
18462 if ((expected_basicsize >= 0) ?
18463 (basicsize != expected_basicsize) :
18464 (basicsize < -expected_basicsize)) {
18465 PyErr_Format(PyExc_TypeError,
18466 "Shared Cython type %.200s has the wrong size, try recompiling",
18467 name);
18468 return -1;
18469 }
18470 return 0;
18471}
18472
18473/* FetchCommonType (used by CommonTypesMetaclass) */
18474#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
18475static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
18476 PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases);
18477 if (result && metaclass) {
18478 PyObject *old_tp = (PyObject*)Py_TYPE(result);
18479 Py_INCREF((PyObject*)metaclass);
18480 Py_SET_TYPE(result, metaclass);
18481 Py_DECREF(old_tp);
18482 PyType_Modified((PyTypeObject*)result);
18483 }
18484 return result;
18485}
18486#else
18487#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b)
18488#endif
18489static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
18490 PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name;
18491 int get_item_ref_result;
18492 const char* object_name = strrchr(spec->name, '.');
18493 object_name = object_name ? object_name+1 : spec->name;
18494 py_object_name = PyUnicode_FromString(object_name);
18495 if (!py_object_name) return NULL;
18496 abi_module = __Pyx_FetchSharedCythonABIModule();
18497 if (!abi_module) goto done;
18498 abi_module_dict = PyModule_GetDict(abi_module);
18499 if (!abi_module_dict) goto done;
18500 get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type);
18501 if (get_item_ref_result == 1) {
18502 if (__Pyx_VerifyCachedType(
18503 cached_type,
18504 object_name,
18505 spec->basicsize) < 0) {
18506 goto bad;
18507 }
18508 goto done;
18509 } else if (unlikely(get_item_ref_result == -1)) {
18510 goto bad;
18511 }
18512 cached_type = __Pyx_PyType_FromMetaclass(
18513 metaclass,
18514 CYTHON_USE_MODULE_STATE ? module : abi_module,
18515 spec, bases);
18516 if (unlikely(!cached_type)) goto bad;
18517 new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type);
18518 if (unlikely(new_cached_type != cached_type)) {
18519 if (unlikely(!new_cached_type)) goto bad;
18520 Py_DECREF(cached_type);
18521 cached_type = new_cached_type;
18522 if (__Pyx_VerifyCachedType(
18523 cached_type,
18524 object_name,
18525 spec->basicsize) < 0) {
18526 goto bad;
18527 }
18528 goto done;
18529 } else {
18530 Py_DECREF(new_cached_type);
18531 }
18532done:
18533 Py_XDECREF(abi_module);
18534 Py_DECREF(py_object_name);
18535 assert(cached_type == NULL || PyType_Check(cached_type));
18536 return (PyTypeObject *) cached_type;
18537bad:
18538 Py_XDECREF(cached_type);
18539 cached_type = NULL;
18540 goto done;
18541}
18542
18543/* CommonTypesMetaclass (used by CythonFunctionShared) */
18544static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
18545 return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
18546}
18547#if __PYX_LIMITED_VERSION_HEX < 0x030A0000
18548static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) {
18549 PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types");
18550 return NULL;
18551}
18552static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) {
18553 PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable");
18554 return -1;
18555}
18556#endif
18557static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = {
18558 {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL},
18559 {0, 0, 0, 0, 0}
18560};
18561static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = {
18562 {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset},
18563 #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
18564 {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call},
18565 {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call},
18566 {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr},
18567 #endif
18568 {0, 0}
18569};
18570static PyType_Spec __pyx_CommonTypesMetaclass_spec = {
18571 __PYX_TYPE_MODULE_PREFIX "_common_types_metatype",
18572 0,
18573 0,
18574 Py_TPFLAGS_IMMUTABLETYPE |
18575 Py_TPFLAGS_DISALLOW_INSTANTIATION |
18576 Py_TPFLAGS_DEFAULT,
18577 __pyx_CommonTypesMetaclass_slots
18578};
18579static int __pyx_CommonTypesMetaclass_init(PyObject *module) {
18580 __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
18581 PyObject *bases = PyTuple_Pack(1, &PyType_Type);
18582 if (unlikely(!bases)) {
18583 return -1;
18584 }
18585 mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases);
18586 Py_DECREF(bases);
18587 if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
18588 return -1;
18589 }
18590 return 0;
18591}
18592
18593/* CythonFunctionPerModule (used by CythonFunctionShared) */
18594#if CYTHON_COMPILING_IN_LIMITED_API
18595static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) {
18596 if (__Pyx_CyFunction_Check(func)) {
18597 return __Pyx_as_CyFunctionObject(func)->func_methoddef->ml_meth == (PyCFunction) cfunc;
18598 } else if (PyCFunction_Check(func)) {
18599 return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
18600 }
18601 return 0;
18602}
18603static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
18604 if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) {
18605 int result;
18606 PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func);
18607 if (unlikely(!newFunc)) {
18608 PyErr_Clear(); // It's only an optimization, so don't throw an error
18609 return 0;
18610 }
18611 result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc);
18612 Py_DECREF(newFunc);
18613 return result;
18614 }
18615 return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc);
18616}
18617#else
18618static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
18619 if (PyMethod_Check(func)) {
18620 func = PyMethod_GET_FUNCTION(func);
18621 }
18622 return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
18623}
18624#endif
18625static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
18626#if CYTHON_COMPILING_IN_LIMITED_API
18627 __Pyx_Py_XDECREF_SET(
18628 __Pyx__CyFunction_GetClassObj(f),
18629 ((classobj) ? __Pyx_NewRef(classobj) : NULL));
18630#else
18631 __Pyx_Py_XDECREF_SET(
18632 ((PyCMethodObject *) (f))->mm_class,
18633 (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
18634#endif
18635}
18636static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) {
18637 __pyx_CyFunctionObject *m = __Pyx_as_CyFunctionObject(func);
18638 m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type);
18639 if (unlikely(!m->defaults))
18640 return NULL;
18641 return m->defaults;
18642}
18643static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
18644 __pyx_CyFunctionObject *m = __Pyx_as_CyFunctionObject(func);
18645 m->defaults_tuple = tuple;
18646 Py_INCREF(tuple);
18647}
18648static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
18649 __pyx_CyFunctionObject *m = __Pyx_as_CyFunctionObject(func);
18650 m->defaults_kwdict = dict;
18651 Py_INCREF(dict);
18652}
18653static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
18654 __pyx_CyFunctionObject *m = __Pyx_as_CyFunctionObject(func);
18655 m->func_annotations = dict;
18656 Py_INCREF(dict);
18657}
18658
18659/* CallTypeTraverse (used by CythonFunctionShared) */
18660#if !CYTHON_USE_TYPE_SPECS
18661#else
18662static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) {
18663 if (!always_call) {
18664 PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*);
18665 unsigned long flags = PyType_GetFlags(base);
18666 if (flags & Py_TPFLAGS_HEAPTYPE) {
18667 return 0;
18668 }
18669 }
18670 Py_VISIT((PyObject*)Py_TYPE(o));
18671 return 0;
18672}
18673#endif
18674
18675/* PyMethodNew (used by CythonFunctionShared) */
18676#if CYTHON_COMPILING_IN_LIMITED_API
18677static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
18678 PyObject *result;
18679 CYTHON_UNUSED_VAR(typ);
18680 if (!self)
18681 return __Pyx_NewRef(func);
18682 #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
18683 {
18684 PyObject *args[] = {func, self};
18685 result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL);
18686 }
18687 #else
18688 result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL);
18689 #endif
18690 return result;
18691}
18692#else
18693static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
18694 CYTHON_UNUSED_VAR(typ);
18695 if (!self)
18696 return __Pyx_NewRef(func);
18697 return PyMethod_New(func, self);
18698}
18699#endif
18700
18701/* PyVectorcallFastCallDict (used by CythonFunctionShared) */
18702#if CYTHON_VECTORCALL
18703static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
18704{
18705 PyObject *res = NULL;
18706 PyObject *kwnames;
18707 PyObject **newargs;
18708 PyObject **kwvalues;
18709 Py_ssize_t i;
18710 #if CYTHON_AVOID_BORROWED_REFS
18711 PyObject *pos;
18712 #else
18713 Py_ssize_t pos;
18714 #endif
18715 size_t j;
18716 PyObject *key, *value;
18717 unsigned long keys_are_strings;
18718 #if !CYTHON_ASSUME_SAFE_SIZE
18719 Py_ssize_t nkw = PyDict_Size(kw);
18720 if (unlikely(nkw == -1)) return NULL;
18721 #else
18722 Py_ssize_t nkw = PyDict_GET_SIZE(kw);
18723 #endif
18724 newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
18725 if (unlikely(newargs == NULL)) {
18726 PyErr_NoMemory();
18727 return NULL;
18728 }
18729 for (j = 0; j < nargs; j++) newargs[j] = args[j];
18730 kwnames = PyTuple_New(nkw);
18731 if (unlikely(kwnames == NULL)) {
18732 PyMem_Free(newargs);
18733 return NULL;
18734 }
18735 kwvalues = newargs + nargs;
18736 pos = 0;
18737 i = 0;
18738 keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
18739 while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) {
18740 keys_are_strings &=
18741 #if CYTHON_COMPILING_IN_LIMITED_API
18742 PyType_GetFlags(Py_TYPE(key));
18743 #else
18744 Py_TYPE(key)->tp_flags;
18745 #endif
18746 #if !CYTHON_ASSUME_SAFE_MACROS
18747 if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup;
18748 #else
18749 PyTuple_SET_ITEM(kwnames, i, key);
18750 #endif
18751 kwvalues[i] = value;
18752 i++;
18753 }
18754 if (unlikely(!keys_are_strings)) {
18755 PyErr_SetString(PyExc_TypeError, "keywords must be strings");
18756 goto cleanup;
18757 }
18758 res = vc(func, newargs, nargs, kwnames);
18759cleanup:
18760 #if CYTHON_AVOID_BORROWED_REFS
18761 Py_DECREF(pos);
18762 #endif
18763 Py_DECREF(kwnames);
18764 for (i = 0; i < nkw; i++)
18765 Py_DECREF(kwvalues[i]);
18766 PyMem_Free(newargs);
18767 return res;
18768}
18769static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
18770{
18771 Py_ssize_t kw_size =
18772 likely(kw == NULL) ?
18773 0 :
18774#if !CYTHON_ASSUME_SAFE_SIZE
18775 PyDict_Size(kw);
18776#else
18777 PyDict_GET_SIZE(kw);
18778#endif
18779 if (kw_size == 0) {
18780 return vc(func, args, nargs, NULL);
18781 }
18782#if !CYTHON_ASSUME_SAFE_SIZE
18783 else if (unlikely(kw_size == -1)) {
18784 return NULL;
18785 }
18786#endif
18787 return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
18788}
18789#endif
18790
18791/* CythonFunctionShared (used by CythonFunction) */
18792static PyObject *
18793__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op)
18794{
18795 if (unlikely(op->func_doc == NULL)) {
18796#if CYTHON_COMPILING_IN_LIMITED_API
18797 const char *doc = op->func_methoddef->ml_doc;
18798#else
18799 const char *doc = ((PyCFunctionObject*)op)->m_ml->ml_doc;
18800#endif
18801 if (doc) {
18802 op->func_doc = PyUnicode_FromString(doc);
18803 if (unlikely(op->func_doc == NULL))
18804 return NULL;
18805 } else {
18806 Py_INCREF(Py_None);
18807 return Py_None;
18808 }
18809 }
18810 Py_INCREF(op->func_doc);
18811 return op->func_doc;
18812}
18813static PyObject *
18814__Pyx_CyFunction_get_doc(PyObject *op_in, void *closure) {
18815 PyObject *result;
18816 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18817 CYTHON_UNUSED_VAR(closure);
18818 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
18819 result = __Pyx_CyFunction_get_doc_locked(op);
18820 __Pyx_END_CRITICAL_SECTION();
18821 return result;
18822}
18823static int
18824__Pyx_CyFunction_set_doc(PyObject *op_in, PyObject *value, void *context)
18825{
18826 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18827 CYTHON_UNUSED_VAR(context);
18828 if (value == NULL) {
18829 value = Py_None;
18830 }
18831 Py_INCREF(value);
18832 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
18833 __Pyx_Py_XDECREF_SET(op->func_doc, value);
18834 __Pyx_END_CRITICAL_SECTION();
18835 return 0;
18836}
18837static PyObject *
18838__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op)
18839{
18840 if (unlikely(op->func_name == NULL)) {
18841#if CYTHON_COMPILING_IN_LIMITED_API
18842 const char *name = op->func_methoddef->ml_name;
18843#else
18844 const char *name = ((PyCFunctionObject*)op)->m_ml->ml_name;
18845#endif
18846 op->func_name = PyUnicode_InternFromString(name);
18847 if (unlikely(op->func_name == NULL))
18848 return NULL;
18849 }
18850 Py_INCREF(op->func_name);
18851 return op->func_name;
18852}
18853static PyObject *
18854__Pyx_CyFunction_get_name(PyObject *op, void *context)
18855{
18856 PyObject *result = NULL;
18857 CYTHON_UNUSED_VAR(context);
18858 __Pyx_BEGIN_CRITICAL_SECTION(op);
18859 result = __Pyx_CyFunction_get_name_locked(__Pyx_as_CyFunctionObject(op));
18860 __Pyx_END_CRITICAL_SECTION();
18861 return result;
18862}
18863static int
18864__Pyx_CyFunction_set_name(PyObject *op_in, PyObject *value, void *context)
18865{
18866 CYTHON_UNUSED_VAR(context);
18867 if (unlikely(value == NULL || !PyUnicode_Check(value))) {
18868 PyErr_SetString(PyExc_TypeError,
18869 "__name__ must be set to a string object");
18870 return -1;
18871 }
18872 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18873 Py_INCREF(value);
18874 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
18875 __Pyx_Py_XDECREF_SET(op->func_name, value);
18876 __Pyx_END_CRITICAL_SECTION();
18877 return 0;
18878}
18879static PyObject *
18880__Pyx_CyFunction_get_qualname(PyObject *op_in, void *context)
18881{
18882 CYTHON_UNUSED_VAR(context);
18883 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18884 PyObject *result;
18885 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
18886 Py_INCREF(op->func_qualname);
18887 result = op->func_qualname;
18888 __Pyx_END_CRITICAL_SECTION();
18889 return result;
18890}
18891static int
18892__Pyx_CyFunction_set_qualname(PyObject *op_in, PyObject *value, void *context)
18893{
18894 CYTHON_UNUSED_VAR(context);
18895 if (unlikely(value == NULL || !PyUnicode_Check(value))) {
18896 PyErr_SetString(PyExc_TypeError,
18897 "__qualname__ must be set to a string object");
18898 return -1;
18899 }
18900 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18901 Py_INCREF(value);
18902 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
18903 __Pyx_Py_XDECREF_SET(op->func_qualname, value);
18904 __Pyx_END_CRITICAL_SECTION();
18905 return 0;
18906}
18907#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
18908static PyObject *
18909__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
18910{
18911 CYTHON_UNUSED_VAR(context);
18912 if (unlikely(op->func_dict == NULL)) {
18913 op->func_dict = PyDict_New();
18914 if (unlikely(op->func_dict == NULL))
18915 return NULL;
18916 }
18917 Py_INCREF(op->func_dict);
18918 return op->func_dict;
18919}
18920#endif
18921static PyObject *
18922__Pyx_CyFunction_get_globals(PyObject *op_in, void *context)
18923{
18924 CYTHON_UNUSED_VAR(context);
18925 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18926 Py_INCREF(op->func_globals);
18927 return op->func_globals;
18928}
18929static PyObject *
18930__Pyx_CyFunction_get_closure(PyObject *op, void *context)
18931{
18932 CYTHON_UNUSED_VAR(op);
18933 CYTHON_UNUSED_VAR(context);
18934 Py_INCREF(Py_None);
18935 return Py_None;
18936}
18937static PyObject *
18938__Pyx_CyFunction_get_code(PyObject *op_in, void *context)
18939{
18940 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18941 PyObject* result = (op->func_code) ? op->func_code : Py_None;
18942 CYTHON_UNUSED_VAR(context);
18943 Py_INCREF(result);
18944 return result;
18945}
18946static int
18947__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op, PyObject *op_obj) {
18948 int result = 0;
18949 PyObject *res = op->defaults_getter(op_obj);
18950 if (unlikely(!res))
18951 return -1;
18952 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18953 op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
18954 Py_INCREF(op->defaults_tuple);
18955 op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
18956 Py_INCREF(op->defaults_kwdict);
18957 #else
18958 op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
18959 if (unlikely(!op->defaults_tuple)) result = -1;
18960 else {
18961 op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
18962 if (unlikely(!op->defaults_kwdict)) result = -1;
18963 }
18964 #endif
18965 Py_DECREF(res);
18966 return result;
18967}
18968static int
18969__Pyx_CyFunction_set_defaults(PyObject *op_in, PyObject* value, void *context) {
18970 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18971 CYTHON_UNUSED_VAR(context);
18972 if (!value) {
18973 value = Py_None;
18974 } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
18975 PyErr_SetString(PyExc_TypeError,
18976 "__defaults__ must be set to a tuple object");
18977 return -1;
18978 }
18979 PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
18980 "currently affect the values used in function calls", 1);
18981 Py_INCREF(value);
18982 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
18983 __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
18984 __Pyx_END_CRITICAL_SECTION();
18985 return 0;
18986}
18987static PyObject *
18988__Pyx_CyFunction_get_defaults_locked(PyObject *op_in) {
18989 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
18990 PyObject* result = op->defaults_tuple;
18991 if (unlikely(!result)) {
18992 if (op->defaults_getter) {
18993 if (unlikely(__Pyx_CyFunction_init_defaults(op, op_in) < 0)) return NULL;
18994 result = op->defaults_tuple;
18995 } else {
18996 result = Py_None;
18997 }
18998 }
18999 Py_INCREF(result);
19000 return result;
19001}
19002static PyObject *
19003__Pyx_CyFunction_get_defaults(PyObject *op, void *context) {
19004 PyObject* result = NULL;
19005 CYTHON_UNUSED_VAR(context);
19006 __Pyx_BEGIN_CRITICAL_SECTION(op);
19007 result = __Pyx_CyFunction_get_defaults_locked(op);
19008 __Pyx_END_CRITICAL_SECTION();
19009 return result;
19010}
19011static int
19012__Pyx_CyFunction_set_kwdefaults(PyObject *op_in, PyObject* value, void *context) {
19013 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19014 CYTHON_UNUSED_VAR(context);
19015 if (!value) {
19016 value = Py_None;
19017 } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
19018 PyErr_SetString(PyExc_TypeError,
19019 "__kwdefaults__ must be set to a dict object");
19020 return -1;
19021 }
19022 PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
19023 "currently affect the values used in function calls", 1);
19024 Py_INCREF(value);
19025 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19026 __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
19027 __Pyx_END_CRITICAL_SECTION();
19028 return 0;
19029}
19030static PyObject *
19031__Pyx_CyFunction_get_kwdefaults_locked(PyObject *op_in) {
19032 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19033 PyObject* result = op->defaults_kwdict;
19034 if (unlikely(!result)) {
19035 if (op->defaults_getter) {
19036 if (unlikely(__Pyx_CyFunction_init_defaults(op, op_in) < 0)) return NULL;
19037 result = op->defaults_kwdict;
19038 } else {
19039 result = Py_None;
19040 }
19041 }
19042 Py_INCREF(result);
19043 return result;
19044}
19045static PyObject *
19046__Pyx_CyFunction_get_kwdefaults(PyObject *op, void *context) {
19047 PyObject* result;
19048 CYTHON_UNUSED_VAR(context);
19049 __Pyx_BEGIN_CRITICAL_SECTION(op);
19050 result = __Pyx_CyFunction_get_kwdefaults_locked(op);
19051 __Pyx_END_CRITICAL_SECTION();
19052 return result;
19053}
19054static int __Pyx_CyFunction_set_annotate_in_dict_if_exists(PyObject *op_in, PyObject *value);
19055static int
19056__Pyx_CyFunction_set_annotations(PyObject *op_in, PyObject* value, void *context) {
19057 CYTHON_UNUSED_VAR(context);
19058 if (!value || value == Py_None) {
19059 value = NULL;
19060 } else if (unlikely(!PyDict_Check(value))) {
19061 PyErr_SetString(PyExc_TypeError,
19062 "__annotations__ must be set to a dict object");
19063 return -1;
19064 }
19065 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19066 Py_XINCREF(value);
19067 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19068 __Pyx_Py_XDECREF_SET(op->func_annotations, value);
19069 __Pyx_END_CRITICAL_SECTION();
19070 if (unlikely(__Pyx_CyFunction_set_annotate_in_dict_if_exists(op_in, Py_None) < 0)) return -1;
19071 return 0;
19072}
19073static int
19074__Pyx_CyFunction_get_dict_if_exists(PyObject *op_in, PyObject **dict) {
19075 /* Return 1 if the function dict exists, 0 otherwise. This cannot fail:
19076 * _PyObject_GetDictPtr() may clear errors internally, but never reports them. */
19077#if CYTHON_COMPILING_IN_PYPY
19078 *dict = PyObject_GenericGetDict(op_in, NULL);
19079#elif CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030C0000
19080 *dict = __Pyx_as_CyFunctionObject(op_in)->func_dict;
19081#else
19082 PyObject **dictptr = _PyObject_GetDictPtr(op_in);
19083 *dict = likely(dictptr) ? *dictptr : NULL;
19084#endif
19085 return *dict ? 1 : 0;
19086}
19087static int
19088__Pyx_CyFunction_get_annotate_from_dict_if_exists(PyObject *op_in, PyObject **annotate) {
19089 PyObject *dict;
19090 int dict_found;
19091 *annotate = NULL;
19092 dict_found = __Pyx_CyFunction_get_dict_if_exists(op_in, &dict);
19093 if (!dict_found) return 0;
19094 return __Pyx_PyDict_GetItemRef(dict, __pyx_mstate_global->__pyx_n_u_annotate, annotate);
19095}
19096static int
19097__Pyx_CyFunction_set_annotate_in_dict_if_exists(PyObject *op_in, PyObject *value) {
19098 PyObject *dict;
19099 int dict_found;
19100 dict_found = __Pyx_CyFunction_get_dict_if_exists(op_in, &dict);
19101 if (!dict_found) return 0;
19102 if (value) {
19103 return PyDict_SetItem(dict, __pyx_mstate_global->__pyx_n_u_annotate, value);
19104 } else {
19105#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
19106 return PyDict_Pop(dict, __pyx_mstate_global->__pyx_n_u_annotate, NULL);
19107#else
19108 int result = PyDict_Contains(dict, __pyx_mstate_global->__pyx_n_u_annotate);
19109 if (result == 1) {
19110 result = PyDict_DelItem(dict, __pyx_mstate_global->__pyx_n_u_annotate);
19111 }
19112 return result;
19113#endif
19114 }
19115}
19116static int
19117__Pyx_CyFunction_set_annotate_in_dict(PyObject *op_in, PyObject *value) {
19118 PyObject *dict;
19119 int result;
19120#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
19121 dict = __Pyx_CyFunction_get_dict(__Pyx_as_CyFunctionObject(op_in), NULL);
19122#else
19123 dict = PyObject_GenericGetDict(op_in, NULL);
19124#endif
19125 if (unlikely(!dict)) return -1;
19126 result = PyDict_SetItem(dict, __pyx_mstate_global->__pyx_n_u_annotate, value);
19127 Py_DECREF(dict);
19128 return result;
19129}
19130static PyObject *
19131__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) {
19132 PyObject* result = op->func_annotations;
19133 if (unlikely(!result)) {
19134 result = PyDict_New();
19135 if (unlikely(!result)) return NULL;
19136 op->func_annotations = result;
19137 }
19138 Py_INCREF(result);
19139 return result;
19140}
19141static PyObject *
19142__Pyx_CyFunction_get_annotations(PyObject *op_in, void *context) {
19143 PyObject *annotate = NULL;
19144 PyObject *result = NULL;
19145 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19146 CYTHON_UNUSED_VAR(context);
19147 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19148 result = __Pyx_XNewRef(op->func_annotations);
19149 __Pyx_END_CRITICAL_SECTION();
19150 if (result) return result;
19151 if (unlikely(__Pyx_CyFunction_get_annotate_from_dict_if_exists(op_in, &annotate) < 0)) return NULL;
19152 if (!annotate || annotate == Py_None) {
19153 Py_XDECREF(annotate);
19154 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19155 result = __Pyx_CyFunction_get_annotations_locked(op);
19156 __Pyx_END_CRITICAL_SECTION();
19157 return result;
19158 }
19159 PyObject *format = PyLong_FromLong(1L); // annotationlib.Format.VALUE
19160 if (likely(format)) {
19161 if (!Py_EnterRecursiveCall(" cyfunction __annotations__.__get__")) {
19162 result = __Pyx_PyObject_CallOneArg(annotate, format);
19163 Py_LeaveRecursiveCall();
19164 Py_DECREF(format);
19165 }
19166 }
19167 Py_DECREF(annotate);
19168 if (unlikely(!result)) return NULL;
19169 if (unlikely(!PyDict_Check(result))) {
19170 PyErr_SetString(PyExc_TypeError, "__annotate__ must return a dict");
19171 Py_DECREF(result);
19172 return NULL;
19173 }
19174 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19175 __Pyx_Py_XDECREF_SET(op->func_annotations, __Pyx_NewRef(result));
19176 __Pyx_END_CRITICAL_SECTION();
19177 return result;
19178}
19179static PyObject *__Pyx_CyFunction_annotate_impl(PyObject *self, PyObject *arg) {
19180 CYTHON_UNUSED_VAR(arg);
19181 if (unlikely(!self)) {
19182 PyErr_SetString(PyExc_SystemError, "cython __annotate__ called without 'self' argument");
19183 return NULL;
19184 }
19185 PyObject *result;
19186 if (Py_EnterRecursiveCall(" in cyfunction annotate")) {
19187 return NULL;
19188 }
19189 result = __Pyx_CyFunction_get_annotations(self, NULL);
19190 Py_LeaveRecursiveCall();
19191 return result;
19192}
19193static PyObject *
19194__Pyx_CyFunction_get_annotate(PyObject *op_in, void *context);
19195static int
19196__Pyx_CyFunction_set_annotate(PyObject *op_in, PyObject* value, void *context) {
19197 CYTHON_UNUSED_VAR(context);
19198 if (value == NULL) {
19199 PyErr_SetString(PyExc_TypeError, "__annotate__ cannot be deleted");
19200 return -1;
19201 }
19202 if (unlikely(value != Py_None && !PyCallable_Check(value))) {
19203 PyErr_SetString(PyExc_TypeError, "__annotate__ must be callable or None");
19204 return -1;
19205 }
19206 if (unlikely(__Pyx_TypeCheck(value, &PyCFunction_Type))) {
19207#if !CYTHON_ASSUME_SAFE_MACROS && !CYTHON_COMPILING_IN_PYPY
19208 PyCFunction cfunction = PyCFunction_GetFunction(value);
19209 if (unlikely(!cfunction)) return -1;
19210 PyObject *value_self = PyCFunction_GetSelf(value);
19211 if (unlikely(!value_self && PyErr_Occurred())) return -1;
19212#else
19213 PyCFunction cfunction = PyCFunction_GET_FUNCTION(value);
19214 PyObject *value_self = PyCFunction_GET_SELF(value);
19215#endif
19216 if (cfunction == __Pyx_CyFunction_annotate_impl && value_self == op_in) {
19217 return __Pyx_CyFunction_set_annotate_in_dict_if_exists(op_in, NULL);
19218 }
19219 }
19220 if (value != Py_None) {
19221 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19222 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19223 Py_CLEAR(op->func_annotations);
19224 __Pyx_END_CRITICAL_SECTION();
19225 }
19226 return __Pyx_CyFunction_set_annotate_in_dict(op_in, value);
19227}
19228#if __PYX_LIMITED_VERSION_HEX < 0x030B0000
19229static PyObject *
19230__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) {
19231 int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
19232 if (is_coroutine) {
19233 PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine;
19234 fromlist = PyList_New(1);
19235 if (unlikely(!fromlist)) return NULL;
19236 Py_INCREF(marker);
19237#if CYTHON_ASSUME_SAFE_MACROS
19238 PyList_SET_ITEM(fromlist, 0, marker);
19239#else
19240 if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
19241 Py_DECREF(fromlist);
19242 return NULL;
19243 }
19244#endif
19245 module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0);
19246 Py_DECREF(fromlist);
19247 if (unlikely(!module)) {
19248 goto ignore_or_error;
19249 }
19250 is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker);
19251 Py_DECREF(module);
19252 if (likely(is_coroutine_value)) {
19253 return is_coroutine_value;
19254 }
19255ignore_or_error:
19256 if (!__Pyx_IgnoreException(PyExc_Exception)) {
19257 return NULL;
19258 }
19259 }
19260 return __Pyx_PyBool_FromLong(is_coroutine);
19261}
19262static PyObject *
19263__Pyx_CyFunction_get_is_coroutine(PyObject *op_in, void *context) {
19264 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19265 PyObject *result;
19266 CYTHON_UNUSED_VAR(context);
19267 if (op->func_is_coroutine) {
19268 return __Pyx_NewRef(op->func_is_coroutine);
19269 }
19270 result = __Pyx_CyFunction_get_is_coroutine_value(op);
19271 if (unlikely(!result))
19272 return NULL;
19273 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19274 if (op->func_is_coroutine) {
19275 Py_DECREF(result);
19276 result = __Pyx_NewRef(op->func_is_coroutine);
19277 } else {
19278 op->func_is_coroutine = __Pyx_NewRef(result);
19279 }
19280 __Pyx_END_CRITICAL_SECTION();
19281 return result;
19282}
19283#endif
19284static void __Pyx_CyFunction_raise_argument_count_error(PyObject *func, const char* message, Py_ssize_t size) {
19285#if CYTHON_COMPILING_IN_LIMITED_API
19286 PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
19287 if (!py_name) return;
19288 PyErr_Format(PyExc_TypeError,
19289 "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
19290 py_name, message, size);
19291 Py_DECREF(py_name);
19292#else
19293 const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
19294 PyErr_Format(PyExc_TypeError,
19295 "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
19296 name, message, size);
19297#endif
19298}
19299static void __Pyx_CyFunction_raise_type_error(PyObject *func, const char* message) {
19300#if CYTHON_COMPILING_IN_LIMITED_API
19301 PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
19302 if (!py_name) return;
19303 PyErr_Format(PyExc_TypeError,
19304 "%.200S() %s",
19305 py_name, message);
19306 Py_DECREF(py_name);
19307#else
19308 const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
19309 PyErr_Format(PyExc_TypeError,
19310 "%.200s() %s",
19311 name, message);
19312#endif
19313}
19314#if CYTHON_COMPILING_IN_LIMITED_API
19315static PyObject *
19316__Pyx_CyFunction_get_module(PyObject *op_in, void *context) {
19317 CYTHON_UNUSED_VAR(context);
19318 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19319 Py_INCREF(op->func_module);
19320 return op->func_module;
19321}
19322static int
19323__Pyx_CyFunction_set_module(PyObject *op_in, PyObject* value, void *context) {
19324 CYTHON_UNUSED_VAR(context);
19325 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19326 if (value == NULL) {
19327 value = Py_None;
19328 }
19329 Py_INCREF(value);
19330 PyObject *old = op->func_module;
19331 op->func_module = value;
19332 Py_DECREF(old);
19333 return 0;
19334}
19335#endif
19336static PyGetSetDef __pyx_CyFunction_getsets[] = {
19337 {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
19338 {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
19339 {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
19340 {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
19341 {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
19342#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
19343 {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0},
19344 {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0},
19345#else
19346 {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0},
19347 {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0},
19348#endif
19349 {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
19350 {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
19351 {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
19352 {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
19353 {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
19354 {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
19355 {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
19356 {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
19357 {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
19358 {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
19359 {"__annotate__", (getter)__Pyx_CyFunction_get_annotate, (setter)__Pyx_CyFunction_set_annotate, 0, 0},
19360#if __PYX_LIMITED_VERSION_HEX < 0x030B0000
19361 {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
19362#endif
19363#if CYTHON_COMPILING_IN_LIMITED_API
19364 {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
19365#endif
19366 {0, 0, 0, 0, 0}
19367};
19368static PyMemberDef __pyx_CyFunction_members[] = {
19369#if !CYTHON_COMPILING_IN_LIMITED_API
19370 {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
19371#endif
19372#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
19373 {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict),
19374 __PYX_SHARED_RELATIVE_OFFSET | READONLY, 0},
19375#endif
19376#if CYTHON_VECTORCALL
19377#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
19378 {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall),
19379 __PYX_SHARED_RELATIVE_OFFSET | READONLY, 0},
19380#else
19381 {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
19382#endif
19383#if CYTHON_COMPILING_IN_LIMITED_API
19384 {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist),
19385 __PYX_SHARED_RELATIVE_OFFSET | READONLY, 0},
19386#else
19387 {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
19388#endif
19389#endif
19390 {0, 0, 0, 0, 0}
19391};
19392static PyObject *
19393__Pyx_CyFunction_reduce(PyObject *m_in, PyObject *args)
19394{
19395 PyObject *result = NULL;
19396 __pyx_CyFunctionObject *m = __Pyx_as_CyFunctionObject(m_in);
19397 CYTHON_UNUSED_VAR(args);
19398 __Pyx_BEGIN_CRITICAL_SECTION(m_in);
19399 Py_INCREF(m->func_qualname);
19400 result = m->func_qualname;
19401 __Pyx_END_CRITICAL_SECTION();
19402 return result;
19403}
19404static PyMethodDef __pyx_CyFunction_methods[] = {
19405 {"__annotate_cython__", __Pyx_CyFunction_annotate_impl, METH_O,
19406 "Placeholder __annotate__ function to allow 'functools.wraps' to work "
19407 "on Cython functions."},
19408 {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_NOARGS, 0},
19409 {0, 0, 0, 0}
19410};
19411static PyObject *
19412__Pyx_CyFunction_get_annotate(PyObject *op_in, void *context) {
19413 PyObject *annotate = NULL;
19414 CYTHON_UNUSED_VAR(context);
19415 if (unlikely(__Pyx_CyFunction_get_annotate_from_dict_if_exists(op_in, &annotate) < 0)) return NULL;
19416 if (annotate) return annotate;
19417 PyObject *method = PyCFunction_New(
19418 &__pyx_CyFunction_methods[0],
19419 op_in);
19420 return method;
19421}
19422#if CYTHON_COMPILING_IN_LIMITED_API
19423#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
19424#else
19425#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
19426#endif
19427static PyObject *__Pyx_CyFunction_Init(PyObject *op_in,
19428 PyMethodDef *ml, int flags, PyObject* qualname,
19429 PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
19430 __pyx_CyFunctionObject* op = __Pyx_as_CyFunctionObject(op_in);
19431#if !CYTHON_COMPILING_IN_LIMITED_API
19432 PyCFunctionObject *cf = (PyCFunctionObject*) op;
19433#endif
19434 if (unlikely(op == NULL))
19435 return NULL;
19436#if CYTHON_COMPILING_IN_LIMITED_API
19437 op->func_methoddef = ml;
19438 Py_INCREF(module);
19439 op->func_module = module;
19440#endif
19441 op->flags = flags;
19442 __Pyx_CyFunction_weakreflist(op) = NULL;
19443#if !CYTHON_COMPILING_IN_LIMITED_API
19444 cf->m_ml = ml;
19445 cf->m_self = (PyObject *) op;
19446#endif
19447 Py_XINCREF(closure);
19448 op->func_closure = closure;
19449#if !CYTHON_COMPILING_IN_LIMITED_API
19450 Py_XINCREF(module);
19451 cf->m_module = module;
19452#endif
19453#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
19454 op->func_dict = NULL;
19455#endif
19456 op->func_name = NULL;
19457 Py_INCREF(qualname);
19458 op->func_qualname = qualname;
19459 op->func_doc = NULL;
19460#if CYTHON_COMPILING_IN_LIMITED_API
19461 op->func_classobj = NULL;
19462#else
19463 ((PyCMethodObject*)op)->mm_class = NULL;
19464#endif
19465 op->func_globals = globals;
19466 Py_INCREF(op->func_globals);
19467 Py_XINCREF(code);
19468 op->func_code = code;
19469 op->defaults = NULL;
19470 op->defaults_tuple = NULL;
19471 op->defaults_kwdict = NULL;
19472 op->defaults_getter = NULL;
19473 op->func_annotations = NULL;
19474#if __PYX_LIMITED_VERSION_HEX < 0x030B0000
19475 op->func_is_coroutine = NULL;
19476#endif
19477#if CYTHON_VECTORCALL
19478 switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
19479 case METH_NOARGS:
19480 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
19481 break;
19482 case METH_O:
19483 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
19484 break;
19485 case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
19486 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
19487 break;
19488 case METH_FASTCALL | METH_KEYWORDS:
19489 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
19490 break;
19491 case METH_VARARGS | METH_KEYWORDS:
19492 __Pyx_CyFunction_func_vectorcall(op) = NULL;
19493 break;
19494 default:
19495 PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
19496 Py_DECREF(op_in);
19497 return NULL;
19498 }
19499#endif
19500 return op_in;
19501}
19502static int __Pyx__CyFunction_clear(__pyx_CyFunctionObject *m)
19503{
19504 Py_CLEAR(m->func_closure);
19505#if CYTHON_COMPILING_IN_LIMITED_API
19506 Py_CLEAR(m->func_module);
19507#else
19508 Py_CLEAR(((PyCFunctionObject*)m)->m_module);
19509#endif
19510#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
19511 Py_CLEAR(m->func_dict);
19512#elif PY_VERSION_HEX < 0x030d0000
19513 _PyObject_ClearManagedDict((PyObject*)m);
19514#else
19515 PyObject_ClearManagedDict((PyObject*)m);
19516#endif
19517 Py_CLEAR(m->func_name);
19518 Py_CLEAR(m->func_qualname);
19519 Py_CLEAR(m->func_doc);
19520 Py_CLEAR(m->func_globals);
19521 Py_CLEAR(m->func_code);
19522#if CYTHON_COMPILING_IN_LIMITED_API
19523 Py_CLEAR(m->func_classobj);
19524#else
19525 {
19526 PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
19527 ((PyCMethodObject *) (m))->mm_class = NULL;
19528 Py_XDECREF(cls);
19529 }
19530#endif
19531 Py_CLEAR(m->defaults_tuple);
19532 Py_CLEAR(m->defaults_kwdict);
19533 Py_CLEAR(m->func_annotations);
19534#if __PYX_LIMITED_VERSION_HEX < 0x030B0000
19535 Py_CLEAR(m->func_is_coroutine);
19536#endif
19537 Py_CLEAR(m->defaults);
19538 return 0;
19539}
19540static int
19541__Pyx_CyFunction_clear(PyObject *m)
19542{
19543 return __Pyx__CyFunction_clear(__Pyx_as_CyFunctionObject(m));
19544}
19545static void __Pyx__CyFunction_dealloc(PyObject *m)
19546{
19547 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(m);
19548 if (__Pyx_CyFunction_weakreflist(cyfunc) != NULL)
19549 PyObject_ClearWeakRefs(m);
19550 __Pyx__CyFunction_clear(cyfunc);
19551 __Pyx_PyHeapTypeObject_GC_Del(m);
19552}
19553static void __Pyx_CyFunction_dealloc(PyObject *m)
19554{
19555 PyObject_GC_UnTrack(m);
19556 __Pyx__CyFunction_dealloc(m);
19557}
19558static int __Pyx_CyFunction_traverse(PyObject *m_in, visitproc visit, void *arg)
19559{
19560 __pyx_CyFunctionObject *m = __Pyx_as_CyFunctionObject(m_in);
19561 {
19562 int e = __Pyx_call_type_traverse(m_in, 1, visit, arg);
19563 if (e) return e;
19564 }
19565 Py_VISIT(m->func_closure);
19566#if CYTHON_COMPILING_IN_LIMITED_API
19567 Py_VISIT(m->func_module);
19568#else
19569 Py_VISIT(((PyCFunctionObject*)m)->m_module);
19570#endif
19571#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
19572 Py_VISIT(m->func_dict);
19573#else
19574 {
19575 int e =
19576#if PY_VERSION_HEX < 0x030d0000
19577 _PyObject_VisitManagedDict
19578#else
19579 PyObject_VisitManagedDict
19580#endif
19581 ((PyObject*)m, visit, arg);
19582 if (e != 0) return e;
19583 }
19584#endif
19585 __Pyx_VISIT_CONST(m->func_name);
19586 __Pyx_VISIT_CONST(m->func_qualname);
19587 Py_VISIT(m->func_doc);
19588 Py_VISIT(m->func_globals);
19589 __Pyx_VISIT_CONST(m->func_code);
19590 Py_VISIT(__Pyx__CyFunction_GetClassObj(m));
19591 Py_VISIT(m->defaults_tuple);
19592 Py_VISIT(m->defaults_kwdict);
19593 Py_VISIT(m->func_annotations);
19594#if __PYX_LIMITED_VERSION_HEX < 0x030B0000
19595 Py_VISIT(m->func_is_coroutine);
19596#endif
19597 Py_VISIT(m->defaults);
19598 return 0;
19599}
19600static PyObject*
19601__Pyx_CyFunction_repr(PyObject *op_in)
19602{
19603 __pyx_CyFunctionObject *op = __Pyx_as_CyFunctionObject(op_in);
19604 PyObject *repr;
19605 __Pyx_BEGIN_CRITICAL_SECTION(op_in);
19606 repr = PyUnicode_FromFormat("<cyfunction %U at %p>",
19607 op->func_qualname, (void *)op);
19608 __Pyx_END_CRITICAL_SECTION();
19609 return repr;
19610}
19611static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
19612#if CYTHON_COMPILING_IN_LIMITED_API
19613 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(func);
19614 PyCFunction meth = cyfunc->func_methoddef->ml_meth;
19615 int flags = cyfunc->func_methoddef->ml_flags;
19616#else
19617 PyCFunctionObject* f = (PyCFunctionObject*)func;
19618 PyCFunction meth = f->m_ml->ml_meth;
19619 int flags = f->m_ml->ml_flags;
19620#endif
19621 Py_ssize_t size;
19622 switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
19623 case METH_VARARGS:
19624 if (likely(kw == NULL || PyDict_Size(kw) == 0))
19625 return (*meth)(self, arg);
19626 break;
19627 case METH_VARARGS | METH_KEYWORDS:
19628 return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw);
19629 case METH_NOARGS:
19630 if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
19631#if CYTHON_ASSUME_SAFE_SIZE
19632 size = PyTuple_GET_SIZE(arg);
19633#else
19634 size = PyTuple_Size(arg);
19635 if (unlikely(size < 0)) return NULL;
19636#endif
19637 if (likely(size == 0))
19638 return (*meth)(self, NULL);
19639 __Pyx_CyFunction_raise_argument_count_error(
19640 func,
19641 "takes no arguments", size);
19642 return NULL;
19643 }
19644 break;
19645 case METH_O:
19646 if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
19647#if CYTHON_ASSUME_SAFE_SIZE
19648 size = PyTuple_GET_SIZE(arg);
19649#else
19650 size = PyTuple_Size(arg);
19651 if (unlikely(size < 0)) return NULL;
19652#endif
19653 if (likely(size == 1)) {
19654 PyObject *result, *arg0;
19655 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
19656 arg0 = PyTuple_GET_ITEM(arg, 0);
19657 #else
19658 arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
19659 #endif
19660 result = (*meth)(self, arg0);
19661 #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
19662 Py_DECREF(arg0);
19663 #endif
19664 return result;
19665 }
19666 __Pyx_CyFunction_raise_argument_count_error(
19667 func,
19668 "takes exactly one argument", size);
19669 return NULL;
19670 }
19671 break;
19672 default:
19673 PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
19674 return NULL;
19675 }
19676 __Pyx_CyFunction_raise_type_error(
19677 func, "takes no keyword arguments");
19678 return NULL;
19679}
19680static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
19681 PyObject *result;
19682 result = __Pyx_CyFunction_CallMethod(func, func, arg, kw);
19683 return result;
19684}
19685static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
19686 PyObject *result;
19687 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(func);
19688#if CYTHON_VECTORCALL
19689 __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
19690 if (vc) {
19691#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
19692 return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
19693#else
19694 (void) &__Pyx_PyVectorcall_FastCallDict;
19695 return PyVectorcall_Call(func, args, kw);
19696#endif
19697 }
19698#endif
19699 if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
19700 Py_ssize_t argc;
19701 PyObject *new_args;
19702 PyObject *self;
19703#if CYTHON_ASSUME_SAFE_SIZE
19704 argc = PyTuple_GET_SIZE(args);
19705#else
19706 argc = PyTuple_Size(args);
19707 if (unlikely(argc < 0)) return NULL;
19708#endif
19709 new_args = PyTuple_GetSlice(args, 1, argc);
19710 if (unlikely(!new_args))
19711 return NULL;
19712 self = PyTuple_GetItem(args, 0);
19713 if (unlikely(!self)) {
19714 Py_DECREF(new_args);
19715 PyErr_Format(PyExc_TypeError,
19716 "unbound method %.200S() needs an argument",
19717 cyfunc->func_qualname);
19718 return NULL;
19719 }
19720 result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
19721 Py_DECREF(new_args);
19722 } else {
19723 result = __Pyx_CyFunction_Call(func, args, kw);
19724 }
19725 return result;
19726}
19727#if CYTHON_VECTORCALL
19728static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(PyObject *func, __pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
19729{
19730 int ret = 0;
19731 if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
19732 if (unlikely(nargs < 1)) {
19733 __Pyx_CyFunction_raise_type_error(
19734 func, "needs an argument");
19735 return -1;
19736 }
19737 ret = 1;
19738 }
19739 if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) {
19740 __Pyx_CyFunction_raise_type_error(
19741 func, "takes no keyword arguments");
19742 return -1;
19743 }
19744 return ret;
19745}
19746static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
19747{
19748 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(func);
19749 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
19750 PyObject *self;
19751#if CYTHON_COMPILING_IN_LIMITED_API
19752 PyCFunction meth = cyfunc->func_methoddef->ml_meth;
19753 if (unlikely(!meth)) return NULL;
19754#else
19755 PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
19756#endif
19757 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(func, cyfunc, nargs, kwnames)) {
19758 case 1:
19759 self = args[0];
19760 args += 1;
19761 nargs -= 1;
19762 break;
19763 case 0:
19764 self = func;
19765 break;
19766 default:
19767 return NULL;
19768 }
19769 if (unlikely(nargs != 0)) {
19770 __Pyx_CyFunction_raise_argument_count_error(
19771 func, "takes no arguments", nargs);
19772 return NULL;
19773 }
19774 return meth(self, NULL);
19775}
19776static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
19777{
19778 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(func);
19779 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
19780 PyObject *self;
19781#if CYTHON_COMPILING_IN_LIMITED_API
19782 PyCFunction meth = cyfunc->func_methoddef->ml_meth;
19783 if (unlikely(!meth)) return NULL;
19784#else
19785 PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
19786#endif
19787 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(func, cyfunc, nargs, kwnames)) {
19788 case 1:
19789 self = args[0];
19790 args += 1;
19791 nargs -= 1;
19792 break;
19793 case 0:
19794 self = func;
19795 break;
19796 default:
19797 return NULL;
19798 }
19799 if (unlikely(nargs != 1)) {
19800 __Pyx_CyFunction_raise_argument_count_error(
19801 func, "takes exactly one argument", nargs);
19802 return NULL;
19803 }
19804 return meth(self, args[0]);
19805}
19806static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
19807{
19808 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(func);
19809 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
19810 PyObject *self;
19811#if CYTHON_COMPILING_IN_LIMITED_API
19812 PyCFunction meth = cyfunc->func_methoddef->ml_meth;
19813 if (unlikely(!meth)) return NULL;
19814#else
19815 PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
19816#endif
19817 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(func, cyfunc, nargs, NULL)) {
19818 case 1:
19819 self = args[0];
19820 args += 1;
19821 nargs -= 1;
19822 break;
19823 case 0:
19824 self = func;
19825 break;
19826 default:
19827 return NULL;
19828 }
19829 return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames);
19830}
19831static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
19832{
19833 __pyx_CyFunctionObject *cyfunc = __Pyx_as_CyFunctionObject(func);
19834 PyTypeObject *cls = (PyTypeObject *) __Pyx__CyFunction_GetClassObj(cyfunc);
19835 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
19836 PyObject *self;
19837#if CYTHON_COMPILING_IN_LIMITED_API
19838 PyCFunction meth = cyfunc->func_methoddef->ml_meth;
19839 if (unlikely(!meth)) return NULL;
19840#else
19841 PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
19842#endif
19843 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(func, cyfunc, nargs, NULL)) {
19844 case 1:
19845 self = args[0];
19846 args += 1;
19847 nargs -= 1;
19848 break;
19849 case 0:
19850 self = func;
19851 break;
19852 default:
19853 return NULL;
19854 }
19855 #if PY_VERSION_HEX < 0x030e00A6
19856 size_t nargs_value = (size_t) nargs;
19857 #else
19858 Py_ssize_t nargs_value = nargs;
19859 #endif
19860 return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames);
19861}
19862#endif
19863static PyType_Slot __pyx_CyFunctionType_slots[] = {
19864 {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
19865 {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
19866 {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
19867 {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
19868 {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
19869 {Py_tp_methods, (void *)__pyx_CyFunction_methods},
19870 {Py_tp_members, (void *)__pyx_CyFunction_members},
19871 {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
19872 {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
19873 {0, 0},
19874};
19875static PyType_Spec __pyx_CyFunctionType_spec = {
19876 __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
19877 __PYX_SHARED_SIZEOF(__pyx_CyFunctionObject),
19878 0,
19879#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
19880 Py_TPFLAGS_METHOD_DESCRIPTOR |
19881#endif
19882#if CYTHON_VECTORCALL
19883#if defined(Py_TPFLAGS_HAVE_VECTORCALL)
19884 Py_TPFLAGS_HAVE_VECTORCALL |
19885#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL)
19886 _Py_TPFLAGS_HAVE_VECTORCALL |
19887#endif
19888#endif // CYTHON_VECTORCALL
19889#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API
19890 Py_TPFLAGS_MANAGED_DICT |
19891#endif
19892 Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION |
19893 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
19894 __pyx_CyFunctionType_slots
19895};
19896static int __pyx_CyFunction_init(PyObject *module) {
19897 __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
19898 mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(
19899 mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL);
19900 if (unlikely(mstate->__pyx_CyFunctionType == NULL)) {
19901 return -1;
19902 }
19903 return 0;
19904}
19905
19906/* CythonFunction */
19907static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
19908 PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
19909 (void)&__Pyx_Get_CyFunction_Type;
19910 PyObject *op = __Pyx_CyFunction_Init(
19911 PyObject_GC_New(PyObject, __pyx_mstate_global->__pyx_CyFunctionType),
19912 ml, flags, qualname, closure, module, globals, code
19913 );
19914 if (likely(op)) {
19915 PyObject_GC_Track(op);
19916 }
19917 return op;
19918}
19919static PyTypeObject *__Pyx_Get_CyFunction_Type(void) {
19920 PyTypeObject *tp = __pyx_mstate_global->__pyx_CyFunctionType;
19921 Py_INCREF((PyObject*)tp);
19922 return tp;
19923}
19924
19925/* PyDictVersioning (used by CLineInTraceback) */
19926#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
19927static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
19928 PyObject *dict = Py_TYPE(obj)->tp_dict;
19929 return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
19930}
19931static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
19932 PyObject **dictptr = NULL;
19933 Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
19934 if (offset) {
19935#if CYTHON_COMPILING_IN_CPYTHON
19936 dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
19937#else
19938 dictptr = _PyObject_GetDictPtr(obj);
19939#endif
19940 }
19941 return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
19942}
19943static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
19944 PyObject *dict = Py_TYPE(obj)->tp_dict;
19945 if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
19946 return 0;
19947 return obj_dict_version == __Pyx_get_object_dict_version(obj);
19948}
19949#endif
19950
19951/* CLineInTraceback (used by AddTraceback) */
19952#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
19953#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
19954#define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o))
19955#elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
19956#define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL);
19957#else
19958PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) {
19959 PyObject **dict_ptr = _PyObject_GetDictPtr(o);
19960 return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL;
19961}
19962#endif
19963static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
19964 PyObject *use_cline = NULL;
19965 PyObject *ptype, *pvalue, *ptraceback;
19966 PyObject *cython_runtime_dict;
19967 CYTHON_MAYBE_UNUSED_VAR(tstate);
19968 if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) {
19969 return c_line;
19970 }
19971 __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
19972 cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime);
19973 if (likely(cython_runtime_dict)) {
19974 __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
19975 use_cline, cython_runtime_dict,
19976 __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False))
19977 }
19978 if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
19979 c_line = 0;
19980 }
19981 Py_XDECREF(use_cline);
19982 Py_XDECREF(cython_runtime_dict);
19983 __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
19984 return c_line;
19985}
19986#endif
19987
19988/* CodeObjectCache (used by AddTraceback) */
19989static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
19990 int start = 0, mid = 0, end = count - 1;
19991 if (end >= 0 && code_line > entries[end].code_line) {
19992 return count;
19993 }
19994 while (start < end) {
19995 mid = start + (end - start) / 2;
19996 if (code_line < entries[mid].code_line) {
19997 end = mid;
19998 } else if (code_line > entries[mid].code_line) {
19999 start = mid + 1;
20000 } else {
20001 return mid;
20002 }
20003 }
20004 if (code_line <= entries[mid].code_line) {
20005 return mid;
20006 } else {
20007 return mid + 1;
20008 }
20009}
20010static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) {
20011 __Pyx_CachedCodeObjectType* code_object;
20012 int pos;
20013 if (unlikely(!code_line) || unlikely(!code_cache->entries)) {
20014 return NULL;
20015 }
20016 pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line);
20017 if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) {
20018 return NULL;
20019 }
20020 code_object = code_cache->entries[pos].code_object;
20021 Py_INCREF(code_object);
20022 return code_object;
20023}
20024static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) {
20025#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
20026 (void)__pyx__find_code_object;
20027 return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss.
20028#else
20029 struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
20030#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
20031 __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count);
20032 if (old_count < 0) {
20033 __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
20034 return NULL;
20035 }
20036#endif
20037 __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line);
20038#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
20039 __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
20040#endif
20041 return result;
20042#endif
20043}
20044static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object)
20045{
20046 int pos, i;
20047 __Pyx_CodeObjectCacheEntry* entries = code_cache->entries;
20048 if (unlikely(!code_line)) {
20049 return;
20050 }
20051 if (unlikely(!entries)) {
20052 entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
20053 if (likely(entries)) {
20054 code_cache->entries = entries;
20055 code_cache->max_count = 64;
20056 code_cache->count = 1;
20057 entries[0].code_line = code_line;
20058 entries[0].code_object = code_object;
20059 Py_INCREF(code_object);
20060 }
20061 return;
20062 }
20063 pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line);
20064 if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) {
20065 __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object;
20066 entries[pos].code_object = code_object;
20067 Py_INCREF(code_object);
20068 Py_DECREF(tmp);
20069 return;
20070 }
20071 if (code_cache->count == code_cache->max_count) {
20072 int new_max = code_cache->max_count + 64;
20073 entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
20074 code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
20075 if (unlikely(!entries)) {
20076 return;
20077 }
20078 code_cache->entries = entries;
20079 code_cache->max_count = new_max;
20080 }
20081 for (i=code_cache->count; i>pos; i--) {
20082 entries[i] = entries[i-1];
20083 }
20084 entries[pos].code_line = code_line;
20085 entries[pos].code_object = code_object;
20086 code_cache->count++;
20087 Py_INCREF(code_object);
20088}
20089static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) {
20090#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
20091 (void)__pyx__insert_code_object;
20092 return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail.
20093#else
20094 struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
20095#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
20096 __pyx_nonatomic_int_type expected = 0;
20097 if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) {
20098 return;
20099 }
20100#endif
20101 __pyx__insert_code_object(code_cache, code_line, code_object);
20102#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
20103 __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN);
20104#endif
20105#endif
20106}
20107
20108/* AddTraceback */
20109#include "compile.h"
20110#include "frameobject.h"
20111#include "traceback.h"
20112#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION)
20113 #ifndef Py_BUILD_CORE
20114 #define Py_BUILD_CORE 1
20115 #endif
20116 #include "internal/pycore_frame.h"
20117#endif
20118#if CYTHON_COMPILING_IN_LIMITED_API
20119static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
20120 PyObject *firstlineno, PyObject *name) {
20121 PyObject *replace = NULL;
20122 if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
20123 if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
20124 replace = PyObject_GetAttrString(code, "replace");
20125 if (likely(replace)) {
20126 PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict);
20127 Py_DECREF(replace);
20128 return result;
20129 }
20130 return NULL;
20131}
20132static void __Pyx_AddTraceback(const char *funcname, int c_line,
20133 int py_line, const char *filename) {
20134 PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
20135 PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
20136 PyObject *exc_type, *exc_value, *exc_traceback;
20137 int success = 0;
20138 if (c_line) {
20139 c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
20140 }
20141 __Pyx_PyErr_FetchException(&exc_type, &exc_value, &exc_traceback);
20142 code_object = __pyx_find_code_object(c_line ? -c_line : py_line);
20143 if (!code_object) {
20144 code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
20145 if (unlikely(!code_object)) goto bad;
20146 py_py_line = PyLong_FromLong(py_line);
20147 if (unlikely(!py_py_line)) goto bad;
20148 if (c_line) {
20149 py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
20150 } else {
20151 py_funcname = PyUnicode_FromString(funcname);
20152 }
20153 if (unlikely(!py_funcname)) goto bad;
20154 dict = PyDict_New();
20155 if (unlikely(!dict)) goto bad;
20156 {
20157 PyObject *old_code_object = code_object;
20158 code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
20159 Py_DECREF(old_code_object);
20160 }
20161 if (unlikely(!code_object)) goto bad;
20162 __pyx_insert_code_object(c_line ? -c_line : py_line, code_object);
20163 } else {
20164 dict = PyDict_New();
20165 }
20166 getframe = PySys_GetObject("_getframe");
20167 if (unlikely(!getframe)) goto bad;
20168 if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
20169 frame = PyEval_EvalCode(code_object, dict, dict);
20170 if (unlikely(!frame) || frame == Py_None) goto bad;
20171 success = 1;
20172 bad:
20173 __Pyx_PyErr_RestoreException(exc_type, exc_value, exc_traceback);
20174 Py_XDECREF(code_object);
20175 Py_XDECREF(py_py_line);
20176 Py_XDECREF(py_funcname);
20177 Py_XDECREF(dict);
20178 Py_XDECREF(replace);
20179 if (success) {
20180 PyTraceBack_Here(
20181 (struct _frame*)frame);
20182 }
20183 Py_XDECREF(frame);
20184}
20185#else
20186static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
20187 const char *funcname, int c_line,
20188 int py_line, const char *filename) {
20189 PyCodeObject *py_code = NULL;
20190 PyObject *py_funcname = NULL;
20191 if (c_line) {
20192 py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
20193 if (!py_funcname) goto bad;
20194 funcname = PyUnicode_AsUTF8(py_funcname);
20195 if (!funcname) goto bad;
20196 }
20197 py_code = PyCode_NewEmpty(filename, funcname, py_line);
20198 Py_XDECREF(py_funcname);
20199 return py_code;
20200bad:
20201 Py_XDECREF(py_funcname);
20202 return NULL;
20203}
20204static void __Pyx_AddTraceback(const char *funcname, int c_line,
20205 int py_line, const char *filename) {
20206 PyCodeObject *py_code = 0;
20207 PyFrameObject *py_frame = 0;
20208 PyThreadState *tstate = __Pyx_PyThreadState_Current;
20209 PyObject *ptype, *pvalue, *ptraceback;
20210 if (c_line) {
20211 c_line = __Pyx_CLineForTraceback(tstate, c_line);
20212 }
20213 py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
20214 if (!py_code) {
20215 __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
20216 py_code = __Pyx_CreateCodeObjectForTraceback(
20217 funcname, c_line, py_line, filename);
20218 if (!py_code) {
20219 /* If the code object creation fails, then we should clear the
20220 fetched exception references and propagate the new exception */
20221 Py_XDECREF(ptype);
20222 Py_XDECREF(pvalue);
20223 Py_XDECREF(ptraceback);
20224 goto bad;
20225 }
20226 __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
20227 __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
20228 }
20229 py_frame = PyFrame_New(
20230 tstate, /*PyThreadState *tstate,*/
20231 py_code, /*PyCodeObject *code,*/
20232 __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/
20233 0 /*PyObject *locals*/
20234 );
20235 if (!py_frame) goto bad;
20236 __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
20237 PyTraceBack_Here(py_frame);
20238bad:
20239 Py_XDECREF(py_code);
20240 Py_XDECREF(py_frame);
20241}
20242#endif
20243
20244/* Declarations */
20245#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
20246 #ifdef __cplusplus
20247 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
20248 return ::std::complex< float >(x, y);
20249 }
20250 #else
20251 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
20252 return x + y*(__pyx_t_float_complex)_Complex_I;
20253 }
20254 #endif
20255#else
20256 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
20257 __pyx_t_float_complex z;
20258 z.real = x;
20259 z.imag = y;
20260 return z;
20261 }
20262#endif
20263
20264/* Arithmetic */
20265#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
20266#else
20267 static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20268 return (a.real == b.real) && (a.imag == b.imag);
20269 }
20270 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20271 __pyx_t_float_complex z;
20272 z.real = a.real + b.real;
20273 z.imag = a.imag + b.imag;
20274 return z;
20275 }
20276 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20277 __pyx_t_float_complex z;
20278 z.real = a.real - b.real;
20279 z.imag = a.imag - b.imag;
20280 return z;
20281 }
20282 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20283 __pyx_t_float_complex z;
20284 z.real = a.real * b.real - a.imag * b.imag;
20285 z.imag = a.real * b.imag + a.imag * b.real;
20286 return z;
20287 }
20288 #if 1
20289 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20290 if (b.imag == 0) {
20291 return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
20292 } else if (fabsf(b.real) >= fabsf(b.imag)) {
20293 if (b.real == 0 && b.imag == 0) {
20294 return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
20295 } else {
20296 float r = b.imag / b.real;
20297 float s = (float)(1.0) / (b.real + b.imag * r);
20298 return __pyx_t_float_complex_from_parts(
20299 (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
20300 }
20301 } else {
20302 float r = b.real / b.imag;
20303 float s = (float)(1.0) / (b.imag + b.real * r);
20304 return __pyx_t_float_complex_from_parts(
20305 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
20306 }
20307 }
20308 #else
20309 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20310 if (b.imag == 0) {
20311 return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
20312 } else {
20313 float denom = b.real * b.real + b.imag * b.imag;
20314 return __pyx_t_float_complex_from_parts(
20315 (a.real * b.real + a.imag * b.imag) / denom,
20316 (a.imag * b.real - a.real * b.imag) / denom);
20317 }
20318 }
20319 #endif
20320 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
20321 __pyx_t_float_complex z;
20322 z.real = -a.real;
20323 z.imag = -a.imag;
20324 return z;
20325 }
20326 static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
20327 return (a.real == 0) && (a.imag == 0);
20328 }
20329 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
20330 __pyx_t_float_complex z;
20331 z.real = a.real;
20332 z.imag = -a.imag;
20333 return z;
20334 }
20335 #if 1
20336 static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
20337 #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
20338 return sqrtf(z.real*z.real + z.imag*z.imag);
20339 #else
20340 return hypotf(z.real, z.imag);
20341 #endif
20342 }
20343 static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
20344 __pyx_t_float_complex z;
20345 float r, lnr, theta, z_r, z_theta;
20346 if (b.imag == 0 && b.real == (int)b.real) {
20347 if (b.real < 0) {
20348 float denom = a.real * a.real + a.imag * a.imag;
20349 a.real = a.real / denom;
20350 a.imag = -a.imag / denom;
20351 b.real = -b.real;
20352 }
20353 switch ((int)b.real) {
20354 case 0:
20355 z.real = 1;
20356 z.imag = 0;
20357 return z;
20358 case 1:
20359 return a;
20360 case 2:
20361 return __Pyx_c_prod_float(a, a);
20362 case 3:
20363 z = __Pyx_c_prod_float(a, a);
20364 return __Pyx_c_prod_float(z, a);
20365 case 4:
20366 z = __Pyx_c_prod_float(a, a);
20367 return __Pyx_c_prod_float(z, z);
20368 }
20369 }
20370 if (a.imag == 0) {
20371 if (a.real == 0) {
20372 return a;
20373 } else if ((b.imag == 0) && (a.real >= 0)) {
20374 z.real = powf(a.real, b.real);
20375 z.imag = 0;
20376 return z;
20377 } else if (a.real > 0) {
20378 r = a.real;
20379 theta = 0;
20380 } else {
20381 r = -a.real;
20382 theta = atan2f(0.0, -1.0);
20383 }
20384 } else {
20385 r = __Pyx_c_abs_float(a);
20386 theta = atan2f(a.imag, a.real);
20387 }
20388 lnr = logf(r);
20389 z_r = expf(lnr * b.real - theta * b.imag);
20390 z_theta = theta * b.real + lnr * b.imag;
20391 z.real = z_r * cosf(z_theta);
20392 z.imag = z_r * sinf(z_theta);
20393 return z;
20394 }
20395 #endif
20396#endif
20397
20398/* Declarations */
20399#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
20400 #ifdef __cplusplus
20401 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
20402 return ::std::complex< double >(x, y);
20403 }
20404 #else
20405 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
20406 return x + y*(__pyx_t_double_complex)_Complex_I;
20407 }
20408 #endif
20409#else
20410 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
20411 __pyx_t_double_complex z;
20412 z.real = x;
20413 z.imag = y;
20414 return z;
20415 }
20416#endif
20417
20418/* Arithmetic */
20419#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
20420#else
20421 static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20422 return (a.real == b.real) && (a.imag == b.imag);
20423 }
20424 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20425 __pyx_t_double_complex z;
20426 z.real = a.real + b.real;
20427 z.imag = a.imag + b.imag;
20428 return z;
20429 }
20430 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20431 __pyx_t_double_complex z;
20432 z.real = a.real - b.real;
20433 z.imag = a.imag - b.imag;
20434 return z;
20435 }
20436 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20437 __pyx_t_double_complex z;
20438 z.real = a.real * b.real - a.imag * b.imag;
20439 z.imag = a.real * b.imag + a.imag * b.real;
20440 return z;
20441 }
20442 #if 1
20443 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20444 if (b.imag == 0) {
20445 return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
20446 } else if (fabs(b.real) >= fabs(b.imag)) {
20447 if (b.real == 0 && b.imag == 0) {
20448 return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
20449 } else {
20450 double r = b.imag / b.real;
20451 double s = (double)(1.0) / (b.real + b.imag * r);
20452 return __pyx_t_double_complex_from_parts(
20453 (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
20454 }
20455 } else {
20456 double r = b.real / b.imag;
20457 double s = (double)(1.0) / (b.imag + b.real * r);
20458 return __pyx_t_double_complex_from_parts(
20459 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
20460 }
20461 }
20462 #else
20463 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20464 if (b.imag == 0) {
20465 return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
20466 } else {
20467 double denom = b.real * b.real + b.imag * b.imag;
20468 return __pyx_t_double_complex_from_parts(
20469 (a.real * b.real + a.imag * b.imag) / denom,
20470 (a.imag * b.real - a.real * b.imag) / denom);
20471 }
20472 }
20473 #endif
20474 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
20475 __pyx_t_double_complex z;
20476 z.real = -a.real;
20477 z.imag = -a.imag;
20478 return z;
20479 }
20480 static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
20481 return (a.real == 0) && (a.imag == 0);
20482 }
20483 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
20484 __pyx_t_double_complex z;
20485 z.real = a.real;
20486 z.imag = -a.imag;
20487 return z;
20488 }
20489 #if 1
20490 static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
20491 #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
20492 return sqrt(z.real*z.real + z.imag*z.imag);
20493 #else
20494 return hypot(z.real, z.imag);
20495 #endif
20496 }
20497 static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
20498 __pyx_t_double_complex z;
20499 double r, lnr, theta, z_r, z_theta;
20500 if (b.imag == 0 && b.real == (int)b.real) {
20501 if (b.real < 0) {
20502 double denom = a.real * a.real + a.imag * a.imag;
20503 a.real = a.real / denom;
20504 a.imag = -a.imag / denom;
20505 b.real = -b.real;
20506 }
20507 switch ((int)b.real) {
20508 case 0:
20509 z.real = 1;
20510 z.imag = 0;
20511 return z;
20512 case 1:
20513 return a;
20514 case 2:
20515 return __Pyx_c_prod_double(a, a);
20516 case 3:
20517 z = __Pyx_c_prod_double(a, a);
20518 return __Pyx_c_prod_double(z, a);
20519 case 4:
20520 z = __Pyx_c_prod_double(a, a);
20521 return __Pyx_c_prod_double(z, z);
20522 }
20523 }
20524 if (a.imag == 0) {
20525 if (a.real == 0) {
20526 return a;
20527 } else if ((b.imag == 0) && (a.real >= 0)) {
20528 z.real = pow(a.real, b.real);
20529 z.imag = 0;
20530 return z;
20531 } else if (a.real > 0) {
20532 r = a.real;
20533 theta = 0;
20534 } else {
20535 r = -a.real;
20536 theta = atan2(0.0, -1.0);
20537 }
20538 } else {
20539 r = __Pyx_c_abs_double(a);
20540 theta = atan2(a.imag, a.real);
20541 }
20542 lnr = log(r);
20543 z_r = exp(lnr * b.real - theta * b.imag);
20544 z_theta = theta * b.real + lnr * b.imag;
20545 z.real = z_r * cos(z_theta);
20546 z.imag = z_r * sin(z_theta);
20547 return z;
20548 }
20549 #endif
20550#endif
20551
20552/* Declarations */
20553#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
20554 #ifdef __cplusplus
20555 static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
20556 return ::std::complex< long double >(x, y);
20557 }
20558 #else
20559 static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
20560 return x + y*(__pyx_t_long_double_complex)_Complex_I;
20561 }
20562 #endif
20563#else
20564 static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
20565 __pyx_t_long_double_complex z;
20566 z.real = x;
20567 z.imag = y;
20568 return z;
20569 }
20570#endif
20571
20572/* Arithmetic */
20573#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
20574#else
20575 static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20576 return (a.real == b.real) && (a.imag == b.imag);
20577 }
20578 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20579 __pyx_t_long_double_complex z;
20580 z.real = a.real + b.real;
20581 z.imag = a.imag + b.imag;
20582 return z;
20583 }
20584 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20585 __pyx_t_long_double_complex z;
20586 z.real = a.real - b.real;
20587 z.imag = a.imag - b.imag;
20588 return z;
20589 }
20590 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20591 __pyx_t_long_double_complex z;
20592 z.real = a.real * b.real - a.imag * b.imag;
20593 z.imag = a.real * b.imag + a.imag * b.real;
20594 return z;
20595 }
20596 #if 1
20597 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20598 if (b.imag == 0) {
20599 return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real);
20600 } else if (fabsl(b.real) >= fabsl(b.imag)) {
20601 if (b.real == 0 && b.imag == 0) {
20602 return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
20603 } else {
20604 long double r = b.imag / b.real;
20605 long double s = (long double)(1.0) / (b.real + b.imag * r);
20606 return __pyx_t_long_double_complex_from_parts(
20607 (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
20608 }
20609 } else {
20610 long double r = b.real / b.imag;
20611 long double s = (long double)(1.0) / (b.imag + b.real * r);
20612 return __pyx_t_long_double_complex_from_parts(
20613 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
20614 }
20615 }
20616 #else
20617 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20618 if (b.imag == 0) {
20619 return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real);
20620 } else {
20621 long double denom = b.real * b.real + b.imag * b.imag;
20622 return __pyx_t_long_double_complex_from_parts(
20623 (a.real * b.real + a.imag * b.imag) / denom,
20624 (a.imag * b.real - a.real * b.imag) / denom);
20625 }
20626 }
20627 #endif
20628 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) {
20629 __pyx_t_long_double_complex z;
20630 z.real = -a.real;
20631 z.imag = -a.imag;
20632 return z;
20633 }
20634 static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) {
20635 return (a.real == 0) && (a.imag == 0);
20636 }
20637 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) {
20638 __pyx_t_long_double_complex z;
20639 z.real = a.real;
20640 z.imag = -a.imag;
20641 return z;
20642 }
20643 #if 1
20644 static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) {
20645 #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
20646 return sqrtl(z.real*z.real + z.imag*z.imag);
20647 #else
20648 return hypotl(z.real, z.imag);
20649 #endif
20650 }
20651 static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
20652 __pyx_t_long_double_complex z;
20653 long double r, lnr, theta, z_r, z_theta;
20654 if (b.imag == 0 && b.real == (int)b.real) {
20655 if (b.real < 0) {
20656 long double denom = a.real * a.real + a.imag * a.imag;
20657 a.real = a.real / denom;
20658 a.imag = -a.imag / denom;
20659 b.real = -b.real;
20660 }
20661 switch ((int)b.real) {
20662 case 0:
20663 z.real = 1;
20664 z.imag = 0;
20665 return z;
20666 case 1:
20667 return a;
20668 case 2:
20669 return __Pyx_c_prod_long__double(a, a);
20670 case 3:
20671 z = __Pyx_c_prod_long__double(a, a);
20672 return __Pyx_c_prod_long__double(z, a);
20673 case 4:
20674 z = __Pyx_c_prod_long__double(a, a);
20675 return __Pyx_c_prod_long__double(z, z);
20676 }
20677 }
20678 if (a.imag == 0) {
20679 if (a.real == 0) {
20680 return a;
20681 } else if ((b.imag == 0) && (a.real >= 0)) {
20682 z.real = powl(a.real, b.real);
20683 z.imag = 0;
20684 return z;
20685 } else if (a.real > 0) {
20686 r = a.real;
20687 theta = 0;
20688 } else {
20689 r = -a.real;
20690 theta = atan2l(0.0, -1.0);
20691 }
20692 } else {
20693 r = __Pyx_c_abs_long__double(a);
20694 theta = atan2l(a.imag, a.real);
20695 }
20696 lnr = logl(r);
20697 z_r = expl(lnr * b.real - theta * b.imag);
20698 z_theta = theta * b.real + lnr * b.imag;
20699 z.real = z_r * cosl(z_theta);
20700 z.imag = z_r * sinl(z_theta);
20701 return z;
20702 }
20703 #endif
20704#endif
20705
20706/* PyObjectVectorcallKwds (used by PyObjectVectorcallMethodKwds) */
20707#if CYTHON_VECTORCALL
20708CYTHON_UNUSED static int __Pyx_CheckVectorcallKwarg(PyObject *kwnames, Py_ssize_t i) {
20709 PyObject *key = __Pyx_PyTuple_GET_ITEM(kwnames, i);
20710#if !CYTHON_ASSUME_SAFE_MACROS
20711 if (unlikely(!key)) return -1;
20712#endif
20713 if (unlikely(!PyUnicode_Check(key))) {
20714 PyErr_SetString(PyExc_TypeError, "keywords must be strings");
20715 return -1;
20716 }
20717 return 0;
20718}
20719#else
20720CYTHON_UNUSED static PyObject *__Pyx_MakeKwargDict(PyObject **keys, PyObject **values, Py_ssize_t n) {
20721 PyObject *out = PyDict_New();
20722 if (unlikely(!out)) return NULL;
20723 for (Py_ssize_t i=0; i<n; ++i) {
20724 if (unlikely(PyDict_SetItem(out, keys[i], values[i]) < 0)) {
20725 Py_DECREF(out);
20726 return NULL;
20727 }
20728 }
20729 return out;
20730}
20731CYTHON_UNUSED static int __Pyx_CheckVectorcallKwarg(PyObject **kwnames, Py_ssize_t i) {
20732 PyObject *key = kwnames[i];
20733 if (unlikely(!PyUnicode_Check(key))) {
20734 PyErr_SetString(PyExc_TypeError, "keywords must be strings");
20735 return -1;
20736 }
20737 return 0;
20738}
20739#endif
20740
20741/* PyObjectVectorcallMethodKwds (used by CIntToPy) */
20742#if !CYTHON_VECTORCALL
20743static PyObject *__Pyx_Object_VectorcallMethodKwds(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) {
20744 PyObject *result;
20745 PyObject *obj = PyObject_GetAttr(args[0], name);
20746 if (unlikely(!obj))
20747 return NULL;
20748 result = __Pyx_Object_VectorcallKwds(obj, args+1, nargsf-1, kwnames);
20749 Py_DECREF(obj);
20750 return result;
20751}
20752#endif
20753
20754/* CIntToPy */
20755static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value) {
20756#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
20757#pragma GCC diagnostic push
20758#pragma GCC diagnostic ignored "-Wconversion"
20759#endif
20760 const int neg_one = (int) -1, const_zero = (int) 0;
20761#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
20762#pragma GCC diagnostic pop
20763#endif
20764 const int is_unsigned = neg_one > const_zero;
20765 if (is_unsigned) {
20766 if (sizeof(int) < sizeof(long)) {
20767 return PyLong_FromLong((long) value);
20768 } else if (sizeof(int) <= sizeof(unsigned long)) {
20769 return PyLong_FromUnsignedLong((unsigned long) value);
20770#if !CYTHON_COMPILING_IN_PYPY
20771 } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
20772 return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
20773#endif
20774 }
20775 } else {
20776 if (sizeof(int) <= sizeof(long)) {
20777 return PyLong_FromLong((long) value);
20778 } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
20779 return PyLong_FromLongLong((PY_LONG_LONG) value);
20780 }
20781 }
20782 {
20783 unsigned char *bytes = (unsigned char *)&value;
20784#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
20785 if (is_unsigned) {
20786 return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
20787 } else {
20788 return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
20789 }
20790#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
20791 int one = 1; int little = (int)*(unsigned char *)&one;
20792 return _PyLong_FromByteArray(bytes, sizeof(int),
20793 little, !is_unsigned);
20794#else
20795 int one = 1; int little = (int)*(unsigned char *)&one;
20796 PyObject *result = NULL, *kwds = NULL;
20797 PyObject *py_bytes = NULL, *order_str = NULL, *from_bytes_str = NULL;;
20798 py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
20799 if (!py_bytes) goto limited_bad;
20800 from_bytes_str = PyUnicode_FromStringAndSize("from_bytes", 10);
20801 if (!from_bytes_str) goto limited_bad;
20802 order_str = PyUnicode_FromString(little ? "little" : "big");
20803 if (!order_str) goto limited_bad;
20804 {
20805 PyObject *args[] = { (PyObject*)&PyLong_Type, py_bytes, order_str, Py_True };
20806 if (!is_unsigned) {
20807 PyObject *signed_str = PyUnicode_FromStringAndSize("signed", 6);
20808 if (!signed_str) goto limited_bad;
20809#if CYTHON_VECTORCALL
20810 kwds = PyTuple_Pack(1, signed_str);
20811#else
20812 {
20813 PyObject *keys[] = {signed_str};
20814 PyObject *values[] = {Py_True};
20815 kwds = __Pyx_MakeKwargDict(keys, values, 1);
20816 }
20817#endif
20818 Py_DECREF(signed_str);
20819 if (unlikely(!kwds)) goto limited_bad;
20820 }
20821 result = __Pyx_Object_VectorcallMethodKwds(from_bytes_str, args, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
20822 }
20823 limited_bad:
20824 Py_XDECREF(kwds);
20825 Py_XDECREF(order_str);
20826 Py_XDECREF(py_bytes);
20827 Py_XDECREF(from_bytes_str);
20828 return result;
20829#endif
20830 }
20831}
20832
20833/* CIntToPy */
20834static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) {
20835#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
20836#pragma GCC diagnostic push
20837#pragma GCC diagnostic ignored "-Wconversion"
20838#endif
20839 const long neg_one = (long) -1, const_zero = (long) 0;
20840#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
20841#pragma GCC diagnostic pop
20842#endif
20843 const int is_unsigned = neg_one > const_zero;
20844 if (is_unsigned) {
20845 if (sizeof(long) < sizeof(long)) {
20846 return PyLong_FromLong((long) value);
20847 } else if (sizeof(long) <= sizeof(unsigned long)) {
20848 return PyLong_FromUnsignedLong((unsigned long) value);
20849#if !CYTHON_COMPILING_IN_PYPY
20850 } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
20851 return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
20852#endif
20853 }
20854 } else {
20855 if (sizeof(long) <= sizeof(long)) {
20856 return PyLong_FromLong((long) value);
20857 } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
20858 return PyLong_FromLongLong((PY_LONG_LONG) value);
20859 }
20860 }
20861 {
20862 unsigned char *bytes = (unsigned char *)&value;
20863#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
20864 if (is_unsigned) {
20865 return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
20866 } else {
20867 return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
20868 }
20869#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
20870 int one = 1; int little = (int)*(unsigned char *)&one;
20871 return _PyLong_FromByteArray(bytes, sizeof(long),
20872 little, !is_unsigned);
20873#else
20874 int one = 1; int little = (int)*(unsigned char *)&one;
20875 PyObject *result = NULL, *kwds = NULL;
20876 PyObject *py_bytes = NULL, *order_str = NULL, *from_bytes_str = NULL;;
20877 py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
20878 if (!py_bytes) goto limited_bad;
20879 from_bytes_str = PyUnicode_FromStringAndSize("from_bytes", 10);
20880 if (!from_bytes_str) goto limited_bad;
20881 order_str = PyUnicode_FromString(little ? "little" : "big");
20882 if (!order_str) goto limited_bad;
20883 {
20884 PyObject *args[] = { (PyObject*)&PyLong_Type, py_bytes, order_str, Py_True };
20885 if (!is_unsigned) {
20886 PyObject *signed_str = PyUnicode_FromStringAndSize("signed", 6);
20887 if (!signed_str) goto limited_bad;
20888#if CYTHON_VECTORCALL
20889 kwds = PyTuple_Pack(1, signed_str);
20890#else
20891 {
20892 PyObject *keys[] = {signed_str};
20893 PyObject *values[] = {Py_True};
20894 kwds = __Pyx_MakeKwargDict(keys, values, 1);
20895 }
20896#endif
20897 Py_DECREF(signed_str);
20898 if (unlikely(!kwds)) goto limited_bad;
20899 }
20900 result = __Pyx_Object_VectorcallMethodKwds(from_bytes_str, args, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
20901 }
20902 limited_bad:
20903 Py_XDECREF(kwds);
20904 Py_XDECREF(order_str);
20905 Py_XDECREF(py_bytes);
20906 Py_XDECREF(from_bytes_str);
20907 return result;
20908#endif
20909 }
20910}
20911
20912/* CIntFromPyVerify (used by CIntFromPy) */
20913#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
20914 __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
20915#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
20916 __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
20917#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
20918 {\
20919 func_type value = func_value;\
20920 if (sizeof(target_type) < sizeof(func_type)) {\
20921 if (unlikely(value != (func_type) (target_type) value)) {\
20922 func_type zero = 0;\
20923 if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
20924 return (target_type) -1;\
20925 if (is_unsigned && unlikely(value < zero))\
20926 goto raise_neg_overflow;\
20927 else\
20928 goto raise_overflow;\
20929 }\
20930 }\
20931 return (target_type) value;\
20932 }
20933
20934/* CIntFromPy */
20935static long __Pyx_LargePyLong___Pyx_PyLong_As_long(PyObject *x);
20936static long __Pyx_raise_neg_overflow___Pyx_PyLong_As_long(void) {
20937 const char* type_name = "long";
20938 PyErr_Format(PyExc_OverflowError,
20939 "can't convert negative value to %.200s", type_name);
20940 return (long) -1;
20941}
20942static long __Pyx_raise_overflow___Pyx_PyLong_As_long(void) {
20943 const char* type_name = "long";
20944 PyErr_Format(PyExc_OverflowError,
20945 "value too large to convert to %.200s", type_name);
20946 return (long) -1;
20947}
20948static CYTHON_INLINE long __Pyx_PyULong___Pyx_PyLong_As_long(PyObject *x) {
20949 const int is_unsigned = 1;
20950#if CYTHON_USE_PYLONG_INTERNALS
20951 {
20952 const digit* digits = __Pyx_PyLong_Digits(x);
20953 const Py_ssize_t size = __Pyx_PyLong_DigitCount(x);
20954 if (size == 2 && (8 * sizeof(long) > 1 * PyLong_SHIFT)) {
20955 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
20956 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
20957 } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
20958 return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
20959 }
20960 } else
20961 if (size == 3 && (8 * sizeof(long) > 2 * PyLong_SHIFT)) {
20962 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
20963 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
20964 } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
20965 return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
20966 }
20967 } else
20968 if (size == 4 && (8 * sizeof(long) > 3 * PyLong_SHIFT)) {
20969 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
20970 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
20971 } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
20972 return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
20973 }
20974 } else
20975 {}
20976 }
20977#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
20978 if (unlikely(Py_SIZE(x) < 0)) {
20979 goto raise_neg_overflow;
20980 }
20981#else
20982 {
20983 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
20984 if (unlikely(result < 0))
20985 return (long) -1;
20986 if (unlikely(result == 1))
20987 goto raise_neg_overflow;
20988 }
20989#endif
20990 if ((sizeof(long) <= sizeof(unsigned long))) {
20991 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
20992 } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
20993 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
20994 }
20995 return __Pyx_LargePyLong___Pyx_PyLong_As_long(x);
20996raise_neg_overflow:
20997 return __Pyx_raise_neg_overflow___Pyx_PyLong_As_long();
20998raise_overflow:
20999 return __Pyx_raise_overflow___Pyx_PyLong_As_long();
21000}
21001static CYTHON_INLINE long __Pyx_PySLong___Pyx_PyLong_As_long(PyObject *x) {
21002 const int is_unsigned = 0;
21003#if CYTHON_USE_PYLONG_INTERNALS
21004 if (__Pyx_PyLong_IsNeg(x)) {
21005 const Py_ssize_t size = __Pyx_PyLong_DigitCount(x);
21006 const digit* digits = __Pyx_PyLong_Digits(x);
21007 if (size == 2 && (8 * sizeof(long) > 1 * PyLong_SHIFT)) {
21008 if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
21009 long ival = - (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21010 __PYX_VERIFY_RETURN_INT(long, long, ival)
21011 } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
21012 return (long) (((long) -1) * (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21013 }
21014 } else
21015 if (size == 3 && (8 * sizeof(long) > 2 * PyLong_SHIFT)) {
21016 if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
21017 long ival = - (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21018 __PYX_VERIFY_RETURN_INT(long, long, ival)
21019 } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
21020 return (long) (((long) -1) * (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21021 }
21022 } else
21023 if (size == 4 && (8 * sizeof(long) > 3 * PyLong_SHIFT)) {
21024 if ((8 * sizeof(long) > 4 * PyLong_SHIFT)) {
21025 long ival = - (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21026 __PYX_VERIFY_RETURN_INT(long, long, ival)
21027 } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
21028 return (long) (((long) -1) * (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21029 }
21030 } else
21031 {}
21032 } else {
21033 const Py_ssize_t size = __Pyx_PyLong_DigitCount(x);
21034 const digit* digits = __Pyx_PyLong_Digits(x);
21035 if (size == 2 && (8 * sizeof(long) > 1 * PyLong_SHIFT)) {
21036 if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
21037 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21038 } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
21039 return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
21040 }
21041 } else
21042 if (size == 3 && (8 * sizeof(long) > 2 * PyLong_SHIFT)) {
21043 if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
21044 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21045 } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
21046 return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
21047 }
21048 } else
21049 if (size == 4 && (8 * sizeof(long) > 3 * PyLong_SHIFT)) {
21050 if ((8 * sizeof(long) > 4 * PyLong_SHIFT)) {
21051 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21052 } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
21053 return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
21054 }
21055 } else
21056 {}
21057 }
21058#endif
21059 #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
21060 if ((sizeof(long) <= sizeof(int)) && (sizeof(int) < sizeof(long))) {
21061 __PYX_VERIFY_RETURN_INT_EXC(long, int, PyLong_AsInt(x))
21062 } else
21063 #endif
21064 if ((sizeof(long) <= sizeof(long))) {
21065 __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
21066 } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
21067 __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
21068 }
21069 return __Pyx_LargePyLong___Pyx_PyLong_As_long(x);
21070raise_neg_overflow:
21071 return __Pyx_raise_neg_overflow___Pyx_PyLong_As_long();
21072raise_overflow:
21073 return __Pyx_raise_overflow___Pyx_PyLong_As_long();
21074}
21075static long __Pyx_LargePyLong___Pyx_PyLong_As_long(PyObject *x) {
21076#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21077#pragma GCC diagnostic push
21078#pragma GCC diagnostic ignored "-Wconversion"
21079#endif
21080 const long neg_one = (long) -1, const_zero = (long) 0;
21081#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21082#pragma GCC diagnostic pop
21083#endif
21084 const int is_unsigned = neg_one > const_zero;
21085 long val;
21086 int ret = -1;
21087#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
21088 Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
21089 x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
21090 if (unlikely(bytes_copied == -1)) {
21091 } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
21092 goto raise_overflow;
21093 } else {
21094 ret = 0;
21095 }
21096#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
21097 int one = 1; int is_little = (int)*(unsigned char *)&one;
21098 unsigned char *bytes = (unsigned char *)&val;
21099 ret = _PyLong_AsByteArray((PyLongObject *)x,
21100 bytes, sizeof(val),
21101 is_little, !is_unsigned);
21102 if ((0)) goto raise_overflow;
21103#else
21104 PyObject *v;
21105 PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
21106 int bits, remaining_bits, is_negative = 0;
21107 int chunk_size = (sizeof(long) < 8) ? 30 : 62;
21108 if (likely(PyLong_CheckExact(x))) {
21109 v = __Pyx_NewRef(x);
21110 } else {
21111 v = PyNumber_Long(x);
21112 if (unlikely(!v)) return (long) -1;
21113 assert(PyLong_CheckExact(v));
21114 }
21115 {
21116 int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
21117 if (unlikely(result < 0)) {
21118 Py_DECREF(v);
21119 return (long) -1;
21120 }
21121 is_negative = result == 1;
21122 }
21123 if (is_unsigned && unlikely(is_negative)) {
21124 Py_DECREF(v);
21125 PyErr_SetString(PyExc_OverflowError,
21126 "can't convert negative value to long");
21127 return (long) -1;
21128 } else if (is_negative) {
21129 stepval = PyNumber_Invert(v);
21130 Py_DECREF(v);
21131 if (unlikely(!stepval))
21132 return (long) -1;
21133 } else {
21134 stepval = v;
21135 }
21136 v = NULL;
21137 val = (long) 0;
21138 mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
21139 shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
21140 for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
21141 PyObject *tmp, *digit;
21142 long idigit;
21143 digit = PyNumber_And(stepval, mask);
21144 if (unlikely(!digit)) goto done;
21145 idigit = PyLong_AsLong(digit);
21146 Py_DECREF(digit);
21147 if (unlikely(idigit < 0)) goto done;
21148 val |= ((long) idigit) << bits;
21149 tmp = PyNumber_Rshift(stepval, shift);
21150 if (unlikely(!tmp)) goto done;
21151 Py_DECREF(stepval); stepval = tmp;
21152 }
21153 Py_DECREF(shift); shift = NULL;
21154 Py_DECREF(mask); mask = NULL;
21155 {
21156 long idigit = PyLong_AsLong(stepval);
21157 if (unlikely(idigit < 0)) goto done;
21158 remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
21159 if (unlikely(idigit >= (1L << remaining_bits)))
21160 goto raise_overflow;
21161 val |= ((long) idigit) << bits;
21162 }
21163 if (!is_unsigned) {
21164 if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
21165 goto raise_overflow;
21166 if (is_negative)
21167 val = ~val;
21168 }
21169 ret = 0;
21170done:
21171 Py_XDECREF(shift);
21172 Py_XDECREF(mask);
21173 Py_XDECREF(stepval);
21174#endif
21175 if (unlikely(ret))
21176 return (long) -1;
21177 return val;
21178raise_overflow:
21179 return __Pyx_raise_overflow___Pyx_PyLong_As_long();
21180}
21181static CYTHON_INLINE long __Pyx_PyLong___Pyx_PyLong_As_long(PyObject *x) {
21182#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21183#pragma GCC diagnostic push
21184#pragma GCC diagnostic ignored "-Wconversion"
21185#endif
21186 const long neg_one = (long) -1, const_zero = (long) 0;
21187#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21188#pragma GCC diagnostic pop
21189#endif
21190 const int is_unsigned = neg_one > const_zero;
21191 if (is_unsigned) {
21192 #if CYTHON_USE_PYLONG_INTERNALS
21193 if (unlikely(__Pyx_PyLong_IsNeg(x))) {
21194 goto raise_neg_overflow;
21195 } else if (__Pyx_PyLong_IsCompact(x)) {
21196 __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
21197 } else
21198 #endif
21199 {
21200 return __Pyx_PyULong___Pyx_PyLong_As_long(x);
21201 }
21202 } else {
21203 #if CYTHON_USE_PYLONG_INTERNALS
21204 if (__Pyx_PyLong_IsCompact(x)) {
21205 __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
21206 } else
21207 #endif
21208 {
21209 return __Pyx_PySLong___Pyx_PyLong_As_long(x);
21210 }
21211 }
21212#if CYTHON_USE_PYLONG_INTERNALS
21213raise_neg_overflow:
21214 return __Pyx_raise_neg_overflow___Pyx_PyLong_As_long();
21215raise_overflow:
21216 return __Pyx_raise_overflow___Pyx_PyLong_As_long();
21217#endif
21218}
21219static long __Pyx_NonPyLong___Pyx_PyLong_As_long(PyObject *x) {
21220 long val;
21221 PyObject *tmp = __Pyx_PyNumber_Long(x);
21222 if (!tmp) return (long) -1;
21223 val = __Pyx_PyLong_As_long(tmp);
21224 Py_DECREF(tmp);
21225 return val;
21226}
21227static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) {
21228 if (likely(PyLong_Check(x))) {
21229 return __Pyx_PyLong___Pyx_PyLong_As_long(x);
21230 } else {
21231 return __Pyx_NonPyLong___Pyx_PyLong_As_long(x);
21232 }
21233}
21234
21235/* CIntFromPy */
21236static int __Pyx_LargePyLong___Pyx_PyLong_As_int(PyObject *x);
21237static int __Pyx_raise_neg_overflow___Pyx_PyLong_As_int(void) {
21238 const char* type_name = "int";
21239 PyErr_Format(PyExc_OverflowError,
21240 "can't convert negative value to %.200s", type_name);
21241 return (int) -1;
21242}
21243static int __Pyx_raise_overflow___Pyx_PyLong_As_int(void) {
21244 const char* type_name = "int";
21245 PyErr_Format(PyExc_OverflowError,
21246 "value too large to convert to %.200s", type_name);
21247 return (int) -1;
21248}
21249static CYTHON_INLINE int __Pyx_PyULong___Pyx_PyLong_As_int(PyObject *x) {
21250 const int is_unsigned = 1;
21251#if CYTHON_USE_PYLONG_INTERNALS
21252 {
21253 const digit* digits = __Pyx_PyLong_Digits(x);
21254 const Py_ssize_t size = __Pyx_PyLong_DigitCount(x);
21255 if (size == 2 && (8 * sizeof(int) > 1 * PyLong_SHIFT)) {
21256 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
21257 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21258 } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
21259 return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21260 }
21261 } else
21262 if (size == 3 && (8 * sizeof(int) > 2 * PyLong_SHIFT)) {
21263 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
21264 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21265 } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
21266 return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21267 }
21268 } else
21269 if (size == 4 && (8 * sizeof(int) > 3 * PyLong_SHIFT)) {
21270 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
21271 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21272 } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
21273 return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21274 }
21275 } else
21276 {}
21277 }
21278#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
21279 if (unlikely(Py_SIZE(x) < 0)) {
21280 goto raise_neg_overflow;
21281 }
21282#else
21283 {
21284 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
21285 if (unlikely(result < 0))
21286 return (int) -1;
21287 if (unlikely(result == 1))
21288 goto raise_neg_overflow;
21289 }
21290#endif
21291 if ((sizeof(int) <= sizeof(unsigned long))) {
21292 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
21293 } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
21294 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
21295 }
21296 return __Pyx_LargePyLong___Pyx_PyLong_As_int(x);
21297raise_neg_overflow:
21298 return __Pyx_raise_neg_overflow___Pyx_PyLong_As_int();
21299raise_overflow:
21300 return __Pyx_raise_overflow___Pyx_PyLong_As_int();
21301}
21302static CYTHON_INLINE int __Pyx_PySLong___Pyx_PyLong_As_int(PyObject *x) {
21303 const int is_unsigned = 0;
21304#if CYTHON_USE_PYLONG_INTERNALS
21305 if (__Pyx_PyLong_IsNeg(x)) {
21306 const Py_ssize_t size = __Pyx_PyLong_DigitCount(x);
21307 const digit* digits = __Pyx_PyLong_Digits(x);
21308 if (size == 2 && (8 * sizeof(int) > 1 * PyLong_SHIFT)) {
21309 if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
21310 long ival = - (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21311 __PYX_VERIFY_RETURN_INT(int, long, ival)
21312 } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
21313 return (int) (((int) -1) * (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21314 }
21315 } else
21316 if (size == 3 && (8 * sizeof(int) > 2 * PyLong_SHIFT)) {
21317 if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
21318 long ival = - (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21319 __PYX_VERIFY_RETURN_INT(int, long, ival)
21320 } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
21321 return (int) (((int) -1) * (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21322 }
21323 } else
21324 if (size == 4 && (8 * sizeof(int) > 3 * PyLong_SHIFT)) {
21325 if ((8 * sizeof(long) > 4 * PyLong_SHIFT)) {
21326 long ival = - (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21327 __PYX_VERIFY_RETURN_INT(int, long, ival)
21328 } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
21329 return (int) (((int) -1) * (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21330 }
21331 } else
21332 {}
21333 } else {
21334 const Py_ssize_t size = __Pyx_PyLong_DigitCount(x);
21335 const digit* digits = __Pyx_PyLong_Digits(x);
21336 if (size == 2 && (8 * sizeof(int) > 1 * PyLong_SHIFT)) {
21337 if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
21338 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21339 } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
21340 return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21341 }
21342 } else
21343 if (size == 3 && (8 * sizeof(int) > 2 * PyLong_SHIFT)) {
21344 if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
21345 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21346 } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
21347 return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21348 }
21349 } else
21350 if (size == 4 && (8 * sizeof(int) > 3 * PyLong_SHIFT)) {
21351 if ((8 * sizeof(long) > 4 * PyLong_SHIFT)) {
21352 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21353 } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
21354 return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21355 }
21356 } else
21357 {}
21358 }
21359#endif
21360 #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
21361 if ((sizeof(int) <= sizeof(int)) && (sizeof(int) < sizeof(long))) {
21362 __PYX_VERIFY_RETURN_INT_EXC(int, int, PyLong_AsInt(x))
21363 } else
21364 #endif
21365 if ((sizeof(int) <= sizeof(long))) {
21366 __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
21367 } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
21368 __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
21369 }
21370 return __Pyx_LargePyLong___Pyx_PyLong_As_int(x);
21371raise_neg_overflow:
21372 return __Pyx_raise_neg_overflow___Pyx_PyLong_As_int();
21373raise_overflow:
21374 return __Pyx_raise_overflow___Pyx_PyLong_As_int();
21375}
21376static int __Pyx_LargePyLong___Pyx_PyLong_As_int(PyObject *x) {
21377#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21378#pragma GCC diagnostic push
21379#pragma GCC diagnostic ignored "-Wconversion"
21380#endif
21381 const int neg_one = (int) -1, const_zero = (int) 0;
21382#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21383#pragma GCC diagnostic pop
21384#endif
21385 const int is_unsigned = neg_one > const_zero;
21386 int val;
21387 int ret = -1;
21388#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
21389 Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
21390 x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
21391 if (unlikely(bytes_copied == -1)) {
21392 } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
21393 goto raise_overflow;
21394 } else {
21395 ret = 0;
21396 }
21397#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
21398 int one = 1; int is_little = (int)*(unsigned char *)&one;
21399 unsigned char *bytes = (unsigned char *)&val;
21400 ret = _PyLong_AsByteArray((PyLongObject *)x,
21401 bytes, sizeof(val),
21402 is_little, !is_unsigned);
21403 if ((0)) goto raise_overflow;
21404#else
21405 PyObject *v;
21406 PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
21407 int bits, remaining_bits, is_negative = 0;
21408 int chunk_size = (sizeof(long) < 8) ? 30 : 62;
21409 if (likely(PyLong_CheckExact(x))) {
21410 v = __Pyx_NewRef(x);
21411 } else {
21412 v = PyNumber_Long(x);
21413 if (unlikely(!v)) return (int) -1;
21414 assert(PyLong_CheckExact(v));
21415 }
21416 {
21417 int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
21418 if (unlikely(result < 0)) {
21419 Py_DECREF(v);
21420 return (int) -1;
21421 }
21422 is_negative = result == 1;
21423 }
21424 if (is_unsigned && unlikely(is_negative)) {
21425 Py_DECREF(v);
21426 PyErr_SetString(PyExc_OverflowError,
21427 "can't convert negative value to int");
21428 return (int) -1;
21429 } else if (is_negative) {
21430 stepval = PyNumber_Invert(v);
21431 Py_DECREF(v);
21432 if (unlikely(!stepval))
21433 return (int) -1;
21434 } else {
21435 stepval = v;
21436 }
21437 v = NULL;
21438 val = (int) 0;
21439 mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
21440 shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
21441 for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
21442 PyObject *tmp, *digit;
21443 long idigit;
21444 digit = PyNumber_And(stepval, mask);
21445 if (unlikely(!digit)) goto done;
21446 idigit = PyLong_AsLong(digit);
21447 Py_DECREF(digit);
21448 if (unlikely(idigit < 0)) goto done;
21449 val |= ((int) idigit) << bits;
21450 tmp = PyNumber_Rshift(stepval, shift);
21451 if (unlikely(!tmp)) goto done;
21452 Py_DECREF(stepval); stepval = tmp;
21453 }
21454 Py_DECREF(shift); shift = NULL;
21455 Py_DECREF(mask); mask = NULL;
21456 {
21457 long idigit = PyLong_AsLong(stepval);
21458 if (unlikely(idigit < 0)) goto done;
21459 remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
21460 if (unlikely(idigit >= (1L << remaining_bits)))
21461 goto raise_overflow;
21462 val |= ((int) idigit) << bits;
21463 }
21464 if (!is_unsigned) {
21465 if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
21466 goto raise_overflow;
21467 if (is_negative)
21468 val = ~val;
21469 }
21470 ret = 0;
21471done:
21472 Py_XDECREF(shift);
21473 Py_XDECREF(mask);
21474 Py_XDECREF(stepval);
21475#endif
21476 if (unlikely(ret))
21477 return (int) -1;
21478 return val;
21479raise_overflow:
21480 return __Pyx_raise_overflow___Pyx_PyLong_As_int();
21481}
21482static CYTHON_INLINE int __Pyx_PyLong___Pyx_PyLong_As_int(PyObject *x) {
21483#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21484#pragma GCC diagnostic push
21485#pragma GCC diagnostic ignored "-Wconversion"
21486#endif
21487 const int neg_one = (int) -1, const_zero = (int) 0;
21488#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
21489#pragma GCC diagnostic pop
21490#endif
21491 const int is_unsigned = neg_one > const_zero;
21492 if (is_unsigned) {
21493 #if CYTHON_USE_PYLONG_INTERNALS
21494 if (unlikely(__Pyx_PyLong_IsNeg(x))) {
21495 goto raise_neg_overflow;
21496 } else if (__Pyx_PyLong_IsCompact(x)) {
21497 __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
21498 } else
21499 #endif
21500 {
21501 return __Pyx_PyULong___Pyx_PyLong_As_int(x);
21502 }
21503 } else {
21504 #if CYTHON_USE_PYLONG_INTERNALS
21505 if (__Pyx_PyLong_IsCompact(x)) {
21506 __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
21507 } else
21508 #endif
21509 {
21510 return __Pyx_PySLong___Pyx_PyLong_As_int(x);
21511 }
21512 }
21513#if CYTHON_USE_PYLONG_INTERNALS
21514raise_neg_overflow:
21515 return __Pyx_raise_neg_overflow___Pyx_PyLong_As_int();
21516raise_overflow:
21517 return __Pyx_raise_overflow___Pyx_PyLong_As_int();
21518#endif
21519}
21520static int __Pyx_NonPyLong___Pyx_PyLong_As_int(PyObject *x) {
21521 int val;
21522 PyObject *tmp = __Pyx_PyNumber_Long(x);
21523 if (!tmp) return (int) -1;
21524 val = __Pyx_PyLong_As_int(tmp);
21525 Py_DECREF(tmp);
21526 return val;
21527}
21528static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) {
21529 if (likely(PyLong_Check(x))) {
21530 return __Pyx_PyLong___Pyx_PyLong_As_int(x);
21531 } else {
21532 return __Pyx_NonPyLong___Pyx_PyLong_As_int(x);
21533 }
21534}
21535
21536/* GetRuntimeVersion */
21537#if __PYX_LIMITED_VERSION_HEX < 0x030b0000
21538void __Pyx_init_runtime_version(void) {
21539 if (__Pyx_cached_runtime_version == 0) {
21540 const char* rt_version = Py_GetVersion();
21541 unsigned long version = 0;
21542 unsigned long factor = 0x01000000UL;
21543 unsigned int digit = 0;
21544 int i = 0;
21545 while (factor) {
21546 while ('0' <= rt_version[i] && rt_version[i] <= '9') {
21547 digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
21548 ++i;
21549 }
21550 version += factor * digit;
21551 if (rt_version[i] != '.')
21552 break;
21553 digit = 0;
21554 factor >>= 8;
21555 ++i;
21556 }
21557 __Pyx_cached_runtime_version = version;
21558 }
21559}
21560#endif
21561static unsigned long __Pyx_get_runtime_version(void) {
21562#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
21563 return Py_Version & ~0xFFUL;
21564#else
21565 return __Pyx_cached_runtime_version;
21566#endif
21567}
21568
21569/* CheckBinaryVersion */
21570static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
21571 const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
21572 if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
21573 return 0;
21574 if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
21575 return 1;
21576 {
21577 char message[200];
21578 PyOS_snprintf(message, sizeof(message),
21579 "compile time Python version %d.%d "
21580 "of module '%.100s' "
21581 "%s "
21582 "runtime version %d.%d",
21583 (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
21584 __Pyx_MODULE_NAME,
21585 (allow_newer) ? "was newer than" : "does not match",
21586 (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
21587 );
21588 return PyErr_WarnEx(NULL, message, 1);
21589 }
21590}
21591
21592/* NewCodeObj */
21593#if CYTHON_COMPILING_IN_LIMITED_API
21594 static PyObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f,
21595 PyObject *code, PyObject *c, PyObject* n, PyObject *v,
21596 PyObject *fv, PyObject *cell, PyObject* fn,
21597 PyObject *name, int fline, PyObject *lnos) {
21598 PyObject *exception_table = NULL;
21599 PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
21600 #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
21601 PyObject *version_info;
21602 PyObject *py_minor_version = NULL;
21603 #endif
21604 long minor_version = 0;
21605 #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
21606 minor_version = 11;
21607 #else
21608 if (!(version_info = PySys_GetObject("version_info"))) goto end;
21609 if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
21610 minor_version = PyLong_AsLong(py_minor_version);
21611 Py_DECREF(py_minor_version);
21612 if (minor_version == -1 && PyErr_Occurred()) goto end;
21613 #endif
21614 if (!(types_module = PyImport_ImportModule("types"))) goto end;
21615 if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
21616 if (minor_version <= 10) {
21617 result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code,
21618 c, n, v, fn, name, fline, lnos, fv, cell);
21619 } else {
21620 if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
21621 result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code,
21622 c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
21623 }
21624 end:
21625 Py_XDECREF(code_type);
21626 Py_XDECREF(exception_table);
21627 Py_XDECREF(types_module);
21628 if (!result) {
21629 PyObject *exc_type, *exc_value, *exc_tb;
21630 PyErr_Fetch(&exc_type, &exc_value, &exc_tb);
21631 if (PyErr_WarnFormat(
21632 PyExc_RuntimeWarning, 1,
21633 "Code object creation failed in Cython module: %S\nTry recompiling with a more recent version of Cython.",
21634 exc_value ? exc_value : exc_type) == 0) {
21635 result = Py_None;
21636 Py_INCREF(result);
21637 }
21638 Py_DECREF(exc_type);
21639 Py_XDECREF(exc_value);
21640 Py_XDECREF(exc_tb);
21641 }
21642 return result;
21643 }
21644#elif PY_VERSION_HEX >= 0x030B0000
21645 static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f,
21646 PyObject *code, PyObject *c, PyObject* n, PyObject *v,
21647 PyObject *fv, PyObject *cell, PyObject* fn,
21648 PyObject *name, int fline, PyObject *lnos) {
21649 PyCodeObject *result;
21650 result =
21651 #if PY_VERSION_HEX >= 0x030C0000
21652 PyUnstable_Code_NewWithPosOnlyArgs
21653 #else
21654 PyCode_NewWithPosOnlyArgs
21655 #endif
21656 (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes);
21657 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1
21658 if (likely(result))
21659 result->_co_firsttraceable = 0;
21660 #endif
21661 return result;
21662 }
21663#elif !CYTHON_COMPILING_IN_PYPY
21664 #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
21665 PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
21666#else
21667 #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
21668 PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
21669#endif
21670static PyObject* __Pyx_PyCode_New(
21671 const __Pyx_PyCode_New_function_description descr,
21672 PyObject * const *varnames,
21673 PyObject *filename,
21674 PyObject *funcname,
21675 PyObject *line_table,
21676 PyObject *tuple_dedup_map
21677) {
21678 PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL;
21679 Py_ssize_t var_count = (Py_ssize_t) descr.nlocals;
21680 PyObject *varnames_tuple = PyTuple_New(var_count);
21681 if (unlikely(!varnames_tuple)) return NULL;
21682 for (Py_ssize_t i=0; i < var_count; i++) {
21683 Py_INCREF(varnames[i]);
21684 if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done;
21685 }
21686 #if CYTHON_COMPILING_IN_LIMITED_API
21687 varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple);
21688 if (!varnames_tuple_dedup) {
21689 if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done;
21690 varnames_tuple_dedup = varnames_tuple;
21691 }
21692 #else
21693 varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple);
21694 if (unlikely(!varnames_tuple_dedup)) goto done;
21695 #endif
21696 #if CYTHON_AVOID_BORROWED_REFS
21697 Py_INCREF(varnames_tuple_dedup);
21698 #endif
21699 if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) {
21700 Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table);
21701 #if !CYTHON_ASSUME_SAFE_SIZE
21702 if (unlikely(line_table_length == -1)) goto done;
21703 #endif
21704 Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL;
21705 code_bytes = PyBytes_FromStringAndSize(NULL, code_len);
21706 if (unlikely(!code_bytes)) goto done;
21707 char* c_code_bytes = PyBytes_AsString(code_bytes);
21708 if (unlikely(!c_code_bytes)) goto done;
21709 memset(c_code_bytes, 0, (size_t) code_len);
21710 }
21711 code_obj = (PyObject*) __Pyx__PyCode_New(
21712 (int) descr.argcount,
21713 (int) descr.num_posonly_args,
21714 (int) descr.num_kwonly_args,
21715 (int) descr.nlocals,
21716 0,
21717 (int) descr.flags,
21718 code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes,
21719 __pyx_mstate_global->__pyx_empty_tuple,
21720 __pyx_mstate_global->__pyx_empty_tuple,
21721 varnames_tuple_dedup,
21722 __pyx_mstate_global->__pyx_empty_tuple,
21723 __pyx_mstate_global->__pyx_empty_tuple,
21724 filename,
21725 funcname,
21726 (int) descr.first_line,
21727 (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes
21728 );
21729done:
21730 Py_XDECREF(code_bytes);
21731 #if CYTHON_AVOID_BORROWED_REFS
21732 Py_XDECREF(varnames_tuple_dedup);
21733 #endif
21734 Py_DECREF(varnames_tuple);
21735 return code_obj;
21736}
21737
21738/* DecompressString */
21739CYTHON_UNUSED
21740static CYTHON_SMALL_CODE PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) {
21741#ifdef __Pyx_DecompressString_UNUSED
21742 CYTHON_UNUSED_VAR(s);
21743 CYTHON_UNUSED_VAR(length);
21744 CYTHON_UNUSED_VAR(algo);
21745 return NULL;
21746#else
21747 PyObject *module = NULL, *decompress, *compressed_bytes, *decompressed;
21748 const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib";
21749 PyObject *methodname = PyUnicode_FromString("decompress");
21750 if (unlikely(!methodname)) return NULL;
21751 #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000
21752 if (algo == 3) {
21753 PyObject *fromlist = Py_BuildValue("[O]", methodname);
21754 if (unlikely(!fromlist)) goto bad;
21755 module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0);
21756 Py_DECREF(fromlist);
21757 } else
21758 #endif
21759 module = PyImport_ImportModule(module_name);
21760 if (unlikely(!module)) goto import_failed;
21761 decompress = PyObject_GetAttr(module, methodname);
21762 if (unlikely(!decompress)) goto import_failed;
21763 {
21764 #ifdef __cplusplus
21765 char *memview_bytes = const_cast<char*>(s);
21766 #else
21767 #if defined(__clang__)
21768 #pragma clang diagnostic push
21769 #pragma clang diagnostic ignored "-Wcast-qual"
21770 #elif !defined(__INTEL_COMPILER) && defined(__GNUC__)
21771 #pragma GCC diagnostic push
21772 #pragma GCC diagnostic ignored "-Wcast-qual"
21773 #endif
21774 char *memview_bytes = (char*) s;
21775 #if defined(__clang__)
21776 #pragma clang diagnostic pop
21777 #elif !defined(__INTEL_COMPILER) && defined(__GNUC__)
21778 #pragma GCC diagnostic pop
21779 #endif
21780 #endif
21781 #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ)
21782 int memview_flags = 0x100;
21783 #else
21784 int memview_flags = PyBUF_READ;
21785 #endif
21786 compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags);
21787 }
21788 if (unlikely(!compressed_bytes)) {
21789 Py_DECREF(decompress);
21790 goto bad;
21791 }
21792 decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL);
21793 Py_DECREF(compressed_bytes);
21794 Py_DECREF(decompress);
21795 Py_DECREF(module);
21796 Py_DECREF(methodname);
21797 return decompressed;
21798import_failed:
21799 PyErr_Format(PyExc_ImportError,
21800 "Failed to import '%.20s.decompress' - cannot initialise module strings. "
21801 "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.",
21802 module_name, algo);
21803bad:
21804 Py_XDECREF(module);
21805 Py_DECREF(methodname);
21806 return NULL;
21807#endif
21808}
21809
21810/* DecompressString_LZSS */
21811#ifndef __Pyx_DecompressString_LZSS_UNUSED
21812CYTHON_UNUSED
21813static CYTHON_SMALL_CODE size_t __pyx_lzss_decompress(const uint8_t* src, uint8_t* dst, size_t dst_len) {
21814 size_t pos = 0, out_pos = 0;
21815 while (1) {
21816 uint32_t flags = src[pos++] | 0xFF00;
21817 while (flags & 0x100) {
21818 if (flags & 1) {
21819 dst[out_pos++] = src[pos++];
21820 } else {
21821 uint32_t lo = src[pos++], hi = src[pos++];
21822 uint32_t end_offset_of_last_occurrence, match_length;
21823 if (!(lo & 0x80)) {
21824 end_offset_of_last_occurrence = lo;
21825 match_length = hi;
21826 } else if (!(hi & 0x80)) {
21827 end_offset_of_last_occurrence = 0x80 + (((hi << 2) & 0x180) | (lo & 0x7F));
21828 match_length = hi & 0x1F;
21829 } else {
21830 end_offset_of_last_occurrence = 0x80 + ((hi & 0x7F) << 7 | (lo & 0x7F));
21831 match_length = src[pos++];
21832 }
21833 match_length += 3;
21834 size_t ref_pos = out_pos - end_offset_of_last_occurrence - match_length;
21835 memcpy(dst + out_pos, dst + ref_pos, match_length);
21836 out_pos += match_length;
21837 }
21838 if (out_pos >= dst_len) return pos;
21839 flags >>= 1;
21840 }
21841 }
21842}
21843#endif
21844static CYTHON_SMALL_CODE PyObject *__Pyx_DecompressString_LZSS(const char *s, size_t compressed_length, size_t uncompressed_length) {
21845#ifdef __Pyx_DecompressString_LZSS_UNUSED
21846 CYTHON_UNUSED_VAR(s);
21847 CYTHON_UNUSED_VAR(compressed_length);
21848 CYTHON_UNUSED_VAR(uncompressed_length);
21849 return NULL;
21850#else
21851 PyObject *result;
21852 unsigned char *result_data;
21853 size_t src_length;
21854 result = PyBytes_FromStringAndSize(NULL, (Py_ssize_t) uncompressed_length);
21855 if (unlikely(!result)) return NULL;
21856 result_data = __Pyx_PyBytes_AsWritableUString(result);
21857 if (unlikely(!result_data)) goto bad;
21858 src_length = __pyx_lzss_decompress((const uint8_t*) s, result_data, uncompressed_length);
21859 if (unlikely(src_length != compressed_length)) goto decompression_failed;
21860 return result;
21861decompression_failed:
21862 PyErr_SetString(PyExc_RuntimeError, "LZSS string data decompression failed");
21863bad:
21864 Py_DECREF(result);
21865 return NULL;
21866#endif
21867}
21868
21869#include <string.h>
21870static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
21871 size_t len = strlen(s);
21872 if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
21873 PyErr_SetString(PyExc_OverflowError, "byte string is too long");
21874 return -1;
21875 }
21876 return (Py_ssize_t) len;
21877}
21878static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
21879 Py_ssize_t len = __Pyx_ssize_strlen(c_str);
21880 if (unlikely(len < 0)) return NULL;
21881 return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
21882}
21883static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
21884 Py_ssize_t len = __Pyx_ssize_strlen(c_str);
21885 if (unlikely(len < 0)) return NULL;
21886 return PyByteArray_FromStringAndSize(c_str, len);
21887}
21888static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
21889 Py_ssize_t ignore;
21890 return __Pyx_PyObject_AsStringAndSize(o, &ignore);
21891}
21892#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
21893static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
21894 if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
21895#if CYTHON_COMPILING_IN_LIMITED_API
21896 {
21897 const char* result;
21898 Py_ssize_t unicode_length;
21899 CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
21900 #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
21901 if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL;
21902 #else
21903 result = PyUnicode_AsUTF8AndSize(o, length);
21904 #endif
21905 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
21906 unicode_length = PyUnicode_GetLength(o);
21907 if (unlikely(unicode_length < 0)) return NULL;
21908 if (unlikely(unicode_length != *length)) {
21909 PyUnicode_AsASCIIString(o);
21910 return NULL;
21911 }
21912 #endif
21913 return result;
21914 }
21915#else
21916#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
21917 if (likely(PyUnicode_IS_ASCII(o))) {
21918 *length = PyUnicode_GET_LENGTH(o);
21919 return PyUnicode_AsUTF8(o);
21920 } else {
21921 PyUnicode_AsASCIIString(o);
21922 return NULL;
21923 }
21924#else
21925 return PyUnicode_AsUTF8AndSize(o, length);
21926#endif
21927#endif
21928}
21929#endif
21930static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
21931#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
21932 if (PyUnicode_Check(o)) {
21933 return __Pyx_PyUnicode_AsStringAndSize(o, length);
21934 } else
21935#endif
21936 if (PyByteArray_Check(o)) {
21937#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)))
21938 *length = PyByteArray_GET_SIZE(o);
21939 return PyByteArray_AS_STRING(o);
21940#else
21941 *length = PyByteArray_Size(o);
21942 if (*length == -1) return NULL;
21943 return PyByteArray_AsString(o);
21944#endif
21945 } else
21946 {
21947 char* result;
21948 int r = PyBytes_AsStringAndSize(o, &result, length);
21949 if (unlikely(r < 0)) {
21950 return NULL;
21951 } else {
21952 return result;
21953 }
21954 }
21955}
21956static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
21957 int is_true = x == Py_True;
21958 if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
21959 else return PyObject_IsTrue(x);
21960}
21961static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
21962 int retval;
21963 if (unlikely(!x)) return -1;
21964 retval = __Pyx_PyObject_IsTrue(x);
21965 Py_DECREF(x);
21966 return retval;
21967}
21968static PyObject* __Pyx_PyNumber_LongWrongResultType(PyObject* result) {
21969 __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result));
21970 #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
21971 if (unlikely(!result_type_name)) goto bad;
21972 #endif
21973 if (PyLong_Check(result)) {
21974 if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
21975 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). "
21976 "The ability to return an instance of a strict subclass of int is deprecated, "
21977 "and may be removed in a future version of Python.",
21978 result_type_name)) {
21979 __Pyx_DECREF_TypeName(result_type_name);
21980 goto bad;
21981 }
21982 __Pyx_DECREF_TypeName(result_type_name);
21983 return result;
21984 }
21985 PyErr_Format(PyExc_TypeError,
21986 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")",
21987 result_type_name);
21988 __Pyx_DECREF_TypeName(result_type_name);
21989bad:
21990 Py_DECREF(result);
21991 return NULL;
21992}
21993static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) {
21994#if CYTHON_USE_TYPE_SLOTS
21995 PyNumberMethods *m;
21996#endif
21997 PyObject *res = NULL;
21998 if (likely(PyLong_Check(x)))
21999 return __Pyx_NewRef(x);
22000#if CYTHON_USE_TYPE_SLOTS
22001 m = Py_TYPE(x)->tp_as_number;
22002 if (likely(m && m->nb_int)) {
22003 res = m->nb_int(x);
22004 }
22005#else
22006 if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
22007 res = PyNumber_Long(x);
22008 }
22009#endif
22010 if (likely(res)) {
22011 if (unlikely(!PyLong_CheckExact(res))) {
22012 return __Pyx_PyNumber_LongWrongResultType(res);
22013 }
22014 }
22015 else if (!PyErr_Occurred()) {
22016 PyErr_SetString(PyExc_TypeError,
22017 "an integer is required");
22018 }
22019 return res;
22020}
22021static CYTHON_INLINE Py_ssize_t __Pyx_PyLong_AsSsize_t(PyObject* b) {
22022 #if CYTHON_USE_PYLONG_INTERNALS
22023 Py_ssize_t ival;
22024 const Py_ssize_t size = __Pyx_PyLong_DigitCount(b);
22025 const int is_neg = __Pyx_PyLong_IsNeg(b);
22026 const digit* digits = __Pyx_PyLong_Digits(b);
22027 if (size == 0) return 0;
22028 #if SIZEOF_SIZE_T * 8 > 1 * PyLong_SHIFT
22029 if (size == 1) {
22030 ival = (Py_ssize_t) (((size_t)digits[0]));
22031 } else
22032 #endif
22033 #if SIZEOF_SIZE_T * 8 > 2 * PyLong_SHIFT
22034 if (size == 2) {
22035 ival = (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22036 } else
22037 #endif
22038 #if SIZEOF_SIZE_T * 8 > 3 * PyLong_SHIFT
22039 if (size == 3) {
22040 ival = (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22041 } else
22042 #endif
22043 #if SIZEOF_SIZE_T * 8 > 4 * PyLong_SHIFT
22044 if (size == 4) {
22045 ival = (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22046 } else
22047 #endif
22048 return PyLong_AsSsize_t(b);
22049 return is_neg ? -ival : ival;
22050 #else
22051 return PyLong_AsSsize_t(b);
22052 #endif
22053}
22054static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
22055 if (likely(PyLong_Check(b))) {
22056 return __Pyx_PyLong_AsSsize_t(b);
22057 } else {
22058 Py_ssize_t ival;
22059 PyObject *x = PyNumber_Index(b);
22060 if (unlikely(!x)) return -1;
22061 ival = __Pyx_PyLong_AsSsize_t(x);
22062 Py_DECREF(x);
22063 return ival;
22064 }
22065}
22066static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
22067 if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
22068 return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
22069 } else {
22070 Py_ssize_t ival;
22071 PyObject *x;
22072 x = PyNumber_Index(o);
22073 if (!x) return -1;
22074 ival = PyLong_AsLong(x);
22075 Py_DECREF(x);
22076 return ival;
22077 }
22078}
22079static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) {
22080 CYTHON_UNUSED_VAR(b);
22081 return __Pyx_NewRef(Py_None);
22082}
22083static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
22084 return __Pyx_NewRef(b ? Py_True: Py_False);
22085}
22086static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) {
22087 return PyLong_FromSize_t(ival);
22088}
22089
22090
22091/* MultiPhaseInitModuleState */
22092#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
22093#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22094#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000)
22095 #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1
22096#else
22097 #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0
22098#endif
22099#endif
22100#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS
22101#error "Module state with PEP489 requires atomics. Currently that's one of\
22102 C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics"
22103#endif
22104#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22105#define __Pyx_ModuleStateLookup_Lock()
22106#define __Pyx_ModuleStateLookup_Unlock()
22107#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
22108static PyMutex __Pyx_ModuleStateLookup_mutex = {0};
22109#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex)
22110#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex)
22111#elif defined(__cplusplus) && __cplusplus >= 201103L
22112#include <mutex>
22113static std::mutex __Pyx_ModuleStateLookup_mutex;
22114#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock()
22115#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock()
22116#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__)
22117#include <threads.h>
22118static mtx_t __Pyx_ModuleStateLookup_mutex;
22119static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT;
22120static void __Pyx_ModuleStateLookup_initialize_mutex(void) {
22121 mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain);
22122}
22123#define __Pyx_ModuleStateLookup_Lock()\
22124 call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\
22125 mtx_lock(&__Pyx_ModuleStateLookup_mutex)
22126#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex)
22127#elif defined(HAVE_PTHREAD_H)
22128#include <pthread.h>
22129static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER;
22130#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex)
22131#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex)
22132#elif defined(_WIN32)
22133#include <Windows.h> // synchapi.h on its own doesn't work
22134static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT;
22135#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
22136#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
22137#else
22138#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\
22139 Requires C standard >= C11, or C++ standard >= C++11,\
22140 or pthreads, or the Windows 32 API, or Python >= 3.13."
22141#endif
22142typedef struct {
22143 int64_t id;
22144 PyObject *module;
22145} __Pyx_InterpreterIdAndModule;
22146typedef struct {
22147 char interpreter_id_as_index;
22148 Py_ssize_t count;
22149 Py_ssize_t allocated;
22150 __Pyx_InterpreterIdAndModule table[1];
22151} __Pyx_ModuleStateLookupData;
22152#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32
22153#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22154static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0;
22155#endif
22156#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22157static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0;
22158#else
22159static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL;
22160#endif
22161static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound(
22162 __Pyx_InterpreterIdAndModule* table,
22163 Py_ssize_t count,
22164 int64_t interpreterId) {
22165 __Pyx_InterpreterIdAndModule* begin = table;
22166 __Pyx_InterpreterIdAndModule* end = begin + count;
22167 if (begin->id == interpreterId) {
22168 return begin;
22169 }
22170 while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
22171 __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2;
22172 if (halfway->id == interpreterId) {
22173 return halfway;
22174 }
22175 if (halfway->id < interpreterId) {
22176 begin = halfway;
22177 } else {
22178 end = halfway;
22179 }
22180 }
22181 for (; begin < end; ++begin) {
22182 if (begin->id >= interpreterId) return begin;
22183 }
22184 return begin;
22185}
22186static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) {
22187 int64_t interpreter_id = PyInterpreterState_GetID(PyInterpreterState_Get());
22188 if (interpreter_id == -1) return NULL;
22189#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22190 __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
22191 {
22192 __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
22193 if (likely(data)) {
22194 __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data);
22195 if (likely(data == new_data)) {
22196 goto read_finished;
22197 }
22198 }
22199 __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
22200 __Pyx_ModuleStateLookup_Lock();
22201 __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter);
22202 data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
22203 __Pyx_ModuleStateLookup_Unlock();
22204 }
22205 read_finished:;
22206#else
22207 __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data;
22208#endif
22209 __Pyx_InterpreterIdAndModule* found = NULL;
22210 if (unlikely(!data)) goto end;
22211 if (data->interpreter_id_as_index) {
22212 if (interpreter_id < data->count) {
22213 found = data->table+interpreter_id;
22214 }
22215 } else {
22216 found = __Pyx_State_FindModuleStateLookupTableLowerBound(
22217 data->table, data->count, interpreter_id);
22218 }
22219 end:
22220 {
22221 PyObject *result=NULL;
22222 if (found && found->id == interpreter_id) {
22223 result = found->module;
22224 }
22225#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22226 __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
22227#endif
22228 return result;
22229 }
22230}
22231#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22232static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) {
22233 while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0);
22234}
22235#else
22236#define __Pyx_ModuleStateLookup_wait_until_no_readers()
22237#endif
22238static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) {
22239 Py_ssize_t to_allocate = (*old_data)->allocated;
22240 while (to_allocate <= interpreter_id) {
22241 if (to_allocate == 0) to_allocate = 1;
22242 else to_allocate *= 2;
22243 }
22244 __Pyx_ModuleStateLookupData *new_data = *old_data;
22245 if (to_allocate != (*old_data)->allocated) {
22246 new_data = (__Pyx_ModuleStateLookupData *)realloc(
22247 *old_data,
22248 sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
22249 if (!new_data) {
22250 PyErr_NoMemory();
22251 return -1;
22252 }
22253 for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) {
22254 new_data->table[i].id = i;
22255 new_data->table[i].module = NULL;
22256 }
22257 new_data->allocated = to_allocate;
22258 }
22259 new_data->table[interpreter_id].module = module;
22260 if (new_data->count < interpreter_id+1) {
22261 new_data->count = interpreter_id+1;
22262 }
22263 *old_data = new_data;
22264 return 0;
22265}
22266static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) {
22267 __Pyx_InterpreterIdAndModule *read = data->table;
22268 __Pyx_InterpreterIdAndModule *write = data->table;
22269 __Pyx_InterpreterIdAndModule *end = read + data->count;
22270 for (; read<end; ++read) {
22271 if (read->module) {
22272 write->id = read->id;
22273 write->module = read->module;
22274 ++write;
22275 }
22276 }
22277 data->count = write - data->table;
22278 for (; write<end; ++write) {
22279 write->id = 0;
22280 write->module = NULL;
22281 }
22282 data->interpreter_id_as_index = 0;
22283}
22284static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) {
22285 int64_t interpreter_id = PyInterpreterState_GetID(PyInterpreterState_Get());
22286 if (interpreter_id == -1) return -1;
22287 int result = 0;
22288 __Pyx_ModuleStateLookup_Lock();
22289#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22290 __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *)
22291 __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
22292#else
22293 __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data;
22294#endif
22295 __Pyx_ModuleStateLookupData *new_data = old_data;
22296 if (!new_data) {
22297 new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData));
22298 if (!new_data) {
22299 result = -1;
22300 PyErr_NoMemory();
22301 goto end;
22302 }
22303 new_data->allocated = 1;
22304 new_data->interpreter_id_as_index = 1;
22305 }
22306 __Pyx_ModuleStateLookup_wait_until_no_readers();
22307 if (new_data->interpreter_id_as_index) {
22308 if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
22309 result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id);
22310 goto end;
22311 }
22312 __Pyx_State_ConvertFromInterpIdAsIndex(new_data);
22313 }
22314 {
22315 Py_ssize_t insert_at = 0;
22316 {
22317 __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
22318 new_data->table, new_data->count, interpreter_id);
22319 assert(lower_bound);
22320 insert_at = lower_bound - new_data->table;
22321 if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) {
22322 lower_bound->module = module;
22323 goto end; // already in table, nothing more to do
22324 }
22325 }
22326 if (new_data->count+1 >= new_data->allocated) {
22327 Py_ssize_t to_allocate = (new_data->count+1)*2;
22328 new_data =
22329 (__Pyx_ModuleStateLookupData*)realloc(
22330 new_data,
22331 sizeof(__Pyx_ModuleStateLookupData) +
22332 (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
22333 if (!new_data) {
22334 result = -1;
22335 new_data = old_data;
22336 PyErr_NoMemory();
22337 goto end;
22338 }
22339 new_data->allocated = to_allocate;
22340 }
22341 ++new_data->count;
22342 int64_t last_id = interpreter_id;
22343 PyObject *last_module = module;
22344 for (Py_ssize_t i=insert_at; i<new_data->count; ++i) {
22345 int64_t current_id = new_data->table[i].id;
22346 new_data->table[i].id = last_id;
22347 last_id = current_id;
22348 PyObject *current_module = new_data->table[i].module;
22349 new_data->table[i].module = last_module;
22350 last_module = current_module;
22351 }
22352 }
22353 end:
22354#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22355 __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data);
22356#else
22357 __Pyx_ModuleStateLookup_data = new_data;
22358#endif
22359 __Pyx_ModuleStateLookup_Unlock();
22360 return result;
22361}
22362static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) {
22363 int64_t interpreter_id = PyInterpreterState_GetID(PyInterpreterState_Get());
22364 if (interpreter_id == -1) return -1;
22365 __Pyx_ModuleStateLookup_Lock();
22366#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22367 __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *)
22368 __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
22369#else
22370 __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data;
22371#endif
22372 if (data->interpreter_id_as_index) {
22373 if (interpreter_id < data->count) {
22374 data->table[interpreter_id].module = NULL;
22375 }
22376 goto done;
22377 }
22378 {
22379 __Pyx_ModuleStateLookup_wait_until_no_readers();
22380 __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
22381 data->table, data->count, interpreter_id);
22382 if (!lower_bound) goto done;
22383 if (lower_bound->id != interpreter_id) goto done;
22384 __Pyx_InterpreterIdAndModule *end = data->table+data->count;
22385 for (;lower_bound<end-1; ++lower_bound) {
22386 lower_bound->id = (lower_bound+1)->id;
22387 lower_bound->module = (lower_bound+1)->module;
22388 }
22389 }
22390 --data->count;
22391 if (data->count == 0) {
22392 free(data);
22393 data = NULL;
22394 }
22395 done:
22396#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
22397 __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data);
22398#else
22399 __Pyx_ModuleStateLookup_data = data;
22400#endif
22401 __Pyx_ModuleStateLookup_Unlock();
22402 return 0;
22403}
22404#endif
22405
22406/* #### Code section: utility_code_pragmas_end ### */
22407#ifdef _MSC_VER
22408#pragma warning( pop )
22409#endif
22410
22411
22412
22413/* #### Code section: end ### */
22414#endif /* Py_PYTHON_H */
Int n
Definition Headers.h:28
Double q
Definition Headers.h:81
Double T
Definition Headers.h:87
Double r
Definition Headers.h:83
Int number
Definition Headers.h:33
Double f
Definition Headers.h:64
Double s
Definition Headers.h:84
Double * z
Definition Headers.h:49
Double v
Definition Headers.h:95
int LinearAD_DiracIC_diffusiveVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(diffusive velocity).
int LinearADR_Sine_totalVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (total velocity).
int poissonsEquationExp2D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 2D.
int PlanePoiseuilleFlow_u(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow between two parallel fixed plates with constant seperation (width).
int poissonsEquationExp2D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 2D (reaction).
int NonlinearDAE_f(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Nonlinear Differential-algebraic equations.
int NonlinearDAE(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Nonlinear Differential-algebraic equations.
int poissonsEquationExp3D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 3D (reaction).
int NonlinearAD_SteadyState(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Nonlinear Advection-Diffusion Steady State.
int diffusionSin2D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 2D diffusion.
int PoiseuillePipeFlow_P(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow through a circular pipe.
int LinearADR_Sine_du(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (du).
int NonlinearADR_Decay_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition.
int LinearADR_Sine_dr(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *dr)
Linear Avection Diffusion Reaction Sine function (dr).
int LinearADR_Sine(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Linear Avection Diffusion Reaction Sine function.
int LinearAD_DiracIC_du(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition (du).
int diffusionSin3D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 3D diffusion.
int LinearADR_Sine_diffusiveVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (diffusive velocity).
int poissonsEquationExp1D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 1D.
int STflowSphere_Vz(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int diffusionSin3D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 3D diffusion (reaction).
int STflowSphere_Vy(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int LinearADR_Decay_DiracIC_dr(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *dr)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition (dr).
int LinearAD_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Linear Advective Diffusion Dirac Initial Condition.
int diffusionSin2D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 2D diffusion (reaction).
int diffusionSin1D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 1D diffusion (reaction).
int LinearAD_SteadyState(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Linear Advection-Diffusion Steady State.
int LinearADR_Decay_DiracIC_r(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *r)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition (reaction).
int LinearAD_DiracIC_totalVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(total velocity).
int diffusionSin1D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 1D diffusion.
int STflowSphere_P(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int NonlinearADR_Decay_DiracIC_dr(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *dr)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition (dr).
int STflowSphere_Vx(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int poissonsEquationExp3D_dr(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *dr)
Poisson Exponential Equation 3D (dr).
int PlaneCouetteFlow_u(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Couette Flow between two parallel plates. One moving relative to the other with constant seperation (...
int NonlinearADR_Decay_DiracIC_r(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *r)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition (reaction).
int LinearADR_Sine_advectiveVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (advective velocity).
int LinearADR_Decay_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition.
int PoiseuillePipeFlow(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow through a circular pipe.
int LinearAD_DiracIC_advectiveVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(advective velocity).
int poissonsEquationExp1D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 1D (reaction).
int LinearADR_Sine_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Linear Avection Diffusion Reaction Sine function (reaction).
int poissonsEquationExp3D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 3D.
#define c(i)
Definition jf.h:21