glucat  0.12.1
PyClical_nocython.cpp
Go to the documentation of this file.
1 /* Generated by Cython 3.0.8 */
2 
3 /* BEGIN: Cython Metadata
4 {
5  "distutils": {
6  "depends": [
7  "PyClical.h"
8  ],
9  "language": "c++",
10  "name": "PyClical",
11  "sources": [
12  "PyClical.pyx"
13  ]
14  },
15  "module_name": "PyClical"
16 }
17 END: Cython Metadata */
18 
19 #ifndef PY_SSIZE_T_CLEAN
20 #define PY_SSIZE_T_CLEAN
21 #endif /* PY_SSIZE_T_CLEAN */
22 #if defined(CYTHON_LIMITED_API) && 0
23  #ifndef Py_LIMITED_API
24  #if CYTHON_LIMITED_API+0 > 0x03030000
25  #define Py_LIMITED_API CYTHON_LIMITED_API
26  #else
27  #define Py_LIMITED_API 0x03030000
28  #endif
29  #endif
30 #endif
31 
32 #include "Python.h"
33 #ifndef Py_PYTHON_H
34  #error Python headers needed to compile C extensions, please install development version of Python.
35 #elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
36  #error Cython requires Python 2.7+ or Python 3.3+.
37 #else
38 #if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
39 #define __PYX_EXTRA_ABI_MODULE_NAME "limited"
40 #else
41 #define __PYX_EXTRA_ABI_MODULE_NAME ""
42 #endif
43 #define CYTHON_ABI "3_0_8" __PYX_EXTRA_ABI_MODULE_NAME
44 #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
45 #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
46 #define CYTHON_HEX_VERSION 0x030008F0
47 #define CYTHON_FUTURE_DIVISION 1
48 #include <stddef.h>
49 #ifndef offsetof
50  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
51 #endif
52 #if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
53  #ifndef __stdcall
54  #define __stdcall
55  #endif
56  #ifndef __cdecl
57  #define __cdecl
58  #endif
59  #ifndef __fastcall
60  #define __fastcall
61  #endif
62 #endif
63 #ifndef DL_IMPORT
64  #define DL_IMPORT(t) t
65 #endif
66 #ifndef DL_EXPORT
67  #define DL_EXPORT(t) t
68 #endif
69 #define __PYX_COMMA ,
70 #ifndef HAVE_LONG_LONG
71  #define HAVE_LONG_LONG
72 #endif
73 #ifndef PY_LONG_LONG
74  #define PY_LONG_LONG LONG_LONG
75 #endif
76 #ifndef Py_HUGE_VAL
77  #define Py_HUGE_VAL HUGE_VAL
78 #endif
79 #define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
80 #if defined(GRAALVM_PYTHON)
81  /* For very preliminary testing purposes. Most variables are set the same as PyPy.
82  The existence of this section does not imply that anything works or is even tested */
83  #define CYTHON_COMPILING_IN_PYPY 0
84  #define CYTHON_COMPILING_IN_CPYTHON 0
85  #define CYTHON_COMPILING_IN_LIMITED_API 0
86  #define CYTHON_COMPILING_IN_GRAAL 1
87  #define CYTHON_COMPILING_IN_NOGIL 0
88  #undef CYTHON_USE_TYPE_SLOTS
89  #define CYTHON_USE_TYPE_SLOTS 0
90  #undef CYTHON_USE_TYPE_SPECS
91  #define CYTHON_USE_TYPE_SPECS 0
92  #undef CYTHON_USE_PYTYPE_LOOKUP
93  #define CYTHON_USE_PYTYPE_LOOKUP 0
94  #if PY_VERSION_HEX < 0x03050000
95  #undef CYTHON_USE_ASYNC_SLOTS
96  #define CYTHON_USE_ASYNC_SLOTS 0
97  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
98  #define CYTHON_USE_ASYNC_SLOTS 1
99  #endif
100  #undef CYTHON_USE_PYLIST_INTERNALS
101  #define CYTHON_USE_PYLIST_INTERNALS 0
102  #undef CYTHON_USE_UNICODE_INTERNALS
103  #define CYTHON_USE_UNICODE_INTERNALS 0
104  #undef CYTHON_USE_UNICODE_WRITER
105  #define CYTHON_USE_UNICODE_WRITER 0
106  #undef CYTHON_USE_PYLONG_INTERNALS
107  #define CYTHON_USE_PYLONG_INTERNALS 0
108  #undef CYTHON_AVOID_BORROWED_REFS
109  #define CYTHON_AVOID_BORROWED_REFS 1
110  #undef CYTHON_ASSUME_SAFE_MACROS
111  #define CYTHON_ASSUME_SAFE_MACROS 0
112  #undef CYTHON_UNPACK_METHODS
113  #define CYTHON_UNPACK_METHODS 0
114  #undef CYTHON_FAST_THREAD_STATE
115  #define CYTHON_FAST_THREAD_STATE 0
116  #undef CYTHON_FAST_GIL
117  #define CYTHON_FAST_GIL 0
118  #undef CYTHON_METH_FASTCALL
119  #define CYTHON_METH_FASTCALL 0
120  #undef CYTHON_FAST_PYCALL
121  #define CYTHON_FAST_PYCALL 0
122  #ifndef CYTHON_PEP487_INIT_SUBCLASS
123  #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
124  #endif
125  #undef CYTHON_PEP489_MULTI_PHASE_INIT
126  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
127  #undef CYTHON_USE_MODULE_STATE
128  #define CYTHON_USE_MODULE_STATE 0
129  #undef CYTHON_USE_TP_FINALIZE
130  #define CYTHON_USE_TP_FINALIZE 0
131  #undef CYTHON_USE_DICT_VERSIONS
132  #define CYTHON_USE_DICT_VERSIONS 0
133  #undef CYTHON_USE_EXC_INFO_STACK
134  #define CYTHON_USE_EXC_INFO_STACK 0
135  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
136  #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
137  #endif
138 #elif defined(PYPY_VERSION)
139  #define CYTHON_COMPILING_IN_PYPY 1
140  #define CYTHON_COMPILING_IN_CPYTHON 0
141  #define CYTHON_COMPILING_IN_LIMITED_API 0
142  #define CYTHON_COMPILING_IN_GRAAL 0
143  #define CYTHON_COMPILING_IN_NOGIL 0
144  #undef CYTHON_USE_TYPE_SLOTS
145  #define CYTHON_USE_TYPE_SLOTS 0
146  #ifndef CYTHON_USE_TYPE_SPECS
147  #define CYTHON_USE_TYPE_SPECS 0
148  #endif
149  #undef CYTHON_USE_PYTYPE_LOOKUP
150  #define CYTHON_USE_PYTYPE_LOOKUP 0
151  #if PY_VERSION_HEX < 0x03050000
152  #undef CYTHON_USE_ASYNC_SLOTS
153  #define CYTHON_USE_ASYNC_SLOTS 0
154  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
155  #define CYTHON_USE_ASYNC_SLOTS 1
156  #endif
157  #undef CYTHON_USE_PYLIST_INTERNALS
158  #define CYTHON_USE_PYLIST_INTERNALS 0
159  #undef CYTHON_USE_UNICODE_INTERNALS
160  #define CYTHON_USE_UNICODE_INTERNALS 0
161  #undef CYTHON_USE_UNICODE_WRITER
162  #define CYTHON_USE_UNICODE_WRITER 0
163  #undef CYTHON_USE_PYLONG_INTERNALS
164  #define CYTHON_USE_PYLONG_INTERNALS 0
165  #undef CYTHON_AVOID_BORROWED_REFS
166  #define CYTHON_AVOID_BORROWED_REFS 1
167  #undef CYTHON_ASSUME_SAFE_MACROS
168  #define CYTHON_ASSUME_SAFE_MACROS 0
169  #undef CYTHON_UNPACK_METHODS
170  #define CYTHON_UNPACK_METHODS 0
171  #undef CYTHON_FAST_THREAD_STATE
172  #define CYTHON_FAST_THREAD_STATE 0
173  #undef CYTHON_FAST_GIL
174  #define CYTHON_FAST_GIL 0
175  #undef CYTHON_METH_FASTCALL
176  #define CYTHON_METH_FASTCALL 0
177  #undef CYTHON_FAST_PYCALL
178  #define CYTHON_FAST_PYCALL 0
179  #ifndef CYTHON_PEP487_INIT_SUBCLASS
180  #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
181  #endif
182  #if PY_VERSION_HEX < 0x03090000
183  #undef CYTHON_PEP489_MULTI_PHASE_INIT
184  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
185  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
186  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
187  #endif
188  #undef CYTHON_USE_MODULE_STATE
189  #define CYTHON_USE_MODULE_STATE 0
190  #undef CYTHON_USE_TP_FINALIZE
191  #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
192  #undef CYTHON_USE_DICT_VERSIONS
193  #define CYTHON_USE_DICT_VERSIONS 0
194  #undef CYTHON_USE_EXC_INFO_STACK
195  #define CYTHON_USE_EXC_INFO_STACK 0
196  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
197  #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
198  #endif
199 #elif defined(CYTHON_LIMITED_API)
200  #ifdef Py_LIMITED_API
201  #undef __PYX_LIMITED_VERSION_HEX
202  #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
203  #endif
204  #define CYTHON_COMPILING_IN_PYPY 0
205  #define CYTHON_COMPILING_IN_CPYTHON 0
206  #define CYTHON_COMPILING_IN_LIMITED_API 1
207  #define CYTHON_COMPILING_IN_GRAAL 0
208  #define CYTHON_COMPILING_IN_NOGIL 0
209  #undef CYTHON_CLINE_IN_TRACEBACK
210  #define CYTHON_CLINE_IN_TRACEBACK 0
211  #undef CYTHON_USE_TYPE_SLOTS
212  #define CYTHON_USE_TYPE_SLOTS 0
213  #undef CYTHON_USE_TYPE_SPECS
214  #define CYTHON_USE_TYPE_SPECS 1
215  #undef CYTHON_USE_PYTYPE_LOOKUP
216  #define CYTHON_USE_PYTYPE_LOOKUP 0
217  #undef CYTHON_USE_ASYNC_SLOTS
218  #define CYTHON_USE_ASYNC_SLOTS 0
219  #undef CYTHON_USE_PYLIST_INTERNALS
220  #define CYTHON_USE_PYLIST_INTERNALS 0
221  #undef CYTHON_USE_UNICODE_INTERNALS
222  #define CYTHON_USE_UNICODE_INTERNALS 0
223  #ifndef CYTHON_USE_UNICODE_WRITER
224  #define CYTHON_USE_UNICODE_WRITER 0
225  #endif
226  #undef CYTHON_USE_PYLONG_INTERNALS
227  #define CYTHON_USE_PYLONG_INTERNALS 0
228  #ifndef CYTHON_AVOID_BORROWED_REFS
229  #define CYTHON_AVOID_BORROWED_REFS 0
230  #endif
231  #undef CYTHON_ASSUME_SAFE_MACROS
232  #define CYTHON_ASSUME_SAFE_MACROS 0
233  #undef CYTHON_UNPACK_METHODS
234  #define CYTHON_UNPACK_METHODS 0
235  #undef CYTHON_FAST_THREAD_STATE
236  #define CYTHON_FAST_THREAD_STATE 0
237  #undef CYTHON_FAST_GIL
238  #define CYTHON_FAST_GIL 0
239  #undef CYTHON_METH_FASTCALL
240  #define CYTHON_METH_FASTCALL 0
241  #undef CYTHON_FAST_PYCALL
242  #define CYTHON_FAST_PYCALL 0
243  #ifndef CYTHON_PEP487_INIT_SUBCLASS
244  #define CYTHON_PEP487_INIT_SUBCLASS 1
245  #endif
246  #undef CYTHON_PEP489_MULTI_PHASE_INIT
247  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
248  #undef CYTHON_USE_MODULE_STATE
249  #define CYTHON_USE_MODULE_STATE 1
250  #ifndef CYTHON_USE_TP_FINALIZE
251  #define CYTHON_USE_TP_FINALIZE 0
252  #endif
253  #undef CYTHON_USE_DICT_VERSIONS
254  #define CYTHON_USE_DICT_VERSIONS 0
255  #undef CYTHON_USE_EXC_INFO_STACK
256  #define CYTHON_USE_EXC_INFO_STACK 0
257  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
258  #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
259  #endif
260 #elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
261  #define CYTHON_COMPILING_IN_PYPY 0
262  #define CYTHON_COMPILING_IN_CPYTHON 0
263  #define CYTHON_COMPILING_IN_LIMITED_API 0
264  #define CYTHON_COMPILING_IN_GRAAL 0
265  #define CYTHON_COMPILING_IN_NOGIL 1
266  #ifndef CYTHON_USE_TYPE_SLOTS
267  #define CYTHON_USE_TYPE_SLOTS 1
268  #endif
269  #undef CYTHON_USE_PYTYPE_LOOKUP
270  #define CYTHON_USE_PYTYPE_LOOKUP 0
271  #ifndef CYTHON_USE_ASYNC_SLOTS
272  #define CYTHON_USE_ASYNC_SLOTS 1
273  #endif
274  #undef CYTHON_USE_PYLIST_INTERNALS
275  #define CYTHON_USE_PYLIST_INTERNALS 0
276  #ifndef CYTHON_USE_UNICODE_INTERNALS
277  #define CYTHON_USE_UNICODE_INTERNALS 1
278  #endif
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  #ifndef CYTHON_AVOID_BORROWED_REFS
284  #define CYTHON_AVOID_BORROWED_REFS 0
285  #endif
286  #ifndef CYTHON_ASSUME_SAFE_MACROS
287  #define CYTHON_ASSUME_SAFE_MACROS 1
288  #endif
289  #ifndef CYTHON_UNPACK_METHODS
290  #define CYTHON_UNPACK_METHODS 1
291  #endif
292  #undef CYTHON_FAST_THREAD_STATE
293  #define CYTHON_FAST_THREAD_STATE 0
294  #undef CYTHON_FAST_PYCALL
295  #define CYTHON_FAST_PYCALL 0
296  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
297  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
298  #endif
299  #ifndef CYTHON_USE_TP_FINALIZE
300  #define CYTHON_USE_TP_FINALIZE 1
301  #endif
302  #undef CYTHON_USE_DICT_VERSIONS
303  #define CYTHON_USE_DICT_VERSIONS 0
304  #undef CYTHON_USE_EXC_INFO_STACK
305  #define CYTHON_USE_EXC_INFO_STACK 0
306 #else
307  #define CYTHON_COMPILING_IN_PYPY 0
308  #define CYTHON_COMPILING_IN_CPYTHON 1
309  #define CYTHON_COMPILING_IN_LIMITED_API 0
310  #define CYTHON_COMPILING_IN_GRAAL 0
311  #define CYTHON_COMPILING_IN_NOGIL 0
312  #ifndef CYTHON_USE_TYPE_SLOTS
313  #define CYTHON_USE_TYPE_SLOTS 1
314  #endif
315  #ifndef CYTHON_USE_TYPE_SPECS
316  #define CYTHON_USE_TYPE_SPECS 0
317  #endif
318  #ifndef CYTHON_USE_PYTYPE_LOOKUP
319  #define CYTHON_USE_PYTYPE_LOOKUP 1
320  #endif
321  #if PY_MAJOR_VERSION < 3
322  #undef CYTHON_USE_ASYNC_SLOTS
323  #define CYTHON_USE_ASYNC_SLOTS 0
324  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
325  #define CYTHON_USE_ASYNC_SLOTS 1
326  #endif
327  #ifndef CYTHON_USE_PYLONG_INTERNALS
328  #define CYTHON_USE_PYLONG_INTERNALS 1
329  #endif
330  #ifndef CYTHON_USE_PYLIST_INTERNALS
331  #define CYTHON_USE_PYLIST_INTERNALS 1
332  #endif
333  #ifndef CYTHON_USE_UNICODE_INTERNALS
334  #define CYTHON_USE_UNICODE_INTERNALS 1
335  #endif
336  #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
337  #undef CYTHON_USE_UNICODE_WRITER
338  #define CYTHON_USE_UNICODE_WRITER 0
339  #elif !defined(CYTHON_USE_UNICODE_WRITER)
340  #define CYTHON_USE_UNICODE_WRITER 1
341  #endif
342  #ifndef CYTHON_AVOID_BORROWED_REFS
343  #define CYTHON_AVOID_BORROWED_REFS 0
344  #endif
345  #ifndef CYTHON_ASSUME_SAFE_MACROS
346  #define CYTHON_ASSUME_SAFE_MACROS 1
347  #endif
348  #ifndef CYTHON_UNPACK_METHODS
349  #define CYTHON_UNPACK_METHODS 1
350  #endif
351  #ifndef CYTHON_FAST_THREAD_STATE
352  #define CYTHON_FAST_THREAD_STATE 1
353  #endif
354  #ifndef CYTHON_FAST_GIL
355  #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
356  #endif
357  #ifndef CYTHON_METH_FASTCALL
358  #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
359  #endif
360  #ifndef CYTHON_FAST_PYCALL
361  #define CYTHON_FAST_PYCALL 1
362  #endif
363  #ifndef CYTHON_PEP487_INIT_SUBCLASS
364  #define CYTHON_PEP487_INIT_SUBCLASS 1
365  #endif
366  #if PY_VERSION_HEX < 0x03050000
367  #undef CYTHON_PEP489_MULTI_PHASE_INIT
368  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
369  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
370  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
371  #endif
372  #ifndef CYTHON_USE_MODULE_STATE
373  #define CYTHON_USE_MODULE_STATE 0
374  #endif
375  #if PY_VERSION_HEX < 0x030400a1
376  #undef CYTHON_USE_TP_FINALIZE
377  #define CYTHON_USE_TP_FINALIZE 0
378  #elif !defined(CYTHON_USE_TP_FINALIZE)
379  #define CYTHON_USE_TP_FINALIZE 1
380  #endif
381  #if PY_VERSION_HEX < 0x030600B1
382  #undef CYTHON_USE_DICT_VERSIONS
383  #define CYTHON_USE_DICT_VERSIONS 0
384  #elif !defined(CYTHON_USE_DICT_VERSIONS)
385  #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5)
386  #endif
387  #if PY_VERSION_HEX < 0x030700A3
388  #undef CYTHON_USE_EXC_INFO_STACK
389  #define CYTHON_USE_EXC_INFO_STACK 0
390  #elif !defined(CYTHON_USE_EXC_INFO_STACK)
391  #define CYTHON_USE_EXC_INFO_STACK 1
392  #endif
393  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
394  #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
395  #endif
396 #endif
397 #if !defined(CYTHON_FAST_PYCCALL)
398 #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
399 #endif
400 #if !defined(CYTHON_VECTORCALL)
401 #define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
402 #endif
403 #define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
404 #if CYTHON_USE_PYLONG_INTERNALS
405  #if PY_MAJOR_VERSION < 3
406  #include "longintrepr.h"
407  #endif
408  #undef SHIFT
409  #undef BASE
410  #undef MASK
411  #ifdef SIZEOF_VOID_P
412  enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
413  #endif
414 #endif
415 #ifndef __has_attribute
416  #define __has_attribute(x) 0
417 #endif
418 #ifndef __has_cpp_attribute
419  #define __has_cpp_attribute(x) 0
420 #endif
421 #ifndef CYTHON_RESTRICT
422  #if defined(__GNUC__)
423  #define CYTHON_RESTRICT __restrict__
424  #elif defined(_MSC_VER) && _MSC_VER >= 1400
425  #define CYTHON_RESTRICT __restrict
426  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
427  #define CYTHON_RESTRICT restrict
428  #else
429  #define CYTHON_RESTRICT
430  #endif
431 #endif
432 #ifndef CYTHON_UNUSED
433  #if defined(__cplusplus)
434  /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
435  * but leads to warnings with -pedantic, since it is a C++17 feature */
436  #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
437  #if __has_cpp_attribute(maybe_unused)
438  #define CYTHON_UNUSED [[maybe_unused]]
439  #endif
440  #endif
441  #endif
442 #endif
443 #ifndef CYTHON_UNUSED
444 # if defined(__GNUC__)
445 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
446 # define CYTHON_UNUSED __attribute__ ((__unused__))
447 # else
448 # define CYTHON_UNUSED
449 # endif
450 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
451 # define CYTHON_UNUSED __attribute__ ((__unused__))
452 # else
453 # define CYTHON_UNUSED
454 # endif
455 #endif
456 #ifndef CYTHON_UNUSED_VAR
457 # if defined(__cplusplus)
458  template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
459 # else
460 # define CYTHON_UNUSED_VAR(x) (void)(x)
461 # endif
462 #endif
463 #ifndef CYTHON_MAYBE_UNUSED_VAR
464  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
465 #endif
466 #ifndef CYTHON_NCP_UNUSED
467 # if CYTHON_COMPILING_IN_CPYTHON
468 # define CYTHON_NCP_UNUSED
469 # else
470 # define CYTHON_NCP_UNUSED CYTHON_UNUSED
471 # endif
472 #endif
473 #ifndef CYTHON_USE_CPP_STD_MOVE
474  #if defined(__cplusplus) && (\
475  __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
476  #define CYTHON_USE_CPP_STD_MOVE 1
477  #else
478  #define CYTHON_USE_CPP_STD_MOVE 0
479  #endif
480 #endif
481 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
482 #ifdef _MSC_VER
483  #ifndef _MSC_STDINT_H_
484  #if _MSC_VER < 1300
485  typedef unsigned char uint8_t;
486  typedef unsigned short uint16_t;
487  typedef unsigned int uint32_t;
488  #else
489  typedef unsigned __int8 uint8_t;
490  typedef unsigned __int16 uint16_t;
491  typedef unsigned __int32 uint32_t;
492  #endif
493  #endif
494  #if _MSC_VER < 1300
495  #ifdef _WIN64
496  typedef unsigned long long __pyx_uintptr_t;
497  #else
498  typedef unsigned int __pyx_uintptr_t;
499  #endif
500  #else
501  #ifdef _WIN64
502  typedef unsigned __int64 __pyx_uintptr_t;
503  #else
504  typedef unsigned __int32 __pyx_uintptr_t;
505  #endif
506  #endif
507 #else
508  #include <stdint.h>
509  typedef uintptr_t __pyx_uintptr_t;
510 #endif
511 #ifndef CYTHON_FALLTHROUGH
512  #if defined(__cplusplus)
513  /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
514  * but leads to warnings with -pedantic, since it is a C++17 feature */
515  #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
516  #if __has_cpp_attribute(fallthrough)
517  #define CYTHON_FALLTHROUGH [[fallthrough]]
518  #endif
519  #endif
520  #ifndef CYTHON_FALLTHROUGH
521  #if __has_cpp_attribute(clang::fallthrough)
522  #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
523  #elif __has_cpp_attribute(gnu::fallthrough)
524  #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
525  #endif
526  #endif
527  #endif
528  #ifndef CYTHON_FALLTHROUGH
529  #if __has_attribute(fallthrough)
530  #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
531  #else
532  #define CYTHON_FALLTHROUGH
533  #endif
534  #endif
535  #if defined(__clang__) && defined(__apple_build_version__)
536  #if __apple_build_version__ < 7000000
537  #undef CYTHON_FALLTHROUGH
538  #define CYTHON_FALLTHROUGH
539  #endif
540  #endif
541 #endif
542 #ifdef __cplusplus
543  template <typename T>
544  struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
545  #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
546 #else
547  #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
548 #endif
549 #if CYTHON_COMPILING_IN_PYPY == 1
550  #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
551 #else
552  #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
553 #endif
554 #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
555 
556 #ifndef __cplusplus
557  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
558 #endif
559 #ifndef CYTHON_INLINE
560  #if defined(__clang__)
561  #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
562  #else
563  #define CYTHON_INLINE inline
564  #endif
565 #endif
566 template<typename T>
567 void __Pyx_call_destructor(T& x) {
568  x.~T();
569 }
570 template<typename T>
571 class __Pyx_FakeReference {
572  public:
573  __Pyx_FakeReference() : ptr(NULL) { }
574  __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
575  T *operator->() { return ptr; }
576  T *operator&() { return ptr; }
577  operator T&() { return *ptr; }
578  template<typename U> bool operator ==(const U& other) const { return *ptr == other; }
579  template<typename U> bool operator !=(const U& other) const { return *ptr != other; }
580  template<typename U> bool operator==(const __Pyx_FakeReference<U>& other) const { return *ptr == *other.ptr; }
581  template<typename U> bool operator!=(const __Pyx_FakeReference<U>& other) const { return *ptr != *other.ptr; }
582  private:
583  T *ptr;
584 };
585 
586 #define __PYX_BUILD_PY_SSIZE_T "n"
587 #define CYTHON_FORMAT_SSIZE_T "z"
588 #if PY_MAJOR_VERSION < 3
589  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
590  #define __Pyx_DefaultClassType PyClass_Type
591  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
592  PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
593 #else
594  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
595  #define __Pyx_DefaultClassType PyType_Type
596 #if CYTHON_COMPILING_IN_LIMITED_API
597  static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
598  PyObject *code, PyObject *c, PyObject* n, PyObject *v,
599  PyObject *fv, PyObject *cell, PyObject* fn,
600  PyObject *name, int fline, PyObject *lnos) {
601  PyObject *exception_table = NULL;
602  PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
603  #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
604  PyObject *version_info;
605  PyObject *py_minor_version = NULL;
606  #endif
607  long minor_version = 0;
608  PyObject *type, *value, *traceback;
609  PyErr_Fetch(&type, &value, &traceback);
610  #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
611  minor_version = 11;
612  #else
613  if (!(version_info = PySys_GetObject("version_info"))) goto end;
614  if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
615  minor_version = PyLong_AsLong(py_minor_version);
616  Py_DECREF(py_minor_version);
617  if (minor_version == -1 && PyErr_Occurred()) goto end;
618  #endif
619  if (!(types_module = PyImport_ImportModule("types"))) goto end;
620  if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
621  if (minor_version <= 7) {
622  (void)p;
623  result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
624  c, n, v, fn, name, fline, lnos, fv, cell);
625  } else if (minor_version <= 10) {
626  result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
627  c, n, v, fn, name, fline, lnos, fv, cell);
628  } else {
629  if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
630  result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
631  c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
632  }
633  end:
634  Py_XDECREF(code_type);
635  Py_XDECREF(exception_table);
636  Py_XDECREF(types_module);
637  if (type) {
638  PyErr_Restore(type, value, traceback);
639  }
640  return result;
641  }
642  #ifndef CO_OPTIMIZED
643  #define CO_OPTIMIZED 0x0001
644  #endif
645  #ifndef CO_NEWLOCALS
646  #define CO_NEWLOCALS 0x0002
647  #endif
648  #ifndef CO_VARARGS
649  #define CO_VARARGS 0x0004
650  #endif
651  #ifndef CO_VARKEYWORDS
652  #define CO_VARKEYWORDS 0x0008
653  #endif
654  #ifndef CO_ASYNC_GENERATOR
655  #define CO_ASYNC_GENERATOR 0x0200
656  #endif
657  #ifndef CO_GENERATOR
658  #define CO_GENERATOR 0x0020
659  #endif
660  #ifndef CO_COROUTINE
661  #define CO_COROUTINE 0x0080
662  #endif
663 #elif PY_VERSION_HEX >= 0x030B0000
664  static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
665  PyObject *code, PyObject *c, PyObject* n, PyObject *v,
666  PyObject *fv, PyObject *cell, PyObject* fn,
667  PyObject *name, int fline, PyObject *lnos) {
668  PyCodeObject *result;
669  PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
670  if (!empty_bytes) return NULL;
671  result =
672  #if PY_VERSION_HEX >= 0x030C0000
673  PyUnstable_Code_NewWithPosOnlyArgs
674  #else
675  PyCode_NewWithPosOnlyArgs
676  #endif
677  (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
678  Py_DECREF(empty_bytes);
679  return result;
680  }
681 #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
682  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
683  PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
684 #else
685  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
686  PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
687 #endif
688 #endif
689 #if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
690  #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
691 #else
692  #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
693 #endif
694 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
695  #define __Pyx_Py_Is(x, y) Py_Is(x, y)
696 #else
697  #define __Pyx_Py_Is(x, y) ((x) == (y))
698 #endif
699 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
700  #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
701 #else
702  #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
703 #endif
704 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
705  #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
706 #else
707  #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
708 #endif
709 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
710  #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
711 #else
712  #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
713 #endif
714 #define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj))
715 #if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
716  #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
717 #else
718  #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
719 #endif
720 #ifndef CO_COROUTINE
721  #define CO_COROUTINE 0x80
722 #endif
723 #ifndef CO_ASYNC_GENERATOR
724  #define CO_ASYNC_GENERATOR 0x200
725 #endif
726 #ifndef Py_TPFLAGS_CHECKTYPES
727  #define Py_TPFLAGS_CHECKTYPES 0
728 #endif
729 #ifndef Py_TPFLAGS_HAVE_INDEX
730  #define Py_TPFLAGS_HAVE_INDEX 0
731 #endif
732 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
733  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
734 #endif
735 #ifndef Py_TPFLAGS_HAVE_FINALIZE
736  #define Py_TPFLAGS_HAVE_FINALIZE 0
737 #endif
738 #ifndef Py_TPFLAGS_SEQUENCE
739  #define Py_TPFLAGS_SEQUENCE 0
740 #endif
741 #ifndef Py_TPFLAGS_MAPPING
742  #define Py_TPFLAGS_MAPPING 0
743 #endif
744 #ifndef METH_STACKLESS
745  #define METH_STACKLESS 0
746 #endif
747 #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
748  #ifndef METH_FASTCALL
749  #define METH_FASTCALL 0x80
750  #endif
751  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
752  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
753  Py_ssize_t nargs, PyObject *kwnames);
754 #else
755  #define __Pyx_PyCFunctionFast _PyCFunctionFast
756  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
757 #endif
758 #if CYTHON_METH_FASTCALL
759  #define __Pyx_METH_FASTCALL METH_FASTCALL
760  #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
761  #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
762 #else
763  #define __Pyx_METH_FASTCALL METH_VARARGS
764  #define __Pyx_PyCFunction_FastCall PyCFunction
765  #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
766 #endif
767 #if CYTHON_VECTORCALL
768  #define __pyx_vectorcallfunc vectorcallfunc
769  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET
770  #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n))
771 #elif CYTHON_BACKPORT_VECTORCALL
772  typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
773  size_t nargsf, PyObject *kwnames);
774  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
775  #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
776 #else
777  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0
778  #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n))
779 #endif
780 #if PY_MAJOR_VERSION >= 0x030900B1
781 #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func)
782 #else
783 #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func)
784 #endif
785 #define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func)
786 #if CYTHON_COMPILING_IN_CPYTHON
787 #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth)
788 #elif !CYTHON_COMPILING_IN_LIMITED_API
789 #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func)
790 #endif
791 #if CYTHON_COMPILING_IN_CPYTHON
792 #define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags)
793 static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
794  return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
795 }
796 #endif
797 static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
798 #if CYTHON_COMPILING_IN_LIMITED_API
799  return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
800 #else
801  return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
802 #endif
803 }
804 #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc)
805 #if __PYX_LIMITED_VERSION_HEX < 0x030900B1
806  #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b))
807  typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
808 #else
809  #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b)
810  #define __Pyx_PyCMethod PyCMethod
811 #endif
812 #ifndef METH_METHOD
813  #define METH_METHOD 0x200
814 #endif
815 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
816  #define PyObject_Malloc(s) PyMem_Malloc(s)
817  #define PyObject_Free(p) PyMem_Free(p)
818  #define PyObject_Realloc(p) PyMem_Realloc(p)
819 #endif
820 #if CYTHON_COMPILING_IN_LIMITED_API
821  #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
822  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
823 #else
824  #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
825  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
826 #endif
827 #if CYTHON_COMPILING_IN_LIMITED_API
828  #define __Pyx_PyThreadState_Current PyThreadState_Get()
829 #elif !CYTHON_FAST_THREAD_STATE
830  #define __Pyx_PyThreadState_Current PyThreadState_GET()
831 #elif PY_VERSION_HEX >= 0x030d00A1
832  #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
833 #elif PY_VERSION_HEX >= 0x03060000
834  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
835 #elif PY_VERSION_HEX >= 0x03000000
836  #define __Pyx_PyThreadState_Current PyThreadState_GET()
837 #else
838  #define __Pyx_PyThreadState_Current _PyThreadState_Current
839 #endif
840 #if CYTHON_COMPILING_IN_LIMITED_API
841 static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
842 {
843  void *result;
844  result = PyModule_GetState(op);
845  if (!result)
846  Py_FatalError("Couldn't find the module state");
847  return result;
848 }
849 #endif
850 #define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
851 #if CYTHON_COMPILING_IN_LIMITED_API
852  #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name))
853 #else
854  #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name)
855 #endif
856 #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
857 #include "pythread.h"
858 #define Py_tss_NEEDS_INIT 0
859 typedef int Py_tss_t;
860 static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
861  *key = PyThread_create_key();
862  return 0;
863 }
864 static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
865  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
866  *key = Py_tss_NEEDS_INIT;
867  return key;
868 }
869 static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
870  PyObject_Free(key);
871 }
872 static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
873  return *key != Py_tss_NEEDS_INIT;
874 }
875 static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
876  PyThread_delete_key(*key);
877  *key = Py_tss_NEEDS_INIT;
878 }
879 static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
880  return PyThread_set_key_value(*key, value);
881 }
882 static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
883  return PyThread_get_key_value(*key);
884 }
885 #endif
886 #if PY_MAJOR_VERSION < 3
887  #if CYTHON_COMPILING_IN_PYPY
888  #if PYPY_VERSION_NUM < 0x07030600
889  #if defined(__cplusplus) && __cplusplus >= 201402L
890  [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
891  #elif defined(__GNUC__) || defined(__clang__)
892  __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
893  #elif defined(_MSC_VER)
894  __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
895  #endif
896  static CYTHON_INLINE int PyGILState_Check(void) {
897  return 0;
898  }
899  #else // PYPY_VERSION_NUM < 0x07030600
900  #endif // PYPY_VERSION_NUM < 0x07030600
901  #else
902  static CYTHON_INLINE int PyGILState_Check(void) {
903  PyThreadState * tstate = _PyThreadState_Current;
904  return tstate && (tstate == PyGILState_GetThisThreadState());
905  }
906  #endif
907 #endif
908 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
909 #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
910 #else
911 #define __Pyx_PyDict_NewPresized(n) PyDict_New()
912 #endif
913 #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
914  #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
915  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
916 #else
917  #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
918  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
919 #endif
920 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
921 #define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
922 static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
923  PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
924  if (res == NULL) PyErr_Clear();
925  return res;
926 }
927 #elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
928 #define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError
929 #define __Pyx_PyDict_GetItemStr PyDict_GetItem
930 #else
931 static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
932 #if CYTHON_COMPILING_IN_PYPY
933  return PyDict_GetItem(dict, name);
934 #else
935  PyDictEntry *ep;
936  PyDictObject *mp = (PyDictObject*) dict;
937  long hash = ((PyStringObject *) name)->ob_shash;
938  assert(hash != -1);
939  ep = (mp->ma_lookup)(mp, name, hash);
940  if (ep == NULL) {
941  return NULL;
942  }
943  return ep->me_value;
944 #endif
945 }
946 #define __Pyx_PyDict_GetItemStr PyDict_GetItem
947 #endif
948 #if CYTHON_USE_TYPE_SLOTS
949  #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags)
950  #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
951  #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext)
952 #else
953  #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp))
954  #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature)
955  #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next
956 #endif
957 #if CYTHON_COMPILING_IN_LIMITED_API
958  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
959 #else
960  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
961 #endif
962 #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
963 #define __Pyx_PyHeapTypeObject_GC_Del(obj) {\
964  PyTypeObject *type = Py_TYPE((PyObject*)obj);\
965  assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
966  PyObject_GC_Del(obj);\
967  Py_DECREF(type);\
968 }
969 #else
970 #define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj)
971 #endif
972 #if CYTHON_COMPILING_IN_LIMITED_API
973  #define CYTHON_PEP393_ENABLED 1
974  #define __Pyx_PyUnicode_READY(op) (0)
975  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u)
976  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
977  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U)
978  #define __Pyx_PyUnicode_KIND(u) ((void)u, (0))
979  #define __Pyx_PyUnicode_DATA(u) ((void*)u)
980  #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
981  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u))
982 #elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
983  #define CYTHON_PEP393_ENABLED 1
984  #if PY_VERSION_HEX >= 0x030C0000
985  #define __Pyx_PyUnicode_READY(op) (0)
986  #else
987  #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
988  0 : _PyUnicode_Ready((PyObject *)(op)))
989  #endif
990  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
991  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
992  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
993  #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u))
994  #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
995  #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
996  #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
997  #if PY_VERSION_HEX >= 0x030C0000
998  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
999  #else
1000  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
1001  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
1002  #else
1003  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
1004  #endif
1005  #endif
1006 #else
1007  #define CYTHON_PEP393_ENABLED 0
1008  #define PyUnicode_1BYTE_KIND 1
1009  #define PyUnicode_2BYTE_KIND 2
1010  #define PyUnicode_4BYTE_KIND 4
1011  #define __Pyx_PyUnicode_READY(op) (0)
1012  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
1013  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
1014  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
1015  #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE))
1016  #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
1017  #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
1018  #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
1019  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
1020 #endif
1021 #if CYTHON_COMPILING_IN_PYPY
1022  #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
1023  #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
1024 #else
1025  #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
1026  #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
1027  PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
1028 #endif
1029 #if CYTHON_COMPILING_IN_PYPY
1030  #if !defined(PyUnicode_DecodeUnicodeEscape)
1031  #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors)
1032  #endif
1033  #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
1034  #undef PyUnicode_Contains
1035  #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
1036  #endif
1037  #if !defined(PyByteArray_Check)
1038  #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
1039  #endif
1040  #if !defined(PyObject_Format)
1041  #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
1042  #endif
1043 #endif
1044 #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
1045 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
1046 #if PY_MAJOR_VERSION >= 3
1047  #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
1048 #else
1049  #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
1050 #endif
1051 #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
1052  #define PyObject_ASCII(o) PyObject_Repr(o)
1053 #endif
1054 #if PY_MAJOR_VERSION >= 3
1055  #define PyBaseString_Type PyUnicode_Type
1056  #define PyStringObject PyUnicodeObject
1057  #define PyString_Type PyUnicode_Type
1058  #define PyString_Check PyUnicode_Check
1059  #define PyString_CheckExact PyUnicode_CheckExact
1060 #ifndef PyObject_Unicode
1061  #define PyObject_Unicode PyObject_Str
1062 #endif
1063 #endif
1064 #if PY_MAJOR_VERSION >= 3
1065  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
1066  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
1067 #else
1068  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
1069  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
1070 #endif
1071 #if CYTHON_COMPILING_IN_CPYTHON
1072  #define __Pyx_PySequence_ListKeepNew(obj)\
1073  (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
1074 #else
1075  #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj)
1076 #endif
1077 #ifndef PySet_CheckExact
1078  #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type)
1079 #endif
1080 #if PY_VERSION_HEX >= 0x030900A4
1081  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
1082  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
1083 #else
1084  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
1085  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
1086 #endif
1087 #if CYTHON_ASSUME_SAFE_MACROS
1088  #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
1089  #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
1090  #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
1091  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
1092  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
1093  #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
1094  #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
1095  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
1096  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
1097 #else
1098  #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
1099  #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
1100  #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
1101  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
1102  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
1103  #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
1104  #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
1105  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
1106  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
1107 #endif
1108 #if PY_VERSION_HEX >= 0x030d00A1
1109  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
1110 #else
1111  static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
1112  PyObject *module = PyImport_AddModule(name);
1113  Py_XINCREF(module);
1114  return module;
1115  }
1116 #endif
1117 #if PY_MAJOR_VERSION >= 3
1118  #define PyIntObject PyLongObject
1119  #define PyInt_Type PyLong_Type
1120  #define PyInt_Check(op) PyLong_Check(op)
1121  #define PyInt_CheckExact(op) PyLong_CheckExact(op)
1122  #define __Pyx_Py3Int_Check(op) PyLong_Check(op)
1123  #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op)
1124  #define PyInt_FromString PyLong_FromString
1125  #define PyInt_FromUnicode PyLong_FromUnicode
1126  #define PyInt_FromLong PyLong_FromLong
1127  #define PyInt_FromSize_t PyLong_FromSize_t
1128  #define PyInt_FromSsize_t PyLong_FromSsize_t
1129  #define PyInt_AsLong PyLong_AsLong
1130  #define PyInt_AS_LONG PyLong_AS_LONG
1131  #define PyInt_AsSsize_t PyLong_AsSsize_t
1132  #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
1133  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
1134  #define PyNumber_Int PyNumber_Long
1135 #else
1136  #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op))
1137  #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op))
1138 #endif
1139 #if PY_MAJOR_VERSION >= 3
1140  #define PyBoolObject PyLongObject
1141 #endif
1142 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
1143  #ifndef PyUnicode_InternFromString
1144  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
1145  #endif
1146 #endif
1147 #if PY_VERSION_HEX < 0x030200A4
1148  typedef long Py_hash_t;
1149  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
1150  #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
1151 #else
1152  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
1153  #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
1154 #endif
1155 #if CYTHON_USE_ASYNC_SLOTS
1156  #if PY_VERSION_HEX >= 0x030500B1
1157  #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
1158  #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
1159  #else
1160  #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
1161  #endif
1162 #else
1163  #define __Pyx_PyType_AsAsync(obj) NULL
1164 #endif
1165 #ifndef __Pyx_PyAsyncMethodsStruct
1166  typedef struct {
1167  unaryfunc am_await;
1168  unaryfunc am_aiter;
1169  unaryfunc am_anext;
1170  } __Pyx_PyAsyncMethodsStruct;
1171 #endif
1172 
1173 #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
1174  #if !defined(_USE_MATH_DEFINES)
1175  #define _USE_MATH_DEFINES
1176  #endif
1177 #endif
1178 #include <math.h>
1179 #ifdef NAN
1180 #define __PYX_NAN() ((float) NAN)
1181 #else
1182 static CYTHON_INLINE float __PYX_NAN() {
1183  float value;
1184  memset(&value, 0xFF, sizeof(value));
1185  return value;
1186 }
1187 #endif
1188 #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
1189 #define __Pyx_truncl trunc
1190 #else
1191 #define __Pyx_truncl truncl
1192 #endif
1193 
1194 #define __PYX_MARK_ERR_POS(f_index, lineno) \
1195  { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
1196 #define __PYX_ERR(f_index, lineno, Ln_error) \
1197  { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
1198 
1199 #ifdef CYTHON_EXTERN_C
1200  #undef __PYX_EXTERN_C
1201  #define __PYX_EXTERN_C CYTHON_EXTERN_C
1202 #elif defined(__PYX_EXTERN_C)
1203  #ifdef _MSC_VER
1204  #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
1205  #else
1206  #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
1207  #endif
1208 #else
1209  #define __PYX_EXTERN_C extern "C++"
1210 #endif
1211 
1212 #define __PYX_HAVE__PyClical
1213 #define __PYX_HAVE_API__PyClical
1214 /* Early includes */
1215 #include "ios"
1216 #include "new"
1217 #include "stdexcept"
1218 #include "typeinfo"
1219 #include <vector>
1220 #include "PyClical.h"
1221 #include <string.h>
1222 #include <string>
1223 #ifdef _OPENMP
1224 #include <omp.h>
1225 #endif /* _OPENMP */
1226 
1227 #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
1228 #define CYTHON_WITHOUT_ASSERTIONS
1229 #endif
1230 
1231 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
1232  const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
1233 
1234 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
1235 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
1236 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
1237 #define __PYX_DEFAULT_STRING_ENCODING ""
1238 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
1239 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
1240 #define __Pyx_uchar_cast(c) ((unsigned char)c)
1241 #define __Pyx_long_cast(x) ((long)x)
1242 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
1243  (sizeof(type) < sizeof(Py_ssize_t)) ||\
1244  (sizeof(type) > sizeof(Py_ssize_t) &&\
1245  likely(v < (type)PY_SSIZE_T_MAX ||\
1246  v == (type)PY_SSIZE_T_MAX) &&\
1247  (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
1248  v == (type)PY_SSIZE_T_MIN))) ||\
1249  (sizeof(type) == sizeof(Py_ssize_t) &&\
1250  (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
1251  v == (type)PY_SSIZE_T_MAX))) )
1252 static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
1253  return (size_t) i < (size_t) limit;
1254 }
1255 #if defined (__cplusplus) && __cplusplus >= 201103L
1256  #include <cstdlib>
1257  #define __Pyx_sst_abs(value) std::abs(value)
1258 #elif SIZEOF_INT >= SIZEOF_SIZE_T
1259  #define __Pyx_sst_abs(value) abs(value)
1260 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
1261  #define __Pyx_sst_abs(value) labs(value)
1262 #elif defined (_MSC_VER)
1263  #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
1264 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
1265  #define __Pyx_sst_abs(value) llabs(value)
1266 #elif defined (__GNUC__)
1267  #define __Pyx_sst_abs(value) __builtin_llabs(value)
1268 #else
1269  #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
1270 #endif
1271 static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
1272 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
1273 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
1274 static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
1275 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
1276 #define __Pyx_PyBytes_FromString PyBytes_FromString
1277 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
1278 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
1279 #if PY_MAJOR_VERSION < 3
1280  #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
1281  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
1282 #else
1283  #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
1284  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
1285 #endif
1286 #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
1287 #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
1288 #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
1289 #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
1290 #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
1291 #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
1292 #define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
1293 #define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
1294 #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
1295 #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
1296 #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
1297 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
1298 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
1299 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
1300 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
1301 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
1302 #if CYTHON_COMPILING_IN_LIMITED_API
1303 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const wchar_t *u)
1304 {
1305  const wchar_t *u_end = u;
1306  while (*u_end++) ;
1307  return (size_t)(u_end - u - 1);
1308 }
1309 #else
1310 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
1311 {
1312  const Py_UNICODE *u_end = u;
1313  while (*u_end++) ;
1314  return (size_t)(u_end - u - 1);
1315 }
1316 #endif
1317 #define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o)
1318 #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
1319 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
1320 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
1321 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
1322 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
1323 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
1324 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
1325 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
1326 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
1327 #define __Pyx_PySequence_Tuple(obj)\
1328  (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
1329 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
1330 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
1331 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
1332 #if CYTHON_ASSUME_SAFE_MACROS
1333 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
1334 #else
1335 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
1336 #endif
1337 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
1338 #if PY_MAJOR_VERSION >= 3
1339 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
1340 #else
1341 #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
1342 #endif
1343 #if CYTHON_USE_PYLONG_INTERNALS
1344  #if PY_VERSION_HEX >= 0x030C00A7
1345  #ifndef _PyLong_SIGN_MASK
1346  #define _PyLong_SIGN_MASK 3
1347  #endif
1348  #ifndef _PyLong_NON_SIZE_BITS
1349  #define _PyLong_NON_SIZE_BITS 3
1350  #endif
1351  #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
1352  #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0)
1353  #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x))
1354  #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1)
1355  #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0)
1356  #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0])
1357  #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
1358  #define __Pyx_PyLong_SignedDigitCount(x)\
1359  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
1360  #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
1361  #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x)
1362  #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x)
1363  #else
1364  #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
1365  #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
1366  #endif
1367  typedef Py_ssize_t __Pyx_compact_pylong;
1368  typedef size_t __Pyx_compact_upylong;
1369  #else
1370  #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0)
1371  #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0)
1372  #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0)
1373  #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0)
1374  #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
1375  #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x))
1376  #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x)
1377  #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
1378  #define __Pyx_PyLong_CompactValue(x)\
1379  ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
1380  typedef sdigit __Pyx_compact_pylong;
1381  typedef digit __Pyx_compact_upylong;
1382  #endif
1383  #if PY_VERSION_HEX >= 0x030C00A5
1384  #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit)
1385  #else
1386  #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit)
1387  #endif
1388 #endif
1389 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
1390 #include <string.h>
1391 static int __Pyx_sys_getdefaultencoding_not_ascii;
1392 static int __Pyx_init_sys_getdefaultencoding_params(void) {
1393  PyObject* sys;
1394  PyObject* default_encoding = NULL;
1395  PyObject* ascii_chars_u = NULL;
1396  PyObject* ascii_chars_b = NULL;
1397  const char* default_encoding_c;
1398  sys = PyImport_ImportModule("sys");
1399  if (!sys) goto bad;
1400  default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
1401  Py_DECREF(sys);
1402  if (!default_encoding) goto bad;
1403  default_encoding_c = PyBytes_AsString(default_encoding);
1404  if (!default_encoding_c) goto bad;
1405  if (strcmp(default_encoding_c, "ascii") == 0) {
1406  __Pyx_sys_getdefaultencoding_not_ascii = 0;
1407  } else {
1408  char ascii_chars[128];
1409  int c;
1410  for (c = 0; c < 128; c++) {
1411  ascii_chars[c] = (char) c;
1412  }
1413  __Pyx_sys_getdefaultencoding_not_ascii = 1;
1414  ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
1415  if (!ascii_chars_u) goto bad;
1416  ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
1417  if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
1418  PyErr_Format(
1419  PyExc_ValueError,
1420  "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
1421  default_encoding_c);
1422  goto bad;
1423  }
1424  Py_DECREF(ascii_chars_u);
1425  Py_DECREF(ascii_chars_b);
1426  }
1427  Py_DECREF(default_encoding);
1428  return 0;
1429 bad:
1430  Py_XDECREF(default_encoding);
1431  Py_XDECREF(ascii_chars_u);
1432  Py_XDECREF(ascii_chars_b);
1433  return -1;
1434 }
1435 #endif
1436 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
1437 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
1438 #else
1439 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
1440 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
1441 #include <string.h>
1442 static char* __PYX_DEFAULT_STRING_ENCODING;
1443 static int __Pyx_init_sys_getdefaultencoding_params(void) {
1444  PyObject* sys;
1445  PyObject* default_encoding = NULL;
1446  char* default_encoding_c;
1447  sys = PyImport_ImportModule("sys");
1448  if (!sys) goto bad;
1449  default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
1450  Py_DECREF(sys);
1451  if (!default_encoding) goto bad;
1452  default_encoding_c = PyBytes_AsString(default_encoding);
1453  if (!default_encoding_c) goto bad;
1454  __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
1455  if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
1456  strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
1457  Py_DECREF(default_encoding);
1458  return 0;
1459 bad:
1460  Py_XDECREF(default_encoding);
1461  return -1;
1462 }
1463 #endif
1464 #endif
1465 
1466 
1467 /* Test for GCC > 2.95 */
1468 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
1469  #define likely(x) __builtin_expect(!!(x), 1)
1470  #define unlikely(x) __builtin_expect(!!(x), 0)
1471 #else /* !__GNUC__ or GCC < 2.95 */
1472  #define likely(x) (x)
1473  #define unlikely(x) (x)
1474 #endif /* __GNUC__ */
1475 static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
1476 
1477 #if !CYTHON_USE_MODULE_STATE
1478 static PyObject *__pyx_m = NULL;
1479 #endif
1480 static int __pyx_lineno;
1481 static int __pyx_clineno = 0;
1482 static const char * __pyx_cfilenm = __FILE__;
1483 static const char *__pyx_filename;
1484 
1485 /* #### Code section: filename_table ### */
1486 
1487 static const char *__pyx_f[] = {
1488  "PyClical.pyx",
1489  "<stringsource>",
1490 };
1491 /* #### Code section: utility_code_proto_before_types ### */
1492 /* ForceInitThreads.proto */
1493 #ifndef __PYX_FORCE_INIT_THREADS
1494  #define __PYX_FORCE_INIT_THREADS 0
1495 #endif
1496 
1497 /* #### Code section: numeric_typedefs ### */
1498 /* #### Code section: complex_type_declarations ### */
1499 /* #### Code section: type_declarations ### */
1500 
1501 /*--- Type declarations ---*/
1502 struct __pyx_obj_8PyClical_index_set;
1503 struct __pyx_obj_8PyClical_clifford;
1504 struct __pyx_obj_8PyClical___pyx_scope_struct____iter__;
1505 struct __pyx_opt_args_8PyClical_approx_equal;
1506 struct __pyx_opt_args_8PyClical_sqrt;
1507 struct __pyx_opt_args_8PyClical_log;
1508 struct __pyx_opt_args_8PyClical_cos;
1509 struct __pyx_opt_args_8PyClical_acos;
1510 struct __pyx_opt_args_8PyClical_acosh;
1511 struct __pyx_opt_args_8PyClical_sin;
1512 struct __pyx_opt_args_8PyClical_asin;
1513 struct __pyx_opt_args_8PyClical_asinh;
1514 struct __pyx_opt_args_8PyClical_tan;
1515 struct __pyx_opt_args_8PyClical_atan;
1516 struct __pyx_opt_args_8PyClical_atanh;
1517 struct __pyx_opt_args_8PyClical_random_clifford;
1518 
1519 /* "PyClical.pyx":1422
1520  * return glucat.error_squared(toClifford(lhs), toClifford(rhs), <scalar_t>threshold)
1521  *
1522  * cpdef inline approx_equal(lhs, rhs, threshold=None, tol=None): # <<<<<<<<<<<<<<
1523  * """
1524  * Test for approximate equality of multivectors.
1525  */
1526 struct __pyx_opt_args_8PyClical_approx_equal {
1527  int __pyx_n;
1528  PyObject *threshold;
1529  PyObject *tol;
1530 };
1531 
1532 /* "PyClical.pyx":1654
1533  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
1534  *
1535  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
1536  * """
1537  * Square root of multivector with optional complexifier.
1538  */
1539 struct __pyx_opt_args_8PyClical_sqrt {
1540  int __pyx_n;
1541  PyObject *i;
1542 };
1543 
1544 /* "PyClical.pyx":1691
1545  * return clifford().wrap( glucat.exp(toClifford(obj)) )
1546  *
1547  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
1548  * """
1549  * Natural logarithm of multivector with optional complexifier.
1550  */
1551 struct __pyx_opt_args_8PyClical_log {
1552  int __pyx_n;
1553  PyObject *i;
1554 };
1555 
1556 /* "PyClical.pyx":1714
1557  * return clifford().wrap( glucat.log(toClifford(obj)) )
1558  *
1559  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
1560  * """
1561  * Cosine of multivector with optional complexifier.
1562  */
1563 struct __pyx_opt_args_8PyClical_cos {
1564  int __pyx_n;
1565  PyObject *i;
1566 };
1567 
1568 /* "PyClical.pyx":1731
1569  * return clifford().wrap( glucat.cos(toClifford(obj)) )
1570  *
1571  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
1572  * """
1573  * Inverse cosine of multivector with optional complexifier.
1574  */
1575 struct __pyx_opt_args_8PyClical_acos {
1576  int __pyx_n;
1577  PyObject *i;
1578 };
1579 
1580 /* "PyClical.pyx":1768
1581  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
1582  *
1583  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
1584  * """
1585  * Inverse hyperbolic cosine of multivector with optional complexifier.
1586  */
1587 struct __pyx_opt_args_8PyClical_acosh {
1588  int __pyx_n;
1589  PyObject *i;
1590 };
1591 
1592 /* "PyClical.pyx":1791
1593  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
1594  *
1595  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
1596  * """
1597  * Sine of multivector with optional complexifier.
1598  */
1599 struct __pyx_opt_args_8PyClical_sin {
1600  int __pyx_n;
1601  PyObject *i;
1602 };
1603 
1604 /* "PyClical.pyx":1810
1605  * return clifford().wrap( glucat.sin(toClifford(obj)) )
1606  *
1607  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
1608  * """
1609  * Inverse sine of multivector with optional complexifier.
1610  */
1611 struct __pyx_opt_args_8PyClical_asin {
1612  int __pyx_n;
1613  PyObject *i;
1614 };
1615 
1616 /* "PyClical.pyx":1845
1617  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
1618  *
1619  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
1620  * """
1621  * Inverse hyperbolic sine of multivector with optional complexifier.
1622  */
1623 struct __pyx_opt_args_8PyClical_asinh {
1624  int __pyx_n;
1625  PyObject *i;
1626 };
1627 
1628 /* "PyClical.pyx":1864
1629  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
1630  *
1631  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
1632  * """
1633  * Tangent of multivector with optional complexifier.
1634  */
1635 struct __pyx_opt_args_8PyClical_tan {
1636  int __pyx_n;
1637  PyObject *i;
1638 };
1639 
1640 /* "PyClical.pyx":1881
1641  * return clifford().wrap( glucat.tan(toClifford(obj)) )
1642  *
1643  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
1644  * """
1645  * Inverse tangent of multivector with optional complexifier.
1646  */
1647 struct __pyx_opt_args_8PyClical_atan {
1648  int __pyx_n;
1649  PyObject *i;
1650 };
1651 
1652 /* "PyClical.pyx":1910
1653  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
1654  *
1655  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
1656  * """
1657  * Inverse hyperbolic tangent of multivector with optional complexifier.
1658  */
1659 struct __pyx_opt_args_8PyClical_atanh {
1660  int __pyx_n;
1661  PyObject *i;
1662 };
1663 
1664 /* "PyClical.pyx":1927
1665  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
1666  *
1667  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
1668  * """
1669  * Random multivector within a frame.
1670  */
1671 struct __pyx_opt_args_8PyClical_random_clifford {
1672  int __pyx_n;
1673  PyObject *fill;
1674 };
1675 
1676 /* "PyClical.pyx":38
1677  *
1678  * # Forward reference
1679  * cdef class index_set # <<<<<<<<<<<<<<
1680  *
1681  * cdef inline IndexSet toIndexSet(obj):
1682  */
1683 struct __pyx_obj_8PyClical_index_set {
1684  PyObject_HEAD
1685  struct __pyx_vtabstruct_8PyClical_index_set *__pyx_vtab;
1686  IndexSet *instance;
1687 };
1688 
1689 
1690 /* "PyClical.pyx":532
1691  *
1692  * # Forward reference.
1693  * cdef class clifford # <<<<<<<<<<<<<<
1694  *
1695  * cdef inline Clifford toClifford(obj):
1696  */
1697 struct __pyx_obj_8PyClical_clifford {
1698  PyObject_HEAD
1699  struct __pyx_vtabstruct_8PyClical_clifford *__pyx_vtab;
1700  Clifford *instance;
1701 };
1702 
1703 
1704 /* "PyClical.pyx":229
1705  * return self.instance.getitem(idx)
1706  *
1707  * def __iter__(self): # <<<<<<<<<<<<<<
1708  * """
1709  * Iterate over the indices of an index_set.
1710  */
1711 struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ {
1712  PyObject_HEAD
1713  PyObject *__pyx_v_idx;
1714  struct __pyx_obj_8PyClical_index_set *__pyx_v_self;
1715  PyObject *__pyx_t_0;
1716  Py_ssize_t __pyx_t_1;
1717  PyObject *(*__pyx_t_2)(PyObject *);
1718 };
1719 
1720 
1721 
1722 /* "PyClical.pyx":46
1723  * return index_set(obj).instance[0]
1724  *
1725  * cdef class index_set: # <<<<<<<<<<<<<<
1726  * """
1727  * Python class index_set wraps C++ class IndexSet.
1728  */
1729 
1730 struct __pyx_vtabstruct_8PyClical_index_set {
1731  PyObject *(*wrap)(struct __pyx_obj_8PyClical_index_set *, IndexSet);
1732  IndexSet (*unwrap)(struct __pyx_obj_8PyClical_index_set *);
1733  PyObject *(*copy)(struct __pyx_obj_8PyClical_index_set *, int __pyx_skip_dispatch);
1734 };
1735 static struct __pyx_vtabstruct_8PyClical_index_set *__pyx_vtabptr_8PyClical_index_set;
1736 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_9index_set_wrap(struct __pyx_obj_8PyClical_index_set *, IndexSet);
1737 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_9index_set_unwrap(struct __pyx_obj_8PyClical_index_set *);
1738 
1739 
1740 /* "PyClical.pyx":537
1741  * return clifford(obj).instance[0]
1742  *
1743  * cdef class clifford: # <<<<<<<<<<<<<<
1744  * """
1745  * Python class clifford wraps C++ class Clifford.
1746  */
1747 
1748 struct __pyx_vtabstruct_8PyClical_clifford {
1749  PyObject *(*wrap)(struct __pyx_obj_8PyClical_clifford *, Clifford);
1750  Clifford (*unwrap)(struct __pyx_obj_8PyClical_clifford *);
1751  PyObject *(*copy)(struct __pyx_obj_8PyClical_clifford *, int __pyx_skip_dispatch);
1752 };
1753 static struct __pyx_vtabstruct_8PyClical_clifford *__pyx_vtabptr_8PyClical_clifford;
1754 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_8clifford_wrap(struct __pyx_obj_8PyClical_clifford *, Clifford);
1755 static CYTHON_INLINE Clifford __pyx_f_8PyClical_8clifford_unwrap(struct __pyx_obj_8PyClical_clifford *);
1756 /* #### Code section: utility_code_proto ### */
1757 
1758 /* --- Runtime support code (head) --- */
1759 /* Refnanny.proto */
1760 #ifndef CYTHON_REFNANNY
1761  #define CYTHON_REFNANNY 0
1762 #endif
1763 #if CYTHON_REFNANNY
1764  typedef struct {
1765  void (*INCREF)(void*, PyObject*, Py_ssize_t);
1766  void (*DECREF)(void*, PyObject*, Py_ssize_t);
1767  void (*GOTREF)(void*, PyObject*, Py_ssize_t);
1768  void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
1769  void* (*SetupContext)(const char*, Py_ssize_t, const char*);
1770  void (*FinishContext)(void**);
1771  } __Pyx_RefNannyAPIStruct;
1772  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
1773  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
1774  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
1775 #ifdef WITH_THREAD
1776  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1777  if (acquire_gil) {\
1778  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1779  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
1780  PyGILState_Release(__pyx_gilstate_save);\
1781  } else {\
1782  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
1783  }
1784  #define __Pyx_RefNannyFinishContextNogil() {\
1785  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1786  __Pyx_RefNannyFinishContext();\
1787  PyGILState_Release(__pyx_gilstate_save);\
1788  }
1789 #else
1790  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1791  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
1792  #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
1793 #endif
1794  #define __Pyx_RefNannyFinishContextNogil() {\
1795  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1796  __Pyx_RefNannyFinishContext();\
1797  PyGILState_Release(__pyx_gilstate_save);\
1798  }
1799  #define __Pyx_RefNannyFinishContext()\
1800  __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
1801  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1802  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1803  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1804  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
1805  #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
1806  #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
1807  #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
1808  #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
1809 #else
1810  #define __Pyx_RefNannyDeclarations
1811  #define __Pyx_RefNannySetupContext(name, acquire_gil)
1812  #define __Pyx_RefNannyFinishContextNogil()
1813  #define __Pyx_RefNannyFinishContext()
1814  #define __Pyx_INCREF(r) Py_INCREF(r)
1815  #define __Pyx_DECREF(r) Py_DECREF(r)
1816  #define __Pyx_GOTREF(r)
1817  #define __Pyx_GIVEREF(r)
1818  #define __Pyx_XINCREF(r) Py_XINCREF(r)
1819  #define __Pyx_XDECREF(r) Py_XDECREF(r)
1820  #define __Pyx_XGOTREF(r)
1821  #define __Pyx_XGIVEREF(r)
1822 #endif
1823 #define __Pyx_Py_XDECREF_SET(r, v) do {\
1824  PyObject *tmp = (PyObject *) r;\
1825  r = v; Py_XDECREF(tmp);\
1826  } while (0)
1827 #define __Pyx_XDECREF_SET(r, v) do {\
1828  PyObject *tmp = (PyObject *) r;\
1829  r = v; __Pyx_XDECREF(tmp);\
1830  } while (0)
1831 #define __Pyx_DECREF_SET(r, v) do {\
1832  PyObject *tmp = (PyObject *) r;\
1833  r = v; __Pyx_DECREF(tmp);\
1834  } while (0)
1835 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
1836 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
1837 
1838 /* PyErrExceptionMatches.proto */
1839 #if CYTHON_FAST_THREAD_STATE
1840 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
1841 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
1842 #else
1843 #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
1844 #endif
1845 
1846 /* PyThreadStateGet.proto */
1847 #if CYTHON_FAST_THREAD_STATE
1848 #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
1849 #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
1850 #if PY_VERSION_HEX >= 0x030C00A6
1851 #define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL)
1852 #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
1853 #else
1854 #define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL)
1855 #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type)
1856 #endif
1857 #else
1858 #define __Pyx_PyThreadState_declare
1859 #define __Pyx_PyThreadState_assign
1860 #define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL)
1861 #define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred()
1862 #endif
1863 
1864 /* PyErrFetchRestore.proto */
1865 #if CYTHON_FAST_THREAD_STATE
1866 #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
1867 #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
1868 #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
1869 #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
1870 #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
1871 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1872 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1873 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
1874 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
1875 #else
1876 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1877 #endif
1878 #else
1879 #define __Pyx_PyErr_Clear() PyErr_Clear()
1880 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1881 #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
1882 #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
1883 #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
1884 #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
1885 #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
1886 #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
1887 #endif
1888 
1889 /* PyObjectGetAttrStr.proto */
1890 #if CYTHON_USE_TYPE_SLOTS
1891 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
1892 #else
1893 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
1894 #endif
1895 
1896 /* PyObjectGetAttrStrNoError.proto */
1897 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
1898 
1899 /* GetBuiltinName.proto */
1900 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
1901 
1902 /* PyFunctionFastCall.proto */
1903 #if CYTHON_FAST_PYCALL
1904 #if !CYTHON_VECTORCALL
1905 #define __Pyx_PyFunction_FastCall(func, args, nargs)\
1906  __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
1907 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
1908 #endif
1909 #define __Pyx_BUILD_ASSERT_EXPR(cond)\
1910  (sizeof(char [1 - 2*!(cond)]) - 1)
1911 #ifndef Py_MEMBER_SIZE
1912 #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
1913 #endif
1914 #if !CYTHON_VECTORCALL
1915 #if PY_VERSION_HEX >= 0x03080000
1916  #include "frameobject.h"
1917 #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
1918  #ifndef Py_BUILD_CORE
1919  #define Py_BUILD_CORE 1
1920  #endif
1921  #include "internal/pycore_frame.h"
1922 #endif
1923  #define __Pxy_PyFrame_Initialize_Offsets()
1924  #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus)
1925 #else
1926  static size_t __pyx_pyframe_localsplus_offset = 0;
1927  #include "frameobject.h"
1928  #define __Pxy_PyFrame_Initialize_Offsets()\
1929  ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
1930  (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
1931  #define __Pyx_PyFrame_GetLocalsplus(frame)\
1932  (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
1933 #endif
1934 #endif
1935 #endif
1936 
1937 /* PyObjectCall.proto */
1938 #if CYTHON_COMPILING_IN_CPYTHON
1939 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
1940 #else
1941 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
1942 #endif
1943 
1944 /* PyObjectCallMethO.proto */
1945 #if CYTHON_COMPILING_IN_CPYTHON
1946 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
1947 #endif
1948 
1949 /* PyObjectFastCall.proto */
1950 #define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
1951 static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);
1952 
1953 /* PyObjectCallOneArg.proto */
1954 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
1955 
1956 /* PyDictVersioning.proto */
1957 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
1958 #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
1959 #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
1960 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
1961  (version_var) = __PYX_GET_DICT_VERSION(dict);\
1962  (cache_var) = (value);
1963 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
1964  static PY_UINT64_T __pyx_dict_version = 0;\
1965  static PyObject *__pyx_dict_cached_value = NULL;\
1966  if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
1967  (VAR) = __pyx_dict_cached_value;\
1968  } else {\
1969  (VAR) = __pyx_dict_cached_value = (LOOKUP);\
1970  __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
1971  }\
1972 }
1973 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
1974 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
1975 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
1976 #else
1977 #define __PYX_GET_DICT_VERSION(dict) (0)
1978 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
1979 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
1980 #endif
1981 
1982 /* TupleAndListFromArray.proto */
1983 #if CYTHON_COMPILING_IN_CPYTHON
1984 static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
1985 static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
1986 #endif
1987 
1988 /* IncludeStringH.proto */
1989 #include <string.h>
1990 
1991 /* BytesEquals.proto */
1992 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
1993 
1994 /* UnicodeEquals.proto */
1995 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
1996 
1997 /* fastcall.proto */
1998 #if CYTHON_AVOID_BORROWED_REFS
1999  #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
2000 #elif CYTHON_ASSUME_SAFE_MACROS
2001  #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
2002 #else
2003  #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
2004 #endif
2005 #if CYTHON_AVOID_BORROWED_REFS
2006  #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
2007  #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
2008 #else
2009  #define __Pyx_Arg_NewRef_VARARGS(arg) arg
2010  #define __Pyx_Arg_XDECREF_VARARGS(arg)
2011 #endif
2012 #define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
2013 #define __Pyx_KwValues_VARARGS(args, nargs) NULL
2014 #define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
2015 #define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
2016 #if CYTHON_METH_FASTCALL
2017  #define __Pyx_Arg_FASTCALL(args, i) args[i]
2018  #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
2019  #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
2020  static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
2021 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
2022  CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
2023  #else
2024  #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
2025  #endif
2026  #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
2027  to have the same reference counting */
2028  #define __Pyx_Arg_XDECREF_FASTCALL(arg)
2029 #else
2030  #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
2031  #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
2032  #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
2033  #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
2034  #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
2035  #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
2036  #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
2037 #endif
2038 #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
2039 #define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
2040 #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
2041 #else
2042 #define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
2043 #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
2044 #endif
2045 
2046 /* RaiseArgTupleInvalid.proto */
2047 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
2048  Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
2049 
2050 /* KeywordStringCheck.proto */
2051 static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
2052 
2053 /* RaiseDoubleKeywords.proto */
2054 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
2055 
2056 /* ParseKeywords.proto */
2057 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
2058  PyObject **argnames[],
2059  PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
2060  const char* function_name);
2061 
2062 /* GetModuleGlobalName.proto */
2063 #if CYTHON_USE_DICT_VERSIONS
2064 #define __Pyx_GetModuleGlobalName(var, name) do {\
2065  static PY_UINT64_T __pyx_dict_version = 0;\
2066  static PyObject *__pyx_dict_cached_value = NULL;\
2067  (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
2068  (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
2069  __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
2070 } while(0)
2071 #define __Pyx_GetModuleGlobalNameUncached(var, name) do {\
2072  PY_UINT64_T __pyx_dict_version;\
2073  PyObject *__pyx_dict_cached_value;\
2074  (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
2075 } while(0)
2076 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
2077 #else
2078 #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
2079 #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
2080 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
2081 #endif
2082 
2083 /* GetTopmostException.proto */
2084 #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
2085 static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
2086 #endif
2087 
2088 /* SaveResetException.proto */
2089 #if CYTHON_FAST_THREAD_STATE
2090 #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
2091 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2092 #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
2093 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
2094 #else
2095 #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
2096 #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
2097 #endif
2098 
2099 /* GetException.proto */
2100 #if CYTHON_FAST_THREAD_STATE
2101 #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
2102 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2103 #else
2104 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
2105 #endif
2106 
2107 /* RaiseException.proto */
2108 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
2109 
2110 /* FastTypeChecks.proto */
2111 #if CYTHON_COMPILING_IN_CPYTHON
2112 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
2113 #define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
2114 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
2115 static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
2116 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
2117 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
2118 #else
2119 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
2120 #define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
2121 #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
2122 #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
2123 #endif
2124 #define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
2125 #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
2126 
2127 /* PyObject_Str.proto */
2128 #define __Pyx_PyObject_Str(obj)\
2129  (likely(PyString_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))
2130 
2131 /* UnicodeConcatInPlace.proto */
2132 # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
2133  #if CYTHON_REFNANNY
2134  #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny)
2135  #else
2136  #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right)
2137  #endif
2138  static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right
2139  #if CYTHON_REFNANNY
2140  , void* __pyx_refnanny
2141  #endif
2142  );
2143 #else
2144 #define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat
2145 #endif
2146 #define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
2147  PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right))
2148 
2149 /* PyIntBinop.proto */
2150 #if !CYTHON_COMPILING_IN_PYPY
2151 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
2152 #else
2153 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
2154  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
2155 #endif
2156 
2157 /* PySequenceContains.proto */
2158 static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
2159  int result = PySequence_Contains(seq, item);
2160  return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
2161 }
2162 
2163 /* pep479.proto */
2164 static void __Pyx_Generator_Replace_StopIteration(int in_async_gen);
2165 
2166 /* PyObjectCallNoArg.proto */
2167 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
2168 
2169 /* MoveIfSupported.proto */
2170 #if CYTHON_USE_CPP_STD_MOVE
2171  #include <utility>
2172  #define __PYX_STD_MOVE_IF_SUPPORTED(x) std::move(x)
2173 #else
2174  #define __PYX_STD_MOVE_IF_SUPPORTED(x) x
2175 #endif
2176 
2177 /* IncludeCppStringH.proto */
2178 #include <string>
2179 
2180 /* decode_c_string_utf16.proto */
2181 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
2182  int byteorder = 0;
2183  return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
2184 }
2185 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
2186  int byteorder = -1;
2187  return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
2188 }
2189 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
2190  int byteorder = 1;
2191  return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
2192 }
2193 
2194 /* decode_c_bytes.proto */
2195 static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
2196  const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
2197  const char* encoding, const char* errors,
2198  PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
2199 
2200 /* decode_cpp_string.proto */
2201 static CYTHON_INLINE PyObject* __Pyx_decode_cpp_string(
2202  std::string cppstring, Py_ssize_t start, Py_ssize_t stop,
2203  const char* encoding, const char* errors,
2204  PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
2205  return __Pyx_decode_c_bytes(
2206  cppstring.data(), cppstring.size(), start, stop, encoding, errors, decode_func);
2207 }
2208 
2209 /* SwapException.proto */
2210 #if CYTHON_FAST_THREAD_STATE
2211 #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
2212 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2213 #else
2214 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
2215 #endif
2216 
2217 /* SetItemInt.proto */
2218 #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
2219  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
2220  __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
2221  (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
2222  __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
2223 static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
2224 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
2225  int is_list, int wraparound, int boundscheck);
2226 
2227 /* ArgTypeTest.proto */
2228 #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
2229  ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
2230  __Pyx__ArgTypeTest(obj, type, name, exact))
2231 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
2232 
2233 /* Import.proto */
2234 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
2235 
2236 /* ImportDottedModule.proto */
2237 static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
2238 #if PY_MAJOR_VERSION >= 3
2239 static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
2240 #endif
2241 
2242 /* IncludeStructmemberH.proto */
2243 #include <structmember.h>
2244 
2245 /* FixUpExtensionType.proto */
2246 #if CYTHON_USE_TYPE_SPECS
2247 static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
2248 #endif
2249 
2250 /* PyObjectGetMethod.proto */
2251 static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
2252 
2253 /* PyObjectCallMethod0.proto */
2254 static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
2255 
2256 /* ValidateBasesTuple.proto */
2257 #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
2258 static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
2259 #endif
2260 
2261 /* PyType_Ready.proto */
2262 CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);
2263 
2264 /* PyObject_GenericGetAttrNoDict.proto */
2265 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
2266 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
2267 #else
2268 #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
2269 #endif
2270 
2271 /* PyObject_GenericGetAttr.proto */
2272 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
2273 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
2274 #else
2275 #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
2276 #endif
2277 
2278 /* SetVTable.proto */
2279 static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);
2280 
2281 /* GetVTable.proto */
2282 static void* __Pyx_GetVtable(PyTypeObject *type);
2283 
2284 /* MergeVTables.proto */
2285 #if !CYTHON_COMPILING_IN_LIMITED_API
2286 static int __Pyx_MergeVtables(PyTypeObject *type);
2287 #endif
2288 
2289 /* SetupReduce.proto */
2290 #if !CYTHON_COMPILING_IN_LIMITED_API
2291 static int __Pyx_setup_reduce(PyObject* type_obj);
2292 #endif
2293 
2294 /* FetchSharedCythonModule.proto */
2295 static PyObject *__Pyx_FetchSharedCythonABIModule(void);
2296 
2297 /* FetchCommonType.proto */
2298 #if !CYTHON_USE_TYPE_SPECS
2299 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
2300 #else
2301 static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
2302 #endif
2303 
2304 /* PyMethodNew.proto */
2305 #if CYTHON_COMPILING_IN_LIMITED_API
2306 static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
2307  PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
2308  CYTHON_UNUSED_VAR(typ);
2309  if (!self)
2310  return __Pyx_NewRef(func);
2311  typesModule = PyImport_ImportModule("types");
2312  if (!typesModule) return NULL;
2313  methodType = PyObject_GetAttrString(typesModule, "MethodType");
2314  Py_DECREF(typesModule);
2315  if (!methodType) return NULL;
2316  result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
2317  Py_DECREF(methodType);
2318  return result;
2319 }
2320 #elif PY_MAJOR_VERSION >= 3
2321 static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
2322  CYTHON_UNUSED_VAR(typ);
2323  if (!self)
2324  return __Pyx_NewRef(func);
2325  return PyMethod_New(func, self);
2326 }
2327 #else
2328  #define __Pyx_PyMethod_New PyMethod_New
2329 #endif
2330 
2331 /* PyVectorcallFastCallDict.proto */
2332 #if CYTHON_METH_FASTCALL
2333 static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
2334 #endif
2335 
2336 /* CythonFunctionShared.proto */
2337 #define __Pyx_CyFunction_USED
2338 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01
2339 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
2340 #define __Pyx_CYFUNCTION_CCLASS 0x04
2341 #define __Pyx_CYFUNCTION_COROUTINE 0x08
2342 #define __Pyx_CyFunction_GetClosure(f)\
2343  (((__pyx_CyFunctionObject *) (f))->func_closure)
2344 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
2345  #define __Pyx_CyFunction_GetClassObj(f)\
2346  (((__pyx_CyFunctionObject *) (f))->func_classobj)
2347 #else
2348  #define __Pyx_CyFunction_GetClassObj(f)\
2349  ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
2350 #endif
2351 #define __Pyx_CyFunction_SetClassObj(f, classobj)\
2352  __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
2353 #define __Pyx_CyFunction_Defaults(type, f)\
2354  ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
2355 #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
2356  ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
2357 typedef struct {
2358 #if CYTHON_COMPILING_IN_LIMITED_API
2359  PyObject_HEAD
2360  PyObject *func;
2361 #elif PY_VERSION_HEX < 0x030900B1
2362  PyCFunctionObject func;
2363 #else
2364  PyCMethodObject func;
2365 #endif
2366 #if CYTHON_BACKPORT_VECTORCALL
2367  __pyx_vectorcallfunc func_vectorcall;
2368 #endif
2369 #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
2370  PyObject *func_weakreflist;
2371 #endif
2372  PyObject *func_dict;
2373  PyObject *func_name;
2374  PyObject *func_qualname;
2375  PyObject *func_doc;
2376  PyObject *func_globals;
2377  PyObject *func_code;
2378  PyObject *func_closure;
2379 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
2380  PyObject *func_classobj;
2381 #endif
2382  void *defaults;
2383  int defaults_pyobjects;
2384  size_t defaults_size;
2385  int flags;
2386  PyObject *defaults_tuple;
2387  PyObject *defaults_kwdict;
2388  PyObject *(*defaults_getter)(PyObject *);
2389  PyObject *func_annotations;
2390  PyObject *func_is_coroutine;
2391 } __pyx_CyFunctionObject;
2392 #undef __Pyx_CyOrPyCFunction_Check
2393 #define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
2394 #define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
2395 #define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
2396 static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
2397 #undef __Pyx_IsSameCFunction
2398 #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc)
2399 static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
2400  int flags, PyObject* qualname,
2401  PyObject *closure,
2402  PyObject *module, PyObject *globals,
2403  PyObject* code);
2404 static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
2405 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
2406  size_t size,
2407  int pyobjects);
2408 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
2409  PyObject *tuple);
2410 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
2411  PyObject *dict);
2412 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
2413  PyObject *dict);
2414 static int __pyx_CyFunction_init(PyObject *module);
2415 #if CYTHON_METH_FASTCALL
2416 static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2417 static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2418 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2419 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
2420 #if CYTHON_BACKPORT_VECTORCALL
2421 #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
2422 #else
2423 #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
2424 #endif
2425 #endif
2426 
2427 /* CythonFunction.proto */
2428 static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
2429  int flags, PyObject* qualname,
2430  PyObject *closure,
2431  PyObject *module, PyObject *globals,
2432  PyObject* code);
2433 
2434 /* CLineInTraceback.proto */
2435 #ifdef CYTHON_CLINE_IN_TRACEBACK
2436 #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
2437 #else
2438 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
2439 #endif
2440 
2441 /* CodeObjectCache.proto */
2442 #if !CYTHON_COMPILING_IN_LIMITED_API
2443 typedef struct {
2444  PyCodeObject* code_object;
2445  int code_line;
2446 } __Pyx_CodeObjectCacheEntry;
2447 struct __Pyx_CodeObjectCache {
2448  int count;
2449  int max_count;
2450  __Pyx_CodeObjectCacheEntry* entries;
2451 };
2452 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
2453 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
2454 static PyCodeObject *__pyx_find_code_object(int code_line);
2455 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
2456 #endif
2457 
2458 /* AddTraceback.proto */
2459 static void __Pyx_AddTraceback(const char *funcname, int c_line,
2460  int py_line, const char *filename);
2461 
2462 /* GCCDiagnostics.proto */
2463 #if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
2464 #define __Pyx_HAS_GCC_DIAGNOSTIC
2465 #endif
2466 
2467 /* CppExceptionConversion.proto */
2468 #ifndef __Pyx_CppExn2PyErr
2469 #include <new>
2470 #include <typeinfo>
2471 #include <stdexcept>
2472 #include <ios>
2473 static void __Pyx_CppExn2PyErr() {
2474  try {
2475  if (PyErr_Occurred())
2476  ; // let the latest Python exn pass through and ignore the current one
2477  else
2478  throw;
2479  } catch (const std::bad_alloc& exn) {
2480  PyErr_SetString(PyExc_MemoryError, exn.what());
2481  } catch (const std::bad_cast& exn) {
2482  PyErr_SetString(PyExc_TypeError, exn.what());
2483  } catch (const std::bad_typeid& exn) {
2484  PyErr_SetString(PyExc_TypeError, exn.what());
2485  } catch (const std::domain_error& exn) {
2486  PyErr_SetString(PyExc_ValueError, exn.what());
2487  } catch (const std::invalid_argument& exn) {
2488  PyErr_SetString(PyExc_ValueError, exn.what());
2489  } catch (const std::ios_base::failure& exn) {
2490  PyErr_SetString(PyExc_IOError, exn.what());
2491  } catch (const std::out_of_range& exn) {
2492  PyErr_SetString(PyExc_IndexError, exn.what());
2493  } catch (const std::overflow_error& exn) {
2494  PyErr_SetString(PyExc_OverflowError, exn.what());
2495  } catch (const std::range_error& exn) {
2496  PyErr_SetString(PyExc_ArithmeticError, exn.what());
2497  } catch (const std::underflow_error& exn) {
2498  PyErr_SetString(PyExc_ArithmeticError, exn.what());
2499  } catch (const std::exception& exn) {
2500  PyErr_SetString(PyExc_RuntimeError, exn.what());
2501  }
2502  catch (...)
2503  {
2504  PyErr_SetString(PyExc_RuntimeError, "Unknown exception");
2505  }
2506 }
2507 #endif
2508 
2509 /* CIntFromPy.proto */
2510 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
2511 
2512 /* CIntToPy.proto */
2513 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
2514 
2515 /* FormatTypeName.proto */
2516 #if CYTHON_COMPILING_IN_LIMITED_API
2517 typedef PyObject *__Pyx_TypeName;
2518 #define __Pyx_FMT_TYPENAME "%U"
2519 static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
2520 #define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
2521 #else
2522 typedef const char *__Pyx_TypeName;
2523 #define __Pyx_FMT_TYPENAME "%.200s"
2524 #define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
2525 #define __Pyx_DECREF_TypeName(obj)
2526 #endif
2527 
2528 /* CIntToPy.proto */
2529 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
2530 
2531 /* CIntFromPy.proto */
2532 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
2533 
2534 /* PyObjectCall2Args.proto */
2535 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
2536 
2537 /* PyObjectCallMethod1.proto */
2538 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
2539 
2540 /* CoroutineBase.proto */
2541 struct __pyx_CoroutineObject;
2542 typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *);
2543 #if CYTHON_USE_EXC_INFO_STACK
2544 #define __Pyx_ExcInfoStruct _PyErr_StackItem
2545 #else
2546 typedef struct {
2547  PyObject *exc_type;
2548  PyObject *exc_value;
2549  PyObject *exc_traceback;
2550 } __Pyx_ExcInfoStruct;
2551 #endif
2552 typedef struct __pyx_CoroutineObject {
2553  PyObject_HEAD
2554  __pyx_coroutine_body_t body;
2555  PyObject *closure;
2556  __Pyx_ExcInfoStruct gi_exc_state;
2557  PyObject *gi_weakreflist;
2558  PyObject *classobj;
2559  PyObject *yieldfrom;
2560  PyObject *gi_name;
2561  PyObject *gi_qualname;
2562  PyObject *gi_modulename;
2563  PyObject *gi_code;
2564  PyObject *gi_frame;
2565  int resume_label;
2566  char is_running;
2567 } __pyx_CoroutineObject;
2568 static __pyx_CoroutineObject *__Pyx__Coroutine_New(
2569  PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
2570  PyObject *name, PyObject *qualname, PyObject *module_name);
2571 static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
2572  __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
2573  PyObject *name, PyObject *qualname, PyObject *module_name);
2574 static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
2575 static int __Pyx_Coroutine_clear(PyObject *self);
2576 static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
2577 static PyObject *__Pyx_Coroutine_Close(PyObject *self);
2578 static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
2579 #if CYTHON_USE_EXC_INFO_STACK
2580 #define __Pyx_Coroutine_SwapException(self)
2581 #define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
2582 #else
2583 #define __Pyx_Coroutine_SwapException(self) {\
2584  __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
2585  __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
2586  }
2587 #define __Pyx_Coroutine_ResetAndClearException(self) {\
2588  __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
2589  (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
2590  }
2591 #endif
2592 #if CYTHON_FAST_THREAD_STATE
2593 #define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
2594  __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
2595 #else
2596 #define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
2597  __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
2598 #endif
2599 static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
2600 static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
2601 
2602 /* PatchModuleWithCoroutine.proto */
2603 static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
2604 
2605 /* PatchGeneratorABC.proto */
2606 static int __Pyx_patch_abc(void);
2607 
2608 /* Generator.proto */
2609 #define __Pyx_Generator_USED
2610 #define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_GeneratorType)
2611 #define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
2612  __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
2613 static PyObject *__Pyx_Generator_Next(PyObject *self);
2614 static int __pyx_Generator_init(PyObject *module);
2615 
2616 /* CheckBinaryVersion.proto */
2617 static unsigned long __Pyx_get_runtime_version(void);
2618 static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
2619 
2620 /* InitStrings.proto */
2621 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
2622 
2623 /* #### Code section: module_declarations ### */
2624 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_9index_set_wrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, IndexSet __pyx_v_other); /* proto*/
2625 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_9index_set_unwrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto*/
2626 static PyObject *__pyx_f_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
2627 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_8clifford_wrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, Clifford __pyx_v_other); /* proto*/
2628 static CYTHON_INLINE Clifford __pyx_f_8PyClical_8clifford_unwrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto*/
2629 static PyObject *__pyx_f_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
2630 
2631 /* Module declarations from "libcpp.vector" */
2632 
2633 /* Module declarations from "glucat" */
2634 
2635 /* Module declarations from "libc.string" */
2636 
2637 /* Module declarations from "libcpp.string" */
2638 
2639 /* Module declarations from "PyClical" */
2640 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_toIndexSet(PyObject *); /*proto*/
2641 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_compare(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
2642 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_min_neg(PyObject *, int __pyx_skip_dispatch); /*proto*/
2643 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_pos(PyObject *, int __pyx_skip_dispatch); /*proto*/
2644 static CYTHON_INLINE std::vector<scalar_t> __pyx_f_8PyClical_list_to_vector(PyObject *); /*proto*/
2645 static CYTHON_INLINE Clifford __pyx_f_8PyClical_toClifford(PyObject *); /*proto*/
2646 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_error_squared_tol(PyObject *, int __pyx_skip_dispatch); /*proto*/
2647 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_error_squared(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
2648 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_approx_equal(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_approx_equal *__pyx_optional_args); /*proto*/
2649 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_inv(PyObject *, int __pyx_skip_dispatch); /*proto*/
2650 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_scalar(PyObject *, int __pyx_skip_dispatch); /*proto*/
2651 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_real(PyObject *, int __pyx_skip_dispatch); /*proto*/
2652 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_imag(PyObject *, int __pyx_skip_dispatch); /*proto*/
2653 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pure(PyObject *, int __pyx_skip_dispatch); /*proto*/
2654 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_even(PyObject *, int __pyx_skip_dispatch); /*proto*/
2655 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_odd(PyObject *, int __pyx_skip_dispatch); /*proto*/
2656 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_involute(PyObject *, int __pyx_skip_dispatch); /*proto*/
2657 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_reverse(PyObject *, int __pyx_skip_dispatch); /*proto*/
2658 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_conj(PyObject *, int __pyx_skip_dispatch); /*proto*/
2659 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_quad(PyObject *, int __pyx_skip_dispatch); /*proto*/
2660 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_norm(PyObject *, int __pyx_skip_dispatch); /*proto*/
2661 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_abs(PyObject *, int __pyx_skip_dispatch); /*proto*/
2662 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_abs(PyObject *, int __pyx_skip_dispatch); /*proto*/
2663 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pow(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
2664 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_outer_pow(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
2665 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_complexifier(PyObject *, int __pyx_skip_dispatch); /*proto*/
2666 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sqrt(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_sqrt *__pyx_optional_args); /*proto*/
2667 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_exp(PyObject *, int __pyx_skip_dispatch); /*proto*/
2668 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_log(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_log *__pyx_optional_args); /*proto*/
2669 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cos(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_cos *__pyx_optional_args); /*proto*/
2670 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_acos(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_acos *__pyx_optional_args); /*proto*/
2671 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cosh(PyObject *, int __pyx_skip_dispatch); /*proto*/
2672 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_acosh(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_acosh *__pyx_optional_args); /*proto*/
2673 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sin(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_sin *__pyx_optional_args); /*proto*/
2674 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_asin(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_asin *__pyx_optional_args); /*proto*/
2675 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sinh(PyObject *, int __pyx_skip_dispatch); /*proto*/
2676 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_asinh(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_asinh *__pyx_optional_args); /*proto*/
2677 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tan(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_tan *__pyx_optional_args); /*proto*/
2678 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_atan(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_atan *__pyx_optional_args); /*proto*/
2679 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tanh(PyObject *, int __pyx_skip_dispatch); /*proto*/
2680 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_atanh(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_atanh *__pyx_optional_args); /*proto*/
2681 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_random_clifford(struct __pyx_obj_8PyClical_index_set *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_random_clifford *__pyx_optional_args); /*proto*/
2682 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3(PyObject *, int __pyx_skip_dispatch); /*proto*/
2683 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3std(PyObject *, int __pyx_skip_dispatch); /*proto*/
2684 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_agc3(PyObject *, int __pyx_skip_dispatch); /*proto*/
2685 static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &); /*proto*/
2686 static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &); /*proto*/
2687 static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &); /*proto*/
2688 static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &); /*proto*/
2689 static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &); /*proto*/
2690 /* #### Code section: typeinfo ### */
2691 /* #### Code section: before_global_var ### */
2692 #define __Pyx_MODULE_NAME "PyClical"
2693 extern int __pyx_module_is_main_PyClical;
2694 int __pyx_module_is_main_PyClical = 0;
2695 
2696 /* Implementation of "PyClical" */
2697 /* #### Code section: global_var ### */
2698 static PyObject *__pyx_builtin_IndexError;
2699 static PyObject *__pyx_builtin_RuntimeError;
2700 static PyObject *__pyx_builtin_TypeError;
2701 static PyObject *__pyx_builtin_ValueError;
2702 static PyObject *__pyx_builtin_NotImplemented;
2703 static PyObject *__pyx_builtin_range;
2704 static PyObject *__pyx_builtin_xrange;
2705 /* #### Code section: string_decls ### */
2706 static const char __pyx_k_[] = ".";
2707 static const char __pyx_k_e[] = "e";
2708 static const char __pyx_k_i[] = "i";
2709 static const char __pyx_k_m[] = "m";
2710 static const char __pyx_k_n[] = "n";
2711 static const char __pyx_k_p[] = "p";
2712 static const char __pyx_k_q[] = "q";
2713 static const char __pyx_k__2[] = " ";
2714 static const char __pyx_k__3[] = ":";
2715 static const char __pyx_k__4[] = "\n\t";
2716 static const char __pyx_k__5[] = " (";
2717 static const char __pyx_k__6[] = ", ";
2718 static const char __pyx_k__7[] = ").";
2719 static const char __pyx_k__9[] = "*";
2720 static const char __pyx_k_cl[] = "cl";
2721 static const char __pyx_k_gc[] = "gc";
2722 static const char __pyx_k_pi[] = "pi";
2723 static const char __pyx_k_abc[] = "abc";
2724 static const char __pyx_k_abs[] = "abs";
2725 static const char __pyx_k_cos[] = "cos";
2726 static const char __pyx_k_err[] = "err";
2727 static const char __pyx_k_exp[] = "exp";
2728 static const char __pyx_k_frm[] = "frm";
2729 static const char __pyx_k_inv[] = "inv";
2730 static const char __pyx_k_ist[] = "ist";
2731 static const char __pyx_k_ixt[] = "ixt";
2732 static const char __pyx_k_lhs[] = "lhs";
2733 static const char __pyx_k_log[] = "log";
2734 static const char __pyx_k_lst[] = "lst";
2735 static const char __pyx_k_max[] = "max";
2736 static const char __pyx_k_min[] = "min";
2737 static const char __pyx_k_obj[] = "obj";
2738 static const char __pyx_k_odd[] = "odd";
2739 static const char __pyx_k_pow[] = "pow";
2740 static const char __pyx_k_rhs[] = "rhs";
2741 static const char __pyx_k_sin[] = "sin";
2742 static const char __pyx_k_tan[] = "tan";
2743 static const char __pyx_k_tau[] = "tau";
2744 static const char __pyx_k_tol[] = "tol";
2745 static const char __pyx_k_vec[] = "vec";
2746 static const char __pyx_k_Real[] = "Real";
2747 static const char __pyx_k__113[] = "?";
2748 static const char __pyx_k_acos[] = "acos";
2749 static const char __pyx_k_agc3[] = "agc3";
2750 static const char __pyx_k_args[] = "args";
2751 static const char __pyx_k_asin[] = "asin";
2752 static const char __pyx_k_atan[] = "atan";
2753 static const char __pyx_k_cga3[] = "cga3";
2754 static const char __pyx_k_conj[] = "conj";
2755 static const char __pyx_k_copy[] = "copy";
2756 static const char __pyx_k_cosh[] = "cosh";
2757 static const char __pyx_k_even[] = "even";
2758 static const char __pyx_k_fill[] = "fill";
2759 static const char __pyx_k_from[] = " from ";
2760 static const char __pyx_k_imag[] = "imag";
2761 static const char __pyx_k_iter[] = "__iter__";
2762 static const char __pyx_k_main[] = "__main__";
2763 static const char __pyx_k_math[] = "math";
2764 static const char __pyx_k_name[] = "__name__";
2765 static const char __pyx_k_norm[] = "norm";
2766 static const char __pyx_k_pure[] = "pure";
2767 static const char __pyx_k_quad[] = "quad";
2768 static const char __pyx_k_real[] = "real";
2769 static const char __pyx_k_self[] = "self";
2770 static const char __pyx_k_send[] = "send";
2771 static const char __pyx_k_sinh[] = "sinh";
2772 static const char __pyx_k_spec[] = "__spec__";
2773 static const char __pyx_k_sqrt[] = "sqrt";
2774 static const char __pyx_k_tanh[] = "tanh";
2775 static const char __pyx_k_test[] = "_test";
2776 static const char __pyx_k_UTF_8[] = "UTF-8";
2777 static const char __pyx_k_acosh[] = "acosh";
2778 static const char __pyx_k_asinh[] = "asinh";
2779 static const char __pyx_k_atanh[] = "atanh";
2780 static const char __pyx_k_close[] = "close";
2781 static const char __pyx_k_count[] = "count";
2782 static const char __pyx_k_frame[] = "frame";
2783 static const char __pyx_k_grade[] = "grade";
2784 static const char __pyx_k_isinf[] = "isinf";
2785 static const char __pyx_k_isnan[] = "isnan";
2786 static const char __pyx_k_istpq[] = "istpq";
2787 static const char __pyx_k_limit[] = "limit";
2788 static const char __pyx_k_nbar3[] = "nbar3";
2789 static const char __pyx_k_ninf3[] = "ninf3";
2790 static const char __pyx_k_other[] = "other";
2791 static const char __pyx_k_range[] = "range";
2792 static const char __pyx_k_throw[] = "throw";
2793 static const char __pyx_k_using[] = " using (";
2794 static const char __pyx_k_utf_8[] = "utf-8";
2795 static const char __pyx_k_value[] = " value ";
2796 static const char __pyx_k_enable[] = "enable";
2797 static const char __pyx_k_encode[] = "encode";
2798 static const char __pyx_k_import[] = "__import__";
2799 static const char __pyx_k_reduce[] = "__reduce__";
2800 static const char __pyx_k_result[] = "result";
2801 static const char __pyx_k_scalar[] = "scalar";
2802 static const char __pyx_k_test_2[] = "__test__";
2803 static const char __pyx_k_xrange[] = "xrange";
2804 static const char __pyx_k_cga3std[] = "cga3std";
2805 static const char __pyx_k_compare[] = "compare";
2806 static const char __pyx_k_disable[] = "disable";
2807 static const char __pyx_k_doctest[] = "doctest";
2808 static const char __pyx_k_hash_fn[] = "hash_fn";
2809 static const char __pyx_k_invalid[] = " invalid ";
2810 static const char __pyx_k_max_abs[] = "max_abs";
2811 static const char __pyx_k_max_pos[] = "max_pos";
2812 static const char __pyx_k_min_neg[] = "min_neg";
2813 static const char __pyx_k_numbers[] = "numbers";
2814 static const char __pyx_k_reframe[] = "reframe";
2815 static const char __pyx_k_reverse[] = "reverse";
2816 static const char __pyx_k_testmod[] = "testmod";
2817 static const char __pyx_k_version[] = "__version__";
2818 static const char __pyx_k_Integral[] = "Integral";
2819 static const char __pyx_k_PyClical[] = "PyClical";
2820 static const char __pyx_k_Sequence[] = "Sequence";
2821 static const char __pyx_k_as_frame[] = " as frame:\n\t";
2822 static const char __pyx_k_clifford[] = "clifford";
2823 static const char __pyx_k_getstate[] = "__getstate__";
2824 static const char __pyx_k_involute[] = "involute";
2825 static const char __pyx_k_setstate[] = "__setstate__";
2826 static const char __pyx_k_to_frame[] = " to frame ";
2827 static const char __pyx_k_TypeError[] = "TypeError";
2828 static const char __pyx_k_count_neg[] = "count_neg";
2829 static const char __pyx_k_count_pos[] = "count_pos";
2830 static const char __pyx_k_index_set[] = "index_set";
2831 static const char __pyx_k_isenabled[] = "isenabled";
2832 static const char __pyx_k_outer_pow[] = "outer_pow";
2833 static const char __pyx_k_pyx_state[] = "__pyx_state";
2834 static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
2835 static const char __pyx_k_threshold[] = "threshold";
2836 static const char __pyx_k_truncated[] = "truncated";
2837 static const char __pyx_k_IndexError[] = "IndexError";
2838 static const char __pyx_k_ValueError[] = "ValueError";
2839 static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
2840 static const char __pyx_k_collections[] = "collections";
2841 static const char __pyx_k_e_line_1999[] = "e (line 1999)";
2842 static const char __pyx_k_vector_part[] = "vector_part";
2843 static const char __pyx_k_PyClical_pyx[] = "PyClical.pyx";
2844 static const char __pyx_k_RuntimeError[] = "RuntimeError";
2845 static const char __pyx_k_approx_equal[] = "approx_equal";
2846 static const char __pyx_k_clifford_abs[] = "clifford.abs";
2847 static const char __pyx_k_clifford_inv[] = "clifford.inv";
2848 static const char __pyx_k_clifford_odd[] = "clifford.odd";
2849 static const char __pyx_k_clifford_pow[] = "clifford.pow";
2850 static const char __pyx_k_complexifier[] = "complexifier";
2851 static const char __pyx_k_initializing[] = "_initializing";
2852 static const char __pyx_k_is_coroutine[] = "_is_coroutine";
2853 static const char __pyx_k_sign_of_mult[] = "sign_of_mult";
2854 static const char __pyx_k_stringsource[] = "<stringsource>";
2855 static const char __pyx_k_abs_line_1585[] = "abs (line 1585)";
2856 static const char __pyx_k_clifford_conj[] = "clifford.conj";
2857 static const char __pyx_k_clifford_copy[] = "clifford.copy";
2858 static const char __pyx_k_clifford_even[] = "clifford.even";
2859 static const char __pyx_k_clifford_norm[] = "clifford.norm";
2860 static const char __pyx_k_clifford_pure[] = "clifford.pure";
2861 static const char __pyx_k_clifford_quad[] = "clifford.quad";
2862 static const char __pyx_k_cos_line_1714[] = "cos (line 1714)";
2863 static const char __pyx_k_error_squared[] = "error_squared";
2864 static const char __pyx_k_exp_line_1677[] = "exp (line 1677)";
2865 static const char __pyx_k_index_set_max[] = "index_set.max";
2866 static const char __pyx_k_index_set_min[] = "index_set.min";
2867 static const char __pyx_k_inv_line_1441[] = "inv (line 1441)";
2868 static const char __pyx_k_log_line_1691[] = "log (line 1691)";
2869 static const char __pyx_k_odd_line_1509[] = "odd (line 1509)";
2870 static const char __pyx_k_pow_line_1606[] = "pow (line 1606)";
2871 static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
2872 static const char __pyx_k_sin_line_1791[] = "sin (line 1791)";
2873 static const char __pyx_k_tan_line_1864[] = "tan (line 1864)";
2874 static const char __pyx_k_using_invalid[] = " using invalid ";
2875 static const char __pyx_k_Cannot_reframe[] = "Cannot reframe";
2876 static const char __pyx_k_NotImplemented[] = "NotImplemented";
2877 static const char __pyx_k_Not_applicable[] = "Not applicable.";
2878 static const char __pyx_k_acos_line_1731[] = "acos (line 1731)";
2879 static const char __pyx_k_agc3_line_1956[] = "agc3 (line 1956)";
2880 static const char __pyx_k_asin_line_1810[] = "asin (line 1810)";
2881 static const char __pyx_k_atan_line_1881[] = "atan (line 1881)";
2882 static const char __pyx_k_cga3_line_1936[] = "cga3 (line 1936)";
2883 static const char __pyx_k_clifford_frame[] = "clifford.frame";
2884 static const char __pyx_k_clifford_isinf[] = "clifford.isinf";
2885 static const char __pyx_k_clifford_isnan[] = "clifford.isnan";
2886 static const char __pyx_k_conj_line_1548[] = "conj (line 1548)";
2887 static const char __pyx_k_cosh_line_1752[] = "cosh (line 1752)";
2888 static const char __pyx_k_even_line_1500[] = "even (line 1500)";
2889 static const char __pyx_k_imag_line_1478[] = "imag (line 1478)";
2890 static const char __pyx_k_index_set_copy[] = "index_set.copy";
2891 static const char __pyx_k_invalid_string[] = " invalid string ";
2892 static const char __pyx_k_norm_line_1574[] = "norm (line 1574)";
2893 static const char __pyx_k_pure_line_1489[] = "pure (line 1489)";
2894 static const char __pyx_k_quad_line_1563[] = "quad (line 1563)";
2895 static const char __pyx_k_real_line_1467[] = "real (line 1467)";
2896 static const char __pyx_k_scalar_epsilon[] = "scalar_epsilon";
2897 static const char __pyx_k_sign_of_square[] = "sign_of_square";
2898 static const char __pyx_k_sinh_line_1831[] = "sinh (line 1831)";
2899 static const char __pyx_k_sqrt_line_1654[] = "sqrt (line 1654)";
2900 static const char __pyx_k_tanh_line_1898[] = "tanh (line 1898)";
2901 static const char __pyx_k_acosh_line_1768[] = "acosh (line 1768)";
2902 static const char __pyx_k_asinh_line_1845[] = "asinh (line 1845)";
2903 static const char __pyx_k_atanh_line_1910[] = "atanh (line 1910)";
2904 static const char __pyx_k_clifford_scalar[] = "clifford.scalar";
2905 static const char __pyx_k_index_set_count[] = "index_set.count";
2906 static const char __pyx_k_istpq_line_2012[] = "istpq (line 2012)";
2907 static const char __pyx_k_random_clifford[] = "random_clifford";
2908 static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
2909 static const char __pyx_k_clifford_max_abs[] = "clifford.max_abs";
2910 static const char __pyx_k_clifford_reframe[] = "clifford.reframe";
2911 static const char __pyx_k_clifford_reverse[] = "clifford.reverse";
2912 static const char __pyx_k_compare_line_492[] = "compare (line 492)";
2913 static const char __pyx_k_error_msg_prefix[] = "error_msg_prefix";
2914 static const char __pyx_k_index_set___iter[] = "index_set.__iter__";
2915 static const char __pyx_k_max_pos_line_513[] = "max_pos (line 513)";
2916 static const char __pyx_k_min_neg_line_504[] = "min_neg (line 504)";
2917 static const char __pyx_k_scalar_line_1456[] = "scalar (line 1456)";
2918 static const char __pyx_k_cga3std_line_1945[] = "cga3std (line 1945)";
2919 static const char __pyx_k_clifford_involute[] = "clifford.involute";
2920 static const char __pyx_k_error_squared_tol[] = "error_squared_tol";
2921 static const char __pyx_k_index_set_hash_fn[] = "index_set.hash_fn";
2922 static const char __pyx_k_max_abs_line_1594[] = "max_abs (line 1594)";
2923 static const char __pyx_k_reverse_line_1533[] = "reverse (line 1533)";
2924 static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
2925 static const char __pyx_k_clifford_outer_pow[] = "clifford.outer_pow";
2926 static const char __pyx_k_clifford_truncated[] = "clifford.truncated";
2927 static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
2928 static const char __pyx_k_involute_line_1518[] = "involute (line 1518)";
2929 static const char __pyx_k_index_set_count_neg[] = "index_set.count_neg";
2930 static const char __pyx_k_index_set_count_pos[] = "index_set.count_pos";
2931 static const char __pyx_k_outer_pow_line_1630[] = "outer_pow (line 1630)";
2932 static const char __pyx_k_clifford_vector_part[] = "clifford.vector_part";
2933 static const char __pyx_k_clifford_inv_line_989[] = "clifford.inv (line 989)";
2934 static const char __pyx_k_approx_equal_line_1422[] = "approx_equal (line 1422)";
2935 static const char __pyx_k_clifford_abs_line_1238[] = "clifford.abs (line 1238)";
2936 static const char __pyx_k_clifford_copy_line_556[] = "clifford.copy (line 556)";
2937 static const char __pyx_k_clifford_odd_line_1133[] = "clifford.odd (line 1133)";
2938 static const char __pyx_k_clifford_pow_line_1043[] = "clifford.pow (line 1043)";
2939 static const char __pyx_k_complexifier_line_1639[] = "complexifier (line 1639)";
2940 static const char __pyx_k_index_set_copy_line_65[] = "index_set.copy (line 65)";
2941 static const char __pyx_k_index_set_max_line_351[] = "index_set.max (line 351)";
2942 static const char __pyx_k_index_set_min_line_342[] = "index_set.min (line 342)";
2943 static const char __pyx_k_index_set_sign_of_mult[] = "index_set.sign_of_mult";
2944 static const char __pyx_k_clifford_conj_line_1201[] = "clifford.conj (line 1201)";
2945 static const char __pyx_k_clifford_even_line_1124[] = "clifford.even (line 1124)";
2946 static const char __pyx_k_clifford_norm_line_1227[] = "clifford.norm (line 1227)";
2947 static const char __pyx_k_clifford_pure_line_1113[] = "clifford.pure (line 1113)";
2948 static const char __pyx_k_clifford_quad_line_1216[] = "clifford.quad (line 1216)";
2949 static const char __pyx_k_error_squared_line_1409[] = "error_squared (line 1409)";
2950 static const char __pyx_k_Unary_print_clifford_1_1[] = "\n Unary -.\n\n >>> print(-clifford(\"{1}\"))\n -{1}\n ";
2951 static const char __pyx_k_clifford___reduce_cython[] = "clifford.__reduce_cython__";
2952 static const char __pyx_k_clifford_frame_line_1287[] = "clifford.frame (line 1287)";
2953 static const char __pyx_k_clifford_hidden_doctests[] = "clifford_hidden_doctests";
2954 static const char __pyx_k_clifford_isinf_line_1269[] = "clifford.isinf (line 1269)";
2955 static const char __pyx_k_clifford_isnan_line_1278[] = "clifford.isnan (line 1278)";
2956 static const char __pyx_k_index_set_count_line_315[] = "index_set.count (line 315)";
2957 static const char __pyx_k_index_set_sign_of_square[] = "index_set.sign_of_square";
2958 static const char __pyx_k_clifford___add___line_740[] = "clifford.__add__ (line 740)";
2959 static const char __pyx_k_clifford___and___line_872[] = "clifford.__and__ (line 872)";
2960 static const char __pyx_k_clifford___mod___line_833[] = "clifford.__mod__ (line 833)";
2961 static const char __pyx_k_clifford___mul___line_798[] = "clifford.__mul__ (line 798)";
2962 static const char __pyx_k_clifford___neg___line_722[] = "clifford.__neg__ (line 722)";
2963 static const char __pyx_k_clifford___or___line_1002[] = "clifford.__or__ (line 1002)";
2964 static const char __pyx_k_clifford___pos___line_731[] = "clifford.__pos__ (line 731)";
2965 static const char __pyx_k_clifford___sub___line_769[] = "clifford.__sub__ (line 769)";
2966 static const char __pyx_k_clifford___xor___line_911[] = "clifford.__xor__ (line 911)";
2967 static const char __pyx_k_clifford_reframe_line_649[] = "clifford.reframe (line 649)";
2968 static const char __pyx_k_clifford_scalar_line_1102[] = "clifford.scalar (line 1102)";
2969 static const char __pyx_k_index_set___or___line_293[] = "index_set.__or__ (line 293)";
2970 static const char __pyx_k_index_set___reduce_cython[] = "index_set.__reduce_cython__";
2971 static const char __pyx_k_index_set_hidden_doctests[] = "index_set_hidden_doctests";
2972 static const char __pyx_k_random_clifford_line_1927[] = "random_clifford (line 1927)";
2973 static const char __pyx_k_Cannot_take_vector_part_of[] = "Cannot take vector part of ";
2974 static const char __pyx_k_Unary_print_clifford_1_1_2[] = "\n Unary +.\n\n >>> print(+clifford(\"{1}\"))\n {1}\n ";
2975 static const char __pyx_k_clifford___iadd___line_760[] = "clifford.__iadd__ (line 760)";
2976 static const char __pyx_k_clifford___iand___line_896[] = "clifford.__iand__ (line 896)";
2977 static const char __pyx_k_clifford___idiv___line_974[] = "clifford.__idiv__ (line 974)";
2978 static const char __pyx_k_clifford___imod___line_857[] = "clifford.__imod__ (line 857)";
2979 static const char __pyx_k_clifford___imul___line_820[] = "clifford.__imul__ (line 820)";
2980 static const char __pyx_k_clifford___ior___line_1013[] = "clifford.__ior__ (line 1013)";
2981 static const char __pyx_k_clifford___isub___line_789[] = "clifford.__isub__ (line 789)";
2982 static const char __pyx_k_clifford___iter___line_638[] = "clifford.__iter__ (line 638)";
2983 static const char __pyx_k_clifford___ixor___line_935[] = "clifford.__ixor__ (line 935)";
2984 static const char __pyx_k_clifford___pow___line_1024[] = "clifford.__pow__ (line 1024)";
2985 static const char __pyx_k_clifford___radd___line_751[] = "clifford.__radd__ (line 751)";
2986 static const char __pyx_k_clifford___rand___line_887[] = "clifford.__rand__ (line 887)";
2987 static const char __pyx_k_clifford___rmod___line_848[] = "clifford.__rmod__ (line 848)";
2988 static const char __pyx_k_clifford___rmul___line_811[] = "clifford.__rmul__ (line 811)";
2989 static const char __pyx_k_clifford___rsub___line_780[] = "clifford.__rsub__ (line 780)";
2990 static const char __pyx_k_clifford___rxor___line_926[] = "clifford.__rxor__ (line 926)";
2991 static const char __pyx_k_clifford___setstate_cython[] = "clifford.__setstate_cython__";
2992 static const char __pyx_k_clifford___str___line_1307[] = "clifford.__str__ (line 1307)";
2993 static const char __pyx_k_clifford_max_abs_line_1247[] = "clifford.max_abs (line 1247)";
2994 static const char __pyx_k_clifford_reverse_line_1186[] = "clifford.reverse (line 1186)";
2995 static const char __pyx_k_index_set___and___line_271[] = "index_set.__and__ (line 271)";
2996 static const char __pyx_k_index_set___ior___line_304[] = "index_set.__ior__ (line 304)";
2997 static const char __pyx_k_index_set___str___line_395[] = "index_set.__str__ (line 395)";
2998 static const char __pyx_k_index_set___xor___line_249[] = "index_set.__xor__ (line 249)";
2999 static const char __pyx_k_clifford___call___line_1083[] = "clifford.__call__ (line 1083)";
3000 static const char __pyx_k_clifford___repr___line_1298[] = "clifford.__repr__ (line 1298)";
3001 static const char __pyx_k_clifford_involute_line_1170[] = "clifford.involute (line 1170)";
3002 static const char __pyx_k_error_squared_tol_line_1400[] = "error_squared_tol (line 1400)";
3003 static const char __pyx_k_index_set___iand___line_282[] = "index_set.__iand__ (line 282)";
3004 static const char __pyx_k_index_set___iter___line_229[] = "index_set.__iter__ (line 229)";
3005 static const char __pyx_k_index_set___ixor___line_260[] = "index_set.__ixor__ (line 260)";
3006 static const char __pyx_k_index_set___repr___line_384[] = "index_set.__repr__ (line 384)";
3007 static const char __pyx_k_index_set___setstate_cython[] = "index_set.__setstate_cython__";
3008 static const char __pyx_k_clifford_outer_pow_line_1067[] = "clifford.outer_pow (line 1067)";
3009 static const char __pyx_k_clifford_truncated_line_1258[] = "clifford.truncated (line 1258)";
3010 static const char __pyx_k_index_set_count_neg_line_324[] = "index_set.count_neg (line 324)";
3011 static const char __pyx_k_index_set_count_pos_line_333[] = "index_set.count_pos (line 333)";
3012 static const char __pyx_k_clifford___getitem___line_707[] = "clifford.__getitem__ (line 707)";
3013 static const char __pyx_k_clifford___truediv___line_950[] = "clifford.__truediv__ (line 950)";
3014 static const char __pyx_k_index_set___invert___line_240[] = "index_set.__invert__ (line 240)";
3015 static const char __pyx_k_Abbreviation_for_index_set_q_p[] = "\n Abbreviation for index_set({-q,...p}).\n\n >>> print(istpq(2,3))\n {-3,-2,-1,1,2}\n ";
3016 static const char __pyx_k_Conjugation_reverse_o_involute[] = "\n Conjugation, reverse o involute == involute o reverse.\n\n >>> print((clifford(\"{1}\")).conj())\n -{1}\n >>> print((clifford(\"{2}\") * clifford(\"{1}\")).conj())\n {1,2}\n >>> print((clifford(\"{1}\") * clifford(\"{2}\")).conj())\n -{1,2}\n >>> print(clifford(\"1+{1}+{1,2}\").conj())\n 1-{1}-{1,2}\n ";
3017 static const char __pyx_k_Contraction_print_2_clifford_2[] = "\n Contraction.\n\n >>> print(2 % clifford(\"{2}\"))\n 2{2}\n ";
3018 static const char __pyx_k_Geometric_product_x_clifford_2[] = "\n Geometric product.\n\n >>> x = clifford(2); x *= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x *= clifford(\"{2}\"); print(x)\n {1,2}\n >>> x = clifford(\"{1}\"); x *= clifford(\"{1,2}\"); print(x)\n {2}\n ";
3019 static const char __pyx_k_Geometric_sum_print_1_clifford[] = "\n Geometric sum.\n\n >>> print(1 + clifford(\"{2}\"))\n 1+{2}\n ";
3020 static const char __pyx_k_Geometric_sum_print_clifford_1[] = "\n Geometric sum.\n\n >>> print(clifford(1) + clifford(\"{2}\"))\n 1+{2}\n >>> print(clifford(\"{1}\") + clifford(\"{2}\"))\n {1}+{2}\n ";
3021 static const char __pyx_k_Hyperbolic_sine_of_multivector[] = "\n Hyperbolic sine of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/2; print(sinh(x))\n {1,2}\n >>> x=clifford(\"{1,2}\") * pi/6; print(sinh(x))\n 0.5{1,2}\n ";
3022 static const char __pyx_k_Inner_product_print_2_clifford[] = "\n Inner product.\n\n >>> print(2 & clifford(\"{2}\"))\n 0\n ";
3023 static const char __pyx_k_Inner_product_print_clifford_1[] = "\n Inner product.\n\n >>> print(clifford(\"{1}\") & clifford(\"{2}\"))\n 0\n >>> print(clifford(2) & clifford(\"{2}\"))\n 0\n >>> print(clifford(\"{1}\") & clifford(\"{1}\"))\n 1\n >>> print(clifford(\"{1}\") & clifford(\"{1,2}\"))\n {2}\n ";
3024 static const char __pyx_k_Inverse_tangent_of_multivector[] = "\n Inverse tangent of multivector with optional complexifier.\n\n >>> s=index_set({1,2,3}); x=clifford(\"{1}\"); print(tan(atan(x,s),s))\n {1}\n >>> x=clifford(\"{1}\"); print(tan(atan(x)))\n {1}\n ";
3025 static const char __pyx_k_Iterate_over_the_indices_of_an[] = "\n Iterate over the indices of an index_set.\n\n >>> for i in index_set({-3,4,7}):print(i, end=\",\")\n -3,4,7,\n ";
3026 static const char __pyx_k_Maximum_member_index_set_1_1_2[] = "\n Maximum member.\n\n >>> index_set({-1,1,2}).max()\n 2\n ";
3027 static const char __pyx_k_Maximum_positive_index_or_0_if[] = "\n Maximum positive index, or 0 if none.\n\n >>> max_pos(index_set({1,2}))\n 2\n ";
3028 static const char __pyx_k_Minimum_member_index_set_1_1_2[] = "\n Minimum member.\n\n >>> index_set({-1,1,2}).min()\n -1\n ";
3029 static const char __pyx_k_Minimum_negative_index_or_0_if[] = "\n Minimum negative index, or 0 if none.\n\n >>> min_neg(index_set({1,2}))\n 0\n ";
3030 static const char __pyx_k_Odd_part_of_multivector_sum_of[] = "\n Odd part of multivector, sum of odd grade terms.\n\n >>> print(clifford(\"1+{1}+{1,2}\").odd())\n {1}\n ";
3031 static const char __pyx_k_Outer_product_power_x_clifford[] = "\n Outer product power.\n\n >>> x=clifford(\"2+{1}\"); print(x.outer_pow(0))\n 1\n >>> x=clifford(\"2+{1}\"); print(x.outer_pow(1))\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(x.outer_pow(2))\n 4+4{1}\n >>> print(clifford(\"1+{1}+{1,2}\").outer_pow(3))\n 1+3{1}+3{1,2}\n\n ";
3032 static const char __pyx_k_Outer_product_print_2_clifford[] = "\n Outer product.\n\n >>> print(2 ^ clifford(\"{2}\"))\n 2{2}\n ";
3033 static const char __pyx_k_Outer_product_print_clifford_1[] = "\n Outer product.\n\n >>> print(clifford(\"{1}\") ^ clifford(\"{2}\"))\n {1,2}\n >>> print(clifford(2) ^ clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") ^ clifford(\"{1}\"))\n 0\n >>> print(clifford(\"{1}\") ^ clifford(\"{1,2}\"))\n 0\n ";
3034 static const char __pyx_k_Power_self_to_the_m_x_clifford[] = "\n Power: self to the m.\n\n >>> x=clifford(\"{1}\"); print(x ** 2)\n 1\n >>> x=clifford(\"2\"); print(x ** 2)\n 4\n >>> x=clifford(\"2+{1}\"); print(x ** 0)\n 1\n >>> x=clifford(\"2+{1}\"); print(x ** 1)\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(x ** 2)\n 5+4{1}\n >>> i=clifford(\"{1,2}\"); print(exp(pi/2) * (i ** i))\n 1\n ";
3035 static const char __pyx_k_Pure_part_print_clifford_1_1_1[] = "\n Pure part.\n\n >>> print(clifford(\"1+{1}+{1,2}\").pure())\n {1}+{1,2}\n >>> print(clifford(\"{1,2}\").pure())\n {1,2}\n ";
3036 static const char __pyx_k_Quadratic_form_rev_x_x_0_print[] = "\n Quadratic form == (rev(x)*x)(0).\n\n >>> print(clifford(\"1+{1}+{1,2}\").quad())\n 3.0\n >>> print(clifford(\"1+{-1}+{1,2}+{1,2,3}\").quad())\n 2.0\n ";
3037 static const char __pyx_k_Quadratic_norm_error_tolerance[] = "\n Quadratic norm error tolerance relative to a specific multivector.\n\n >>> print(error_squared_tol(clifford(\"{1}\")) * 3.0 - error_squared_tol(clifford(\"1{1}-2{2}+3{3}\")))\n 0.0\n ";
3038 static const char __pyx_k_Set_complement_not_print_index[] = "\n Set complement: not.\n\n >>> print(~index_set({-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}))\n {-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32}\n ";
3039 static const char __pyx_k_Set_union_or_print_index_set_1[] = "\n Set union: or.\n\n >>> print(index_set({1}) | index_set({2}))\n {1,2}\n >>> print(index_set({1,2}) | index_set({2}))\n {1,2}\n ";
3040 static const char __pyx_k_Transform_left_hand_side_using[] = "\n Transform left hand side, using right hand side as a transformation.\n\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); print(y|x)\n -{1}\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); print(y|exp(x))\n -{1}\n ";
3041 static const char __pyx_k_clifford___rtruediv___line_965[] = "clifford.__rtruediv__ (line 965)";
3042 static const char __pyx_k_clifford_vector_part_line_1142[] = "clifford.vector_part (line 1142)";
3043 static const char __pyx_k_index_set___getitem___line_191[] = "index_set.__getitem__ (line 191)";
3044 static const char __pyx_k_index_set___setitem___line_179[] = "index_set.__setitem__ (line 179)";
3045 static const char __pyx_k_lexicographic_compare_eg_3_4_5[] = "\n \"lexicographic compare\" eg. {3,4,5} is less than {3,7,8};\n -1 if a<b, +1 if a>b, 0 if a==b.\n\n >>> compare(index_set({1,2}),index_set({-1,3}))\n -1\n >>> compare(index_set({-1,4}),index_set({-1,3}))\n 1\n ";
3046 static const char __pyx_k_Abbreviation_for_clifford_index[] = "\n Abbreviation for clifford(index_set(obj)).\n\n >>> print(e(1))\n {1}\n >>> print(e(-1))\n {-1}\n >>> print(e(0))\n 1\n ";
3047 static const char __pyx_k_Absolute_value_of_multivector_m[] = "\n Absolute value of multivector: multivector 2-norm.\n\n >>> abs(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 2.0\n ";
3048 static const char __pyx_k_Absolute_value_square_root_of_n[] = "\n Absolute value: square root of norm.\n\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").abs()\n 2.0\n ";
3049 static const char __pyx_k_Cardinality_Number_of_indices_i[] = "\n Cardinality: Number of indices included in set.\n\n >>> index_set({-1,1,2}).count()\n 3\n ";
3050 static const char __pyx_k_Check_if_a_multivector_contains[] = "\n Check if a multivector contains any infinite values.\n\n >>> clifford().isinf()\n False\n ";
3051 static const char __pyx_k_Contraction_print_clifford_1_cl[] = "\n Contraction.\n\n >>> print(clifford(\"{1}\") % clifford(\"{2}\"))\n 0\n >>> print(clifford(2) % clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") % clifford(\"{1}\"))\n 1\n >>> print(clifford(\"{1}\") % clifford(\"{1,2}\"))\n {2}\n ";
3052 static const char __pyx_k_Contraction_x_clifford_1_x_clif[] = "\n Contraction.\n\n >>> x = clifford(\"{1}\"); x %= clifford(\"{2}\"); print(x)\n 0\n >>> x = clifford(2); x %= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x %= clifford(\"{1}\"); print(x)\n 1\n >>> x = clifford(\"{1}\"); x %= clifford(\"{1,2}\"); print(x)\n {2}\n ";
3053 static const char __pyx_k_Convert_CGA3_null_vector_to_Euc[] = "\n Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.\n\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(agc3(cga3(x)))\n 2{1}+9{2}+{3}\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(agc3(cga3(x))-x)\n 0\n ";
3054 static const char __pyx_k_Convert_CGA3_null_vector_to_sta[] = "\n Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.\n\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(cga3std(cga3(x)))\n 87{-1}+4{1}+18{2}+2{3}+85{4}\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(cga3std(cga3(x))-cga3(x))\n 0\n ";
3055 static const char __pyx_k_Convert_Euclidean_3D_multivecto[] = "\n Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.\n\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(cga3(x))\n 87{-1}+4{1}+18{2}+2{3}+85{4}\n ";
3056 static const char __pyx_k_Copy_this_clifford_object_x_cli[] = "\n Copy this clifford object.\n\n >>> x=clifford(\"1{2}\"); y=x.copy(); print(y)\n {2}\n ";
3057 static const char __pyx_k_Copy_this_index_set_object_s_in[] = "\n Copy this index_set object.\n\n >>> s=index_set(1); t=s.copy(); print(t)\n {1}\n ";
3058 static const char __pyx_k_Cosine_of_multivector_with_opti[] = "\n Cosine of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x),\"{1,2,3}\"))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x)))\n {1,2}\n ";
3059 static const char __pyx_k_Even_part_of_multivector_sum_of[] = "\n Even part of multivector, sum of even grade terms.\n\n >>> print(clifford(\"1+{1}+{1,2}\").even())\n 1+{1,2}\n ";
3060 static const char __pyx_k_Exponential_of_multivector_x_cl[] = "\n Exponential of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/4; print(exp(x))\n 0.7071+0.7071{1,2}\n >>> x=clifford(\"{1,2}\") * pi/2; print(exp(x))\n {1,2}\n ";
3061 static const char __pyx_k_Geometric_difference_print_1_cl[] = "\n Geometric difference.\n\n >>> print(1 - clifford(\"{2}\"))\n 1-{2}\n ";
3062 static const char __pyx_k_Geometric_difference_print_clif[] = "\n Geometric difference.\n\n >>> print(clifford(1) - clifford(\"{2}\"))\n 1-{2}\n >>> print(clifford(\"{1}\") - clifford(\"{2}\"))\n {1}-{2}\n ";
3063 static const char __pyx_k_Geometric_difference_x_clifford[] = "\n Geometric difference.\n\n >>> x = clifford(1); x -= clifford(\"{2}\"); print(x)\n 1-{2}\n ";
3064 static const char __pyx_k_Geometric_multiplicative_invers[] = "\n Geometric multiplicative inverse.\n\n >>> x = clifford(\"{1}\"); print(x.inv())\n {1}\n >>> x = clifford(2); print(x.inv())\n 0.5\n >>> x = clifford(\"{1,2}\"); print(x.inv())\n -{1,2}\n ";
3065 static const char __pyx_k_Geometric_product_print_2_cliff[] = "\n Geometric product.\n\n >>> print(2 * clifford(\"{2}\"))\n 2{2}\n ";
3066 static const char __pyx_k_Geometric_product_print_cliffor[] = "\n Geometric product.\n\n >>> print(clifford(\"{1}\") * clifford(\"{2}\"))\n {1,2}\n >>> print(clifford(2) * clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") * clifford(\"{1,2}\"))\n {2}\n ";
3067 static const char __pyx_k_Geometric_quotient_print_2_clif[] = "\n Geometric quotient.\n\n >>> print(2 / clifford(\"{2}\"))\n 2{2}\n ";
3068 static const char __pyx_k_Geometric_quotient_print_cliffo[] = "\n Geometric quotient.\n\n >>> print(clifford(\"{1}\") / clifford(\"{2}\"))\n {1,2}\n >>> print(clifford(2) / clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") / clifford(\"{1}\"))\n 1\n >>> print(clifford(\"{1}\") / clifford(\"{1,2}\"))\n -{2}\n ";
3069 static const char __pyx_k_Geometric_quotient_x_clifford_1[] = "\n Geometric quotient.\n\n >>> x = clifford(\"{1}\"); x /= clifford(\"{2}\"); print(x)\n {1,2}\n >>> x = clifford(2); x /= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x /= clifford(\"{1}\"); print(x)\n 1\n >>> x = clifford(\"{1}\"); x /= clifford(\"{1,2}\"); print(x)\n -{2}\n ";
3070 static const char __pyx_k_Geometric_sum_x_clifford_1_x_cl[] = "\n Geometric sum.\n\n >>> x = clifford(1); x += clifford(\"{2}\"); print(x)\n 1+{2}\n ";
3071 static const char __pyx_k_Get_the_value_of_an_index_set_o[] = "\n Get the value of an index_set object at an index.\n\n >>> index_set({1})[1]\n True\n >>> index_set({1})[2]\n False\n >>> index_set({2})[-1]\n False\n >>> index_set({2})[1]\n False\n >>> index_set({2})[2]\n True\n >>> index_set({2})[33]\n False\n ";
3072 static const char __pyx_k_Hyperbolic_cosine_of_multivecto[] = "\n Hyperbolic cosine of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi; print(cosh(x))\n -1\n >>> x=clifford(\"{1,2,3}\"); print(cosh(acosh(x)))\n {1,2,3}\n >>> x=clifford(\"{1,2}\"); print(cosh(acosh(x)))\n {1,2}\n ";
3073 static const char __pyx_k_Hyperbolic_tangent_of_multivect[] = "\n Hyperbolic tangent of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/4; print(tanh(x))\n {1,2}\n ";
3074 static const char __pyx_k_Imaginary_part_deprecated_alway[] = "\n Imaginary part: deprecated (always 0).\n\n >>> imag(clifford(\"1+{1}+{1,2}\"))\n 0.0\n >>> imag(clifford(\"{1,2}\"))\n 0.0\n ";
3075 static const char __pyx_k_Inner_product_x_clifford_1_x_cl[] = "\n Inner product.\n\n >>> x = clifford(\"{1}\"); x &= clifford(\"{2}\"); print(x)\n 0\n >>> x = clifford(2); x &= clifford(\"{2}\"); print(x)\n 0\n >>> x = clifford(\"{1}\"); x &= clifford(\"{1}\"); print(x)\n 1\n >>> x = clifford(\"{1}\"); x &= clifford(\"{1,2}\"); print(x)\n {2}\n ";
3076 static const char __pyx_k_Integer_power_of_multivector_ob[] = "\n Integer power of multivector: obj to the m.\n\n >>> x=clifford(\"{1}\"); print(pow(x,2))\n 1\n >>> x=clifford(\"2\"); print(pow(x,2))\n 4\n >>> x=clifford(\"2+{1}\"); print(pow(x,0))\n 1\n >>> x=clifford(\"2+{1}\"); print(pow(x,1))\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(pow(x,2))\n 5+4{1}\n >>> print(pow(clifford(\"1+{1}+{1,2}\"),3))\n 1+3{1}+3{1,2}\n >>> i=clifford(\"{1,2}\"); print(exp(pi/2) * pow(i, i))\n 1\n ";
3077 static const char __pyx_k_Inverse_cosine_of_multivector_w[] = "\n Inverse cosine of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x),\"{1,2,3}\"))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x),\"{-1,1,2,3,4}\"))\n {1,2}\n >>> print(acos(0) / pi)\n 0.5\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x)))\n {1,2}\n ";
3078 static const char __pyx_k_Inverse_hyperbolic_cosine_of_mu[] = "\n Inverse hyperbolic cosine of multivector with optional complexifier.\n\n >>> print(acosh(0,\"{-2,-1,1}\"))\n 1.571{-2,-1,1}\n >>> x=clifford(\"{1,2,3}\"); print(cosh(acosh(x,\"{-1,1,2,3,4}\")))\n {1,2,3}\n >>> print(acosh(0))\n 1.571{-1}\n >>> x=clifford(\"{1,2,3}\"); print(cosh(acosh(x)))\n {1,2,3}\n >>> x=clifford(\"{1,2}\"); print(cosh(acosh(x)))\n {1,2}\n ";
3079 static const char __pyx_k_Inverse_hyperbolic_sine_of_mult[] = "\n Inverse hyperbolic sine of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(asinh(x,\"{1,2,3}\") * 2/pi)\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(asinh(x) * 2/pi)\n {1,2}\n >>> x=clifford(\"{1,2}\") / 2; print(asinh(x) * 6/pi)\n {1,2}\n ";
3080 static const char __pyx_k_Inverse_hyperbolic_tangent_of_m[] = "\n Inverse hyperbolic tangent of multivector with optional complexifier.\n\n >>> s=index_set({1,2,3}); x=clifford(\"{1,2}\"); print(tanh(atanh(x,s)))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(tanh(atanh(x)))\n {1,2}\n ";
3081 static const char __pyx_k_Inverse_sine_of_multivector_wit[] = "\n Inverse sine of multivector with optional complexifier.\n\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),s))\n {-1}\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),\"{-2,-1,1}\"))\n {-1}\n >>> print(asin(1) / pi)\n 0.5\n >>> x=clifford(\"{1,2,3}\"); print(asin(sin(x)))\n {1,2,3}\n ";
3082 static const char __pyx_k_Main_involution_each_i_is_repla[] = "\n Main involution, each {i} is replaced by -{i} in each term,\n eg. clifford(\"{1}\") -> -clifford(\"{1}\").\n\n >>> print(clifford(\"{1}\").involute())\n -{1}\n >>> print((clifford(\"{2}\") * clifford(\"{1}\")).involute())\n -{1,2}\n >>> print((clifford(\"{1}\") * clifford(\"{2}\")).involute())\n {1,2}\n >>> print(clifford(\"1+{1}+{1,2}\").involute())\n 1-{1}+{1,2}\n ";
3083 static const char __pyx_k_Maximum_absolute_value_of_coord[] = "\n Maximum absolute value of coordinates multivector: multivector infinity-norm.\n\n >>> max_abs(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 1.0\n >>> max_abs(clifford(\"3+2{1}+{1,2}\"))\n 3.0\n\n ";
3084 static const char __pyx_k_Maximum_of_absolute_values_of_c[] = "\n Maximum of absolute values of components of multivector: multivector infinity norm.\n\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").max_abs()\n 1.0\n >>> clifford(\"3+2{1}+{1,2}\").max_abs()\n 3.0\n ";
3085 static const char __pyx_k_Natural_logarithm_of_multivecto[] = "\n Natural logarithm of multivector with optional complexifier.\n\n >>> x=clifford(\"{-1}\"); print((log(x,\"{-1}\") * 2/pi))\n {-1}\n >>> x=clifford(\"{1,2}\"); print((log(x,\"{1,2,3}\") * 2/pi))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print((log(x) * 2/pi))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print((log(x,\"{1,2}\") * 2/pi))\n Traceback (most recent call last):\n ...\n RuntimeError: check_complex(val, i): i is not a valid complexifier for val\n ";
3086 static const char __pyx_k_Norm_sum_of_squares_of_coordina[] = "\n Norm == sum of squares of coordinates.\n\n >>> clifford(\"1+{1}+{1,2}\").norm()\n 3.0\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").norm()\n 4.0\n ";
3087 static const char __pyx_k_Not_applicable_for_a_in_cliffor[] = "\n Not applicable.\n\n >>> for a in clifford(index_set({-3,4,7})):print(a, end=\",\")\n Traceback (most recent call last):\n ...\n TypeError: Not applicable.\n ";
3088 static const char __pyx_k_Number_of_negative_indices_incl[] = "\n Number of negative indices included in set.\n\n >>> index_set({-1,1,2}).count_neg()\n 1\n ";
3089 static const char __pyx_k_Number_of_positive_indices_incl[] = "\n Number of positive indices included in set.\n\n >>> index_set({-1,1,2}).count_pos()\n 2\n ";
3090 static const char __pyx_k_Outer_product_power_of_multivec[] = "\n Outer product power of multivector.\n\n >>> print(outer_pow(clifford(\"1+{1}+{1,2}\"),3))\n 1+3{1}+3{1,2}\n ";
3091 static const char __pyx_k_Outer_product_x_clifford_1_x_cl[] = "\n Outer product.\n\n >>> x = clifford(\"{1}\"); x ^= clifford(\"{2}\"); print(x)\n {1,2}\n >>> x = clifford(2); x ^= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x ^= clifford(\"{1}\"); print(x)\n 0\n >>> x = clifford(\"{1}\"); x ^= clifford(\"{1,2}\"); print(x)\n 0\n ";
3092 static const char __pyx_k_Pure_grade_vector_part_print_cl[] = "\n Pure grade-vector part.\n\n >>> print(clifford(\"{1}\")(1))\n {1}\n >>> print(clifford(\"{1}\")(0))\n 0\n >>> print(clifford(\"1+{1}+{1,2}\")(0))\n 1\n >>> print(clifford(\"1+{1}+{1,2}\")(1))\n {1}\n >>> print(clifford(\"1+{1}+{1,2}\")(2))\n {1,2}\n >>> print(clifford(\"1+{1}+{1,2}\")(3))\n 0\n ";
3093 static const char __pyx_k_Pure_part_print_pure_clifford_1[] = "\n Pure part\n\n >>> print(pure(clifford(\"1+{1}+{1,2}\")))\n {1}+{1,2}\n >>> print(pure(clifford(\"{1,2}\")))\n {1,2}\n ";
3094 static const char __pyx_k_Put_self_into_a_larger_frame_co[] = "\n Put self into a larger frame, containing the union of self.frame() and index set ixt.\n This can be used to make multiplication faster, by multiplying within a common frame.\n\n >>> clifford(\"2+3{1}\").reframe(index_set({1,2,3}))\n clifford(\"2+3{1}\")\n >>> s=index_set({1,2,3});t=index_set({-3,-2,-1});x=random_clifford(s); x.reframe(t).frame() == (s|t);\n True\n ";
3095 static const char __pyx_k_Random_multivector_within_a_fra[] = "\n Random multivector within a frame.\n\n >>> print(random_clifford(index_set({-3,-1,2})).frame())\n {-3,-1,2}\n ";
3096 static const char __pyx_k_Real_part_synonym_for_scalar_pa[] = "\n Real part: synonym for scalar part.\n\n >>> real(clifford(\"1+{1}+{1,2}\"))\n 1.0\n >>> real(clifford(\"{1,2}\"))\n 0.0\n ";
3097 static const char __pyx_k_Relative_or_absolute_error_usin[] = "\n Relative or absolute error using the quadratic norm.\n\n >>> err2=scalar_epsilon*scalar_epsilon\n\n >>> print(error_squared(clifford(\"{1}\"), clifford(\"1{1}\"), err2))\n 0.0\n >>> print(error_squared(clifford(\"1{1}-3{2}+4{3}\"), clifford(\"{1}\"), err2))\n 25.0\n ";
3098 static const char __pyx_k_Remove_all_terms_of_self_with_r[] = "\n Remove all terms of self with relative size smaller than limit.\n\n >>> clifford(\"1e8+{1}+1e-8{1,2}\").truncated(1.0e-6)\n clifford(\"100000000\")\n >>> clifford(\"1e4+{1}+1e-4{1,2}\").truncated(1.0e-6)\n clifford(\"10000+{1}\")\n ";
3099 static const char __pyx_k_Reversion_eg_1_2_2_1_print_reve[] = "\n Reversion, eg. {1}*{2} -> {2}*{1}\n\n >>> print(reverse(clifford(\"{1}\")))\n {1}\n >>> print(reverse(clifford(\"{2}\") * clifford(\"{1}\")))\n {1,2}\n >>> print(reverse(clifford(\"{1}\") * clifford(\"{2}\")))\n -{1,2}\n >>> print(reverse(clifford(\"1+{1}+{1,2}\")))\n 1+{1}-{1,2}\n ";
3100 static const char __pyx_k_Reversion_eg_clifford_1_cliffor[] = "\n Reversion, eg. clifford(\"{1}\")*clifford(\"{2}\") -> clifford(\"{2}\")*clifford(\"{1}\").\n\n >>> print(clifford(\"{1}\").reverse())\n {1}\n >>> print((clifford(\"{2}\") * clifford(\"{1}\")).reverse())\n {1,2}\n >>> print((clifford(\"{1}\") * clifford(\"{2}\")).reverse())\n -{1,2}\n >>> print(clifford(\"1+{1}+{1,2}\").reverse())\n 1+{1}-{1,2}\n ";
3101 static const char __pyx_k_Scalar_part_clifford_1_1_1_2_sc[] = "\n Scalar part.\n\n >>> clifford(\"1+{1}+{1,2}\").scalar()\n 1.0\n >>> clifford(\"{1,2}\").scalar()\n 0.0\n ";
3102 static const char __pyx_k_Scalar_part_scalar_clifford_1_1[] = "\n Scalar part.\n\n >>> scalar(clifford(\"1+{1}+{1,2}\"))\n 1.0\n >>> scalar(clifford(\"{1,2}\"))\n 0.0\n ";
3103 static const char __pyx_k_Set_intersection_and_print_inde[] = "\n Set intersection: and.\n\n >>> print(index_set({1}) & index_set({2}))\n {}\n >>> print(index_set({1,2}) & index_set({2}))\n {2}\n ";
3104 static const char __pyx_k_Set_intersection_and_x_index_se[] = "\n Set intersection: and.\n\n >>> x = index_set({1}); x &= index_set({2}); print(x)\n {}\n >>> x = index_set({1,2}); x &= index_set({2}); print(x)\n {2}\n ";
3105 static const char __pyx_k_Set_the_value_of_an_index_set_o[] = "\n Set the value of an index_set object at index idx to value val.\n\n >>> s=index_set({1}); s[2] = True; print(s)\n {1,2}\n >>> s=index_set({1,2}); s[1] = False; print(s)\n {2}\n ";
3106 static const char __pyx_k_Set_union_or_x_index_set_1_x_in[] = "\n Set union: or.\n\n >>> x = index_set({1}); x |= index_set({2}); print(x)\n {1,2}\n >>> x = index_set({1,2}); x |= index_set({2}); print(x)\n {1,2}\n ";
3107 static const char __pyx_k_Sign_of_geometric_product_of_tw[] = "\n Sign of geometric product of two Clifford basis elements.\n\n >>> s = index_set({1,2}); t=index_set({-1}); s.sign_of_mult(t)\n 1\n ";
3108 static const char __pyx_k_Sign_of_geometric_square_of_a_C[] = "\n Sign of geometric square of a Clifford basis element.\n\n >>> s = index_set({1,2}); s.sign_of_square()\n -1\n ";
3109 static const char __pyx_k_Sine_of_multivector_with_option[] = "\n Sine of multivector with optional complexifier.\n\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),s))\n {-1}\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),\"{-2,-1,1}\"))\n {-1}\n >>> x=clifford(\"{1,2,3}\"); print(asin(sin(x)))\n {1,2,3}\n ";
3110 static const char __pyx_k_Square_root_of_1_which_commutes[] = "\n Square root of -1 which commutes with all members of the frame of the given multivector.\n\n >>> print(complexifier(clifford(index_set({1}))))\n {1,2,3}\n >>> print(complexifier(clifford(index_set({-1}))))\n {-1}\n >>> print(complexifier(index_set({1})))\n {1,2,3}\n >>> print(complexifier(index_set({-1})))\n {-1}\n ";
3111 static const char __pyx_k_Square_root_of_multivector_with[] = "\n Square root of multivector with optional complexifier.\n\n >>> print(sqrt(-1))\n {-1}\n >>> print(sqrt(clifford(\"2{-1}\")))\n 1+{-1}\n >>> j=sqrt(-1,complexifier(index_set({1}))); print(j); print(j*j)\n {1,2,3}\n -1\n >>> j=sqrt(-1,\"{1,2,3}\"); print(j); print(j*j)\n {1,2,3}\n -1\n ";
3112 static const char __pyx_k_Subalgebra_generated_by_all_gen[] = "\n Subalgebra generated by all generators of terms of given multivector.\n\n >>> print(clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").frame())\n {-2,-1,1,2,7}\n >>> s=clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").frame(); type(s)\n <class 'PyClical.index_set'>\n ";
3113 static const char __pyx_k_Subscripting_map_from_index_set[] = "\n Subscripting: map from index set to scalar coordinate.\n\n >>> clifford(\"{1}\")[index_set(1)]\n 1.0\n >>> clifford(\"{1}\")[index_set({1})]\n 1.0\n >>> clifford(\"{1}\")[index_set({1,2})]\n 0.0\n >>> clifford(\"2{1,2}\")[index_set({1,2})]\n 2.0\n ";
3114 static const char __pyx_k_Symmetric_set_difference_exclus[] = "\n Symmetric set difference: exclusive or.\n\n >>> print(index_set({1}) ^ index_set({2}))\n {1,2}\n >>> print(index_set({1,2}) ^ index_set({2}))\n {1}\n ";
3115 static const char __pyx_k_Tangent_of_multivector_with_opt[] = "\n Tangent of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(tan(x,\"{1,2,3}\"))\n 0.7616{1,2}\n >>> x=clifford(\"{1,2}\"); print(tan(x))\n 0.7616{1,2}\n ";
3116 static const char __pyx_k_Test_for_approximate_equality_o[] = "\n Test for approximate equality of multivectors.\n\n >>> err2=scalar_epsilon*scalar_epsilon\n\n >>> print(approx_equal(clifford(\"{1}\"), clifford(\"1{1}\")))\n True\n >>> print(approx_equal(clifford(\"1{1}-3{2}+4{3}\"), clifford(\"{1}\")))\n False\n >>> print(approx_equal(clifford(\"1{1}-3{2}+4{3}+0.001\"), clifford(\"1{1}-3{2}+4{3}\"), err2, err2))\n False\n >>> print(approx_equal(clifford(\"1{1}-3{2}+4{3}+1.0e-30\"), clifford(\"1{1}-3{2}+4{3}\"), err2, err2))\n True\n ";
3117 static const char __pyx_k_Tests_for_functions_that_Doctes[] = "\n Tests for functions that Doctest cannot see.\n\n For index_set.__cinit__: Construct index_set.\n\n >>> print(index_set(1))\n {1}\n >>> print(index_set({1,2}))\n {1,2}\n >>> print(index_set(index_set({1,2})))\n {1,2}\n >>> print(index_set({1,2}))\n {1,2}\n >>> print(index_set({1,2,1}))\n {1,2}\n >>> print(index_set({1,2,1}))\n {1,2}\n >>> print(index_set(\"\"))\n {}\n >>> print(index_set(\"{\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize index_set object from invalid string '{'.\n >>> print(index_set(\"{1\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize index_set object from invalid string '{1'.\n >>> print(index_set(\"{1,2,100}\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize index_set object from invalid string '{1,2,100}'.\n >>> print(index_set({1,2,100}))\n Traceback (most recent call last):\n ...\n IndexError: Cannot initialize index_set object from invalid {1, 2, 100}.\n >>> print(index_set([1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize index_set object from <class 'list'>.\n\n For index_set.__richcmp__: Compare two objects of class index_set.\n\n >>> index_set(1) == index_set({1})\n True\n >>> index_set({1}) != index_set({1})\n False\n >>> index_set({1}) != index_set({2})\n True\n >>> index_set({1}) == index_set({2})\n False\n >>> index_set({1}) < index_set({2})\n True\n >>> index_set({1}) <= index_set({2})\n True\n >>> index_set({1}) > index_set({2})\n False\n >>> index_set({1}) >= index_set({2})\n False\n >>> None == index_set({1,2})\n False\n >>> None != index_set({1,2})\n True\n >>> None < index_set({1,2})\n False\n >>> None <= index_set({1,2})\n False\n >>> None > index_set({1,2})\n False\n >>> None >= index_set({1,2})\n False\n >>> ""index_set({1,2}) == None\n False\n >>> index_set({1,2}) != None\n True\n >>> index_set({1,2}) < None\n False\n >>> index_set({1,2}) <= None\n False\n >>> index_set({1,2}) > None\n False\n >>> index_set({1,2}) >= None\n False\n ";
3118  static const char __pyx_k_The_informal_string_representat[] = "\n The \342\200\234informal\342\200\235 string representation of self.\n\n >>> index_set({1,2}).__str__()\n '{1,2}'\n >>> str(index_set({1,2}))\n '{1,2}'\n ";
3119  static const char __pyx_k_The_official_string_representat[] = "\n The \342\200\234official\342\200\235 string representation of self.\n\n >>> index_set({1,2}).__repr__()\n 'index_set({1,2})'\n >>> repr(index_set({1,2}))\n 'index_set({1,2})'\n ";
3120  static const char __pyx_k_This_comparison_operator_is_not[] = "This comparison operator is not implemented for ";
3121  static const char __pyx_k_Vector_part_of_multivector_as_a[] = "\n Vector part of multivector, as a Python list, with respect to frm.\n\n >>> print(clifford(\"1+2{1}+3{2}+4{1,2}\").vector_part())\n [2.0, 3.0]\n >>> print(clifford(\"1+2{1}+3{2}+4{1,2}\").vector_part(index_set({-1,1,2})))\n [0.0, 2.0, 3.0]\n ";
3122  static const char __pyx_k_index_set_sign_of_mult_line_366[] = "index_set.sign_of_mult (line 366)";
3123  static const char __pyx_k_norm_sum_of_squares_of_coordina[] = "\n norm == sum of squares of coordinates.\n\n >>> norm(clifford(\"1+{1}+{1,2}\"))\n 3.0\n >>> norm(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 4.0\n ";
3124  static const char __pyx_k_Cannot_initialize_clifford_objec[] = "Cannot initialize clifford object from";
3125  static const char __pyx_k_Cannot_initialize_index_set_obje[] = "Cannot initialize index_set object from";
3126  static const char __pyx_k_Conjugation_reverse_o_involute_2[] = "\n Conjugation, reverse o involute == involute o reverse.\n\n >>> print(conj(clifford(\"{1}\")))\n -{1}\n >>> print(conj(clifford(\"{2}\") * clifford(\"{1}\")))\n {1,2}\n >>> print(conj(clifford(\"{1}\") * clifford(\"{2}\")))\n -{1,2}\n >>> print(conj(clifford(\"1+{1}+{1,2}\")))\n 1-{1}-{1,2}\n ";
3127  static const char __pyx_k_Odd_part_of_multivector_sum_of_2[] = "\n Odd part of multivector, sum of odd grade terms.\n\n >>> print(odd(clifford(\"1+{1}+{1,2}\")))\n {1}\n ";
3128  static const char __pyx_k_Power_self_to_the_m_x_clifford_2[] = "\n Power: self to the m.\n\n >>> x=clifford(\"{1}\"); print(x.pow(2))\n 1\n >>> x=clifford(\"2\"); print(x.pow(2))\n 4\n >>> x=clifford(\"2+{1}\"); print(x.pow(0))\n 1\n >>> x=clifford(\"2+{1}\"); print(x.pow(1))\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(x.pow(2))\n 5+4{1}\n >>> print(clifford(\"1+{1}+{1,2}\").pow(3))\n 1+3{1}+3{1,2}\n >>> i=clifford(\"{1,2}\"); print(exp(pi/2) * i.pow(i))\n 1\n ";
3129  static const char __pyx_k_Quadratic_form_rev_x_x_0_print_2[] = "\n Quadratic form == (rev(x)*x)(0).\n\n >>> print(quad(clifford(\"1+{1}+{1,2}\")))\n 3.0\n >>> print(quad(clifford(\"1+{-1}+{1,2}+{1,2,3}\")))\n 2.0\n ";
3130  static const char __pyx_k_Transform_left_hand_side_using_2[] = "\n Transform left hand side, using right hand side as a transformation.\n\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); y|=x; print(y)\n -{1}\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); y|=exp(x); print(y)\n -{1}\n ";
3131  static const char __pyx_k_clifford_hidden_doctests_line_13[] = "clifford_hidden_doctests (line 1316)";
3132  static const char __pyx_k_index_set_hidden_doctests_line_4[] = "index_set_hidden_doctests (line 406)";
3133  static const char __pyx_k_index_set_sign_of_square_line_37[] = "index_set.sign_of_square (line 375)";
3134  static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
3135  static const char __pyx_k_Check_if_a_multivector_contains_2[] = "\n Check if a multivector contains any IEEE NaN values.\n\n >>> clifford().isnan()\n False\n ";
3136  static const char __pyx_k_Even_part_of_multivector_sum_of_2[] = "\n Even part of multivector, sum of even grade terms.\n\n >>> print(even(clifford(\"1+{1}+{1,2}\")))\n 1+{1,2}\n ";
3137  static const char __pyx_k_Geometric_multiplicative_invers_2[] = "\n Geometric multiplicative inverse.\n\n >>> print(inv(clifford(\"{1}\")))\n {1}\n >>> print(inv(clifford(\"{-1}\")))\n -{-1}\n >>> print(inv(clifford(\"{-2,-1}\")))\n -{-2,-1}\n >>> print(inv(clifford(\"{-1}+{1}\")))\n nan\n ";
3138  static const char __pyx_k_Main_involution_each_i_is_repla_2[] = "\n Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})\n\n >>> print(involute(clifford(\"{1}\")))\n -{1}\n >>> print(involute(clifford(\"{2}\") * clifford(\"{1}\")))\n -{1,2}\n >>> print(involute(clifford(\"{1}\") * clifford(\"{2}\")))\n {1,2}\n >>> print(involute(clifford(\"1+{1}+{1,2}\")))\n 1-{1}+{1,2}\n ";
3139  static const char __pyx_k_Symmetric_set_difference_exclus_2[] = "\n Symmetric set difference: exclusive or.\n\n >>> x = index_set({1}); x ^= index_set({2}); print(x)\n {1,2}\n >>> x = index_set({1,2}); x ^= index_set({2}); print(x)\n {1}\n ";
3140  static const char __pyx_k_Tests_for_functions_that_Doctes_2[] = "\n Tests for functions that Doctest cannot see.\n\n For clifford.__cinit__: Construct an object of type clifford.\n\n >>> print(clifford(2))\n 2\n >>> print(clifford(2.0))\n 2\n >>> print(clifford(1.0e-1))\n 0.1\n >>> print(clifford(\"2\"))\n 2\n >>> print(clifford(\"2{1,2,3}\"))\n 2{1,2,3}\n >>> print(clifford(clifford(\"2{1,2,3}\")))\n 2{1,2,3}\n >>> print(clifford(\"-{1}\"))\n -{1}\n >>> print(clifford(2,index_set({1,2})))\n 2{1,2}\n >>> print(clifford([2,3],index_set({1,2})))\n 2{1}+3{2}\n >>> print(clifford([1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from <class 'list'>.\n >>> print(clifford(None))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from <class 'NoneType'>.\n >>> print(clifford(None,[1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<class 'NoneType'>, <class 'list'>).\n >>> print(clifford([1,2],[1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<class 'list'>, <class 'list'>).\n >>> print(clifford(\"\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string ''.\n >>> print(clifford(\"{\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '{'.\n >>> print(clifford(\"{1\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '{1'.\n >>> print(clifford(\"+\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '+'.\n >>> print(clifford(\"-\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object fro""m invalid string '-'.\n >>> print(clifford(\"{1}+\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '{1}+'.\n\n For clifford.__richcmp__: Compare objects of type clifford.\n\n >>> clifford(\"{1}\") == clifford(\"1{1}\")\n True\n >>> clifford(\"{1}\") != clifford(\"1.0{1}\")\n False\n >>> clifford(\"{1}\") != clifford(\"1.0\")\n True\n >>> clifford(\"{1,2}\") == None\n False\n >>> clifford(\"{1,2}\") != None\n True\n >>> None == clifford(\"{1,2}\")\n False\n >>> None != clifford(\"{1,2}\")\n True\n ";
3141  static const char __pyx_k_The_informal_string_representat_2[] = "\n The \342\200\234informal\342\200\235 string representation of self.\n\n >>> clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").__str__()\n '1+3{-1}+2{1,2}+4{-2,7}'\n ";
3142  static const char __pyx_k_The_official_string_representat_2[] = "\n The \342\200\234official\342\200\235 string representation of self.\n\n >>> clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").__repr__()\n 'clifford(\"1+3{-1}+2{1,2}+4{-2,7}\")'\n ";
3143 /* #### Code section: decls ### */
3144 static PyObject *__pyx_pf_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3145 static int __pyx_pf_8PyClical_9index_set_2__cinit__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
3146 static void __pyx_pf_8PyClical_9index_set_4__dealloc__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3147 static PyObject *__pyx_pf_8PyClical_9index_set_6__richcmp__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /* proto */
3148 static int __pyx_pf_8PyClical_9index_set_8__setitem__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_val); /* proto */
3149 static PyObject *__pyx_pf_8PyClical_9index_set_10__getitem__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
3150 static int __pyx_pf_8PyClical_9index_set_12__contains__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
3151 static PyObject *__pyx_pf_8PyClical_9index_set_14__iter__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3152 static PyObject *__pyx_pf_8PyClical_9index_set_17__invert__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3153 static PyObject *__pyx_pf_8PyClical_9index_set_19__xor__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3154 static PyObject *__pyx_pf_8PyClical_9index_set_21__ixor__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3155 static PyObject *__pyx_pf_8PyClical_9index_set_23__and__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3156 static PyObject *__pyx_pf_8PyClical_9index_set_25__iand__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3157 static PyObject *__pyx_pf_8PyClical_9index_set_27__or__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3158 static PyObject *__pyx_pf_8PyClical_9index_set_29__ior__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3159 static PyObject *__pyx_pf_8PyClical_9index_set_31count(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3160 static PyObject *__pyx_pf_8PyClical_9index_set_33count_neg(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3161 static PyObject *__pyx_pf_8PyClical_9index_set_35count_pos(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3162 static PyObject *__pyx_pf_8PyClical_9index_set_37min(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3163 static PyObject *__pyx_pf_8PyClical_9index_set_39max(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3164 static PyObject *__pyx_pf_8PyClical_9index_set_41hash_fn(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3165 static PyObject *__pyx_pf_8PyClical_9index_set_43sign_of_mult(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3166 static PyObject *__pyx_pf_8PyClical_9index_set_45sign_of_square(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3167 static PyObject *__pyx_pf_8PyClical_9index_set_47__repr__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3168 static PyObject *__pyx_pf_8PyClical_9index_set_49__str__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3169 static PyObject *__pyx_pf_8PyClical_9index_set_51__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
3170 static PyObject *__pyx_pf_8PyClical_9index_set_53__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_index_set *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3171 static PyObject *__pyx_pf_8PyClical_index_set_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
3172 static PyObject *__pyx_pf_8PyClical_2compare(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3173 static PyObject *__pyx_pf_8PyClical_4min_neg(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3174 static PyObject *__pyx_pf_8PyClical_6max_pos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3175 static PyObject *__pyx_pf_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3176 static int __pyx_pf_8PyClical_8clifford_2__cinit__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_ixt); /* proto */
3177 static void __pyx_pf_8PyClical_8clifford_4__dealloc__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3178 static int __pyx_pf_8PyClical_8clifford_6__contains__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x); /* proto */
3179 static PyObject *__pyx_pf_8PyClical_8clifford_8__iter__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3180 static PyObject *__pyx_pf_8PyClical_8clifford_10reframe(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt); /* proto */
3181 static PyObject *__pyx_pf_8PyClical_8clifford_12__richcmp__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /* proto */
3182 static PyObject *__pyx_pf_8PyClical_8clifford_14__getitem__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt); /* proto */
3183 static PyObject *__pyx_pf_8PyClical_8clifford_16__neg__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3184 static PyObject *__pyx_pf_8PyClical_8clifford_18__pos__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3185 static PyObject *__pyx_pf_8PyClical_8clifford_20__add__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3186 static PyObject *__pyx_pf_8PyClical_8clifford_22__radd__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3187 static PyObject *__pyx_pf_8PyClical_8clifford_24__iadd__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3188 static PyObject *__pyx_pf_8PyClical_8clifford_26__sub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3189 static PyObject *__pyx_pf_8PyClical_8clifford_28__rsub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3190 static PyObject *__pyx_pf_8PyClical_8clifford_30__isub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3191 static PyObject *__pyx_pf_8PyClical_8clifford_32__mul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3192 static PyObject *__pyx_pf_8PyClical_8clifford_34__rmul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3193 static PyObject *__pyx_pf_8PyClical_8clifford_36__imul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3194 static PyObject *__pyx_pf_8PyClical_8clifford_38__mod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3195 static PyObject *__pyx_pf_8PyClical_8clifford_40__rmod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3196 static PyObject *__pyx_pf_8PyClical_8clifford_42__imod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3197 static PyObject *__pyx_pf_8PyClical_8clifford_44__and__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3198 static PyObject *__pyx_pf_8PyClical_8clifford_46__rand__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3199 static PyObject *__pyx_pf_8PyClical_8clifford_48__iand__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3200 static PyObject *__pyx_pf_8PyClical_8clifford_50__xor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3201 static PyObject *__pyx_pf_8PyClical_8clifford_52__rxor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3202 static PyObject *__pyx_pf_8PyClical_8clifford_54__ixor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3203 static PyObject *__pyx_pf_8PyClical_8clifford_56__truediv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3204 static PyObject *__pyx_pf_8PyClical_8clifford_58__rtruediv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs); /* proto */
3205 #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
3206 static PyObject *__pyx_pf_8PyClical_8clifford_60__idiv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3207 #endif
3208 static PyObject *__pyx_pf_8PyClical_8clifford_62inv(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3209 static PyObject *__pyx_pf_8PyClical_8clifford_64__or__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
3210 static PyObject *__pyx_pf_8PyClical_8clifford_66__ior__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
3211 static PyObject *__pyx_pf_8PyClical_8clifford_68__pow__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m, CYTHON_UNUSED PyObject *__pyx_v_dummy); /* proto */
3212 static PyObject *__pyx_pf_8PyClical_8clifford_70pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m); /* proto */
3213 static PyObject *__pyx_pf_8PyClical_8clifford_72outer_pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m); /* proto */
3214 static PyObject *__pyx_pf_8PyClical_8clifford_74__call__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_grade); /* proto */
3215 static PyObject *__pyx_pf_8PyClical_8clifford_76scalar(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3216 static PyObject *__pyx_pf_8PyClical_8clifford_78pure(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3217 static PyObject *__pyx_pf_8PyClical_8clifford_80even(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3218 static PyObject *__pyx_pf_8PyClical_8clifford_82odd(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3219 static PyObject *__pyx_pf_8PyClical_8clifford_84vector_part(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_frm); /* proto */
3220 static PyObject *__pyx_pf_8PyClical_8clifford_86involute(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3221 static PyObject *__pyx_pf_8PyClical_8clifford_88reverse(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3222 static PyObject *__pyx_pf_8PyClical_8clifford_90conj(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3223 static PyObject *__pyx_pf_8PyClical_8clifford_92quad(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3224 static PyObject *__pyx_pf_8PyClical_8clifford_94norm(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3225 static PyObject *__pyx_pf_8PyClical_8clifford_96abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3226 static PyObject *__pyx_pf_8PyClical_8clifford_98max_abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3227 static PyObject *__pyx_pf_8PyClical_8clifford_100truncated(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_limit); /* proto */
3228 static PyObject *__pyx_pf_8PyClical_8clifford_102isinf(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3229 static PyObject *__pyx_pf_8PyClical_8clifford_104isnan(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3230 static PyObject *__pyx_pf_8PyClical_8clifford_106frame(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3231 static PyObject *__pyx_pf_8PyClical_8clifford_108__repr__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3232 static PyObject *__pyx_pf_8PyClical_8clifford_110__str__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3233 static PyObject *__pyx_pf_8PyClical_8clifford_112__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
3234 static PyObject *__pyx_pf_8PyClical_8clifford_114__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3235 static PyObject *__pyx_pf_8PyClical_8clifford_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
3236 static PyObject *__pyx_pf_8PyClical_10error_squared_tol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3237 static PyObject *__pyx_pf_8PyClical_12error_squared(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, PyObject *__pyx_v_threshold); /* proto */
3238 static PyObject *__pyx_pf_8PyClical_14approx_equal(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, PyObject *__pyx_v_threshold, PyObject *__pyx_v_tol); /* proto */
3239 static PyObject *__pyx_pf_8PyClical_16inv(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3240 static PyObject *__pyx_pf_8PyClical_18scalar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3241 static PyObject *__pyx_pf_8PyClical_20real(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3242 static PyObject *__pyx_pf_8PyClical_22imag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3243 static PyObject *__pyx_pf_8PyClical_24pure(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3244 static PyObject *__pyx_pf_8PyClical_26even(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3245 static PyObject *__pyx_pf_8PyClical_28odd(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3246 static PyObject *__pyx_pf_8PyClical_30involute(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3247 static PyObject *__pyx_pf_8PyClical_32reverse(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3248 static PyObject *__pyx_pf_8PyClical_34conj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3249 static PyObject *__pyx_pf_8PyClical_36quad(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3250 static PyObject *__pyx_pf_8PyClical_38norm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3251 static PyObject *__pyx_pf_8PyClical_40abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3252 static PyObject *__pyx_pf_8PyClical_42max_abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3253 static PyObject *__pyx_pf_8PyClical_44pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m); /* proto */
3254 static PyObject *__pyx_pf_8PyClical_46outer_pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m); /* proto */
3255 static PyObject *__pyx_pf_8PyClical_48complexifier(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3256 static PyObject *__pyx_pf_8PyClical_50sqrt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3257 static PyObject *__pyx_pf_8PyClical_52exp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3258 static PyObject *__pyx_pf_8PyClical_54log(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3259 static PyObject *__pyx_pf_8PyClical_56cos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3260 static PyObject *__pyx_pf_8PyClical_58acos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3261 static PyObject *__pyx_pf_8PyClical_60cosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3262 static PyObject *__pyx_pf_8PyClical_62acosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3263 static PyObject *__pyx_pf_8PyClical_64sin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3264 static PyObject *__pyx_pf_8PyClical_66asin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3265 static PyObject *__pyx_pf_8PyClical_68sinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3266 static PyObject *__pyx_pf_8PyClical_70asinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3267 static PyObject *__pyx_pf_8PyClical_72tan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3268 static PyObject *__pyx_pf_8PyClical_74atan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3269 static PyObject *__pyx_pf_8PyClical_76tanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3270 static PyObject *__pyx_pf_8PyClical_78atanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
3271 static PyObject *__pyx_pf_8PyClical_80random_clifford(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt, PyObject *__pyx_v_fill); /* proto */
3272 static PyObject *__pyx_pf_8PyClical_82cga3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3273 static PyObject *__pyx_pf_8PyClical_84cga3std(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3274 static PyObject *__pyx_pf_8PyClical_86agc3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3275 static PyObject *__pyx_pf_8PyClical_88e(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
3276 static PyObject *__pyx_pf_8PyClical_90istpq(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_p, PyObject *__pyx_v_q); /* proto */
3277 static PyObject *__pyx_pf_8PyClical_92_test(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
3278 static PyObject *__pyx_tp_new_8PyClical_index_set(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
3279 static PyObject *__pyx_tp_new_8PyClical_clifford(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
3280 static PyObject *__pyx_tp_new_8PyClical___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
3281 /* #### Code section: late_includes ### */
3282 /* #### Code section: module_state ### */
3283 typedef struct {
3284  PyObject *__pyx_d;
3285  PyObject *__pyx_b;
3286  PyObject *__pyx_cython_runtime;
3287  PyObject *__pyx_empty_tuple;
3288  PyObject *__pyx_empty_bytes;
3289  PyObject *__pyx_empty_unicode;
3290  #ifdef __Pyx_CyFunction_USED
3291  PyTypeObject *__pyx_CyFunctionType;
3292  #endif
3293  #ifdef __Pyx_FusedFunction_USED
3294  PyTypeObject *__pyx_FusedFunctionType;
3295  #endif
3296  #ifdef __Pyx_Generator_USED
3297  PyTypeObject *__pyx_GeneratorType;
3298  #endif
3299  #ifdef __Pyx_IterableCoroutine_USED
3300  PyTypeObject *__pyx_IterableCoroutineType;
3301  #endif
3302  #ifdef __Pyx_Coroutine_USED
3303  PyTypeObject *__pyx_CoroutineAwaitType;
3304  #endif
3305  #ifdef __Pyx_Coroutine_USED
3306  PyTypeObject *__pyx_CoroutineType;
3307  #endif
3308  #if CYTHON_USE_MODULE_STATE
3309  #endif
3310  #if CYTHON_USE_MODULE_STATE
3311  #endif
3312  #if CYTHON_USE_MODULE_STATE
3313  #endif
3314  #if CYTHON_USE_MODULE_STATE
3315  #endif
3316  #if CYTHON_USE_MODULE_STATE
3317  PyObject *__pyx_type_8PyClical_index_set;
3318  PyObject *__pyx_type_8PyClical_clifford;
3319  PyObject *__pyx_type_8PyClical___pyx_scope_struct____iter__;
3320  #endif
3321  PyTypeObject *__pyx_ptype_8PyClical_index_set;
3322  PyTypeObject *__pyx_ptype_8PyClical_clifford;
3323  PyTypeObject *__pyx_ptype_8PyClical___pyx_scope_struct____iter__;
3324  PyObject *__pyx_kp_u_;
3325  PyObject *__pyx_kp_u_Abbreviation_for_clifford_index;
3326  PyObject *__pyx_kp_u_Abbreviation_for_index_set_q_p;
3327  PyObject *__pyx_kp_u_Absolute_value_of_multivector_m;
3328  PyObject *__pyx_kp_u_Absolute_value_square_root_of_n;
3329  PyObject *__pyx_kp_u_Cannot_initialize_clifford_objec;
3330  PyObject *__pyx_kp_u_Cannot_initialize_index_set_obje;
3331  PyObject *__pyx_kp_u_Cannot_reframe;
3332  PyObject *__pyx_kp_u_Cannot_take_vector_part_of;
3333  PyObject *__pyx_kp_u_Cardinality_Number_of_indices_i;
3334  PyObject *__pyx_kp_u_Check_if_a_multivector_contains;
3335  PyObject *__pyx_kp_u_Check_if_a_multivector_contains_2;
3336  PyObject *__pyx_kp_u_Conjugation_reverse_o_involute;
3337  PyObject *__pyx_kp_u_Conjugation_reverse_o_involute_2;
3338  PyObject *__pyx_kp_u_Contraction_print_2_clifford_2;
3339  PyObject *__pyx_kp_u_Contraction_print_clifford_1_cl;
3340  PyObject *__pyx_kp_u_Contraction_x_clifford_1_x_clif;
3341  PyObject *__pyx_kp_u_Convert_CGA3_null_vector_to_Euc;
3342  PyObject *__pyx_kp_u_Convert_CGA3_null_vector_to_sta;
3343  PyObject *__pyx_kp_u_Convert_Euclidean_3D_multivecto;
3344  PyObject *__pyx_kp_u_Copy_this_clifford_object_x_cli;
3345  PyObject *__pyx_kp_u_Copy_this_index_set_object_s_in;
3346  PyObject *__pyx_kp_u_Cosine_of_multivector_with_opti;
3347  PyObject *__pyx_kp_u_Even_part_of_multivector_sum_of;
3348  PyObject *__pyx_kp_u_Even_part_of_multivector_sum_of_2;
3349  PyObject *__pyx_kp_u_Exponential_of_multivector_x_cl;
3350  PyObject *__pyx_kp_u_Geometric_difference_print_1_cl;
3351  PyObject *__pyx_kp_u_Geometric_difference_print_clif;
3352  PyObject *__pyx_kp_u_Geometric_difference_x_clifford;
3353  PyObject *__pyx_kp_u_Geometric_multiplicative_invers;
3354  PyObject *__pyx_kp_u_Geometric_multiplicative_invers_2;
3355  PyObject *__pyx_kp_u_Geometric_product_print_2_cliff;
3356  PyObject *__pyx_kp_u_Geometric_product_print_cliffor;
3357  PyObject *__pyx_kp_u_Geometric_product_x_clifford_2;
3358  PyObject *__pyx_kp_u_Geometric_quotient_print_2_clif;
3359  PyObject *__pyx_kp_u_Geometric_quotient_print_cliffo;
3360  PyObject *__pyx_kp_u_Geometric_quotient_x_clifford_1;
3361  PyObject *__pyx_kp_u_Geometric_sum_print_1_clifford;
3362  PyObject *__pyx_kp_u_Geometric_sum_print_clifford_1;
3363  PyObject *__pyx_kp_u_Geometric_sum_x_clifford_1_x_cl;
3364  PyObject *__pyx_kp_u_Get_the_value_of_an_index_set_o;
3365  PyObject *__pyx_kp_u_Hyperbolic_cosine_of_multivecto;
3366  PyObject *__pyx_kp_u_Hyperbolic_sine_of_multivector;
3367  PyObject *__pyx_kp_u_Hyperbolic_tangent_of_multivect;
3368  PyObject *__pyx_kp_u_Imaginary_part_deprecated_alway;
3369  PyObject *__pyx_n_s_IndexError;
3370  PyObject *__pyx_kp_u_Inner_product_print_2_clifford;
3371  PyObject *__pyx_kp_u_Inner_product_print_clifford_1;
3372  PyObject *__pyx_kp_u_Inner_product_x_clifford_1_x_cl;
3373  PyObject *__pyx_kp_u_Integer_power_of_multivector_ob;
3374  PyObject *__pyx_n_s_Integral;
3375  PyObject *__pyx_kp_u_Inverse_cosine_of_multivector_w;
3376  PyObject *__pyx_kp_u_Inverse_hyperbolic_cosine_of_mu;
3377  PyObject *__pyx_kp_u_Inverse_hyperbolic_sine_of_mult;
3378  PyObject *__pyx_kp_u_Inverse_hyperbolic_tangent_of_m;
3379  PyObject *__pyx_kp_u_Inverse_sine_of_multivector_wit;
3380  PyObject *__pyx_kp_u_Inverse_tangent_of_multivector;
3381  PyObject *__pyx_kp_u_Iterate_over_the_indices_of_an;
3382  PyObject *__pyx_kp_u_Main_involution_each_i_is_repla;
3383  PyObject *__pyx_kp_u_Main_involution_each_i_is_repla_2;
3384  PyObject *__pyx_kp_u_Maximum_absolute_value_of_coord;
3385  PyObject *__pyx_kp_u_Maximum_member_index_set_1_1_2;
3386  PyObject *__pyx_kp_u_Maximum_of_absolute_values_of_c;
3387  PyObject *__pyx_kp_u_Maximum_positive_index_or_0_if;
3388  PyObject *__pyx_kp_u_Minimum_member_index_set_1_1_2;
3389  PyObject *__pyx_kp_u_Minimum_negative_index_or_0_if;
3390  PyObject *__pyx_kp_u_Natural_logarithm_of_multivecto;
3391  PyObject *__pyx_kp_u_Norm_sum_of_squares_of_coordina;
3392  PyObject *__pyx_n_s_NotImplemented;
3393  PyObject *__pyx_kp_u_Not_applicable;
3394  PyObject *__pyx_kp_u_Not_applicable_for_a_in_cliffor;
3395  PyObject *__pyx_kp_u_Number_of_negative_indices_incl;
3396  PyObject *__pyx_kp_u_Number_of_positive_indices_incl;
3397  PyObject *__pyx_kp_u_Odd_part_of_multivector_sum_of;
3398  PyObject *__pyx_kp_u_Odd_part_of_multivector_sum_of_2;
3399  PyObject *__pyx_kp_u_Outer_product_power_of_multivec;
3400  PyObject *__pyx_kp_u_Outer_product_power_x_clifford;
3401  PyObject *__pyx_kp_u_Outer_product_print_2_clifford;
3402  PyObject *__pyx_kp_u_Outer_product_print_clifford_1;
3403  PyObject *__pyx_kp_u_Outer_product_x_clifford_1_x_cl;
3404  PyObject *__pyx_kp_u_Power_self_to_the_m_x_clifford;
3405  PyObject *__pyx_kp_u_Power_self_to_the_m_x_clifford_2;
3406  PyObject *__pyx_kp_u_Pure_grade_vector_part_print_cl;
3407  PyObject *__pyx_kp_u_Pure_part_print_clifford_1_1_1;
3408  PyObject *__pyx_kp_u_Pure_part_print_pure_clifford_1;
3409  PyObject *__pyx_kp_u_Put_self_into_a_larger_frame_co;
3410  PyObject *__pyx_n_s_PyClical;
3411  PyObject *__pyx_kp_s_PyClical_pyx;
3412  PyObject *__pyx_kp_u_Quadratic_form_rev_x_x_0_print;
3413  PyObject *__pyx_kp_u_Quadratic_form_rev_x_x_0_print_2;
3414  PyObject *__pyx_kp_u_Quadratic_norm_error_tolerance;
3415  PyObject *__pyx_kp_u_Random_multivector_within_a_fra;
3416  PyObject *__pyx_n_s_Real;
3417  PyObject *__pyx_kp_u_Real_part_synonym_for_scalar_pa;
3418  PyObject *__pyx_kp_u_Relative_or_absolute_error_usin;
3419  PyObject *__pyx_kp_u_Remove_all_terms_of_self_with_r;
3420  PyObject *__pyx_kp_u_Reversion_eg_1_2_2_1_print_reve;
3421  PyObject *__pyx_kp_u_Reversion_eg_clifford_1_cliffor;
3422  PyObject *__pyx_n_s_RuntimeError;
3423  PyObject *__pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc;
3424  PyObject *__pyx_kp_u_Scalar_part_scalar_clifford_1_1;
3425  PyObject *__pyx_n_s_Sequence;
3426  PyObject *__pyx_kp_u_Set_complement_not_print_index;
3427  PyObject *__pyx_kp_u_Set_intersection_and_print_inde;
3428  PyObject *__pyx_kp_u_Set_intersection_and_x_index_se;
3429  PyObject *__pyx_kp_u_Set_the_value_of_an_index_set_o;
3430  PyObject *__pyx_kp_u_Set_union_or_print_index_set_1;
3431  PyObject *__pyx_kp_u_Set_union_or_x_index_set_1_x_in;
3432  PyObject *__pyx_kp_u_Sign_of_geometric_product_of_tw;
3433  PyObject *__pyx_kp_u_Sign_of_geometric_square_of_a_C;
3434  PyObject *__pyx_kp_u_Sine_of_multivector_with_option;
3435  PyObject *__pyx_kp_u_Square_root_of_1_which_commutes;
3436  PyObject *__pyx_kp_u_Square_root_of_multivector_with;
3437  PyObject *__pyx_kp_u_Subalgebra_generated_by_all_gen;
3438  PyObject *__pyx_kp_u_Subscripting_map_from_index_set;
3439  PyObject *__pyx_kp_u_Symmetric_set_difference_exclus;
3440  PyObject *__pyx_kp_u_Symmetric_set_difference_exclus_2;
3441  PyObject *__pyx_kp_u_Tangent_of_multivector_with_opt;
3442  PyObject *__pyx_kp_u_Test_for_approximate_equality_o;
3443  PyObject *__pyx_kp_u_Tests_for_functions_that_Doctes;
3444  PyObject *__pyx_kp_u_Tests_for_functions_that_Doctes_2;
3445  PyObject *__pyx_kp_u_The_informal_string_representat;
3446  PyObject *__pyx_kp_u_The_informal_string_representat_2;
3447  PyObject *__pyx_kp_u_The_official_string_representat;
3448  PyObject *__pyx_kp_u_The_official_string_representat_2;
3449  PyObject *__pyx_kp_u_This_comparison_operator_is_not;
3450  PyObject *__pyx_kp_u_Transform_left_hand_side_using;
3451  PyObject *__pyx_kp_u_Transform_left_hand_side_using_2;
3452  PyObject *__pyx_n_s_TypeError;
3453  PyObject *__pyx_kp_u_UTF_8;
3454  PyObject *__pyx_kp_u_Unary_print_clifford_1_1;
3455  PyObject *__pyx_kp_u_Unary_print_clifford_1_1_2;
3456  PyObject *__pyx_n_s_ValueError;
3457  PyObject *__pyx_kp_u_Vector_part_of_multivector_as_a;
3458  PyObject *__pyx_n_s__113;
3459  PyObject *__pyx_kp_u__2;
3460  PyObject *__pyx_kp_u__3;
3461  PyObject *__pyx_kp_u__4;
3462  PyObject *__pyx_kp_u__5;
3463  PyObject *__pyx_kp_u__6;
3464  PyObject *__pyx_kp_u__7;
3465  PyObject *__pyx_n_s__9;
3466  PyObject *__pyx_n_s_abc;
3467  PyObject *__pyx_n_s_abs;
3468  PyObject *__pyx_kp_u_abs_line_1585;
3469  PyObject *__pyx_n_s_acos;
3470  PyObject *__pyx_kp_u_acos_line_1731;
3471  PyObject *__pyx_n_s_acosh;
3472  PyObject *__pyx_kp_u_acosh_line_1768;
3473  PyObject *__pyx_n_s_agc3;
3474  PyObject *__pyx_kp_u_agc3_line_1956;
3475  PyObject *__pyx_n_s_approx_equal;
3476  PyObject *__pyx_kp_u_approx_equal_line_1422;
3477  PyObject *__pyx_n_s_args;
3478  PyObject *__pyx_kp_u_as_frame;
3479  PyObject *__pyx_n_s_asin;
3480  PyObject *__pyx_kp_u_asin_line_1810;
3481  PyObject *__pyx_n_s_asinh;
3482  PyObject *__pyx_kp_u_asinh_line_1845;
3483  PyObject *__pyx_n_s_asyncio_coroutines;
3484  PyObject *__pyx_n_s_atan;
3485  PyObject *__pyx_kp_u_atan_line_1881;
3486  PyObject *__pyx_n_s_atanh;
3487  PyObject *__pyx_kp_u_atanh_line_1910;
3488  PyObject *__pyx_n_s_cga3;
3489  PyObject *__pyx_kp_u_cga3_line_1936;
3490  PyObject *__pyx_n_s_cga3std;
3491  PyObject *__pyx_kp_u_cga3std_line_1945;
3492  PyObject *__pyx_n_s_cl;
3493  PyObject *__pyx_n_s_clifford;
3494  PyObject *__pyx_kp_u_clifford___add___line_740;
3495  PyObject *__pyx_kp_u_clifford___and___line_872;
3496  PyObject *__pyx_kp_u_clifford___call___line_1083;
3497  PyObject *__pyx_kp_u_clifford___getitem___line_707;
3498  PyObject *__pyx_kp_u_clifford___iadd___line_760;
3499  PyObject *__pyx_kp_u_clifford___iand___line_896;
3500  PyObject *__pyx_kp_u_clifford___idiv___line_974;
3501  PyObject *__pyx_kp_u_clifford___imod___line_857;
3502  PyObject *__pyx_kp_u_clifford___imul___line_820;
3503  PyObject *__pyx_kp_u_clifford___ior___line_1013;
3504  PyObject *__pyx_kp_u_clifford___isub___line_789;
3505  PyObject *__pyx_kp_u_clifford___iter___line_638;
3506  PyObject *__pyx_kp_u_clifford___ixor___line_935;
3507  PyObject *__pyx_kp_u_clifford___mod___line_833;
3508  PyObject *__pyx_kp_u_clifford___mul___line_798;
3509  PyObject *__pyx_kp_u_clifford___neg___line_722;
3510  PyObject *__pyx_kp_u_clifford___or___line_1002;
3511  PyObject *__pyx_kp_u_clifford___pos___line_731;
3512  PyObject *__pyx_kp_u_clifford___pow___line_1024;
3513  PyObject *__pyx_kp_u_clifford___radd___line_751;
3514  PyObject *__pyx_kp_u_clifford___rand___line_887;
3515  PyObject *__pyx_n_s_clifford___reduce_cython;
3516  PyObject *__pyx_kp_u_clifford___repr___line_1298;
3517  PyObject *__pyx_kp_u_clifford___rmod___line_848;
3518  PyObject *__pyx_kp_u_clifford___rmul___line_811;
3519  PyObject *__pyx_kp_u_clifford___rsub___line_780;
3520  PyObject *__pyx_kp_u_clifford___rtruediv___line_965;
3521  PyObject *__pyx_kp_u_clifford___rxor___line_926;
3522  PyObject *__pyx_n_s_clifford___setstate_cython;
3523  PyObject *__pyx_kp_u_clifford___str___line_1307;
3524  PyObject *__pyx_kp_u_clifford___sub___line_769;
3525  PyObject *__pyx_kp_u_clifford___truediv___line_950;
3526  PyObject *__pyx_kp_u_clifford___xor___line_911;
3527  PyObject *__pyx_n_s_clifford_abs;
3528  PyObject *__pyx_kp_u_clifford_abs_line_1238;
3529  PyObject *__pyx_n_s_clifford_conj;
3530  PyObject *__pyx_kp_u_clifford_conj_line_1201;
3531  PyObject *__pyx_n_s_clifford_copy;
3532  PyObject *__pyx_kp_u_clifford_copy_line_556;
3533  PyObject *__pyx_n_s_clifford_even;
3534  PyObject *__pyx_kp_u_clifford_even_line_1124;
3535  PyObject *__pyx_n_s_clifford_frame;
3536  PyObject *__pyx_kp_u_clifford_frame_line_1287;
3537  PyObject *__pyx_n_s_clifford_hidden_doctests;
3538  PyObject *__pyx_kp_u_clifford_hidden_doctests_line_13;
3539  PyObject *__pyx_n_s_clifford_inv;
3540  PyObject *__pyx_kp_u_clifford_inv_line_989;
3541  PyObject *__pyx_n_s_clifford_involute;
3542  PyObject *__pyx_kp_u_clifford_involute_line_1170;
3543  PyObject *__pyx_n_s_clifford_isinf;
3544  PyObject *__pyx_kp_u_clifford_isinf_line_1269;
3545  PyObject *__pyx_n_s_clifford_isnan;
3546  PyObject *__pyx_kp_u_clifford_isnan_line_1278;
3547  PyObject *__pyx_n_s_clifford_max_abs;
3548  PyObject *__pyx_kp_u_clifford_max_abs_line_1247;
3549  PyObject *__pyx_n_s_clifford_norm;
3550  PyObject *__pyx_kp_u_clifford_norm_line_1227;
3551  PyObject *__pyx_n_s_clifford_odd;
3552  PyObject *__pyx_kp_u_clifford_odd_line_1133;
3553  PyObject *__pyx_n_s_clifford_outer_pow;
3554  PyObject *__pyx_kp_u_clifford_outer_pow_line_1067;
3555  PyObject *__pyx_n_s_clifford_pow;
3556  PyObject *__pyx_kp_u_clifford_pow_line_1043;
3557  PyObject *__pyx_n_s_clifford_pure;
3558  PyObject *__pyx_kp_u_clifford_pure_line_1113;
3559  PyObject *__pyx_n_s_clifford_quad;
3560  PyObject *__pyx_kp_u_clifford_quad_line_1216;
3561  PyObject *__pyx_n_s_clifford_reframe;
3562  PyObject *__pyx_kp_u_clifford_reframe_line_649;
3563  PyObject *__pyx_n_s_clifford_reverse;
3564  PyObject *__pyx_kp_u_clifford_reverse_line_1186;
3565  PyObject *__pyx_n_s_clifford_scalar;
3566  PyObject *__pyx_kp_u_clifford_scalar_line_1102;
3567  PyObject *__pyx_n_s_clifford_truncated;
3568  PyObject *__pyx_kp_u_clifford_truncated_line_1258;
3569  PyObject *__pyx_n_s_clifford_vector_part;
3570  PyObject *__pyx_kp_u_clifford_vector_part_line_1142;
3571  PyObject *__pyx_n_s_cline_in_traceback;
3572  PyObject *__pyx_n_s_close;
3573  PyObject *__pyx_n_s_collections;
3574  PyObject *__pyx_n_s_compare;
3575  PyObject *__pyx_kp_u_compare_line_492;
3576  PyObject *__pyx_n_s_complexifier;
3577  PyObject *__pyx_kp_u_complexifier_line_1639;
3578  PyObject *__pyx_n_s_conj;
3579  PyObject *__pyx_kp_u_conj_line_1548;
3580  PyObject *__pyx_n_s_copy;
3581  PyObject *__pyx_n_s_cos;
3582  PyObject *__pyx_kp_u_cos_line_1714;
3583  PyObject *__pyx_n_s_cosh;
3584  PyObject *__pyx_kp_u_cosh_line_1752;
3585  PyObject *__pyx_n_s_count;
3586  PyObject *__pyx_n_s_count_neg;
3587  PyObject *__pyx_n_s_count_pos;
3588  PyObject *__pyx_kp_u_disable;
3589  PyObject *__pyx_n_s_doctest;
3590  PyObject *__pyx_n_s_e;
3591  PyObject *__pyx_kp_u_e_line_1999;
3592  PyObject *__pyx_kp_u_enable;
3593  PyObject *__pyx_n_s_encode;
3594  PyObject *__pyx_n_s_err;
3595  PyObject *__pyx_n_s_error_msg_prefix;
3596  PyObject *__pyx_n_s_error_squared;
3597  PyObject *__pyx_kp_u_error_squared_line_1409;
3598  PyObject *__pyx_n_s_error_squared_tol;
3599  PyObject *__pyx_kp_u_error_squared_tol_line_1400;
3600  PyObject *__pyx_n_s_even;
3601  PyObject *__pyx_kp_u_even_line_1500;
3602  PyObject *__pyx_n_s_exp;
3603  PyObject *__pyx_kp_u_exp_line_1677;
3604  PyObject *__pyx_n_s_fill;
3605  PyObject *__pyx_n_s_frame;
3606  PyObject *__pyx_n_s_frm;
3607  PyObject *__pyx_kp_u_from;
3608  PyObject *__pyx_kp_u_gc;
3609  PyObject *__pyx_n_s_getstate;
3610  PyObject *__pyx_n_s_grade;
3611  PyObject *__pyx_n_s_hash_fn;
3612  PyObject *__pyx_n_s_i;
3613  PyObject *__pyx_n_s_imag;
3614  PyObject *__pyx_kp_u_imag_line_1478;
3615  PyObject *__pyx_n_s_import;
3616  PyObject *__pyx_n_s_index_set;
3617  PyObject *__pyx_kp_u_index_set___and___line_271;
3618  PyObject *__pyx_kp_u_index_set___getitem___line_191;
3619  PyObject *__pyx_kp_u_index_set___iand___line_282;
3620  PyObject *__pyx_kp_u_index_set___invert___line_240;
3621  PyObject *__pyx_kp_u_index_set___ior___line_304;
3622  PyObject *__pyx_n_s_index_set___iter;
3623  PyObject *__pyx_kp_u_index_set___iter___line_229;
3624  PyObject *__pyx_kp_u_index_set___ixor___line_260;
3625  PyObject *__pyx_kp_u_index_set___or___line_293;
3626  PyObject *__pyx_n_s_index_set___reduce_cython;
3627  PyObject *__pyx_kp_u_index_set___repr___line_384;
3628  PyObject *__pyx_kp_u_index_set___setitem___line_179;
3629  PyObject *__pyx_n_s_index_set___setstate_cython;
3630  PyObject *__pyx_kp_u_index_set___str___line_395;
3631  PyObject *__pyx_kp_u_index_set___xor___line_249;
3632  PyObject *__pyx_n_s_index_set_copy;
3633  PyObject *__pyx_kp_u_index_set_copy_line_65;
3634  PyObject *__pyx_n_s_index_set_count;
3635  PyObject *__pyx_kp_u_index_set_count_line_315;
3636  PyObject *__pyx_n_s_index_set_count_neg;
3637  PyObject *__pyx_kp_u_index_set_count_neg_line_324;
3638  PyObject *__pyx_n_s_index_set_count_pos;
3639  PyObject *__pyx_kp_u_index_set_count_pos_line_333;
3640  PyObject *__pyx_n_s_index_set_hash_fn;
3641  PyObject *__pyx_n_s_index_set_hidden_doctests;
3642  PyObject *__pyx_kp_u_index_set_hidden_doctests_line_4;
3643  PyObject *__pyx_n_s_index_set_max;
3644  PyObject *__pyx_kp_u_index_set_max_line_351;
3645  PyObject *__pyx_n_s_index_set_min;
3646  PyObject *__pyx_kp_u_index_set_min_line_342;
3647  PyObject *__pyx_n_s_index_set_sign_of_mult;
3648  PyObject *__pyx_kp_u_index_set_sign_of_mult_line_366;
3649  PyObject *__pyx_n_s_index_set_sign_of_square;
3650  PyObject *__pyx_kp_u_index_set_sign_of_square_line_37;
3651  PyObject *__pyx_n_s_initializing;
3652  PyObject *__pyx_n_s_inv;
3653  PyObject *__pyx_kp_u_inv_line_1441;
3654  PyObject *__pyx_kp_u_invalid;
3655  PyObject *__pyx_kp_u_invalid_string;
3656  PyObject *__pyx_n_s_involute;
3657  PyObject *__pyx_kp_u_involute_line_1518;
3658  PyObject *__pyx_n_s_is_coroutine;
3659  PyObject *__pyx_kp_u_isenabled;
3660  PyObject *__pyx_n_s_isinf;
3661  PyObject *__pyx_n_s_isnan;
3662  PyObject *__pyx_n_s_ist;
3663  PyObject *__pyx_n_s_istpq;
3664  PyObject *__pyx_kp_u_istpq_line_2012;
3665  PyObject *__pyx_n_s_iter;
3666  PyObject *__pyx_n_s_ixt;
3667  PyObject *__pyx_kp_u_lexicographic_compare_eg_3_4_5;
3668  PyObject *__pyx_n_s_lhs;
3669  PyObject *__pyx_n_s_limit;
3670  PyObject *__pyx_n_s_log;
3671  PyObject *__pyx_kp_u_log_line_1691;
3672  PyObject *__pyx_n_s_lst;
3673  PyObject *__pyx_n_s_m;
3674  PyObject *__pyx_n_s_main;
3675  PyObject *__pyx_n_u_main;
3676  PyObject *__pyx_n_s_math;
3677  PyObject *__pyx_n_s_max;
3678  PyObject *__pyx_n_s_max_abs;
3679  PyObject *__pyx_kp_u_max_abs_line_1594;
3680  PyObject *__pyx_n_s_max_pos;
3681  PyObject *__pyx_kp_u_max_pos_line_513;
3682  PyObject *__pyx_n_s_min;
3683  PyObject *__pyx_n_s_min_neg;
3684  PyObject *__pyx_kp_u_min_neg_line_504;
3685  PyObject *__pyx_n_s_n;
3686  PyObject *__pyx_n_s_name;
3687  PyObject *__pyx_n_s_nbar3;
3688  PyObject *__pyx_n_s_ninf3;
3689  PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
3690  PyObject *__pyx_n_s_norm;
3691  PyObject *__pyx_kp_u_norm_line_1574;
3692  PyObject *__pyx_kp_u_norm_sum_of_squares_of_coordina;
3693  PyObject *__pyx_n_s_numbers;
3694  PyObject *__pyx_n_s_obj;
3695  PyObject *__pyx_n_s_odd;
3696  PyObject *__pyx_kp_u_odd_line_1509;
3697  PyObject *__pyx_n_s_other;
3698  PyObject *__pyx_n_s_outer_pow;
3699  PyObject *__pyx_kp_u_outer_pow_line_1630;
3700  PyObject *__pyx_n_s_p;
3701  PyObject *__pyx_n_s_pi;
3702  PyObject *__pyx_n_s_pow;
3703  PyObject *__pyx_kp_u_pow_line_1606;
3704  PyObject *__pyx_n_s_pure;
3705  PyObject *__pyx_kp_u_pure_line_1489;
3706  PyObject *__pyx_n_s_pyx_state;
3707  PyObject *__pyx_n_s_pyx_vtable;
3708  PyObject *__pyx_n_s_q;
3709  PyObject *__pyx_n_s_quad;
3710  PyObject *__pyx_kp_u_quad_line_1563;
3711  PyObject *__pyx_n_s_random_clifford;
3712  PyObject *__pyx_kp_u_random_clifford_line_1927;
3713  PyObject *__pyx_n_s_range;
3714  PyObject *__pyx_n_s_real;
3715  PyObject *__pyx_kp_u_real_line_1467;
3716  PyObject *__pyx_n_s_reduce;
3717  PyObject *__pyx_n_s_reduce_cython;
3718  PyObject *__pyx_n_s_reduce_ex;
3719  PyObject *__pyx_n_s_reframe;
3720  PyObject *__pyx_n_s_result;
3721  PyObject *__pyx_n_s_reverse;
3722  PyObject *__pyx_kp_u_reverse_line_1533;
3723  PyObject *__pyx_n_s_rhs;
3724  PyObject *__pyx_n_s_scalar;
3725  PyObject *__pyx_n_s_scalar_epsilon;
3726  PyObject *__pyx_kp_u_scalar_line_1456;
3727  PyObject *__pyx_n_s_self;
3728  PyObject *__pyx_n_s_send;
3729  PyObject *__pyx_n_s_setstate;
3730  PyObject *__pyx_n_s_setstate_cython;
3731  PyObject *__pyx_n_s_sign_of_mult;
3732  PyObject *__pyx_n_s_sign_of_square;
3733  PyObject *__pyx_n_s_sin;
3734  PyObject *__pyx_kp_u_sin_line_1791;
3735  PyObject *__pyx_n_s_sinh;
3736  PyObject *__pyx_kp_u_sinh_line_1831;
3737  PyObject *__pyx_n_s_spec;
3738  PyObject *__pyx_n_s_sqrt;
3739  PyObject *__pyx_kp_u_sqrt_line_1654;
3740  PyObject *__pyx_kp_s_stringsource;
3741  PyObject *__pyx_n_s_tan;
3742  PyObject *__pyx_kp_u_tan_line_1864;
3743  PyObject *__pyx_n_s_tanh;
3744  PyObject *__pyx_kp_u_tanh_line_1898;
3745  PyObject *__pyx_n_s_tau;
3746  PyObject *__pyx_n_s_test;
3747  PyObject *__pyx_n_s_test_2;
3748  PyObject *__pyx_n_s_testmod;
3749  PyObject *__pyx_n_s_threshold;
3750  PyObject *__pyx_n_s_throw;
3751  PyObject *__pyx_kp_u_to_frame;
3752  PyObject *__pyx_n_s_tol;
3753  PyObject *__pyx_n_s_truncated;
3754  PyObject *__pyx_kp_u_using;
3755  PyObject *__pyx_kp_u_using_invalid;
3756  PyObject *__pyx_kp_u_utf_8;
3757  PyObject *__pyx_kp_u_value;
3758  PyObject *__pyx_n_s_vec;
3759  PyObject *__pyx_n_s_vector_part;
3760  PyObject *__pyx_n_s_version;
3761  PyObject *__pyx_n_s_xrange;
3762  PyObject *__pyx_float_0_0;
3763  PyObject *__pyx_float_1_0;
3764  PyObject *__pyx_float_4_0;
3765  PyObject *__pyx_float_8_0;
3766  PyObject *__pyx_int_0;
3767  PyObject *__pyx_int_1;
3768  PyObject *__pyx_int_4;
3769  PyObject *__pyx_int_neg_1;
3770  PyObject *__pyx_tuple__8;
3771  PyObject *__pyx_tuple__10;
3772  PyObject *__pyx_tuple__18;
3773  PyObject *__pyx_tuple__22;
3774  PyObject *__pyx_tuple__25;
3775  PyObject *__pyx_tuple__27;
3776  PyObject *__pyx_tuple__31;
3777  PyObject *__pyx_tuple__34;
3778  PyObject *__pyx_tuple__41;
3779  PyObject *__pyx_tuple__43;
3780  PyObject *__pyx_tuple__51;
3781  PyObject *__pyx_tuple__60;
3782  PyObject *__pyx_tuple__62;
3783  PyObject *__pyx_tuple__64;
3784  PyObject *__pyx_tuple__79;
3785  PyObject *__pyx_tuple__83;
3786  PyObject *__pyx_tuple__99;
3787  PyObject *__pyx_tuple__101;
3788  PyObject *__pyx_tuple__105;
3789  PyObject *__pyx_tuple__107;
3790  PyObject *__pyx_tuple__109;
3791  PyObject *__pyx_tuple__110;
3792  PyObject *__pyx_tuple__111;
3793  PyObject *__pyx_codeobj__11;
3794  PyObject *__pyx_codeobj__12;
3795  PyObject *__pyx_codeobj__13;
3796  PyObject *__pyx_codeobj__14;
3797  PyObject *__pyx_codeobj__15;
3798  PyObject *__pyx_codeobj__16;
3799  PyObject *__pyx_codeobj__17;
3800  PyObject *__pyx_codeobj__19;
3801  PyObject *__pyx_codeobj__20;
3802  PyObject *__pyx_codeobj__21;
3803  PyObject *__pyx_codeobj__23;
3804  PyObject *__pyx_codeobj__24;
3805  PyObject *__pyx_codeobj__26;
3806  PyObject *__pyx_codeobj__28;
3807  PyObject *__pyx_codeobj__29;
3808  PyObject *__pyx_codeobj__30;
3809  PyObject *__pyx_codeobj__32;
3810  PyObject *__pyx_codeobj__33;
3811  PyObject *__pyx_codeobj__35;
3812  PyObject *__pyx_codeobj__36;
3813  PyObject *__pyx_codeobj__37;
3814  PyObject *__pyx_codeobj__38;
3815  PyObject *__pyx_codeobj__39;
3816  PyObject *__pyx_codeobj__40;
3817  PyObject *__pyx_codeobj__42;
3818  PyObject *__pyx_codeobj__44;
3819  PyObject *__pyx_codeobj__45;
3820  PyObject *__pyx_codeobj__46;
3821  PyObject *__pyx_codeobj__47;
3822  PyObject *__pyx_codeobj__48;
3823  PyObject *__pyx_codeobj__49;
3824  PyObject *__pyx_codeobj__50;
3825  PyObject *__pyx_codeobj__52;
3826  PyObject *__pyx_codeobj__53;
3827  PyObject *__pyx_codeobj__54;
3828  PyObject *__pyx_codeobj__55;
3829  PyObject *__pyx_codeobj__56;
3830  PyObject *__pyx_codeobj__57;
3831  PyObject *__pyx_codeobj__58;
3832  PyObject *__pyx_codeobj__59;
3833  PyObject *__pyx_codeobj__61;
3834  PyObject *__pyx_codeobj__63;
3835  PyObject *__pyx_codeobj__65;
3836  PyObject *__pyx_codeobj__66;
3837  PyObject *__pyx_codeobj__67;
3838  PyObject *__pyx_codeobj__68;
3839  PyObject *__pyx_codeobj__69;
3840  PyObject *__pyx_codeobj__70;
3841  PyObject *__pyx_codeobj__71;
3842  PyObject *__pyx_codeobj__72;
3843  PyObject *__pyx_codeobj__73;
3844  PyObject *__pyx_codeobj__74;
3845  PyObject *__pyx_codeobj__75;
3846  PyObject *__pyx_codeobj__76;
3847  PyObject *__pyx_codeobj__77;
3848  PyObject *__pyx_codeobj__78;
3849  PyObject *__pyx_codeobj__80;
3850  PyObject *__pyx_codeobj__81;
3851  PyObject *__pyx_codeobj__82;
3852  PyObject *__pyx_codeobj__84;
3853  PyObject *__pyx_codeobj__85;
3854  PyObject *__pyx_codeobj__86;
3855  PyObject *__pyx_codeobj__87;
3856  PyObject *__pyx_codeobj__88;
3857  PyObject *__pyx_codeobj__89;
3858  PyObject *__pyx_codeobj__90;
3859  PyObject *__pyx_codeobj__91;
3860  PyObject *__pyx_codeobj__92;
3861  PyObject *__pyx_codeobj__93;
3862  PyObject *__pyx_codeobj__94;
3863  PyObject *__pyx_codeobj__95;
3864  PyObject *__pyx_codeobj__96;
3865  PyObject *__pyx_codeobj__97;
3866  PyObject *__pyx_codeobj__98;
3867  PyObject *__pyx_codeobj__100;
3868  PyObject *__pyx_codeobj__102;
3869  PyObject *__pyx_codeobj__103;
3870  PyObject *__pyx_codeobj__104;
3871  PyObject *__pyx_codeobj__106;
3872  PyObject *__pyx_codeobj__108;
3873  PyObject *__pyx_codeobj__112;
3874 } __pyx_mstate;
3875 
3876 #if CYTHON_USE_MODULE_STATE
3877 #ifdef __cplusplus
3878 namespace {
3879  extern struct PyModuleDef __pyx_moduledef;
3880 } /* anonymous namespace */
3881 #else
3882 static struct PyModuleDef __pyx_moduledef;
3883 #endif
3884 
3885 #define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))
3886 
3887 #define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))
3888 
3889 #define __pyx_m (PyState_FindModule(&__pyx_moduledef))
3890 #else
3891 static __pyx_mstate __pyx_mstate_global_static =
3892 #ifdef __cplusplus
3893  {};
3894 #else
3895  {0};
3896 #endif
3897 static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
3898 #endif
3899 /* #### Code section: module_state_clear ### */
3900 #if CYTHON_USE_MODULE_STATE
3901 static int __pyx_m_clear(PyObject *m) {
3902  __pyx_mstate *clear_module_state = __pyx_mstate(m);
3903  if (!clear_module_state) return 0;
3904  Py_CLEAR(clear_module_state->__pyx_d);
3905  Py_CLEAR(clear_module_state->__pyx_b);
3906  Py_CLEAR(clear_module_state->__pyx_cython_runtime);
3907  Py_CLEAR(clear_module_state->__pyx_empty_tuple);
3908  Py_CLEAR(clear_module_state->__pyx_empty_bytes);
3909  Py_CLEAR(clear_module_state->__pyx_empty_unicode);
3910  #ifdef __Pyx_CyFunction_USED
3911  Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
3912  #endif
3913  #ifdef __Pyx_FusedFunction_USED
3914  Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
3915  #endif
3916  Py_CLEAR(clear_module_state->__pyx_ptype_8PyClical_index_set);
3917  Py_CLEAR(clear_module_state->__pyx_type_8PyClical_index_set);
3918  Py_CLEAR(clear_module_state->__pyx_ptype_8PyClical_clifford);
3919  Py_CLEAR(clear_module_state->__pyx_type_8PyClical_clifford);
3920  Py_CLEAR(clear_module_state->__pyx_ptype_8PyClical___pyx_scope_struct____iter__);
3921  Py_CLEAR(clear_module_state->__pyx_type_8PyClical___pyx_scope_struct____iter__);
3922  Py_CLEAR(clear_module_state->__pyx_kp_u_);
3923  Py_CLEAR(clear_module_state->__pyx_kp_u_Abbreviation_for_clifford_index);
3924  Py_CLEAR(clear_module_state->__pyx_kp_u_Abbreviation_for_index_set_q_p);
3925  Py_CLEAR(clear_module_state->__pyx_kp_u_Absolute_value_of_multivector_m);
3926  Py_CLEAR(clear_module_state->__pyx_kp_u_Absolute_value_square_root_of_n);
3927  Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_initialize_clifford_objec);
3928  Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_initialize_index_set_obje);
3929  Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_reframe);
3930  Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_take_vector_part_of);
3931  Py_CLEAR(clear_module_state->__pyx_kp_u_Cardinality_Number_of_indices_i);
3932  Py_CLEAR(clear_module_state->__pyx_kp_u_Check_if_a_multivector_contains);
3933  Py_CLEAR(clear_module_state->__pyx_kp_u_Check_if_a_multivector_contains_2);
3934  Py_CLEAR(clear_module_state->__pyx_kp_u_Conjugation_reverse_o_involute);
3935  Py_CLEAR(clear_module_state->__pyx_kp_u_Conjugation_reverse_o_involute_2);
3936  Py_CLEAR(clear_module_state->__pyx_kp_u_Contraction_print_2_clifford_2);
3937  Py_CLEAR(clear_module_state->__pyx_kp_u_Contraction_print_clifford_1_cl);
3938  Py_CLEAR(clear_module_state->__pyx_kp_u_Contraction_x_clifford_1_x_clif);
3939  Py_CLEAR(clear_module_state->__pyx_kp_u_Convert_CGA3_null_vector_to_Euc);
3940  Py_CLEAR(clear_module_state->__pyx_kp_u_Convert_CGA3_null_vector_to_sta);
3941  Py_CLEAR(clear_module_state->__pyx_kp_u_Convert_Euclidean_3D_multivecto);
3942  Py_CLEAR(clear_module_state->__pyx_kp_u_Copy_this_clifford_object_x_cli);
3943  Py_CLEAR(clear_module_state->__pyx_kp_u_Copy_this_index_set_object_s_in);
3944  Py_CLEAR(clear_module_state->__pyx_kp_u_Cosine_of_multivector_with_opti);
3945  Py_CLEAR(clear_module_state->__pyx_kp_u_Even_part_of_multivector_sum_of);
3946  Py_CLEAR(clear_module_state->__pyx_kp_u_Even_part_of_multivector_sum_of_2);
3947  Py_CLEAR(clear_module_state->__pyx_kp_u_Exponential_of_multivector_x_cl);
3948  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_difference_print_1_cl);
3949  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_difference_print_clif);
3950  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_difference_x_clifford);
3951  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_multiplicative_invers);
3952  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_multiplicative_invers_2);
3953  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_product_print_2_cliff);
3954  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_product_print_cliffor);
3955  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_product_x_clifford_2);
3956  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_quotient_print_2_clif);
3957  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_quotient_print_cliffo);
3958  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_quotient_x_clifford_1);
3959  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_sum_print_1_clifford);
3960  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_sum_print_clifford_1);
3961  Py_CLEAR(clear_module_state->__pyx_kp_u_Geometric_sum_x_clifford_1_x_cl);
3962  Py_CLEAR(clear_module_state->__pyx_kp_u_Get_the_value_of_an_index_set_o);
3963  Py_CLEAR(clear_module_state->__pyx_kp_u_Hyperbolic_cosine_of_multivecto);
3964  Py_CLEAR(clear_module_state->__pyx_kp_u_Hyperbolic_sine_of_multivector);
3965  Py_CLEAR(clear_module_state->__pyx_kp_u_Hyperbolic_tangent_of_multivect);
3966  Py_CLEAR(clear_module_state->__pyx_kp_u_Imaginary_part_deprecated_alway);
3967  Py_CLEAR(clear_module_state->__pyx_n_s_IndexError);
3968  Py_CLEAR(clear_module_state->__pyx_kp_u_Inner_product_print_2_clifford);
3969  Py_CLEAR(clear_module_state->__pyx_kp_u_Inner_product_print_clifford_1);
3970  Py_CLEAR(clear_module_state->__pyx_kp_u_Inner_product_x_clifford_1_x_cl);
3971  Py_CLEAR(clear_module_state->__pyx_kp_u_Integer_power_of_multivector_ob);
3972  Py_CLEAR(clear_module_state->__pyx_n_s_Integral);
3973  Py_CLEAR(clear_module_state->__pyx_kp_u_Inverse_cosine_of_multivector_w);
3974  Py_CLEAR(clear_module_state->__pyx_kp_u_Inverse_hyperbolic_cosine_of_mu);
3975  Py_CLEAR(clear_module_state->__pyx_kp_u_Inverse_hyperbolic_sine_of_mult);
3976  Py_CLEAR(clear_module_state->__pyx_kp_u_Inverse_hyperbolic_tangent_of_m);
3977  Py_CLEAR(clear_module_state->__pyx_kp_u_Inverse_sine_of_multivector_wit);
3978  Py_CLEAR(clear_module_state->__pyx_kp_u_Inverse_tangent_of_multivector);
3979  Py_CLEAR(clear_module_state->__pyx_kp_u_Iterate_over_the_indices_of_an);
3980  Py_CLEAR(clear_module_state->__pyx_kp_u_Main_involution_each_i_is_repla);
3981  Py_CLEAR(clear_module_state->__pyx_kp_u_Main_involution_each_i_is_repla_2);
3982  Py_CLEAR(clear_module_state->__pyx_kp_u_Maximum_absolute_value_of_coord);
3983  Py_CLEAR(clear_module_state->__pyx_kp_u_Maximum_member_index_set_1_1_2);
3984  Py_CLEAR(clear_module_state->__pyx_kp_u_Maximum_of_absolute_values_of_c);
3985  Py_CLEAR(clear_module_state->__pyx_kp_u_Maximum_positive_index_or_0_if);
3986  Py_CLEAR(clear_module_state->__pyx_kp_u_Minimum_member_index_set_1_1_2);
3987  Py_CLEAR(clear_module_state->__pyx_kp_u_Minimum_negative_index_or_0_if);
3988  Py_CLEAR(clear_module_state->__pyx_kp_u_Natural_logarithm_of_multivecto);
3989  Py_CLEAR(clear_module_state->__pyx_kp_u_Norm_sum_of_squares_of_coordina);
3990  Py_CLEAR(clear_module_state->__pyx_n_s_NotImplemented);
3991  Py_CLEAR(clear_module_state->__pyx_kp_u_Not_applicable);
3992  Py_CLEAR(clear_module_state->__pyx_kp_u_Not_applicable_for_a_in_cliffor);
3993  Py_CLEAR(clear_module_state->__pyx_kp_u_Number_of_negative_indices_incl);
3994  Py_CLEAR(clear_module_state->__pyx_kp_u_Number_of_positive_indices_incl);
3995  Py_CLEAR(clear_module_state->__pyx_kp_u_Odd_part_of_multivector_sum_of);
3996  Py_CLEAR(clear_module_state->__pyx_kp_u_Odd_part_of_multivector_sum_of_2);
3997  Py_CLEAR(clear_module_state->__pyx_kp_u_Outer_product_power_of_multivec);
3998  Py_CLEAR(clear_module_state->__pyx_kp_u_Outer_product_power_x_clifford);
3999  Py_CLEAR(clear_module_state->__pyx_kp_u_Outer_product_print_2_clifford);
4000  Py_CLEAR(clear_module_state->__pyx_kp_u_Outer_product_print_clifford_1);
4001  Py_CLEAR(clear_module_state->__pyx_kp_u_Outer_product_x_clifford_1_x_cl);
4002  Py_CLEAR(clear_module_state->__pyx_kp_u_Power_self_to_the_m_x_clifford);
4003  Py_CLEAR(clear_module_state->__pyx_kp_u_Power_self_to_the_m_x_clifford_2);
4004  Py_CLEAR(clear_module_state->__pyx_kp_u_Pure_grade_vector_part_print_cl);
4005  Py_CLEAR(clear_module_state->__pyx_kp_u_Pure_part_print_clifford_1_1_1);
4006  Py_CLEAR(clear_module_state->__pyx_kp_u_Pure_part_print_pure_clifford_1);
4007  Py_CLEAR(clear_module_state->__pyx_kp_u_Put_self_into_a_larger_frame_co);
4008  Py_CLEAR(clear_module_state->__pyx_n_s_PyClical);
4009  Py_CLEAR(clear_module_state->__pyx_kp_s_PyClical_pyx);
4010  Py_CLEAR(clear_module_state->__pyx_kp_u_Quadratic_form_rev_x_x_0_print);
4011  Py_CLEAR(clear_module_state->__pyx_kp_u_Quadratic_form_rev_x_x_0_print_2);
4012  Py_CLEAR(clear_module_state->__pyx_kp_u_Quadratic_norm_error_tolerance);
4013  Py_CLEAR(clear_module_state->__pyx_kp_u_Random_multivector_within_a_fra);
4014  Py_CLEAR(clear_module_state->__pyx_n_s_Real);
4015  Py_CLEAR(clear_module_state->__pyx_kp_u_Real_part_synonym_for_scalar_pa);
4016  Py_CLEAR(clear_module_state->__pyx_kp_u_Relative_or_absolute_error_usin);
4017  Py_CLEAR(clear_module_state->__pyx_kp_u_Remove_all_terms_of_self_with_r);
4018  Py_CLEAR(clear_module_state->__pyx_kp_u_Reversion_eg_1_2_2_1_print_reve);
4019  Py_CLEAR(clear_module_state->__pyx_kp_u_Reversion_eg_clifford_1_cliffor);
4020  Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeError);
4021  Py_CLEAR(clear_module_state->__pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc);
4022  Py_CLEAR(clear_module_state->__pyx_kp_u_Scalar_part_scalar_clifford_1_1);
4023  Py_CLEAR(clear_module_state->__pyx_n_s_Sequence);
4024  Py_CLEAR(clear_module_state->__pyx_kp_u_Set_complement_not_print_index);
4025  Py_CLEAR(clear_module_state->__pyx_kp_u_Set_intersection_and_print_inde);
4026  Py_CLEAR(clear_module_state->__pyx_kp_u_Set_intersection_and_x_index_se);
4027  Py_CLEAR(clear_module_state->__pyx_kp_u_Set_the_value_of_an_index_set_o);
4028  Py_CLEAR(clear_module_state->__pyx_kp_u_Set_union_or_print_index_set_1);
4029  Py_CLEAR(clear_module_state->__pyx_kp_u_Set_union_or_x_index_set_1_x_in);
4030  Py_CLEAR(clear_module_state->__pyx_kp_u_Sign_of_geometric_product_of_tw);
4031  Py_CLEAR(clear_module_state->__pyx_kp_u_Sign_of_geometric_square_of_a_C);
4032  Py_CLEAR(clear_module_state->__pyx_kp_u_Sine_of_multivector_with_option);
4033  Py_CLEAR(clear_module_state->__pyx_kp_u_Square_root_of_1_which_commutes);
4034  Py_CLEAR(clear_module_state->__pyx_kp_u_Square_root_of_multivector_with);
4035  Py_CLEAR(clear_module_state->__pyx_kp_u_Subalgebra_generated_by_all_gen);
4036  Py_CLEAR(clear_module_state->__pyx_kp_u_Subscripting_map_from_index_set);
4037  Py_CLEAR(clear_module_state->__pyx_kp_u_Symmetric_set_difference_exclus);
4038  Py_CLEAR(clear_module_state->__pyx_kp_u_Symmetric_set_difference_exclus_2);
4039  Py_CLEAR(clear_module_state->__pyx_kp_u_Tangent_of_multivector_with_opt);
4040  Py_CLEAR(clear_module_state->__pyx_kp_u_Test_for_approximate_equality_o);
4041  Py_CLEAR(clear_module_state->__pyx_kp_u_Tests_for_functions_that_Doctes);
4042  Py_CLEAR(clear_module_state->__pyx_kp_u_Tests_for_functions_that_Doctes_2);
4043  Py_CLEAR(clear_module_state->__pyx_kp_u_The_informal_string_representat);
4044  Py_CLEAR(clear_module_state->__pyx_kp_u_The_informal_string_representat_2);
4045  Py_CLEAR(clear_module_state->__pyx_kp_u_The_official_string_representat);
4046  Py_CLEAR(clear_module_state->__pyx_kp_u_The_official_string_representat_2);
4047  Py_CLEAR(clear_module_state->__pyx_kp_u_This_comparison_operator_is_not);
4048  Py_CLEAR(clear_module_state->__pyx_kp_u_Transform_left_hand_side_using);
4049  Py_CLEAR(clear_module_state->__pyx_kp_u_Transform_left_hand_side_using_2);
4050  Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
4051  Py_CLEAR(clear_module_state->__pyx_kp_u_UTF_8);
4052  Py_CLEAR(clear_module_state->__pyx_kp_u_Unary_print_clifford_1_1);
4053  Py_CLEAR(clear_module_state->__pyx_kp_u_Unary_print_clifford_1_1_2);
4054  Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
4055  Py_CLEAR(clear_module_state->__pyx_kp_u_Vector_part_of_multivector_as_a);
4056  Py_CLEAR(clear_module_state->__pyx_n_s__113);
4057  Py_CLEAR(clear_module_state->__pyx_kp_u__2);
4058  Py_CLEAR(clear_module_state->__pyx_kp_u__3);
4059  Py_CLEAR(clear_module_state->__pyx_kp_u__4);
4060  Py_CLEAR(clear_module_state->__pyx_kp_u__5);
4061  Py_CLEAR(clear_module_state->__pyx_kp_u__6);
4062  Py_CLEAR(clear_module_state->__pyx_kp_u__7);
4063  Py_CLEAR(clear_module_state->__pyx_n_s__9);
4064  Py_CLEAR(clear_module_state->__pyx_n_s_abc);
4065  Py_CLEAR(clear_module_state->__pyx_n_s_abs);
4066  Py_CLEAR(clear_module_state->__pyx_kp_u_abs_line_1585);
4067  Py_CLEAR(clear_module_state->__pyx_n_s_acos);
4068  Py_CLEAR(clear_module_state->__pyx_kp_u_acos_line_1731);
4069  Py_CLEAR(clear_module_state->__pyx_n_s_acosh);
4070  Py_CLEAR(clear_module_state->__pyx_kp_u_acosh_line_1768);
4071  Py_CLEAR(clear_module_state->__pyx_n_s_agc3);
4072  Py_CLEAR(clear_module_state->__pyx_kp_u_agc3_line_1956);
4073  Py_CLEAR(clear_module_state->__pyx_n_s_approx_equal);
4074  Py_CLEAR(clear_module_state->__pyx_kp_u_approx_equal_line_1422);
4075  Py_CLEAR(clear_module_state->__pyx_n_s_args);
4076  Py_CLEAR(clear_module_state->__pyx_kp_u_as_frame);
4077  Py_CLEAR(clear_module_state->__pyx_n_s_asin);
4078  Py_CLEAR(clear_module_state->__pyx_kp_u_asin_line_1810);
4079  Py_CLEAR(clear_module_state->__pyx_n_s_asinh);
4080  Py_CLEAR(clear_module_state->__pyx_kp_u_asinh_line_1845);
4081  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
4082  Py_CLEAR(clear_module_state->__pyx_n_s_atan);
4083  Py_CLEAR(clear_module_state->__pyx_kp_u_atan_line_1881);
4084  Py_CLEAR(clear_module_state->__pyx_n_s_atanh);
4085  Py_CLEAR(clear_module_state->__pyx_kp_u_atanh_line_1910);
4086  Py_CLEAR(clear_module_state->__pyx_n_s_cga3);
4087  Py_CLEAR(clear_module_state->__pyx_kp_u_cga3_line_1936);
4088  Py_CLEAR(clear_module_state->__pyx_n_s_cga3std);
4089  Py_CLEAR(clear_module_state->__pyx_kp_u_cga3std_line_1945);
4090  Py_CLEAR(clear_module_state->__pyx_n_s_cl);
4091  Py_CLEAR(clear_module_state->__pyx_n_s_clifford);
4092  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___add___line_740);
4093  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___and___line_872);
4094  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___call___line_1083);
4095  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___getitem___line_707);
4096  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___iadd___line_760);
4097  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___iand___line_896);
4098  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___idiv___line_974);
4099  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___imod___line_857);
4100  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___imul___line_820);
4101  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___ior___line_1013);
4102  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___isub___line_789);
4103  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___iter___line_638);
4104  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___ixor___line_935);
4105  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___mod___line_833);
4106  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___mul___line_798);
4107  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___neg___line_722);
4108  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___or___line_1002);
4109  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___pos___line_731);
4110  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___pow___line_1024);
4111  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___radd___line_751);
4112  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___rand___line_887);
4113  Py_CLEAR(clear_module_state->__pyx_n_s_clifford___reduce_cython);
4114  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___repr___line_1298);
4115  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___rmod___line_848);
4116  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___rmul___line_811);
4117  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___rsub___line_780);
4118  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___rtruediv___line_965);
4119  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___rxor___line_926);
4120  Py_CLEAR(clear_module_state->__pyx_n_s_clifford___setstate_cython);
4121  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___str___line_1307);
4122  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___sub___line_769);
4123  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___truediv___line_950);
4124  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford___xor___line_911);
4125  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_abs);
4126  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_abs_line_1238);
4127  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_conj);
4128  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_conj_line_1201);
4129  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_copy);
4130  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_copy_line_556);
4131  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_even);
4132  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_even_line_1124);
4133  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_frame);
4134  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_frame_line_1287);
4135  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_hidden_doctests);
4136  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_hidden_doctests_line_13);
4137  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_inv);
4138  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_inv_line_989);
4139  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_involute);
4140  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_involute_line_1170);
4141  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_isinf);
4142  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_isinf_line_1269);
4143  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_isnan);
4144  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_isnan_line_1278);
4145  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_max_abs);
4146  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_max_abs_line_1247);
4147  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_norm);
4148  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_norm_line_1227);
4149  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_odd);
4150  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_odd_line_1133);
4151  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_outer_pow);
4152  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_outer_pow_line_1067);
4153  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_pow);
4154  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_pow_line_1043);
4155  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_pure);
4156  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_pure_line_1113);
4157  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_quad);
4158  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_quad_line_1216);
4159  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_reframe);
4160  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_reframe_line_649);
4161  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_reverse);
4162  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_reverse_line_1186);
4163  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_scalar);
4164  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_scalar_line_1102);
4165  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_truncated);
4166  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_truncated_line_1258);
4167  Py_CLEAR(clear_module_state->__pyx_n_s_clifford_vector_part);
4168  Py_CLEAR(clear_module_state->__pyx_kp_u_clifford_vector_part_line_1142);
4169  Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
4170  Py_CLEAR(clear_module_state->__pyx_n_s_close);
4171  Py_CLEAR(clear_module_state->__pyx_n_s_collections);
4172  Py_CLEAR(clear_module_state->__pyx_n_s_compare);
4173  Py_CLEAR(clear_module_state->__pyx_kp_u_compare_line_492);
4174  Py_CLEAR(clear_module_state->__pyx_n_s_complexifier);
4175  Py_CLEAR(clear_module_state->__pyx_kp_u_complexifier_line_1639);
4176  Py_CLEAR(clear_module_state->__pyx_n_s_conj);
4177  Py_CLEAR(clear_module_state->__pyx_kp_u_conj_line_1548);
4178  Py_CLEAR(clear_module_state->__pyx_n_s_copy);
4179  Py_CLEAR(clear_module_state->__pyx_n_s_cos);
4180  Py_CLEAR(clear_module_state->__pyx_kp_u_cos_line_1714);
4181  Py_CLEAR(clear_module_state->__pyx_n_s_cosh);
4182  Py_CLEAR(clear_module_state->__pyx_kp_u_cosh_line_1752);
4183  Py_CLEAR(clear_module_state->__pyx_n_s_count);
4184  Py_CLEAR(clear_module_state->__pyx_n_s_count_neg);
4185  Py_CLEAR(clear_module_state->__pyx_n_s_count_pos);
4186  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
4187  Py_CLEAR(clear_module_state->__pyx_n_s_doctest);
4188  Py_CLEAR(clear_module_state->__pyx_n_s_e);
4189  Py_CLEAR(clear_module_state->__pyx_kp_u_e_line_1999);
4190  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
4191  Py_CLEAR(clear_module_state->__pyx_n_s_encode);
4192  Py_CLEAR(clear_module_state->__pyx_n_s_err);
4193  Py_CLEAR(clear_module_state->__pyx_n_s_error_msg_prefix);
4194  Py_CLEAR(clear_module_state->__pyx_n_s_error_squared);
4195  Py_CLEAR(clear_module_state->__pyx_kp_u_error_squared_line_1409);
4196  Py_CLEAR(clear_module_state->__pyx_n_s_error_squared_tol);
4197  Py_CLEAR(clear_module_state->__pyx_kp_u_error_squared_tol_line_1400);
4198  Py_CLEAR(clear_module_state->__pyx_n_s_even);
4199  Py_CLEAR(clear_module_state->__pyx_kp_u_even_line_1500);
4200  Py_CLEAR(clear_module_state->__pyx_n_s_exp);
4201  Py_CLEAR(clear_module_state->__pyx_kp_u_exp_line_1677);
4202  Py_CLEAR(clear_module_state->__pyx_n_s_fill);
4203  Py_CLEAR(clear_module_state->__pyx_n_s_frame);
4204  Py_CLEAR(clear_module_state->__pyx_n_s_frm);
4205  Py_CLEAR(clear_module_state->__pyx_kp_u_from);
4206  Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
4207  Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
4208  Py_CLEAR(clear_module_state->__pyx_n_s_grade);
4209  Py_CLEAR(clear_module_state->__pyx_n_s_hash_fn);
4210  Py_CLEAR(clear_module_state->__pyx_n_s_i);
4211  Py_CLEAR(clear_module_state->__pyx_n_s_imag);
4212  Py_CLEAR(clear_module_state->__pyx_kp_u_imag_line_1478);
4213  Py_CLEAR(clear_module_state->__pyx_n_s_import);
4214  Py_CLEAR(clear_module_state->__pyx_n_s_index_set);
4215  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___and___line_271);
4216  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___getitem___line_191);
4217  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___iand___line_282);
4218  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___invert___line_240);
4219  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___ior___line_304);
4220  Py_CLEAR(clear_module_state->__pyx_n_s_index_set___iter);
4221  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___iter___line_229);
4222  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___ixor___line_260);
4223  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___or___line_293);
4224  Py_CLEAR(clear_module_state->__pyx_n_s_index_set___reduce_cython);
4225  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___repr___line_384);
4226  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___setitem___line_179);
4227  Py_CLEAR(clear_module_state->__pyx_n_s_index_set___setstate_cython);
4228  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___str___line_395);
4229  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set___xor___line_249);
4230  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_copy);
4231  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_copy_line_65);
4232  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_count);
4233  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_count_line_315);
4234  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_count_neg);
4235  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_count_neg_line_324);
4236  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_count_pos);
4237  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_count_pos_line_333);
4238  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_hash_fn);
4239  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_hidden_doctests);
4240  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_hidden_doctests_line_4);
4241  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_max);
4242  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_max_line_351);
4243  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_min);
4244  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_min_line_342);
4245  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_sign_of_mult);
4246  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_sign_of_mult_line_366);
4247  Py_CLEAR(clear_module_state->__pyx_n_s_index_set_sign_of_square);
4248  Py_CLEAR(clear_module_state->__pyx_kp_u_index_set_sign_of_square_line_37);
4249  Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
4250  Py_CLEAR(clear_module_state->__pyx_n_s_inv);
4251  Py_CLEAR(clear_module_state->__pyx_kp_u_inv_line_1441);
4252  Py_CLEAR(clear_module_state->__pyx_kp_u_invalid);
4253  Py_CLEAR(clear_module_state->__pyx_kp_u_invalid_string);
4254  Py_CLEAR(clear_module_state->__pyx_n_s_involute);
4255  Py_CLEAR(clear_module_state->__pyx_kp_u_involute_line_1518);
4256  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
4257  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
4258  Py_CLEAR(clear_module_state->__pyx_n_s_isinf);
4259  Py_CLEAR(clear_module_state->__pyx_n_s_isnan);
4260  Py_CLEAR(clear_module_state->__pyx_n_s_ist);
4261  Py_CLEAR(clear_module_state->__pyx_n_s_istpq);
4262  Py_CLEAR(clear_module_state->__pyx_kp_u_istpq_line_2012);
4263  Py_CLEAR(clear_module_state->__pyx_n_s_iter);
4264  Py_CLEAR(clear_module_state->__pyx_n_s_ixt);
4265  Py_CLEAR(clear_module_state->__pyx_kp_u_lexicographic_compare_eg_3_4_5);
4266  Py_CLEAR(clear_module_state->__pyx_n_s_lhs);
4267  Py_CLEAR(clear_module_state->__pyx_n_s_limit);
4268  Py_CLEAR(clear_module_state->__pyx_n_s_log);
4269  Py_CLEAR(clear_module_state->__pyx_kp_u_log_line_1691);
4270  Py_CLEAR(clear_module_state->__pyx_n_s_lst);
4271  Py_CLEAR(clear_module_state->__pyx_n_s_m);
4272  Py_CLEAR(clear_module_state->__pyx_n_s_main);
4273  Py_CLEAR(clear_module_state->__pyx_n_u_main);
4274  Py_CLEAR(clear_module_state->__pyx_n_s_math);
4275  Py_CLEAR(clear_module_state->__pyx_n_s_max);
4276  Py_CLEAR(clear_module_state->__pyx_n_s_max_abs);
4277  Py_CLEAR(clear_module_state->__pyx_kp_u_max_abs_line_1594);
4278  Py_CLEAR(clear_module_state->__pyx_n_s_max_pos);
4279  Py_CLEAR(clear_module_state->__pyx_kp_u_max_pos_line_513);
4280  Py_CLEAR(clear_module_state->__pyx_n_s_min);
4281  Py_CLEAR(clear_module_state->__pyx_n_s_min_neg);
4282  Py_CLEAR(clear_module_state->__pyx_kp_u_min_neg_line_504);
4283  Py_CLEAR(clear_module_state->__pyx_n_s_n);
4284  Py_CLEAR(clear_module_state->__pyx_n_s_name);
4285  Py_CLEAR(clear_module_state->__pyx_n_s_nbar3);
4286  Py_CLEAR(clear_module_state->__pyx_n_s_ninf3);
4287  Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
4288  Py_CLEAR(clear_module_state->__pyx_n_s_norm);
4289  Py_CLEAR(clear_module_state->__pyx_kp_u_norm_line_1574);
4290  Py_CLEAR(clear_module_state->__pyx_kp_u_norm_sum_of_squares_of_coordina);
4291  Py_CLEAR(clear_module_state->__pyx_n_s_numbers);
4292  Py_CLEAR(clear_module_state->__pyx_n_s_obj);
4293  Py_CLEAR(clear_module_state->__pyx_n_s_odd);
4294  Py_CLEAR(clear_module_state->__pyx_kp_u_odd_line_1509);
4295  Py_CLEAR(clear_module_state->__pyx_n_s_other);
4296  Py_CLEAR(clear_module_state->__pyx_n_s_outer_pow);
4297  Py_CLEAR(clear_module_state->__pyx_kp_u_outer_pow_line_1630);
4298  Py_CLEAR(clear_module_state->__pyx_n_s_p);
4299  Py_CLEAR(clear_module_state->__pyx_n_s_pi);
4300  Py_CLEAR(clear_module_state->__pyx_n_s_pow);
4301  Py_CLEAR(clear_module_state->__pyx_kp_u_pow_line_1606);
4302  Py_CLEAR(clear_module_state->__pyx_n_s_pure);
4303  Py_CLEAR(clear_module_state->__pyx_kp_u_pure_line_1489);
4304  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
4305  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
4306  Py_CLEAR(clear_module_state->__pyx_n_s_q);
4307  Py_CLEAR(clear_module_state->__pyx_n_s_quad);
4308  Py_CLEAR(clear_module_state->__pyx_kp_u_quad_line_1563);
4309  Py_CLEAR(clear_module_state->__pyx_n_s_random_clifford);
4310  Py_CLEAR(clear_module_state->__pyx_kp_u_random_clifford_line_1927);
4311  Py_CLEAR(clear_module_state->__pyx_n_s_range);
4312  Py_CLEAR(clear_module_state->__pyx_n_s_real);
4313  Py_CLEAR(clear_module_state->__pyx_kp_u_real_line_1467);
4314  Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
4315  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
4316  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
4317  Py_CLEAR(clear_module_state->__pyx_n_s_reframe);
4318  Py_CLEAR(clear_module_state->__pyx_n_s_result);
4319  Py_CLEAR(clear_module_state->__pyx_n_s_reverse);
4320  Py_CLEAR(clear_module_state->__pyx_kp_u_reverse_line_1533);
4321  Py_CLEAR(clear_module_state->__pyx_n_s_rhs);
4322  Py_CLEAR(clear_module_state->__pyx_n_s_scalar);
4323  Py_CLEAR(clear_module_state->__pyx_n_s_scalar_epsilon);
4324  Py_CLEAR(clear_module_state->__pyx_kp_u_scalar_line_1456);
4325  Py_CLEAR(clear_module_state->__pyx_n_s_self);
4326  Py_CLEAR(clear_module_state->__pyx_n_s_send);
4327  Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
4328  Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
4329  Py_CLEAR(clear_module_state->__pyx_n_s_sign_of_mult);
4330  Py_CLEAR(clear_module_state->__pyx_n_s_sign_of_square);
4331  Py_CLEAR(clear_module_state->__pyx_n_s_sin);
4332  Py_CLEAR(clear_module_state->__pyx_kp_u_sin_line_1791);
4333  Py_CLEAR(clear_module_state->__pyx_n_s_sinh);
4334  Py_CLEAR(clear_module_state->__pyx_kp_u_sinh_line_1831);
4335  Py_CLEAR(clear_module_state->__pyx_n_s_spec);
4336  Py_CLEAR(clear_module_state->__pyx_n_s_sqrt);
4337  Py_CLEAR(clear_module_state->__pyx_kp_u_sqrt_line_1654);
4338  Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
4339  Py_CLEAR(clear_module_state->__pyx_n_s_tan);
4340  Py_CLEAR(clear_module_state->__pyx_kp_u_tan_line_1864);
4341  Py_CLEAR(clear_module_state->__pyx_n_s_tanh);
4342  Py_CLEAR(clear_module_state->__pyx_kp_u_tanh_line_1898);
4343  Py_CLEAR(clear_module_state->__pyx_n_s_tau);
4344  Py_CLEAR(clear_module_state->__pyx_n_s_test);
4345  Py_CLEAR(clear_module_state->__pyx_n_s_test_2);
4346  Py_CLEAR(clear_module_state->__pyx_n_s_testmod);
4347  Py_CLEAR(clear_module_state->__pyx_n_s_threshold);
4348  Py_CLEAR(clear_module_state->__pyx_n_s_throw);
4349  Py_CLEAR(clear_module_state->__pyx_kp_u_to_frame);
4350  Py_CLEAR(clear_module_state->__pyx_n_s_tol);
4351  Py_CLEAR(clear_module_state->__pyx_n_s_truncated);
4352  Py_CLEAR(clear_module_state->__pyx_kp_u_using);
4353  Py_CLEAR(clear_module_state->__pyx_kp_u_using_invalid);
4354  Py_CLEAR(clear_module_state->__pyx_kp_u_utf_8);
4355  Py_CLEAR(clear_module_state->__pyx_kp_u_value);
4356  Py_CLEAR(clear_module_state->__pyx_n_s_vec);
4357  Py_CLEAR(clear_module_state->__pyx_n_s_vector_part);
4358  Py_CLEAR(clear_module_state->__pyx_n_s_version);
4359  Py_CLEAR(clear_module_state->__pyx_n_s_xrange);
4360  Py_CLEAR(clear_module_state->__pyx_float_0_0);
4361  Py_CLEAR(clear_module_state->__pyx_float_1_0);
4362  Py_CLEAR(clear_module_state->__pyx_float_4_0);
4363  Py_CLEAR(clear_module_state->__pyx_float_8_0);
4364  Py_CLEAR(clear_module_state->__pyx_int_0);
4365  Py_CLEAR(clear_module_state->__pyx_int_1);
4366  Py_CLEAR(clear_module_state->__pyx_int_4);
4367  Py_CLEAR(clear_module_state->__pyx_int_neg_1);
4368  Py_CLEAR(clear_module_state->__pyx_tuple__8);
4369  Py_CLEAR(clear_module_state->__pyx_tuple__10);
4370  Py_CLEAR(clear_module_state->__pyx_tuple__18);
4371  Py_CLEAR(clear_module_state->__pyx_tuple__22);
4372  Py_CLEAR(clear_module_state->__pyx_tuple__25);
4373  Py_CLEAR(clear_module_state->__pyx_tuple__27);
4374  Py_CLEAR(clear_module_state->__pyx_tuple__31);
4375  Py_CLEAR(clear_module_state->__pyx_tuple__34);
4376  Py_CLEAR(clear_module_state->__pyx_tuple__41);
4377  Py_CLEAR(clear_module_state->__pyx_tuple__43);
4378  Py_CLEAR(clear_module_state->__pyx_tuple__51);
4379  Py_CLEAR(clear_module_state->__pyx_tuple__60);
4380  Py_CLEAR(clear_module_state->__pyx_tuple__62);
4381  Py_CLEAR(clear_module_state->__pyx_tuple__64);
4382  Py_CLEAR(clear_module_state->__pyx_tuple__79);
4383  Py_CLEAR(clear_module_state->__pyx_tuple__83);
4384  Py_CLEAR(clear_module_state->__pyx_tuple__99);
4385  Py_CLEAR(clear_module_state->__pyx_tuple__101);
4386  Py_CLEAR(clear_module_state->__pyx_tuple__105);
4387  Py_CLEAR(clear_module_state->__pyx_tuple__107);
4388  Py_CLEAR(clear_module_state->__pyx_tuple__109);
4389  Py_CLEAR(clear_module_state->__pyx_tuple__110);
4390  Py_CLEAR(clear_module_state->__pyx_tuple__111);
4391  Py_CLEAR(clear_module_state->__pyx_codeobj__11);
4392  Py_CLEAR(clear_module_state->__pyx_codeobj__12);
4393  Py_CLEAR(clear_module_state->__pyx_codeobj__13);
4394  Py_CLEAR(clear_module_state->__pyx_codeobj__14);
4395  Py_CLEAR(clear_module_state->__pyx_codeobj__15);
4396  Py_CLEAR(clear_module_state->__pyx_codeobj__16);
4397  Py_CLEAR(clear_module_state->__pyx_codeobj__17);
4398  Py_CLEAR(clear_module_state->__pyx_codeobj__19);
4399  Py_CLEAR(clear_module_state->__pyx_codeobj__20);
4400  Py_CLEAR(clear_module_state->__pyx_codeobj__21);
4401  Py_CLEAR(clear_module_state->__pyx_codeobj__23);
4402  Py_CLEAR(clear_module_state->__pyx_codeobj__24);
4403  Py_CLEAR(clear_module_state->__pyx_codeobj__26);
4404  Py_CLEAR(clear_module_state->__pyx_codeobj__28);
4405  Py_CLEAR(clear_module_state->__pyx_codeobj__29);
4406  Py_CLEAR(clear_module_state->__pyx_codeobj__30);
4407  Py_CLEAR(clear_module_state->__pyx_codeobj__32);
4408  Py_CLEAR(clear_module_state->__pyx_codeobj__33);
4409  Py_CLEAR(clear_module_state->__pyx_codeobj__35);
4410  Py_CLEAR(clear_module_state->__pyx_codeobj__36);
4411  Py_CLEAR(clear_module_state->__pyx_codeobj__37);
4412  Py_CLEAR(clear_module_state->__pyx_codeobj__38);
4413  Py_CLEAR(clear_module_state->__pyx_codeobj__39);
4414  Py_CLEAR(clear_module_state->__pyx_codeobj__40);
4415  Py_CLEAR(clear_module_state->__pyx_codeobj__42);
4416  Py_CLEAR(clear_module_state->__pyx_codeobj__44);
4417  Py_CLEAR(clear_module_state->__pyx_codeobj__45);
4418  Py_CLEAR(clear_module_state->__pyx_codeobj__46);
4419  Py_CLEAR(clear_module_state->__pyx_codeobj__47);
4420  Py_CLEAR(clear_module_state->__pyx_codeobj__48);
4421  Py_CLEAR(clear_module_state->__pyx_codeobj__49);
4422  Py_CLEAR(clear_module_state->__pyx_codeobj__50);
4423  Py_CLEAR(clear_module_state->__pyx_codeobj__52);
4424  Py_CLEAR(clear_module_state->__pyx_codeobj__53);
4425  Py_CLEAR(clear_module_state->__pyx_codeobj__54);
4426  Py_CLEAR(clear_module_state->__pyx_codeobj__55);
4427  Py_CLEAR(clear_module_state->__pyx_codeobj__56);
4428  Py_CLEAR(clear_module_state->__pyx_codeobj__57);
4429  Py_CLEAR(clear_module_state->__pyx_codeobj__58);
4430  Py_CLEAR(clear_module_state->__pyx_codeobj__59);
4431  Py_CLEAR(clear_module_state->__pyx_codeobj__61);
4432  Py_CLEAR(clear_module_state->__pyx_codeobj__63);
4433  Py_CLEAR(clear_module_state->__pyx_codeobj__65);
4434  Py_CLEAR(clear_module_state->__pyx_codeobj__66);
4435  Py_CLEAR(clear_module_state->__pyx_codeobj__67);
4436  Py_CLEAR(clear_module_state->__pyx_codeobj__68);
4437  Py_CLEAR(clear_module_state->__pyx_codeobj__69);
4438  Py_CLEAR(clear_module_state->__pyx_codeobj__70);
4439  Py_CLEAR(clear_module_state->__pyx_codeobj__71);
4440  Py_CLEAR(clear_module_state->__pyx_codeobj__72);
4441  Py_CLEAR(clear_module_state->__pyx_codeobj__73);
4442  Py_CLEAR(clear_module_state->__pyx_codeobj__74);
4443  Py_CLEAR(clear_module_state->__pyx_codeobj__75);
4444  Py_CLEAR(clear_module_state->__pyx_codeobj__76);
4445  Py_CLEAR(clear_module_state->__pyx_codeobj__77);
4446  Py_CLEAR(clear_module_state->__pyx_codeobj__78);
4447  Py_CLEAR(clear_module_state->__pyx_codeobj__80);
4448  Py_CLEAR(clear_module_state->__pyx_codeobj__81);
4449  Py_CLEAR(clear_module_state->__pyx_codeobj__82);
4450  Py_CLEAR(clear_module_state->__pyx_codeobj__84);
4451  Py_CLEAR(clear_module_state->__pyx_codeobj__85);
4452  Py_CLEAR(clear_module_state->__pyx_codeobj__86);
4453  Py_CLEAR(clear_module_state->__pyx_codeobj__87);
4454  Py_CLEAR(clear_module_state->__pyx_codeobj__88);
4455  Py_CLEAR(clear_module_state->__pyx_codeobj__89);
4456  Py_CLEAR(clear_module_state->__pyx_codeobj__90);
4457  Py_CLEAR(clear_module_state->__pyx_codeobj__91);
4458  Py_CLEAR(clear_module_state->__pyx_codeobj__92);
4459  Py_CLEAR(clear_module_state->__pyx_codeobj__93);
4460  Py_CLEAR(clear_module_state->__pyx_codeobj__94);
4461  Py_CLEAR(clear_module_state->__pyx_codeobj__95);
4462  Py_CLEAR(clear_module_state->__pyx_codeobj__96);
4463  Py_CLEAR(clear_module_state->__pyx_codeobj__97);
4464  Py_CLEAR(clear_module_state->__pyx_codeobj__98);
4465  Py_CLEAR(clear_module_state->__pyx_codeobj__100);
4466  Py_CLEAR(clear_module_state->__pyx_codeobj__102);
4467  Py_CLEAR(clear_module_state->__pyx_codeobj__103);
4468  Py_CLEAR(clear_module_state->__pyx_codeobj__104);
4469  Py_CLEAR(clear_module_state->__pyx_codeobj__106);
4470  Py_CLEAR(clear_module_state->__pyx_codeobj__108);
4471  Py_CLEAR(clear_module_state->__pyx_codeobj__112);
4472  return 0;
4473 }
4474 #endif
4475 /* #### Code section: module_state_traverse ### */
4476 #if CYTHON_USE_MODULE_STATE
4477 static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
4478  __pyx_mstate *traverse_module_state = __pyx_mstate(m);
4479  if (!traverse_module_state) return 0;
4480  Py_VISIT(traverse_module_state->__pyx_d);
4481  Py_VISIT(traverse_module_state->__pyx_b);
4482  Py_VISIT(traverse_module_state->__pyx_cython_runtime);
4483  Py_VISIT(traverse_module_state->__pyx_empty_tuple);
4484  Py_VISIT(traverse_module_state->__pyx_empty_bytes);
4485  Py_VISIT(traverse_module_state->__pyx_empty_unicode);
4486  #ifdef __Pyx_CyFunction_USED
4487  Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
4488  #endif
4489  #ifdef __Pyx_FusedFunction_USED
4490  Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
4491  #endif
4492  Py_VISIT(traverse_module_state->__pyx_ptype_8PyClical_index_set);
4493  Py_VISIT(traverse_module_state->__pyx_type_8PyClical_index_set);
4494  Py_VISIT(traverse_module_state->__pyx_ptype_8PyClical_clifford);
4495  Py_VISIT(traverse_module_state->__pyx_type_8PyClical_clifford);
4496  Py_VISIT(traverse_module_state->__pyx_ptype_8PyClical___pyx_scope_struct____iter__);
4497  Py_VISIT(traverse_module_state->__pyx_type_8PyClical___pyx_scope_struct____iter__);
4498  Py_VISIT(traverse_module_state->__pyx_kp_u_);
4499  Py_VISIT(traverse_module_state->__pyx_kp_u_Abbreviation_for_clifford_index);
4500  Py_VISIT(traverse_module_state->__pyx_kp_u_Abbreviation_for_index_set_q_p);
4501  Py_VISIT(traverse_module_state->__pyx_kp_u_Absolute_value_of_multivector_m);
4502  Py_VISIT(traverse_module_state->__pyx_kp_u_Absolute_value_square_root_of_n);
4503  Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_initialize_clifford_objec);
4504  Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_initialize_index_set_obje);
4505  Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_reframe);
4506  Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_take_vector_part_of);
4507  Py_VISIT(traverse_module_state->__pyx_kp_u_Cardinality_Number_of_indices_i);
4508  Py_VISIT(traverse_module_state->__pyx_kp_u_Check_if_a_multivector_contains);
4509  Py_VISIT(traverse_module_state->__pyx_kp_u_Check_if_a_multivector_contains_2);
4510  Py_VISIT(traverse_module_state->__pyx_kp_u_Conjugation_reverse_o_involute);
4511  Py_VISIT(traverse_module_state->__pyx_kp_u_Conjugation_reverse_o_involute_2);
4512  Py_VISIT(traverse_module_state->__pyx_kp_u_Contraction_print_2_clifford_2);
4513  Py_VISIT(traverse_module_state->__pyx_kp_u_Contraction_print_clifford_1_cl);
4514  Py_VISIT(traverse_module_state->__pyx_kp_u_Contraction_x_clifford_1_x_clif);
4515  Py_VISIT(traverse_module_state->__pyx_kp_u_Convert_CGA3_null_vector_to_Euc);
4516  Py_VISIT(traverse_module_state->__pyx_kp_u_Convert_CGA3_null_vector_to_sta);
4517  Py_VISIT(traverse_module_state->__pyx_kp_u_Convert_Euclidean_3D_multivecto);
4518  Py_VISIT(traverse_module_state->__pyx_kp_u_Copy_this_clifford_object_x_cli);
4519  Py_VISIT(traverse_module_state->__pyx_kp_u_Copy_this_index_set_object_s_in);
4520  Py_VISIT(traverse_module_state->__pyx_kp_u_Cosine_of_multivector_with_opti);
4521  Py_VISIT(traverse_module_state->__pyx_kp_u_Even_part_of_multivector_sum_of);
4522  Py_VISIT(traverse_module_state->__pyx_kp_u_Even_part_of_multivector_sum_of_2);
4523  Py_VISIT(traverse_module_state->__pyx_kp_u_Exponential_of_multivector_x_cl);
4524  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_difference_print_1_cl);
4525  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_difference_print_clif);
4526  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_difference_x_clifford);
4527  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_multiplicative_invers);
4528  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_multiplicative_invers_2);
4529  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_product_print_2_cliff);
4530  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_product_print_cliffor);
4531  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_product_x_clifford_2);
4532  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_quotient_print_2_clif);
4533  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_quotient_print_cliffo);
4534  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_quotient_x_clifford_1);
4535  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_sum_print_1_clifford);
4536  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_sum_print_clifford_1);
4537  Py_VISIT(traverse_module_state->__pyx_kp_u_Geometric_sum_x_clifford_1_x_cl);
4538  Py_VISIT(traverse_module_state->__pyx_kp_u_Get_the_value_of_an_index_set_o);
4539  Py_VISIT(traverse_module_state->__pyx_kp_u_Hyperbolic_cosine_of_multivecto);
4540  Py_VISIT(traverse_module_state->__pyx_kp_u_Hyperbolic_sine_of_multivector);
4541  Py_VISIT(traverse_module_state->__pyx_kp_u_Hyperbolic_tangent_of_multivect);
4542  Py_VISIT(traverse_module_state->__pyx_kp_u_Imaginary_part_deprecated_alway);
4543  Py_VISIT(traverse_module_state->__pyx_n_s_IndexError);
4544  Py_VISIT(traverse_module_state->__pyx_kp_u_Inner_product_print_2_clifford);
4545  Py_VISIT(traverse_module_state->__pyx_kp_u_Inner_product_print_clifford_1);
4546  Py_VISIT(traverse_module_state->__pyx_kp_u_Inner_product_x_clifford_1_x_cl);
4547  Py_VISIT(traverse_module_state->__pyx_kp_u_Integer_power_of_multivector_ob);
4548  Py_VISIT(traverse_module_state->__pyx_n_s_Integral);
4549  Py_VISIT(traverse_module_state->__pyx_kp_u_Inverse_cosine_of_multivector_w);
4550  Py_VISIT(traverse_module_state->__pyx_kp_u_Inverse_hyperbolic_cosine_of_mu);
4551  Py_VISIT(traverse_module_state->__pyx_kp_u_Inverse_hyperbolic_sine_of_mult);
4552  Py_VISIT(traverse_module_state->__pyx_kp_u_Inverse_hyperbolic_tangent_of_m);
4553  Py_VISIT(traverse_module_state->__pyx_kp_u_Inverse_sine_of_multivector_wit);
4554  Py_VISIT(traverse_module_state->__pyx_kp_u_Inverse_tangent_of_multivector);
4555  Py_VISIT(traverse_module_state->__pyx_kp_u_Iterate_over_the_indices_of_an);
4556  Py_VISIT(traverse_module_state->__pyx_kp_u_Main_involution_each_i_is_repla);
4557  Py_VISIT(traverse_module_state->__pyx_kp_u_Main_involution_each_i_is_repla_2);
4558  Py_VISIT(traverse_module_state->__pyx_kp_u_Maximum_absolute_value_of_coord);
4559  Py_VISIT(traverse_module_state->__pyx_kp_u_Maximum_member_index_set_1_1_2);
4560  Py_VISIT(traverse_module_state->__pyx_kp_u_Maximum_of_absolute_values_of_c);
4561  Py_VISIT(traverse_module_state->__pyx_kp_u_Maximum_positive_index_or_0_if);
4562  Py_VISIT(traverse_module_state->__pyx_kp_u_Minimum_member_index_set_1_1_2);
4563  Py_VISIT(traverse_module_state->__pyx_kp_u_Minimum_negative_index_or_0_if);
4564  Py_VISIT(traverse_module_state->__pyx_kp_u_Natural_logarithm_of_multivecto);
4565  Py_VISIT(traverse_module_state->__pyx_kp_u_Norm_sum_of_squares_of_coordina);
4566  Py_VISIT(traverse_module_state->__pyx_n_s_NotImplemented);
4567  Py_VISIT(traverse_module_state->__pyx_kp_u_Not_applicable);
4568  Py_VISIT(traverse_module_state->__pyx_kp_u_Not_applicable_for_a_in_cliffor);
4569  Py_VISIT(traverse_module_state->__pyx_kp_u_Number_of_negative_indices_incl);
4570  Py_VISIT(traverse_module_state->__pyx_kp_u_Number_of_positive_indices_incl);
4571  Py_VISIT(traverse_module_state->__pyx_kp_u_Odd_part_of_multivector_sum_of);
4572  Py_VISIT(traverse_module_state->__pyx_kp_u_Odd_part_of_multivector_sum_of_2);
4573  Py_VISIT(traverse_module_state->__pyx_kp_u_Outer_product_power_of_multivec);
4574  Py_VISIT(traverse_module_state->__pyx_kp_u_Outer_product_power_x_clifford);
4575  Py_VISIT(traverse_module_state->__pyx_kp_u_Outer_product_print_2_clifford);
4576  Py_VISIT(traverse_module_state->__pyx_kp_u_Outer_product_print_clifford_1);
4577  Py_VISIT(traverse_module_state->__pyx_kp_u_Outer_product_x_clifford_1_x_cl);
4578  Py_VISIT(traverse_module_state->__pyx_kp_u_Power_self_to_the_m_x_clifford);
4579  Py_VISIT(traverse_module_state->__pyx_kp_u_Power_self_to_the_m_x_clifford_2);
4580  Py_VISIT(traverse_module_state->__pyx_kp_u_Pure_grade_vector_part_print_cl);
4581  Py_VISIT(traverse_module_state->__pyx_kp_u_Pure_part_print_clifford_1_1_1);
4582  Py_VISIT(traverse_module_state->__pyx_kp_u_Pure_part_print_pure_clifford_1);
4583  Py_VISIT(traverse_module_state->__pyx_kp_u_Put_self_into_a_larger_frame_co);
4584  Py_VISIT(traverse_module_state->__pyx_n_s_PyClical);
4585  Py_VISIT(traverse_module_state->__pyx_kp_s_PyClical_pyx);
4586  Py_VISIT(traverse_module_state->__pyx_kp_u_Quadratic_form_rev_x_x_0_print);
4587  Py_VISIT(traverse_module_state->__pyx_kp_u_Quadratic_form_rev_x_x_0_print_2);
4588  Py_VISIT(traverse_module_state->__pyx_kp_u_Quadratic_norm_error_tolerance);
4589  Py_VISIT(traverse_module_state->__pyx_kp_u_Random_multivector_within_a_fra);
4590  Py_VISIT(traverse_module_state->__pyx_n_s_Real);
4591  Py_VISIT(traverse_module_state->__pyx_kp_u_Real_part_synonym_for_scalar_pa);
4592  Py_VISIT(traverse_module_state->__pyx_kp_u_Relative_or_absolute_error_usin);
4593  Py_VISIT(traverse_module_state->__pyx_kp_u_Remove_all_terms_of_self_with_r);
4594  Py_VISIT(traverse_module_state->__pyx_kp_u_Reversion_eg_1_2_2_1_print_reve);
4595  Py_VISIT(traverse_module_state->__pyx_kp_u_Reversion_eg_clifford_1_cliffor);
4596  Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeError);
4597  Py_VISIT(traverse_module_state->__pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc);
4598  Py_VISIT(traverse_module_state->__pyx_kp_u_Scalar_part_scalar_clifford_1_1);
4599  Py_VISIT(traverse_module_state->__pyx_n_s_Sequence);
4600  Py_VISIT(traverse_module_state->__pyx_kp_u_Set_complement_not_print_index);
4601  Py_VISIT(traverse_module_state->__pyx_kp_u_Set_intersection_and_print_inde);
4602  Py_VISIT(traverse_module_state->__pyx_kp_u_Set_intersection_and_x_index_se);
4603  Py_VISIT(traverse_module_state->__pyx_kp_u_Set_the_value_of_an_index_set_o);
4604  Py_VISIT(traverse_module_state->__pyx_kp_u_Set_union_or_print_index_set_1);
4605  Py_VISIT(traverse_module_state->__pyx_kp_u_Set_union_or_x_index_set_1_x_in);
4606  Py_VISIT(traverse_module_state->__pyx_kp_u_Sign_of_geometric_product_of_tw);
4607  Py_VISIT(traverse_module_state->__pyx_kp_u_Sign_of_geometric_square_of_a_C);
4608  Py_VISIT(traverse_module_state->__pyx_kp_u_Sine_of_multivector_with_option);
4609  Py_VISIT(traverse_module_state->__pyx_kp_u_Square_root_of_1_which_commutes);
4610  Py_VISIT(traverse_module_state->__pyx_kp_u_Square_root_of_multivector_with);
4611  Py_VISIT(traverse_module_state->__pyx_kp_u_Subalgebra_generated_by_all_gen);
4612  Py_VISIT(traverse_module_state->__pyx_kp_u_Subscripting_map_from_index_set);
4613  Py_VISIT(traverse_module_state->__pyx_kp_u_Symmetric_set_difference_exclus);
4614  Py_VISIT(traverse_module_state->__pyx_kp_u_Symmetric_set_difference_exclus_2);
4615  Py_VISIT(traverse_module_state->__pyx_kp_u_Tangent_of_multivector_with_opt);
4616  Py_VISIT(traverse_module_state->__pyx_kp_u_Test_for_approximate_equality_o);
4617  Py_VISIT(traverse_module_state->__pyx_kp_u_Tests_for_functions_that_Doctes);
4618  Py_VISIT(traverse_module_state->__pyx_kp_u_Tests_for_functions_that_Doctes_2);
4619  Py_VISIT(traverse_module_state->__pyx_kp_u_The_informal_string_representat);
4620  Py_VISIT(traverse_module_state->__pyx_kp_u_The_informal_string_representat_2);
4621  Py_VISIT(traverse_module_state->__pyx_kp_u_The_official_string_representat);
4622  Py_VISIT(traverse_module_state->__pyx_kp_u_The_official_string_representat_2);
4623  Py_VISIT(traverse_module_state->__pyx_kp_u_This_comparison_operator_is_not);
4624  Py_VISIT(traverse_module_state->__pyx_kp_u_Transform_left_hand_side_using);
4625  Py_VISIT(traverse_module_state->__pyx_kp_u_Transform_left_hand_side_using_2);
4626  Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
4627  Py_VISIT(traverse_module_state->__pyx_kp_u_UTF_8);
4628  Py_VISIT(traverse_module_state->__pyx_kp_u_Unary_print_clifford_1_1);
4629  Py_VISIT(traverse_module_state->__pyx_kp_u_Unary_print_clifford_1_1_2);
4630  Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
4631  Py_VISIT(traverse_module_state->__pyx_kp_u_Vector_part_of_multivector_as_a);
4632  Py_VISIT(traverse_module_state->__pyx_n_s__113);
4633  Py_VISIT(traverse_module_state->__pyx_kp_u__2);
4634  Py_VISIT(traverse_module_state->__pyx_kp_u__3);
4635  Py_VISIT(traverse_module_state->__pyx_kp_u__4);
4636  Py_VISIT(traverse_module_state->__pyx_kp_u__5);
4637  Py_VISIT(traverse_module_state->__pyx_kp_u__6);
4638  Py_VISIT(traverse_module_state->__pyx_kp_u__7);
4639  Py_VISIT(traverse_module_state->__pyx_n_s__9);
4640  Py_VISIT(traverse_module_state->__pyx_n_s_abc);
4641  Py_VISIT(traverse_module_state->__pyx_n_s_abs);
4642  Py_VISIT(traverse_module_state->__pyx_kp_u_abs_line_1585);
4643  Py_VISIT(traverse_module_state->__pyx_n_s_acos);
4644  Py_VISIT(traverse_module_state->__pyx_kp_u_acos_line_1731);
4645  Py_VISIT(traverse_module_state->__pyx_n_s_acosh);
4646  Py_VISIT(traverse_module_state->__pyx_kp_u_acosh_line_1768);
4647  Py_VISIT(traverse_module_state->__pyx_n_s_agc3);
4648  Py_VISIT(traverse_module_state->__pyx_kp_u_agc3_line_1956);
4649  Py_VISIT(traverse_module_state->__pyx_n_s_approx_equal);
4650  Py_VISIT(traverse_module_state->__pyx_kp_u_approx_equal_line_1422);
4651  Py_VISIT(traverse_module_state->__pyx_n_s_args);
4652  Py_VISIT(traverse_module_state->__pyx_kp_u_as_frame);
4653  Py_VISIT(traverse_module_state->__pyx_n_s_asin);
4654  Py_VISIT(traverse_module_state->__pyx_kp_u_asin_line_1810);
4655  Py_VISIT(traverse_module_state->__pyx_n_s_asinh);
4656  Py_VISIT(traverse_module_state->__pyx_kp_u_asinh_line_1845);
4657  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
4658  Py_VISIT(traverse_module_state->__pyx_n_s_atan);
4659  Py_VISIT(traverse_module_state->__pyx_kp_u_atan_line_1881);
4660  Py_VISIT(traverse_module_state->__pyx_n_s_atanh);
4661  Py_VISIT(traverse_module_state->__pyx_kp_u_atanh_line_1910);
4662  Py_VISIT(traverse_module_state->__pyx_n_s_cga3);
4663  Py_VISIT(traverse_module_state->__pyx_kp_u_cga3_line_1936);
4664  Py_VISIT(traverse_module_state->__pyx_n_s_cga3std);
4665  Py_VISIT(traverse_module_state->__pyx_kp_u_cga3std_line_1945);
4666  Py_VISIT(traverse_module_state->__pyx_n_s_cl);
4667  Py_VISIT(traverse_module_state->__pyx_n_s_clifford);
4668  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___add___line_740);
4669  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___and___line_872);
4670  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___call___line_1083);
4671  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___getitem___line_707);
4672  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___iadd___line_760);
4673  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___iand___line_896);
4674  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___idiv___line_974);
4675  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___imod___line_857);
4676  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___imul___line_820);
4677  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___ior___line_1013);
4678  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___isub___line_789);
4679  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___iter___line_638);
4680  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___ixor___line_935);
4681  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___mod___line_833);
4682  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___mul___line_798);
4683  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___neg___line_722);
4684  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___or___line_1002);
4685  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___pos___line_731);
4686  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___pow___line_1024);
4687  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___radd___line_751);
4688  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___rand___line_887);
4689  Py_VISIT(traverse_module_state->__pyx_n_s_clifford___reduce_cython);
4690  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___repr___line_1298);
4691  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___rmod___line_848);
4692  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___rmul___line_811);
4693  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___rsub___line_780);
4694  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___rtruediv___line_965);
4695  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___rxor___line_926);
4696  Py_VISIT(traverse_module_state->__pyx_n_s_clifford___setstate_cython);
4697  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___str___line_1307);
4698  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___sub___line_769);
4699  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___truediv___line_950);
4700  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford___xor___line_911);
4701  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_abs);
4702  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_abs_line_1238);
4703  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_conj);
4704  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_conj_line_1201);
4705  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_copy);
4706  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_copy_line_556);
4707  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_even);
4708  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_even_line_1124);
4709  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_frame);
4710  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_frame_line_1287);
4711  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_hidden_doctests);
4712  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_hidden_doctests_line_13);
4713  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_inv);
4714  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_inv_line_989);
4715  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_involute);
4716  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_involute_line_1170);
4717  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_isinf);
4718  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_isinf_line_1269);
4719  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_isnan);
4720  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_isnan_line_1278);
4721  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_max_abs);
4722  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_max_abs_line_1247);
4723  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_norm);
4724  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_norm_line_1227);
4725  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_odd);
4726  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_odd_line_1133);
4727  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_outer_pow);
4728  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_outer_pow_line_1067);
4729  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_pow);
4730  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_pow_line_1043);
4731  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_pure);
4732  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_pure_line_1113);
4733  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_quad);
4734  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_quad_line_1216);
4735  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_reframe);
4736  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_reframe_line_649);
4737  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_reverse);
4738  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_reverse_line_1186);
4739  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_scalar);
4740  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_scalar_line_1102);
4741  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_truncated);
4742  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_truncated_line_1258);
4743  Py_VISIT(traverse_module_state->__pyx_n_s_clifford_vector_part);
4744  Py_VISIT(traverse_module_state->__pyx_kp_u_clifford_vector_part_line_1142);
4745  Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
4746  Py_VISIT(traverse_module_state->__pyx_n_s_close);
4747  Py_VISIT(traverse_module_state->__pyx_n_s_collections);
4748  Py_VISIT(traverse_module_state->__pyx_n_s_compare);
4749  Py_VISIT(traverse_module_state->__pyx_kp_u_compare_line_492);
4750  Py_VISIT(traverse_module_state->__pyx_n_s_complexifier);
4751  Py_VISIT(traverse_module_state->__pyx_kp_u_complexifier_line_1639);
4752  Py_VISIT(traverse_module_state->__pyx_n_s_conj);
4753  Py_VISIT(traverse_module_state->__pyx_kp_u_conj_line_1548);
4754  Py_VISIT(traverse_module_state->__pyx_n_s_copy);
4755  Py_VISIT(traverse_module_state->__pyx_n_s_cos);
4756  Py_VISIT(traverse_module_state->__pyx_kp_u_cos_line_1714);
4757  Py_VISIT(traverse_module_state->__pyx_n_s_cosh);
4758  Py_VISIT(traverse_module_state->__pyx_kp_u_cosh_line_1752);
4759  Py_VISIT(traverse_module_state->__pyx_n_s_count);
4760  Py_VISIT(traverse_module_state->__pyx_n_s_count_neg);
4761  Py_VISIT(traverse_module_state->__pyx_n_s_count_pos);
4762  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
4763  Py_VISIT(traverse_module_state->__pyx_n_s_doctest);
4764  Py_VISIT(traverse_module_state->__pyx_n_s_e);
4765  Py_VISIT(traverse_module_state->__pyx_kp_u_e_line_1999);
4766  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
4767  Py_VISIT(traverse_module_state->__pyx_n_s_encode);
4768  Py_VISIT(traverse_module_state->__pyx_n_s_err);
4769  Py_VISIT(traverse_module_state->__pyx_n_s_error_msg_prefix);
4770  Py_VISIT(traverse_module_state->__pyx_n_s_error_squared);
4771  Py_VISIT(traverse_module_state->__pyx_kp_u_error_squared_line_1409);
4772  Py_VISIT(traverse_module_state->__pyx_n_s_error_squared_tol);
4773  Py_VISIT(traverse_module_state->__pyx_kp_u_error_squared_tol_line_1400);
4774  Py_VISIT(traverse_module_state->__pyx_n_s_even);
4775  Py_VISIT(traverse_module_state->__pyx_kp_u_even_line_1500);
4776  Py_VISIT(traverse_module_state->__pyx_n_s_exp);
4777  Py_VISIT(traverse_module_state->__pyx_kp_u_exp_line_1677);
4778  Py_VISIT(traverse_module_state->__pyx_n_s_fill);
4779  Py_VISIT(traverse_module_state->__pyx_n_s_frame);
4780  Py_VISIT(traverse_module_state->__pyx_n_s_frm);
4781  Py_VISIT(traverse_module_state->__pyx_kp_u_from);
4782  Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
4783  Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
4784  Py_VISIT(traverse_module_state->__pyx_n_s_grade);
4785  Py_VISIT(traverse_module_state->__pyx_n_s_hash_fn);
4786  Py_VISIT(traverse_module_state->__pyx_n_s_i);
4787  Py_VISIT(traverse_module_state->__pyx_n_s_imag);
4788  Py_VISIT(traverse_module_state->__pyx_kp_u_imag_line_1478);
4789  Py_VISIT(traverse_module_state->__pyx_n_s_import);
4790  Py_VISIT(traverse_module_state->__pyx_n_s_index_set);
4791  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___and___line_271);
4792  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___getitem___line_191);
4793  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___iand___line_282);
4794  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___invert___line_240);
4795  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___ior___line_304);
4796  Py_VISIT(traverse_module_state->__pyx_n_s_index_set___iter);
4797  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___iter___line_229);
4798  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___ixor___line_260);
4799  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___or___line_293);
4800  Py_VISIT(traverse_module_state->__pyx_n_s_index_set___reduce_cython);
4801  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___repr___line_384);
4802  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___setitem___line_179);
4803  Py_VISIT(traverse_module_state->__pyx_n_s_index_set___setstate_cython);
4804  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___str___line_395);
4805  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set___xor___line_249);
4806  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_copy);
4807  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_copy_line_65);
4808  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_count);
4809  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_count_line_315);
4810  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_count_neg);
4811  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_count_neg_line_324);
4812  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_count_pos);
4813  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_count_pos_line_333);
4814  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_hash_fn);
4815  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_hidden_doctests);
4816  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_hidden_doctests_line_4);
4817  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_max);
4818  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_max_line_351);
4819  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_min);
4820  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_min_line_342);
4821  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_sign_of_mult);
4822  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_sign_of_mult_line_366);
4823  Py_VISIT(traverse_module_state->__pyx_n_s_index_set_sign_of_square);
4824  Py_VISIT(traverse_module_state->__pyx_kp_u_index_set_sign_of_square_line_37);
4825  Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
4826  Py_VISIT(traverse_module_state->__pyx_n_s_inv);
4827  Py_VISIT(traverse_module_state->__pyx_kp_u_inv_line_1441);
4828  Py_VISIT(traverse_module_state->__pyx_kp_u_invalid);
4829  Py_VISIT(traverse_module_state->__pyx_kp_u_invalid_string);
4830  Py_VISIT(traverse_module_state->__pyx_n_s_involute);
4831  Py_VISIT(traverse_module_state->__pyx_kp_u_involute_line_1518);
4832  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
4833  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
4834  Py_VISIT(traverse_module_state->__pyx_n_s_isinf);
4835  Py_VISIT(traverse_module_state->__pyx_n_s_isnan);
4836  Py_VISIT(traverse_module_state->__pyx_n_s_ist);
4837  Py_VISIT(traverse_module_state->__pyx_n_s_istpq);
4838  Py_VISIT(traverse_module_state->__pyx_kp_u_istpq_line_2012);
4839  Py_VISIT(traverse_module_state->__pyx_n_s_iter);
4840  Py_VISIT(traverse_module_state->__pyx_n_s_ixt);
4841  Py_VISIT(traverse_module_state->__pyx_kp_u_lexicographic_compare_eg_3_4_5);
4842  Py_VISIT(traverse_module_state->__pyx_n_s_lhs);
4843  Py_VISIT(traverse_module_state->__pyx_n_s_limit);
4844  Py_VISIT(traverse_module_state->__pyx_n_s_log);
4845  Py_VISIT(traverse_module_state->__pyx_kp_u_log_line_1691);
4846  Py_VISIT(traverse_module_state->__pyx_n_s_lst);
4847  Py_VISIT(traverse_module_state->__pyx_n_s_m);
4848  Py_VISIT(traverse_module_state->__pyx_n_s_main);
4849  Py_VISIT(traverse_module_state->__pyx_n_u_main);
4850  Py_VISIT(traverse_module_state->__pyx_n_s_math);
4851  Py_VISIT(traverse_module_state->__pyx_n_s_max);
4852  Py_VISIT(traverse_module_state->__pyx_n_s_max_abs);
4853  Py_VISIT(traverse_module_state->__pyx_kp_u_max_abs_line_1594);
4854  Py_VISIT(traverse_module_state->__pyx_n_s_max_pos);
4855  Py_VISIT(traverse_module_state->__pyx_kp_u_max_pos_line_513);
4856  Py_VISIT(traverse_module_state->__pyx_n_s_min);
4857  Py_VISIT(traverse_module_state->__pyx_n_s_min_neg);
4858  Py_VISIT(traverse_module_state->__pyx_kp_u_min_neg_line_504);
4859  Py_VISIT(traverse_module_state->__pyx_n_s_n);
4860  Py_VISIT(traverse_module_state->__pyx_n_s_name);
4861  Py_VISIT(traverse_module_state->__pyx_n_s_nbar3);
4862  Py_VISIT(traverse_module_state->__pyx_n_s_ninf3);
4863  Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
4864  Py_VISIT(traverse_module_state->__pyx_n_s_norm);
4865  Py_VISIT(traverse_module_state->__pyx_kp_u_norm_line_1574);
4866  Py_VISIT(traverse_module_state->__pyx_kp_u_norm_sum_of_squares_of_coordina);
4867  Py_VISIT(traverse_module_state->__pyx_n_s_numbers);
4868  Py_VISIT(traverse_module_state->__pyx_n_s_obj);
4869  Py_VISIT(traverse_module_state->__pyx_n_s_odd);
4870  Py_VISIT(traverse_module_state->__pyx_kp_u_odd_line_1509);
4871  Py_VISIT(traverse_module_state->__pyx_n_s_other);
4872  Py_VISIT(traverse_module_state->__pyx_n_s_outer_pow);
4873  Py_VISIT(traverse_module_state->__pyx_kp_u_outer_pow_line_1630);
4874  Py_VISIT(traverse_module_state->__pyx_n_s_p);
4875  Py_VISIT(traverse_module_state->__pyx_n_s_pi);
4876  Py_VISIT(traverse_module_state->__pyx_n_s_pow);
4877  Py_VISIT(traverse_module_state->__pyx_kp_u_pow_line_1606);
4878  Py_VISIT(traverse_module_state->__pyx_n_s_pure);
4879  Py_VISIT(traverse_module_state->__pyx_kp_u_pure_line_1489);
4880  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
4881  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
4882  Py_VISIT(traverse_module_state->__pyx_n_s_q);
4883  Py_VISIT(traverse_module_state->__pyx_n_s_quad);
4884  Py_VISIT(traverse_module_state->__pyx_kp_u_quad_line_1563);
4885  Py_VISIT(traverse_module_state->__pyx_n_s_random_clifford);
4886  Py_VISIT(traverse_module_state->__pyx_kp_u_random_clifford_line_1927);
4887  Py_VISIT(traverse_module_state->__pyx_n_s_range);
4888  Py_VISIT(traverse_module_state->__pyx_n_s_real);
4889  Py_VISIT(traverse_module_state->__pyx_kp_u_real_line_1467);
4890  Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
4891  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
4892  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
4893  Py_VISIT(traverse_module_state->__pyx_n_s_reframe);
4894  Py_VISIT(traverse_module_state->__pyx_n_s_result);
4895  Py_VISIT(traverse_module_state->__pyx_n_s_reverse);
4896  Py_VISIT(traverse_module_state->__pyx_kp_u_reverse_line_1533);
4897  Py_VISIT(traverse_module_state->__pyx_n_s_rhs);
4898  Py_VISIT(traverse_module_state->__pyx_n_s_scalar);
4899  Py_VISIT(traverse_module_state->__pyx_n_s_scalar_epsilon);
4900  Py_VISIT(traverse_module_state->__pyx_kp_u_scalar_line_1456);
4901  Py_VISIT(traverse_module_state->__pyx_n_s_self);
4902  Py_VISIT(traverse_module_state->__pyx_n_s_send);
4903  Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
4904  Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
4905  Py_VISIT(traverse_module_state->__pyx_n_s_sign_of_mult);
4906  Py_VISIT(traverse_module_state->__pyx_n_s_sign_of_square);
4907  Py_VISIT(traverse_module_state->__pyx_n_s_sin);
4908  Py_VISIT(traverse_module_state->__pyx_kp_u_sin_line_1791);
4909  Py_VISIT(traverse_module_state->__pyx_n_s_sinh);
4910  Py_VISIT(traverse_module_state->__pyx_kp_u_sinh_line_1831);
4911  Py_VISIT(traverse_module_state->__pyx_n_s_spec);
4912  Py_VISIT(traverse_module_state->__pyx_n_s_sqrt);
4913  Py_VISIT(traverse_module_state->__pyx_kp_u_sqrt_line_1654);
4914  Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
4915  Py_VISIT(traverse_module_state->__pyx_n_s_tan);
4916  Py_VISIT(traverse_module_state->__pyx_kp_u_tan_line_1864);
4917  Py_VISIT(traverse_module_state->__pyx_n_s_tanh);
4918  Py_VISIT(traverse_module_state->__pyx_kp_u_tanh_line_1898);
4919  Py_VISIT(traverse_module_state->__pyx_n_s_tau);
4920  Py_VISIT(traverse_module_state->__pyx_n_s_test);
4921  Py_VISIT(traverse_module_state->__pyx_n_s_test_2);
4922  Py_VISIT(traverse_module_state->__pyx_n_s_testmod);
4923  Py_VISIT(traverse_module_state->__pyx_n_s_threshold);
4924  Py_VISIT(traverse_module_state->__pyx_n_s_throw);
4925  Py_VISIT(traverse_module_state->__pyx_kp_u_to_frame);
4926  Py_VISIT(traverse_module_state->__pyx_n_s_tol);
4927  Py_VISIT(traverse_module_state->__pyx_n_s_truncated);
4928  Py_VISIT(traverse_module_state->__pyx_kp_u_using);
4929  Py_VISIT(traverse_module_state->__pyx_kp_u_using_invalid);
4930  Py_VISIT(traverse_module_state->__pyx_kp_u_utf_8);
4931  Py_VISIT(traverse_module_state->__pyx_kp_u_value);
4932  Py_VISIT(traverse_module_state->__pyx_n_s_vec);
4933  Py_VISIT(traverse_module_state->__pyx_n_s_vector_part);
4934  Py_VISIT(traverse_module_state->__pyx_n_s_version);
4935  Py_VISIT(traverse_module_state->__pyx_n_s_xrange);
4936  Py_VISIT(traverse_module_state->__pyx_float_0_0);
4937  Py_VISIT(traverse_module_state->__pyx_float_1_0);
4938  Py_VISIT(traverse_module_state->__pyx_float_4_0);
4939  Py_VISIT(traverse_module_state->__pyx_float_8_0);
4940  Py_VISIT(traverse_module_state->__pyx_int_0);
4941  Py_VISIT(traverse_module_state->__pyx_int_1);
4942  Py_VISIT(traverse_module_state->__pyx_int_4);
4943  Py_VISIT(traverse_module_state->__pyx_int_neg_1);
4944  Py_VISIT(traverse_module_state->__pyx_tuple__8);
4945  Py_VISIT(traverse_module_state->__pyx_tuple__10);
4946  Py_VISIT(traverse_module_state->__pyx_tuple__18);
4947  Py_VISIT(traverse_module_state->__pyx_tuple__22);
4948  Py_VISIT(traverse_module_state->__pyx_tuple__25);
4949  Py_VISIT(traverse_module_state->__pyx_tuple__27);
4950  Py_VISIT(traverse_module_state->__pyx_tuple__31);
4951  Py_VISIT(traverse_module_state->__pyx_tuple__34);
4952  Py_VISIT(traverse_module_state->__pyx_tuple__41);
4953  Py_VISIT(traverse_module_state->__pyx_tuple__43);
4954  Py_VISIT(traverse_module_state->__pyx_tuple__51);
4955  Py_VISIT(traverse_module_state->__pyx_tuple__60);
4956  Py_VISIT(traverse_module_state->__pyx_tuple__62);
4957  Py_VISIT(traverse_module_state->__pyx_tuple__64);
4958  Py_VISIT(traverse_module_state->__pyx_tuple__79);
4959  Py_VISIT(traverse_module_state->__pyx_tuple__83);
4960  Py_VISIT(traverse_module_state->__pyx_tuple__99);
4961  Py_VISIT(traverse_module_state->__pyx_tuple__101);
4962  Py_VISIT(traverse_module_state->__pyx_tuple__105);
4963  Py_VISIT(traverse_module_state->__pyx_tuple__107);
4964  Py_VISIT(traverse_module_state->__pyx_tuple__109);
4965  Py_VISIT(traverse_module_state->__pyx_tuple__110);
4966  Py_VISIT(traverse_module_state->__pyx_tuple__111);
4967  Py_VISIT(traverse_module_state->__pyx_codeobj__11);
4968  Py_VISIT(traverse_module_state->__pyx_codeobj__12);
4969  Py_VISIT(traverse_module_state->__pyx_codeobj__13);
4970  Py_VISIT(traverse_module_state->__pyx_codeobj__14);
4971  Py_VISIT(traverse_module_state->__pyx_codeobj__15);
4972  Py_VISIT(traverse_module_state->__pyx_codeobj__16);
4973  Py_VISIT(traverse_module_state->__pyx_codeobj__17);
4974  Py_VISIT(traverse_module_state->__pyx_codeobj__19);
4975  Py_VISIT(traverse_module_state->__pyx_codeobj__20);
4976  Py_VISIT(traverse_module_state->__pyx_codeobj__21);
4977  Py_VISIT(traverse_module_state->__pyx_codeobj__23);
4978  Py_VISIT(traverse_module_state->__pyx_codeobj__24);
4979  Py_VISIT(traverse_module_state->__pyx_codeobj__26);
4980  Py_VISIT(traverse_module_state->__pyx_codeobj__28);
4981  Py_VISIT(traverse_module_state->__pyx_codeobj__29);
4982  Py_VISIT(traverse_module_state->__pyx_codeobj__30);
4983  Py_VISIT(traverse_module_state->__pyx_codeobj__32);
4984  Py_VISIT(traverse_module_state->__pyx_codeobj__33);
4985  Py_VISIT(traverse_module_state->__pyx_codeobj__35);
4986  Py_VISIT(traverse_module_state->__pyx_codeobj__36);
4987  Py_VISIT(traverse_module_state->__pyx_codeobj__37);
4988  Py_VISIT(traverse_module_state->__pyx_codeobj__38);
4989  Py_VISIT(traverse_module_state->__pyx_codeobj__39);
4990  Py_VISIT(traverse_module_state->__pyx_codeobj__40);
4991  Py_VISIT(traverse_module_state->__pyx_codeobj__42);
4992  Py_VISIT(traverse_module_state->__pyx_codeobj__44);
4993  Py_VISIT(traverse_module_state->__pyx_codeobj__45);
4994  Py_VISIT(traverse_module_state->__pyx_codeobj__46);
4995  Py_VISIT(traverse_module_state->__pyx_codeobj__47);
4996  Py_VISIT(traverse_module_state->__pyx_codeobj__48);
4997  Py_VISIT(traverse_module_state->__pyx_codeobj__49);
4998  Py_VISIT(traverse_module_state->__pyx_codeobj__50);
4999  Py_VISIT(traverse_module_state->__pyx_codeobj__52);
5000  Py_VISIT(traverse_module_state->__pyx_codeobj__53);
5001  Py_VISIT(traverse_module_state->__pyx_codeobj__54);
5002  Py_VISIT(traverse_module_state->__pyx_codeobj__55);
5003  Py_VISIT(traverse_module_state->__pyx_codeobj__56);
5004  Py_VISIT(traverse_module_state->__pyx_codeobj__57);
5005  Py_VISIT(traverse_module_state->__pyx_codeobj__58);
5006  Py_VISIT(traverse_module_state->__pyx_codeobj__59);
5007  Py_VISIT(traverse_module_state->__pyx_codeobj__61);
5008  Py_VISIT(traverse_module_state->__pyx_codeobj__63);
5009  Py_VISIT(traverse_module_state->__pyx_codeobj__65);
5010  Py_VISIT(traverse_module_state->__pyx_codeobj__66);
5011  Py_VISIT(traverse_module_state->__pyx_codeobj__67);
5012  Py_VISIT(traverse_module_state->__pyx_codeobj__68);
5013  Py_VISIT(traverse_module_state->__pyx_codeobj__69);
5014  Py_VISIT(traverse_module_state->__pyx_codeobj__70);
5015  Py_VISIT(traverse_module_state->__pyx_codeobj__71);
5016  Py_VISIT(traverse_module_state->__pyx_codeobj__72);
5017  Py_VISIT(traverse_module_state->__pyx_codeobj__73);
5018  Py_VISIT(traverse_module_state->__pyx_codeobj__74);
5019  Py_VISIT(traverse_module_state->__pyx_codeobj__75);
5020  Py_VISIT(traverse_module_state->__pyx_codeobj__76);
5021  Py_VISIT(traverse_module_state->__pyx_codeobj__77);
5022  Py_VISIT(traverse_module_state->__pyx_codeobj__78);
5023  Py_VISIT(traverse_module_state->__pyx_codeobj__80);
5024  Py_VISIT(traverse_module_state->__pyx_codeobj__81);
5025  Py_VISIT(traverse_module_state->__pyx_codeobj__82);
5026  Py_VISIT(traverse_module_state->__pyx_codeobj__84);
5027  Py_VISIT(traverse_module_state->__pyx_codeobj__85);
5028  Py_VISIT(traverse_module_state->__pyx_codeobj__86);
5029  Py_VISIT(traverse_module_state->__pyx_codeobj__87);
5030  Py_VISIT(traverse_module_state->__pyx_codeobj__88);
5031  Py_VISIT(traverse_module_state->__pyx_codeobj__89);
5032  Py_VISIT(traverse_module_state->__pyx_codeobj__90);
5033  Py_VISIT(traverse_module_state->__pyx_codeobj__91);
5034  Py_VISIT(traverse_module_state->__pyx_codeobj__92);
5035  Py_VISIT(traverse_module_state->__pyx_codeobj__93);
5036  Py_VISIT(traverse_module_state->__pyx_codeobj__94);
5037  Py_VISIT(traverse_module_state->__pyx_codeobj__95);
5038  Py_VISIT(traverse_module_state->__pyx_codeobj__96);
5039  Py_VISIT(traverse_module_state->__pyx_codeobj__97);
5040  Py_VISIT(traverse_module_state->__pyx_codeobj__98);
5041  Py_VISIT(traverse_module_state->__pyx_codeobj__100);
5042  Py_VISIT(traverse_module_state->__pyx_codeobj__102);
5043  Py_VISIT(traverse_module_state->__pyx_codeobj__103);
5044  Py_VISIT(traverse_module_state->__pyx_codeobj__104);
5045  Py_VISIT(traverse_module_state->__pyx_codeobj__106);
5046  Py_VISIT(traverse_module_state->__pyx_codeobj__108);
5047  Py_VISIT(traverse_module_state->__pyx_codeobj__112);
5048  return 0;
5049 }
5050 #endif
5051 /* #### Code section: module_state_defines ### */
5052 #define __pyx_d __pyx_mstate_global->__pyx_d
5053 #define __pyx_b __pyx_mstate_global->__pyx_b
5054 #define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
5055 #define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
5056 #define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
5057 #define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
5058 #ifdef __Pyx_CyFunction_USED
5059 #define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
5060 #endif
5061 #ifdef __Pyx_FusedFunction_USED
5062 #define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
5063 #endif
5064 #ifdef __Pyx_Generator_USED
5065 #define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
5066 #endif
5067 #ifdef __Pyx_IterableCoroutine_USED
5068 #define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
5069 #endif
5070 #ifdef __Pyx_Coroutine_USED
5071 #define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
5072 #endif
5073 #ifdef __Pyx_Coroutine_USED
5074 #define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
5075 #endif
5076 #if CYTHON_USE_MODULE_STATE
5077 #endif
5078 #if CYTHON_USE_MODULE_STATE
5079 #endif
5080 #if CYTHON_USE_MODULE_STATE
5081 #endif
5082 #if CYTHON_USE_MODULE_STATE
5083 #endif
5084 #if CYTHON_USE_MODULE_STATE
5085 #define __pyx_type_8PyClical_index_set __pyx_mstate_global->__pyx_type_8PyClical_index_set
5086 #define __pyx_type_8PyClical_clifford __pyx_mstate_global->__pyx_type_8PyClical_clifford
5087 #define __pyx_type_8PyClical___pyx_scope_struct____iter__ __pyx_mstate_global->__pyx_type_8PyClical___pyx_scope_struct____iter__
5088 #endif
5089 #define __pyx_ptype_8PyClical_index_set __pyx_mstate_global->__pyx_ptype_8PyClical_index_set
5090 #define __pyx_ptype_8PyClical_clifford __pyx_mstate_global->__pyx_ptype_8PyClical_clifford
5091 #define __pyx_ptype_8PyClical___pyx_scope_struct____iter__ __pyx_mstate_global->__pyx_ptype_8PyClical___pyx_scope_struct____iter__
5092 #define __pyx_kp_u_ __pyx_mstate_global->__pyx_kp_u_
5093 #define __pyx_kp_u_Abbreviation_for_clifford_index __pyx_mstate_global->__pyx_kp_u_Abbreviation_for_clifford_index
5094 #define __pyx_kp_u_Abbreviation_for_index_set_q_p __pyx_mstate_global->__pyx_kp_u_Abbreviation_for_index_set_q_p
5095 #define __pyx_kp_u_Absolute_value_of_multivector_m __pyx_mstate_global->__pyx_kp_u_Absolute_value_of_multivector_m
5096 #define __pyx_kp_u_Absolute_value_square_root_of_n __pyx_mstate_global->__pyx_kp_u_Absolute_value_square_root_of_n
5097 #define __pyx_kp_u_Cannot_initialize_clifford_objec __pyx_mstate_global->__pyx_kp_u_Cannot_initialize_clifford_objec
5098 #define __pyx_kp_u_Cannot_initialize_index_set_obje __pyx_mstate_global->__pyx_kp_u_Cannot_initialize_index_set_obje
5099 #define __pyx_kp_u_Cannot_reframe __pyx_mstate_global->__pyx_kp_u_Cannot_reframe
5100 #define __pyx_kp_u_Cannot_take_vector_part_of __pyx_mstate_global->__pyx_kp_u_Cannot_take_vector_part_of
5101 #define __pyx_kp_u_Cardinality_Number_of_indices_i __pyx_mstate_global->__pyx_kp_u_Cardinality_Number_of_indices_i
5102 #define __pyx_kp_u_Check_if_a_multivector_contains __pyx_mstate_global->__pyx_kp_u_Check_if_a_multivector_contains
5103 #define __pyx_kp_u_Check_if_a_multivector_contains_2 __pyx_mstate_global->__pyx_kp_u_Check_if_a_multivector_contains_2
5104 #define __pyx_kp_u_Conjugation_reverse_o_involute __pyx_mstate_global->__pyx_kp_u_Conjugation_reverse_o_involute
5105 #define __pyx_kp_u_Conjugation_reverse_o_involute_2 __pyx_mstate_global->__pyx_kp_u_Conjugation_reverse_o_involute_2
5106 #define __pyx_kp_u_Contraction_print_2_clifford_2 __pyx_mstate_global->__pyx_kp_u_Contraction_print_2_clifford_2
5107 #define __pyx_kp_u_Contraction_print_clifford_1_cl __pyx_mstate_global->__pyx_kp_u_Contraction_print_clifford_1_cl
5108 #define __pyx_kp_u_Contraction_x_clifford_1_x_clif __pyx_mstate_global->__pyx_kp_u_Contraction_x_clifford_1_x_clif
5109 #define __pyx_kp_u_Convert_CGA3_null_vector_to_Euc __pyx_mstate_global->__pyx_kp_u_Convert_CGA3_null_vector_to_Euc
5110 #define __pyx_kp_u_Convert_CGA3_null_vector_to_sta __pyx_mstate_global->__pyx_kp_u_Convert_CGA3_null_vector_to_sta
5111 #define __pyx_kp_u_Convert_Euclidean_3D_multivecto __pyx_mstate_global->__pyx_kp_u_Convert_Euclidean_3D_multivecto
5112 #define __pyx_kp_u_Copy_this_clifford_object_x_cli __pyx_mstate_global->__pyx_kp_u_Copy_this_clifford_object_x_cli
5113 #define __pyx_kp_u_Copy_this_index_set_object_s_in __pyx_mstate_global->__pyx_kp_u_Copy_this_index_set_object_s_in
5114 #define __pyx_kp_u_Cosine_of_multivector_with_opti __pyx_mstate_global->__pyx_kp_u_Cosine_of_multivector_with_opti
5115 #define __pyx_kp_u_Even_part_of_multivector_sum_of __pyx_mstate_global->__pyx_kp_u_Even_part_of_multivector_sum_of
5116 #define __pyx_kp_u_Even_part_of_multivector_sum_of_2 __pyx_mstate_global->__pyx_kp_u_Even_part_of_multivector_sum_of_2
5117 #define __pyx_kp_u_Exponential_of_multivector_x_cl __pyx_mstate_global->__pyx_kp_u_Exponential_of_multivector_x_cl
5118 #define __pyx_kp_u_Geometric_difference_print_1_cl __pyx_mstate_global->__pyx_kp_u_Geometric_difference_print_1_cl
5119 #define __pyx_kp_u_Geometric_difference_print_clif __pyx_mstate_global->__pyx_kp_u_Geometric_difference_print_clif
5120 #define __pyx_kp_u_Geometric_difference_x_clifford __pyx_mstate_global->__pyx_kp_u_Geometric_difference_x_clifford
5121 #define __pyx_kp_u_Geometric_multiplicative_invers __pyx_mstate_global->__pyx_kp_u_Geometric_multiplicative_invers
5122 #define __pyx_kp_u_Geometric_multiplicative_invers_2 __pyx_mstate_global->__pyx_kp_u_Geometric_multiplicative_invers_2
5123 #define __pyx_kp_u_Geometric_product_print_2_cliff __pyx_mstate_global->__pyx_kp_u_Geometric_product_print_2_cliff
5124 #define __pyx_kp_u_Geometric_product_print_cliffor __pyx_mstate_global->__pyx_kp_u_Geometric_product_print_cliffor
5125 #define __pyx_kp_u_Geometric_product_x_clifford_2 __pyx_mstate_global->__pyx_kp_u_Geometric_product_x_clifford_2
5126 #define __pyx_kp_u_Geometric_quotient_print_2_clif __pyx_mstate_global->__pyx_kp_u_Geometric_quotient_print_2_clif
5127 #define __pyx_kp_u_Geometric_quotient_print_cliffo __pyx_mstate_global->__pyx_kp_u_Geometric_quotient_print_cliffo
5128 #define __pyx_kp_u_Geometric_quotient_x_clifford_1 __pyx_mstate_global->__pyx_kp_u_Geometric_quotient_x_clifford_1
5129 #define __pyx_kp_u_Geometric_sum_print_1_clifford __pyx_mstate_global->__pyx_kp_u_Geometric_sum_print_1_clifford
5130 #define __pyx_kp_u_Geometric_sum_print_clifford_1 __pyx_mstate_global->__pyx_kp_u_Geometric_sum_print_clifford_1
5131 #define __pyx_kp_u_Geometric_sum_x_clifford_1_x_cl __pyx_mstate_global->__pyx_kp_u_Geometric_sum_x_clifford_1_x_cl
5132 #define __pyx_kp_u_Get_the_value_of_an_index_set_o __pyx_mstate_global->__pyx_kp_u_Get_the_value_of_an_index_set_o
5133 #define __pyx_kp_u_Hyperbolic_cosine_of_multivecto __pyx_mstate_global->__pyx_kp_u_Hyperbolic_cosine_of_multivecto
5134 #define __pyx_kp_u_Hyperbolic_sine_of_multivector __pyx_mstate_global->__pyx_kp_u_Hyperbolic_sine_of_multivector
5135 #define __pyx_kp_u_Hyperbolic_tangent_of_multivect __pyx_mstate_global->__pyx_kp_u_Hyperbolic_tangent_of_multivect
5136 #define __pyx_kp_u_Imaginary_part_deprecated_alway __pyx_mstate_global->__pyx_kp_u_Imaginary_part_deprecated_alway
5137 #define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError
5138 #define __pyx_kp_u_Inner_product_print_2_clifford __pyx_mstate_global->__pyx_kp_u_Inner_product_print_2_clifford
5139 #define __pyx_kp_u_Inner_product_print_clifford_1 __pyx_mstate_global->__pyx_kp_u_Inner_product_print_clifford_1
5140 #define __pyx_kp_u_Inner_product_x_clifford_1_x_cl __pyx_mstate_global->__pyx_kp_u_Inner_product_x_clifford_1_x_cl
5141 #define __pyx_kp_u_Integer_power_of_multivector_ob __pyx_mstate_global->__pyx_kp_u_Integer_power_of_multivector_ob
5142 #define __pyx_n_s_Integral __pyx_mstate_global->__pyx_n_s_Integral
5143 #define __pyx_kp_u_Inverse_cosine_of_multivector_w __pyx_mstate_global->__pyx_kp_u_Inverse_cosine_of_multivector_w
5144 #define __pyx_kp_u_Inverse_hyperbolic_cosine_of_mu __pyx_mstate_global->__pyx_kp_u_Inverse_hyperbolic_cosine_of_mu
5145 #define __pyx_kp_u_Inverse_hyperbolic_sine_of_mult __pyx_mstate_global->__pyx_kp_u_Inverse_hyperbolic_sine_of_mult
5146 #define __pyx_kp_u_Inverse_hyperbolic_tangent_of_m __pyx_mstate_global->__pyx_kp_u_Inverse_hyperbolic_tangent_of_m
5147 #define __pyx_kp_u_Inverse_sine_of_multivector_wit __pyx_mstate_global->__pyx_kp_u_Inverse_sine_of_multivector_wit
5148 #define __pyx_kp_u_Inverse_tangent_of_multivector __pyx_mstate_global->__pyx_kp_u_Inverse_tangent_of_multivector
5149 #define __pyx_kp_u_Iterate_over_the_indices_of_an __pyx_mstate_global->__pyx_kp_u_Iterate_over_the_indices_of_an
5150 #define __pyx_kp_u_Main_involution_each_i_is_repla __pyx_mstate_global->__pyx_kp_u_Main_involution_each_i_is_repla
5151 #define __pyx_kp_u_Main_involution_each_i_is_repla_2 __pyx_mstate_global->__pyx_kp_u_Main_involution_each_i_is_repla_2
5152 #define __pyx_kp_u_Maximum_absolute_value_of_coord __pyx_mstate_global->__pyx_kp_u_Maximum_absolute_value_of_coord
5153 #define __pyx_kp_u_Maximum_member_index_set_1_1_2 __pyx_mstate_global->__pyx_kp_u_Maximum_member_index_set_1_1_2
5154 #define __pyx_kp_u_Maximum_of_absolute_values_of_c __pyx_mstate_global->__pyx_kp_u_Maximum_of_absolute_values_of_c
5155 #define __pyx_kp_u_Maximum_positive_index_or_0_if __pyx_mstate_global->__pyx_kp_u_Maximum_positive_index_or_0_if
5156 #define __pyx_kp_u_Minimum_member_index_set_1_1_2 __pyx_mstate_global->__pyx_kp_u_Minimum_member_index_set_1_1_2
5157 #define __pyx_kp_u_Minimum_negative_index_or_0_if __pyx_mstate_global->__pyx_kp_u_Minimum_negative_index_or_0_if
5158 #define __pyx_kp_u_Natural_logarithm_of_multivecto __pyx_mstate_global->__pyx_kp_u_Natural_logarithm_of_multivecto
5159 #define __pyx_kp_u_Norm_sum_of_squares_of_coordina __pyx_mstate_global->__pyx_kp_u_Norm_sum_of_squares_of_coordina
5160 #define __pyx_n_s_NotImplemented __pyx_mstate_global->__pyx_n_s_NotImplemented
5161 #define __pyx_kp_u_Not_applicable __pyx_mstate_global->__pyx_kp_u_Not_applicable
5162 #define __pyx_kp_u_Not_applicable_for_a_in_cliffor __pyx_mstate_global->__pyx_kp_u_Not_applicable_for_a_in_cliffor
5163 #define __pyx_kp_u_Number_of_negative_indices_incl __pyx_mstate_global->__pyx_kp_u_Number_of_negative_indices_incl
5164 #define __pyx_kp_u_Number_of_positive_indices_incl __pyx_mstate_global->__pyx_kp_u_Number_of_positive_indices_incl
5165 #define __pyx_kp_u_Odd_part_of_multivector_sum_of __pyx_mstate_global->__pyx_kp_u_Odd_part_of_multivector_sum_of
5166 #define __pyx_kp_u_Odd_part_of_multivector_sum_of_2 __pyx_mstate_global->__pyx_kp_u_Odd_part_of_multivector_sum_of_2
5167 #define __pyx_kp_u_Outer_product_power_of_multivec __pyx_mstate_global->__pyx_kp_u_Outer_product_power_of_multivec
5168 #define __pyx_kp_u_Outer_product_power_x_clifford __pyx_mstate_global->__pyx_kp_u_Outer_product_power_x_clifford
5169 #define __pyx_kp_u_Outer_product_print_2_clifford __pyx_mstate_global->__pyx_kp_u_Outer_product_print_2_clifford
5170 #define __pyx_kp_u_Outer_product_print_clifford_1 __pyx_mstate_global->__pyx_kp_u_Outer_product_print_clifford_1
5171 #define __pyx_kp_u_Outer_product_x_clifford_1_x_cl __pyx_mstate_global->__pyx_kp_u_Outer_product_x_clifford_1_x_cl
5172 #define __pyx_kp_u_Power_self_to_the_m_x_clifford __pyx_mstate_global->__pyx_kp_u_Power_self_to_the_m_x_clifford
5173 #define __pyx_kp_u_Power_self_to_the_m_x_clifford_2 __pyx_mstate_global->__pyx_kp_u_Power_self_to_the_m_x_clifford_2
5174 #define __pyx_kp_u_Pure_grade_vector_part_print_cl __pyx_mstate_global->__pyx_kp_u_Pure_grade_vector_part_print_cl
5175 #define __pyx_kp_u_Pure_part_print_clifford_1_1_1 __pyx_mstate_global->__pyx_kp_u_Pure_part_print_clifford_1_1_1
5176 #define __pyx_kp_u_Pure_part_print_pure_clifford_1 __pyx_mstate_global->__pyx_kp_u_Pure_part_print_pure_clifford_1
5177 #define __pyx_kp_u_Put_self_into_a_larger_frame_co __pyx_mstate_global->__pyx_kp_u_Put_self_into_a_larger_frame_co
5178 #define __pyx_n_s_PyClical __pyx_mstate_global->__pyx_n_s_PyClical
5179 #define __pyx_kp_s_PyClical_pyx __pyx_mstate_global->__pyx_kp_s_PyClical_pyx
5180 #define __pyx_kp_u_Quadratic_form_rev_x_x_0_print __pyx_mstate_global->__pyx_kp_u_Quadratic_form_rev_x_x_0_print
5181 #define __pyx_kp_u_Quadratic_form_rev_x_x_0_print_2 __pyx_mstate_global->__pyx_kp_u_Quadratic_form_rev_x_x_0_print_2
5182 #define __pyx_kp_u_Quadratic_norm_error_tolerance __pyx_mstate_global->__pyx_kp_u_Quadratic_norm_error_tolerance
5183 #define __pyx_kp_u_Random_multivector_within_a_fra __pyx_mstate_global->__pyx_kp_u_Random_multivector_within_a_fra
5184 #define __pyx_n_s_Real __pyx_mstate_global->__pyx_n_s_Real
5185 #define __pyx_kp_u_Real_part_synonym_for_scalar_pa __pyx_mstate_global->__pyx_kp_u_Real_part_synonym_for_scalar_pa
5186 #define __pyx_kp_u_Relative_or_absolute_error_usin __pyx_mstate_global->__pyx_kp_u_Relative_or_absolute_error_usin
5187 #define __pyx_kp_u_Remove_all_terms_of_self_with_r __pyx_mstate_global->__pyx_kp_u_Remove_all_terms_of_self_with_r
5188 #define __pyx_kp_u_Reversion_eg_1_2_2_1_print_reve __pyx_mstate_global->__pyx_kp_u_Reversion_eg_1_2_2_1_print_reve
5189 #define __pyx_kp_u_Reversion_eg_clifford_1_cliffor __pyx_mstate_global->__pyx_kp_u_Reversion_eg_clifford_1_cliffor
5190 #define __pyx_n_s_RuntimeError __pyx_mstate_global->__pyx_n_s_RuntimeError
5191 #define __pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc __pyx_mstate_global->__pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc
5192 #define __pyx_kp_u_Scalar_part_scalar_clifford_1_1 __pyx_mstate_global->__pyx_kp_u_Scalar_part_scalar_clifford_1_1
5193 #define __pyx_n_s_Sequence __pyx_mstate_global->__pyx_n_s_Sequence
5194 #define __pyx_kp_u_Set_complement_not_print_index __pyx_mstate_global->__pyx_kp_u_Set_complement_not_print_index
5195 #define __pyx_kp_u_Set_intersection_and_print_inde __pyx_mstate_global->__pyx_kp_u_Set_intersection_and_print_inde
5196 #define __pyx_kp_u_Set_intersection_and_x_index_se __pyx_mstate_global->__pyx_kp_u_Set_intersection_and_x_index_se
5197 #define __pyx_kp_u_Set_the_value_of_an_index_set_o __pyx_mstate_global->__pyx_kp_u_Set_the_value_of_an_index_set_o
5198 #define __pyx_kp_u_Set_union_or_print_index_set_1 __pyx_mstate_global->__pyx_kp_u_Set_union_or_print_index_set_1
5199 #define __pyx_kp_u_Set_union_or_x_index_set_1_x_in __pyx_mstate_global->__pyx_kp_u_Set_union_or_x_index_set_1_x_in
5200 #define __pyx_kp_u_Sign_of_geometric_product_of_tw __pyx_mstate_global->__pyx_kp_u_Sign_of_geometric_product_of_tw
5201 #define __pyx_kp_u_Sign_of_geometric_square_of_a_C __pyx_mstate_global->__pyx_kp_u_Sign_of_geometric_square_of_a_C
5202 #define __pyx_kp_u_Sine_of_multivector_with_option __pyx_mstate_global->__pyx_kp_u_Sine_of_multivector_with_option
5203 #define __pyx_kp_u_Square_root_of_1_which_commutes __pyx_mstate_global->__pyx_kp_u_Square_root_of_1_which_commutes
5204 #define __pyx_kp_u_Square_root_of_multivector_with __pyx_mstate_global->__pyx_kp_u_Square_root_of_multivector_with
5205 #define __pyx_kp_u_Subalgebra_generated_by_all_gen __pyx_mstate_global->__pyx_kp_u_Subalgebra_generated_by_all_gen
5206 #define __pyx_kp_u_Subscripting_map_from_index_set __pyx_mstate_global->__pyx_kp_u_Subscripting_map_from_index_set
5207 #define __pyx_kp_u_Symmetric_set_difference_exclus __pyx_mstate_global->__pyx_kp_u_Symmetric_set_difference_exclus
5208 #define __pyx_kp_u_Symmetric_set_difference_exclus_2 __pyx_mstate_global->__pyx_kp_u_Symmetric_set_difference_exclus_2
5209 #define __pyx_kp_u_Tangent_of_multivector_with_opt __pyx_mstate_global->__pyx_kp_u_Tangent_of_multivector_with_opt
5210 #define __pyx_kp_u_Test_for_approximate_equality_o __pyx_mstate_global->__pyx_kp_u_Test_for_approximate_equality_o
5211 #define __pyx_kp_u_Tests_for_functions_that_Doctes __pyx_mstate_global->__pyx_kp_u_Tests_for_functions_that_Doctes
5212 #define __pyx_kp_u_Tests_for_functions_that_Doctes_2 __pyx_mstate_global->__pyx_kp_u_Tests_for_functions_that_Doctes_2
5213 #define __pyx_kp_u_The_informal_string_representat __pyx_mstate_global->__pyx_kp_u_The_informal_string_representat
5214 #define __pyx_kp_u_The_informal_string_representat_2 __pyx_mstate_global->__pyx_kp_u_The_informal_string_representat_2
5215 #define __pyx_kp_u_The_official_string_representat __pyx_mstate_global->__pyx_kp_u_The_official_string_representat
5216 #define __pyx_kp_u_The_official_string_representat_2 __pyx_mstate_global->__pyx_kp_u_The_official_string_representat_2
5217 #define __pyx_kp_u_This_comparison_operator_is_not __pyx_mstate_global->__pyx_kp_u_This_comparison_operator_is_not
5218 #define __pyx_kp_u_Transform_left_hand_side_using __pyx_mstate_global->__pyx_kp_u_Transform_left_hand_side_using
5219 #define __pyx_kp_u_Transform_left_hand_side_using_2 __pyx_mstate_global->__pyx_kp_u_Transform_left_hand_side_using_2
5220 #define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
5221 #define __pyx_kp_u_UTF_8 __pyx_mstate_global->__pyx_kp_u_UTF_8
5222 #define __pyx_kp_u_Unary_print_clifford_1_1 __pyx_mstate_global->__pyx_kp_u_Unary_print_clifford_1_1
5223 #define __pyx_kp_u_Unary_print_clifford_1_1_2 __pyx_mstate_global->__pyx_kp_u_Unary_print_clifford_1_1_2
5224 #define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
5225 #define __pyx_kp_u_Vector_part_of_multivector_as_a __pyx_mstate_global->__pyx_kp_u_Vector_part_of_multivector_as_a
5226 #define __pyx_n_s__113 __pyx_mstate_global->__pyx_n_s__113
5227 #define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2
5228 #define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3
5229 #define __pyx_kp_u__4 __pyx_mstate_global->__pyx_kp_u__4
5230 #define __pyx_kp_u__5 __pyx_mstate_global->__pyx_kp_u__5
5231 #define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6
5232 #define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7
5233 #define __pyx_n_s__9 __pyx_mstate_global->__pyx_n_s__9
5234 #define __pyx_n_s_abc __pyx_mstate_global->__pyx_n_s_abc
5235 #define __pyx_n_s_abs __pyx_mstate_global->__pyx_n_s_abs
5236 #define __pyx_kp_u_abs_line_1585 __pyx_mstate_global->__pyx_kp_u_abs_line_1585
5237 #define __pyx_n_s_acos __pyx_mstate_global->__pyx_n_s_acos
5238 #define __pyx_kp_u_acos_line_1731 __pyx_mstate_global->__pyx_kp_u_acos_line_1731
5239 #define __pyx_n_s_acosh __pyx_mstate_global->__pyx_n_s_acosh
5240 #define __pyx_kp_u_acosh_line_1768 __pyx_mstate_global->__pyx_kp_u_acosh_line_1768
5241 #define __pyx_n_s_agc3 __pyx_mstate_global->__pyx_n_s_agc3
5242 #define __pyx_kp_u_agc3_line_1956 __pyx_mstate_global->__pyx_kp_u_agc3_line_1956
5243 #define __pyx_n_s_approx_equal __pyx_mstate_global->__pyx_n_s_approx_equal
5244 #define __pyx_kp_u_approx_equal_line_1422 __pyx_mstate_global->__pyx_kp_u_approx_equal_line_1422
5245 #define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
5246 #define __pyx_kp_u_as_frame __pyx_mstate_global->__pyx_kp_u_as_frame
5247 #define __pyx_n_s_asin __pyx_mstate_global->__pyx_n_s_asin
5248 #define __pyx_kp_u_asin_line_1810 __pyx_mstate_global->__pyx_kp_u_asin_line_1810
5249 #define __pyx_n_s_asinh __pyx_mstate_global->__pyx_n_s_asinh
5250 #define __pyx_kp_u_asinh_line_1845 __pyx_mstate_global->__pyx_kp_u_asinh_line_1845
5251 #define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
5252 #define __pyx_n_s_atan __pyx_mstate_global->__pyx_n_s_atan
5253 #define __pyx_kp_u_atan_line_1881 __pyx_mstate_global->__pyx_kp_u_atan_line_1881
5254 #define __pyx_n_s_atanh __pyx_mstate_global->__pyx_n_s_atanh
5255 #define __pyx_kp_u_atanh_line_1910 __pyx_mstate_global->__pyx_kp_u_atanh_line_1910
5256 #define __pyx_n_s_cga3 __pyx_mstate_global->__pyx_n_s_cga3
5257 #define __pyx_kp_u_cga3_line_1936 __pyx_mstate_global->__pyx_kp_u_cga3_line_1936
5258 #define __pyx_n_s_cga3std __pyx_mstate_global->__pyx_n_s_cga3std
5259 #define __pyx_kp_u_cga3std_line_1945 __pyx_mstate_global->__pyx_kp_u_cga3std_line_1945
5260 #define __pyx_n_s_cl __pyx_mstate_global->__pyx_n_s_cl
5261 #define __pyx_n_s_clifford __pyx_mstate_global->__pyx_n_s_clifford
5262 #define __pyx_kp_u_clifford___add___line_740 __pyx_mstate_global->__pyx_kp_u_clifford___add___line_740
5263 #define __pyx_kp_u_clifford___and___line_872 __pyx_mstate_global->__pyx_kp_u_clifford___and___line_872
5264 #define __pyx_kp_u_clifford___call___line_1083 __pyx_mstate_global->__pyx_kp_u_clifford___call___line_1083
5265 #define __pyx_kp_u_clifford___getitem___line_707 __pyx_mstate_global->__pyx_kp_u_clifford___getitem___line_707
5266 #define __pyx_kp_u_clifford___iadd___line_760 __pyx_mstate_global->__pyx_kp_u_clifford___iadd___line_760
5267 #define __pyx_kp_u_clifford___iand___line_896 __pyx_mstate_global->__pyx_kp_u_clifford___iand___line_896
5268 #define __pyx_kp_u_clifford___idiv___line_974 __pyx_mstate_global->__pyx_kp_u_clifford___idiv___line_974
5269 #define __pyx_kp_u_clifford___imod___line_857 __pyx_mstate_global->__pyx_kp_u_clifford___imod___line_857
5270 #define __pyx_kp_u_clifford___imul___line_820 __pyx_mstate_global->__pyx_kp_u_clifford___imul___line_820
5271 #define __pyx_kp_u_clifford___ior___line_1013 __pyx_mstate_global->__pyx_kp_u_clifford___ior___line_1013
5272 #define __pyx_kp_u_clifford___isub___line_789 __pyx_mstate_global->__pyx_kp_u_clifford___isub___line_789
5273 #define __pyx_kp_u_clifford___iter___line_638 __pyx_mstate_global->__pyx_kp_u_clifford___iter___line_638
5274 #define __pyx_kp_u_clifford___ixor___line_935 __pyx_mstate_global->__pyx_kp_u_clifford___ixor___line_935
5275 #define __pyx_kp_u_clifford___mod___line_833 __pyx_mstate_global->__pyx_kp_u_clifford___mod___line_833
5276 #define __pyx_kp_u_clifford___mul___line_798 __pyx_mstate_global->__pyx_kp_u_clifford___mul___line_798
5277 #define __pyx_kp_u_clifford___neg___line_722 __pyx_mstate_global->__pyx_kp_u_clifford___neg___line_722
5278 #define __pyx_kp_u_clifford___or___line_1002 __pyx_mstate_global->__pyx_kp_u_clifford___or___line_1002
5279 #define __pyx_kp_u_clifford___pos___line_731 __pyx_mstate_global->__pyx_kp_u_clifford___pos___line_731
5280 #define __pyx_kp_u_clifford___pow___line_1024 __pyx_mstate_global->__pyx_kp_u_clifford___pow___line_1024
5281 #define __pyx_kp_u_clifford___radd___line_751 __pyx_mstate_global->__pyx_kp_u_clifford___radd___line_751
5282 #define __pyx_kp_u_clifford___rand___line_887 __pyx_mstate_global->__pyx_kp_u_clifford___rand___line_887
5283 #define __pyx_n_s_clifford___reduce_cython __pyx_mstate_global->__pyx_n_s_clifford___reduce_cython
5284 #define __pyx_kp_u_clifford___repr___line_1298 __pyx_mstate_global->__pyx_kp_u_clifford___repr___line_1298
5285 #define __pyx_kp_u_clifford___rmod___line_848 __pyx_mstate_global->__pyx_kp_u_clifford___rmod___line_848
5286 #define __pyx_kp_u_clifford___rmul___line_811 __pyx_mstate_global->__pyx_kp_u_clifford___rmul___line_811
5287 #define __pyx_kp_u_clifford___rsub___line_780 __pyx_mstate_global->__pyx_kp_u_clifford___rsub___line_780
5288 #define __pyx_kp_u_clifford___rtruediv___line_965 __pyx_mstate_global->__pyx_kp_u_clifford___rtruediv___line_965
5289 #define __pyx_kp_u_clifford___rxor___line_926 __pyx_mstate_global->__pyx_kp_u_clifford___rxor___line_926
5290 #define __pyx_n_s_clifford___setstate_cython __pyx_mstate_global->__pyx_n_s_clifford___setstate_cython
5291 #define __pyx_kp_u_clifford___str___line_1307 __pyx_mstate_global->__pyx_kp_u_clifford___str___line_1307
5292 #define __pyx_kp_u_clifford___sub___line_769 __pyx_mstate_global->__pyx_kp_u_clifford___sub___line_769
5293 #define __pyx_kp_u_clifford___truediv___line_950 __pyx_mstate_global->__pyx_kp_u_clifford___truediv___line_950
5294 #define __pyx_kp_u_clifford___xor___line_911 __pyx_mstate_global->__pyx_kp_u_clifford___xor___line_911
5295 #define __pyx_n_s_clifford_abs __pyx_mstate_global->__pyx_n_s_clifford_abs
5296 #define __pyx_kp_u_clifford_abs_line_1238 __pyx_mstate_global->__pyx_kp_u_clifford_abs_line_1238
5297 #define __pyx_n_s_clifford_conj __pyx_mstate_global->__pyx_n_s_clifford_conj
5298 #define __pyx_kp_u_clifford_conj_line_1201 __pyx_mstate_global->__pyx_kp_u_clifford_conj_line_1201
5299 #define __pyx_n_s_clifford_copy __pyx_mstate_global->__pyx_n_s_clifford_copy
5300 #define __pyx_kp_u_clifford_copy_line_556 __pyx_mstate_global->__pyx_kp_u_clifford_copy_line_556
5301 #define __pyx_n_s_clifford_even __pyx_mstate_global->__pyx_n_s_clifford_even
5302 #define __pyx_kp_u_clifford_even_line_1124 __pyx_mstate_global->__pyx_kp_u_clifford_even_line_1124
5303 #define __pyx_n_s_clifford_frame __pyx_mstate_global->__pyx_n_s_clifford_frame
5304 #define __pyx_kp_u_clifford_frame_line_1287 __pyx_mstate_global->__pyx_kp_u_clifford_frame_line_1287
5305 #define __pyx_n_s_clifford_hidden_doctests __pyx_mstate_global->__pyx_n_s_clifford_hidden_doctests
5306 #define __pyx_kp_u_clifford_hidden_doctests_line_13 __pyx_mstate_global->__pyx_kp_u_clifford_hidden_doctests_line_13
5307 #define __pyx_n_s_clifford_inv __pyx_mstate_global->__pyx_n_s_clifford_inv
5308 #define __pyx_kp_u_clifford_inv_line_989 __pyx_mstate_global->__pyx_kp_u_clifford_inv_line_989
5309 #define __pyx_n_s_clifford_involute __pyx_mstate_global->__pyx_n_s_clifford_involute
5310 #define __pyx_kp_u_clifford_involute_line_1170 __pyx_mstate_global->__pyx_kp_u_clifford_involute_line_1170
5311 #define __pyx_n_s_clifford_isinf __pyx_mstate_global->__pyx_n_s_clifford_isinf
5312 #define __pyx_kp_u_clifford_isinf_line_1269 __pyx_mstate_global->__pyx_kp_u_clifford_isinf_line_1269
5313 #define __pyx_n_s_clifford_isnan __pyx_mstate_global->__pyx_n_s_clifford_isnan
5314 #define __pyx_kp_u_clifford_isnan_line_1278 __pyx_mstate_global->__pyx_kp_u_clifford_isnan_line_1278
5315 #define __pyx_n_s_clifford_max_abs __pyx_mstate_global->__pyx_n_s_clifford_max_abs
5316 #define __pyx_kp_u_clifford_max_abs_line_1247 __pyx_mstate_global->__pyx_kp_u_clifford_max_abs_line_1247
5317 #define __pyx_n_s_clifford_norm __pyx_mstate_global->__pyx_n_s_clifford_norm
5318 #define __pyx_kp_u_clifford_norm_line_1227 __pyx_mstate_global->__pyx_kp_u_clifford_norm_line_1227
5319 #define __pyx_n_s_clifford_odd __pyx_mstate_global->__pyx_n_s_clifford_odd
5320 #define __pyx_kp_u_clifford_odd_line_1133 __pyx_mstate_global->__pyx_kp_u_clifford_odd_line_1133
5321 #define __pyx_n_s_clifford_outer_pow __pyx_mstate_global->__pyx_n_s_clifford_outer_pow
5322 #define __pyx_kp_u_clifford_outer_pow_line_1067 __pyx_mstate_global->__pyx_kp_u_clifford_outer_pow_line_1067
5323 #define __pyx_n_s_clifford_pow __pyx_mstate_global->__pyx_n_s_clifford_pow
5324 #define __pyx_kp_u_clifford_pow_line_1043 __pyx_mstate_global->__pyx_kp_u_clifford_pow_line_1043
5325 #define __pyx_n_s_clifford_pure __pyx_mstate_global->__pyx_n_s_clifford_pure
5326 #define __pyx_kp_u_clifford_pure_line_1113 __pyx_mstate_global->__pyx_kp_u_clifford_pure_line_1113
5327 #define __pyx_n_s_clifford_quad __pyx_mstate_global->__pyx_n_s_clifford_quad
5328 #define __pyx_kp_u_clifford_quad_line_1216 __pyx_mstate_global->__pyx_kp_u_clifford_quad_line_1216
5329 #define __pyx_n_s_clifford_reframe __pyx_mstate_global->__pyx_n_s_clifford_reframe
5330 #define __pyx_kp_u_clifford_reframe_line_649 __pyx_mstate_global->__pyx_kp_u_clifford_reframe_line_649
5331 #define __pyx_n_s_clifford_reverse __pyx_mstate_global->__pyx_n_s_clifford_reverse
5332 #define __pyx_kp_u_clifford_reverse_line_1186 __pyx_mstate_global->__pyx_kp_u_clifford_reverse_line_1186
5333 #define __pyx_n_s_clifford_scalar __pyx_mstate_global->__pyx_n_s_clifford_scalar
5334 #define __pyx_kp_u_clifford_scalar_line_1102 __pyx_mstate_global->__pyx_kp_u_clifford_scalar_line_1102
5335 #define __pyx_n_s_clifford_truncated __pyx_mstate_global->__pyx_n_s_clifford_truncated
5336 #define __pyx_kp_u_clifford_truncated_line_1258 __pyx_mstate_global->__pyx_kp_u_clifford_truncated_line_1258
5337 #define __pyx_n_s_clifford_vector_part __pyx_mstate_global->__pyx_n_s_clifford_vector_part
5338 #define __pyx_kp_u_clifford_vector_part_line_1142 __pyx_mstate_global->__pyx_kp_u_clifford_vector_part_line_1142
5339 #define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
5340 #define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close
5341 #define __pyx_n_s_collections __pyx_mstate_global->__pyx_n_s_collections
5342 #define __pyx_n_s_compare __pyx_mstate_global->__pyx_n_s_compare
5343 #define __pyx_kp_u_compare_line_492 __pyx_mstate_global->__pyx_kp_u_compare_line_492
5344 #define __pyx_n_s_complexifier __pyx_mstate_global->__pyx_n_s_complexifier
5345 #define __pyx_kp_u_complexifier_line_1639 __pyx_mstate_global->__pyx_kp_u_complexifier_line_1639
5346 #define __pyx_n_s_conj __pyx_mstate_global->__pyx_n_s_conj
5347 #define __pyx_kp_u_conj_line_1548 __pyx_mstate_global->__pyx_kp_u_conj_line_1548
5348 #define __pyx_n_s_copy __pyx_mstate_global->__pyx_n_s_copy
5349 #define __pyx_n_s_cos __pyx_mstate_global->__pyx_n_s_cos
5350 #define __pyx_kp_u_cos_line_1714 __pyx_mstate_global->__pyx_kp_u_cos_line_1714
5351 #define __pyx_n_s_cosh __pyx_mstate_global->__pyx_n_s_cosh
5352 #define __pyx_kp_u_cosh_line_1752 __pyx_mstate_global->__pyx_kp_u_cosh_line_1752
5353 #define __pyx_n_s_count __pyx_mstate_global->__pyx_n_s_count
5354 #define __pyx_n_s_count_neg __pyx_mstate_global->__pyx_n_s_count_neg
5355 #define __pyx_n_s_count_pos __pyx_mstate_global->__pyx_n_s_count_pos
5356 #define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
5357 #define __pyx_n_s_doctest __pyx_mstate_global->__pyx_n_s_doctest
5358 #define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e
5359 #define __pyx_kp_u_e_line_1999 __pyx_mstate_global->__pyx_kp_u_e_line_1999
5360 #define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
5361 #define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode
5362 #define __pyx_n_s_err __pyx_mstate_global->__pyx_n_s_err
5363 #define __pyx_n_s_error_msg_prefix __pyx_mstate_global->__pyx_n_s_error_msg_prefix
5364 #define __pyx_n_s_error_squared __pyx_mstate_global->__pyx_n_s_error_squared
5365 #define __pyx_kp_u_error_squared_line_1409 __pyx_mstate_global->__pyx_kp_u_error_squared_line_1409
5366 #define __pyx_n_s_error_squared_tol __pyx_mstate_global->__pyx_n_s_error_squared_tol
5367 #define __pyx_kp_u_error_squared_tol_line_1400 __pyx_mstate_global->__pyx_kp_u_error_squared_tol_line_1400
5368 #define __pyx_n_s_even __pyx_mstate_global->__pyx_n_s_even
5369 #define __pyx_kp_u_even_line_1500 __pyx_mstate_global->__pyx_kp_u_even_line_1500
5370 #define __pyx_n_s_exp __pyx_mstate_global->__pyx_n_s_exp
5371 #define __pyx_kp_u_exp_line_1677 __pyx_mstate_global->__pyx_kp_u_exp_line_1677
5372 #define __pyx_n_s_fill __pyx_mstate_global->__pyx_n_s_fill
5373 #define __pyx_n_s_frame __pyx_mstate_global->__pyx_n_s_frame
5374 #define __pyx_n_s_frm __pyx_mstate_global->__pyx_n_s_frm
5375 #define __pyx_kp_u_from __pyx_mstate_global->__pyx_kp_u_from
5376 #define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
5377 #define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
5378 #define __pyx_n_s_grade __pyx_mstate_global->__pyx_n_s_grade
5379 #define __pyx_n_s_hash_fn __pyx_mstate_global->__pyx_n_s_hash_fn
5380 #define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
5381 #define __pyx_n_s_imag __pyx_mstate_global->__pyx_n_s_imag
5382 #define __pyx_kp_u_imag_line_1478 __pyx_mstate_global->__pyx_kp_u_imag_line_1478
5383 #define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
5384 #define __pyx_n_s_index_set __pyx_mstate_global->__pyx_n_s_index_set
5385 #define __pyx_kp_u_index_set___and___line_271 __pyx_mstate_global->__pyx_kp_u_index_set___and___line_271
5386 #define __pyx_kp_u_index_set___getitem___line_191 __pyx_mstate_global->__pyx_kp_u_index_set___getitem___line_191
5387 #define __pyx_kp_u_index_set___iand___line_282 __pyx_mstate_global->__pyx_kp_u_index_set___iand___line_282
5388 #define __pyx_kp_u_index_set___invert___line_240 __pyx_mstate_global->__pyx_kp_u_index_set___invert___line_240
5389 #define __pyx_kp_u_index_set___ior___line_304 __pyx_mstate_global->__pyx_kp_u_index_set___ior___line_304
5390 #define __pyx_n_s_index_set___iter __pyx_mstate_global->__pyx_n_s_index_set___iter
5391 #define __pyx_kp_u_index_set___iter___line_229 __pyx_mstate_global->__pyx_kp_u_index_set___iter___line_229
5392 #define __pyx_kp_u_index_set___ixor___line_260 __pyx_mstate_global->__pyx_kp_u_index_set___ixor___line_260
5393 #define __pyx_kp_u_index_set___or___line_293 __pyx_mstate_global->__pyx_kp_u_index_set___or___line_293
5394 #define __pyx_n_s_index_set___reduce_cython __pyx_mstate_global->__pyx_n_s_index_set___reduce_cython
5395 #define __pyx_kp_u_index_set___repr___line_384 __pyx_mstate_global->__pyx_kp_u_index_set___repr___line_384
5396 #define __pyx_kp_u_index_set___setitem___line_179 __pyx_mstate_global->__pyx_kp_u_index_set___setitem___line_179
5397 #define __pyx_n_s_index_set___setstate_cython __pyx_mstate_global->__pyx_n_s_index_set___setstate_cython
5398 #define __pyx_kp_u_index_set___str___line_395 __pyx_mstate_global->__pyx_kp_u_index_set___str___line_395
5399 #define __pyx_kp_u_index_set___xor___line_249 __pyx_mstate_global->__pyx_kp_u_index_set___xor___line_249
5400 #define __pyx_n_s_index_set_copy __pyx_mstate_global->__pyx_n_s_index_set_copy
5401 #define __pyx_kp_u_index_set_copy_line_65 __pyx_mstate_global->__pyx_kp_u_index_set_copy_line_65
5402 #define __pyx_n_s_index_set_count __pyx_mstate_global->__pyx_n_s_index_set_count
5403 #define __pyx_kp_u_index_set_count_line_315 __pyx_mstate_global->__pyx_kp_u_index_set_count_line_315
5404 #define __pyx_n_s_index_set_count_neg __pyx_mstate_global->__pyx_n_s_index_set_count_neg
5405 #define __pyx_kp_u_index_set_count_neg_line_324 __pyx_mstate_global->__pyx_kp_u_index_set_count_neg_line_324
5406 #define __pyx_n_s_index_set_count_pos __pyx_mstate_global->__pyx_n_s_index_set_count_pos
5407 #define __pyx_kp_u_index_set_count_pos_line_333 __pyx_mstate_global->__pyx_kp_u_index_set_count_pos_line_333
5408 #define __pyx_n_s_index_set_hash_fn __pyx_mstate_global->__pyx_n_s_index_set_hash_fn
5409 #define __pyx_n_s_index_set_hidden_doctests __pyx_mstate_global->__pyx_n_s_index_set_hidden_doctests
5410 #define __pyx_kp_u_index_set_hidden_doctests_line_4 __pyx_mstate_global->__pyx_kp_u_index_set_hidden_doctests_line_4
5411 #define __pyx_n_s_index_set_max __pyx_mstate_global->__pyx_n_s_index_set_max
5412 #define __pyx_kp_u_index_set_max_line_351 __pyx_mstate_global->__pyx_kp_u_index_set_max_line_351
5413 #define __pyx_n_s_index_set_min __pyx_mstate_global->__pyx_n_s_index_set_min
5414 #define __pyx_kp_u_index_set_min_line_342 __pyx_mstate_global->__pyx_kp_u_index_set_min_line_342
5415 #define __pyx_n_s_index_set_sign_of_mult __pyx_mstate_global->__pyx_n_s_index_set_sign_of_mult
5416 #define __pyx_kp_u_index_set_sign_of_mult_line_366 __pyx_mstate_global->__pyx_kp_u_index_set_sign_of_mult_line_366
5417 #define __pyx_n_s_index_set_sign_of_square __pyx_mstate_global->__pyx_n_s_index_set_sign_of_square
5418 #define __pyx_kp_u_index_set_sign_of_square_line_37 __pyx_mstate_global->__pyx_kp_u_index_set_sign_of_square_line_37
5419 #define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
5420 #define __pyx_n_s_inv __pyx_mstate_global->__pyx_n_s_inv
5421 #define __pyx_kp_u_inv_line_1441 __pyx_mstate_global->__pyx_kp_u_inv_line_1441
5422 #define __pyx_kp_u_invalid __pyx_mstate_global->__pyx_kp_u_invalid
5423 #define __pyx_kp_u_invalid_string __pyx_mstate_global->__pyx_kp_u_invalid_string
5424 #define __pyx_n_s_involute __pyx_mstate_global->__pyx_n_s_involute
5425 #define __pyx_kp_u_involute_line_1518 __pyx_mstate_global->__pyx_kp_u_involute_line_1518
5426 #define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
5427 #define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
5428 #define __pyx_n_s_isinf __pyx_mstate_global->__pyx_n_s_isinf
5429 #define __pyx_n_s_isnan __pyx_mstate_global->__pyx_n_s_isnan
5430 #define __pyx_n_s_ist __pyx_mstate_global->__pyx_n_s_ist
5431 #define __pyx_n_s_istpq __pyx_mstate_global->__pyx_n_s_istpq
5432 #define __pyx_kp_u_istpq_line_2012 __pyx_mstate_global->__pyx_kp_u_istpq_line_2012
5433 #define __pyx_n_s_iter __pyx_mstate_global->__pyx_n_s_iter
5434 #define __pyx_n_s_ixt __pyx_mstate_global->__pyx_n_s_ixt
5435 #define __pyx_kp_u_lexicographic_compare_eg_3_4_5 __pyx_mstate_global->__pyx_kp_u_lexicographic_compare_eg_3_4_5
5436 #define __pyx_n_s_lhs __pyx_mstate_global->__pyx_n_s_lhs
5437 #define __pyx_n_s_limit __pyx_mstate_global->__pyx_n_s_limit
5438 #define __pyx_n_s_log __pyx_mstate_global->__pyx_n_s_log
5439 #define __pyx_kp_u_log_line_1691 __pyx_mstate_global->__pyx_kp_u_log_line_1691
5440 #define __pyx_n_s_lst __pyx_mstate_global->__pyx_n_s_lst
5441 #define __pyx_n_s_m __pyx_mstate_global->__pyx_n_s_m
5442 #define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
5443 #define __pyx_n_u_main __pyx_mstate_global->__pyx_n_u_main
5444 #define __pyx_n_s_math __pyx_mstate_global->__pyx_n_s_math
5445 #define __pyx_n_s_max __pyx_mstate_global->__pyx_n_s_max
5446 #define __pyx_n_s_max_abs __pyx_mstate_global->__pyx_n_s_max_abs
5447 #define __pyx_kp_u_max_abs_line_1594 __pyx_mstate_global->__pyx_kp_u_max_abs_line_1594
5448 #define __pyx_n_s_max_pos __pyx_mstate_global->__pyx_n_s_max_pos
5449 #define __pyx_kp_u_max_pos_line_513 __pyx_mstate_global->__pyx_kp_u_max_pos_line_513
5450 #define __pyx_n_s_min __pyx_mstate_global->__pyx_n_s_min
5451 #define __pyx_n_s_min_neg __pyx_mstate_global->__pyx_n_s_min_neg
5452 #define __pyx_kp_u_min_neg_line_504 __pyx_mstate_global->__pyx_kp_u_min_neg_line_504
5453 #define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n
5454 #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
5455 #define __pyx_n_s_nbar3 __pyx_mstate_global->__pyx_n_s_nbar3
5456 #define __pyx_n_s_ninf3 __pyx_mstate_global->__pyx_n_s_ninf3
5457 #define __pyx_kp_s_no_default___reduce___due_to_non __pyx_mstate_global->__pyx_kp_s_no_default___reduce___due_to_non
5458 #define __pyx_n_s_norm __pyx_mstate_global->__pyx_n_s_norm
5459 #define __pyx_kp_u_norm_line_1574 __pyx_mstate_global->__pyx_kp_u_norm_line_1574
5460 #define __pyx_kp_u_norm_sum_of_squares_of_coordina __pyx_mstate_global->__pyx_kp_u_norm_sum_of_squares_of_coordina
5461 #define __pyx_n_s_numbers __pyx_mstate_global->__pyx_n_s_numbers
5462 #define __pyx_n_s_obj __pyx_mstate_global->__pyx_n_s_obj
5463 #define __pyx_n_s_odd __pyx_mstate_global->__pyx_n_s_odd
5464 #define __pyx_kp_u_odd_line_1509 __pyx_mstate_global->__pyx_kp_u_odd_line_1509
5465 #define __pyx_n_s_other __pyx_mstate_global->__pyx_n_s_other
5466 #define __pyx_n_s_outer_pow __pyx_mstate_global->__pyx_n_s_outer_pow
5467 #define __pyx_kp_u_outer_pow_line_1630 __pyx_mstate_global->__pyx_kp_u_outer_pow_line_1630
5468 #define __pyx_n_s_p __pyx_mstate_global->__pyx_n_s_p
5469 #define __pyx_n_s_pi __pyx_mstate_global->__pyx_n_s_pi
5470 #define __pyx_n_s_pow __pyx_mstate_global->__pyx_n_s_pow
5471 #define __pyx_kp_u_pow_line_1606 __pyx_mstate_global->__pyx_kp_u_pow_line_1606
5472 #define __pyx_n_s_pure __pyx_mstate_global->__pyx_n_s_pure
5473 #define __pyx_kp_u_pure_line_1489 __pyx_mstate_global->__pyx_kp_u_pure_line_1489
5474 #define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
5475 #define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
5476 #define __pyx_n_s_q __pyx_mstate_global->__pyx_n_s_q
5477 #define __pyx_n_s_quad __pyx_mstate_global->__pyx_n_s_quad
5478 #define __pyx_kp_u_quad_line_1563 __pyx_mstate_global->__pyx_kp_u_quad_line_1563
5479 #define __pyx_n_s_random_clifford __pyx_mstate_global->__pyx_n_s_random_clifford
5480 #define __pyx_kp_u_random_clifford_line_1927 __pyx_mstate_global->__pyx_kp_u_random_clifford_line_1927
5481 #define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range
5482 #define __pyx_n_s_real __pyx_mstate_global->__pyx_n_s_real
5483 #define __pyx_kp_u_real_line_1467 __pyx_mstate_global->__pyx_kp_u_real_line_1467
5484 #define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
5485 #define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
5486 #define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
5487 #define __pyx_n_s_reframe __pyx_mstate_global->__pyx_n_s_reframe
5488 #define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result
5489 #define __pyx_n_s_reverse __pyx_mstate_global->__pyx_n_s_reverse
5490 #define __pyx_kp_u_reverse_line_1533 __pyx_mstate_global->__pyx_kp_u_reverse_line_1533
5491 #define __pyx_n_s_rhs __pyx_mstate_global->__pyx_n_s_rhs
5492 #define __pyx_n_s_scalar __pyx_mstate_global->__pyx_n_s_scalar
5493 #define __pyx_n_s_scalar_epsilon __pyx_mstate_global->__pyx_n_s_scalar_epsilon
5494 #define __pyx_kp_u_scalar_line_1456 __pyx_mstate_global->__pyx_kp_u_scalar_line_1456
5495 #define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
5496 #define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send
5497 #define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
5498 #define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
5499 #define __pyx_n_s_sign_of_mult __pyx_mstate_global->__pyx_n_s_sign_of_mult
5500 #define __pyx_n_s_sign_of_square __pyx_mstate_global->__pyx_n_s_sign_of_square
5501 #define __pyx_n_s_sin __pyx_mstate_global->__pyx_n_s_sin
5502 #define __pyx_kp_u_sin_line_1791 __pyx_mstate_global->__pyx_kp_u_sin_line_1791
5503 #define __pyx_n_s_sinh __pyx_mstate_global->__pyx_n_s_sinh
5504 #define __pyx_kp_u_sinh_line_1831 __pyx_mstate_global->__pyx_kp_u_sinh_line_1831
5505 #define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
5506 #define __pyx_n_s_sqrt __pyx_mstate_global->__pyx_n_s_sqrt
5507 #define __pyx_kp_u_sqrt_line_1654 __pyx_mstate_global->__pyx_kp_u_sqrt_line_1654
5508 #define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
5509 #define __pyx_n_s_tan __pyx_mstate_global->__pyx_n_s_tan
5510 #define __pyx_kp_u_tan_line_1864 __pyx_mstate_global->__pyx_kp_u_tan_line_1864
5511 #define __pyx_n_s_tanh __pyx_mstate_global->__pyx_n_s_tanh
5512 #define __pyx_kp_u_tanh_line_1898 __pyx_mstate_global->__pyx_kp_u_tanh_line_1898
5513 #define __pyx_n_s_tau __pyx_mstate_global->__pyx_n_s_tau
5514 #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
5515 #define __pyx_n_s_test_2 __pyx_mstate_global->__pyx_n_s_test_2
5516 #define __pyx_n_s_testmod __pyx_mstate_global->__pyx_n_s_testmod
5517 #define __pyx_n_s_threshold __pyx_mstate_global->__pyx_n_s_threshold
5518 #define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw
5519 #define __pyx_kp_u_to_frame __pyx_mstate_global->__pyx_kp_u_to_frame
5520 #define __pyx_n_s_tol __pyx_mstate_global->__pyx_n_s_tol
5521 #define __pyx_n_s_truncated __pyx_mstate_global->__pyx_n_s_truncated
5522 #define __pyx_kp_u_using __pyx_mstate_global->__pyx_kp_u_using
5523 #define __pyx_kp_u_using_invalid __pyx_mstate_global->__pyx_kp_u_using_invalid
5524 #define __pyx_kp_u_utf_8 __pyx_mstate_global->__pyx_kp_u_utf_8
5525 #define __pyx_kp_u_value __pyx_mstate_global->__pyx_kp_u_value
5526 #define __pyx_n_s_vec __pyx_mstate_global->__pyx_n_s_vec
5527 #define __pyx_n_s_vector_part __pyx_mstate_global->__pyx_n_s_vector_part
5528 #define __pyx_n_s_version __pyx_mstate_global->__pyx_n_s_version
5529 #define __pyx_n_s_xrange __pyx_mstate_global->__pyx_n_s_xrange
5530 #define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0
5531 #define __pyx_float_1_0 __pyx_mstate_global->__pyx_float_1_0
5532 #define __pyx_float_4_0 __pyx_mstate_global->__pyx_float_4_0
5533 #define __pyx_float_8_0 __pyx_mstate_global->__pyx_float_8_0
5534 #define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
5535 #define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
5536 #define __pyx_int_4 __pyx_mstate_global->__pyx_int_4
5537 #define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1
5538 #define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8
5539 #define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10
5540 #define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
5541 #define __pyx_tuple__22 __pyx_mstate_global->__pyx_tuple__22
5542 #define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25
5543 #define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27
5544 #define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31
5545 #define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34
5546 #define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41
5547 #define __pyx_tuple__43 __pyx_mstate_global->__pyx_tuple__43
5548 #define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51
5549 #define __pyx_tuple__60 __pyx_mstate_global->__pyx_tuple__60
5550 #define __pyx_tuple__62 __pyx_mstate_global->__pyx_tuple__62
5551 #define __pyx_tuple__64 __pyx_mstate_global->__pyx_tuple__64
5552 #define __pyx_tuple__79 __pyx_mstate_global->__pyx_tuple__79
5553 #define __pyx_tuple__83 __pyx_mstate_global->__pyx_tuple__83
5554 #define __pyx_tuple__99 __pyx_mstate_global->__pyx_tuple__99
5555 #define __pyx_tuple__101 __pyx_mstate_global->__pyx_tuple__101
5556 #define __pyx_tuple__105 __pyx_mstate_global->__pyx_tuple__105
5557 #define __pyx_tuple__107 __pyx_mstate_global->__pyx_tuple__107
5558 #define __pyx_tuple__109 __pyx_mstate_global->__pyx_tuple__109
5559 #define __pyx_tuple__110 __pyx_mstate_global->__pyx_tuple__110
5560 #define __pyx_tuple__111 __pyx_mstate_global->__pyx_tuple__111
5561 #define __pyx_codeobj__11 __pyx_mstate_global->__pyx_codeobj__11
5562 #define __pyx_codeobj__12 __pyx_mstate_global->__pyx_codeobj__12
5563 #define __pyx_codeobj__13 __pyx_mstate_global->__pyx_codeobj__13
5564 #define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14
5565 #define __pyx_codeobj__15 __pyx_mstate_global->__pyx_codeobj__15
5566 #define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16
5567 #define __pyx_codeobj__17 __pyx_mstate_global->__pyx_codeobj__17
5568 #define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19
5569 #define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20
5570 #define __pyx_codeobj__21 __pyx_mstate_global->__pyx_codeobj__21
5571 #define __pyx_codeobj__23 __pyx_mstate_global->__pyx_codeobj__23
5572 #define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24
5573 #define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26
5574 #define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28
5575 #define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29
5576 #define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30
5577 #define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32
5578 #define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33
5579 #define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35
5580 #define __pyx_codeobj__36 __pyx_mstate_global->__pyx_codeobj__36
5581 #define __pyx_codeobj__37 __pyx_mstate_global->__pyx_codeobj__37
5582 #define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38
5583 #define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39
5584 #define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40
5585 #define __pyx_codeobj__42 __pyx_mstate_global->__pyx_codeobj__42
5586 #define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
5587 #define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45
5588 #define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46
5589 #define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47
5590 #define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48
5591 #define __pyx_codeobj__49 __pyx_mstate_global->__pyx_codeobj__49
5592 #define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50
5593 #define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52
5594 #define __pyx_codeobj__53 __pyx_mstate_global->__pyx_codeobj__53
5595 #define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54
5596 #define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55
5597 #define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56
5598 #define __pyx_codeobj__57 __pyx_mstate_global->__pyx_codeobj__57
5599 #define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58
5600 #define __pyx_codeobj__59 __pyx_mstate_global->__pyx_codeobj__59
5601 #define __pyx_codeobj__61 __pyx_mstate_global->__pyx_codeobj__61
5602 #define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63
5603 #define __pyx_codeobj__65 __pyx_mstate_global->__pyx_codeobj__65
5604 #define __pyx_codeobj__66 __pyx_mstate_global->__pyx_codeobj__66
5605 #define __pyx_codeobj__67 __pyx_mstate_global->__pyx_codeobj__67
5606 #define __pyx_codeobj__68 __pyx_mstate_global->__pyx_codeobj__68
5607 #define __pyx_codeobj__69 __pyx_mstate_global->__pyx_codeobj__69
5608 #define __pyx_codeobj__70 __pyx_mstate_global->__pyx_codeobj__70
5609 #define __pyx_codeobj__71 __pyx_mstate_global->__pyx_codeobj__71
5610 #define __pyx_codeobj__72 __pyx_mstate_global->__pyx_codeobj__72
5611 #define __pyx_codeobj__73 __pyx_mstate_global->__pyx_codeobj__73
5612 #define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74
5613 #define __pyx_codeobj__75 __pyx_mstate_global->__pyx_codeobj__75
5614 #define __pyx_codeobj__76 __pyx_mstate_global->__pyx_codeobj__76
5615 #define __pyx_codeobj__77 __pyx_mstate_global->__pyx_codeobj__77
5616 #define __pyx_codeobj__78 __pyx_mstate_global->__pyx_codeobj__78
5617 #define __pyx_codeobj__80 __pyx_mstate_global->__pyx_codeobj__80
5618 #define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81
5619 #define __pyx_codeobj__82 __pyx_mstate_global->__pyx_codeobj__82
5620 #define __pyx_codeobj__84 __pyx_mstate_global->__pyx_codeobj__84
5621 #define __pyx_codeobj__85 __pyx_mstate_global->__pyx_codeobj__85
5622 #define __pyx_codeobj__86 __pyx_mstate_global->__pyx_codeobj__86
5623 #define __pyx_codeobj__87 __pyx_mstate_global->__pyx_codeobj__87
5624 #define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88
5625 #define __pyx_codeobj__89 __pyx_mstate_global->__pyx_codeobj__89
5626 #define __pyx_codeobj__90 __pyx_mstate_global->__pyx_codeobj__90
5627 #define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91
5628 #define __pyx_codeobj__92 __pyx_mstate_global->__pyx_codeobj__92
5629 #define __pyx_codeobj__93 __pyx_mstate_global->__pyx_codeobj__93
5630 #define __pyx_codeobj__94 __pyx_mstate_global->__pyx_codeobj__94
5631 #define __pyx_codeobj__95 __pyx_mstate_global->__pyx_codeobj__95
5632 #define __pyx_codeobj__96 __pyx_mstate_global->__pyx_codeobj__96
5633 #define __pyx_codeobj__97 __pyx_mstate_global->__pyx_codeobj__97
5634 #define __pyx_codeobj__98 __pyx_mstate_global->__pyx_codeobj__98
5635 #define __pyx_codeobj__100 __pyx_mstate_global->__pyx_codeobj__100
5636 #define __pyx_codeobj__102 __pyx_mstate_global->__pyx_codeobj__102
5637 #define __pyx_codeobj__103 __pyx_mstate_global->__pyx_codeobj__103
5638 #define __pyx_codeobj__104 __pyx_mstate_global->__pyx_codeobj__104
5639 #define __pyx_codeobj__106 __pyx_mstate_global->__pyx_codeobj__106
5640 #define __pyx_codeobj__108 __pyx_mstate_global->__pyx_codeobj__108
5641 #define __pyx_codeobj__112 __pyx_mstate_global->__pyx_codeobj__112
5642 /* #### Code section: module_code ### */
5643 
5644 /* "string.to_py":31
5645  *
5646  * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
5647  * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5648  * return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
5649  * cdef extern from *:
5650  */
5651 
5652 static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &__pyx_v_s) {
5653  PyObject *__pyx_r = NULL;
5654  __Pyx_RefNannyDeclarations
5655  PyObject *__pyx_t_1 = NULL;
5656  int __pyx_lineno = 0;
5657  const char *__pyx_filename = NULL;
5658  int __pyx_clineno = 0;
5659  __Pyx_RefNannySetupContext("__pyx_convert_PyObject_string_to_py_std__in_string", 1);
5660 
5661  /* "string.to_py":32
5662  * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
5663  * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):
5664  * return __Pyx_PyObject_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<<
5665  * cdef extern from *:
5666  * cdef object __Pyx_PyUnicode_FromStringAndSize(const char*, size_t)
5667  */
5668  __Pyx_XDECREF(__pyx_r);
5669  __pyx_t_1 = __Pyx_PyObject_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 32, __pyx_L1_error)
5670  __Pyx_GOTREF(__pyx_t_1);
5671  __pyx_r = __pyx_t_1;
5672  __pyx_t_1 = 0;
5673  goto __pyx_L0;
5674 
5675  /* "string.to_py":31
5676  *
5677  * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
5678  * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5679  * return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
5680  * cdef extern from *:
5681  */
5682 
5683  /* function exit code */
5684  __pyx_L1_error:;
5685  __Pyx_XDECREF(__pyx_t_1);
5686  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyObject_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
5687  __pyx_r = 0;
5688  __pyx_L0:;
5689  __Pyx_XGIVEREF(__pyx_r);
5690  __Pyx_RefNannyFinishContext();
5691  return __pyx_r;
5692 }
5693 
5694 /* "string.to_py":37
5695  *
5696  * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
5697  * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5698  * return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
5699  * cdef extern from *:
5700  */
5701 
5702 static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &__pyx_v_s) {
5703  PyObject *__pyx_r = NULL;
5704  __Pyx_RefNannyDeclarations
5705  PyObject *__pyx_t_1 = NULL;
5706  int __pyx_lineno = 0;
5707  const char *__pyx_filename = NULL;
5708  int __pyx_clineno = 0;
5709  __Pyx_RefNannySetupContext("__pyx_convert_PyUnicode_string_to_py_std__in_string", 1);
5710 
5711  /* "string.to_py":38
5712  * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
5713  * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):
5714  * return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<<
5715  * cdef extern from *:
5716  * cdef object __Pyx_PyStr_FromStringAndSize(const char*, size_t)
5717  */
5718  __Pyx_XDECREF(__pyx_r);
5719  __pyx_t_1 = __Pyx_PyUnicode_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 38, __pyx_L1_error)
5720  __Pyx_GOTREF(__pyx_t_1);
5721  __pyx_r = __pyx_t_1;
5722  __pyx_t_1 = 0;
5723  goto __pyx_L0;
5724 
5725  /* "string.to_py":37
5726  *
5727  * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
5728  * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5729  * return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
5730  * cdef extern from *:
5731  */
5732 
5733  /* function exit code */
5734  __pyx_L1_error:;
5735  __Pyx_XDECREF(__pyx_t_1);
5736  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyUnicode_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
5737  __pyx_r = 0;
5738  __pyx_L0:;
5739  __Pyx_XGIVEREF(__pyx_r);
5740  __Pyx_RefNannyFinishContext();
5741  return __pyx_r;
5742 }
5743 
5744 /* "string.to_py":43
5745  *
5746  * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
5747  * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5748  * return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
5749  * cdef extern from *:
5750  */
5751 
5752 static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &__pyx_v_s) {
5753  PyObject *__pyx_r = NULL;
5754  __Pyx_RefNannyDeclarations
5755  PyObject *__pyx_t_1 = NULL;
5756  int __pyx_lineno = 0;
5757  const char *__pyx_filename = NULL;
5758  int __pyx_clineno = 0;
5759  __Pyx_RefNannySetupContext("__pyx_convert_PyStr_string_to_py_std__in_string", 1);
5760 
5761  /* "string.to_py":44
5762  * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
5763  * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):
5764  * return __Pyx_PyStr_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<<
5765  * cdef extern from *:
5766  * cdef object __Pyx_PyBytes_FromStringAndSize(const char*, size_t)
5767  */
5768  __Pyx_XDECREF(__pyx_r);
5769  __pyx_t_1 = __Pyx_PyStr_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 44, __pyx_L1_error)
5770  __Pyx_GOTREF(__pyx_t_1);
5771  __pyx_r = __pyx_t_1;
5772  __pyx_t_1 = 0;
5773  goto __pyx_L0;
5774 
5775  /* "string.to_py":43
5776  *
5777  * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
5778  * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5779  * return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
5780  * cdef extern from *:
5781  */
5782 
5783  /* function exit code */
5784  __pyx_L1_error:;
5785  __Pyx_XDECREF(__pyx_t_1);
5786  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyStr_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
5787  __pyx_r = 0;
5788  __pyx_L0:;
5789  __Pyx_XGIVEREF(__pyx_r);
5790  __Pyx_RefNannyFinishContext();
5791  return __pyx_r;
5792 }
5793 
5794 /* "string.to_py":49
5795  *
5796  * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
5797  * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5798  * return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
5799  * cdef extern from *:
5800  */
5801 
5802 static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &__pyx_v_s) {
5803  PyObject *__pyx_r = NULL;
5804  __Pyx_RefNannyDeclarations
5805  PyObject *__pyx_t_1 = NULL;
5806  int __pyx_lineno = 0;
5807  const char *__pyx_filename = NULL;
5808  int __pyx_clineno = 0;
5809  __Pyx_RefNannySetupContext("__pyx_convert_PyBytes_string_to_py_std__in_string", 1);
5810 
5811  /* "string.to_py":50
5812  * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
5813  * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):
5814  * return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<<
5815  * cdef extern from *:
5816  * cdef object __Pyx_PyByteArray_FromStringAndSize(const char*, size_t)
5817  */
5818  __Pyx_XDECREF(__pyx_r);
5819  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 50, __pyx_L1_error)
5820  __Pyx_GOTREF(__pyx_t_1);
5821  __pyx_r = __pyx_t_1;
5822  __pyx_t_1 = 0;
5823  goto __pyx_L0;
5824 
5825  /* "string.to_py":49
5826  *
5827  * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
5828  * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5829  * return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
5830  * cdef extern from *:
5831  */
5832 
5833  /* function exit code */
5834  __pyx_L1_error:;
5835  __Pyx_XDECREF(__pyx_t_1);
5836  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyBytes_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
5837  __pyx_r = 0;
5838  __pyx_L0:;
5839  __Pyx_XGIVEREF(__pyx_r);
5840  __Pyx_RefNannyFinishContext();
5841  return __pyx_r;
5842 }
5843 
5844 /* "string.to_py":55
5845  *
5846  * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
5847  * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5848  * return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
5849  *
5850  */
5851 
5852 static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &__pyx_v_s) {
5853  PyObject *__pyx_r = NULL;
5854  __Pyx_RefNannyDeclarations
5855  PyObject *__pyx_t_1 = NULL;
5856  int __pyx_lineno = 0;
5857  const char *__pyx_filename = NULL;
5858  int __pyx_clineno = 0;
5859  __Pyx_RefNannySetupContext("__pyx_convert_PyByteArray_string_to_py_std__in_string", 1);
5860 
5861  /* "string.to_py":56
5862  * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
5863  * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):
5864  * return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size()) # <<<<<<<<<<<<<<
5865  *
5866  */
5867  __Pyx_XDECREF(__pyx_r);
5868  __pyx_t_1 = __Pyx_PyByteArray_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 56, __pyx_L1_error)
5869  __Pyx_GOTREF(__pyx_t_1);
5870  __pyx_r = __pyx_t_1;
5871  __pyx_t_1 = 0;
5872  goto __pyx_L0;
5873 
5874  /* "string.to_py":55
5875  *
5876  * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
5877  * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s): # <<<<<<<<<<<<<<
5878  * return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
5879  *
5880  */
5881 
5882  /* function exit code */
5883  __pyx_L1_error:;
5884  __Pyx_XDECREF(__pyx_t_1);
5885  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyByteArray_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
5886  __pyx_r = 0;
5887  __pyx_L0:;
5888  __Pyx_XGIVEREF(__pyx_r);
5889  __Pyx_RefNannyFinishContext();
5890  return __pyx_r;
5891 }
5892 
5893 /* "PyClical.pyx":40
5894  * cdef class index_set
5895  *
5896  * cdef inline IndexSet toIndexSet(obj): # <<<<<<<<<<<<<<
5897  * """
5898  * Return the C++ IndexSet instance wrapped by index_set(obj).
5899  */
5900 
5901 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_toIndexSet(PyObject *__pyx_v_obj) {
5902  IndexSet __pyx_r;
5903  __Pyx_RefNannyDeclarations
5904  PyObject *__pyx_t_1 = NULL;
5905  int __pyx_lineno = 0;
5906  const char *__pyx_filename = NULL;
5907  int __pyx_clineno = 0;
5908  __Pyx_RefNannySetupContext("toIndexSet", 1);
5909 
5910  /* "PyClical.pyx":44
5911  * Return the C++ IndexSet instance wrapped by index_set(obj).
5912  * """
5913  * return index_set(obj).instance[0] # <<<<<<<<<<<<<<
5914  *
5915  * cdef class index_set:
5916  */
5917  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
5918  __Pyx_GOTREF(__pyx_t_1);
5919  __pyx_r = (((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1)->instance[0]);
5920  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5921  goto __pyx_L0;
5922 
5923  /* "PyClical.pyx":40
5924  * cdef class index_set
5925  *
5926  * cdef inline IndexSet toIndexSet(obj): # <<<<<<<<<<<<<<
5927  * """
5928  * Return the C++ IndexSet instance wrapped by index_set(obj).
5929  */
5930 
5931  /* function exit code */
5932  __pyx_L1_error:;
5933  __Pyx_XDECREF(__pyx_t_1);
5934  __Pyx_AddTraceback("PyClical.toIndexSet", __pyx_clineno, __pyx_lineno, __pyx_filename);
5935  __Pyx_pretend_to_initialize(&__pyx_r);
5936  __pyx_L0:;
5937  __Pyx_RefNannyFinishContext();
5938  return __pyx_r;
5939 }
5940 
5941 /* "PyClical.pyx":52
5942  * cdef IndexSet *instance # Wrapped instance of C++ class IndexSet.
5943  *
5944  * cdef inline wrap(index_set self, IndexSet other): # <<<<<<<<<<<<<<
5945  * """
5946  * Wrap an instance of the C++ class IndexSet.
5947  */
5948 
5949 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_9index_set_wrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, IndexSet __pyx_v_other) {
5950  PyObject *__pyx_r = NULL;
5951  __Pyx_RefNannyDeclarations
5952  __Pyx_RefNannySetupContext("wrap", 1);
5953 
5954  /* "PyClical.pyx":56
5955  * Wrap an instance of the C++ class IndexSet.
5956  * """
5957  * self.instance[0] = other # <<<<<<<<<<<<<<
5958  * return self
5959  *
5960  */
5961  (__pyx_v_self->instance[0]) = __pyx_v_other;
5962 
5963  /* "PyClical.pyx":57
5964  * """
5965  * self.instance[0] = other
5966  * return self # <<<<<<<<<<<<<<
5967  *
5968  * cdef inline IndexSet unwrap(index_set self):
5969  */
5970  __Pyx_XDECREF(__pyx_r);
5971  __Pyx_INCREF((PyObject *)__pyx_v_self);
5972  __pyx_r = ((PyObject *)__pyx_v_self);
5973  goto __pyx_L0;
5974 
5975  /* "PyClical.pyx":52
5976  * cdef IndexSet *instance # Wrapped instance of C++ class IndexSet.
5977  *
5978  * cdef inline wrap(index_set self, IndexSet other): # <<<<<<<<<<<<<<
5979  * """
5980  * Wrap an instance of the C++ class IndexSet.
5981  */
5982 
5983  /* function exit code */
5984  __pyx_L0:;
5985  __Pyx_XGIVEREF(__pyx_r);
5986  __Pyx_RefNannyFinishContext();
5987  return __pyx_r;
5988 }
5989 
5990 /* "PyClical.pyx":59
5991  * return self
5992  *
5993  * cdef inline IndexSet unwrap(index_set self): # <<<<<<<<<<<<<<
5994  * """
5995  * Return the wrapped C++ IndexSet instance.
5996  */
5997 
5998 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_9index_set_unwrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
5999  IndexSet __pyx_r;
6000 
6001  /* "PyClical.pyx":63
6002  * Return the wrapped C++ IndexSet instance.
6003  * """
6004  * return self.instance[0] # <<<<<<<<<<<<<<
6005  *
6006  * cpdef copy(index_set self):
6007  */
6008  __pyx_r = (__pyx_v_self->instance[0]);
6009  goto __pyx_L0;
6010 
6011  /* "PyClical.pyx":59
6012  * return self
6013  *
6014  * cdef inline IndexSet unwrap(index_set self): # <<<<<<<<<<<<<<
6015  * """
6016  * Return the wrapped C++ IndexSet instance.
6017  */
6018 
6019  /* function exit code */
6020  __pyx_L0:;
6021  return __pyx_r;
6022 }
6023 
6024 /* "PyClical.pyx":65
6025  * return self.instance[0]
6026  *
6027  * cpdef copy(index_set self): # <<<<<<<<<<<<<<
6028  * """
6029  * Copy this index_set object.
6030  */
6031 
6032 static PyObject *__pyx_pw_8PyClical_9index_set_1copy(PyObject *__pyx_v_self,
6033 #if CYTHON_METH_FASTCALL
6034 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6035 #else
6036 PyObject *__pyx_args, PyObject *__pyx_kwds
6037 #endif
6038 ); /*proto*/
6039 static PyObject *__pyx_f_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, int __pyx_skip_dispatch) {
6040  PyObject *__pyx_r = NULL;
6041  __Pyx_RefNannyDeclarations
6042  PyObject *__pyx_t_1 = NULL;
6043  PyObject *__pyx_t_2 = NULL;
6044  PyObject *__pyx_t_3 = NULL;
6045  PyObject *__pyx_t_4 = NULL;
6046  int __pyx_t_5;
6047  int __pyx_lineno = 0;
6048  const char *__pyx_filename = NULL;
6049  int __pyx_clineno = 0;
6050  __Pyx_RefNannySetupContext("copy", 1);
6051  /* Check if called by wrapper */
6052  if (unlikely(__pyx_skip_dispatch)) ;
6053  /* Check if overridden in Python */
6054  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
6055  #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
6056  static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
6057  if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
6058  PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
6059  #endif
6060  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error)
6061  __Pyx_GOTREF(__pyx_t_1);
6062  if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_8PyClical_9index_set_1copy)) {
6063  __Pyx_XDECREF(__pyx_r);
6064  __Pyx_INCREF(__pyx_t_1);
6065  __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
6066  __pyx_t_5 = 0;
6067  #if CYTHON_UNPACK_METHODS
6068  if (unlikely(PyMethod_Check(__pyx_t_3))) {
6069  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
6070  if (likely(__pyx_t_4)) {
6071  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6072  __Pyx_INCREF(__pyx_t_4);
6073  __Pyx_INCREF(function);
6074  __Pyx_DECREF_SET(__pyx_t_3, function);
6075  __pyx_t_5 = 1;
6076  }
6077  }
6078  #endif
6079  {
6080  PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
6081  __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
6082  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6083  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
6084  __Pyx_GOTREF(__pyx_t_2);
6085  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6086  }
6087  __pyx_r = __pyx_t_2;
6088  __pyx_t_2 = 0;
6089  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6090  goto __pyx_L0;
6091  }
6092  #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
6093  __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
6094  __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
6095  if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
6096  __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
6097  }
6098  #endif
6099  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6100  #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
6101  }
6102  #endif
6103  }
6104 
6105  /* "PyClical.pyx":72
6106  * {1}
6107  * """
6108  * return index_set(self) # <<<<<<<<<<<<<<
6109  *
6110  * def __cinit__(self, other = 0):
6111  */
6112  __Pyx_XDECREF(__pyx_r);
6113  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_index_set), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
6114  __Pyx_GOTREF(__pyx_t_1);
6115  __pyx_r = __pyx_t_1;
6116  __pyx_t_1 = 0;
6117  goto __pyx_L0;
6118 
6119  /* "PyClical.pyx":65
6120  * return self.instance[0]
6121  *
6122  * cpdef copy(index_set self): # <<<<<<<<<<<<<<
6123  * """
6124  * Copy this index_set object.
6125  */
6126 
6127  /* function exit code */
6128  __pyx_L1_error:;
6129  __Pyx_XDECREF(__pyx_t_1);
6130  __Pyx_XDECREF(__pyx_t_2);
6131  __Pyx_XDECREF(__pyx_t_3);
6132  __Pyx_XDECREF(__pyx_t_4);
6133  __Pyx_AddTraceback("PyClical.index_set.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
6134  __pyx_r = 0;
6135  __pyx_L0:;
6136  __Pyx_XGIVEREF(__pyx_r);
6137  __Pyx_RefNannyFinishContext();
6138  return __pyx_r;
6139 }
6140 
6141 /* Python wrapper */
6142 static PyObject *__pyx_pw_8PyClical_9index_set_1copy(PyObject *__pyx_v_self,
6143 #if CYTHON_METH_FASTCALL
6144 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6145 #else
6146 PyObject *__pyx_args, PyObject *__pyx_kwds
6147 #endif
6148 ); /*proto*/
6149 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_copy, "\n Copy this index_set object.\n\n >>> s=index_set(1); t=s.copy(); print(t)\n {1}\n ");
6150 static PyMethodDef __pyx_mdef_8PyClical_9index_set_1copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_1copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_copy};
6151 static PyObject *__pyx_pw_8PyClical_9index_set_1copy(PyObject *__pyx_v_self,
6152 #if CYTHON_METH_FASTCALL
6153 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6154 #else
6155 PyObject *__pyx_args, PyObject *__pyx_kwds
6156 #endif
6157 ) {
6158  #if !CYTHON_METH_FASTCALL
6159  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6160  #endif
6161  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6162  PyObject *__pyx_r = 0;
6163  __Pyx_RefNannyDeclarations
6164  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
6165  #if !CYTHON_METH_FASTCALL
6166  #if CYTHON_ASSUME_SAFE_MACROS
6167  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
6168  #else
6169  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
6170  #endif
6171  #endif
6172  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
6173  if (unlikely(__pyx_nargs > 0)) {
6174  __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
6175  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
6176  __pyx_r = __pyx_pf_8PyClical_9index_set_copy(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
6177 
6178  /* function exit code */
6179  __Pyx_RefNannyFinishContext();
6180  return __pyx_r;
6181 }
6182 
6183 static PyObject *__pyx_pf_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
6184  PyObject *__pyx_r = NULL;
6185  __Pyx_RefNannyDeclarations
6186  PyObject *__pyx_t_1 = NULL;
6187  int __pyx_lineno = 0;
6188  const char *__pyx_filename = NULL;
6189  int __pyx_clineno = 0;
6190  __Pyx_RefNannySetupContext("copy", 1);
6191  __Pyx_XDECREF(__pyx_r);
6192  __pyx_t_1 = __pyx_f_8PyClical_9index_set_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error)
6193  __Pyx_GOTREF(__pyx_t_1);
6194  __pyx_r = __pyx_t_1;
6195  __pyx_t_1 = 0;
6196  goto __pyx_L0;
6197 
6198  /* function exit code */
6199  __pyx_L1_error:;
6200  __Pyx_XDECREF(__pyx_t_1);
6201  __Pyx_AddTraceback("PyClical.index_set.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
6202  __pyx_r = NULL;
6203  __pyx_L0:;
6204  __Pyx_XGIVEREF(__pyx_r);
6205  __Pyx_RefNannyFinishContext();
6206  return __pyx_r;
6207 }
6208 
6209 /* "PyClical.pyx":74
6210  * return index_set(self)
6211  *
6212  * def __cinit__(self, other = 0): # <<<<<<<<<<<<<<
6213  * """
6214  * Construct an object of type index_set.
6215  */
6216 
6217 /* Python wrapper */
6218 static int __pyx_pw_8PyClical_9index_set_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6219 static int __pyx_pw_8PyClical_9index_set_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6220  PyObject *__pyx_v_other = 0;
6221  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
6222  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6223  PyObject* values[1] = {0};
6224  int __pyx_lineno = 0;
6225  const char *__pyx_filename = NULL;
6226  int __pyx_clineno = 0;
6227  int __pyx_r;
6228  __Pyx_RefNannyDeclarations
6229  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
6230  #if CYTHON_ASSUME_SAFE_MACROS
6231  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
6232  #else
6233  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
6234  #endif
6235  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
6236  {
6237  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,0};
6238  values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_0));
6239  if (__pyx_kwds) {
6240  Py_ssize_t kw_args;
6241  switch (__pyx_nargs) {
6242  case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
6243  CYTHON_FALLTHROUGH;
6244  case 0: break;
6245  default: goto __pyx_L5_argtuple_error;
6246  }
6247  kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
6248  switch (__pyx_nargs) {
6249  case 0:
6250  if (kw_args > 0) {
6251  PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other);
6252  if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
6253  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 74, __pyx_L3_error)
6254  }
6255  }
6256  if (unlikely(kw_args > 0)) {
6257  const Py_ssize_t kwd_pos_args = __pyx_nargs;
6258  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 74, __pyx_L3_error)
6259  }
6260  } else {
6261  switch (__pyx_nargs) {
6262  case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
6263  CYTHON_FALLTHROUGH;
6264  case 0: break;
6265  default: goto __pyx_L5_argtuple_error;
6266  }
6267  }
6268  __pyx_v_other = values[0];
6269  }
6270  goto __pyx_L6_skip;
6271  __pyx_L5_argtuple_error:;
6272  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 74, __pyx_L3_error)
6273  __pyx_L6_skip:;
6274  goto __pyx_L4_argument_unpacking_done;
6275  __pyx_L3_error:;
6276  {
6277  Py_ssize_t __pyx_temp;
6278  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6279  __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
6280  }
6281  }
6282  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6283  __Pyx_RefNannyFinishContext();
6284  return -1;
6285  __pyx_L4_argument_unpacking_done:;
6286  __pyx_r = __pyx_pf_8PyClical_9index_set_2__cinit__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), __pyx_v_other);
6287 
6288  /* function exit code */
6289  {
6290  Py_ssize_t __pyx_temp;
6291  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
6292  __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
6293  }
6294  }
6295  __Pyx_RefNannyFinishContext();
6296  return __pyx_r;
6297 }
6298 
6299 static int __pyx_pf_8PyClical_9index_set_2__cinit__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_other) {
6300  PyObject *__pyx_v_error_msg_prefix = NULL;
6301  PyObject *__pyx_v_idx = NULL;
6302  PyObject *__pyx_v_bother = NULL;
6303  int __pyx_r;
6304  __Pyx_RefNannyDeclarations
6305  int __pyx_t_1;
6306  IndexSet __pyx_t_2;
6307  IndexSet *__pyx_t_3;
6308  PyObject *__pyx_t_4 = NULL;
6309  PyObject *__pyx_t_5 = NULL;
6310  int __pyx_t_6;
6311  int __pyx_t_7;
6312  PyObject *__pyx_t_8 = NULL;
6313  PyObject *__pyx_t_9 = NULL;
6314  PyObject *__pyx_t_10 = NULL;
6315  Py_ssize_t __pyx_t_11;
6316  PyObject *(*__pyx_t_12)(PyObject *);
6317  PyObject *__pyx_t_13 = NULL;
6318  PyObject *__pyx_t_14 = NULL;
6319  PyObject *__pyx_t_15 = NULL;
6320  PyObject *__pyx_t_16 = NULL;
6321  char *__pyx_t_17;
6322  int __pyx_lineno = 0;
6323  const char *__pyx_filename = NULL;
6324  int __pyx_clineno = 0;
6325  __Pyx_RefNannySetupContext("__cinit__", 1);
6326 
6327  /* "PyClical.pyx":93
6328  * {}
6329  * """
6330  * error_msg_prefix = "Cannot initialize index_set object from" # <<<<<<<<<<<<<<
6331  * if isinstance(other, index_set):
6332  * self.instance = new IndexSet((<index_set>other).unwrap())
6333  */
6334  __Pyx_INCREF(__pyx_kp_u_Cannot_initialize_index_set_obje);
6335  __pyx_v_error_msg_prefix = __pyx_kp_u_Cannot_initialize_index_set_obje;
6336 
6337  /* "PyClical.pyx":94
6338  * """
6339  * error_msg_prefix = "Cannot initialize index_set object from"
6340  * if isinstance(other, index_set): # <<<<<<<<<<<<<<
6341  * self.instance = new IndexSet((<index_set>other).unwrap())
6342  * elif isinstance(other, numbers.Integral):
6343  */
6344  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_8PyClical_index_set);
6345  if (__pyx_t_1) {
6346 
6347  /* "PyClical.pyx":95
6348  * error_msg_prefix = "Cannot initialize index_set object from"
6349  * if isinstance(other, index_set):
6350  * self.instance = new IndexSet((<index_set>other).unwrap()) # <<<<<<<<<<<<<<
6351  * elif isinstance(other, numbers.Integral):
6352  * self.instance = new IndexSet(<int>other)
6353  */
6354  __pyx_t_2 = __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_other)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error)
6355  try {
6356  __pyx_t_3 = new IndexSet(__pyx_t_2);
6357  } catch(...) {
6358  __Pyx_CppExn2PyErr();
6359  __PYX_ERR(0, 95, __pyx_L1_error)
6360  }
6361  __pyx_v_self->instance = __pyx_t_3;
6362 
6363  /* "PyClical.pyx":94
6364  * """
6365  * error_msg_prefix = "Cannot initialize index_set object from"
6366  * if isinstance(other, index_set): # <<<<<<<<<<<<<<
6367  * self.instance = new IndexSet((<index_set>other).unwrap())
6368  * elif isinstance(other, numbers.Integral):
6369  */
6370  goto __pyx_L3;
6371  }
6372 
6373  /* "PyClical.pyx":96
6374  * if isinstance(other, index_set):
6375  * self.instance = new IndexSet((<index_set>other).unwrap())
6376  * elif isinstance(other, numbers.Integral): # <<<<<<<<<<<<<<
6377  * self.instance = new IndexSet(<int>other)
6378  * elif isinstance(other, (set, frozenset)):
6379  */
6380  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numbers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error)
6381  __Pyx_GOTREF(__pyx_t_4);
6382  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Integral); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error)
6383  __Pyx_GOTREF(__pyx_t_5);
6384  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6385  __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_5); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 96, __pyx_L1_error)
6386  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6387  if (__pyx_t_1) {
6388 
6389  /* "PyClical.pyx":97
6390  * self.instance = new IndexSet((<index_set>other).unwrap())
6391  * elif isinstance(other, numbers.Integral):
6392  * self.instance = new IndexSet(<int>other) # <<<<<<<<<<<<<<
6393  * elif isinstance(other, (set, frozenset)):
6394  * try:
6395  */
6396  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_other); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 97, __pyx_L1_error)
6397  try {
6398  __pyx_t_3 = new IndexSet(((int)__pyx_t_6));
6399  } catch(...) {
6400  __Pyx_CppExn2PyErr();
6401  __PYX_ERR(0, 97, __pyx_L1_error)
6402  }
6403  __pyx_v_self->instance = __pyx_t_3;
6404 
6405  /* "PyClical.pyx":96
6406  * if isinstance(other, index_set):
6407  * self.instance = new IndexSet((<index_set>other).unwrap())
6408  * elif isinstance(other, numbers.Integral): # <<<<<<<<<<<<<<
6409  * self.instance = new IndexSet(<int>other)
6410  * elif isinstance(other, (set, frozenset)):
6411  */
6412  goto __pyx_L3;
6413  }
6414 
6415  /* "PyClical.pyx":98
6416  * elif isinstance(other, numbers.Integral):
6417  * self.instance = new IndexSet(<int>other)
6418  * elif isinstance(other, (set, frozenset)): # <<<<<<<<<<<<<<
6419  * try:
6420  * self.instance = new IndexSet()
6421  */
6422  __pyx_t_7 = PySet_Check(__pyx_v_other);
6423  if (!__pyx_t_7) {
6424  } else {
6425  __pyx_t_1 = __pyx_t_7;
6426  goto __pyx_L4_bool_binop_done;
6427  }
6428  __pyx_t_7 = PyFrozenSet_Check(__pyx_v_other);
6429  __pyx_t_1 = __pyx_t_7;
6430  __pyx_L4_bool_binop_done:;
6431  if (__pyx_t_1) {
6432 
6433  /* "PyClical.pyx":99
6434  * self.instance = new IndexSet(<int>other)
6435  * elif isinstance(other, (set, frozenset)):
6436  * try: # <<<<<<<<<<<<<<
6437  * self.instance = new IndexSet()
6438  * for idx in other:
6439  */
6440  {
6441  __Pyx_PyThreadState_declare
6442  __Pyx_PyThreadState_assign
6443  __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
6444  __Pyx_XGOTREF(__pyx_t_8);
6445  __Pyx_XGOTREF(__pyx_t_9);
6446  __Pyx_XGOTREF(__pyx_t_10);
6447  /*try:*/ {
6448 
6449  /* "PyClical.pyx":100
6450  * elif isinstance(other, (set, frozenset)):
6451  * try:
6452  * self.instance = new IndexSet() # <<<<<<<<<<<<<<
6453  * for idx in other:
6454  * self[idx] = True
6455  */
6456  __pyx_t_3 = new IndexSet();
6457  __pyx_v_self->instance = __pyx_t_3;
6458 
6459  /* "PyClical.pyx":101
6460  * try:
6461  * self.instance = new IndexSet()
6462  * for idx in other: # <<<<<<<<<<<<<<
6463  * self[idx] = True
6464  * except IndexError:
6465  */
6466  if (likely(PyList_CheckExact(__pyx_v_other)) || PyTuple_CheckExact(__pyx_v_other)) {
6467  __pyx_t_5 = __pyx_v_other; __Pyx_INCREF(__pyx_t_5);
6468  __pyx_t_11 = 0;
6469  __pyx_t_12 = NULL;
6470  } else {
6471  __pyx_t_11 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_other); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L6_error)
6472  __Pyx_GOTREF(__pyx_t_5);
6473  __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 101, __pyx_L6_error)
6474  }
6475  for (;;) {
6476  if (likely(!__pyx_t_12)) {
6477  if (likely(PyList_CheckExact(__pyx_t_5))) {
6478  {
6479  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
6480  #if !CYTHON_ASSUME_SAFE_MACROS
6481  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 101, __pyx_L6_error)
6482  #endif
6483  if (__pyx_t_11 >= __pyx_temp) break;
6484  }
6485  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
6486  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(0, 101, __pyx_L6_error)
6487  #else
6488  __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L6_error)
6489  __Pyx_GOTREF(__pyx_t_4);
6490  #endif
6491  } else {
6492  {
6493  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
6494  #if !CYTHON_ASSUME_SAFE_MACROS
6495  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 101, __pyx_L6_error)
6496  #endif
6497  if (__pyx_t_11 >= __pyx_temp) break;
6498  }
6499  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
6500  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(0, 101, __pyx_L6_error)
6501  #else
6502  __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L6_error)
6503  __Pyx_GOTREF(__pyx_t_4);
6504  #endif
6505  }
6506  } else {
6507  __pyx_t_4 = __pyx_t_12(__pyx_t_5);
6508  if (unlikely(!__pyx_t_4)) {
6509  PyObject* exc_type = PyErr_Occurred();
6510  if (exc_type) {
6511  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
6512  else __PYX_ERR(0, 101, __pyx_L6_error)
6513  }
6514  break;
6515  }
6516  __Pyx_GOTREF(__pyx_t_4);
6517  }
6518  __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_4);
6519  __pyx_t_4 = 0;
6520 
6521  /* "PyClical.pyx":102
6522  * self.instance = new IndexSet()
6523  * for idx in other:
6524  * self[idx] = True # <<<<<<<<<<<<<<
6525  * except IndexError:
6526  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
6527  */
6528  if (unlikely((PyObject_SetItem(((PyObject *)__pyx_v_self), __pyx_v_idx, Py_True) < 0))) __PYX_ERR(0, 102, __pyx_L6_error)
6529 
6530  /* "PyClical.pyx":101
6531  * try:
6532  * self.instance = new IndexSet()
6533  * for idx in other: # <<<<<<<<<<<<<<
6534  * self[idx] = True
6535  * except IndexError:
6536  */
6537  }
6538  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6539 
6540  /* "PyClical.pyx":99
6541  * self.instance = new IndexSet(<int>other)
6542  * elif isinstance(other, (set, frozenset)):
6543  * try: # <<<<<<<<<<<<<<
6544  * self.instance = new IndexSet()
6545  * for idx in other:
6546  */
6547  }
6548  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
6549  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
6550  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
6551  goto __pyx_L11_try_end;
6552  __pyx_L6_error:;
6553  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6554  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
6555 
6556  /* "PyClical.pyx":103
6557  * for idx in other:
6558  * self[idx] = True
6559  * except IndexError: # <<<<<<<<<<<<<<
6560  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
6561  * except (RuntimeError, TypeError):
6562  */
6563  __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError);
6564  if (__pyx_t_6) {
6565  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6566  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_13) < 0) __PYX_ERR(0, 103, __pyx_L8_except_error)
6567  __Pyx_XGOTREF(__pyx_t_5);
6568  __Pyx_XGOTREF(__pyx_t_4);
6569  __Pyx_XGOTREF(__pyx_t_13);
6570 
6571  /* "PyClical.pyx":104
6572  * self[idx] = True
6573  * except IndexError:
6574  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".") # <<<<<<<<<<<<<<
6575  * except (RuntimeError, TypeError):
6576  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6577  */
6578  __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u_invalid); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 104, __pyx_L8_except_error)
6579  __Pyx_GOTREF(__pyx_t_14);
6580  __pyx_t_15 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 104, __pyx_L8_except_error)
6581  __Pyx_GOTREF(__pyx_t_15);
6582  __pyx_t_16 = PyNumber_Add(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 104, __pyx_L8_except_error)
6583  __Pyx_GOTREF(__pyx_t_16);
6584  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
6585  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6586  __pyx_t_15 = PyNumber_Add(__pyx_t_16, __pyx_kp_u_); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 104, __pyx_L8_except_error)
6587  __Pyx_GOTREF(__pyx_t_15);
6588  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6589  __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 104, __pyx_L8_except_error)
6590  __Pyx_GOTREF(__pyx_t_16);
6591  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6592  __Pyx_Raise(__pyx_t_16, 0, 0, 0);
6593  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6594  __PYX_ERR(0, 104, __pyx_L8_except_error)
6595  }
6596 
6597  /* "PyClical.pyx":105
6598  * except IndexError:
6599  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
6600  * except (RuntimeError, TypeError): # <<<<<<<<<<<<<<
6601  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6602  * elif isinstance(other, str):
6603  */
6604  __pyx_t_6 = __Pyx_PyErr_ExceptionMatches2(__pyx_builtin_RuntimeError, __pyx_builtin_TypeError);
6605  if (__pyx_t_6) {
6606  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6607  if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 105, __pyx_L8_except_error)
6608  __Pyx_XGOTREF(__pyx_t_13);
6609  __Pyx_XGOTREF(__pyx_t_4);
6610  __Pyx_XGOTREF(__pyx_t_5);
6611 
6612  /* "PyClical.pyx":106
6613  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
6614  * except (RuntimeError, TypeError):
6615  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".") # <<<<<<<<<<<<<<
6616  * elif isinstance(other, str):
6617  * try:
6618  */
6619  __pyx_t_16 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u_invalid); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 106, __pyx_L8_except_error)
6620  __Pyx_GOTREF(__pyx_t_16);
6621  __pyx_t_15 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 106, __pyx_L8_except_error)
6622  __Pyx_GOTREF(__pyx_t_15);
6623  __pyx_t_14 = PyNumber_Add(__pyx_t_16, __pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 106, __pyx_L8_except_error)
6624  __Pyx_GOTREF(__pyx_t_14);
6625  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6626  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6627  __pyx_t_15 = PyNumber_Add(__pyx_t_14, __pyx_kp_u_); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 106, __pyx_L8_except_error)
6628  __Pyx_GOTREF(__pyx_t_15);
6629  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
6630  __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 106, __pyx_L8_except_error)
6631  __Pyx_GOTREF(__pyx_t_14);
6632  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6633  __Pyx_Raise(__pyx_t_14, 0, 0, 0);
6634  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
6635  __PYX_ERR(0, 106, __pyx_L8_except_error)
6636  }
6637  goto __pyx_L8_except_error;
6638 
6639  /* "PyClical.pyx":99
6640  * self.instance = new IndexSet(<int>other)
6641  * elif isinstance(other, (set, frozenset)):
6642  * try: # <<<<<<<<<<<<<<
6643  * self.instance = new IndexSet()
6644  * for idx in other:
6645  */
6646  __pyx_L8_except_error:;
6647  __Pyx_XGIVEREF(__pyx_t_8);
6648  __Pyx_XGIVEREF(__pyx_t_9);
6649  __Pyx_XGIVEREF(__pyx_t_10);
6650  __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
6651  goto __pyx_L1_error;
6652  __pyx_L11_try_end:;
6653  }
6654 
6655  /* "PyClical.pyx":98
6656  * elif isinstance(other, numbers.Integral):
6657  * self.instance = new IndexSet(<int>other)
6658  * elif isinstance(other, (set, frozenset)): # <<<<<<<<<<<<<<
6659  * try:
6660  * self.instance = new IndexSet()
6661  */
6662  goto __pyx_L3;
6663  }
6664 
6665  /* "PyClical.pyx":107
6666  * except (RuntimeError, TypeError):
6667  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6668  * elif isinstance(other, str): # <<<<<<<<<<<<<<
6669  * try:
6670  * bother = other.encode("UTF-8")
6671  */
6672  __pyx_t_1 = PyUnicode_Check(__pyx_v_other);
6673  if (likely(__pyx_t_1)) {
6674 
6675  /* "PyClical.pyx":108
6676  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6677  * elif isinstance(other, str):
6678  * try: # <<<<<<<<<<<<<<
6679  * bother = other.encode("UTF-8")
6680  * self.instance = new IndexSet(<char *>bother)
6681  */
6682  {
6683  __Pyx_PyThreadState_declare
6684  __Pyx_PyThreadState_assign
6685  __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
6686  __Pyx_XGOTREF(__pyx_t_10);
6687  __Pyx_XGOTREF(__pyx_t_9);
6688  __Pyx_XGOTREF(__pyx_t_8);
6689  /*try:*/ {
6690 
6691  /* "PyClical.pyx":109
6692  * elif isinstance(other, str):
6693  * try:
6694  * bother = other.encode("UTF-8") # <<<<<<<<<<<<<<
6695  * self.instance = new IndexSet(<char *>bother)
6696  * except RuntimeError:
6697  */
6698  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 109, __pyx_L19_error)
6699  __Pyx_GOTREF(__pyx_t_4);
6700  __pyx_t_13 = NULL;
6701  __pyx_t_6 = 0;
6702  #if CYTHON_UNPACK_METHODS
6703  if (likely(PyMethod_Check(__pyx_t_4))) {
6704  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
6705  if (likely(__pyx_t_13)) {
6706  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6707  __Pyx_INCREF(__pyx_t_13);
6708  __Pyx_INCREF(function);
6709  __Pyx_DECREF_SET(__pyx_t_4, function);
6710  __pyx_t_6 = 1;
6711  }
6712  }
6713  #endif
6714  {
6715  PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_kp_u_UTF_8};
6716  __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
6717  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
6718  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 109, __pyx_L19_error)
6719  __Pyx_GOTREF(__pyx_t_5);
6720  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6721  }
6722  __pyx_v_bother = __pyx_t_5;
6723  __pyx_t_5 = 0;
6724 
6725  /* "PyClical.pyx":110
6726  * try:
6727  * bother = other.encode("UTF-8")
6728  * self.instance = new IndexSet(<char *>bother) # <<<<<<<<<<<<<<
6729  * except RuntimeError:
6730  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
6731  */
6732  __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_v_bother); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L19_error)
6733  try {
6734  __pyx_t_3 = new IndexSet(((char *)__pyx_t_17));
6735  } catch(...) {
6736  __Pyx_CppExn2PyErr();
6737  __PYX_ERR(0, 110, __pyx_L19_error)
6738  }
6739  __pyx_v_self->instance = __pyx_t_3;
6740 
6741  /* "PyClical.pyx":108
6742  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6743  * elif isinstance(other, str):
6744  * try: # <<<<<<<<<<<<<<
6745  * bother = other.encode("UTF-8")
6746  * self.instance = new IndexSet(<char *>bother)
6747  */
6748  }
6749  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
6750  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
6751  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
6752  goto __pyx_L24_try_end;
6753  __pyx_L19_error:;
6754  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
6755  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
6756  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
6757  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
6758  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6759  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
6760 
6761  /* "PyClical.pyx":111
6762  * bother = other.encode("UTF-8")
6763  * self.instance = new IndexSet(<char *>bother)
6764  * except RuntimeError: # <<<<<<<<<<<<<<
6765  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
6766  * else:
6767  */
6768  __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
6769  if (__pyx_t_6) {
6770  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6771  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_13) < 0) __PYX_ERR(0, 111, __pyx_L21_except_error)
6772  __Pyx_XGOTREF(__pyx_t_5);
6773  __Pyx_XGOTREF(__pyx_t_4);
6774  __Pyx_XGOTREF(__pyx_t_13);
6775 
6776  /* "PyClical.pyx":112
6777  * self.instance = new IndexSet(<char *>bother)
6778  * except RuntimeError:
6779  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".") # <<<<<<<<<<<<<<
6780  * else:
6781  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6782  */
6783  __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u_invalid_string); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 112, __pyx_L21_except_error)
6784  __Pyx_GOTREF(__pyx_t_14);
6785  __pyx_t_15 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 112, __pyx_L21_except_error)
6786  __Pyx_GOTREF(__pyx_t_15);
6787  __pyx_t_16 = PyNumber_Add(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 112, __pyx_L21_except_error)
6788  __Pyx_GOTREF(__pyx_t_16);
6789  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
6790  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6791  __pyx_t_15 = PyNumber_Add(__pyx_t_16, __pyx_kp_u_); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 112, __pyx_L21_except_error)
6792  __Pyx_GOTREF(__pyx_t_15);
6793  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6794  __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 112, __pyx_L21_except_error)
6795  __Pyx_GOTREF(__pyx_t_16);
6796  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6797  __Pyx_Raise(__pyx_t_16, 0, 0, 0);
6798  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6799  __PYX_ERR(0, 112, __pyx_L21_except_error)
6800  }
6801  goto __pyx_L21_except_error;
6802 
6803  /* "PyClical.pyx":108
6804  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6805  * elif isinstance(other, str):
6806  * try: # <<<<<<<<<<<<<<
6807  * bother = other.encode("UTF-8")
6808  * self.instance = new IndexSet(<char *>bother)
6809  */
6810  __pyx_L21_except_error:;
6811  __Pyx_XGIVEREF(__pyx_t_10);
6812  __Pyx_XGIVEREF(__pyx_t_9);
6813  __Pyx_XGIVEREF(__pyx_t_8);
6814  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
6815  goto __pyx_L1_error;
6816  __pyx_L24_try_end:;
6817  }
6818 
6819  /* "PyClical.pyx":107
6820  * except (RuntimeError, TypeError):
6821  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
6822  * elif isinstance(other, str): # <<<<<<<<<<<<<<
6823  * try:
6824  * bother = other.encode("UTF-8")
6825  */
6826  goto __pyx_L3;
6827  }
6828 
6829  /* "PyClical.pyx":114
6830  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
6831  * else:
6832  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".") # <<<<<<<<<<<<<<
6833  *
6834  * def __dealloc__(self):
6835  */
6836  /*else*/ {
6837  __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u__2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 114, __pyx_L1_error)
6838  __Pyx_GOTREF(__pyx_t_13);
6839  __pyx_t_4 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_other))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
6840  __Pyx_GOTREF(__pyx_t_4);
6841  __pyx_t_5 = PyNumber_Add(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
6842  __Pyx_GOTREF(__pyx_t_5);
6843  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
6844  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6845  __pyx_t_4 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_5, __pyx_kp_u_); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
6846  __Pyx_GOTREF(__pyx_t_4);
6847  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6848  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
6849  __Pyx_GOTREF(__pyx_t_5);
6850  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6851  __Pyx_Raise(__pyx_t_5, 0, 0, 0);
6852  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6853  __PYX_ERR(0, 114, __pyx_L1_error)
6854  }
6855  __pyx_L3:;
6856 
6857  /* "PyClical.pyx":74
6858  * return index_set(self)
6859  *
6860  * def __cinit__(self, other = 0): # <<<<<<<<<<<<<<
6861  * """
6862  * Construct an object of type index_set.
6863  */
6864 
6865  /* function exit code */
6866  __pyx_r = 0;
6867  goto __pyx_L0;
6868  __pyx_L1_error:;
6869  __Pyx_XDECREF(__pyx_t_4);
6870  __Pyx_XDECREF(__pyx_t_5);
6871  __Pyx_XDECREF(__pyx_t_13);
6872  __Pyx_XDECREF(__pyx_t_14);
6873  __Pyx_XDECREF(__pyx_t_15);
6874  __Pyx_XDECREF(__pyx_t_16);
6875  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6876  __pyx_r = -1;
6877  __pyx_L0:;
6878  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
6879  __Pyx_XDECREF(__pyx_v_idx);
6880  __Pyx_XDECREF(__pyx_v_bother);
6881  __Pyx_RefNannyFinishContext();
6882  return __pyx_r;
6883 }
6884 
6885 /* "PyClical.pyx":116
6886  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6887  *
6888  * def __dealloc__(self): # <<<<<<<<<<<<<<
6889  * """
6890  * Clean up by deallocating the instance of C++ class IndexSet.
6891  */
6892 
6893 /* Python wrapper */
6894 static void __pyx_pw_8PyClical_9index_set_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
6895 static void __pyx_pw_8PyClical_9index_set_5__dealloc__(PyObject *__pyx_v_self) {
6896  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6897  __Pyx_RefNannyDeclarations
6898  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
6899  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
6900  __pyx_pf_8PyClical_9index_set_4__dealloc__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
6901 
6902  /* function exit code */
6903  __Pyx_RefNannyFinishContext();
6904 }
6905 
6906 static void __pyx_pf_8PyClical_9index_set_4__dealloc__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
6907 
6908  /* "PyClical.pyx":120
6909  * Clean up by deallocating the instance of C++ class IndexSet.
6910  * """
6911  * del self.instance # <<<<<<<<<<<<<<
6912  *
6913  * def __richcmp__(lhs, rhs, int op):
6914  */
6915  delete __pyx_v_self->instance;
6916 
6917  /* "PyClical.pyx":116
6918  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6919  *
6920  * def __dealloc__(self): # <<<<<<<<<<<<<<
6921  * """
6922  * Clean up by deallocating the instance of C++ class IndexSet.
6923  */
6924 
6925  /* function exit code */
6926 }
6927 
6928 /* "PyClical.pyx":122
6929  * del self.instance
6930  *
6931  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
6932  * """
6933  * Compare two objects of class index_set.
6934  */
6935 
6936 /* Python wrapper */
6937 static PyObject *__pyx_pw_8PyClical_9index_set_7__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /*proto*/
6938 static PyObject *__pyx_pw_8PyClical_9index_set_7__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
6939  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
6940  PyObject *__pyx_r = 0;
6941  __Pyx_RefNannyDeclarations
6942  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
6943  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
6944  __pyx_r = __pyx_pf_8PyClical_9index_set_6__richcmp__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs), ((int)__pyx_v_op));
6945 
6946  /* function exit code */
6947  __Pyx_RefNannyFinishContext();
6948  return __pyx_r;
6949 }
6950 
6951 static PyObject *__pyx_pf_8PyClical_9index_set_6__richcmp__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
6952  PyObject *__pyx_v_eq = NULL;
6953  PyObject *__pyx_v_lt = NULL;
6954  PyObject *__pyx_r = NULL;
6955  __Pyx_RefNannyDeclarations
6956  int __pyx_t_1;
6957  int __pyx_t_2;
6958  PyObject *__pyx_t_3 = NULL;
6959  IndexSet __pyx_t_4;
6960  IndexSet __pyx_t_5;
6961  int __pyx_lineno = 0;
6962  const char *__pyx_filename = NULL;
6963  int __pyx_clineno = 0;
6964  __Pyx_RefNannySetupContext("__richcmp__", 1);
6965 
6966  /* "PyClical.pyx":143
6967  * False
6968  * """
6969  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
6970  * eq = bool(lhs is rhs)
6971  * if op == 2: # ==
6972  */
6973  __pyx_t_2 = (((PyObject *)__pyx_v_lhs) == Py_None);
6974  if (!__pyx_t_2) {
6975  } else {
6976  __pyx_t_1 = __pyx_t_2;
6977  goto __pyx_L4_bool_binop_done;
6978  }
6979  __pyx_t_2 = (__pyx_v_rhs == Py_None);
6980  __pyx_t_1 = __pyx_t_2;
6981  __pyx_L4_bool_binop_done:;
6982  if (__pyx_t_1) {
6983 
6984  /* "PyClical.pyx":144
6985  * """
6986  * if (lhs is None) or (rhs is None):
6987  * eq = bool(lhs is rhs) # <<<<<<<<<<<<<<
6988  * if op == 2: # ==
6989  * return eq
6990  */
6991  __pyx_t_1 = (((PyObject *)__pyx_v_lhs) == __pyx_v_rhs);
6992  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
6993  __Pyx_GOTREF(__pyx_t_3);
6994  __pyx_v_eq = __pyx_t_3;
6995  __pyx_t_3 = 0;
6996 
6997  /* "PyClical.pyx":145
6998  * if (lhs is None) or (rhs is None):
6999  * eq = bool(lhs is rhs)
7000  * if op == 2: # == # <<<<<<<<<<<<<<
7001  * return eq
7002  * elif op == 3: # !=
7003  */
7004  switch (__pyx_v_op) {
7005  case 2:
7006 
7007  /* "PyClical.pyx":146
7008  * eq = bool(lhs is rhs)
7009  * if op == 2: # ==
7010  * return eq # <<<<<<<<<<<<<<
7011  * elif op == 3: # !=
7012  * return not eq
7013  */
7014  __Pyx_XDECREF(__pyx_r);
7015  __Pyx_INCREF(__pyx_v_eq);
7016  __pyx_r = __pyx_v_eq;
7017  goto __pyx_L0;
7018 
7019  /* "PyClical.pyx":145
7020  * if (lhs is None) or (rhs is None):
7021  * eq = bool(lhs is rhs)
7022  * if op == 2: # == # <<<<<<<<<<<<<<
7023  * return eq
7024  * elif op == 3: # !=
7025  */
7026  break;
7027  case 3:
7028 
7029  /* "PyClical.pyx":148
7030  * return eq
7031  * elif op == 3: # !=
7032  * return not eq # <<<<<<<<<<<<<<
7033  * else:
7034  * if op == 0: # <
7035  */
7036  __Pyx_XDECREF(__pyx_r);
7037  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_eq); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 148, __pyx_L1_error)
7038  __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
7039  __Pyx_GOTREF(__pyx_t_3);
7040  __pyx_r = __pyx_t_3;
7041  __pyx_t_3 = 0;
7042  goto __pyx_L0;
7043 
7044  /* "PyClical.pyx":147
7045  * if op == 2: # ==
7046  * return eq
7047  * elif op == 3: # != # <<<<<<<<<<<<<<
7048  * return not eq
7049  * else:
7050  */
7051  break;
7052  default:
7053 
7054  /* "PyClical.pyx":150
7055  * return not eq
7056  * else:
7057  * if op == 0: # < # <<<<<<<<<<<<<<
7058  * return False
7059  * elif op == 1: # <=
7060  */
7061  switch (__pyx_v_op) {
7062  case 0:
7063 
7064  /* "PyClical.pyx":151
7065  * else:
7066  * if op == 0: # <
7067  * return False # <<<<<<<<<<<<<<
7068  * elif op == 1: # <=
7069  * return eq
7070  */
7071  __Pyx_XDECREF(__pyx_r);
7072  __Pyx_INCREF(Py_False);
7073  __pyx_r = Py_False;
7074  goto __pyx_L0;
7075 
7076  /* "PyClical.pyx":150
7077  * return not eq
7078  * else:
7079  * if op == 0: # < # <<<<<<<<<<<<<<
7080  * return False
7081  * elif op == 1: # <=
7082  */
7083  break;
7084  case 1:
7085 
7086  /* "PyClical.pyx":153
7087  * return False
7088  * elif op == 1: # <=
7089  * return eq # <<<<<<<<<<<<<<
7090  * elif op == 4: # >
7091  * return False
7092  */
7093  __Pyx_XDECREF(__pyx_r);
7094  __Pyx_INCREF(__pyx_v_eq);
7095  __pyx_r = __pyx_v_eq;
7096  goto __pyx_L0;
7097 
7098  /* "PyClical.pyx":152
7099  * if op == 0: # <
7100  * return False
7101  * elif op == 1: # <= # <<<<<<<<<<<<<<
7102  * return eq
7103  * elif op == 4: # >
7104  */
7105  break;
7106  case 4:
7107 
7108  /* "PyClical.pyx":155
7109  * return eq
7110  * elif op == 4: # >
7111  * return False # <<<<<<<<<<<<<<
7112  * elif op == 5: # >=
7113  * return eq
7114  */
7115  __Pyx_XDECREF(__pyx_r);
7116  __Pyx_INCREF(Py_False);
7117  __pyx_r = Py_False;
7118  goto __pyx_L0;
7119 
7120  /* "PyClical.pyx":154
7121  * elif op == 1: # <=
7122  * return eq
7123  * elif op == 4: # > # <<<<<<<<<<<<<<
7124  * return False
7125  * elif op == 5: # >=
7126  */
7127  break;
7128  case 5:
7129 
7130  /* "PyClical.pyx":157
7131  * return False
7132  * elif op == 5: # >=
7133  * return eq # <<<<<<<<<<<<<<
7134  * else:
7135  * return NotImplemented
7136  */
7137  __Pyx_XDECREF(__pyx_r);
7138  __Pyx_INCREF(__pyx_v_eq);
7139  __pyx_r = __pyx_v_eq;
7140  goto __pyx_L0;
7141 
7142  /* "PyClical.pyx":156
7143  * elif op == 4: # >
7144  * return False
7145  * elif op == 5: # >= # <<<<<<<<<<<<<<
7146  * return eq
7147  * else:
7148  */
7149  break;
7150  default:
7151 
7152  /* "PyClical.pyx":159
7153  * return eq
7154  * else:
7155  * return NotImplemented # <<<<<<<<<<<<<<
7156  * else:
7157  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
7158  */
7159  __Pyx_XDECREF(__pyx_r);
7160  __Pyx_INCREF(__pyx_builtin_NotImplemented);
7161  __pyx_r = __pyx_builtin_NotImplemented;
7162  goto __pyx_L0;
7163  break;
7164  }
7165  break;
7166  }
7167 
7168  /* "PyClical.pyx":143
7169  * False
7170  * """
7171  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
7172  * eq = bool(lhs is rhs)
7173  * if op == 2: # ==
7174  */
7175  }
7176 
7177  /* "PyClical.pyx":161
7178  * return NotImplemented
7179  * else:
7180  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) ) # <<<<<<<<<<<<<<
7181  * if op == 2: # ==
7182  * return eq
7183  */
7184  /*else*/ {
7185  __pyx_t_4 = __pyx_f_8PyClical_toIndexSet(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L1_error)
7186  __pyx_t_5 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L1_error)
7187  __pyx_t_1 = (__pyx_t_4 == __pyx_t_5);
7188  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
7189  __Pyx_GOTREF(__pyx_t_3);
7190  __pyx_v_eq = __pyx_t_3;
7191  __pyx_t_3 = 0;
7192 
7193  /* "PyClical.pyx":162
7194  * else:
7195  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
7196  * if op == 2: # == # <<<<<<<<<<<<<<
7197  * return eq
7198  * elif op == 3: # !=
7199  */
7200  switch (__pyx_v_op) {
7201  case 2:
7202 
7203  /* "PyClical.pyx":163
7204  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
7205  * if op == 2: # ==
7206  * return eq # <<<<<<<<<<<<<<
7207  * elif op == 3: # !=
7208  * return not eq
7209  */
7210  __Pyx_XDECREF(__pyx_r);
7211  __Pyx_INCREF(__pyx_v_eq);
7212  __pyx_r = __pyx_v_eq;
7213  goto __pyx_L0;
7214 
7215  /* "PyClical.pyx":162
7216  * else:
7217  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
7218  * if op == 2: # == # <<<<<<<<<<<<<<
7219  * return eq
7220  * elif op == 3: # !=
7221  */
7222  break;
7223  case 3:
7224 
7225  /* "PyClical.pyx":165
7226  * return eq
7227  * elif op == 3: # !=
7228  * return not eq # <<<<<<<<<<<<<<
7229  * else:
7230  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
7231  */
7232  __Pyx_XDECREF(__pyx_r);
7233  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_eq); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 165, __pyx_L1_error)
7234  __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error)
7235  __Pyx_GOTREF(__pyx_t_3);
7236  __pyx_r = __pyx_t_3;
7237  __pyx_t_3 = 0;
7238  goto __pyx_L0;
7239 
7240  /* "PyClical.pyx":164
7241  * if op == 2: # ==
7242  * return eq
7243  * elif op == 3: # != # <<<<<<<<<<<<<<
7244  * return not eq
7245  * else:
7246  */
7247  break;
7248  default:
7249 
7250  /* "PyClical.pyx":167
7251  * return not eq
7252  * else:
7253  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) ) # <<<<<<<<<<<<<<
7254  * if op == 0: # <
7255  * return lt
7256  */
7257  __pyx_t_5 = __pyx_f_8PyClical_toIndexSet(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L1_error)
7258  __pyx_t_4 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L1_error)
7259  __pyx_t_1 = (__pyx_t_5 < __pyx_t_4);
7260  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
7261  __Pyx_GOTREF(__pyx_t_3);
7262  __pyx_v_lt = __pyx_t_3;
7263  __pyx_t_3 = 0;
7264 
7265  /* "PyClical.pyx":168
7266  * else:
7267  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
7268  * if op == 0: # < # <<<<<<<<<<<<<<
7269  * return lt
7270  * elif op == 1: # <=
7271  */
7272  switch (__pyx_v_op) {
7273  case 0:
7274 
7275  /* "PyClical.pyx":169
7276  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
7277  * if op == 0: # <
7278  * return lt # <<<<<<<<<<<<<<
7279  * elif op == 1: # <=
7280  * return lt or eq
7281  */
7282  __Pyx_XDECREF(__pyx_r);
7283  __Pyx_INCREF(__pyx_v_lt);
7284  __pyx_r = __pyx_v_lt;
7285  goto __pyx_L0;
7286 
7287  /* "PyClical.pyx":168
7288  * else:
7289  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
7290  * if op == 0: # < # <<<<<<<<<<<<<<
7291  * return lt
7292  * elif op == 1: # <=
7293  */
7294  break;
7295  case 1:
7296 
7297  /* "PyClical.pyx":171
7298  * return lt
7299  * elif op == 1: # <=
7300  * return lt or eq # <<<<<<<<<<<<<<
7301  * elif op == 4: # >
7302  * return not (lt or eq)
7303  */
7304  __Pyx_XDECREF(__pyx_r);
7305  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_lt); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 171, __pyx_L1_error)
7306  if (!__pyx_t_1) {
7307  } else {
7308  __Pyx_INCREF(__pyx_v_lt);
7309  __pyx_t_3 = __pyx_v_lt;
7310  goto __pyx_L6_bool_binop_done;
7311  }
7312  __Pyx_INCREF(__pyx_v_eq);
7313  __pyx_t_3 = __pyx_v_eq;
7314  __pyx_L6_bool_binop_done:;
7315  __pyx_r = __pyx_t_3;
7316  __pyx_t_3 = 0;
7317  goto __pyx_L0;
7318 
7319  /* "PyClical.pyx":170
7320  * if op == 0: # <
7321  * return lt
7322  * elif op == 1: # <= # <<<<<<<<<<<<<<
7323  * return lt or eq
7324  * elif op == 4: # >
7325  */
7326  break;
7327  case 4:
7328 
7329  /* "PyClical.pyx":173
7330  * return lt or eq
7331  * elif op == 4: # >
7332  * return not (lt or eq) # <<<<<<<<<<<<<<
7333  * elif op == 5: # >=
7334  * return not lt
7335  */
7336  __Pyx_XDECREF(__pyx_r);
7337  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_lt); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 173, __pyx_L1_error)
7338  if (!__pyx_t_2) {
7339  } else {
7340  __pyx_t_1 = __pyx_t_2;
7341  goto __pyx_L8_bool_binop_done;
7342  }
7343  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_eq); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 173, __pyx_L1_error)
7344  __pyx_t_1 = __pyx_t_2;
7345  __pyx_L8_bool_binop_done:;
7346  __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
7347  __Pyx_GOTREF(__pyx_t_3);
7348  __pyx_r = __pyx_t_3;
7349  __pyx_t_3 = 0;
7350  goto __pyx_L0;
7351 
7352  /* "PyClical.pyx":172
7353  * elif op == 1: # <=
7354  * return lt or eq
7355  * elif op == 4: # > # <<<<<<<<<<<<<<
7356  * return not (lt or eq)
7357  * elif op == 5: # >=
7358  */
7359  break;
7360  case 5:
7361 
7362  /* "PyClical.pyx":175
7363  * return not (lt or eq)
7364  * elif op == 5: # >=
7365  * return not lt # <<<<<<<<<<<<<<
7366  * else:
7367  * return NotImplemented
7368  */
7369  __Pyx_XDECREF(__pyx_r);
7370  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_lt); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 175, __pyx_L1_error)
7371  __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
7372  __Pyx_GOTREF(__pyx_t_3);
7373  __pyx_r = __pyx_t_3;
7374  __pyx_t_3 = 0;
7375  goto __pyx_L0;
7376 
7377  /* "PyClical.pyx":174
7378  * elif op == 4: # >
7379  * return not (lt or eq)
7380  * elif op == 5: # >= # <<<<<<<<<<<<<<
7381  * return not lt
7382  * else:
7383  */
7384  break;
7385  default:
7386 
7387  /* "PyClical.pyx":177
7388  * return not lt
7389  * else:
7390  * return NotImplemented # <<<<<<<<<<<<<<
7391  *
7392  * def __setitem__(self, idx, val):
7393  */
7394  __Pyx_XDECREF(__pyx_r);
7395  __Pyx_INCREF(__pyx_builtin_NotImplemented);
7396  __pyx_r = __pyx_builtin_NotImplemented;
7397  goto __pyx_L0;
7398  break;
7399  }
7400  break;
7401  }
7402  }
7403 
7404  /* "PyClical.pyx":122
7405  * del self.instance
7406  *
7407  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
7408  * """
7409  * Compare two objects of class index_set.
7410  */
7411 
7412  /* function exit code */
7413  __pyx_L1_error:;
7414  __Pyx_XDECREF(__pyx_t_3);
7415  __Pyx_AddTraceback("PyClical.index_set.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7416  __pyx_r = NULL;
7417  __pyx_L0:;
7418  __Pyx_XDECREF(__pyx_v_eq);
7419  __Pyx_XDECREF(__pyx_v_lt);
7420  __Pyx_XGIVEREF(__pyx_r);
7421  __Pyx_RefNannyFinishContext();
7422  return __pyx_r;
7423 }
7424 
7425 /* "PyClical.pyx":179
7426  * return NotImplemented
7427  *
7428  * def __setitem__(self, idx, val): # <<<<<<<<<<<<<<
7429  * """
7430  * Set the value of an index_set object at index idx to value val.
7431  */
7432 
7433 /* Python wrapper */
7434 static int __pyx_pw_8PyClical_9index_set_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_val); /*proto*/
7435 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_8__setitem__, "\n Set the value of an index_set object at index idx to value val.\n\n >>> s=index_set({1}); s[2] = True; print(s)\n {1,2}\n >>> s=index_set({1,2}); s[1] = False; print(s)\n {2}\n ");
7436 #if CYTHON_UPDATE_DESCRIPTOR_DOC
7437 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_8__setitem__;
7438 #endif
7439 static int __pyx_pw_8PyClical_9index_set_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_val) {
7440  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7441  int __pyx_r;
7442  __Pyx_RefNannyDeclarations
7443  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
7444  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
7445  __pyx_r = __pyx_pf_8PyClical_9index_set_8__setitem__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_idx), ((PyObject *)__pyx_v_val));
7446 
7447  /* function exit code */
7448  __Pyx_RefNannyFinishContext();
7449  return __pyx_r;
7450 }
7451 
7452 static int __pyx_pf_8PyClical_9index_set_8__setitem__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_val) {
7453  int __pyx_r;
7454  int __pyx_t_1;
7455  int __pyx_t_2;
7456  int __pyx_lineno = 0;
7457  const char *__pyx_filename = NULL;
7458  int __pyx_clineno = 0;
7459 
7460  /* "PyClical.pyx":188
7461  * {2}
7462  * """
7463  * self.instance.set(idx, val) # <<<<<<<<<<<<<<
7464  * return
7465  *
7466  */
7467  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_idx); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 188, __pyx_L1_error)
7468  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_val); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 188, __pyx_L1_error)
7469  try {
7470  __pyx_v_self->instance->set(__pyx_t_1, __pyx_t_2);
7471  } catch(...) {
7472  __Pyx_CppExn2PyErr();
7473  __PYX_ERR(0, 188, __pyx_L1_error)
7474  }
7475 
7476  /* "PyClical.pyx":189
7477  * """
7478  * self.instance.set(idx, val)
7479  * return # <<<<<<<<<<<<<<
7480  *
7481  * def __getitem__(self, idx):
7482  */
7483  __pyx_r = 0;
7484  goto __pyx_L0;
7485 
7486  /* "PyClical.pyx":179
7487  * return NotImplemented
7488  *
7489  * def __setitem__(self, idx, val): # <<<<<<<<<<<<<<
7490  * """
7491  * Set the value of an index_set object at index idx to value val.
7492  */
7493 
7494  /* function exit code */
7495  __pyx_L1_error:;
7496  __Pyx_AddTraceback("PyClical.index_set.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7497  __pyx_r = -1;
7498  __pyx_L0:;
7499  return __pyx_r;
7500 }
7501 
7502 /* "PyClical.pyx":191
7503  * return
7504  *
7505  * def __getitem__(self, idx): # <<<<<<<<<<<<<<
7506  * """
7507  * Get the value of an index_set object at an index.
7508  */
7509 
7510 /* Python wrapper */
7511 static PyObject *__pyx_pw_8PyClical_9index_set_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx); /*proto*/
7512 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_10__getitem__, "\n Get the value of an index_set object at an index.\n\n >>> index_set({1})[1]\n True\n >>> index_set({1})[2]\n False\n >>> index_set({2})[-1]\n False\n >>> index_set({2})[1]\n False\n >>> index_set({2})[2]\n True\n >>> index_set({2})[33]\n False\n ");
7513 #if CYTHON_UPDATE_DESCRIPTOR_DOC
7514 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_10__getitem__;
7515 #endif
7516 static PyObject *__pyx_pw_8PyClical_9index_set_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx) {
7517  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7518  PyObject *__pyx_r = 0;
7519  __Pyx_RefNannyDeclarations
7520  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
7521  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
7522  __pyx_r = __pyx_pf_8PyClical_9index_set_10__getitem__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_idx));
7523 
7524  /* function exit code */
7525  __Pyx_RefNannyFinishContext();
7526  return __pyx_r;
7527 }
7528 
7529 static PyObject *__pyx_pf_8PyClical_9index_set_10__getitem__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx) {
7530  PyObject *__pyx_r = NULL;
7531  __Pyx_RefNannyDeclarations
7532  int __pyx_t_1;
7533  PyObject *__pyx_t_2 = NULL;
7534  int __pyx_lineno = 0;
7535  const char *__pyx_filename = NULL;
7536  int __pyx_clineno = 0;
7537  __Pyx_RefNannySetupContext("__getitem__", 1);
7538 
7539  /* "PyClical.pyx":208
7540  * False
7541  * """
7542  * return self.instance.getitem(idx) # <<<<<<<<<<<<<<
7543  *
7544  * def __contains__(self, idx):
7545  */
7546  __Pyx_XDECREF(__pyx_r);
7547  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_idx); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L1_error)
7548  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->instance->operator[](__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error)
7549  __Pyx_GOTREF(__pyx_t_2);
7550  __pyx_r = __pyx_t_2;
7551  __pyx_t_2 = 0;
7552  goto __pyx_L0;
7553 
7554  /* "PyClical.pyx":191
7555  * return
7556  *
7557  * def __getitem__(self, idx): # <<<<<<<<<<<<<<
7558  * """
7559  * Get the value of an index_set object at an index.
7560  */
7561 
7562  /* function exit code */
7563  __pyx_L1_error:;
7564  __Pyx_XDECREF(__pyx_t_2);
7565  __Pyx_AddTraceback("PyClical.index_set.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7566  __pyx_r = NULL;
7567  __pyx_L0:;
7568  __Pyx_XGIVEREF(__pyx_r);
7569  __Pyx_RefNannyFinishContext();
7570  return __pyx_r;
7571 }
7572 
7573 /* "PyClical.pyx":210
7574  * return self.instance.getitem(idx)
7575  *
7576  * def __contains__(self, idx): # <<<<<<<<<<<<<<
7577  * """
7578  * Check that an index_set object contains the index idx: idx in self.
7579  */
7580 
7581 /* Python wrapper */
7582 static int __pyx_pw_8PyClical_9index_set_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx); /*proto*/
7583 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_12__contains__, "\n Check that an index_set object contains the index idx: idx in self.\n\n >>> 1 in index_set({1})\n True\n >>> 2 in index_set({1})\n False\n >>> -1 in index_set({2})\n False\n >>> 1 in index_set({2})\n False\n >>> 2 in index_set({2})\n True\n >>> 33 in index_set({2})\n False\n ");
7584 #if CYTHON_UPDATE_DESCRIPTOR_DOC
7585 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_12__contains__;
7586 #endif
7587 static int __pyx_pw_8PyClical_9index_set_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx) {
7588  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7589  int __pyx_r;
7590  __Pyx_RefNannyDeclarations
7591  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
7592  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
7593  __pyx_r = __pyx_pf_8PyClical_9index_set_12__contains__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_idx));
7594 
7595  /* function exit code */
7596  __Pyx_RefNannyFinishContext();
7597  return __pyx_r;
7598 }
7599 
7600 static int __pyx_pf_8PyClical_9index_set_12__contains__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx) {
7601  int __pyx_r;
7602  int __pyx_t_1;
7603  int __pyx_lineno = 0;
7604  const char *__pyx_filename = NULL;
7605  int __pyx_clineno = 0;
7606 
7607  /* "PyClical.pyx":227
7608  * False
7609  * """
7610  * return self.instance.getitem(idx) # <<<<<<<<<<<<<<
7611  *
7612  * def __iter__(self):
7613  */
7614  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_idx); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 227, __pyx_L1_error)
7615  __pyx_r = __pyx_v_self->instance->operator[](__pyx_t_1);
7616  goto __pyx_L0;
7617 
7618  /* "PyClical.pyx":210
7619  * return self.instance.getitem(idx)
7620  *
7621  * def __contains__(self, idx): # <<<<<<<<<<<<<<
7622  * """
7623  * Check that an index_set object contains the index idx: idx in self.
7624  */
7625 
7626  /* function exit code */
7627  __pyx_L1_error:;
7628  __Pyx_AddTraceback("PyClical.index_set.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7629  __pyx_r = -1;
7630  __pyx_L0:;
7631  return __pyx_r;
7632 }
7633 static PyObject *__pyx_gb_8PyClical_9index_set_16generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
7634 
7635 /* "PyClical.pyx":229
7636  * return self.instance.getitem(idx)
7637  *
7638  * def __iter__(self): # <<<<<<<<<<<<<<
7639  * """
7640  * Iterate over the indices of an index_set.
7641  */
7642 
7643 /* Python wrapper */
7644 static PyObject *__pyx_pw_8PyClical_9index_set_15__iter__(PyObject *__pyx_v_self); /*proto*/
7645 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_14__iter__, "\n Iterate over the indices of an index_set.\n\n >>> for i in index_set({-3,4,7}):print(i, end=\",\")\n -3,4,7,\n ");
7646 #if CYTHON_UPDATE_DESCRIPTOR_DOC
7647 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_14__iter__;
7648 #endif
7649 static PyObject *__pyx_pw_8PyClical_9index_set_15__iter__(PyObject *__pyx_v_self) {
7650  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7651  PyObject *__pyx_r = 0;
7652  __Pyx_RefNannyDeclarations
7653  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
7654  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
7655  __pyx_r = __pyx_pf_8PyClical_9index_set_14__iter__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
7656 
7657  /* function exit code */
7658  __Pyx_RefNannyFinishContext();
7659  return __pyx_r;
7660 }
7661 
7662 static PyObject *__pyx_pf_8PyClical_9index_set_14__iter__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
7663  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *__pyx_cur_scope;
7664  PyObject *__pyx_r = NULL;
7665  __Pyx_RefNannyDeclarations
7666  int __pyx_lineno = 0;
7667  const char *__pyx_filename = NULL;
7668  int __pyx_clineno = 0;
7669  __Pyx_RefNannySetupContext("__iter__", 0);
7670  __pyx_cur_scope = (struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)__pyx_tp_new_8PyClical___pyx_scope_struct____iter__(__pyx_ptype_8PyClical___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL);
7671  if (unlikely(!__pyx_cur_scope)) {
7672  __pyx_cur_scope = ((struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)Py_None);
7673  __Pyx_INCREF(Py_None);
7674  __PYX_ERR(0, 229, __pyx_L1_error)
7675  } else {
7676  __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
7677  }
7678  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
7679  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
7680  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
7681  {
7682  __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_8PyClical_9index_set_16generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_index_set___iter, __pyx_n_s_PyClical); if (unlikely(!gen)) __PYX_ERR(0, 229, __pyx_L1_error)
7683  __Pyx_DECREF(__pyx_cur_scope);
7684  __Pyx_RefNannyFinishContext();
7685  return (PyObject *) gen;
7686  }
7687 
7688  /* function exit code */
7689  __pyx_L1_error:;
7690  __Pyx_AddTraceback("PyClical.index_set.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7691  __pyx_r = NULL;
7692  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
7693  __Pyx_XGIVEREF(__pyx_r);
7694  __Pyx_RefNannyFinishContext();
7695  return __pyx_r;
7696 }
7697 
7698 static PyObject *__pyx_gb_8PyClical_9index_set_16generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
7699 {
7700  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)__pyx_generator->closure);
7701  PyObject *__pyx_r = NULL;
7702  PyObject *__pyx_t_1 = NULL;
7703  PyObject *__pyx_t_2 = NULL;
7704  PyObject *__pyx_t_3 = NULL;
7705  int __pyx_t_4;
7706  PyObject *__pyx_t_5 = NULL;
7707  Py_ssize_t __pyx_t_6;
7708  PyObject *(*__pyx_t_7)(PyObject *);
7709  int __pyx_t_8;
7710  int __pyx_lineno = 0;
7711  const char *__pyx_filename = NULL;
7712  int __pyx_clineno = 0;
7713  __Pyx_RefNannyDeclarations
7714  __Pyx_RefNannySetupContext("__iter__", 0);
7715  switch (__pyx_generator->resume_label) {
7716  case 0: goto __pyx_L3_first_run;
7717  case 1: goto __pyx_L7_resume_from_yield;
7718  default: /* CPython raises the right error here */
7719  __Pyx_RefNannyFinishContext();
7720  return NULL;
7721  }
7722  __pyx_L3_first_run:;
7723  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 229, __pyx_L1_error)
7724 
7725  /* "PyClical.pyx":236
7726  * -3,4,7,
7727  * """
7728  * for idx in range(self.min(), self.max()+1): # <<<<<<<<<<<<<<
7729  * if idx in self:
7730  * yield idx
7731  */
7732  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
7733  __Pyx_GOTREF(__pyx_t_2);
7734  __pyx_t_3 = NULL;
7735  __pyx_t_4 = 0;
7736  #if CYTHON_UNPACK_METHODS
7737  if (likely(PyMethod_Check(__pyx_t_2))) {
7738  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
7739  if (likely(__pyx_t_3)) {
7740  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7741  __Pyx_INCREF(__pyx_t_3);
7742  __Pyx_INCREF(function);
7743  __Pyx_DECREF_SET(__pyx_t_2, function);
7744  __pyx_t_4 = 1;
7745  }
7746  }
7747  #endif
7748  {
7749  PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
7750  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
7751  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7752  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error)
7753  __Pyx_GOTREF(__pyx_t_1);
7754  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7755  }
7756  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_max); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
7757  __Pyx_GOTREF(__pyx_t_3);
7758  __pyx_t_5 = NULL;
7759  __pyx_t_4 = 0;
7760  #if CYTHON_UNPACK_METHODS
7761  if (likely(PyMethod_Check(__pyx_t_3))) {
7762  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
7763  if (likely(__pyx_t_5)) {
7764  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7765  __Pyx_INCREF(__pyx_t_5);
7766  __Pyx_INCREF(function);
7767  __Pyx_DECREF_SET(__pyx_t_3, function);
7768  __pyx_t_4 = 1;
7769  }
7770  }
7771  #endif
7772  {
7773  PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
7774  __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
7775  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7776  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
7777  __Pyx_GOTREF(__pyx_t_2);
7778  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7779  }
7780  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
7781  __Pyx_GOTREF(__pyx_t_3);
7782  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7783  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
7784  __Pyx_GOTREF(__pyx_t_2);
7785  __Pyx_GIVEREF(__pyx_t_1);
7786  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error);
7787  __Pyx_GIVEREF(__pyx_t_3);
7788  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error);
7789  __pyx_t_1 = 0;
7790  __pyx_t_3 = 0;
7791  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
7792  __Pyx_GOTREF(__pyx_t_3);
7793  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7794  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
7795  __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
7796  __pyx_t_6 = 0;
7797  __pyx_t_7 = NULL;
7798  } else {
7799  __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
7800  __Pyx_GOTREF(__pyx_t_2);
7801  __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 236, __pyx_L1_error)
7802  }
7803  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7804  for (;;) {
7805  if (likely(!__pyx_t_7)) {
7806  if (likely(PyList_CheckExact(__pyx_t_2))) {
7807  {
7808  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
7809  #if !CYTHON_ASSUME_SAFE_MACROS
7810  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 236, __pyx_L1_error)
7811  #endif
7812  if (__pyx_t_6 >= __pyx_temp) break;
7813  }
7814  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
7815  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 236, __pyx_L1_error)
7816  #else
7817  __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
7818  __Pyx_GOTREF(__pyx_t_3);
7819  #endif
7820  } else {
7821  {
7822  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
7823  #if !CYTHON_ASSUME_SAFE_MACROS
7824  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 236, __pyx_L1_error)
7825  #endif
7826  if (__pyx_t_6 >= __pyx_temp) break;
7827  }
7828  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
7829  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 236, __pyx_L1_error)
7830  #else
7831  __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
7832  __Pyx_GOTREF(__pyx_t_3);
7833  #endif
7834  }
7835  } else {
7836  __pyx_t_3 = __pyx_t_7(__pyx_t_2);
7837  if (unlikely(!__pyx_t_3)) {
7838  PyObject* exc_type = PyErr_Occurred();
7839  if (exc_type) {
7840  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
7841  else __PYX_ERR(0, 236, __pyx_L1_error)
7842  }
7843  break;
7844  }
7845  __Pyx_GOTREF(__pyx_t_3);
7846  }
7847  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_idx);
7848  __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_idx, __pyx_t_3);
7849  __Pyx_GIVEREF(__pyx_t_3);
7850  __pyx_t_3 = 0;
7851 
7852  /* "PyClical.pyx":237
7853  * """
7854  * for idx in range(self.min(), self.max()+1):
7855  * if idx in self: # <<<<<<<<<<<<<<
7856  * yield idx
7857  *
7858  */
7859  __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_cur_scope->__pyx_v_idx, ((PyObject *)__pyx_cur_scope->__pyx_v_self), Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 237, __pyx_L1_error)
7860  if (__pyx_t_8) {
7861 
7862  /* "PyClical.pyx":238
7863  * for idx in range(self.min(), self.max()+1):
7864  * if idx in self:
7865  * yield idx # <<<<<<<<<<<<<<
7866  *
7867  * def __invert__(self):
7868  */
7869  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_idx);
7870  __pyx_r = __pyx_cur_scope->__pyx_v_idx;
7871  __Pyx_XGIVEREF(__pyx_t_2);
7872  __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
7873  __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
7874  __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
7875  __Pyx_XGIVEREF(__pyx_r);
7876  __Pyx_RefNannyFinishContext();
7877  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
7878  /* return from generator, yielding value */
7879  __pyx_generator->resume_label = 1;
7880  return __pyx_r;
7881  __pyx_L7_resume_from_yield:;
7882  __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
7883  __pyx_cur_scope->__pyx_t_0 = 0;
7884  __Pyx_XGOTREF(__pyx_t_2);
7885  __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
7886  __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
7887  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 238, __pyx_L1_error)
7888 
7889  /* "PyClical.pyx":237
7890  * """
7891  * for idx in range(self.min(), self.max()+1):
7892  * if idx in self: # <<<<<<<<<<<<<<
7893  * yield idx
7894  *
7895  */
7896  }
7897 
7898  /* "PyClical.pyx":236
7899  * -3,4,7,
7900  * """
7901  * for idx in range(self.min(), self.max()+1): # <<<<<<<<<<<<<<
7902  * if idx in self:
7903  * yield idx
7904  */
7905  }
7906  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7907  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
7908 
7909  /* "PyClical.pyx":229
7910  * return self.instance.getitem(idx)
7911  *
7912  * def __iter__(self): # <<<<<<<<<<<<<<
7913  * """
7914  * Iterate over the indices of an index_set.
7915  */
7916 
7917  /* function exit code */
7918  PyErr_SetNone(PyExc_StopIteration);
7919  goto __pyx_L0;
7920  __pyx_L1_error:;
7921  __Pyx_Generator_Replace_StopIteration(0);
7922  __Pyx_XDECREF(__pyx_t_1);
7923  __Pyx_XDECREF(__pyx_t_2);
7924  __Pyx_XDECREF(__pyx_t_3);
7925  __Pyx_XDECREF(__pyx_t_5);
7926  __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7927  __pyx_L0:;
7928  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
7929  #if !CYTHON_USE_EXC_INFO_STACK
7930  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
7931  #endif
7932  __pyx_generator->resume_label = -1;
7933  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
7934  __Pyx_RefNannyFinishContext();
7935  return __pyx_r;
7936 }
7937 
7938 /* "PyClical.pyx":240
7939  * yield idx
7940  *
7941  * def __invert__(self): # <<<<<<<<<<<<<<
7942  * """
7943  * Set complement: not.
7944  */
7945 
7946 /* Python wrapper */
7947 static PyObject *__pyx_pw_8PyClical_9index_set_18__invert__(PyObject *__pyx_v_self); /*proto*/
7948 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_17__invert__, "\n Set complement: not.\n\n >>> print(~index_set({-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}))\n {-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32}\n ");
7949 #if CYTHON_UPDATE_DESCRIPTOR_DOC
7950 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_17__invert__;
7951 #endif
7952 static PyObject *__pyx_pw_8PyClical_9index_set_18__invert__(PyObject *__pyx_v_self) {
7953  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
7954  PyObject *__pyx_r = 0;
7955  __Pyx_RefNannyDeclarations
7956  __Pyx_RefNannySetupContext("__invert__ (wrapper)", 0);
7957  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
7958  __pyx_r = __pyx_pf_8PyClical_9index_set_17__invert__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
7959 
7960  /* function exit code */
7961  __Pyx_RefNannyFinishContext();
7962  return __pyx_r;
7963 }
7964 
7965 static PyObject *__pyx_pf_8PyClical_9index_set_17__invert__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
7966  PyObject *__pyx_r = NULL;
7967  __Pyx_RefNannyDeclarations
7968  PyObject *__pyx_t_1 = NULL;
7969  PyObject *__pyx_t_2 = NULL;
7970  int __pyx_lineno = 0;
7971  const char *__pyx_filename = NULL;
7972  int __pyx_clineno = 0;
7973  __Pyx_RefNannySetupContext("__invert__", 1);
7974 
7975  /* "PyClical.pyx":247
7976  * {-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32}
7977  * """
7978  * return index_set().wrap( self.instance.invert() ) # <<<<<<<<<<<<<<
7979  *
7980  * def __xor__(lhs, rhs):
7981  */
7982  __Pyx_XDECREF(__pyx_r);
7983  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_index_set)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error)
7984  __Pyx_GOTREF(__pyx_t_1);
7985  __pyx_t_2 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), __pyx_v_self->instance->operator~()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 247, __pyx_L1_error)
7986  __Pyx_GOTREF(__pyx_t_2);
7987  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7988  __pyx_r = __pyx_t_2;
7989  __pyx_t_2 = 0;
7990  goto __pyx_L0;
7991 
7992  /* "PyClical.pyx":240
7993  * yield idx
7994  *
7995  * def __invert__(self): # <<<<<<<<<<<<<<
7996  * """
7997  * Set complement: not.
7998  */
7999 
8000  /* function exit code */
8001  __pyx_L1_error:;
8002  __Pyx_XDECREF(__pyx_t_1);
8003  __Pyx_XDECREF(__pyx_t_2);
8004  __Pyx_AddTraceback("PyClical.index_set.__invert__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8005  __pyx_r = NULL;
8006  __pyx_L0:;
8007  __Pyx_XGIVEREF(__pyx_r);
8008  __Pyx_RefNannyFinishContext();
8009  return __pyx_r;
8010 }
8011 
8012 /* "PyClical.pyx":249
8013  * return index_set().wrap( self.instance.invert() )
8014  *
8015  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
8016  * """
8017  * Symmetric set difference: exclusive or.
8018  */
8019 
8020 /* Python wrapper */
8021 static PyObject *__pyx_pw_8PyClical_9index_set_20__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8022 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_19__xor__, "\n Symmetric set difference: exclusive or.\n\n >>> print(index_set({1}) ^ index_set({2}))\n {1,2}\n >>> print(index_set({1,2}) ^ index_set({2}))\n {1}\n ");
8023 #if CYTHON_UPDATE_DESCRIPTOR_DOC
8024 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_19__xor__;
8025 #endif
8026 static PyObject *__pyx_pw_8PyClical_9index_set_20__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8027  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8028  PyObject *__pyx_r = 0;
8029  __Pyx_RefNannyDeclarations
8030  __Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
8031  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
8032  __pyx_r = __pyx_pf_8PyClical_9index_set_19__xor__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8033 
8034  /* function exit code */
8035  __Pyx_RefNannyFinishContext();
8036  return __pyx_r;
8037 }
8038 
8039 static PyObject *__pyx_pf_8PyClical_9index_set_19__xor__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8040  PyObject *__pyx_r = NULL;
8041  __Pyx_RefNannyDeclarations
8042  PyObject *__pyx_t_1 = NULL;
8043  IndexSet __pyx_t_2;
8044  IndexSet __pyx_t_3;
8045  PyObject *__pyx_t_4 = NULL;
8046  int __pyx_lineno = 0;
8047  const char *__pyx_filename = NULL;
8048  int __pyx_clineno = 0;
8049  __Pyx_RefNannySetupContext("__xor__", 1);
8050 
8051  /* "PyClical.pyx":258
8052  * {1}
8053  * """
8054  * return index_set().wrap( toIndexSet(lhs) ^ toIndexSet(rhs) ) # <<<<<<<<<<<<<<
8055  *
8056  * def __ixor__(self, rhs):
8057  */
8058  __Pyx_XDECREF(__pyx_r);
8059  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_index_set)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
8060  __Pyx_GOTREF(__pyx_t_1);
8061  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error)
8062  __pyx_t_3 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error)
8063  __pyx_t_4 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), (__pyx_t_2 ^ __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 258, __pyx_L1_error)
8064  __Pyx_GOTREF(__pyx_t_4);
8065  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8066  __pyx_r = __pyx_t_4;
8067  __pyx_t_4 = 0;
8068  goto __pyx_L0;
8069 
8070  /* "PyClical.pyx":249
8071  * return index_set().wrap( self.instance.invert() )
8072  *
8073  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
8074  * """
8075  * Symmetric set difference: exclusive or.
8076  */
8077 
8078  /* function exit code */
8079  __pyx_L1_error:;
8080  __Pyx_XDECREF(__pyx_t_1);
8081  __Pyx_XDECREF(__pyx_t_4);
8082  __Pyx_AddTraceback("PyClical.index_set.__xor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8083  __pyx_r = NULL;
8084  __pyx_L0:;
8085  __Pyx_XGIVEREF(__pyx_r);
8086  __Pyx_RefNannyFinishContext();
8087  return __pyx_r;
8088 }
8089 
8090 /* "PyClical.pyx":260
8091  * return index_set().wrap( toIndexSet(lhs) ^ toIndexSet(rhs) )
8092  *
8093  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
8094  * """
8095  * Symmetric set difference: exclusive or.
8096  */
8097 
8098 /* Python wrapper */
8099 static PyObject *__pyx_pw_8PyClical_9index_set_22__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8100 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_21__ixor__, "\n Symmetric set difference: exclusive or.\n\n >>> x = index_set({1}); x ^= index_set({2}); print(x)\n {1,2}\n >>> x = index_set({1,2}); x ^= index_set({2}); print(x)\n {1}\n ");
8101 #if CYTHON_UPDATE_DESCRIPTOR_DOC
8102 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_21__ixor__;
8103 #endif
8104 static PyObject *__pyx_pw_8PyClical_9index_set_22__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8105  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8106  PyObject *__pyx_r = 0;
8107  __Pyx_RefNannyDeclarations
8108  __Pyx_RefNannySetupContext("__ixor__ (wrapper)", 0);
8109  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
8110  __pyx_r = __pyx_pf_8PyClical_9index_set_21__ixor__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8111 
8112  /* function exit code */
8113  __Pyx_RefNannyFinishContext();
8114  return __pyx_r;
8115 }
8116 
8117 static PyObject *__pyx_pf_8PyClical_9index_set_21__ixor__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
8118  PyObject *__pyx_r = NULL;
8119  __Pyx_RefNannyDeclarations
8120  IndexSet __pyx_t_1;
8121  IndexSet __pyx_t_2;
8122  PyObject *__pyx_t_3 = NULL;
8123  int __pyx_lineno = 0;
8124  const char *__pyx_filename = NULL;
8125  int __pyx_clineno = 0;
8126  __Pyx_RefNannySetupContext("__ixor__", 1);
8127 
8128  /* "PyClical.pyx":269
8129  * {1}
8130  * """
8131  * return self.wrap( self.unwrap() ^ toIndexSet(rhs) ) # <<<<<<<<<<<<<<
8132  *
8133  * def __and__(lhs, rhs):
8134  */
8135  __Pyx_XDECREF(__pyx_r);
8136  __pyx_t_1 = __pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 269, __pyx_L1_error)
8137  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 269, __pyx_L1_error)
8138  __pyx_t_3 = __pyx_f_8PyClical_9index_set_wrap(__pyx_v_self, (__pyx_t_1 ^ __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error)
8139  __Pyx_GOTREF(__pyx_t_3);
8140  __pyx_r = __pyx_t_3;
8141  __pyx_t_3 = 0;
8142  goto __pyx_L0;
8143 
8144  /* "PyClical.pyx":260
8145  * return index_set().wrap( toIndexSet(lhs) ^ toIndexSet(rhs) )
8146  *
8147  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
8148  * """
8149  * Symmetric set difference: exclusive or.
8150  */
8151 
8152  /* function exit code */
8153  __pyx_L1_error:;
8154  __Pyx_XDECREF(__pyx_t_3);
8155  __Pyx_AddTraceback("PyClical.index_set.__ixor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8156  __pyx_r = NULL;
8157  __pyx_L0:;
8158  __Pyx_XGIVEREF(__pyx_r);
8159  __Pyx_RefNannyFinishContext();
8160  return __pyx_r;
8161 }
8162 
8163 /* "PyClical.pyx":271
8164  * return self.wrap( self.unwrap() ^ toIndexSet(rhs) )
8165  *
8166  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
8167  * """
8168  * Set intersection: and.
8169  */
8170 
8171 /* Python wrapper */
8172 static PyObject *__pyx_pw_8PyClical_9index_set_24__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8173 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_23__and__, "\n Set intersection: and.\n\n >>> print(index_set({1}) & index_set({2}))\n {}\n >>> print(index_set({1,2}) & index_set({2}))\n {2}\n ");
8174 #if CYTHON_UPDATE_DESCRIPTOR_DOC
8175 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_23__and__;
8176 #endif
8177 static PyObject *__pyx_pw_8PyClical_9index_set_24__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8178  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8179  PyObject *__pyx_r = 0;
8180  __Pyx_RefNannyDeclarations
8181  __Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
8182  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
8183  __pyx_r = __pyx_pf_8PyClical_9index_set_23__and__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8184 
8185  /* function exit code */
8186  __Pyx_RefNannyFinishContext();
8187  return __pyx_r;
8188 }
8189 
8190 static PyObject *__pyx_pf_8PyClical_9index_set_23__and__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8191  PyObject *__pyx_r = NULL;
8192  __Pyx_RefNannyDeclarations
8193  PyObject *__pyx_t_1 = NULL;
8194  IndexSet __pyx_t_2;
8195  IndexSet __pyx_t_3;
8196  PyObject *__pyx_t_4 = NULL;
8197  int __pyx_lineno = 0;
8198  const char *__pyx_filename = NULL;
8199  int __pyx_clineno = 0;
8200  __Pyx_RefNannySetupContext("__and__", 1);
8201 
8202  /* "PyClical.pyx":280
8203  * {2}
8204  * """
8205  * return index_set().wrap( toIndexSet(lhs) & toIndexSet(rhs) ) # <<<<<<<<<<<<<<
8206  *
8207  * def __iand__(self, rhs):
8208  */
8209  __Pyx_XDECREF(__pyx_r);
8210  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_index_set)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 280, __pyx_L1_error)
8211  __Pyx_GOTREF(__pyx_t_1);
8212  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 280, __pyx_L1_error)
8213  __pyx_t_3 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 280, __pyx_L1_error)
8214  __pyx_t_4 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), (__pyx_t_2 & __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 280, __pyx_L1_error)
8215  __Pyx_GOTREF(__pyx_t_4);
8216  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8217  __pyx_r = __pyx_t_4;
8218  __pyx_t_4 = 0;
8219  goto __pyx_L0;
8220 
8221  /* "PyClical.pyx":271
8222  * return self.wrap( self.unwrap() ^ toIndexSet(rhs) )
8223  *
8224  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
8225  * """
8226  * Set intersection: and.
8227  */
8228 
8229  /* function exit code */
8230  __pyx_L1_error:;
8231  __Pyx_XDECREF(__pyx_t_1);
8232  __Pyx_XDECREF(__pyx_t_4);
8233  __Pyx_AddTraceback("PyClical.index_set.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8234  __pyx_r = NULL;
8235  __pyx_L0:;
8236  __Pyx_XGIVEREF(__pyx_r);
8237  __Pyx_RefNannyFinishContext();
8238  return __pyx_r;
8239 }
8240 
8241 /* "PyClical.pyx":282
8242  * return index_set().wrap( toIndexSet(lhs) & toIndexSet(rhs) )
8243  *
8244  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
8245  * """
8246  * Set intersection: and.
8247  */
8248 
8249 /* Python wrapper */
8250 static PyObject *__pyx_pw_8PyClical_9index_set_26__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8251 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_25__iand__, "\n Set intersection: and.\n\n >>> x = index_set({1}); x &= index_set({2}); print(x)\n {}\n >>> x = index_set({1,2}); x &= index_set({2}); print(x)\n {2}\n ");
8252 #if CYTHON_UPDATE_DESCRIPTOR_DOC
8253 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_25__iand__;
8254 #endif
8255 static PyObject *__pyx_pw_8PyClical_9index_set_26__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8256  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8257  PyObject *__pyx_r = 0;
8258  __Pyx_RefNannyDeclarations
8259  __Pyx_RefNannySetupContext("__iand__ (wrapper)", 0);
8260  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
8261  __pyx_r = __pyx_pf_8PyClical_9index_set_25__iand__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8262 
8263  /* function exit code */
8264  __Pyx_RefNannyFinishContext();
8265  return __pyx_r;
8266 }
8267 
8268 static PyObject *__pyx_pf_8PyClical_9index_set_25__iand__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
8269  PyObject *__pyx_r = NULL;
8270  __Pyx_RefNannyDeclarations
8271  IndexSet __pyx_t_1;
8272  IndexSet __pyx_t_2;
8273  PyObject *__pyx_t_3 = NULL;
8274  int __pyx_lineno = 0;
8275  const char *__pyx_filename = NULL;
8276  int __pyx_clineno = 0;
8277  __Pyx_RefNannySetupContext("__iand__", 1);
8278 
8279  /* "PyClical.pyx":291
8280  * {2}
8281  * """
8282  * return self.wrap( self.unwrap() & toIndexSet(rhs) ) # <<<<<<<<<<<<<<
8283  *
8284  * def __or__(lhs, rhs):
8285  */
8286  __Pyx_XDECREF(__pyx_r);
8287  __pyx_t_1 = __pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 291, __pyx_L1_error)
8288  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 291, __pyx_L1_error)
8289  __pyx_t_3 = __pyx_f_8PyClical_9index_set_wrap(__pyx_v_self, (__pyx_t_1 & __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error)
8290  __Pyx_GOTREF(__pyx_t_3);
8291  __pyx_r = __pyx_t_3;
8292  __pyx_t_3 = 0;
8293  goto __pyx_L0;
8294 
8295  /* "PyClical.pyx":282
8296  * return index_set().wrap( toIndexSet(lhs) & toIndexSet(rhs) )
8297  *
8298  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
8299  * """
8300  * Set intersection: and.
8301  */
8302 
8303  /* function exit code */
8304  __pyx_L1_error:;
8305  __Pyx_XDECREF(__pyx_t_3);
8306  __Pyx_AddTraceback("PyClical.index_set.__iand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8307  __pyx_r = NULL;
8308  __pyx_L0:;
8309  __Pyx_XGIVEREF(__pyx_r);
8310  __Pyx_RefNannyFinishContext();
8311  return __pyx_r;
8312 }
8313 
8314 /* "PyClical.pyx":293
8315  * return self.wrap( self.unwrap() & toIndexSet(rhs) )
8316  *
8317  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
8318  * """
8319  * Set union: or.
8320  */
8321 
8322 /* Python wrapper */
8323 static PyObject *__pyx_pw_8PyClical_9index_set_28__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8324 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_27__or__, "\n Set union: or.\n\n >>> print(index_set({1}) | index_set({2}))\n {1,2}\n >>> print(index_set({1,2}) | index_set({2}))\n {1,2}\n ");
8325 #if CYTHON_UPDATE_DESCRIPTOR_DOC
8326 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_27__or__;
8327 #endif
8328 static PyObject *__pyx_pw_8PyClical_9index_set_28__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8329  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8330  PyObject *__pyx_r = 0;
8331  __Pyx_RefNannyDeclarations
8332  __Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
8333  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
8334  __pyx_r = __pyx_pf_8PyClical_9index_set_27__or__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8335 
8336  /* function exit code */
8337  __Pyx_RefNannyFinishContext();
8338  return __pyx_r;
8339 }
8340 
8341 static PyObject *__pyx_pf_8PyClical_9index_set_27__or__(struct __pyx_obj_8PyClical_index_set *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8342  PyObject *__pyx_r = NULL;
8343  __Pyx_RefNannyDeclarations
8344  PyObject *__pyx_t_1 = NULL;
8345  IndexSet __pyx_t_2;
8346  IndexSet __pyx_t_3;
8347  PyObject *__pyx_t_4 = NULL;
8348  int __pyx_lineno = 0;
8349  const char *__pyx_filename = NULL;
8350  int __pyx_clineno = 0;
8351  __Pyx_RefNannySetupContext("__or__", 1);
8352 
8353  /* "PyClical.pyx":302
8354  * {1,2}
8355  * """
8356  * return index_set().wrap( toIndexSet(lhs) | toIndexSet(rhs) ) # <<<<<<<<<<<<<<
8357  *
8358  * def __ior__(self, rhs):
8359  */
8360  __Pyx_XDECREF(__pyx_r);
8361  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_index_set)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error)
8362  __Pyx_GOTREF(__pyx_t_1);
8363  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error)
8364  __pyx_t_3 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error)
8365  __pyx_t_4 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), (__pyx_t_2 | __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L1_error)
8366  __Pyx_GOTREF(__pyx_t_4);
8367  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8368  __pyx_r = __pyx_t_4;
8369  __pyx_t_4 = 0;
8370  goto __pyx_L0;
8371 
8372  /* "PyClical.pyx":293
8373  * return self.wrap( self.unwrap() & toIndexSet(rhs) )
8374  *
8375  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
8376  * """
8377  * Set union: or.
8378  */
8379 
8380  /* function exit code */
8381  __pyx_L1_error:;
8382  __Pyx_XDECREF(__pyx_t_1);
8383  __Pyx_XDECREF(__pyx_t_4);
8384  __Pyx_AddTraceback("PyClical.index_set.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8385  __pyx_r = NULL;
8386  __pyx_L0:;
8387  __Pyx_XGIVEREF(__pyx_r);
8388  __Pyx_RefNannyFinishContext();
8389  return __pyx_r;
8390 }
8391 
8392 /* "PyClical.pyx":304
8393  * return index_set().wrap( toIndexSet(lhs) | toIndexSet(rhs) )
8394  *
8395  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
8396  * """
8397  * Set union: or.
8398  */
8399 
8400 /* Python wrapper */
8401 static PyObject *__pyx_pw_8PyClical_9index_set_30__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8402 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_29__ior__, "\n Set union: or.\n\n >>> x = index_set({1}); x |= index_set({2}); print(x)\n {1,2}\n >>> x = index_set({1,2}); x |= index_set({2}); print(x)\n {1,2}\n ");
8403 #if CYTHON_UPDATE_DESCRIPTOR_DOC
8404 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_29__ior__;
8405 #endif
8406 static PyObject *__pyx_pw_8PyClical_9index_set_30__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8407  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8408  PyObject *__pyx_r = 0;
8409  __Pyx_RefNannyDeclarations
8410  __Pyx_RefNannySetupContext("__ior__ (wrapper)", 0);
8411  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
8412  __pyx_r = __pyx_pf_8PyClical_9index_set_29__ior__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8413 
8414  /* function exit code */
8415  __Pyx_RefNannyFinishContext();
8416  return __pyx_r;
8417 }
8418 
8419 static PyObject *__pyx_pf_8PyClical_9index_set_29__ior__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
8420  PyObject *__pyx_r = NULL;
8421  __Pyx_RefNannyDeclarations
8422  IndexSet __pyx_t_1;
8423  IndexSet __pyx_t_2;
8424  PyObject *__pyx_t_3 = NULL;
8425  int __pyx_lineno = 0;
8426  const char *__pyx_filename = NULL;
8427  int __pyx_clineno = 0;
8428  __Pyx_RefNannySetupContext("__ior__", 1);
8429 
8430  /* "PyClical.pyx":313
8431  * {1,2}
8432  * """
8433  * return self.wrap( self.unwrap() | toIndexSet(rhs) ) # <<<<<<<<<<<<<<
8434  *
8435  * def count(self):
8436  */
8437  __Pyx_XDECREF(__pyx_r);
8438  __pyx_t_1 = __pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 313, __pyx_L1_error)
8439  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 313, __pyx_L1_error)
8440  __pyx_t_3 = __pyx_f_8PyClical_9index_set_wrap(__pyx_v_self, (__pyx_t_1 | __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error)
8441  __Pyx_GOTREF(__pyx_t_3);
8442  __pyx_r = __pyx_t_3;
8443  __pyx_t_3 = 0;
8444  goto __pyx_L0;
8445 
8446  /* "PyClical.pyx":304
8447  * return index_set().wrap( toIndexSet(lhs) | toIndexSet(rhs) )
8448  *
8449  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
8450  * """
8451  * Set union: or.
8452  */
8453 
8454  /* function exit code */
8455  __pyx_L1_error:;
8456  __Pyx_XDECREF(__pyx_t_3);
8457  __Pyx_AddTraceback("PyClical.index_set.__ior__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8458  __pyx_r = NULL;
8459  __pyx_L0:;
8460  __Pyx_XGIVEREF(__pyx_r);
8461  __Pyx_RefNannyFinishContext();
8462  return __pyx_r;
8463 }
8464 
8465 /* "PyClical.pyx":315
8466  * return self.wrap( self.unwrap() | toIndexSet(rhs) )
8467  *
8468  * def count(self): # <<<<<<<<<<<<<<
8469  * """
8470  * Cardinality: Number of indices included in set.
8471  */
8472 
8473 /* Python wrapper */
8474 static PyObject *__pyx_pw_8PyClical_9index_set_32count(PyObject *__pyx_v_self,
8475 #if CYTHON_METH_FASTCALL
8476 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8477 #else
8478 PyObject *__pyx_args, PyObject *__pyx_kwds
8479 #endif
8480 ); /*proto*/
8481 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_31count, "\n Cardinality: Number of indices included in set.\n\n >>> index_set({-1,1,2}).count()\n 3\n ");
8482 static PyMethodDef __pyx_mdef_8PyClical_9index_set_32count = {"count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_32count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_31count};
8483 static PyObject *__pyx_pw_8PyClical_9index_set_32count(PyObject *__pyx_v_self,
8484 #if CYTHON_METH_FASTCALL
8485 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8486 #else
8487 PyObject *__pyx_args, PyObject *__pyx_kwds
8488 #endif
8489 ) {
8490  #if !CYTHON_METH_FASTCALL
8491  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8492  #endif
8493  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8494  PyObject *__pyx_r = 0;
8495  __Pyx_RefNannyDeclarations
8496  __Pyx_RefNannySetupContext("count (wrapper)", 0);
8497  #if !CYTHON_METH_FASTCALL
8498  #if CYTHON_ASSUME_SAFE_MACROS
8499  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8500  #else
8501  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8502  #endif
8503  #endif
8504  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8505  if (unlikely(__pyx_nargs > 0)) {
8506  __Pyx_RaiseArgtupleInvalid("count", 1, 0, 0, __pyx_nargs); return NULL;}
8507  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "count", 0))) return NULL;
8508  __pyx_r = __pyx_pf_8PyClical_9index_set_31count(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
8509 
8510  /* function exit code */
8511  __Pyx_RefNannyFinishContext();
8512  return __pyx_r;
8513 }
8514 
8515 static PyObject *__pyx_pf_8PyClical_9index_set_31count(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
8516  PyObject *__pyx_r = NULL;
8517  __Pyx_RefNannyDeclarations
8518  PyObject *__pyx_t_1 = NULL;
8519  int __pyx_lineno = 0;
8520  const char *__pyx_filename = NULL;
8521  int __pyx_clineno = 0;
8522  __Pyx_RefNannySetupContext("count", 1);
8523 
8524  /* "PyClical.pyx":322
8525  * 3
8526  * """
8527  * return self.instance.count() # <<<<<<<<<<<<<<
8528  *
8529  * def count_neg(self):
8530  */
8531  __Pyx_XDECREF(__pyx_r);
8532  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->count()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error)
8533  __Pyx_GOTREF(__pyx_t_1);
8534  __pyx_r = __pyx_t_1;
8535  __pyx_t_1 = 0;
8536  goto __pyx_L0;
8537 
8538  /* "PyClical.pyx":315
8539  * return self.wrap( self.unwrap() | toIndexSet(rhs) )
8540  *
8541  * def count(self): # <<<<<<<<<<<<<<
8542  * """
8543  * Cardinality: Number of indices included in set.
8544  */
8545 
8546  /* function exit code */
8547  __pyx_L1_error:;
8548  __Pyx_XDECREF(__pyx_t_1);
8549  __Pyx_AddTraceback("PyClical.index_set.count", __pyx_clineno, __pyx_lineno, __pyx_filename);
8550  __pyx_r = NULL;
8551  __pyx_L0:;
8552  __Pyx_XGIVEREF(__pyx_r);
8553  __Pyx_RefNannyFinishContext();
8554  return __pyx_r;
8555 }
8556 
8557 /* "PyClical.pyx":324
8558  * return self.instance.count()
8559  *
8560  * def count_neg(self): # <<<<<<<<<<<<<<
8561  * """
8562  * Number of negative indices included in set.
8563  */
8564 
8565 /* Python wrapper */
8566 static PyObject *__pyx_pw_8PyClical_9index_set_34count_neg(PyObject *__pyx_v_self,
8567 #if CYTHON_METH_FASTCALL
8568 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8569 #else
8570 PyObject *__pyx_args, PyObject *__pyx_kwds
8571 #endif
8572 ); /*proto*/
8573 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_33count_neg, "\n Number of negative indices included in set.\n\n >>> index_set({-1,1,2}).count_neg()\n 1\n ");
8574 static PyMethodDef __pyx_mdef_8PyClical_9index_set_34count_neg = {"count_neg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_34count_neg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_33count_neg};
8575 static PyObject *__pyx_pw_8PyClical_9index_set_34count_neg(PyObject *__pyx_v_self,
8576 #if CYTHON_METH_FASTCALL
8577 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8578 #else
8579 PyObject *__pyx_args, PyObject *__pyx_kwds
8580 #endif
8581 ) {
8582  #if !CYTHON_METH_FASTCALL
8583  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8584  #endif
8585  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8586  PyObject *__pyx_r = 0;
8587  __Pyx_RefNannyDeclarations
8588  __Pyx_RefNannySetupContext("count_neg (wrapper)", 0);
8589  #if !CYTHON_METH_FASTCALL
8590  #if CYTHON_ASSUME_SAFE_MACROS
8591  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8592  #else
8593  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8594  #endif
8595  #endif
8596  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8597  if (unlikely(__pyx_nargs > 0)) {
8598  __Pyx_RaiseArgtupleInvalid("count_neg", 1, 0, 0, __pyx_nargs); return NULL;}
8599  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "count_neg", 0))) return NULL;
8600  __pyx_r = __pyx_pf_8PyClical_9index_set_33count_neg(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
8601 
8602  /* function exit code */
8603  __Pyx_RefNannyFinishContext();
8604  return __pyx_r;
8605 }
8606 
8607 static PyObject *__pyx_pf_8PyClical_9index_set_33count_neg(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
8608  PyObject *__pyx_r = NULL;
8609  __Pyx_RefNannyDeclarations
8610  PyObject *__pyx_t_1 = NULL;
8611  int __pyx_lineno = 0;
8612  const char *__pyx_filename = NULL;
8613  int __pyx_clineno = 0;
8614  __Pyx_RefNannySetupContext("count_neg", 1);
8615 
8616  /* "PyClical.pyx":331
8617  * 1
8618  * """
8619  * return self.instance.count_neg() # <<<<<<<<<<<<<<
8620  *
8621  * def count_pos(self):
8622  */
8623  __Pyx_XDECREF(__pyx_r);
8624  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->count_neg()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
8625  __Pyx_GOTREF(__pyx_t_1);
8626  __pyx_r = __pyx_t_1;
8627  __pyx_t_1 = 0;
8628  goto __pyx_L0;
8629 
8630  /* "PyClical.pyx":324
8631  * return self.instance.count()
8632  *
8633  * def count_neg(self): # <<<<<<<<<<<<<<
8634  * """
8635  * Number of negative indices included in set.
8636  */
8637 
8638  /* function exit code */
8639  __pyx_L1_error:;
8640  __Pyx_XDECREF(__pyx_t_1);
8641  __Pyx_AddTraceback("PyClical.index_set.count_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
8642  __pyx_r = NULL;
8643  __pyx_L0:;
8644  __Pyx_XGIVEREF(__pyx_r);
8645  __Pyx_RefNannyFinishContext();
8646  return __pyx_r;
8647 }
8648 
8649 /* "PyClical.pyx":333
8650  * return self.instance.count_neg()
8651  *
8652  * def count_pos(self): # <<<<<<<<<<<<<<
8653  * """
8654  * Number of positive indices included in set.
8655  */
8656 
8657 /* Python wrapper */
8658 static PyObject *__pyx_pw_8PyClical_9index_set_36count_pos(PyObject *__pyx_v_self,
8659 #if CYTHON_METH_FASTCALL
8660 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8661 #else
8662 PyObject *__pyx_args, PyObject *__pyx_kwds
8663 #endif
8664 ); /*proto*/
8665 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_35count_pos, "\n Number of positive indices included in set.\n\n >>> index_set({-1,1,2}).count_pos()\n 2\n ");
8666 static PyMethodDef __pyx_mdef_8PyClical_9index_set_36count_pos = {"count_pos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_36count_pos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_35count_pos};
8667 static PyObject *__pyx_pw_8PyClical_9index_set_36count_pos(PyObject *__pyx_v_self,
8668 #if CYTHON_METH_FASTCALL
8669 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8670 #else
8671 PyObject *__pyx_args, PyObject *__pyx_kwds
8672 #endif
8673 ) {
8674  #if !CYTHON_METH_FASTCALL
8675  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8676  #endif
8677  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8678  PyObject *__pyx_r = 0;
8679  __Pyx_RefNannyDeclarations
8680  __Pyx_RefNannySetupContext("count_pos (wrapper)", 0);
8681  #if !CYTHON_METH_FASTCALL
8682  #if CYTHON_ASSUME_SAFE_MACROS
8683  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8684  #else
8685  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8686  #endif
8687  #endif
8688  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8689  if (unlikely(__pyx_nargs > 0)) {
8690  __Pyx_RaiseArgtupleInvalid("count_pos", 1, 0, 0, __pyx_nargs); return NULL;}
8691  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "count_pos", 0))) return NULL;
8692  __pyx_r = __pyx_pf_8PyClical_9index_set_35count_pos(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
8693 
8694  /* function exit code */
8695  __Pyx_RefNannyFinishContext();
8696  return __pyx_r;
8697 }
8698 
8699 static PyObject *__pyx_pf_8PyClical_9index_set_35count_pos(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
8700  PyObject *__pyx_r = NULL;
8701  __Pyx_RefNannyDeclarations
8702  PyObject *__pyx_t_1 = NULL;
8703  int __pyx_lineno = 0;
8704  const char *__pyx_filename = NULL;
8705  int __pyx_clineno = 0;
8706  __Pyx_RefNannySetupContext("count_pos", 1);
8707 
8708  /* "PyClical.pyx":340
8709  * 2
8710  * """
8711  * return self.instance.count_pos() # <<<<<<<<<<<<<<
8712  *
8713  * def min(self):
8714  */
8715  __Pyx_XDECREF(__pyx_r);
8716  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->count_pos()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error)
8717  __Pyx_GOTREF(__pyx_t_1);
8718  __pyx_r = __pyx_t_1;
8719  __pyx_t_1 = 0;
8720  goto __pyx_L0;
8721 
8722  /* "PyClical.pyx":333
8723  * return self.instance.count_neg()
8724  *
8725  * def count_pos(self): # <<<<<<<<<<<<<<
8726  * """
8727  * Number of positive indices included in set.
8728  */
8729 
8730  /* function exit code */
8731  __pyx_L1_error:;
8732  __Pyx_XDECREF(__pyx_t_1);
8733  __Pyx_AddTraceback("PyClical.index_set.count_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
8734  __pyx_r = NULL;
8735  __pyx_L0:;
8736  __Pyx_XGIVEREF(__pyx_r);
8737  __Pyx_RefNannyFinishContext();
8738  return __pyx_r;
8739 }
8740 
8741 /* "PyClical.pyx":342
8742  * return self.instance.count_pos()
8743  *
8744  * def min(self): # <<<<<<<<<<<<<<
8745  * """
8746  * Minimum member.
8747  */
8748 
8749 /* Python wrapper */
8750 static PyObject *__pyx_pw_8PyClical_9index_set_38min(PyObject *__pyx_v_self,
8751 #if CYTHON_METH_FASTCALL
8752 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8753 #else
8754 PyObject *__pyx_args, PyObject *__pyx_kwds
8755 #endif
8756 ); /*proto*/
8757 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_37min, "\n Minimum member.\n\n >>> index_set({-1,1,2}).min()\n -1\n ");
8758 static PyMethodDef __pyx_mdef_8PyClical_9index_set_38min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_38min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_37min};
8759 static PyObject *__pyx_pw_8PyClical_9index_set_38min(PyObject *__pyx_v_self,
8760 #if CYTHON_METH_FASTCALL
8761 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8762 #else
8763 PyObject *__pyx_args, PyObject *__pyx_kwds
8764 #endif
8765 ) {
8766  #if !CYTHON_METH_FASTCALL
8767  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8768  #endif
8769  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8770  PyObject *__pyx_r = 0;
8771  __Pyx_RefNannyDeclarations
8772  __Pyx_RefNannySetupContext("min (wrapper)", 0);
8773  #if !CYTHON_METH_FASTCALL
8774  #if CYTHON_ASSUME_SAFE_MACROS
8775  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8776  #else
8777  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8778  #endif
8779  #endif
8780  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8781  if (unlikely(__pyx_nargs > 0)) {
8782  __Pyx_RaiseArgtupleInvalid("min", 1, 0, 0, __pyx_nargs); return NULL;}
8783  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "min", 0))) return NULL;
8784  __pyx_r = __pyx_pf_8PyClical_9index_set_37min(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
8785 
8786  /* function exit code */
8787  __Pyx_RefNannyFinishContext();
8788  return __pyx_r;
8789 }
8790 
8791 static PyObject *__pyx_pf_8PyClical_9index_set_37min(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
8792  PyObject *__pyx_r = NULL;
8793  __Pyx_RefNannyDeclarations
8794  PyObject *__pyx_t_1 = NULL;
8795  int __pyx_lineno = 0;
8796  const char *__pyx_filename = NULL;
8797  int __pyx_clineno = 0;
8798  __Pyx_RefNannySetupContext("min", 1);
8799 
8800  /* "PyClical.pyx":349
8801  * -1
8802  * """
8803  * return self.instance.min() # <<<<<<<<<<<<<<
8804  *
8805  * def max(self):
8806  */
8807  __Pyx_XDECREF(__pyx_r);
8808  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->min()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error)
8809  __Pyx_GOTREF(__pyx_t_1);
8810  __pyx_r = __pyx_t_1;
8811  __pyx_t_1 = 0;
8812  goto __pyx_L0;
8813 
8814  /* "PyClical.pyx":342
8815  * return self.instance.count_pos()
8816  *
8817  * def min(self): # <<<<<<<<<<<<<<
8818  * """
8819  * Minimum member.
8820  */
8821 
8822  /* function exit code */
8823  __pyx_L1_error:;
8824  __Pyx_XDECREF(__pyx_t_1);
8825  __Pyx_AddTraceback("PyClical.index_set.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
8826  __pyx_r = NULL;
8827  __pyx_L0:;
8828  __Pyx_XGIVEREF(__pyx_r);
8829  __Pyx_RefNannyFinishContext();
8830  return __pyx_r;
8831 }
8832 
8833 /* "PyClical.pyx":351
8834  * return self.instance.min()
8835  *
8836  * def max(self): # <<<<<<<<<<<<<<
8837  * """
8838  * Maximum member.
8839  */
8840 
8841 /* Python wrapper */
8842 static PyObject *__pyx_pw_8PyClical_9index_set_40max(PyObject *__pyx_v_self,
8843 #if CYTHON_METH_FASTCALL
8844 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8845 #else
8846 PyObject *__pyx_args, PyObject *__pyx_kwds
8847 #endif
8848 ); /*proto*/
8849 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_39max, "\n Maximum member.\n\n >>> index_set({-1,1,2}).max()\n 2\n ");
8850 static PyMethodDef __pyx_mdef_8PyClical_9index_set_40max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_40max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_39max};
8851 static PyObject *__pyx_pw_8PyClical_9index_set_40max(PyObject *__pyx_v_self,
8852 #if CYTHON_METH_FASTCALL
8853 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8854 #else
8855 PyObject *__pyx_args, PyObject *__pyx_kwds
8856 #endif
8857 ) {
8858  #if !CYTHON_METH_FASTCALL
8859  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8860  #endif
8861  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8862  PyObject *__pyx_r = 0;
8863  __Pyx_RefNannyDeclarations
8864  __Pyx_RefNannySetupContext("max (wrapper)", 0);
8865  #if !CYTHON_METH_FASTCALL
8866  #if CYTHON_ASSUME_SAFE_MACROS
8867  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8868  #else
8869  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8870  #endif
8871  #endif
8872  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8873  if (unlikely(__pyx_nargs > 0)) {
8874  __Pyx_RaiseArgtupleInvalid("max", 1, 0, 0, __pyx_nargs); return NULL;}
8875  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "max", 0))) return NULL;
8876  __pyx_r = __pyx_pf_8PyClical_9index_set_39max(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
8877 
8878  /* function exit code */
8879  __Pyx_RefNannyFinishContext();
8880  return __pyx_r;
8881 }
8882 
8883 static PyObject *__pyx_pf_8PyClical_9index_set_39max(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
8884  PyObject *__pyx_r = NULL;
8885  __Pyx_RefNannyDeclarations
8886  PyObject *__pyx_t_1 = NULL;
8887  int __pyx_lineno = 0;
8888  const char *__pyx_filename = NULL;
8889  int __pyx_clineno = 0;
8890  __Pyx_RefNannySetupContext("max", 1);
8891 
8892  /* "PyClical.pyx":358
8893  * 2
8894  * """
8895  * return self.instance.max() # <<<<<<<<<<<<<<
8896  *
8897  * def hash_fn(self):
8898  */
8899  __Pyx_XDECREF(__pyx_r);
8900  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->max()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error)
8901  __Pyx_GOTREF(__pyx_t_1);
8902  __pyx_r = __pyx_t_1;
8903  __pyx_t_1 = 0;
8904  goto __pyx_L0;
8905 
8906  /* "PyClical.pyx":351
8907  * return self.instance.min()
8908  *
8909  * def max(self): # <<<<<<<<<<<<<<
8910  * """
8911  * Maximum member.
8912  */
8913 
8914  /* function exit code */
8915  __pyx_L1_error:;
8916  __Pyx_XDECREF(__pyx_t_1);
8917  __Pyx_AddTraceback("PyClical.index_set.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
8918  __pyx_r = NULL;
8919  __pyx_L0:;
8920  __Pyx_XGIVEREF(__pyx_r);
8921  __Pyx_RefNannyFinishContext();
8922  return __pyx_r;
8923 }
8924 
8925 /* "PyClical.pyx":360
8926  * return self.instance.max()
8927  *
8928  * def hash_fn(self): # <<<<<<<<<<<<<<
8929  * """
8930  * Hash function.
8931  */
8932 
8933 /* Python wrapper */
8934 static PyObject *__pyx_pw_8PyClical_9index_set_42hash_fn(PyObject *__pyx_v_self,
8935 #if CYTHON_METH_FASTCALL
8936 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8937 #else
8938 PyObject *__pyx_args, PyObject *__pyx_kwds
8939 #endif
8940 ); /*proto*/
8941 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_41hash_fn, "\n Hash function.\n ");
8942 static PyMethodDef __pyx_mdef_8PyClical_9index_set_42hash_fn = {"hash_fn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_42hash_fn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_41hash_fn};
8943 static PyObject *__pyx_pw_8PyClical_9index_set_42hash_fn(PyObject *__pyx_v_self,
8944 #if CYTHON_METH_FASTCALL
8945 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
8946 #else
8947 PyObject *__pyx_args, PyObject *__pyx_kwds
8948 #endif
8949 ) {
8950  #if !CYTHON_METH_FASTCALL
8951  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
8952  #endif
8953  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
8954  PyObject *__pyx_r = 0;
8955  __Pyx_RefNannyDeclarations
8956  __Pyx_RefNannySetupContext("hash_fn (wrapper)", 0);
8957  #if !CYTHON_METH_FASTCALL
8958  #if CYTHON_ASSUME_SAFE_MACROS
8959  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
8960  #else
8961  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
8962  #endif
8963  #endif
8964  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
8965  if (unlikely(__pyx_nargs > 0)) {
8966  __Pyx_RaiseArgtupleInvalid("hash_fn", 1, 0, 0, __pyx_nargs); return NULL;}
8967  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hash_fn", 0))) return NULL;
8968  __pyx_r = __pyx_pf_8PyClical_9index_set_41hash_fn(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
8969 
8970  /* function exit code */
8971  __Pyx_RefNannyFinishContext();
8972  return __pyx_r;
8973 }
8974 
8975 static PyObject *__pyx_pf_8PyClical_9index_set_41hash_fn(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
8976  PyObject *__pyx_r = NULL;
8977  __Pyx_RefNannyDeclarations
8978  PyObject *__pyx_t_1 = NULL;
8979  int __pyx_lineno = 0;
8980  const char *__pyx_filename = NULL;
8981  int __pyx_clineno = 0;
8982  __Pyx_RefNannySetupContext("hash_fn", 1);
8983 
8984  /* "PyClical.pyx":364
8985  * Hash function.
8986  * """
8987  * return self.instance.hash_fn() # <<<<<<<<<<<<<<
8988  *
8989  * def sign_of_mult(self, rhs):
8990  */
8991  __Pyx_XDECREF(__pyx_r);
8992  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->hash_fn()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
8993  __Pyx_GOTREF(__pyx_t_1);
8994  __pyx_r = __pyx_t_1;
8995  __pyx_t_1 = 0;
8996  goto __pyx_L0;
8997 
8998  /* "PyClical.pyx":360
8999  * return self.instance.max()
9000  *
9001  * def hash_fn(self): # <<<<<<<<<<<<<<
9002  * """
9003  * Hash function.
9004  */
9005 
9006  /* function exit code */
9007  __pyx_L1_error:;
9008  __Pyx_XDECREF(__pyx_t_1);
9009  __Pyx_AddTraceback("PyClical.index_set.hash_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
9010  __pyx_r = NULL;
9011  __pyx_L0:;
9012  __Pyx_XGIVEREF(__pyx_r);
9013  __Pyx_RefNannyFinishContext();
9014  return __pyx_r;
9015 }
9016 
9017 /* "PyClical.pyx":366
9018  * return self.instance.hash_fn()
9019  *
9020  * def sign_of_mult(self, rhs): # <<<<<<<<<<<<<<
9021  * """
9022  * Sign of geometric product of two Clifford basis elements.
9023  */
9024 
9025 /* Python wrapper */
9026 static PyObject *__pyx_pw_8PyClical_9index_set_44sign_of_mult(PyObject *__pyx_v_self,
9027 #if CYTHON_METH_FASTCALL
9028 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9029 #else
9030 PyObject *__pyx_args, PyObject *__pyx_kwds
9031 #endif
9032 ); /*proto*/
9033 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_43sign_of_mult, "\n Sign of geometric product of two Clifford basis elements.\n\n >>> s = index_set({1,2}); t=index_set({-1}); s.sign_of_mult(t)\n 1\n ");
9034 static PyMethodDef __pyx_mdef_8PyClical_9index_set_44sign_of_mult = {"sign_of_mult", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_44sign_of_mult, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_43sign_of_mult};
9035 static PyObject *__pyx_pw_8PyClical_9index_set_44sign_of_mult(PyObject *__pyx_v_self,
9036 #if CYTHON_METH_FASTCALL
9037 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9038 #else
9039 PyObject *__pyx_args, PyObject *__pyx_kwds
9040 #endif
9041 ) {
9042  PyObject *__pyx_v_rhs = 0;
9043  #if !CYTHON_METH_FASTCALL
9044  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9045  #endif
9046  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9047  PyObject* values[1] = {0};
9048  int __pyx_lineno = 0;
9049  const char *__pyx_filename = NULL;
9050  int __pyx_clineno = 0;
9051  PyObject *__pyx_r = 0;
9052  __Pyx_RefNannyDeclarations
9053  __Pyx_RefNannySetupContext("sign_of_mult (wrapper)", 0);
9054  #if !CYTHON_METH_FASTCALL
9055  #if CYTHON_ASSUME_SAFE_MACROS
9056  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9057  #else
9058  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9059  #endif
9060  #endif
9061  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9062  {
9063  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rhs,0};
9064  if (__pyx_kwds) {
9065  Py_ssize_t kw_args;
9066  switch (__pyx_nargs) {
9067  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9068  CYTHON_FALLTHROUGH;
9069  case 0: break;
9070  default: goto __pyx_L5_argtuple_error;
9071  }
9072  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
9073  switch (__pyx_nargs) {
9074  case 0:
9075  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rhs)) != 0)) {
9076  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
9077  kw_args--;
9078  }
9079  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 366, __pyx_L3_error)
9080  else goto __pyx_L5_argtuple_error;
9081  }
9082  if (unlikely(kw_args > 0)) {
9083  const Py_ssize_t kwd_pos_args = __pyx_nargs;
9084  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sign_of_mult") < 0)) __PYX_ERR(0, 366, __pyx_L3_error)
9085  }
9086  } else if (unlikely(__pyx_nargs != 1)) {
9087  goto __pyx_L5_argtuple_error;
9088  } else {
9089  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9090  }
9091  __pyx_v_rhs = values[0];
9092  }
9093  goto __pyx_L6_skip;
9094  __pyx_L5_argtuple_error:;
9095  __Pyx_RaiseArgtupleInvalid("sign_of_mult", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 366, __pyx_L3_error)
9096  __pyx_L6_skip:;
9097  goto __pyx_L4_argument_unpacking_done;
9098  __pyx_L3_error:;
9099  {
9100  Py_ssize_t __pyx_temp;
9101  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9102  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
9103  }
9104  }
9105  __Pyx_AddTraceback("PyClical.index_set.sign_of_mult", __pyx_clineno, __pyx_lineno, __pyx_filename);
9106  __Pyx_RefNannyFinishContext();
9107  return NULL;
9108  __pyx_L4_argument_unpacking_done:;
9109  __pyx_r = __pyx_pf_8PyClical_9index_set_43sign_of_mult(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), __pyx_v_rhs);
9110 
9111  /* function exit code */
9112  {
9113  Py_ssize_t __pyx_temp;
9114  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9115  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
9116  }
9117  }
9118  __Pyx_RefNannyFinishContext();
9119  return __pyx_r;
9120 }
9121 
9122 static PyObject *__pyx_pf_8PyClical_9index_set_43sign_of_mult(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
9123  PyObject *__pyx_r = NULL;
9124  __Pyx_RefNannyDeclarations
9125  IndexSet __pyx_t_1;
9126  PyObject *__pyx_t_2 = NULL;
9127  int __pyx_lineno = 0;
9128  const char *__pyx_filename = NULL;
9129  int __pyx_clineno = 0;
9130  __Pyx_RefNannySetupContext("sign_of_mult", 1);
9131 
9132  /* "PyClical.pyx":373
9133  * 1
9134  * """
9135  * return self.instance.sign_of_mult(toIndexSet(rhs)) # <<<<<<<<<<<<<<
9136  *
9137  * def sign_of_square(self):
9138  */
9139  __Pyx_XDECREF(__pyx_r);
9140  __pyx_t_1 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 373, __pyx_L1_error)
9141  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->instance->sign_of_mult(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
9142  __Pyx_GOTREF(__pyx_t_2);
9143  __pyx_r = __pyx_t_2;
9144  __pyx_t_2 = 0;
9145  goto __pyx_L0;
9146 
9147  /* "PyClical.pyx":366
9148  * return self.instance.hash_fn()
9149  *
9150  * def sign_of_mult(self, rhs): # <<<<<<<<<<<<<<
9151  * """
9152  * Sign of geometric product of two Clifford basis elements.
9153  */
9154 
9155  /* function exit code */
9156  __pyx_L1_error:;
9157  __Pyx_XDECREF(__pyx_t_2);
9158  __Pyx_AddTraceback("PyClical.index_set.sign_of_mult", __pyx_clineno, __pyx_lineno, __pyx_filename);
9159  __pyx_r = NULL;
9160  __pyx_L0:;
9161  __Pyx_XGIVEREF(__pyx_r);
9162  __Pyx_RefNannyFinishContext();
9163  return __pyx_r;
9164 }
9165 
9166 /* "PyClical.pyx":375
9167  * return self.instance.sign_of_mult(toIndexSet(rhs))
9168  *
9169  * def sign_of_square(self): # <<<<<<<<<<<<<<
9170  * """
9171  * Sign of geometric square of a Clifford basis element.
9172  */
9173 
9174 /* Python wrapper */
9175 static PyObject *__pyx_pw_8PyClical_9index_set_46sign_of_square(PyObject *__pyx_v_self,
9176 #if CYTHON_METH_FASTCALL
9177 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9178 #else
9179 PyObject *__pyx_args, PyObject *__pyx_kwds
9180 #endif
9181 ); /*proto*/
9182 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_45sign_of_square, "\n Sign of geometric square of a Clifford basis element.\n\n >>> s = index_set({1,2}); s.sign_of_square()\n -1\n ");
9183 static PyMethodDef __pyx_mdef_8PyClical_9index_set_46sign_of_square = {"sign_of_square", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_46sign_of_square, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_45sign_of_square};
9184 static PyObject *__pyx_pw_8PyClical_9index_set_46sign_of_square(PyObject *__pyx_v_self,
9185 #if CYTHON_METH_FASTCALL
9186 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9187 #else
9188 PyObject *__pyx_args, PyObject *__pyx_kwds
9189 #endif
9190 ) {
9191  #if !CYTHON_METH_FASTCALL
9192  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9193  #endif
9194  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9195  PyObject *__pyx_r = 0;
9196  __Pyx_RefNannyDeclarations
9197  __Pyx_RefNannySetupContext("sign_of_square (wrapper)", 0);
9198  #if !CYTHON_METH_FASTCALL
9199  #if CYTHON_ASSUME_SAFE_MACROS
9200  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9201  #else
9202  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9203  #endif
9204  #endif
9205  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9206  if (unlikely(__pyx_nargs > 0)) {
9207  __Pyx_RaiseArgtupleInvalid("sign_of_square", 1, 0, 0, __pyx_nargs); return NULL;}
9208  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sign_of_square", 0))) return NULL;
9209  __pyx_r = __pyx_pf_8PyClical_9index_set_45sign_of_square(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
9210 
9211  /* function exit code */
9212  __Pyx_RefNannyFinishContext();
9213  return __pyx_r;
9214 }
9215 
9216 static PyObject *__pyx_pf_8PyClical_9index_set_45sign_of_square(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
9217  PyObject *__pyx_r = NULL;
9218  __Pyx_RefNannyDeclarations
9219  PyObject *__pyx_t_1 = NULL;
9220  int __pyx_lineno = 0;
9221  const char *__pyx_filename = NULL;
9222  int __pyx_clineno = 0;
9223  __Pyx_RefNannySetupContext("sign_of_square", 1);
9224 
9225  /* "PyClical.pyx":382
9226  * -1
9227  * """
9228  * return self.instance.sign_of_square() # <<<<<<<<<<<<<<
9229  *
9230  * def __repr__(self):
9231  */
9232  __Pyx_XDECREF(__pyx_r);
9233  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->sign_of_square()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
9234  __Pyx_GOTREF(__pyx_t_1);
9235  __pyx_r = __pyx_t_1;
9236  __pyx_t_1 = 0;
9237  goto __pyx_L0;
9238 
9239  /* "PyClical.pyx":375
9240  * return self.instance.sign_of_mult(toIndexSet(rhs))
9241  *
9242  * def sign_of_square(self): # <<<<<<<<<<<<<<
9243  * """
9244  * Sign of geometric square of a Clifford basis element.
9245  */
9246 
9247  /* function exit code */
9248  __pyx_L1_error:;
9249  __Pyx_XDECREF(__pyx_t_1);
9250  __Pyx_AddTraceback("PyClical.index_set.sign_of_square", __pyx_clineno, __pyx_lineno, __pyx_filename);
9251  __pyx_r = NULL;
9252  __pyx_L0:;
9253  __Pyx_XGIVEREF(__pyx_r);
9254  __Pyx_RefNannyFinishContext();
9255  return __pyx_r;
9256 }
9257 
9258 /* "PyClical.pyx":384
9259  * return self.instance.sign_of_square()
9260  *
9261  * def __repr__(self): # <<<<<<<<<<<<<<
9262  * """
9263  * The official string representation of self.
9264  */
9265 
9266 /* Python wrapper */
9267 static PyObject *__pyx_pw_8PyClical_9index_set_48__repr__(PyObject *__pyx_v_self); /*proto*/
9268 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_47__repr__, "\n The \342\200\234official\342\200\235 string representation of self.\n\n >>> index_set({1,2}).__repr__()\n 'index_set({1,2})'\n >>> repr(index_set({1,2}))\n 'index_set({1,2})'\n ");
9269 #if CYTHON_UPDATE_DESCRIPTOR_DOC
9270 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_47__repr__;
9271 #endif
9272 static PyObject *__pyx_pw_8PyClical_9index_set_48__repr__(PyObject *__pyx_v_self) {
9273  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9274  PyObject *__pyx_r = 0;
9275  __Pyx_RefNannyDeclarations
9276  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
9277  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
9278  __pyx_r = __pyx_pf_8PyClical_9index_set_47__repr__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
9279 
9280  /* function exit code */
9281  __Pyx_RefNannyFinishContext();
9282  return __pyx_r;
9283 }
9284 
9285 static PyObject *__pyx_pf_8PyClical_9index_set_47__repr__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
9286  PyObject *__pyx_r = NULL;
9287  __Pyx_RefNannyDeclarations
9288  IndexSet __pyx_t_1;
9289  PyObject *__pyx_t_2 = NULL;
9290  int __pyx_lineno = 0;
9291  const char *__pyx_filename = NULL;
9292  int __pyx_clineno = 0;
9293  __Pyx_RefNannySetupContext("__repr__", 1);
9294 
9295  /* "PyClical.pyx":393
9296  * 'index_set({1,2})'
9297  * """
9298  * return index_set_to_repr( self.unwrap() ).decode() # <<<<<<<<<<<<<<
9299  *
9300  * def __str__(self):
9301  */
9302  __Pyx_XDECREF(__pyx_r);
9303  __pyx_t_1 = __pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 393, __pyx_L1_error)
9304  __pyx_t_2 = __Pyx_decode_cpp_string(index_set_to_repr(__pyx_t_1), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
9305  __Pyx_GOTREF(__pyx_t_2);
9306  __pyx_r = __pyx_t_2;
9307  __pyx_t_2 = 0;
9308  goto __pyx_L0;
9309 
9310  /* "PyClical.pyx":384
9311  * return self.instance.sign_of_square()
9312  *
9313  * def __repr__(self): # <<<<<<<<<<<<<<
9314  * """
9315  * The official string representation of self.
9316  */
9317 
9318  /* function exit code */
9319  __pyx_L1_error:;
9320  __Pyx_XDECREF(__pyx_t_2);
9321  __Pyx_AddTraceback("PyClical.index_set.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9322  __pyx_r = NULL;
9323  __pyx_L0:;
9324  __Pyx_XGIVEREF(__pyx_r);
9325  __Pyx_RefNannyFinishContext();
9326  return __pyx_r;
9327 }
9328 
9329 /* "PyClical.pyx":395
9330  * return index_set_to_repr( self.unwrap() ).decode()
9331  *
9332  * def __str__(self): # <<<<<<<<<<<<<<
9333  * """
9334  * The informal string representation of self.
9335  */
9336 
9337 /* Python wrapper */
9338 static PyObject *__pyx_pw_8PyClical_9index_set_50__str__(PyObject *__pyx_v_self); /*proto*/
9339 PyDoc_STRVAR(__pyx_doc_8PyClical_9index_set_49__str__, "\n The \342\200\234informal\342\200\235 string representation of self.\n\n >>> index_set({1,2}).__str__()\n '{1,2}'\n >>> str(index_set({1,2}))\n '{1,2}'\n ");
9340 #if CYTHON_UPDATE_DESCRIPTOR_DOC
9341 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_49__str__;
9342 #endif
9343 static PyObject *__pyx_pw_8PyClical_9index_set_50__str__(PyObject *__pyx_v_self) {
9344  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9345  PyObject *__pyx_r = 0;
9346  __Pyx_RefNannyDeclarations
9347  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
9348  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
9349  __pyx_r = __pyx_pf_8PyClical_9index_set_49__str__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
9350 
9351  /* function exit code */
9352  __Pyx_RefNannyFinishContext();
9353  return __pyx_r;
9354 }
9355 
9356 static PyObject *__pyx_pf_8PyClical_9index_set_49__str__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
9357  PyObject *__pyx_r = NULL;
9358  __Pyx_RefNannyDeclarations
9359  IndexSet __pyx_t_1;
9360  PyObject *__pyx_t_2 = NULL;
9361  int __pyx_lineno = 0;
9362  const char *__pyx_filename = NULL;
9363  int __pyx_clineno = 0;
9364  __Pyx_RefNannySetupContext("__str__", 1);
9365 
9366  /* "PyClical.pyx":404
9367  * '{1,2}'
9368  * """
9369  * return index_set_to_str( self.unwrap() ).decode() # <<<<<<<<<<<<<<
9370  *
9371  * def index_set_hidden_doctests():
9372  */
9373  __Pyx_XDECREF(__pyx_r);
9374  __pyx_t_1 = __pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 404, __pyx_L1_error)
9375  __pyx_t_2 = __Pyx_decode_cpp_string(index_set_to_str(__pyx_t_1), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error)
9376  __Pyx_GOTREF(__pyx_t_2);
9377  __pyx_r = __pyx_t_2;
9378  __pyx_t_2 = 0;
9379  goto __pyx_L0;
9380 
9381  /* "PyClical.pyx":395
9382  * return index_set_to_repr( self.unwrap() ).decode()
9383  *
9384  * def __str__(self): # <<<<<<<<<<<<<<
9385  * """
9386  * The informal string representation of self.
9387  */
9388 
9389  /* function exit code */
9390  __pyx_L1_error:;
9391  __Pyx_XDECREF(__pyx_t_2);
9392  __Pyx_AddTraceback("PyClical.index_set.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9393  __pyx_r = NULL;
9394  __pyx_L0:;
9395  __Pyx_XGIVEREF(__pyx_r);
9396  __Pyx_RefNannyFinishContext();
9397  return __pyx_r;
9398 }
9399 
9400 /* "(tree fragment)":1
9401  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
9402  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9403  * def __setstate_cython__(self, __pyx_state):
9404  */
9405 
9406 /* Python wrapper */
9407 static PyObject *__pyx_pw_8PyClical_9index_set_52__reduce_cython__(PyObject *__pyx_v_self,
9408 #if CYTHON_METH_FASTCALL
9409 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9410 #else
9411 PyObject *__pyx_args, PyObject *__pyx_kwds
9412 #endif
9413 ); /*proto*/
9414 static PyMethodDef __pyx_mdef_8PyClical_9index_set_52__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_52__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9415 static PyObject *__pyx_pw_8PyClical_9index_set_52__reduce_cython__(PyObject *__pyx_v_self,
9416 #if CYTHON_METH_FASTCALL
9417 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9418 #else
9419 PyObject *__pyx_args, PyObject *__pyx_kwds
9420 #endif
9421 ) {
9422  #if !CYTHON_METH_FASTCALL
9423  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9424  #endif
9425  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9426  PyObject *__pyx_r = 0;
9427  __Pyx_RefNannyDeclarations
9428  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
9429  #if !CYTHON_METH_FASTCALL
9430  #if CYTHON_ASSUME_SAFE_MACROS
9431  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9432  #else
9433  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9434  #endif
9435  #endif
9436  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9437  if (unlikely(__pyx_nargs > 0)) {
9438  __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
9439  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
9440  __pyx_r = __pyx_pf_8PyClical_9index_set_51__reduce_cython__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
9441 
9442  /* function exit code */
9443  __Pyx_RefNannyFinishContext();
9444  return __pyx_r;
9445 }
9446 
9447 static PyObject *__pyx_pf_8PyClical_9index_set_51__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
9448  PyObject *__pyx_r = NULL;
9449  __Pyx_RefNannyDeclarations
9450  int __pyx_lineno = 0;
9451  const char *__pyx_filename = NULL;
9452  int __pyx_clineno = 0;
9453  __Pyx_RefNannySetupContext("__reduce_cython__", 1);
9454 
9455  /* "(tree fragment)":2
9456  * def __reduce_cython__(self):
9457  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<<
9458  * def __setstate_cython__(self, __pyx_state):
9459  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9460  */
9461  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
9462  __PYX_ERR(1, 2, __pyx_L1_error)
9463 
9464  /* "(tree fragment)":1
9465  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
9466  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9467  * def __setstate_cython__(self, __pyx_state):
9468  */
9469 
9470  /* function exit code */
9471  __pyx_L1_error:;
9472  __Pyx_AddTraceback("PyClical.index_set.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9473  __pyx_r = NULL;
9474  __Pyx_XGIVEREF(__pyx_r);
9475  __Pyx_RefNannyFinishContext();
9476  return __pyx_r;
9477 }
9478 
9479 /* "(tree fragment)":3
9480  * def __reduce_cython__(self):
9481  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9482  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
9483  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9484  */
9485 
9486 /* Python wrapper */
9487 static PyObject *__pyx_pw_8PyClical_9index_set_54__setstate_cython__(PyObject *__pyx_v_self,
9488 #if CYTHON_METH_FASTCALL
9489 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9490 #else
9491 PyObject *__pyx_args, PyObject *__pyx_kwds
9492 #endif
9493 ); /*proto*/
9494 static PyMethodDef __pyx_mdef_8PyClical_9index_set_54__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_54__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
9495 static PyObject *__pyx_pw_8PyClical_9index_set_54__setstate_cython__(PyObject *__pyx_v_self,
9496 #if CYTHON_METH_FASTCALL
9497 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9498 #else
9499 PyObject *__pyx_args, PyObject *__pyx_kwds
9500 #endif
9501 ) {
9502  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
9503  #if !CYTHON_METH_FASTCALL
9504  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9505  #endif
9506  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9507  PyObject* values[1] = {0};
9508  int __pyx_lineno = 0;
9509  const char *__pyx_filename = NULL;
9510  int __pyx_clineno = 0;
9511  PyObject *__pyx_r = 0;
9512  __Pyx_RefNannyDeclarations
9513  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
9514  #if !CYTHON_METH_FASTCALL
9515  #if CYTHON_ASSUME_SAFE_MACROS
9516  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9517  #else
9518  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9519  #endif
9520  #endif
9521  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9522  {
9523  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
9524  if (__pyx_kwds) {
9525  Py_ssize_t kw_args;
9526  switch (__pyx_nargs) {
9527  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9528  CYTHON_FALLTHROUGH;
9529  case 0: break;
9530  default: goto __pyx_L5_argtuple_error;
9531  }
9532  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
9533  switch (__pyx_nargs) {
9534  case 0:
9535  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
9536  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
9537  kw_args--;
9538  }
9539  else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error)
9540  else goto __pyx_L5_argtuple_error;
9541  }
9542  if (unlikely(kw_args > 0)) {
9543  const Py_ssize_t kwd_pos_args = __pyx_nargs;
9544  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error)
9545  }
9546  } else if (unlikely(__pyx_nargs != 1)) {
9547  goto __pyx_L5_argtuple_error;
9548  } else {
9549  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9550  }
9551  __pyx_v___pyx_state = values[0];
9552  }
9553  goto __pyx_L6_skip;
9554  __pyx_L5_argtuple_error:;
9555  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
9556  __pyx_L6_skip:;
9557  goto __pyx_L4_argument_unpacking_done;
9558  __pyx_L3_error:;
9559  {
9560  Py_ssize_t __pyx_temp;
9561  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9562  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
9563  }
9564  }
9565  __Pyx_AddTraceback("PyClical.index_set.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9566  __Pyx_RefNannyFinishContext();
9567  return NULL;
9568  __pyx_L4_argument_unpacking_done:;
9569  __pyx_r = __pyx_pf_8PyClical_9index_set_53__setstate_cython__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), __pyx_v___pyx_state);
9570 
9571  /* function exit code */
9572  {
9573  Py_ssize_t __pyx_temp;
9574  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9575  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
9576  }
9577  }
9578  __Pyx_RefNannyFinishContext();
9579  return __pyx_r;
9580 }
9581 
9582 static PyObject *__pyx_pf_8PyClical_9index_set_53__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_index_set *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
9583  PyObject *__pyx_r = NULL;
9584  __Pyx_RefNannyDeclarations
9585  int __pyx_lineno = 0;
9586  const char *__pyx_filename = NULL;
9587  int __pyx_clineno = 0;
9588  __Pyx_RefNannySetupContext("__setstate_cython__", 1);
9589 
9590  /* "(tree fragment)":4
9591  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9592  * def __setstate_cython__(self, __pyx_state):
9593  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<<
9594  */
9595  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
9596  __PYX_ERR(1, 4, __pyx_L1_error)
9597 
9598  /* "(tree fragment)":3
9599  * def __reduce_cython__(self):
9600  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9601  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
9602  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
9603  */
9604 
9605  /* function exit code */
9606  __pyx_L1_error:;
9607  __Pyx_AddTraceback("PyClical.index_set.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9608  __pyx_r = NULL;
9609  __Pyx_XGIVEREF(__pyx_r);
9610  __Pyx_RefNannyFinishContext();
9611  return __pyx_r;
9612 }
9613 
9614 /* "PyClical.pyx":406
9615  * return index_set_to_str( self.unwrap() ).decode()
9616  *
9617  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
9618  * """
9619  * Tests for functions that Doctest cannot see.
9620  */
9621 
9622 /* Python wrapper */
9623 static PyObject *__pyx_pw_8PyClical_1index_set_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9624 PyDoc_STRVAR(__pyx_doc_8PyClical_index_set_hidden_doctests, "\n Tests for functions that Doctest cannot see.\n\n For index_set.__cinit__: Construct index_set.\n\n >>> print(index_set(1))\n {1}\n >>> print(index_set({1,2}))\n {1,2}\n >>> print(index_set(index_set({1,2})))\n {1,2}\n >>> print(index_set({1,2}))\n {1,2}\n >>> print(index_set({1,2,1}))\n {1,2}\n >>> print(index_set({1,2,1}))\n {1,2}\n >>> print(index_set(\"\"))\n {}\n >>> print(index_set(\"{\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize index_set object from invalid string '{'.\n >>> print(index_set(\"{1\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize index_set object from invalid string '{1'.\n >>> print(index_set(\"{1,2,100}\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize index_set object from invalid string '{1,2,100}'.\n >>> print(index_set({1,2,100}))\n Traceback (most recent call last):\n ...\n IndexError: Cannot initialize index_set object from invalid {1, 2, 100}.\n >>> print(index_set([1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize index_set object from <class 'list'>.\n\n For index_set.__richcmp__: Compare two objects of class index_set.\n\n >>> index_set(1) == index_set({1})\n True\n >>> index_set({1}) != index_set({1})\n False\n >>> index_set({1}) != index_set({2})\n True\n >>> index_set({1}) == index_set({2})\n False\n >>> index_set({1}) < index_set({2})\n True\n >>> index_set({1}) <= index_set({2})\n True\n >>> index_set({1}) > index_set({2})\n False\n >>> index_set({1}) >= index_set({2})\n False\n >>> None == index_set({1,2})\n False\n >>> None != index_set({1,2})\n True\n >>> None < index_set({1,2})\n False\n >>> None <= index_set({1,2})\n False\n >>> None > index_set({1,2})\n False\n >>> None >= index_set({1,2})\n False\n >>> ""index_set({1,2}) == None\n False\n >>> index_set({1,2}) != None\n True\n >>> index_set({1,2}) < None\n False\n >>> index_set({1,2}) <= None\n False\n >>> index_set({1,2}) > None\n False\n >>> index_set({1,2}) >= None\n False\n ");
9625  static PyMethodDef __pyx_mdef_8PyClical_1index_set_hidden_doctests = {"index_set_hidden_doctests", (PyCFunction)__pyx_pw_8PyClical_1index_set_hidden_doctests, METH_NOARGS, __pyx_doc_8PyClical_index_set_hidden_doctests};
9626  static PyObject *__pyx_pw_8PyClical_1index_set_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
9627  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9628  PyObject *__pyx_r = 0;
9629  __Pyx_RefNannyDeclarations
9630  __Pyx_RefNannySetupContext("index_set_hidden_doctests (wrapper)", 0);
9631  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
9632  __pyx_r = __pyx_pf_8PyClical_index_set_hidden_doctests(__pyx_self);
9633 
9634  /* function exit code */
9635  __Pyx_RefNannyFinishContext();
9636  return __pyx_r;
9637  }
9638 
9639  static PyObject *__pyx_pf_8PyClical_index_set_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self) {
9640  PyObject *__pyx_r = NULL;
9641  __Pyx_RefNannyDeclarations
9642  __Pyx_RefNannySetupContext("index_set_hidden_doctests", 1);
9643 
9644  /* "PyClical.pyx":490
9645  * False
9646  * """
9647  * return # <<<<<<<<<<<<<<
9648  *
9649  * cpdef inline compare(lhs,rhs):
9650  */
9651  __Pyx_XDECREF(__pyx_r);
9652  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9653  goto __pyx_L0;
9654 
9655  /* "PyClical.pyx":406
9656  * return index_set_to_str( self.unwrap() ).decode()
9657  *
9658  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
9659  * """
9660  * Tests for functions that Doctest cannot see.
9661  */
9662 
9663  /* function exit code */
9664  __pyx_L0:;
9665  __Pyx_XGIVEREF(__pyx_r);
9666  __Pyx_RefNannyFinishContext();
9667  return __pyx_r;
9668  }
9669 
9670  /* "PyClical.pyx":492
9671  * return
9672  *
9673  * cpdef inline compare(lhs,rhs): # <<<<<<<<<<<<<<
9674  * """
9675  * "lexicographic compare" eg. {3,4,5} is less than {3,7,8};
9676  */
9677 
9678  static PyObject *__pyx_pw_8PyClical_3compare(PyObject *__pyx_self,
9679 #if CYTHON_METH_FASTCALL
9680 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9681 #else
9682 PyObject *__pyx_args, PyObject *__pyx_kwds
9683 #endif
9684 ); /*proto*/
9685  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_compare(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, CYTHON_UNUSED int __pyx_skip_dispatch) {
9686  PyObject *__pyx_r = NULL;
9687  __Pyx_RefNannyDeclarations
9688  IndexSet __pyx_t_1;
9689  IndexSet __pyx_t_2;
9690  PyObject *__pyx_t_3 = NULL;
9691  int __pyx_lineno = 0;
9692  const char *__pyx_filename = NULL;
9693  int __pyx_clineno = 0;
9694  __Pyx_RefNannySetupContext("compare", 1);
9695 
9696  /* "PyClical.pyx":502
9697  * 1
9698  * """
9699  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) ) # <<<<<<<<<<<<<<
9700  *
9701  * cpdef inline min_neg(obj):
9702  */
9703  __Pyx_XDECREF(__pyx_r);
9704  __pyx_t_1 = __pyx_f_8PyClical_toIndexSet(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error)
9705  __pyx_t_2 = __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error)
9706  __pyx_t_3 = __Pyx_PyInt_From_int(compare(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error)
9707  __Pyx_GOTREF(__pyx_t_3);
9708  __pyx_r = __pyx_t_3;
9709  __pyx_t_3 = 0;
9710  goto __pyx_L0;
9711 
9712  /* "PyClical.pyx":492
9713  * return
9714  *
9715  * cpdef inline compare(lhs,rhs): # <<<<<<<<<<<<<<
9716  * """
9717  * "lexicographic compare" eg. {3,4,5} is less than {3,7,8};
9718  */
9719 
9720  /* function exit code */
9721  __pyx_L1_error:;
9722  __Pyx_XDECREF(__pyx_t_3);
9723  __Pyx_AddTraceback("PyClical.compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
9724  __pyx_r = 0;
9725  __pyx_L0:;
9726  __Pyx_XGIVEREF(__pyx_r);
9727  __Pyx_RefNannyFinishContext();
9728  return __pyx_r;
9729  }
9730 
9731  /* Python wrapper */
9732  static PyObject *__pyx_pw_8PyClical_3compare(PyObject *__pyx_self,
9733 #if CYTHON_METH_FASTCALL
9734 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9735 #else
9736 PyObject *__pyx_args, PyObject *__pyx_kwds
9737 #endif
9738 ); /*proto*/
9739  PyDoc_STRVAR(__pyx_doc_8PyClical_2compare, "\n \"lexicographic compare\" eg. {3,4,5} is less than {3,7,8};\n -1 if a<b, +1 if a>b, 0 if a==b.\n\n >>> compare(index_set({1,2}),index_set({-1,3}))\n -1\n >>> compare(index_set({-1,4}),index_set({-1,3}))\n 1\n ");
9740  static PyMethodDef __pyx_mdef_8PyClical_3compare = {"compare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_3compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_2compare};
9741  static PyObject *__pyx_pw_8PyClical_3compare(PyObject *__pyx_self,
9742 #if CYTHON_METH_FASTCALL
9743 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9744 #else
9745 PyObject *__pyx_args, PyObject *__pyx_kwds
9746 #endif
9747 ) {
9748  PyObject *__pyx_v_lhs = 0;
9749  PyObject *__pyx_v_rhs = 0;
9750  #if !CYTHON_METH_FASTCALL
9751  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9752  #endif
9753  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9754  PyObject* values[2] = {0,0};
9755  int __pyx_lineno = 0;
9756  const char *__pyx_filename = NULL;
9757  int __pyx_clineno = 0;
9758  PyObject *__pyx_r = 0;
9759  __Pyx_RefNannyDeclarations
9760  __Pyx_RefNannySetupContext("compare (wrapper)", 0);
9761  #if !CYTHON_METH_FASTCALL
9762  #if CYTHON_ASSUME_SAFE_MACROS
9763  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9764  #else
9765  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9766  #endif
9767  #endif
9768  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9769  {
9770  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lhs,&__pyx_n_s_rhs,0};
9771  if (__pyx_kwds) {
9772  Py_ssize_t kw_args;
9773  switch (__pyx_nargs) {
9774  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
9775  CYTHON_FALLTHROUGH;
9776  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9777  CYTHON_FALLTHROUGH;
9778  case 0: break;
9779  default: goto __pyx_L5_argtuple_error;
9780  }
9781  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
9782  switch (__pyx_nargs) {
9783  case 0:
9784  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lhs)) != 0)) {
9785  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
9786  kw_args--;
9787  }
9788  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L3_error)
9789  else goto __pyx_L5_argtuple_error;
9790  CYTHON_FALLTHROUGH;
9791  case 1:
9792  if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rhs)) != 0)) {
9793  (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
9794  kw_args--;
9795  }
9796  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L3_error)
9797  else {
9798  __Pyx_RaiseArgtupleInvalid("compare", 1, 2, 2, 1); __PYX_ERR(0, 492, __pyx_L3_error)
9799  }
9800  }
9801  if (unlikely(kw_args > 0)) {
9802  const Py_ssize_t kwd_pos_args = __pyx_nargs;
9803  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "compare") < 0)) __PYX_ERR(0, 492, __pyx_L3_error)
9804  }
9805  } else if (unlikely(__pyx_nargs != 2)) {
9806  goto __pyx_L5_argtuple_error;
9807  } else {
9808  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9809  values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
9810  }
9811  __pyx_v_lhs = values[0];
9812  __pyx_v_rhs = values[1];
9813  }
9814  goto __pyx_L6_skip;
9815  __pyx_L5_argtuple_error:;
9816  __Pyx_RaiseArgtupleInvalid("compare", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 492, __pyx_L3_error)
9817  __pyx_L6_skip:;
9818  goto __pyx_L4_argument_unpacking_done;
9819  __pyx_L3_error:;
9820  {
9821  Py_ssize_t __pyx_temp;
9822  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9823  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
9824  }
9825  }
9826  __Pyx_AddTraceback("PyClical.compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
9827  __Pyx_RefNannyFinishContext();
9828  return NULL;
9829  __pyx_L4_argument_unpacking_done:;
9830  __pyx_r = __pyx_pf_8PyClical_2compare(__pyx_self, __pyx_v_lhs, __pyx_v_rhs);
9831 
9832  /* function exit code */
9833  {
9834  Py_ssize_t __pyx_temp;
9835  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
9836  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
9837  }
9838  }
9839  __Pyx_RefNannyFinishContext();
9840  return __pyx_r;
9841  }
9842 
9843  static PyObject *__pyx_pf_8PyClical_2compare(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
9844  PyObject *__pyx_r = NULL;
9845  __Pyx_RefNannyDeclarations
9846  PyObject *__pyx_t_1 = NULL;
9847  int __pyx_lineno = 0;
9848  const char *__pyx_filename = NULL;
9849  int __pyx_clineno = 0;
9850  __Pyx_RefNannySetupContext("compare", 1);
9851  __Pyx_XDECREF(__pyx_r);
9852  __pyx_t_1 = __pyx_f_8PyClical_compare(__pyx_v_lhs, __pyx_v_rhs, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 492, __pyx_L1_error)
9853  __Pyx_GOTREF(__pyx_t_1);
9854  __pyx_r = __pyx_t_1;
9855  __pyx_t_1 = 0;
9856  goto __pyx_L0;
9857 
9858  /* function exit code */
9859  __pyx_L1_error:;
9860  __Pyx_XDECREF(__pyx_t_1);
9861  __Pyx_AddTraceback("PyClical.compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
9862  __pyx_r = NULL;
9863  __pyx_L0:;
9864  __Pyx_XGIVEREF(__pyx_r);
9865  __Pyx_RefNannyFinishContext();
9866  return __pyx_r;
9867  }
9868 
9869  /* "PyClical.pyx":504
9870  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) )
9871  *
9872  * cpdef inline min_neg(obj): # <<<<<<<<<<<<<<
9873  * """
9874  * Minimum negative index, or 0 if none.
9875  */
9876 
9877  static PyObject *__pyx_pw_8PyClical_5min_neg(PyObject *__pyx_self,
9878 #if CYTHON_METH_FASTCALL
9879 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9880 #else
9881 PyObject *__pyx_args, PyObject *__pyx_kwds
9882 #endif
9883 ); /*proto*/
9884  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_min_neg(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
9885  PyObject *__pyx_r = NULL;
9886  __Pyx_RefNannyDeclarations
9887  IndexSet __pyx_t_1;
9888  PyObject *__pyx_t_2 = NULL;
9889  int __pyx_lineno = 0;
9890  const char *__pyx_filename = NULL;
9891  int __pyx_clineno = 0;
9892  __Pyx_RefNannySetupContext("min_neg", 1);
9893 
9894  /* "PyClical.pyx":511
9895  * 0
9896  * """
9897  * return glucat.min_neg( toIndexSet(obj) ) # <<<<<<<<<<<<<<
9898  *
9899  * cpdef inline max_pos(obj):
9900  */
9901  __Pyx_XDECREF(__pyx_r);
9902  __pyx_t_1 = __pyx_f_8PyClical_toIndexSet(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 511, __pyx_L1_error)
9903  __pyx_t_2 = __Pyx_PyInt_From_int(min_neg(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error)
9904  __Pyx_GOTREF(__pyx_t_2);
9905  __pyx_r = __pyx_t_2;
9906  __pyx_t_2 = 0;
9907  goto __pyx_L0;
9908 
9909  /* "PyClical.pyx":504
9910  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) )
9911  *
9912  * cpdef inline min_neg(obj): # <<<<<<<<<<<<<<
9913  * """
9914  * Minimum negative index, or 0 if none.
9915  */
9916 
9917  /* function exit code */
9918  __pyx_L1_error:;
9919  __Pyx_XDECREF(__pyx_t_2);
9920  __Pyx_AddTraceback("PyClical.min_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
9921  __pyx_r = 0;
9922  __pyx_L0:;
9923  __Pyx_XGIVEREF(__pyx_r);
9924  __Pyx_RefNannyFinishContext();
9925  return __pyx_r;
9926  }
9927 
9928  /* Python wrapper */
9929  static PyObject *__pyx_pw_8PyClical_5min_neg(PyObject *__pyx_self,
9930 #if CYTHON_METH_FASTCALL
9931 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9932 #else
9933 PyObject *__pyx_args, PyObject *__pyx_kwds
9934 #endif
9935 ); /*proto*/
9936  PyDoc_STRVAR(__pyx_doc_8PyClical_4min_neg, "\n Minimum negative index, or 0 if none.\n\n >>> min_neg(index_set({1,2}))\n 0\n ");
9937  static PyMethodDef __pyx_mdef_8PyClical_5min_neg = {"min_neg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_5min_neg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_4min_neg};
9938  static PyObject *__pyx_pw_8PyClical_5min_neg(PyObject *__pyx_self,
9939 #if CYTHON_METH_FASTCALL
9940 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9941 #else
9942 PyObject *__pyx_args, PyObject *__pyx_kwds
9943 #endif
9944 ) {
9945  PyObject *__pyx_v_obj = 0;
9946  #if !CYTHON_METH_FASTCALL
9947  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
9948  #endif
9949  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
9950  PyObject* values[1] = {0};
9951  int __pyx_lineno = 0;
9952  const char *__pyx_filename = NULL;
9953  int __pyx_clineno = 0;
9954  PyObject *__pyx_r = 0;
9955  __Pyx_RefNannyDeclarations
9956  __Pyx_RefNannySetupContext("min_neg (wrapper)", 0);
9957  #if !CYTHON_METH_FASTCALL
9958  #if CYTHON_ASSUME_SAFE_MACROS
9959  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
9960  #else
9961  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
9962  #endif
9963  #endif
9964  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
9965  {
9966  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
9967  if (__pyx_kwds) {
9968  Py_ssize_t kw_args;
9969  switch (__pyx_nargs) {
9970  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9971  CYTHON_FALLTHROUGH;
9972  case 0: break;
9973  default: goto __pyx_L5_argtuple_error;
9974  }
9975  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
9976  switch (__pyx_nargs) {
9977  case 0:
9978  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
9979  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
9980  kw_args--;
9981  }
9982  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 504, __pyx_L3_error)
9983  else goto __pyx_L5_argtuple_error;
9984  }
9985  if (unlikely(kw_args > 0)) {
9986  const Py_ssize_t kwd_pos_args = __pyx_nargs;
9987  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "min_neg") < 0)) __PYX_ERR(0, 504, __pyx_L3_error)
9988  }
9989  } else if (unlikely(__pyx_nargs != 1)) {
9990  goto __pyx_L5_argtuple_error;
9991  } else {
9992  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
9993  }
9994  __pyx_v_obj = values[0];
9995  }
9996  goto __pyx_L6_skip;
9997  __pyx_L5_argtuple_error:;
9998  __Pyx_RaiseArgtupleInvalid("min_neg", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 504, __pyx_L3_error)
9999  __pyx_L6_skip:;
10000  goto __pyx_L4_argument_unpacking_done;
10001  __pyx_L3_error:;
10002  {
10003  Py_ssize_t __pyx_temp;
10004  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10005  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
10006  }
10007  }
10008  __Pyx_AddTraceback("PyClical.min_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
10009  __Pyx_RefNannyFinishContext();
10010  return NULL;
10011  __pyx_L4_argument_unpacking_done:;
10012  __pyx_r = __pyx_pf_8PyClical_4min_neg(__pyx_self, __pyx_v_obj);
10013 
10014  /* function exit code */
10015  {
10016  Py_ssize_t __pyx_temp;
10017  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10018  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
10019  }
10020  }
10021  __Pyx_RefNannyFinishContext();
10022  return __pyx_r;
10023  }
10024 
10025  static PyObject *__pyx_pf_8PyClical_4min_neg(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
10026  PyObject *__pyx_r = NULL;
10027  __Pyx_RefNannyDeclarations
10028  PyObject *__pyx_t_1 = NULL;
10029  int __pyx_lineno = 0;
10030  const char *__pyx_filename = NULL;
10031  int __pyx_clineno = 0;
10032  __Pyx_RefNannySetupContext("min_neg", 1);
10033  __Pyx_XDECREF(__pyx_r);
10034  __pyx_t_1 = __pyx_f_8PyClical_min_neg(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
10035  __Pyx_GOTREF(__pyx_t_1);
10036  __pyx_r = __pyx_t_1;
10037  __pyx_t_1 = 0;
10038  goto __pyx_L0;
10039 
10040  /* function exit code */
10041  __pyx_L1_error:;
10042  __Pyx_XDECREF(__pyx_t_1);
10043  __Pyx_AddTraceback("PyClical.min_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
10044  __pyx_r = NULL;
10045  __pyx_L0:;
10046  __Pyx_XGIVEREF(__pyx_r);
10047  __Pyx_RefNannyFinishContext();
10048  return __pyx_r;
10049  }
10050 
10051  /* "PyClical.pyx":513
10052  * return glucat.min_neg( toIndexSet(obj) )
10053  *
10054  * cpdef inline max_pos(obj): # <<<<<<<<<<<<<<
10055  * """
10056  * Maximum positive index, or 0 if none.
10057  */
10058 
10059  static PyObject *__pyx_pw_8PyClical_7max_pos(PyObject *__pyx_self,
10060 #if CYTHON_METH_FASTCALL
10061 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10062 #else
10063 PyObject *__pyx_args, PyObject *__pyx_kwds
10064 #endif
10065 ); /*proto*/
10066  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_pos(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
10067  PyObject *__pyx_r = NULL;
10068  __Pyx_RefNannyDeclarations
10069  IndexSet __pyx_t_1;
10070  PyObject *__pyx_t_2 = NULL;
10071  int __pyx_lineno = 0;
10072  const char *__pyx_filename = NULL;
10073  int __pyx_clineno = 0;
10074  __Pyx_RefNannySetupContext("max_pos", 1);
10075 
10076  /* "PyClical.pyx":520
10077  * 2
10078  * """
10079  * return glucat.max_pos( toIndexSet(obj) ) # <<<<<<<<<<<<<<
10080  *
10081  * cdef inline vector[scalar_t] list_to_vector(lst):
10082  */
10083  __Pyx_XDECREF(__pyx_r);
10084  __pyx_t_1 = __pyx_f_8PyClical_toIndexSet(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L1_error)
10085  __pyx_t_2 = __Pyx_PyInt_From_int(max_pos(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 520, __pyx_L1_error)
10086  __Pyx_GOTREF(__pyx_t_2);
10087  __pyx_r = __pyx_t_2;
10088  __pyx_t_2 = 0;
10089  goto __pyx_L0;
10090 
10091  /* "PyClical.pyx":513
10092  * return glucat.min_neg( toIndexSet(obj) )
10093  *
10094  * cpdef inline max_pos(obj): # <<<<<<<<<<<<<<
10095  * """
10096  * Maximum positive index, or 0 if none.
10097  */
10098 
10099  /* function exit code */
10100  __pyx_L1_error:;
10101  __Pyx_XDECREF(__pyx_t_2);
10102  __Pyx_AddTraceback("PyClical.max_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
10103  __pyx_r = 0;
10104  __pyx_L0:;
10105  __Pyx_XGIVEREF(__pyx_r);
10106  __Pyx_RefNannyFinishContext();
10107  return __pyx_r;
10108  }
10109 
10110  /* Python wrapper */
10111  static PyObject *__pyx_pw_8PyClical_7max_pos(PyObject *__pyx_self,
10112 #if CYTHON_METH_FASTCALL
10113 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10114 #else
10115 PyObject *__pyx_args, PyObject *__pyx_kwds
10116 #endif
10117 ); /*proto*/
10118  PyDoc_STRVAR(__pyx_doc_8PyClical_6max_pos, "\n Maximum positive index, or 0 if none.\n\n >>> max_pos(index_set({1,2}))\n 2\n ");
10119  static PyMethodDef __pyx_mdef_8PyClical_7max_pos = {"max_pos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_7max_pos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_6max_pos};
10120  static PyObject *__pyx_pw_8PyClical_7max_pos(PyObject *__pyx_self,
10121 #if CYTHON_METH_FASTCALL
10122 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10123 #else
10124 PyObject *__pyx_args, PyObject *__pyx_kwds
10125 #endif
10126 ) {
10127  PyObject *__pyx_v_obj = 0;
10128  #if !CYTHON_METH_FASTCALL
10129  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10130  #endif
10131  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10132  PyObject* values[1] = {0};
10133  int __pyx_lineno = 0;
10134  const char *__pyx_filename = NULL;
10135  int __pyx_clineno = 0;
10136  PyObject *__pyx_r = 0;
10137  __Pyx_RefNannyDeclarations
10138  __Pyx_RefNannySetupContext("max_pos (wrapper)", 0);
10139  #if !CYTHON_METH_FASTCALL
10140  #if CYTHON_ASSUME_SAFE_MACROS
10141  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10142  #else
10143  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10144  #endif
10145  #endif
10146  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10147  {
10148  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
10149  if (__pyx_kwds) {
10150  Py_ssize_t kw_args;
10151  switch (__pyx_nargs) {
10152  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
10153  CYTHON_FALLTHROUGH;
10154  case 0: break;
10155  default: goto __pyx_L5_argtuple_error;
10156  }
10157  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
10158  switch (__pyx_nargs) {
10159  case 0:
10160  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
10161  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
10162  kw_args--;
10163  }
10164  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L3_error)
10165  else goto __pyx_L5_argtuple_error;
10166  }
10167  if (unlikely(kw_args > 0)) {
10168  const Py_ssize_t kwd_pos_args = __pyx_nargs;
10169  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "max_pos") < 0)) __PYX_ERR(0, 513, __pyx_L3_error)
10170  }
10171  } else if (unlikely(__pyx_nargs != 1)) {
10172  goto __pyx_L5_argtuple_error;
10173  } else {
10174  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
10175  }
10176  __pyx_v_obj = values[0];
10177  }
10178  goto __pyx_L6_skip;
10179  __pyx_L5_argtuple_error:;
10180  __Pyx_RaiseArgtupleInvalid("max_pos", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 513, __pyx_L3_error)
10181  __pyx_L6_skip:;
10182  goto __pyx_L4_argument_unpacking_done;
10183  __pyx_L3_error:;
10184  {
10185  Py_ssize_t __pyx_temp;
10186  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10187  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
10188  }
10189  }
10190  __Pyx_AddTraceback("PyClical.max_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
10191  __Pyx_RefNannyFinishContext();
10192  return NULL;
10193  __pyx_L4_argument_unpacking_done:;
10194  __pyx_r = __pyx_pf_8PyClical_6max_pos(__pyx_self, __pyx_v_obj);
10195 
10196  /* function exit code */
10197  {
10198  Py_ssize_t __pyx_temp;
10199  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10200  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
10201  }
10202  }
10203  __Pyx_RefNannyFinishContext();
10204  return __pyx_r;
10205  }
10206 
10207  static PyObject *__pyx_pf_8PyClical_6max_pos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
10208  PyObject *__pyx_r = NULL;
10209  __Pyx_RefNannyDeclarations
10210  PyObject *__pyx_t_1 = NULL;
10211  int __pyx_lineno = 0;
10212  const char *__pyx_filename = NULL;
10213  int __pyx_clineno = 0;
10214  __Pyx_RefNannySetupContext("max_pos", 1);
10215  __Pyx_XDECREF(__pyx_r);
10216  __pyx_t_1 = __pyx_f_8PyClical_max_pos(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
10217  __Pyx_GOTREF(__pyx_t_1);
10218  __pyx_r = __pyx_t_1;
10219  __pyx_t_1 = 0;
10220  goto __pyx_L0;
10221 
10222  /* function exit code */
10223  __pyx_L1_error:;
10224  __Pyx_XDECREF(__pyx_t_1);
10225  __Pyx_AddTraceback("PyClical.max_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
10226  __pyx_r = NULL;
10227  __pyx_L0:;
10228  __Pyx_XGIVEREF(__pyx_r);
10229  __Pyx_RefNannyFinishContext();
10230  return __pyx_r;
10231  }
10232 
10233  /* "PyClical.pyx":522
10234  * return glucat.max_pos( toIndexSet(obj) )
10235  *
10236  * cdef inline vector[scalar_t] list_to_vector(lst): # <<<<<<<<<<<<<<
10237  * """
10238  * Create a C++ std:vector[scalar_t] from an iterable Python object.
10239  */
10240 
10241  static CYTHON_INLINE std::vector<scalar_t> __pyx_f_8PyClical_list_to_vector(PyObject *__pyx_v_lst) {
10242  std::vector<scalar_t> __pyx_v_v;
10243  PyObject *__pyx_v_s = NULL;
10244  std::vector<scalar_t> __pyx_r;
10245  __Pyx_RefNannyDeclarations
10246  PyObject *__pyx_t_1 = NULL;
10247  Py_ssize_t __pyx_t_2;
10248  PyObject *(*__pyx_t_3)(PyObject *);
10249  PyObject *__pyx_t_4 = NULL;
10250  scalar_t __pyx_t_5;
10251  int __pyx_lineno = 0;
10252  const char *__pyx_filename = NULL;
10253  int __pyx_clineno = 0;
10254  __Pyx_RefNannySetupContext("list_to_vector", 1);
10255 
10256  /* "PyClical.pyx":527
10257  * """
10258  * cdef vector[scalar_t] v
10259  * for s in lst: # <<<<<<<<<<<<<<
10260  * v.push_back(<scalar_t>s)
10261  * return v
10262  */
10263  if (likely(PyList_CheckExact(__pyx_v_lst)) || PyTuple_CheckExact(__pyx_v_lst)) {
10264  __pyx_t_1 = __pyx_v_lst; __Pyx_INCREF(__pyx_t_1);
10265  __pyx_t_2 = 0;
10266  __pyx_t_3 = NULL;
10267  } else {
10268  __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_lst); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L1_error)
10269  __Pyx_GOTREF(__pyx_t_1);
10270  __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 527, __pyx_L1_error)
10271  }
10272  for (;;) {
10273  if (likely(!__pyx_t_3)) {
10274  if (likely(PyList_CheckExact(__pyx_t_1))) {
10275  {
10276  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
10277  #if !CYTHON_ASSUME_SAFE_MACROS
10278  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 527, __pyx_L1_error)
10279  #endif
10280  if (__pyx_t_2 >= __pyx_temp) break;
10281  }
10282  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
10283  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 527, __pyx_L1_error)
10284  #else
10285  __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 527, __pyx_L1_error)
10286  __Pyx_GOTREF(__pyx_t_4);
10287  #endif
10288  } else {
10289  {
10290  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
10291  #if !CYTHON_ASSUME_SAFE_MACROS
10292  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 527, __pyx_L1_error)
10293  #endif
10294  if (__pyx_t_2 >= __pyx_temp) break;
10295  }
10296  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
10297  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 527, __pyx_L1_error)
10298  #else
10299  __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 527, __pyx_L1_error)
10300  __Pyx_GOTREF(__pyx_t_4);
10301  #endif
10302  }
10303  } else {
10304  __pyx_t_4 = __pyx_t_3(__pyx_t_1);
10305  if (unlikely(!__pyx_t_4)) {
10306  PyObject* exc_type = PyErr_Occurred();
10307  if (exc_type) {
10308  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
10309  else __PYX_ERR(0, 527, __pyx_L1_error)
10310  }
10311  break;
10312  }
10313  __Pyx_GOTREF(__pyx_t_4);
10314  }
10315  __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_4);
10316  __pyx_t_4 = 0;
10317 
10318  /* "PyClical.pyx":528
10319  * cdef vector[scalar_t] v
10320  * for s in lst:
10321  * v.push_back(<scalar_t>s) # <<<<<<<<<<<<<<
10322  * return v
10323  *
10324  */
10325  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_s); if (unlikely((__pyx_t_5 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error)
10326  try {
10327  __pyx_v_v.push_back(((scalar_t)__pyx_t_5));
10328  } catch(...) {
10329  __Pyx_CppExn2PyErr();
10330  __PYX_ERR(0, 528, __pyx_L1_error)
10331  }
10332 
10333  /* "PyClical.pyx":527
10334  * """
10335  * cdef vector[scalar_t] v
10336  * for s in lst: # <<<<<<<<<<<<<<
10337  * v.push_back(<scalar_t>s)
10338  * return v
10339  */
10340  }
10341  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10342 
10343  /* "PyClical.pyx":529
10344  * for s in lst:
10345  * v.push_back(<scalar_t>s)
10346  * return v # <<<<<<<<<<<<<<
10347  *
10348  * # Forward reference.
10349  */
10350  __pyx_r = __pyx_v_v;
10351  goto __pyx_L0;
10352 
10353  /* "PyClical.pyx":522
10354  * return glucat.max_pos( toIndexSet(obj) )
10355  *
10356  * cdef inline vector[scalar_t] list_to_vector(lst): # <<<<<<<<<<<<<<
10357  * """
10358  * Create a C++ std:vector[scalar_t] from an iterable Python object.
10359  */
10360 
10361  /* function exit code */
10362  __pyx_L1_error:;
10363  __Pyx_XDECREF(__pyx_t_1);
10364  __Pyx_XDECREF(__pyx_t_4);
10365  __Pyx_AddTraceback("PyClical.list_to_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
10366  __Pyx_pretend_to_initialize(&__pyx_r);
10367  __pyx_L0:;
10368  __Pyx_XDECREF(__pyx_v_s);
10369  __Pyx_RefNannyFinishContext();
10370  return __pyx_r;
10371  }
10372 
10373  /* "PyClical.pyx":534
10374  * cdef class clifford
10375  *
10376  * cdef inline Clifford toClifford(obj): # <<<<<<<<<<<<<<
10377  * return clifford(obj).instance[0]
10378  *
10379  */
10380 
10381  static CYTHON_INLINE Clifford __pyx_f_8PyClical_toClifford(PyObject *__pyx_v_obj) {
10382  Clifford __pyx_r;
10383  __Pyx_RefNannyDeclarations
10384  PyObject *__pyx_t_1 = NULL;
10385  int __pyx_lineno = 0;
10386  const char *__pyx_filename = NULL;
10387  int __pyx_clineno = 0;
10388  __Pyx_RefNannySetupContext("toClifford", 1);
10389 
10390  /* "PyClical.pyx":535
10391  *
10392  * cdef inline Clifford toClifford(obj):
10393  * return clifford(obj).instance[0] # <<<<<<<<<<<<<<
10394  *
10395  * cdef class clifford:
10396  */
10397  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)
10398  __Pyx_GOTREF(__pyx_t_1);
10399  __pyx_r = (((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1)->instance[0]);
10400  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10401  goto __pyx_L0;
10402 
10403  /* "PyClical.pyx":534
10404  * cdef class clifford
10405  *
10406  * cdef inline Clifford toClifford(obj): # <<<<<<<<<<<<<<
10407  * return clifford(obj).instance[0]
10408  *
10409  */
10410 
10411  /* function exit code */
10412  __pyx_L1_error:;
10413  __Pyx_XDECREF(__pyx_t_1);
10414  __Pyx_AddTraceback("PyClical.toClifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
10415  __Pyx_pretend_to_initialize(&__pyx_r);
10416  __pyx_L0:;
10417  __Pyx_RefNannyFinishContext();
10418  return __pyx_r;
10419  }
10420 
10421  /* "PyClical.pyx":543
10422  * cdef Clifford *instance # Wrapped instance of C++ class Clifford.
10423  *
10424  * cdef inline wrap(clifford self, Clifford other): # <<<<<<<<<<<<<<
10425  * """
10426  * Wrap an instance of the C++ class Clifford.
10427  */
10428 
10429  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_8clifford_wrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, Clifford __pyx_v_other) {
10430  PyObject *__pyx_r = NULL;
10431  __Pyx_RefNannyDeclarations
10432  __Pyx_RefNannySetupContext("wrap", 1);
10433 
10434  /* "PyClical.pyx":547
10435  * Wrap an instance of the C++ class Clifford.
10436  * """
10437  * self.instance[0] = other # <<<<<<<<<<<<<<
10438  * return self
10439  *
10440  */
10441  (__pyx_v_self->instance[0]) = __pyx_v_other;
10442 
10443  /* "PyClical.pyx":548
10444  * """
10445  * self.instance[0] = other
10446  * return self # <<<<<<<<<<<<<<
10447  *
10448  * cdef inline Clifford unwrap(clifford self):
10449  */
10450  __Pyx_XDECREF(__pyx_r);
10451  __Pyx_INCREF((PyObject *)__pyx_v_self);
10452  __pyx_r = ((PyObject *)__pyx_v_self);
10453  goto __pyx_L0;
10454 
10455  /* "PyClical.pyx":543
10456  * cdef Clifford *instance # Wrapped instance of C++ class Clifford.
10457  *
10458  * cdef inline wrap(clifford self, Clifford other): # <<<<<<<<<<<<<<
10459  * """
10460  * Wrap an instance of the C++ class Clifford.
10461  */
10462 
10463  /* function exit code */
10464  __pyx_L0:;
10465  __Pyx_XGIVEREF(__pyx_r);
10466  __Pyx_RefNannyFinishContext();
10467  return __pyx_r;
10468  }
10469 
10470  /* "PyClical.pyx":550
10471  * return self
10472  *
10473  * cdef inline Clifford unwrap(clifford self): # <<<<<<<<<<<<<<
10474  * """
10475  * Return the wrapped C++ Clifford instance.
10476  */
10477 
10478  static CYTHON_INLINE Clifford __pyx_f_8PyClical_8clifford_unwrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10479  Clifford __pyx_r;
10480 
10481  /* "PyClical.pyx":554
10482  * Return the wrapped C++ Clifford instance.
10483  * """
10484  * return self.instance[0] # <<<<<<<<<<<<<<
10485  *
10486  * cpdef copy(clifford self):
10487  */
10488  __pyx_r = (__pyx_v_self->instance[0]);
10489  goto __pyx_L0;
10490 
10491  /* "PyClical.pyx":550
10492  * return self
10493  *
10494  * cdef inline Clifford unwrap(clifford self): # <<<<<<<<<<<<<<
10495  * """
10496  * Return the wrapped C++ Clifford instance.
10497  */
10498 
10499  /* function exit code */
10500  __pyx_L0:;
10501  return __pyx_r;
10502  }
10503 
10504  /* "PyClical.pyx":556
10505  * return self.instance[0]
10506  *
10507  * cpdef copy(clifford self): # <<<<<<<<<<<<<<
10508  * """
10509  * Copy this clifford object.
10510  */
10511 
10512  static PyObject *__pyx_pw_8PyClical_8clifford_1copy(PyObject *__pyx_v_self,
10513 #if CYTHON_METH_FASTCALL
10514 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10515 #else
10516 PyObject *__pyx_args, PyObject *__pyx_kwds
10517 #endif
10518 ); /*proto*/
10519  static PyObject *__pyx_f_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, int __pyx_skip_dispatch) {
10520  PyObject *__pyx_r = NULL;
10521  __Pyx_RefNannyDeclarations
10522  PyObject *__pyx_t_1 = NULL;
10523  PyObject *__pyx_t_2 = NULL;
10524  PyObject *__pyx_t_3 = NULL;
10525  PyObject *__pyx_t_4 = NULL;
10526  int __pyx_t_5;
10527  int __pyx_lineno = 0;
10528  const char *__pyx_filename = NULL;
10529  int __pyx_clineno = 0;
10530  __Pyx_RefNannySetupContext("copy", 1);
10531  /* Check if called by wrapper */
10532  if (unlikely(__pyx_skip_dispatch)) ;
10533  /* Check if overridden in Python */
10534  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
10535  #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
10536  static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
10537  if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
10538  PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
10539  #endif
10540  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error)
10541  __Pyx_GOTREF(__pyx_t_1);
10542  if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_8PyClical_8clifford_1copy)) {
10543  __Pyx_XDECREF(__pyx_r);
10544  __Pyx_INCREF(__pyx_t_1);
10545  __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
10546  __pyx_t_5 = 0;
10547  #if CYTHON_UNPACK_METHODS
10548  if (unlikely(PyMethod_Check(__pyx_t_3))) {
10549  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
10550  if (likely(__pyx_t_4)) {
10551  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
10552  __Pyx_INCREF(__pyx_t_4);
10553  __Pyx_INCREF(function);
10554  __Pyx_DECREF_SET(__pyx_t_3, function);
10555  __pyx_t_5 = 1;
10556  }
10557  }
10558  #endif
10559  {
10560  PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
10561  __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
10562  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
10563  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error)
10564  __Pyx_GOTREF(__pyx_t_2);
10565  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10566  }
10567  __pyx_r = __pyx_t_2;
10568  __pyx_t_2 = 0;
10569  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10570  goto __pyx_L0;
10571  }
10572  #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
10573  __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
10574  __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
10575  if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
10576  __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
10577  }
10578  #endif
10579  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10580  #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
10581  }
10582  #endif
10583  }
10584 
10585  /* "PyClical.pyx":563
10586  * {2}
10587  * """
10588  * return clifford(self) # <<<<<<<<<<<<<<
10589  *
10590  * def __cinit__(self, other = 0, ixt = None):
10591  */
10592  __Pyx_XDECREF(__pyx_r);
10593  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L1_error)
10594  __Pyx_GOTREF(__pyx_t_1);
10595  __pyx_r = __pyx_t_1;
10596  __pyx_t_1 = 0;
10597  goto __pyx_L0;
10598 
10599  /* "PyClical.pyx":556
10600  * return self.instance[0]
10601  *
10602  * cpdef copy(clifford self): # <<<<<<<<<<<<<<
10603  * """
10604  * Copy this clifford object.
10605  */
10606 
10607  /* function exit code */
10608  __pyx_L1_error:;
10609  __Pyx_XDECREF(__pyx_t_1);
10610  __Pyx_XDECREF(__pyx_t_2);
10611  __Pyx_XDECREF(__pyx_t_3);
10612  __Pyx_XDECREF(__pyx_t_4);
10613  __Pyx_AddTraceback("PyClical.clifford.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
10614  __pyx_r = 0;
10615  __pyx_L0:;
10616  __Pyx_XGIVEREF(__pyx_r);
10617  __Pyx_RefNannyFinishContext();
10618  return __pyx_r;
10619  }
10620 
10621  /* Python wrapper */
10622  static PyObject *__pyx_pw_8PyClical_8clifford_1copy(PyObject *__pyx_v_self,
10623 #if CYTHON_METH_FASTCALL
10624 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10625 #else
10626 PyObject *__pyx_args, PyObject *__pyx_kwds
10627 #endif
10628 ); /*proto*/
10629  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_copy, "\n Copy this clifford object.\n\n >>> x=clifford(\"1{2}\"); y=x.copy(); print(y)\n {2}\n ");
10630  static PyMethodDef __pyx_mdef_8PyClical_8clifford_1copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_1copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_copy};
10631  static PyObject *__pyx_pw_8PyClical_8clifford_1copy(PyObject *__pyx_v_self,
10632 #if CYTHON_METH_FASTCALL
10633 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
10634 #else
10635 PyObject *__pyx_args, PyObject *__pyx_kwds
10636 #endif
10637 ) {
10638  #if !CYTHON_METH_FASTCALL
10639  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10640  #endif
10641  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10642  PyObject *__pyx_r = 0;
10643  __Pyx_RefNannyDeclarations
10644  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
10645  #if !CYTHON_METH_FASTCALL
10646  #if CYTHON_ASSUME_SAFE_MACROS
10647  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10648  #else
10649  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
10650  #endif
10651  #endif
10652  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
10653  if (unlikely(__pyx_nargs > 0)) {
10654  __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
10655  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
10656  __pyx_r = __pyx_pf_8PyClical_8clifford_copy(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10657 
10658  /* function exit code */
10659  __Pyx_RefNannyFinishContext();
10660  return __pyx_r;
10661  }
10662 
10663  static PyObject *__pyx_pf_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10664  PyObject *__pyx_r = NULL;
10665  __Pyx_RefNannyDeclarations
10666  PyObject *__pyx_t_1 = NULL;
10667  int __pyx_lineno = 0;
10668  const char *__pyx_filename = NULL;
10669  int __pyx_clineno = 0;
10670  __Pyx_RefNannySetupContext("copy", 1);
10671  __Pyx_XDECREF(__pyx_r);
10672  __pyx_t_1 = __pyx_f_8PyClical_8clifford_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error)
10673  __Pyx_GOTREF(__pyx_t_1);
10674  __pyx_r = __pyx_t_1;
10675  __pyx_t_1 = 0;
10676  goto __pyx_L0;
10677 
10678  /* function exit code */
10679  __pyx_L1_error:;
10680  __Pyx_XDECREF(__pyx_t_1);
10681  __Pyx_AddTraceback("PyClical.clifford.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
10682  __pyx_r = NULL;
10683  __pyx_L0:;
10684  __Pyx_XGIVEREF(__pyx_r);
10685  __Pyx_RefNannyFinishContext();
10686  return __pyx_r;
10687  }
10688 
10689  /* "PyClical.pyx":565
10690  * return clifford(self)
10691  *
10692  * def __cinit__(self, other = 0, ixt = None): # <<<<<<<<<<<<<<
10693  * """
10694  * Construct an object of type clifford.
10695  */
10696 
10697  /* Python wrapper */
10698  static int __pyx_pw_8PyClical_8clifford_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
10699  static int __pyx_pw_8PyClical_8clifford_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
10700  PyObject *__pyx_v_other = 0;
10701  PyObject *__pyx_v_ixt = 0;
10702  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
10703  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
10704  PyObject* values[2] = {0,0};
10705  int __pyx_lineno = 0;
10706  const char *__pyx_filename = NULL;
10707  int __pyx_clineno = 0;
10708  int __pyx_r;
10709  __Pyx_RefNannyDeclarations
10710  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
10711  #if CYTHON_ASSUME_SAFE_MACROS
10712  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
10713  #else
10714  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
10715  #endif
10716  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
10717  {
10718  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_ixt,0};
10719  values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_0));
10720  values[1] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));
10721  if (__pyx_kwds) {
10722  Py_ssize_t kw_args;
10723  switch (__pyx_nargs) {
10724  case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
10725  CYTHON_FALLTHROUGH;
10726  case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
10727  CYTHON_FALLTHROUGH;
10728  case 0: break;
10729  default: goto __pyx_L5_argtuple_error;
10730  }
10731  kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
10732  switch (__pyx_nargs) {
10733  case 0:
10734  if (kw_args > 0) {
10735  PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other);
10736  if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
10737  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 565, __pyx_L3_error)
10738  }
10739  CYTHON_FALLTHROUGH;
10740  case 1:
10741  if (kw_args > 0) {
10742  PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ixt);
10743  if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
10744  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 565, __pyx_L3_error)
10745  }
10746  }
10747  if (unlikely(kw_args > 0)) {
10748  const Py_ssize_t kwd_pos_args = __pyx_nargs;
10749  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 565, __pyx_L3_error)
10750  }
10751  } else {
10752  switch (__pyx_nargs) {
10753  case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
10754  CYTHON_FALLTHROUGH;
10755  case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
10756  CYTHON_FALLTHROUGH;
10757  case 0: break;
10758  default: goto __pyx_L5_argtuple_error;
10759  }
10760  }
10761  __pyx_v_other = values[0];
10762  __pyx_v_ixt = values[1];
10763  }
10764  goto __pyx_L6_skip;
10765  __pyx_L5_argtuple_error:;
10766  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 565, __pyx_L3_error)
10767  __pyx_L6_skip:;
10768  goto __pyx_L4_argument_unpacking_done;
10769  __pyx_L3_error:;
10770  {
10771  Py_ssize_t __pyx_temp;
10772  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10773  __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
10774  }
10775  }
10776  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10777  __Pyx_RefNannyFinishContext();
10778  return -1;
10779  __pyx_L4_argument_unpacking_done:;
10780  __pyx_r = __pyx_pf_8PyClical_8clifford_2__cinit__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_other, __pyx_v_ixt);
10781 
10782  /* function exit code */
10783  {
10784  Py_ssize_t __pyx_temp;
10785  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
10786  __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
10787  }
10788  }
10789  __Pyx_RefNannyFinishContext();
10790  return __pyx_r;
10791  }
10792 
10793  static int __pyx_pf_8PyClical_8clifford_2__cinit__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_ixt) {
10794  PyObject *__pyx_v_error_msg_prefix = NULL;
10795  PyObject *__pyx_v_bother = NULL;
10796  PyObject *__pyx_v_err = NULL;
10797  int __pyx_r;
10798  __Pyx_RefNannyDeclarations
10799  int __pyx_t_1;
10800  PyObject *__pyx_t_2 = NULL;
10801  PyObject *__pyx_t_3 = NULL;
10802  PyObject *__pyx_t_4 = NULL;
10803  Clifford __pyx_t_5;
10804  Clifford *__pyx_t_6;
10805  IndexSet __pyx_t_7;
10806  PyObject *__pyx_t_8 = NULL;
10807  PyObject *__pyx_t_9 = NULL;
10808  scalar_t __pyx_t_10;
10809  PyObject *__pyx_t_11 = NULL;
10810  PyObject *__pyx_t_12 = NULL;
10811  PyObject *__pyx_t_13 = NULL;
10812  PyObject *__pyx_t_14 = NULL;
10813  int __pyx_t_15;
10814  char *__pyx_t_16;
10815  PyObject *__pyx_t_17 = NULL;
10816  PyObject *__pyx_t_18 = NULL;
10817  PyObject *__pyx_t_19 = NULL;
10818  int __pyx_t_20;
10819  char const *__pyx_t_21;
10820  PyObject *__pyx_t_22 = NULL;
10821  PyObject *__pyx_t_23 = NULL;
10822  PyObject *__pyx_t_24 = NULL;
10823  std::vector<scalar_t> __pyx_t_25;
10824  int __pyx_lineno = 0;
10825  const char *__pyx_filename = NULL;
10826  int __pyx_clineno = 0;
10827  __Pyx_RefNannySetupContext("__cinit__", 1);
10828 
10829  /* "PyClical.pyx":588
10830  * 2{1}+3{2}
10831  * """
10832  * error_msg_prefix = "Cannot initialize clifford object from" # <<<<<<<<<<<<<<
10833  * if ixt is None:
10834  * try:
10835  */
10836  __Pyx_INCREF(__pyx_kp_u_Cannot_initialize_clifford_objec);
10837  __pyx_v_error_msg_prefix = __pyx_kp_u_Cannot_initialize_clifford_objec;
10838 
10839  /* "PyClical.pyx":589
10840  * """
10841  * error_msg_prefix = "Cannot initialize clifford object from"
10842  * if ixt is None: # <<<<<<<<<<<<<<
10843  * try:
10844  * if isinstance(other, clifford):
10845  */
10846  __pyx_t_1 = (__pyx_v_ixt == Py_None);
10847  if (__pyx_t_1) {
10848 
10849  /* "PyClical.pyx":590
10850  * error_msg_prefix = "Cannot initialize clifford object from"
10851  * if ixt is None:
10852  * try: # <<<<<<<<<<<<<<
10853  * if isinstance(other, clifford):
10854  * self.instance = new Clifford((<clifford>other).unwrap())
10855  */
10856  {
10857  __Pyx_PyThreadState_declare
10858  __Pyx_PyThreadState_assign
10859  __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
10860  __Pyx_XGOTREF(__pyx_t_2);
10861  __Pyx_XGOTREF(__pyx_t_3);
10862  __Pyx_XGOTREF(__pyx_t_4);
10863  /*try:*/ {
10864 
10865  /* "PyClical.pyx":591
10866  * if ixt is None:
10867  * try:
10868  * if isinstance(other, clifford): # <<<<<<<<<<<<<<
10869  * self.instance = new Clifford((<clifford>other).unwrap())
10870  * elif isinstance(other, index_set):
10871  */
10872  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_8PyClical_clifford);
10873  if (__pyx_t_1) {
10874 
10875  /* "PyClical.pyx":592
10876  * try:
10877  * if isinstance(other, clifford):
10878  * self.instance = new Clifford((<clifford>other).unwrap()) # <<<<<<<<<<<<<<
10879  * elif isinstance(other, index_set):
10880  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
10881  */
10882  __pyx_t_5 = __pyx_f_8PyClical_8clifford_unwrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_other)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L4_error)
10883  try {
10884  __pyx_t_6 = new Clifford(__pyx_t_5);
10885  } catch(...) {
10886  __Pyx_CppExn2PyErr();
10887  __PYX_ERR(0, 592, __pyx_L4_error)
10888  }
10889  __pyx_v_self->instance = __pyx_t_6;
10890 
10891  /* "PyClical.pyx":591
10892  * if ixt is None:
10893  * try:
10894  * if isinstance(other, clifford): # <<<<<<<<<<<<<<
10895  * self.instance = new Clifford((<clifford>other).unwrap())
10896  * elif isinstance(other, index_set):
10897  */
10898  goto __pyx_L10;
10899  }
10900 
10901  /* "PyClical.pyx":593
10902  * if isinstance(other, clifford):
10903  * self.instance = new Clifford((<clifford>other).unwrap())
10904  * elif isinstance(other, index_set): # <<<<<<<<<<<<<<
10905  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
10906  * elif isinstance(other, numbers.Real):
10907  */
10908  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_8PyClical_index_set);
10909  if (__pyx_t_1) {
10910 
10911  /* "PyClical.pyx":594
10912  * self.instance = new Clifford((<clifford>other).unwrap())
10913  * elif isinstance(other, index_set):
10914  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0) # <<<<<<<<<<<<<<
10915  * elif isinstance(other, numbers.Real):
10916  * self.instance = new Clifford(<scalar_t>other)
10917  */
10918  __pyx_t_7 = __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_other)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 594, __pyx_L4_error)
10919  try {
10920  __pyx_t_6 = new Clifford(__pyx_t_7, ((scalar_t)1.0));
10921  } catch(...) {
10922  __Pyx_CppExn2PyErr();
10923  __PYX_ERR(0, 594, __pyx_L4_error)
10924  }
10925  __pyx_v_self->instance = __pyx_t_6;
10926 
10927  /* "PyClical.pyx":593
10928  * if isinstance(other, clifford):
10929  * self.instance = new Clifford((<clifford>other).unwrap())
10930  * elif isinstance(other, index_set): # <<<<<<<<<<<<<<
10931  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
10932  * elif isinstance(other, numbers.Real):
10933  */
10934  goto __pyx_L10;
10935  }
10936 
10937  /* "PyClical.pyx":595
10938  * elif isinstance(other, index_set):
10939  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
10940  * elif isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
10941  * self.instance = new Clifford(<scalar_t>other)
10942  * elif isinstance(other, str):
10943  */
10944  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numbers); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 595, __pyx_L4_error)
10945  __Pyx_GOTREF(__pyx_t_8);
10946  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_Real); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 595, __pyx_L4_error)
10947  __Pyx_GOTREF(__pyx_t_9);
10948  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
10949  __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_9); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 595, __pyx_L4_error)
10950  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10951  if (__pyx_t_1) {
10952 
10953  /* "PyClical.pyx":596
10954  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
10955  * elif isinstance(other, numbers.Real):
10956  * self.instance = new Clifford(<scalar_t>other) # <<<<<<<<<<<<<<
10957  * elif isinstance(other, str):
10958  * try:
10959  */
10960  __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_other); if (unlikely((__pyx_t_10 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 596, __pyx_L4_error)
10961  try {
10962  __pyx_t_6 = new Clifford(((scalar_t)__pyx_t_10));
10963  } catch(...) {
10964  __Pyx_CppExn2PyErr();
10965  __PYX_ERR(0, 596, __pyx_L4_error)
10966  }
10967  __pyx_v_self->instance = __pyx_t_6;
10968 
10969  /* "PyClical.pyx":595
10970  * elif isinstance(other, index_set):
10971  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
10972  * elif isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
10973  * self.instance = new Clifford(<scalar_t>other)
10974  * elif isinstance(other, str):
10975  */
10976  goto __pyx_L10;
10977  }
10978 
10979  /* "PyClical.pyx":597
10980  * elif isinstance(other, numbers.Real):
10981  * self.instance = new Clifford(<scalar_t>other)
10982  * elif isinstance(other, str): # <<<<<<<<<<<<<<
10983  * try:
10984  * bother = other.encode("UTF-8")
10985  */
10986  __pyx_t_1 = PyUnicode_Check(__pyx_v_other);
10987  if (likely(__pyx_t_1)) {
10988 
10989  /* "PyClical.pyx":598
10990  * self.instance = new Clifford(<scalar_t>other)
10991  * elif isinstance(other, str):
10992  * try: # <<<<<<<<<<<<<<
10993  * bother = other.encode("UTF-8")
10994  * self.instance = new Clifford(<char *>bother)
10995  */
10996  {
10997  __Pyx_PyThreadState_declare
10998  __Pyx_PyThreadState_assign
10999  __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
11000  __Pyx_XGOTREF(__pyx_t_11);
11001  __Pyx_XGOTREF(__pyx_t_12);
11002  __Pyx_XGOTREF(__pyx_t_13);
11003  /*try:*/ {
11004 
11005  /* "PyClical.pyx":599
11006  * elif isinstance(other, str):
11007  * try:
11008  * bother = other.encode("UTF-8") # <<<<<<<<<<<<<<
11009  * self.instance = new Clifford(<char *>bother)
11010  * except RuntimeError:
11011  */
11012  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L11_error)
11013  __Pyx_GOTREF(__pyx_t_8);
11014  __pyx_t_14 = NULL;
11015  __pyx_t_15 = 0;
11016  #if CYTHON_UNPACK_METHODS
11017  if (likely(PyMethod_Check(__pyx_t_8))) {
11018  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_8);
11019  if (likely(__pyx_t_14)) {
11020  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
11021  __Pyx_INCREF(__pyx_t_14);
11022  __Pyx_INCREF(function);
11023  __Pyx_DECREF_SET(__pyx_t_8, function);
11024  __pyx_t_15 = 1;
11025  }
11026  }
11027  #endif
11028  {
11029  PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_kp_u_UTF_8};
11030  __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15);
11031  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
11032  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 599, __pyx_L11_error)
11033  __Pyx_GOTREF(__pyx_t_9);
11034  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11035  }
11036  __pyx_v_bother = __pyx_t_9;
11037  __pyx_t_9 = 0;
11038 
11039  /* "PyClical.pyx":600
11040  * try:
11041  * bother = other.encode("UTF-8")
11042  * self.instance = new Clifford(<char *>bother) # <<<<<<<<<<<<<<
11043  * except RuntimeError:
11044  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
11045  */
11046  __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_bother); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 600, __pyx_L11_error)
11047  try {
11048  __pyx_t_6 = new Clifford(((char *)__pyx_t_16));
11049  } catch(...) {
11050  __Pyx_CppExn2PyErr();
11051  __PYX_ERR(0, 600, __pyx_L11_error)
11052  }
11053  __pyx_v_self->instance = __pyx_t_6;
11054 
11055  /* "PyClical.pyx":598
11056  * self.instance = new Clifford(<scalar_t>other)
11057  * elif isinstance(other, str):
11058  * try: # <<<<<<<<<<<<<<
11059  * bother = other.encode("UTF-8")
11060  * self.instance = new Clifford(<char *>bother)
11061  */
11062  }
11063  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
11064  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
11065  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
11066  goto __pyx_L16_try_end;
11067  __pyx_L11_error:;
11068  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
11069  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
11070  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
11071 
11072  /* "PyClical.pyx":601
11073  * bother = other.encode("UTF-8")
11074  * self.instance = new Clifford(<char *>bother)
11075  * except RuntimeError: # <<<<<<<<<<<<<<
11076  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
11077  * else:
11078  */
11079  __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
11080  if (__pyx_t_15) {
11081  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11082  if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_14) < 0) __PYX_ERR(0, 601, __pyx_L13_except_error)
11083  __Pyx_XGOTREF(__pyx_t_9);
11084  __Pyx_XGOTREF(__pyx_t_8);
11085  __Pyx_XGOTREF(__pyx_t_14);
11086 
11087  /* "PyClical.pyx":602
11088  * self.instance = new Clifford(<char *>bother)
11089  * except RuntimeError:
11090  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".") # <<<<<<<<<<<<<<
11091  * else:
11092  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
11093  */
11094  __pyx_t_17 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u_invalid_string); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 602, __pyx_L13_except_error)
11095  __Pyx_GOTREF(__pyx_t_17);
11096  __pyx_t_18 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 602, __pyx_L13_except_error)
11097  __Pyx_GOTREF(__pyx_t_18);
11098  __pyx_t_19 = PyNumber_Add(__pyx_t_17, __pyx_t_18); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 602, __pyx_L13_except_error)
11099  __Pyx_GOTREF(__pyx_t_19);
11100  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
11101  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
11102  __pyx_t_18 = PyNumber_Add(__pyx_t_19, __pyx_kp_u_); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 602, __pyx_L13_except_error)
11103  __Pyx_GOTREF(__pyx_t_18);
11104  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
11105  __pyx_t_19 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_18); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 602, __pyx_L13_except_error)
11106  __Pyx_GOTREF(__pyx_t_19);
11107  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
11108  __Pyx_Raise(__pyx_t_19, 0, 0, 0);
11109  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
11110  __PYX_ERR(0, 602, __pyx_L13_except_error)
11111  }
11112  goto __pyx_L13_except_error;
11113 
11114  /* "PyClical.pyx":598
11115  * self.instance = new Clifford(<scalar_t>other)
11116  * elif isinstance(other, str):
11117  * try: # <<<<<<<<<<<<<<
11118  * bother = other.encode("UTF-8")
11119  * self.instance = new Clifford(<char *>bother)
11120  */
11121  __pyx_L13_except_error:;
11122  __Pyx_XGIVEREF(__pyx_t_11);
11123  __Pyx_XGIVEREF(__pyx_t_12);
11124  __Pyx_XGIVEREF(__pyx_t_13);
11125  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
11126  goto __pyx_L4_error;
11127  __pyx_L16_try_end:;
11128  }
11129 
11130  /* "PyClical.pyx":597
11131  * elif isinstance(other, numbers.Real):
11132  * self.instance = new Clifford(<scalar_t>other)
11133  * elif isinstance(other, str): # <<<<<<<<<<<<<<
11134  * try:
11135  * bother = other.encode("UTF-8")
11136  */
11137  goto __pyx_L10;
11138  }
11139 
11140  /* "PyClical.pyx":604
11141  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
11142  * else:
11143  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".") # <<<<<<<<<<<<<<
11144  * except RuntimeError as err:
11145  * raise ValueError(error_msg_prefix + " " + str(type(other))
11146  */
11147  /*else*/ {
11148  __pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u__2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 604, __pyx_L4_error)
11149  __Pyx_GOTREF(__pyx_t_14);
11150  __pyx_t_8 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_other))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 604, __pyx_L4_error)
11151  __Pyx_GOTREF(__pyx_t_8);
11152  __pyx_t_9 = PyNumber_Add(__pyx_t_14, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 604, __pyx_L4_error)
11153  __Pyx_GOTREF(__pyx_t_9);
11154  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11155  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11156  __pyx_t_8 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_9, __pyx_kp_u_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 604, __pyx_L4_error)
11157  __Pyx_GOTREF(__pyx_t_8);
11158  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11159  __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 604, __pyx_L4_error)
11160  __Pyx_GOTREF(__pyx_t_9);
11161  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11162  __Pyx_Raise(__pyx_t_9, 0, 0, 0);
11163  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11164  __PYX_ERR(0, 604, __pyx_L4_error)
11165  }
11166  __pyx_L10:;
11167 
11168  /* "PyClical.pyx":590
11169  * error_msg_prefix = "Cannot initialize clifford object from"
11170  * if ixt is None:
11171  * try: # <<<<<<<<<<<<<<
11172  * if isinstance(other, clifford):
11173  * self.instance = new Clifford((<clifford>other).unwrap())
11174  */
11175  }
11176  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
11177  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
11178  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
11179  goto __pyx_L9_try_end;
11180  __pyx_L4_error:;
11181  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
11182  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
11183  __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
11184  __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
11185  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
11186  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
11187 
11188  /* "PyClical.pyx":605
11189  * else:
11190  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
11191  * except RuntimeError as err: # <<<<<<<<<<<<<<
11192  * raise ValueError(error_msg_prefix + " " + str(type(other))
11193  * + " value " + repr(other) + ":"
11194  */
11195  __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
11196  if (__pyx_t_15) {
11197  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11198  if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_14) < 0) __PYX_ERR(0, 605, __pyx_L6_except_error)
11199  __Pyx_XGOTREF(__pyx_t_9);
11200  __Pyx_XGOTREF(__pyx_t_8);
11201  __Pyx_XGOTREF(__pyx_t_14);
11202  __Pyx_INCREF(__pyx_t_8);
11203  __pyx_v_err = __pyx_t_8;
11204  /*try:*/ {
11205 
11206  /* "PyClical.pyx":606
11207  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
11208  * except RuntimeError as err:
11209  * raise ValueError(error_msg_prefix + " " + str(type(other)) # <<<<<<<<<<<<<<
11210  * + " value " + repr(other) + ":"
11211  * + "\n\t" + str(err))
11212  */
11213  __pyx_t_19 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u__2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 606, __pyx_L24_error)
11214  __Pyx_GOTREF(__pyx_t_19);
11215  __pyx_t_18 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_other))); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 606, __pyx_L24_error)
11216  __Pyx_GOTREF(__pyx_t_18);
11217  __pyx_t_17 = PyNumber_Add(__pyx_t_19, __pyx_t_18); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 606, __pyx_L24_error)
11218  __Pyx_GOTREF(__pyx_t_17);
11219  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
11220  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
11221 
11222  /* "PyClical.pyx":607
11223  * except RuntimeError as err:
11224  * raise ValueError(error_msg_prefix + " " + str(type(other))
11225  * + " value " + repr(other) + ":" # <<<<<<<<<<<<<<
11226  * + "\n\t" + str(err))
11227  * elif isinstance(ixt, index_set):
11228  */
11229  __pyx_t_18 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_17, __pyx_kp_u_value); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 607, __pyx_L24_error)
11230  __Pyx_GOTREF(__pyx_t_18);
11231  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
11232  __pyx_t_17 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 607, __pyx_L24_error)
11233  __Pyx_GOTREF(__pyx_t_17);
11234  __pyx_t_19 = PyNumber_Add(__pyx_t_18, __pyx_t_17); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 607, __pyx_L24_error)
11235  __Pyx_GOTREF(__pyx_t_19);
11236  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
11237  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
11238  __pyx_t_17 = PyNumber_Add(__pyx_t_19, __pyx_kp_u__3); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 607, __pyx_L24_error)
11239  __Pyx_GOTREF(__pyx_t_17);
11240  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
11241 
11242  /* "PyClical.pyx":608
11243  * raise ValueError(error_msg_prefix + " " + str(type(other))
11244  * + " value " + repr(other) + ":"
11245  * + "\n\t" + str(err)) # <<<<<<<<<<<<<<
11246  * elif isinstance(ixt, index_set):
11247  * if isinstance(other, numbers.Real):
11248  */
11249  __pyx_t_19 = PyNumber_Add(__pyx_t_17, __pyx_kp_u__4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 608, __pyx_L24_error)
11250  __Pyx_GOTREF(__pyx_t_19);
11251  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
11252  __pyx_t_17 = __Pyx_PyObject_Str(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 608, __pyx_L24_error)
11253  __Pyx_GOTREF(__pyx_t_17);
11254  __pyx_t_18 = PyNumber_Add(__pyx_t_19, __pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 608, __pyx_L24_error)
11255  __Pyx_GOTREF(__pyx_t_18);
11256  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
11257  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
11258 
11259  /* "PyClical.pyx":606
11260  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
11261  * except RuntimeError as err:
11262  * raise ValueError(error_msg_prefix + " " + str(type(other)) # <<<<<<<<<<<<<<
11263  * + " value " + repr(other) + ":"
11264  * + "\n\t" + str(err))
11265  */
11266  __pyx_t_17 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_18); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 606, __pyx_L24_error)
11267  __Pyx_GOTREF(__pyx_t_17);
11268  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
11269  __Pyx_Raise(__pyx_t_17, 0, 0, 0);
11270  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
11271  __PYX_ERR(0, 606, __pyx_L24_error)
11272  }
11273 
11274  /* "PyClical.pyx":605
11275  * else:
11276  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
11277  * except RuntimeError as err: # <<<<<<<<<<<<<<
11278  * raise ValueError(error_msg_prefix + " " + str(type(other))
11279  * + " value " + repr(other) + ":"
11280  */
11281  /*finally:*/ {
11282  __pyx_L24_error:;
11283  /*exception exit:*/{
11284  __Pyx_PyThreadState_declare
11285  __Pyx_PyThreadState_assign
11286  __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
11287  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
11288  __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
11289  __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
11290  if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
11291  if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
11292  __Pyx_XGOTREF(__pyx_t_13);
11293  __Pyx_XGOTREF(__pyx_t_12);
11294  __Pyx_XGOTREF(__pyx_t_11);
11295  __Pyx_XGOTREF(__pyx_t_22);
11296  __Pyx_XGOTREF(__pyx_t_23);
11297  __Pyx_XGOTREF(__pyx_t_24);
11298  __pyx_t_15 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
11299  {
11300  __Pyx_DECREF(__pyx_v_err); __pyx_v_err = 0;
11301  }
11302  if (PY_MAJOR_VERSION >= 3) {
11303  __Pyx_XGIVEREF(__pyx_t_22);
11304  __Pyx_XGIVEREF(__pyx_t_23);
11305  __Pyx_XGIVEREF(__pyx_t_24);
11306  __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
11307  }
11308  __Pyx_XGIVEREF(__pyx_t_13);
11309  __Pyx_XGIVEREF(__pyx_t_12);
11310  __Pyx_XGIVEREF(__pyx_t_11);
11311  __Pyx_ErrRestore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
11312  __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
11313  __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21;
11314  goto __pyx_L6_except_error;
11315  }
11316  }
11317  }
11318  goto __pyx_L6_except_error;
11319 
11320  /* "PyClical.pyx":590
11321  * error_msg_prefix = "Cannot initialize clifford object from"
11322  * if ixt is None:
11323  * try: # <<<<<<<<<<<<<<
11324  * if isinstance(other, clifford):
11325  * self.instance = new Clifford((<clifford>other).unwrap())
11326  */
11327  __pyx_L6_except_error:;
11328  __Pyx_XGIVEREF(__pyx_t_2);
11329  __Pyx_XGIVEREF(__pyx_t_3);
11330  __Pyx_XGIVEREF(__pyx_t_4);
11331  __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
11332  goto __pyx_L1_error;
11333  __pyx_L9_try_end:;
11334  }
11335 
11336  /* "PyClical.pyx":589
11337  * """
11338  * error_msg_prefix = "Cannot initialize clifford object from"
11339  * if ixt is None: # <<<<<<<<<<<<<<
11340  * try:
11341  * if isinstance(other, clifford):
11342  */
11343  goto __pyx_L3;
11344  }
11345 
11346  /* "PyClical.pyx":609
11347  * + " value " + repr(other) + ":"
11348  * + "\n\t" + str(err))
11349  * elif isinstance(ixt, index_set): # <<<<<<<<<<<<<<
11350  * if isinstance(other, numbers.Real):
11351  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11352  */
11353  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ixt, __pyx_ptype_8PyClical_index_set);
11354  if (likely(__pyx_t_1)) {
11355 
11356  /* "PyClical.pyx":610
11357  * + "\n\t" + str(err))
11358  * elif isinstance(ixt, index_set):
11359  * if isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
11360  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11361  * elif isinstance(other, collections.abc.Sequence):
11362  */
11363  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_numbers); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 610, __pyx_L1_error)
11364  __Pyx_GOTREF(__pyx_t_14);
11365  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_Real); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 610, __pyx_L1_error)
11366  __Pyx_GOTREF(__pyx_t_8);
11367  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11368  __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_8); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 610, __pyx_L1_error)
11369  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11370  if (__pyx_t_1) {
11371 
11372  /* "PyClical.pyx":611
11373  * elif isinstance(ixt, index_set):
11374  * if isinstance(other, numbers.Real):
11375  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other) # <<<<<<<<<<<<<<
11376  * elif isinstance(other, collections.abc.Sequence):
11377  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
11378  */
11379  __pyx_t_7 = __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_ixt)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 611, __pyx_L1_error)
11380  __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_other); if (unlikely((__pyx_t_10 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 611, __pyx_L1_error)
11381  try {
11382  __pyx_t_6 = new Clifford(__pyx_t_7, ((scalar_t)__pyx_t_10));
11383  } catch(...) {
11384  __Pyx_CppExn2PyErr();
11385  __PYX_ERR(0, 611, __pyx_L1_error)
11386  }
11387  __pyx_v_self->instance = __pyx_t_6;
11388 
11389  /* "PyClical.pyx":610
11390  * + "\n\t" + str(err))
11391  * elif isinstance(ixt, index_set):
11392  * if isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
11393  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11394  * elif isinstance(other, collections.abc.Sequence):
11395  */
11396  goto __pyx_L30;
11397  }
11398 
11399  /* "PyClical.pyx":612
11400  * if isinstance(other, numbers.Real):
11401  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11402  * elif isinstance(other, collections.abc.Sequence): # <<<<<<<<<<<<<<
11403  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
11404  * else:
11405  */
11406  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_collections); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 612, __pyx_L1_error)
11407  __Pyx_GOTREF(__pyx_t_8);
11408  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_abc); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 612, __pyx_L1_error)
11409  __Pyx_GOTREF(__pyx_t_14);
11410  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11411  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 612, __pyx_L1_error)
11412  __Pyx_GOTREF(__pyx_t_8);
11413  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11414  __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_8); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 612, __pyx_L1_error)
11415  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11416  if (likely(__pyx_t_1)) {
11417 
11418  /* "PyClical.pyx":613
11419  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11420  * elif isinstance(other, collections.abc.Sequence):
11421  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap()) # <<<<<<<<<<<<<<
11422  * else:
11423  * raise TypeError(error_msg_prefix + " (" + str(type(other))
11424  */
11425  __pyx_t_25 = __pyx_f_8PyClical_list_to_vector(__pyx_v_other); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 613, __pyx_L1_error)
11426  __pyx_t_7 = __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_ixt)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 613, __pyx_L1_error)
11427  try {
11428  __pyx_t_6 = new Clifford(__pyx_t_25, __pyx_t_7);
11429  } catch(...) {
11430  __Pyx_CppExn2PyErr();
11431  __PYX_ERR(0, 613, __pyx_L1_error)
11432  }
11433  __pyx_v_self->instance = __pyx_t_6;
11434 
11435  /* "PyClical.pyx":612
11436  * if isinstance(other, numbers.Real):
11437  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11438  * elif isinstance(other, collections.abc.Sequence): # <<<<<<<<<<<<<<
11439  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
11440  * else:
11441  */
11442  goto __pyx_L30;
11443  }
11444 
11445  /* "PyClical.pyx":615
11446  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
11447  * else:
11448  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
11449  * + ", " + repr(ixt) + ").")
11450  * else:
11451  */
11452  /*else*/ {
11453  __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u__5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 615, __pyx_L1_error)
11454  __Pyx_GOTREF(__pyx_t_8);
11455  __pyx_t_14 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_other))); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 615, __pyx_L1_error)
11456  __Pyx_GOTREF(__pyx_t_14);
11457  __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 615, __pyx_L1_error)
11458  __Pyx_GOTREF(__pyx_t_9);
11459  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11460  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11461 
11462  /* "PyClical.pyx":616
11463  * else:
11464  * raise TypeError(error_msg_prefix + " (" + str(type(other))
11465  * + ", " + repr(ixt) + ").") # <<<<<<<<<<<<<<
11466  * else:
11467  * raise TypeError(error_msg_prefix + " (" + str(type(other))
11468  */
11469  __pyx_t_14 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_9, __pyx_kp_u__6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 616, __pyx_L1_error)
11470  __Pyx_GOTREF(__pyx_t_14);
11471  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11472  __pyx_t_9 = PyObject_Repr(__pyx_v_ixt); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 616, __pyx_L1_error)
11473  __Pyx_GOTREF(__pyx_t_9);
11474  __pyx_t_8 = PyNumber_Add(__pyx_t_14, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 616, __pyx_L1_error)
11475  __Pyx_GOTREF(__pyx_t_8);
11476  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11477  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11478  __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_kp_u__7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 616, __pyx_L1_error)
11479  __Pyx_GOTREF(__pyx_t_9);
11480  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11481 
11482  /* "PyClical.pyx":615
11483  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
11484  * else:
11485  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
11486  * + ", " + repr(ixt) + ").")
11487  * else:
11488  */
11489  __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 615, __pyx_L1_error)
11490  __Pyx_GOTREF(__pyx_t_8);
11491  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11492  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
11493  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11494  __PYX_ERR(0, 615, __pyx_L1_error)
11495  }
11496  __pyx_L30:;
11497 
11498  /* "PyClical.pyx":609
11499  * + " value " + repr(other) + ":"
11500  * + "\n\t" + str(err))
11501  * elif isinstance(ixt, index_set): # <<<<<<<<<<<<<<
11502  * if isinstance(other, numbers.Real):
11503  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
11504  */
11505  goto __pyx_L3;
11506  }
11507 
11508  /* "PyClical.pyx":618
11509  * + ", " + repr(ixt) + ").")
11510  * else:
11511  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
11512  * + ", " + str(type(ixt)) + ").")
11513  *
11514  */
11515  /*else*/ {
11516  __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u__5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 618, __pyx_L1_error)
11517  __Pyx_GOTREF(__pyx_t_8);
11518  __pyx_t_9 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_other))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 618, __pyx_L1_error)
11519  __Pyx_GOTREF(__pyx_t_9);
11520  __pyx_t_14 = PyNumber_Add(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 618, __pyx_L1_error)
11521  __Pyx_GOTREF(__pyx_t_14);
11522  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11523  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11524 
11525  /* "PyClical.pyx":619
11526  * else:
11527  * raise TypeError(error_msg_prefix + " (" + str(type(other))
11528  * + ", " + str(type(ixt)) + ").") # <<<<<<<<<<<<<<
11529  *
11530  * def __dealloc__(self):
11531  */
11532  __pyx_t_9 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_14, __pyx_kp_u__6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 619, __pyx_L1_error)
11533  __Pyx_GOTREF(__pyx_t_9);
11534  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11535  __pyx_t_14 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_ixt))); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 619, __pyx_L1_error)
11536  __Pyx_GOTREF(__pyx_t_14);
11537  __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 619, __pyx_L1_error)
11538  __Pyx_GOTREF(__pyx_t_8);
11539  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11540  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11541  __pyx_t_14 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_8, __pyx_kp_u__7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 619, __pyx_L1_error)
11542  __Pyx_GOTREF(__pyx_t_14);
11543  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11544 
11545  /* "PyClical.pyx":618
11546  * + ", " + repr(ixt) + ").")
11547  * else:
11548  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
11549  * + ", " + str(type(ixt)) + ").")
11550  *
11551  */
11552  __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 618, __pyx_L1_error)
11553  __Pyx_GOTREF(__pyx_t_8);
11554  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11555  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
11556  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11557  __PYX_ERR(0, 618, __pyx_L1_error)
11558  }
11559  __pyx_L3:;
11560 
11561  /* "PyClical.pyx":565
11562  * return clifford(self)
11563  *
11564  * def __cinit__(self, other = 0, ixt = None): # <<<<<<<<<<<<<<
11565  * """
11566  * Construct an object of type clifford.
11567  */
11568 
11569  /* function exit code */
11570  __pyx_r = 0;
11571  goto __pyx_L0;
11572  __pyx_L1_error:;
11573  __Pyx_XDECREF(__pyx_t_8);
11574  __Pyx_XDECREF(__pyx_t_9);
11575  __Pyx_XDECREF(__pyx_t_14);
11576  __Pyx_XDECREF(__pyx_t_17);
11577  __Pyx_XDECREF(__pyx_t_18);
11578  __Pyx_XDECREF(__pyx_t_19);
11579  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11580  __pyx_r = -1;
11581  __pyx_L0:;
11582  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
11583  __Pyx_XDECREF(__pyx_v_bother);
11584  __Pyx_XDECREF(__pyx_v_err);
11585  __Pyx_RefNannyFinishContext();
11586  return __pyx_r;
11587  }
11588 
11589  /* "PyClical.pyx":621
11590  * + ", " + str(type(ixt)) + ").")
11591  *
11592  * def __dealloc__(self): # <<<<<<<<<<<<<<
11593  * """
11594  * Clean up by deallocating the instance of C++ class Clifford.
11595  */
11596 
11597  /* Python wrapper */
11598  static void __pyx_pw_8PyClical_8clifford_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
11599  static void __pyx_pw_8PyClical_8clifford_5__dealloc__(PyObject *__pyx_v_self) {
11600  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11601  __Pyx_RefNannyDeclarations
11602  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
11603  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
11604  __pyx_pf_8PyClical_8clifford_4__dealloc__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
11605 
11606  /* function exit code */
11607  __Pyx_RefNannyFinishContext();
11608  }
11609 
11610  static void __pyx_pf_8PyClical_8clifford_4__dealloc__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
11611 
11612  /* "PyClical.pyx":625
11613  * Clean up by deallocating the instance of C++ class Clifford.
11614  * """
11615  * del self.instance # <<<<<<<<<<<<<<
11616  *
11617  * def __contains__(self, x):
11618  */
11619  delete __pyx_v_self->instance;
11620 
11621  /* "PyClical.pyx":621
11622  * + ", " + str(type(ixt)) + ").")
11623  *
11624  * def __dealloc__(self): # <<<<<<<<<<<<<<
11625  * """
11626  * Clean up by deallocating the instance of C++ class Clifford.
11627  */
11628 
11629  /* function exit code */
11630  }
11631 
11632  /* "PyClical.pyx":627
11633  * del self.instance
11634  *
11635  * def __contains__(self, x): # <<<<<<<<<<<<<<
11636  * """
11637  * Not applicable.
11638  */
11639 
11640  /* Python wrapper */
11641  static int __pyx_pw_8PyClical_8clifford_7__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
11642  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_6__contains__, "\n Not applicable.\n\n >>> x=clifford(index_set({-3,4,7})); -3 in x\n Traceback (most recent call last):\n ...\n TypeError: Not applicable.\n ");
11643  #if CYTHON_UPDATE_DESCRIPTOR_DOC
11644  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_6__contains__;
11645  #endif
11646  static int __pyx_pw_8PyClical_8clifford_7__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
11647  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11648  int __pyx_r;
11649  __Pyx_RefNannyDeclarations
11650  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
11651  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
11652  __pyx_r = __pyx_pf_8PyClical_8clifford_6__contains__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_x));
11653 
11654  /* function exit code */
11655  __Pyx_RefNannyFinishContext();
11656  return __pyx_r;
11657  }
11658 
11659  static int __pyx_pf_8PyClical_8clifford_6__contains__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x) {
11660  int __pyx_r;
11661  __Pyx_RefNannyDeclarations
11662  PyObject *__pyx_t_1 = NULL;
11663  int __pyx_lineno = 0;
11664  const char *__pyx_filename = NULL;
11665  int __pyx_clineno = 0;
11666  __Pyx_RefNannySetupContext("__contains__", 1);
11667 
11668  /* "PyClical.pyx":636
11669  * TypeError: Not applicable.
11670  * """
11671  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
11672  *
11673  * def __iter__(self):
11674  */
11675  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
11676  __Pyx_GOTREF(__pyx_t_1);
11677  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11678  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11679  __PYX_ERR(0, 636, __pyx_L1_error)
11680 
11681  /* "PyClical.pyx":627
11682  * del self.instance
11683  *
11684  * def __contains__(self, x): # <<<<<<<<<<<<<<
11685  * """
11686  * Not applicable.
11687  */
11688 
11689  /* function exit code */
11690  __pyx_L1_error:;
11691  __Pyx_XDECREF(__pyx_t_1);
11692  __Pyx_AddTraceback("PyClical.clifford.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11693  __pyx_r = -1;
11694  __Pyx_RefNannyFinishContext();
11695  return __pyx_r;
11696  }
11697 
11698  /* "PyClical.pyx":638
11699  * raise TypeError("Not applicable.")
11700  *
11701  * def __iter__(self): # <<<<<<<<<<<<<<
11702  * """
11703  * Not applicable.
11704  */
11705 
11706  /* Python wrapper */
11707  static PyObject *__pyx_pw_8PyClical_8clifford_9__iter__(PyObject *__pyx_v_self); /*proto*/
11708  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_8__iter__, "\n Not applicable.\n\n >>> for a in clifford(index_set({-3,4,7})):print(a, end=\",\")\n Traceback (most recent call last):\n ...\n TypeError: Not applicable.\n ");
11709  #if CYTHON_UPDATE_DESCRIPTOR_DOC
11710  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_8__iter__;
11711  #endif
11712  static PyObject *__pyx_pw_8PyClical_8clifford_9__iter__(PyObject *__pyx_v_self) {
11713  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11714  PyObject *__pyx_r = 0;
11715  __Pyx_RefNannyDeclarations
11716  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
11717  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
11718  __pyx_r = __pyx_pf_8PyClical_8clifford_8__iter__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
11719 
11720  /* function exit code */
11721  __Pyx_RefNannyFinishContext();
11722  return __pyx_r;
11723  }
11724 
11725  static PyObject *__pyx_pf_8PyClical_8clifford_8__iter__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
11726  PyObject *__pyx_r = NULL;
11727  __Pyx_RefNannyDeclarations
11728  PyObject *__pyx_t_1 = NULL;
11729  int __pyx_lineno = 0;
11730  const char *__pyx_filename = NULL;
11731  int __pyx_clineno = 0;
11732  __Pyx_RefNannySetupContext("__iter__", 1);
11733 
11734  /* "PyClical.pyx":647
11735  * TypeError: Not applicable.
11736  * """
11737  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
11738  *
11739  * def reframe(self, ixt):
11740  */
11741  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
11742  __Pyx_GOTREF(__pyx_t_1);
11743  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11744  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11745  __PYX_ERR(0, 647, __pyx_L1_error)
11746 
11747  /* "PyClical.pyx":638
11748  * raise TypeError("Not applicable.")
11749  *
11750  * def __iter__(self): # <<<<<<<<<<<<<<
11751  * """
11752  * Not applicable.
11753  */
11754 
11755  /* function exit code */
11756  __pyx_L1_error:;
11757  __Pyx_XDECREF(__pyx_t_1);
11758  __Pyx_AddTraceback("PyClical.clifford.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11759  __pyx_r = NULL;
11760  __Pyx_XGIVEREF(__pyx_r);
11761  __Pyx_RefNannyFinishContext();
11762  return __pyx_r;
11763  }
11764 
11765  /* "PyClical.pyx":649
11766  * raise TypeError("Not applicable.")
11767  *
11768  * def reframe(self, ixt): # <<<<<<<<<<<<<<
11769  * """
11770  * Put self into a larger frame, containing the union of self.frame() and index set ixt.
11771  */
11772 
11773  /* Python wrapper */
11774  static PyObject *__pyx_pw_8PyClical_8clifford_11reframe(PyObject *__pyx_v_self,
11775 #if CYTHON_METH_FASTCALL
11776 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11777 #else
11778 PyObject *__pyx_args, PyObject *__pyx_kwds
11779 #endif
11780 ); /*proto*/
11781  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_10reframe, "\n Put self into a larger frame, containing the union of self.frame() and index set ixt.\n This can be used to make multiplication faster, by multiplying within a common frame.\n\n >>> clifford(\"2+3{1}\").reframe(index_set({1,2,3}))\n clifford(\"2+3{1}\")\n >>> s=index_set({1,2,3});t=index_set({-3,-2,-1});x=random_clifford(s); x.reframe(t).frame() == (s|t);\n True\n ");
11782  static PyMethodDef __pyx_mdef_8PyClical_8clifford_11reframe = {"reframe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_11reframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_10reframe};
11783  static PyObject *__pyx_pw_8PyClical_8clifford_11reframe(PyObject *__pyx_v_self,
11784 #if CYTHON_METH_FASTCALL
11785 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
11786 #else
11787 PyObject *__pyx_args, PyObject *__pyx_kwds
11788 #endif
11789 ) {
11790  PyObject *__pyx_v_ixt = 0;
11791  #if !CYTHON_METH_FASTCALL
11792  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
11793  #endif
11794  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
11795  PyObject* values[1] = {0};
11796  int __pyx_lineno = 0;
11797  const char *__pyx_filename = NULL;
11798  int __pyx_clineno = 0;
11799  PyObject *__pyx_r = 0;
11800  __Pyx_RefNannyDeclarations
11801  __Pyx_RefNannySetupContext("reframe (wrapper)", 0);
11802  #if !CYTHON_METH_FASTCALL
11803  #if CYTHON_ASSUME_SAFE_MACROS
11804  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
11805  #else
11806  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
11807  #endif
11808  #endif
11809  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
11810  {
11811  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ixt,0};
11812  if (__pyx_kwds) {
11813  Py_ssize_t kw_args;
11814  switch (__pyx_nargs) {
11815  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
11816  CYTHON_FALLTHROUGH;
11817  case 0: break;
11818  default: goto __pyx_L5_argtuple_error;
11819  }
11820  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
11821  switch (__pyx_nargs) {
11822  case 0:
11823  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ixt)) != 0)) {
11824  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
11825  kw_args--;
11826  }
11827  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 649, __pyx_L3_error)
11828  else goto __pyx_L5_argtuple_error;
11829  }
11830  if (unlikely(kw_args > 0)) {
11831  const Py_ssize_t kwd_pos_args = __pyx_nargs;
11832  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "reframe") < 0)) __PYX_ERR(0, 649, __pyx_L3_error)
11833  }
11834  } else if (unlikely(__pyx_nargs != 1)) {
11835  goto __pyx_L5_argtuple_error;
11836  } else {
11837  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
11838  }
11839  __pyx_v_ixt = values[0];
11840  }
11841  goto __pyx_L6_skip;
11842  __pyx_L5_argtuple_error:;
11843  __Pyx_RaiseArgtupleInvalid("reframe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 649, __pyx_L3_error)
11844  __pyx_L6_skip:;
11845  goto __pyx_L4_argument_unpacking_done;
11846  __pyx_L3_error:;
11847  {
11848  Py_ssize_t __pyx_temp;
11849  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11850  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
11851  }
11852  }
11853  __Pyx_AddTraceback("PyClical.clifford.reframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
11854  __Pyx_RefNannyFinishContext();
11855  return NULL;
11856  __pyx_L4_argument_unpacking_done:;
11857  __pyx_r = __pyx_pf_8PyClical_8clifford_10reframe(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_ixt);
11858 
11859  /* function exit code */
11860  {
11861  Py_ssize_t __pyx_temp;
11862  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
11863  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
11864  }
11865  }
11866  __Pyx_RefNannyFinishContext();
11867  return __pyx_r;
11868  }
11869 
11870  static PyObject *__pyx_pf_8PyClical_8clifford_10reframe(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt) {
11871  PyObject *__pyx_v_error_msg_prefix = NULL;
11872  struct __pyx_obj_8PyClical_clifford *__pyx_v_result = NULL;
11873  PyObject *__pyx_v_err = NULL;
11874  PyObject *__pyx_r = NULL;
11875  __Pyx_RefNannyDeclarations
11876  int __pyx_t_1;
11877  PyObject *__pyx_t_2 = NULL;
11878  PyObject *__pyx_t_3 = NULL;
11879  PyObject *__pyx_t_4 = NULL;
11880  PyObject *__pyx_t_5 = NULL;
11881  Clifford __pyx_t_6;
11882  IndexSet __pyx_t_7;
11883  Clifford *__pyx_t_8;
11884  int __pyx_t_9;
11885  PyObject *__pyx_t_10 = NULL;
11886  PyObject *__pyx_t_11 = NULL;
11887  PyObject *__pyx_t_12 = NULL;
11888  PyObject *__pyx_t_13 = NULL;
11889  PyObject *__pyx_t_14 = NULL;
11890  int __pyx_t_15;
11891  char const *__pyx_t_16;
11892  PyObject *__pyx_t_17 = NULL;
11893  PyObject *__pyx_t_18 = NULL;
11894  PyObject *__pyx_t_19 = NULL;
11895  PyObject *__pyx_t_20 = NULL;
11896  PyObject *__pyx_t_21 = NULL;
11897  PyObject *__pyx_t_22 = NULL;
11898  int __pyx_lineno = 0;
11899  const char *__pyx_filename = NULL;
11900  int __pyx_clineno = 0;
11901  __Pyx_RefNannySetupContext("reframe", 1);
11902 
11903  /* "PyClical.pyx":659
11904  * True
11905  * """
11906  * error_msg_prefix = "Cannot reframe" # <<<<<<<<<<<<<<
11907  * if isinstance(ixt, index_set):
11908  * try:
11909  */
11910  __Pyx_INCREF(__pyx_kp_u_Cannot_reframe);
11911  __pyx_v_error_msg_prefix = __pyx_kp_u_Cannot_reframe;
11912 
11913  /* "PyClical.pyx":660
11914  * """
11915  * error_msg_prefix = "Cannot reframe"
11916  * if isinstance(ixt, index_set): # <<<<<<<<<<<<<<
11917  * try:
11918  * result = clifford()
11919  */
11920  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ixt, __pyx_ptype_8PyClical_index_set);
11921  if (likely(__pyx_t_1)) {
11922 
11923  /* "PyClical.pyx":661
11924  * error_msg_prefix = "Cannot reframe"
11925  * if isinstance(ixt, index_set):
11926  * try: # <<<<<<<<<<<<<<
11927  * result = clifford()
11928  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
11929  */
11930  {
11931  __Pyx_PyThreadState_declare
11932  __Pyx_PyThreadState_assign
11933  __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
11934  __Pyx_XGOTREF(__pyx_t_2);
11935  __Pyx_XGOTREF(__pyx_t_3);
11936  __Pyx_XGOTREF(__pyx_t_4);
11937  /*try:*/ {
11938 
11939  /* "PyClical.pyx":662
11940  * if isinstance(ixt, index_set):
11941  * try:
11942  * result = clifford() # <<<<<<<<<<<<<<
11943  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
11944  * except RuntimeError as err:
11945  */
11946  __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 662, __pyx_L4_error)
11947  __Pyx_GOTREF(__pyx_t_5);
11948  __pyx_v_result = ((struct __pyx_obj_8PyClical_clifford *)__pyx_t_5);
11949  __pyx_t_5 = 0;
11950 
11951  /* "PyClical.pyx":663
11952  * try:
11953  * result = clifford()
11954  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap()) # <<<<<<<<<<<<<<
11955  * except RuntimeError as err:
11956  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
11957  */
11958  __pyx_t_6 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L4_error)
11959  __pyx_t_7 = __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_ixt)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L4_error)
11960  try {
11961  __pyx_t_8 = new Clifford(__pyx_t_6, __pyx_t_7);
11962  } catch(...) {
11963  __Pyx_CppExn2PyErr();
11964  __PYX_ERR(0, 663, __pyx_L4_error)
11965  }
11966  __pyx_v_result->instance = __pyx_t_8;
11967 
11968  /* "PyClical.pyx":661
11969  * error_msg_prefix = "Cannot reframe"
11970  * if isinstance(ixt, index_set):
11971  * try: # <<<<<<<<<<<<<<
11972  * result = clifford()
11973  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
11974  */
11975  }
11976  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
11977  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
11978  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
11979  goto __pyx_L9_try_end;
11980  __pyx_L4_error:;
11981  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
11982 
11983  /* "PyClical.pyx":664
11984  * result = clifford()
11985  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
11986  * except RuntimeError as err: # <<<<<<<<<<<<<<
11987  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
11988  * + str(ixt) + ":"
11989  */
11990  __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
11991  if (__pyx_t_9) {
11992  __Pyx_AddTraceback("PyClical.clifford.reframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
11993  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 664, __pyx_L6_except_error)
11994  __Pyx_XGOTREF(__pyx_t_5);
11995  __Pyx_XGOTREF(__pyx_t_10);
11996  __Pyx_XGOTREF(__pyx_t_11);
11997  __Pyx_INCREF(__pyx_t_10);
11998  __pyx_v_err = __pyx_t_10;
11999  /*try:*/ {
12000 
12001  /* "PyClical.pyx":665
12002  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
12003  * except RuntimeError as err:
12004  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame " # <<<<<<<<<<<<<<
12005  * + str(ixt) + ":"
12006  * + "\n\t" + str(err))
12007  */
12008  __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u_from); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 665, __pyx_L15_error)
12009  __Pyx_GOTREF(__pyx_t_12);
12010  __pyx_t_13 = __Pyx_PyObject_Str(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 665, __pyx_L15_error)
12011  __Pyx_GOTREF(__pyx_t_13);
12012  __pyx_t_14 = PyNumber_Add(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 665, __pyx_L15_error)
12013  __Pyx_GOTREF(__pyx_t_14);
12014  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
12015  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
12016  __pyx_t_13 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_14, __pyx_kp_u_to_frame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 665, __pyx_L15_error)
12017  __Pyx_GOTREF(__pyx_t_13);
12018  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
12019 
12020  /* "PyClical.pyx":666
12021  * except RuntimeError as err:
12022  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
12023  * + str(ixt) + ":" # <<<<<<<<<<<<<<
12024  * + "\n\t" + str(err))
12025  * else:
12026  */
12027  __pyx_t_14 = __Pyx_PyObject_Str(__pyx_v_ixt); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 666, __pyx_L15_error)
12028  __Pyx_GOTREF(__pyx_t_14);
12029  __pyx_t_12 = PyNumber_Add(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 666, __pyx_L15_error)
12030  __Pyx_GOTREF(__pyx_t_12);
12031  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
12032  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
12033  __pyx_t_14 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_12, __pyx_kp_u__3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 666, __pyx_L15_error)
12034  __Pyx_GOTREF(__pyx_t_14);
12035  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
12036 
12037  /* "PyClical.pyx":667
12038  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
12039  * + str(ixt) + ":"
12040  * + "\n\t" + str(err)) # <<<<<<<<<<<<<<
12041  * else:
12042  * raise TypeError(error_msg_prefix + " using (" + str(type(ixt)) + ").")
12043  */
12044  __pyx_t_12 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_14, __pyx_kp_u__4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 667, __pyx_L15_error)
12045  __Pyx_GOTREF(__pyx_t_12);
12046  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
12047  __pyx_t_14 = __Pyx_PyObject_Str(__pyx_v_err); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 667, __pyx_L15_error)
12048  __Pyx_GOTREF(__pyx_t_14);
12049  __pyx_t_13 = PyNumber_Add(__pyx_t_12, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 667, __pyx_L15_error)
12050  __Pyx_GOTREF(__pyx_t_13);
12051  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
12052  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
12053 
12054  /* "PyClical.pyx":665
12055  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
12056  * except RuntimeError as err:
12057  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame " # <<<<<<<<<<<<<<
12058  * + str(ixt) + ":"
12059  * + "\n\t" + str(err))
12060  */
12061  __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 665, __pyx_L15_error)
12062  __Pyx_GOTREF(__pyx_t_14);
12063  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
12064  __Pyx_Raise(__pyx_t_14, 0, 0, 0);
12065  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
12066  __PYX_ERR(0, 665, __pyx_L15_error)
12067  }
12068 
12069  /* "PyClical.pyx":664
12070  * result = clifford()
12071  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
12072  * except RuntimeError as err: # <<<<<<<<<<<<<<
12073  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
12074  * + str(ixt) + ":"
12075  */
12076  /*finally:*/ {
12077  __pyx_L15_error:;
12078  /*exception exit:*/{
12079  __Pyx_PyThreadState_declare
12080  __Pyx_PyThreadState_assign
12081  __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
12082  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
12083  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
12084  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
12085  if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
12086  if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
12087  __Pyx_XGOTREF(__pyx_t_17);
12088  __Pyx_XGOTREF(__pyx_t_18);
12089  __Pyx_XGOTREF(__pyx_t_19);
12090  __Pyx_XGOTREF(__pyx_t_20);
12091  __Pyx_XGOTREF(__pyx_t_21);
12092  __Pyx_XGOTREF(__pyx_t_22);
12093  __pyx_t_9 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
12094  {
12095  __Pyx_DECREF(__pyx_v_err); __pyx_v_err = 0;
12096  }
12097  if (PY_MAJOR_VERSION >= 3) {
12098  __Pyx_XGIVEREF(__pyx_t_20);
12099  __Pyx_XGIVEREF(__pyx_t_21);
12100  __Pyx_XGIVEREF(__pyx_t_22);
12101  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
12102  }
12103  __Pyx_XGIVEREF(__pyx_t_17);
12104  __Pyx_XGIVEREF(__pyx_t_18);
12105  __Pyx_XGIVEREF(__pyx_t_19);
12106  __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
12107  __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
12108  __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
12109  goto __pyx_L6_except_error;
12110  }
12111  }
12112  }
12113  goto __pyx_L6_except_error;
12114 
12115  /* "PyClical.pyx":661
12116  * error_msg_prefix = "Cannot reframe"
12117  * if isinstance(ixt, index_set):
12118  * try: # <<<<<<<<<<<<<<
12119  * result = clifford()
12120  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
12121  */
12122  __pyx_L6_except_error:;
12123  __Pyx_XGIVEREF(__pyx_t_2);
12124  __Pyx_XGIVEREF(__pyx_t_3);
12125  __Pyx_XGIVEREF(__pyx_t_4);
12126  __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
12127  goto __pyx_L1_error;
12128  __pyx_L9_try_end:;
12129  }
12130 
12131  /* "PyClical.pyx":660
12132  * """
12133  * error_msg_prefix = "Cannot reframe"
12134  * if isinstance(ixt, index_set): # <<<<<<<<<<<<<<
12135  * try:
12136  * result = clifford()
12137  */
12138  goto __pyx_L3;
12139  }
12140 
12141  /* "PyClical.pyx":669
12142  * + "\n\t" + str(err))
12143  * else:
12144  * raise TypeError(error_msg_prefix + " using (" + str(type(ixt)) + ").") # <<<<<<<<<<<<<<
12145  * return result
12146  *
12147  */
12148  /*else*/ {
12149  __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_v_error_msg_prefix, __pyx_kp_u_using); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 669, __pyx_L1_error)
12150  __Pyx_GOTREF(__pyx_t_11);
12151  __pyx_t_10 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_ixt))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 669, __pyx_L1_error)
12152  __Pyx_GOTREF(__pyx_t_10);
12153  __pyx_t_5 = PyNumber_Add(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 669, __pyx_L1_error)
12154  __Pyx_GOTREF(__pyx_t_5);
12155  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12156  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12157  __pyx_t_10 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_5, __pyx_kp_u__7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 669, __pyx_L1_error)
12158  __Pyx_GOTREF(__pyx_t_10);
12159  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12160  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 669, __pyx_L1_error)
12161  __Pyx_GOTREF(__pyx_t_5);
12162  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12163  __Pyx_Raise(__pyx_t_5, 0, 0, 0);
12164  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12165  __PYX_ERR(0, 669, __pyx_L1_error)
12166  }
12167  __pyx_L3:;
12168 
12169  /* "PyClical.pyx":670
12170  * else:
12171  * raise TypeError(error_msg_prefix + " using (" + str(type(ixt)) + ").")
12172  * return result # <<<<<<<<<<<<<<
12173  *
12174  * def __richcmp__(lhs, rhs, int op):
12175  */
12176  __Pyx_XDECREF(__pyx_r);
12177  __Pyx_INCREF((PyObject *)__pyx_v_result);
12178  __pyx_r = ((PyObject *)__pyx_v_result);
12179  goto __pyx_L0;
12180 
12181  /* "PyClical.pyx":649
12182  * raise TypeError("Not applicable.")
12183  *
12184  * def reframe(self, ixt): # <<<<<<<<<<<<<<
12185  * """
12186  * Put self into a larger frame, containing the union of self.frame() and index set ixt.
12187  */
12188 
12189  /* function exit code */
12190  __pyx_L1_error:;
12191  __Pyx_XDECREF(__pyx_t_5);
12192  __Pyx_XDECREF(__pyx_t_10);
12193  __Pyx_XDECREF(__pyx_t_11);
12194  __Pyx_XDECREF(__pyx_t_12);
12195  __Pyx_XDECREF(__pyx_t_13);
12196  __Pyx_XDECREF(__pyx_t_14);
12197  __Pyx_AddTraceback("PyClical.clifford.reframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
12198  __pyx_r = NULL;
12199  __pyx_L0:;
12200  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
12201  __Pyx_XDECREF((PyObject *)__pyx_v_result);
12202  __Pyx_XDECREF(__pyx_v_err);
12203  __Pyx_XGIVEREF(__pyx_r);
12204  __Pyx_RefNannyFinishContext();
12205  return __pyx_r;
12206  }
12207 
12208  /* "PyClical.pyx":672
12209  * return result
12210  *
12211  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
12212  * """
12213  * Compare objects of type clifford.
12214  */
12215 
12216  /* Python wrapper */
12217  static PyObject *__pyx_pw_8PyClical_8clifford_13__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /*proto*/
12218  static PyObject *__pyx_pw_8PyClical_8clifford_13__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
12219  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12220  PyObject *__pyx_r = 0;
12221  __Pyx_RefNannyDeclarations
12222  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
12223  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12224  __pyx_r = __pyx_pf_8PyClical_8clifford_12__richcmp__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs), ((int)__pyx_v_op));
12225 
12226  /* function exit code */
12227  __Pyx_RefNannyFinishContext();
12228  return __pyx_r;
12229  }
12230 
12231  static PyObject *__pyx_pf_8PyClical_8clifford_12__richcmp__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
12232  PyObject *__pyx_r = NULL;
12233  __Pyx_RefNannyDeclarations
12234  int __pyx_t_1;
12235  int __pyx_t_2;
12236  PyObject *__pyx_t_3 = NULL;
12237  Clifford __pyx_t_4;
12238  Clifford __pyx_t_5;
12239  PyObject *__pyx_t_6 = NULL;
12240  PyObject *__pyx_t_7 = NULL;
12241  int __pyx_lineno = 0;
12242  const char *__pyx_filename = NULL;
12243  int __pyx_clineno = 0;
12244  __Pyx_RefNannySetupContext("__richcmp__", 1);
12245 
12246  /* "PyClical.pyx":691
12247  * True
12248  * """
12249  * if op == 2: # == # <<<<<<<<<<<<<<
12250  * if (lhs is None) or (rhs is None):
12251  * return bool(lhs is rhs)
12252  */
12253  __pyx_t_1 = (__pyx_v_op == 2);
12254  if (__pyx_t_1) {
12255 
12256  /* "PyClical.pyx":692
12257  * """
12258  * if op == 2: # ==
12259  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
12260  * return bool(lhs is rhs)
12261  * else:
12262  */
12263  __pyx_t_2 = (((PyObject *)__pyx_v_lhs) == Py_None);
12264  if (!__pyx_t_2) {
12265  } else {
12266  __pyx_t_1 = __pyx_t_2;
12267  goto __pyx_L5_bool_binop_done;
12268  }
12269  __pyx_t_2 = (__pyx_v_rhs == Py_None);
12270  __pyx_t_1 = __pyx_t_2;
12271  __pyx_L5_bool_binop_done:;
12272  if (__pyx_t_1) {
12273 
12274  /* "PyClical.pyx":693
12275  * if op == 2: # ==
12276  * if (lhs is None) or (rhs is None):
12277  * return bool(lhs is rhs) # <<<<<<<<<<<<<<
12278  * else:
12279  * return bool( toClifford(lhs) == toClifford(rhs) )
12280  */
12281  __Pyx_XDECREF(__pyx_r);
12282  __pyx_t_1 = (((PyObject *)__pyx_v_lhs) == __pyx_v_rhs);
12283  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
12284  __Pyx_GOTREF(__pyx_t_3);
12285  __pyx_r = __pyx_t_3;
12286  __pyx_t_3 = 0;
12287  goto __pyx_L0;
12288 
12289  /* "PyClical.pyx":692
12290  * """
12291  * if op == 2: # ==
12292  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
12293  * return bool(lhs is rhs)
12294  * else:
12295  */
12296  }
12297 
12298  /* "PyClical.pyx":695
12299  * return bool(lhs is rhs)
12300  * else:
12301  * return bool( toClifford(lhs) == toClifford(rhs) ) # <<<<<<<<<<<<<<
12302  * elif op == 3: # !=
12303  * if (lhs is None) or (rhs is None):
12304  */
12305  /*else*/ {
12306  __Pyx_XDECREF(__pyx_r);
12307  __pyx_t_4 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 695, __pyx_L1_error)
12308  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 695, __pyx_L1_error)
12309  __pyx_t_1 = (__pyx_t_4 == __pyx_t_5);
12310  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error)
12311  __Pyx_GOTREF(__pyx_t_3);
12312  __pyx_r = __pyx_t_3;
12313  __pyx_t_3 = 0;
12314  goto __pyx_L0;
12315  }
12316 
12317  /* "PyClical.pyx":691
12318  * True
12319  * """
12320  * if op == 2: # == # <<<<<<<<<<<<<<
12321  * if (lhs is None) or (rhs is None):
12322  * return bool(lhs is rhs)
12323  */
12324  }
12325 
12326  /* "PyClical.pyx":696
12327  * else:
12328  * return bool( toClifford(lhs) == toClifford(rhs) )
12329  * elif op == 3: # != # <<<<<<<<<<<<<<
12330  * if (lhs is None) or (rhs is None):
12331  * return not bool(lhs is rhs)
12332  */
12333  __pyx_t_1 = (__pyx_v_op == 3);
12334  if (__pyx_t_1) {
12335 
12336  /* "PyClical.pyx":697
12337  * return bool( toClifford(lhs) == toClifford(rhs) )
12338  * elif op == 3: # !=
12339  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
12340  * return not bool(lhs is rhs)
12341  * else:
12342  */
12343  __pyx_t_2 = (((PyObject *)__pyx_v_lhs) == Py_None);
12344  if (!__pyx_t_2) {
12345  } else {
12346  __pyx_t_1 = __pyx_t_2;
12347  goto __pyx_L8_bool_binop_done;
12348  }
12349  __pyx_t_2 = (__pyx_v_rhs == Py_None);
12350  __pyx_t_1 = __pyx_t_2;
12351  __pyx_L8_bool_binop_done:;
12352  if (__pyx_t_1) {
12353 
12354  /* "PyClical.pyx":698
12355  * elif op == 3: # !=
12356  * if (lhs is None) or (rhs is None):
12357  * return not bool(lhs is rhs) # <<<<<<<<<<<<<<
12358  * else:
12359  * return bool( toClifford(lhs) != toClifford(rhs) )
12360  */
12361  __Pyx_XDECREF(__pyx_r);
12362  __pyx_t_1 = (((PyObject *)__pyx_v_lhs) == __pyx_v_rhs);
12363  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!(!__pyx_t_1)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
12364  __Pyx_GOTREF(__pyx_t_3);
12365  __pyx_r = __pyx_t_3;
12366  __pyx_t_3 = 0;
12367  goto __pyx_L0;
12368 
12369  /* "PyClical.pyx":697
12370  * return bool( toClifford(lhs) == toClifford(rhs) )
12371  * elif op == 3: # !=
12372  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
12373  * return not bool(lhs is rhs)
12374  * else:
12375  */
12376  }
12377 
12378  /* "PyClical.pyx":700
12379  * return not bool(lhs is rhs)
12380  * else:
12381  * return bool( toClifford(lhs) != toClifford(rhs) ) # <<<<<<<<<<<<<<
12382  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford):
12383  * raise TypeError("This comparison operator is not implemented for "
12384  */
12385  /*else*/ {
12386  __Pyx_XDECREF(__pyx_r);
12387  __pyx_t_5 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 700, __pyx_L1_error)
12388  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 700, __pyx_L1_error)
12389  __pyx_t_1 = (__pyx_t_5 != __pyx_t_4);
12390  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
12391  __Pyx_GOTREF(__pyx_t_3);
12392  __pyx_r = __pyx_t_3;
12393  __pyx_t_3 = 0;
12394  goto __pyx_L0;
12395  }
12396 
12397  /* "PyClical.pyx":696
12398  * else:
12399  * return bool( toClifford(lhs) == toClifford(rhs) )
12400  * elif op == 3: # != # <<<<<<<<<<<<<<
12401  * if (lhs is None) or (rhs is None):
12402  * return not bool(lhs is rhs)
12403  */
12404  }
12405 
12406  /* "PyClical.pyx":701
12407  * else:
12408  * return bool( toClifford(lhs) != toClifford(rhs) )
12409  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford): # <<<<<<<<<<<<<<
12410  * raise TypeError("This comparison operator is not implemented for "
12411  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
12412  */
12413  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_lhs), __pyx_ptype_8PyClical_clifford);
12414  if (!__pyx_t_2) {
12415  } else {
12416  __pyx_t_1 = __pyx_t_2;
12417  goto __pyx_L10_bool_binop_done;
12418  }
12419  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_rhs, __pyx_ptype_8PyClical_clifford);
12420  __pyx_t_1 = __pyx_t_2;
12421  __pyx_L10_bool_binop_done:;
12422  if (unlikely(__pyx_t_1)) {
12423 
12424  /* "PyClical.pyx":703
12425  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford):
12426  * raise TypeError("This comparison operator is not implemented for "
12427  * + str(type(lhs)) + ", " + str(type(rhs)) + ".") # <<<<<<<<<<<<<<
12428  * else:
12429  * return NotImplemented
12430  */
12431  __pyx_t_3 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_lhs)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error)
12432  __Pyx_GOTREF(__pyx_t_3);
12433  __pyx_t_6 = PyNumber_Add(__pyx_kp_u_This_comparison_operator_is_not, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 703, __pyx_L1_error)
12434  __Pyx_GOTREF(__pyx_t_6);
12435  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12436  __pyx_t_3 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_6, __pyx_kp_u__6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error)
12437  __Pyx_GOTREF(__pyx_t_3);
12438  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12439  __pyx_t_6 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_rhs))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 703, __pyx_L1_error)
12440  __Pyx_GOTREF(__pyx_t_6);
12441  __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error)
12442  __Pyx_GOTREF(__pyx_t_7);
12443  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12444  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12445  __pyx_t_6 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_7, __pyx_kp_u_); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 703, __pyx_L1_error)
12446  __Pyx_GOTREF(__pyx_t_6);
12447  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12448 
12449  /* "PyClical.pyx":702
12450  * return bool( toClifford(lhs) != toClifford(rhs) )
12451  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford):
12452  * raise TypeError("This comparison operator is not implemented for " # <<<<<<<<<<<<<<
12453  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
12454  * else:
12455  */
12456  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error)
12457  __Pyx_GOTREF(__pyx_t_7);
12458  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12459  __Pyx_Raise(__pyx_t_7, 0, 0, 0);
12460  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12461  __PYX_ERR(0, 702, __pyx_L1_error)
12462 
12463  /* "PyClical.pyx":701
12464  * else:
12465  * return bool( toClifford(lhs) != toClifford(rhs) )
12466  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford): # <<<<<<<<<<<<<<
12467  * raise TypeError("This comparison operator is not implemented for "
12468  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
12469  */
12470  }
12471 
12472  /* "PyClical.pyx":705
12473  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
12474  * else:
12475  * return NotImplemented # <<<<<<<<<<<<<<
12476  *
12477  * def __getitem__(self, ixt):
12478  */
12479  /*else*/ {
12480  __Pyx_XDECREF(__pyx_r);
12481  __Pyx_INCREF(__pyx_builtin_NotImplemented);
12482  __pyx_r = __pyx_builtin_NotImplemented;
12483  goto __pyx_L0;
12484  }
12485 
12486  /* "PyClical.pyx":672
12487  * return result
12488  *
12489  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
12490  * """
12491  * Compare objects of type clifford.
12492  */
12493 
12494  /* function exit code */
12495  __pyx_L1_error:;
12496  __Pyx_XDECREF(__pyx_t_3);
12497  __Pyx_XDECREF(__pyx_t_6);
12498  __Pyx_XDECREF(__pyx_t_7);
12499  __Pyx_AddTraceback("PyClical.clifford.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12500  __pyx_r = NULL;
12501  __pyx_L0:;
12502  __Pyx_XGIVEREF(__pyx_r);
12503  __Pyx_RefNannyFinishContext();
12504  return __pyx_r;
12505  }
12506 
12507  /* "PyClical.pyx":707
12508  * return NotImplemented
12509  *
12510  * def __getitem__(self, ixt): # <<<<<<<<<<<<<<
12511  * """
12512  * Subscripting: map from index set to scalar coordinate.
12513  */
12514 
12515  /* Python wrapper */
12516  static PyObject *__pyx_pw_8PyClical_8clifford_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_ixt); /*proto*/
12517  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_14__getitem__, "\n Subscripting: map from index set to scalar coordinate.\n\n >>> clifford(\"{1}\")[index_set(1)]\n 1.0\n >>> clifford(\"{1}\")[index_set({1})]\n 1.0\n >>> clifford(\"{1}\")[index_set({1,2})]\n 0.0\n >>> clifford(\"2{1,2}\")[index_set({1,2})]\n 2.0\n ");
12518  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12519  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_14__getitem__;
12520  #endif
12521  static PyObject *__pyx_pw_8PyClical_8clifford_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_ixt) {
12522  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12523  PyObject *__pyx_r = 0;
12524  __Pyx_RefNannyDeclarations
12525  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
12526  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12527  __pyx_r = __pyx_pf_8PyClical_8clifford_14__getitem__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_ixt));
12528 
12529  /* function exit code */
12530  __Pyx_RefNannyFinishContext();
12531  return __pyx_r;
12532  }
12533 
12534  static PyObject *__pyx_pf_8PyClical_8clifford_14__getitem__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt) {
12535  PyObject *__pyx_r = NULL;
12536  __Pyx_RefNannyDeclarations
12537  IndexSet __pyx_t_1;
12538  PyObject *__pyx_t_2 = NULL;
12539  int __pyx_lineno = 0;
12540  const char *__pyx_filename = NULL;
12541  int __pyx_clineno = 0;
12542  __Pyx_RefNannySetupContext("__getitem__", 1);
12543 
12544  /* "PyClical.pyx":720
12545  * 2.0
12546  * """
12547  * return self.instance.getitem(toIndexSet(ixt)) # <<<<<<<<<<<<<<
12548  *
12549  * def __neg__(self):
12550  */
12551  __Pyx_XDECREF(__pyx_r);
12552  __pyx_t_1 = __pyx_f_8PyClical_toIndexSet(__pyx_v_ixt); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 720, __pyx_L1_error)
12553  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->instance->operator[](__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 720, __pyx_L1_error)
12554  __Pyx_GOTREF(__pyx_t_2);
12555  __pyx_r = __pyx_t_2;
12556  __pyx_t_2 = 0;
12557  goto __pyx_L0;
12558 
12559  /* "PyClical.pyx":707
12560  * return NotImplemented
12561  *
12562  * def __getitem__(self, ixt): # <<<<<<<<<<<<<<
12563  * """
12564  * Subscripting: map from index set to scalar coordinate.
12565  */
12566 
12567  /* function exit code */
12568  __pyx_L1_error:;
12569  __Pyx_XDECREF(__pyx_t_2);
12570  __Pyx_AddTraceback("PyClical.clifford.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12571  __pyx_r = NULL;
12572  __pyx_L0:;
12573  __Pyx_XGIVEREF(__pyx_r);
12574  __Pyx_RefNannyFinishContext();
12575  return __pyx_r;
12576  }
12577 
12578  /* "PyClical.pyx":722
12579  * return self.instance.getitem(toIndexSet(ixt))
12580  *
12581  * def __neg__(self): # <<<<<<<<<<<<<<
12582  * """
12583  * Unary -.
12584  */
12585 
12586  /* Python wrapper */
12587  static PyObject *__pyx_pw_8PyClical_8clifford_17__neg__(PyObject *__pyx_v_self); /*proto*/
12588  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_16__neg__, "\n Unary -.\n\n >>> print(-clifford(\"{1}\"))\n -{1}\n ");
12589  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12590  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_16__neg__;
12591  #endif
12592  static PyObject *__pyx_pw_8PyClical_8clifford_17__neg__(PyObject *__pyx_v_self) {
12593  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12594  PyObject *__pyx_r = 0;
12595  __Pyx_RefNannyDeclarations
12596  __Pyx_RefNannySetupContext("__neg__ (wrapper)", 0);
12597  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12598  __pyx_r = __pyx_pf_8PyClical_8clifford_16__neg__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
12599 
12600  /* function exit code */
12601  __Pyx_RefNannyFinishContext();
12602  return __pyx_r;
12603  }
12604 
12605  static PyObject *__pyx_pf_8PyClical_8clifford_16__neg__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
12606  PyObject *__pyx_r = NULL;
12607  __Pyx_RefNannyDeclarations
12608  PyObject *__pyx_t_1 = NULL;
12609  PyObject *__pyx_t_2 = NULL;
12610  int __pyx_lineno = 0;
12611  const char *__pyx_filename = NULL;
12612  int __pyx_clineno = 0;
12613  __Pyx_RefNannySetupContext("__neg__", 1);
12614 
12615  /* "PyClical.pyx":729
12616  * -{1}
12617  * """
12618  * return clifford().wrap( self.instance.neg() ) # <<<<<<<<<<<<<<
12619  *
12620  * def __pos__(self):
12621  */
12622  __Pyx_XDECREF(__pyx_r);
12623  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error)
12624  __Pyx_GOTREF(__pyx_t_1);
12625  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->operator-()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
12626  __Pyx_GOTREF(__pyx_t_2);
12627  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12628  __pyx_r = __pyx_t_2;
12629  __pyx_t_2 = 0;
12630  goto __pyx_L0;
12631 
12632  /* "PyClical.pyx":722
12633  * return self.instance.getitem(toIndexSet(ixt))
12634  *
12635  * def __neg__(self): # <<<<<<<<<<<<<<
12636  * """
12637  * Unary -.
12638  */
12639 
12640  /* function exit code */
12641  __pyx_L1_error:;
12642  __Pyx_XDECREF(__pyx_t_1);
12643  __Pyx_XDECREF(__pyx_t_2);
12644  __Pyx_AddTraceback("PyClical.clifford.__neg__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12645  __pyx_r = NULL;
12646  __pyx_L0:;
12647  __Pyx_XGIVEREF(__pyx_r);
12648  __Pyx_RefNannyFinishContext();
12649  return __pyx_r;
12650  }
12651 
12652  /* "PyClical.pyx":731
12653  * return clifford().wrap( self.instance.neg() )
12654  *
12655  * def __pos__(self): # <<<<<<<<<<<<<<
12656  * """
12657  * Unary +.
12658  */
12659 
12660  /* Python wrapper */
12661  static PyObject *__pyx_pw_8PyClical_8clifford_19__pos__(PyObject *__pyx_v_self); /*proto*/
12662  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_18__pos__, "\n Unary +.\n\n >>> print(+clifford(\"{1}\"))\n {1}\n ");
12663  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12664  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_18__pos__;
12665  #endif
12666  static PyObject *__pyx_pw_8PyClical_8clifford_19__pos__(PyObject *__pyx_v_self) {
12667  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12668  PyObject *__pyx_r = 0;
12669  __Pyx_RefNannyDeclarations
12670  __Pyx_RefNannySetupContext("__pos__ (wrapper)", 0);
12671  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12672  __pyx_r = __pyx_pf_8PyClical_8clifford_18__pos__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
12673 
12674  /* function exit code */
12675  __Pyx_RefNannyFinishContext();
12676  return __pyx_r;
12677  }
12678 
12679  static PyObject *__pyx_pf_8PyClical_8clifford_18__pos__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
12680  PyObject *__pyx_r = NULL;
12681  __Pyx_RefNannyDeclarations
12682  PyObject *__pyx_t_1 = NULL;
12683  int __pyx_lineno = 0;
12684  const char *__pyx_filename = NULL;
12685  int __pyx_clineno = 0;
12686  __Pyx_RefNannySetupContext("__pos__", 1);
12687 
12688  /* "PyClical.pyx":738
12689  * {1}
12690  * """
12691  * return clifford(self) # <<<<<<<<<<<<<<
12692  *
12693  * def __add__(lhs, rhs):
12694  */
12695  __Pyx_XDECREF(__pyx_r);
12696  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 738, __pyx_L1_error)
12697  __Pyx_GOTREF(__pyx_t_1);
12698  __pyx_r = __pyx_t_1;
12699  __pyx_t_1 = 0;
12700  goto __pyx_L0;
12701 
12702  /* "PyClical.pyx":731
12703  * return clifford().wrap( self.instance.neg() )
12704  *
12705  * def __pos__(self): # <<<<<<<<<<<<<<
12706  * """
12707  * Unary +.
12708  */
12709 
12710  /* function exit code */
12711  __pyx_L1_error:;
12712  __Pyx_XDECREF(__pyx_t_1);
12713  __Pyx_AddTraceback("PyClical.clifford.__pos__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12714  __pyx_r = NULL;
12715  __pyx_L0:;
12716  __Pyx_XGIVEREF(__pyx_r);
12717  __Pyx_RefNannyFinishContext();
12718  return __pyx_r;
12719  }
12720 
12721  /* "PyClical.pyx":740
12722  * return clifford(self)
12723  *
12724  * def __add__(lhs, rhs): # <<<<<<<<<<<<<<
12725  * """
12726  * Geometric sum.
12727  */
12728 
12729  /* Python wrapper */
12730  static PyObject *__pyx_pw_8PyClical_8clifford_21__add__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
12731  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_20__add__, "\n Geometric sum.\n\n >>> print(clifford(1) + clifford(\"{2}\"))\n 1+{2}\n >>> print(clifford(\"{1}\") + clifford(\"{2}\"))\n {1}+{2}\n ");
12732  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12733  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_20__add__;
12734  #endif
12735  static PyObject *__pyx_pw_8PyClical_8clifford_21__add__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
12736  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12737  PyObject *__pyx_r = 0;
12738  __Pyx_RefNannyDeclarations
12739  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
12740  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12741  __pyx_r = __pyx_pf_8PyClical_8clifford_20__add__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
12742 
12743  /* function exit code */
12744  __Pyx_RefNannyFinishContext();
12745  return __pyx_r;
12746  }
12747 
12748  static PyObject *__pyx_pf_8PyClical_8clifford_20__add__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
12749  PyObject *__pyx_r = NULL;
12750  __Pyx_RefNannyDeclarations
12751  PyObject *__pyx_t_1 = NULL;
12752  Clifford __pyx_t_2;
12753  Clifford __pyx_t_3;
12754  PyObject *__pyx_t_4 = NULL;
12755  int __pyx_lineno = 0;
12756  const char *__pyx_filename = NULL;
12757  int __pyx_clineno = 0;
12758  __Pyx_RefNannySetupContext("__add__", 1);
12759 
12760  /* "PyClical.pyx":749
12761  * {1}+{2}
12762  * """
12763  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) ) # <<<<<<<<<<<<<<
12764  *
12765  * def __radd__(rhs, lhs):
12766  */
12767  __Pyx_XDECREF(__pyx_r);
12768  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error)
12769  __Pyx_GOTREF(__pyx_t_1);
12770  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 749, __pyx_L1_error)
12771  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 749, __pyx_L1_error)
12772  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 + __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error)
12773  __Pyx_GOTREF(__pyx_t_4);
12774  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12775  __pyx_r = __pyx_t_4;
12776  __pyx_t_4 = 0;
12777  goto __pyx_L0;
12778 
12779  /* "PyClical.pyx":740
12780  * return clifford(self)
12781  *
12782  * def __add__(lhs, rhs): # <<<<<<<<<<<<<<
12783  * """
12784  * Geometric sum.
12785  */
12786 
12787  /* function exit code */
12788  __pyx_L1_error:;
12789  __Pyx_XDECREF(__pyx_t_1);
12790  __Pyx_XDECREF(__pyx_t_4);
12791  __Pyx_AddTraceback("PyClical.clifford.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12792  __pyx_r = NULL;
12793  __pyx_L0:;
12794  __Pyx_XGIVEREF(__pyx_r);
12795  __Pyx_RefNannyFinishContext();
12796  return __pyx_r;
12797  }
12798 
12799  /* "PyClical.pyx":751
12800  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) )
12801  *
12802  * def __radd__(rhs, lhs): # <<<<<<<<<<<<<<
12803  * """
12804  * Geometric sum.
12805  */
12806 
12807  /* Python wrapper */
12808  static PyObject *__pyx_pw_8PyClical_8clifford_23__radd__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
12809  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_22__radd__, "\n Geometric sum.\n\n >>> print(1 + clifford(\"{2}\"))\n 1+{2}\n ");
12810  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12811  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_22__radd__;
12812  #endif
12813  static PyObject *__pyx_pw_8PyClical_8clifford_23__radd__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
12814  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12815  PyObject *__pyx_r = 0;
12816  __Pyx_RefNannyDeclarations
12817  __Pyx_RefNannySetupContext("__radd__ (wrapper)", 0);
12818  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12819  __pyx_r = __pyx_pf_8PyClical_8clifford_22__radd__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
12820 
12821  /* function exit code */
12822  __Pyx_RefNannyFinishContext();
12823  return __pyx_r;
12824  }
12825 
12826  static PyObject *__pyx_pf_8PyClical_8clifford_22__radd__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
12827  PyObject *__pyx_r = NULL;
12828  __Pyx_RefNannyDeclarations
12829  PyObject *__pyx_t_1 = NULL;
12830  Clifford __pyx_t_2;
12831  Clifford __pyx_t_3;
12832  PyObject *__pyx_t_4 = NULL;
12833  int __pyx_lineno = 0;
12834  const char *__pyx_filename = NULL;
12835  int __pyx_clineno = 0;
12836  __Pyx_RefNannySetupContext("__radd__", 1);
12837 
12838  /* "PyClical.pyx":758
12839  * 1+{2}
12840  * """
12841  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) ) # <<<<<<<<<<<<<<
12842  *
12843  * def __iadd__(self, rhs):
12844  */
12845  __Pyx_XDECREF(__pyx_r);
12846  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error)
12847  __Pyx_GOTREF(__pyx_t_1);
12848  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 758, __pyx_L1_error)
12849  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 758, __pyx_L1_error)
12850  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 + __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 758, __pyx_L1_error)
12851  __Pyx_GOTREF(__pyx_t_4);
12852  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12853  __pyx_r = __pyx_t_4;
12854  __pyx_t_4 = 0;
12855  goto __pyx_L0;
12856 
12857  /* "PyClical.pyx":751
12858  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) )
12859  *
12860  * def __radd__(rhs, lhs): # <<<<<<<<<<<<<<
12861  * """
12862  * Geometric sum.
12863  */
12864 
12865  /* function exit code */
12866  __pyx_L1_error:;
12867  __Pyx_XDECREF(__pyx_t_1);
12868  __Pyx_XDECREF(__pyx_t_4);
12869  __Pyx_AddTraceback("PyClical.clifford.__radd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12870  __pyx_r = NULL;
12871  __pyx_L0:;
12872  __Pyx_XGIVEREF(__pyx_r);
12873  __Pyx_RefNannyFinishContext();
12874  return __pyx_r;
12875  }
12876 
12877  /* "PyClical.pyx":760
12878  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) )
12879  *
12880  * def __iadd__(self, rhs): # <<<<<<<<<<<<<<
12881  * """
12882  * Geometric sum.
12883  */
12884 
12885  /* Python wrapper */
12886  static PyObject *__pyx_pw_8PyClical_8clifford_25__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
12887  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_24__iadd__, "\n Geometric sum.\n\n >>> x = clifford(1); x += clifford(\"{2}\"); print(x)\n 1+{2}\n ");
12888  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12889  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_24__iadd__;
12890  #endif
12891  static PyObject *__pyx_pw_8PyClical_8clifford_25__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
12892  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12893  PyObject *__pyx_r = 0;
12894  __Pyx_RefNannyDeclarations
12895  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
12896  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12897  __pyx_r = __pyx_pf_8PyClical_8clifford_24__iadd__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
12898 
12899  /* function exit code */
12900  __Pyx_RefNannyFinishContext();
12901  return __pyx_r;
12902  }
12903 
12904  static PyObject *__pyx_pf_8PyClical_8clifford_24__iadd__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
12905  PyObject *__pyx_r = NULL;
12906  __Pyx_RefNannyDeclarations
12907  Clifford __pyx_t_1;
12908  Clifford __pyx_t_2;
12909  PyObject *__pyx_t_3 = NULL;
12910  int __pyx_lineno = 0;
12911  const char *__pyx_filename = NULL;
12912  int __pyx_clineno = 0;
12913  __Pyx_RefNannySetupContext("__iadd__", 1);
12914 
12915  /* "PyClical.pyx":767
12916  * 1+{2}
12917  * """
12918  * return self.wrap( self.unwrap() + toClifford(rhs) ) # <<<<<<<<<<<<<<
12919  *
12920  * def __sub__(lhs, rhs):
12921  */
12922  __Pyx_XDECREF(__pyx_r);
12923  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 767, __pyx_L1_error)
12924  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 767, __pyx_L1_error)
12925  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 + __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 767, __pyx_L1_error)
12926  __Pyx_GOTREF(__pyx_t_3);
12927  __pyx_r = __pyx_t_3;
12928  __pyx_t_3 = 0;
12929  goto __pyx_L0;
12930 
12931  /* "PyClical.pyx":760
12932  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) )
12933  *
12934  * def __iadd__(self, rhs): # <<<<<<<<<<<<<<
12935  * """
12936  * Geometric sum.
12937  */
12938 
12939  /* function exit code */
12940  __pyx_L1_error:;
12941  __Pyx_XDECREF(__pyx_t_3);
12942  __Pyx_AddTraceback("PyClical.clifford.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12943  __pyx_r = NULL;
12944  __pyx_L0:;
12945  __Pyx_XGIVEREF(__pyx_r);
12946  __Pyx_RefNannyFinishContext();
12947  return __pyx_r;
12948  }
12949 
12950  /* "PyClical.pyx":769
12951  * return self.wrap( self.unwrap() + toClifford(rhs) )
12952  *
12953  * def __sub__(lhs, rhs): # <<<<<<<<<<<<<<
12954  * """
12955  * Geometric difference.
12956  */
12957 
12958  /* Python wrapper */
12959  static PyObject *__pyx_pw_8PyClical_8clifford_27__sub__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
12960  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_26__sub__, "\n Geometric difference.\n\n >>> print(clifford(1) - clifford(\"{2}\"))\n 1-{2}\n >>> print(clifford(\"{1}\") - clifford(\"{2}\"))\n {1}-{2}\n ");
12961  #if CYTHON_UPDATE_DESCRIPTOR_DOC
12962  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_26__sub__;
12963  #endif
12964  static PyObject *__pyx_pw_8PyClical_8clifford_27__sub__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
12965  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
12966  PyObject *__pyx_r = 0;
12967  __Pyx_RefNannyDeclarations
12968  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
12969  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
12970  __pyx_r = __pyx_pf_8PyClical_8clifford_26__sub__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
12971 
12972  /* function exit code */
12973  __Pyx_RefNannyFinishContext();
12974  return __pyx_r;
12975  }
12976 
12977  static PyObject *__pyx_pf_8PyClical_8clifford_26__sub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
12978  PyObject *__pyx_r = NULL;
12979  __Pyx_RefNannyDeclarations
12980  PyObject *__pyx_t_1 = NULL;
12981  Clifford __pyx_t_2;
12982  Clifford __pyx_t_3;
12983  PyObject *__pyx_t_4 = NULL;
12984  int __pyx_lineno = 0;
12985  const char *__pyx_filename = NULL;
12986  int __pyx_clineno = 0;
12987  __Pyx_RefNannySetupContext("__sub__", 1);
12988 
12989  /* "PyClical.pyx":778
12990  * {1}-{2}
12991  * """
12992  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) ) # <<<<<<<<<<<<<<
12993  *
12994  * def __rsub__(rhs, lhs):
12995  */
12996  __Pyx_XDECREF(__pyx_r);
12997  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 778, __pyx_L1_error)
12998  __Pyx_GOTREF(__pyx_t_1);
12999  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 778, __pyx_L1_error)
13000  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 778, __pyx_L1_error)
13001  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 - __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 778, __pyx_L1_error)
13002  __Pyx_GOTREF(__pyx_t_4);
13003  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13004  __pyx_r = __pyx_t_4;
13005  __pyx_t_4 = 0;
13006  goto __pyx_L0;
13007 
13008  /* "PyClical.pyx":769
13009  * return self.wrap( self.unwrap() + toClifford(rhs) )
13010  *
13011  * def __sub__(lhs, rhs): # <<<<<<<<<<<<<<
13012  * """
13013  * Geometric difference.
13014  */
13015 
13016  /* function exit code */
13017  __pyx_L1_error:;
13018  __Pyx_XDECREF(__pyx_t_1);
13019  __Pyx_XDECREF(__pyx_t_4);
13020  __Pyx_AddTraceback("PyClical.clifford.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13021  __pyx_r = NULL;
13022  __pyx_L0:;
13023  __Pyx_XGIVEREF(__pyx_r);
13024  __Pyx_RefNannyFinishContext();
13025  return __pyx_r;
13026  }
13027 
13028  /* "PyClical.pyx":780
13029  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) )
13030  *
13031  * def __rsub__(rhs, lhs): # <<<<<<<<<<<<<<
13032  * """
13033  * Geometric difference.
13034  */
13035 
13036  /* Python wrapper */
13037  static PyObject *__pyx_pw_8PyClical_8clifford_29__rsub__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
13038  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_28__rsub__, "\n Geometric difference.\n\n >>> print(1 - clifford(\"{2}\"))\n 1-{2}\n ");
13039  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13040  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_28__rsub__;
13041  #endif
13042  static PyObject *__pyx_pw_8PyClical_8clifford_29__rsub__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13043  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13044  PyObject *__pyx_r = 0;
13045  __Pyx_RefNannyDeclarations
13046  __Pyx_RefNannySetupContext("__rsub__ (wrapper)", 0);
13047  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13048  __pyx_r = __pyx_pf_8PyClical_8clifford_28__rsub__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
13049 
13050  /* function exit code */
13051  __Pyx_RefNannyFinishContext();
13052  return __pyx_r;
13053  }
13054 
13055  static PyObject *__pyx_pf_8PyClical_8clifford_28__rsub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13056  PyObject *__pyx_r = NULL;
13057  __Pyx_RefNannyDeclarations
13058  PyObject *__pyx_t_1 = NULL;
13059  Clifford __pyx_t_2;
13060  Clifford __pyx_t_3;
13061  PyObject *__pyx_t_4 = NULL;
13062  int __pyx_lineno = 0;
13063  const char *__pyx_filename = NULL;
13064  int __pyx_clineno = 0;
13065  __Pyx_RefNannySetupContext("__rsub__", 1);
13066 
13067  /* "PyClical.pyx":787
13068  * 1-{2}
13069  * """
13070  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) ) # <<<<<<<<<<<<<<
13071  *
13072  * def __isub__(self, rhs):
13073  */
13074  __Pyx_XDECREF(__pyx_r);
13075  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
13076  __Pyx_GOTREF(__pyx_t_1);
13077  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 787, __pyx_L1_error)
13078  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 787, __pyx_L1_error)
13079  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 - __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 787, __pyx_L1_error)
13080  __Pyx_GOTREF(__pyx_t_4);
13081  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13082  __pyx_r = __pyx_t_4;
13083  __pyx_t_4 = 0;
13084  goto __pyx_L0;
13085 
13086  /* "PyClical.pyx":780
13087  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) )
13088  *
13089  * def __rsub__(rhs, lhs): # <<<<<<<<<<<<<<
13090  * """
13091  * Geometric difference.
13092  */
13093 
13094  /* function exit code */
13095  __pyx_L1_error:;
13096  __Pyx_XDECREF(__pyx_t_1);
13097  __Pyx_XDECREF(__pyx_t_4);
13098  __Pyx_AddTraceback("PyClical.clifford.__rsub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13099  __pyx_r = NULL;
13100  __pyx_L0:;
13101  __Pyx_XGIVEREF(__pyx_r);
13102  __Pyx_RefNannyFinishContext();
13103  return __pyx_r;
13104  }
13105 
13106  /* "PyClical.pyx":789
13107  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) )
13108  *
13109  * def __isub__(self, rhs): # <<<<<<<<<<<<<<
13110  * """
13111  * Geometric difference.
13112  */
13113 
13114  /* Python wrapper */
13115  static PyObject *__pyx_pw_8PyClical_8clifford_31__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
13116  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_30__isub__, "\n Geometric difference.\n\n >>> x = clifford(1); x -= clifford(\"{2}\"); print(x)\n 1-{2}\n ");
13117  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13118  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_30__isub__;
13119  #endif
13120  static PyObject *__pyx_pw_8PyClical_8clifford_31__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
13121  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13122  PyObject *__pyx_r = 0;
13123  __Pyx_RefNannyDeclarations
13124  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
13125  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13126  __pyx_r = __pyx_pf_8PyClical_8clifford_30__isub__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
13127 
13128  /* function exit code */
13129  __Pyx_RefNannyFinishContext();
13130  return __pyx_r;
13131  }
13132 
13133  static PyObject *__pyx_pf_8PyClical_8clifford_30__isub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
13134  PyObject *__pyx_r = NULL;
13135  __Pyx_RefNannyDeclarations
13136  Clifford __pyx_t_1;
13137  Clifford __pyx_t_2;
13138  PyObject *__pyx_t_3 = NULL;
13139  int __pyx_lineno = 0;
13140  const char *__pyx_filename = NULL;
13141  int __pyx_clineno = 0;
13142  __Pyx_RefNannySetupContext("__isub__", 1);
13143 
13144  /* "PyClical.pyx":796
13145  * 1-{2}
13146  * """
13147  * return self.wrap( self.unwrap() - toClifford(rhs) ) # <<<<<<<<<<<<<<
13148  *
13149  * def __mul__(lhs, rhs):
13150  */
13151  __Pyx_XDECREF(__pyx_r);
13152  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 796, __pyx_L1_error)
13153  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 796, __pyx_L1_error)
13154  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 - __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 796, __pyx_L1_error)
13155  __Pyx_GOTREF(__pyx_t_3);
13156  __pyx_r = __pyx_t_3;
13157  __pyx_t_3 = 0;
13158  goto __pyx_L0;
13159 
13160  /* "PyClical.pyx":789
13161  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) )
13162  *
13163  * def __isub__(self, rhs): # <<<<<<<<<<<<<<
13164  * """
13165  * Geometric difference.
13166  */
13167 
13168  /* function exit code */
13169  __pyx_L1_error:;
13170  __Pyx_XDECREF(__pyx_t_3);
13171  __Pyx_AddTraceback("PyClical.clifford.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13172  __pyx_r = NULL;
13173  __pyx_L0:;
13174  __Pyx_XGIVEREF(__pyx_r);
13175  __Pyx_RefNannyFinishContext();
13176  return __pyx_r;
13177  }
13178 
13179  /* "PyClical.pyx":798
13180  * return self.wrap( self.unwrap() - toClifford(rhs) )
13181  *
13182  * def __mul__(lhs, rhs): # <<<<<<<<<<<<<<
13183  * """
13184  * Geometric product.
13185  */
13186 
13187  /* Python wrapper */
13188  static PyObject *__pyx_pw_8PyClical_8clifford_33__mul__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
13189  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_32__mul__, "\n Geometric product.\n\n >>> print(clifford(\"{1}\") * clifford(\"{2}\"))\n {1,2}\n >>> print(clifford(2) * clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") * clifford(\"{1,2}\"))\n {2}\n ");
13190  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13191  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_32__mul__;
13192  #endif
13193  static PyObject *__pyx_pw_8PyClical_8clifford_33__mul__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13194  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13195  PyObject *__pyx_r = 0;
13196  __Pyx_RefNannyDeclarations
13197  __Pyx_RefNannySetupContext("__mul__ (wrapper)", 0);
13198  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13199  __pyx_r = __pyx_pf_8PyClical_8clifford_32__mul__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
13200 
13201  /* function exit code */
13202  __Pyx_RefNannyFinishContext();
13203  return __pyx_r;
13204  }
13205 
13206  static PyObject *__pyx_pf_8PyClical_8clifford_32__mul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13207  PyObject *__pyx_r = NULL;
13208  __Pyx_RefNannyDeclarations
13209  PyObject *__pyx_t_1 = NULL;
13210  Clifford __pyx_t_2;
13211  Clifford __pyx_t_3;
13212  PyObject *__pyx_t_4 = NULL;
13213  int __pyx_lineno = 0;
13214  const char *__pyx_filename = NULL;
13215  int __pyx_clineno = 0;
13216  __Pyx_RefNannySetupContext("__mul__", 1);
13217 
13218  /* "PyClical.pyx":809
13219  * {2}
13220  * """
13221  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) ) # <<<<<<<<<<<<<<
13222  *
13223  * def __rmul__(rhs, lhs):
13224  */
13225  __Pyx_XDECREF(__pyx_r);
13226  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 809, __pyx_L1_error)
13227  __Pyx_GOTREF(__pyx_t_1);
13228  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 809, __pyx_L1_error)
13229  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 809, __pyx_L1_error)
13230  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 * __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 809, __pyx_L1_error)
13231  __Pyx_GOTREF(__pyx_t_4);
13232  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13233  __pyx_r = __pyx_t_4;
13234  __pyx_t_4 = 0;
13235  goto __pyx_L0;
13236 
13237  /* "PyClical.pyx":798
13238  * return self.wrap( self.unwrap() - toClifford(rhs) )
13239  *
13240  * def __mul__(lhs, rhs): # <<<<<<<<<<<<<<
13241  * """
13242  * Geometric product.
13243  */
13244 
13245  /* function exit code */
13246  __pyx_L1_error:;
13247  __Pyx_XDECREF(__pyx_t_1);
13248  __Pyx_XDECREF(__pyx_t_4);
13249  __Pyx_AddTraceback("PyClical.clifford.__mul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13250  __pyx_r = NULL;
13251  __pyx_L0:;
13252  __Pyx_XGIVEREF(__pyx_r);
13253  __Pyx_RefNannyFinishContext();
13254  return __pyx_r;
13255  }
13256 
13257  /* "PyClical.pyx":811
13258  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) )
13259  *
13260  * def __rmul__(rhs, lhs): # <<<<<<<<<<<<<<
13261  * """
13262  * Geometric product.
13263  */
13264 
13265  /* Python wrapper */
13266  static PyObject *__pyx_pw_8PyClical_8clifford_35__rmul__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
13267  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_34__rmul__, "\n Geometric product.\n\n >>> print(2 * clifford(\"{2}\"))\n 2{2}\n ");
13268  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13269  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_34__rmul__;
13270  #endif
13271  static PyObject *__pyx_pw_8PyClical_8clifford_35__rmul__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13272  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13273  PyObject *__pyx_r = 0;
13274  __Pyx_RefNannyDeclarations
13275  __Pyx_RefNannySetupContext("__rmul__ (wrapper)", 0);
13276  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13277  __pyx_r = __pyx_pf_8PyClical_8clifford_34__rmul__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
13278 
13279  /* function exit code */
13280  __Pyx_RefNannyFinishContext();
13281  return __pyx_r;
13282  }
13283 
13284  static PyObject *__pyx_pf_8PyClical_8clifford_34__rmul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13285  PyObject *__pyx_r = NULL;
13286  __Pyx_RefNannyDeclarations
13287  PyObject *__pyx_t_1 = NULL;
13288  Clifford __pyx_t_2;
13289  Clifford __pyx_t_3;
13290  PyObject *__pyx_t_4 = NULL;
13291  int __pyx_lineno = 0;
13292  const char *__pyx_filename = NULL;
13293  int __pyx_clineno = 0;
13294  __Pyx_RefNannySetupContext("__rmul__", 1);
13295 
13296  /* "PyClical.pyx":818
13297  * 2{2}
13298  * """
13299  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) ) # <<<<<<<<<<<<<<
13300  *
13301  * def __imul__(self, rhs):
13302  */
13303  __Pyx_XDECREF(__pyx_r);
13304  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 818, __pyx_L1_error)
13305  __Pyx_GOTREF(__pyx_t_1);
13306  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 818, __pyx_L1_error)
13307  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 818, __pyx_L1_error)
13308  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 * __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error)
13309  __Pyx_GOTREF(__pyx_t_4);
13310  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13311  __pyx_r = __pyx_t_4;
13312  __pyx_t_4 = 0;
13313  goto __pyx_L0;
13314 
13315  /* "PyClical.pyx":811
13316  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) )
13317  *
13318  * def __rmul__(rhs, lhs): # <<<<<<<<<<<<<<
13319  * """
13320  * Geometric product.
13321  */
13322 
13323  /* function exit code */
13324  __pyx_L1_error:;
13325  __Pyx_XDECREF(__pyx_t_1);
13326  __Pyx_XDECREF(__pyx_t_4);
13327  __Pyx_AddTraceback("PyClical.clifford.__rmul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13328  __pyx_r = NULL;
13329  __pyx_L0:;
13330  __Pyx_XGIVEREF(__pyx_r);
13331  __Pyx_RefNannyFinishContext();
13332  return __pyx_r;
13333  }
13334 
13335  /* "PyClical.pyx":820
13336  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) )
13337  *
13338  * def __imul__(self, rhs): # <<<<<<<<<<<<<<
13339  * """
13340  * Geometric product.
13341  */
13342 
13343  /* Python wrapper */
13344  static PyObject *__pyx_pw_8PyClical_8clifford_37__imul__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
13345  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_36__imul__, "\n Geometric product.\n\n >>> x = clifford(2); x *= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x *= clifford(\"{2}\"); print(x)\n {1,2}\n >>> x = clifford(\"{1}\"); x *= clifford(\"{1,2}\"); print(x)\n {2}\n ");
13346  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13347  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_36__imul__;
13348  #endif
13349  static PyObject *__pyx_pw_8PyClical_8clifford_37__imul__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
13350  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13351  PyObject *__pyx_r = 0;
13352  __Pyx_RefNannyDeclarations
13353  __Pyx_RefNannySetupContext("__imul__ (wrapper)", 0);
13354  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13355  __pyx_r = __pyx_pf_8PyClical_8clifford_36__imul__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
13356 
13357  /* function exit code */
13358  __Pyx_RefNannyFinishContext();
13359  return __pyx_r;
13360  }
13361 
13362  static PyObject *__pyx_pf_8PyClical_8clifford_36__imul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
13363  PyObject *__pyx_r = NULL;
13364  __Pyx_RefNannyDeclarations
13365  Clifford __pyx_t_1;
13366  Clifford __pyx_t_2;
13367  PyObject *__pyx_t_3 = NULL;
13368  int __pyx_lineno = 0;
13369  const char *__pyx_filename = NULL;
13370  int __pyx_clineno = 0;
13371  __Pyx_RefNannySetupContext("__imul__", 1);
13372 
13373  /* "PyClical.pyx":831
13374  * {2}
13375  * """
13376  * return self.wrap( self.unwrap() * toClifford(rhs) ) # <<<<<<<<<<<<<<
13377  *
13378  * def __mod__(lhs, rhs):
13379  */
13380  __Pyx_XDECREF(__pyx_r);
13381  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 831, __pyx_L1_error)
13382  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 831, __pyx_L1_error)
13383  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 * __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 831, __pyx_L1_error)
13384  __Pyx_GOTREF(__pyx_t_3);
13385  __pyx_r = __pyx_t_3;
13386  __pyx_t_3 = 0;
13387  goto __pyx_L0;
13388 
13389  /* "PyClical.pyx":820
13390  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) )
13391  *
13392  * def __imul__(self, rhs): # <<<<<<<<<<<<<<
13393  * """
13394  * Geometric product.
13395  */
13396 
13397  /* function exit code */
13398  __pyx_L1_error:;
13399  __Pyx_XDECREF(__pyx_t_3);
13400  __Pyx_AddTraceback("PyClical.clifford.__imul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13401  __pyx_r = NULL;
13402  __pyx_L0:;
13403  __Pyx_XGIVEREF(__pyx_r);
13404  __Pyx_RefNannyFinishContext();
13405  return __pyx_r;
13406  }
13407 
13408  /* "PyClical.pyx":833
13409  * return self.wrap( self.unwrap() * toClifford(rhs) )
13410  *
13411  * def __mod__(lhs, rhs): # <<<<<<<<<<<<<<
13412  * """
13413  * Contraction.
13414  */
13415 
13416  /* Python wrapper */
13417  static PyObject *__pyx_pw_8PyClical_8clifford_39__mod__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
13418  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_38__mod__, "\n Contraction.\n\n >>> print(clifford(\"{1}\") % clifford(\"{2}\"))\n 0\n >>> print(clifford(2) % clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") % clifford(\"{1}\"))\n 1\n >>> print(clifford(\"{1}\") % clifford(\"{1,2}\"))\n {2}\n ");
13419  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13420  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_38__mod__;
13421  #endif
13422  static PyObject *__pyx_pw_8PyClical_8clifford_39__mod__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13423  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13424  PyObject *__pyx_r = 0;
13425  __Pyx_RefNannyDeclarations
13426  __Pyx_RefNannySetupContext("__mod__ (wrapper)", 0);
13427  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13428  __pyx_r = __pyx_pf_8PyClical_8clifford_38__mod__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
13429 
13430  /* function exit code */
13431  __Pyx_RefNannyFinishContext();
13432  return __pyx_r;
13433  }
13434 
13435  static PyObject *__pyx_pf_8PyClical_8clifford_38__mod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13436  PyObject *__pyx_r = NULL;
13437  __Pyx_RefNannyDeclarations
13438  PyObject *__pyx_t_1 = NULL;
13439  Clifford __pyx_t_2;
13440  Clifford __pyx_t_3;
13441  PyObject *__pyx_t_4 = NULL;
13442  int __pyx_lineno = 0;
13443  const char *__pyx_filename = NULL;
13444  int __pyx_clineno = 0;
13445  __Pyx_RefNannySetupContext("__mod__", 1);
13446 
13447  /* "PyClical.pyx":846
13448  * {2}
13449  * """
13450  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) ) # <<<<<<<<<<<<<<
13451  *
13452  * def __rmod__(rhs, lhs):
13453  */
13454  __Pyx_XDECREF(__pyx_r);
13455  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 846, __pyx_L1_error)
13456  __Pyx_GOTREF(__pyx_t_1);
13457  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 846, __pyx_L1_error)
13458  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 846, __pyx_L1_error)
13459  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 % __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 846, __pyx_L1_error)
13460  __Pyx_GOTREF(__pyx_t_4);
13461  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13462  __pyx_r = __pyx_t_4;
13463  __pyx_t_4 = 0;
13464  goto __pyx_L0;
13465 
13466  /* "PyClical.pyx":833
13467  * return self.wrap( self.unwrap() * toClifford(rhs) )
13468  *
13469  * def __mod__(lhs, rhs): # <<<<<<<<<<<<<<
13470  * """
13471  * Contraction.
13472  */
13473 
13474  /* function exit code */
13475  __pyx_L1_error:;
13476  __Pyx_XDECREF(__pyx_t_1);
13477  __Pyx_XDECREF(__pyx_t_4);
13478  __Pyx_AddTraceback("PyClical.clifford.__mod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13479  __pyx_r = NULL;
13480  __pyx_L0:;
13481  __Pyx_XGIVEREF(__pyx_r);
13482  __Pyx_RefNannyFinishContext();
13483  return __pyx_r;
13484  }
13485 
13486  /* "PyClical.pyx":848
13487  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) )
13488  *
13489  * def __rmod__(rhs, lhs): # <<<<<<<<<<<<<<
13490  * """
13491  * Contraction.
13492  */
13493 
13494  /* Python wrapper */
13495  static PyObject *__pyx_pw_8PyClical_8clifford_41__rmod__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
13496  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_40__rmod__, "\n Contraction.\n\n >>> print(2 % clifford(\"{2}\"))\n 2{2}\n ");
13497  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13498  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_40__rmod__;
13499  #endif
13500  static PyObject *__pyx_pw_8PyClical_8clifford_41__rmod__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13501  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13502  PyObject *__pyx_r = 0;
13503  __Pyx_RefNannyDeclarations
13504  __Pyx_RefNannySetupContext("__rmod__ (wrapper)", 0);
13505  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13506  __pyx_r = __pyx_pf_8PyClical_8clifford_40__rmod__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
13507 
13508  /* function exit code */
13509  __Pyx_RefNannyFinishContext();
13510  return __pyx_r;
13511  }
13512 
13513  static PyObject *__pyx_pf_8PyClical_8clifford_40__rmod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13514  PyObject *__pyx_r = NULL;
13515  __Pyx_RefNannyDeclarations
13516  PyObject *__pyx_t_1 = NULL;
13517  Clifford __pyx_t_2;
13518  Clifford __pyx_t_3;
13519  PyObject *__pyx_t_4 = NULL;
13520  int __pyx_lineno = 0;
13521  const char *__pyx_filename = NULL;
13522  int __pyx_clineno = 0;
13523  __Pyx_RefNannySetupContext("__rmod__", 1);
13524 
13525  /* "PyClical.pyx":855
13526  * 2{2}
13527  * """
13528  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) ) # <<<<<<<<<<<<<<
13529  *
13530  * def __imod__(self, rhs):
13531  */
13532  __Pyx_XDECREF(__pyx_r);
13533  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 855, __pyx_L1_error)
13534  __Pyx_GOTREF(__pyx_t_1);
13535  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 855, __pyx_L1_error)
13536  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 855, __pyx_L1_error)
13537  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 % __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 855, __pyx_L1_error)
13538  __Pyx_GOTREF(__pyx_t_4);
13539  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13540  __pyx_r = __pyx_t_4;
13541  __pyx_t_4 = 0;
13542  goto __pyx_L0;
13543 
13544  /* "PyClical.pyx":848
13545  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) )
13546  *
13547  * def __rmod__(rhs, lhs): # <<<<<<<<<<<<<<
13548  * """
13549  * Contraction.
13550  */
13551 
13552  /* function exit code */
13553  __pyx_L1_error:;
13554  __Pyx_XDECREF(__pyx_t_1);
13555  __Pyx_XDECREF(__pyx_t_4);
13556  __Pyx_AddTraceback("PyClical.clifford.__rmod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13557  __pyx_r = NULL;
13558  __pyx_L0:;
13559  __Pyx_XGIVEREF(__pyx_r);
13560  __Pyx_RefNannyFinishContext();
13561  return __pyx_r;
13562  }
13563 
13564  /* "PyClical.pyx":857
13565  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) )
13566  *
13567  * def __imod__(self, rhs): # <<<<<<<<<<<<<<
13568  * """
13569  * Contraction.
13570  */
13571 
13572  /* Python wrapper */
13573  static PyObject *__pyx_pw_8PyClical_8clifford_43__imod__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
13574  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_42__imod__, "\n Contraction.\n\n >>> x = clifford(\"{1}\"); x %= clifford(\"{2}\"); print(x)\n 0\n >>> x = clifford(2); x %= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x %= clifford(\"{1}\"); print(x)\n 1\n >>> x = clifford(\"{1}\"); x %= clifford(\"{1,2}\"); print(x)\n {2}\n ");
13575  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13576  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_42__imod__;
13577  #endif
13578  static PyObject *__pyx_pw_8PyClical_8clifford_43__imod__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
13579  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13580  PyObject *__pyx_r = 0;
13581  __Pyx_RefNannyDeclarations
13582  __Pyx_RefNannySetupContext("__imod__ (wrapper)", 0);
13583  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13584  __pyx_r = __pyx_pf_8PyClical_8clifford_42__imod__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
13585 
13586  /* function exit code */
13587  __Pyx_RefNannyFinishContext();
13588  return __pyx_r;
13589  }
13590 
13591  static PyObject *__pyx_pf_8PyClical_8clifford_42__imod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
13592  PyObject *__pyx_r = NULL;
13593  __Pyx_RefNannyDeclarations
13594  Clifford __pyx_t_1;
13595  Clifford __pyx_t_2;
13596  PyObject *__pyx_t_3 = NULL;
13597  int __pyx_lineno = 0;
13598  const char *__pyx_filename = NULL;
13599  int __pyx_clineno = 0;
13600  __Pyx_RefNannySetupContext("__imod__", 1);
13601 
13602  /* "PyClical.pyx":870
13603  * {2}
13604  * """
13605  * return self.wrap( self.unwrap() % toClifford(rhs) ) # <<<<<<<<<<<<<<
13606  *
13607  * def __and__(lhs, rhs):
13608  */
13609  __Pyx_XDECREF(__pyx_r);
13610  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L1_error)
13611  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L1_error)
13612  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 % __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 870, __pyx_L1_error)
13613  __Pyx_GOTREF(__pyx_t_3);
13614  __pyx_r = __pyx_t_3;
13615  __pyx_t_3 = 0;
13616  goto __pyx_L0;
13617 
13618  /* "PyClical.pyx":857
13619  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) )
13620  *
13621  * def __imod__(self, rhs): # <<<<<<<<<<<<<<
13622  * """
13623  * Contraction.
13624  */
13625 
13626  /* function exit code */
13627  __pyx_L1_error:;
13628  __Pyx_XDECREF(__pyx_t_3);
13629  __Pyx_AddTraceback("PyClical.clifford.__imod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13630  __pyx_r = NULL;
13631  __pyx_L0:;
13632  __Pyx_XGIVEREF(__pyx_r);
13633  __Pyx_RefNannyFinishContext();
13634  return __pyx_r;
13635  }
13636 
13637  /* "PyClical.pyx":872
13638  * return self.wrap( self.unwrap() % toClifford(rhs) )
13639  *
13640  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
13641  * """
13642  * Inner product.
13643  */
13644 
13645  /* Python wrapper */
13646  static PyObject *__pyx_pw_8PyClical_8clifford_45__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
13647  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_44__and__, "\n Inner product.\n\n >>> print(clifford(\"{1}\") & clifford(\"{2}\"))\n 0\n >>> print(clifford(2) & clifford(\"{2}\"))\n 0\n >>> print(clifford(\"{1}\") & clifford(\"{1}\"))\n 1\n >>> print(clifford(\"{1}\") & clifford(\"{1,2}\"))\n {2}\n ");
13648  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13649  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_44__and__;
13650  #endif
13651  static PyObject *__pyx_pw_8PyClical_8clifford_45__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13652  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13653  PyObject *__pyx_r = 0;
13654  __Pyx_RefNannyDeclarations
13655  __Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
13656  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13657  __pyx_r = __pyx_pf_8PyClical_8clifford_44__and__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
13658 
13659  /* function exit code */
13660  __Pyx_RefNannyFinishContext();
13661  return __pyx_r;
13662  }
13663 
13664  static PyObject *__pyx_pf_8PyClical_8clifford_44__and__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13665  PyObject *__pyx_r = NULL;
13666  __Pyx_RefNannyDeclarations
13667  PyObject *__pyx_t_1 = NULL;
13668  Clifford __pyx_t_2;
13669  Clifford __pyx_t_3;
13670  PyObject *__pyx_t_4 = NULL;
13671  int __pyx_lineno = 0;
13672  const char *__pyx_filename = NULL;
13673  int __pyx_clineno = 0;
13674  __Pyx_RefNannySetupContext("__and__", 1);
13675 
13676  /* "PyClical.pyx":885
13677  * {2}
13678  * """
13679  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) ) # <<<<<<<<<<<<<<
13680  *
13681  * def __rand__(rhs, lhs):
13682  */
13683  __Pyx_XDECREF(__pyx_r);
13684  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 885, __pyx_L1_error)
13685  __Pyx_GOTREF(__pyx_t_1);
13686  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 885, __pyx_L1_error)
13687  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 885, __pyx_L1_error)
13688  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 & __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 885, __pyx_L1_error)
13689  __Pyx_GOTREF(__pyx_t_4);
13690  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13691  __pyx_r = __pyx_t_4;
13692  __pyx_t_4 = 0;
13693  goto __pyx_L0;
13694 
13695  /* "PyClical.pyx":872
13696  * return self.wrap( self.unwrap() % toClifford(rhs) )
13697  *
13698  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
13699  * """
13700  * Inner product.
13701  */
13702 
13703  /* function exit code */
13704  __pyx_L1_error:;
13705  __Pyx_XDECREF(__pyx_t_1);
13706  __Pyx_XDECREF(__pyx_t_4);
13707  __Pyx_AddTraceback("PyClical.clifford.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13708  __pyx_r = NULL;
13709  __pyx_L0:;
13710  __Pyx_XGIVEREF(__pyx_r);
13711  __Pyx_RefNannyFinishContext();
13712  return __pyx_r;
13713  }
13714 
13715  /* "PyClical.pyx":887
13716  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) )
13717  *
13718  * def __rand__(rhs, lhs): # <<<<<<<<<<<<<<
13719  * """
13720  * Inner product.
13721  */
13722 
13723  /* Python wrapper */
13724  static PyObject *__pyx_pw_8PyClical_8clifford_47__rand__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
13725  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_46__rand__, "\n Inner product.\n\n >>> print(2 & clifford(\"{2}\"))\n 0\n ");
13726  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13727  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_46__rand__;
13728  #endif
13729  static PyObject *__pyx_pw_8PyClical_8clifford_47__rand__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13730  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13731  PyObject *__pyx_r = 0;
13732  __Pyx_RefNannyDeclarations
13733  __Pyx_RefNannySetupContext("__rand__ (wrapper)", 0);
13734  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13735  __pyx_r = __pyx_pf_8PyClical_8clifford_46__rand__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
13736 
13737  /* function exit code */
13738  __Pyx_RefNannyFinishContext();
13739  return __pyx_r;
13740  }
13741 
13742  static PyObject *__pyx_pf_8PyClical_8clifford_46__rand__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13743  PyObject *__pyx_r = NULL;
13744  __Pyx_RefNannyDeclarations
13745  PyObject *__pyx_t_1 = NULL;
13746  Clifford __pyx_t_2;
13747  Clifford __pyx_t_3;
13748  PyObject *__pyx_t_4 = NULL;
13749  int __pyx_lineno = 0;
13750  const char *__pyx_filename = NULL;
13751  int __pyx_clineno = 0;
13752  __Pyx_RefNannySetupContext("__rand__", 1);
13753 
13754  /* "PyClical.pyx":894
13755  * 0
13756  * """
13757  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) ) # <<<<<<<<<<<<<<
13758  *
13759  * def __iand__(self, rhs):
13760  */
13761  __Pyx_XDECREF(__pyx_r);
13762  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error)
13763  __Pyx_GOTREF(__pyx_t_1);
13764  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 894, __pyx_L1_error)
13765  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 894, __pyx_L1_error)
13766  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 & __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 894, __pyx_L1_error)
13767  __Pyx_GOTREF(__pyx_t_4);
13768  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13769  __pyx_r = __pyx_t_4;
13770  __pyx_t_4 = 0;
13771  goto __pyx_L0;
13772 
13773  /* "PyClical.pyx":887
13774  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) )
13775  *
13776  * def __rand__(rhs, lhs): # <<<<<<<<<<<<<<
13777  * """
13778  * Inner product.
13779  */
13780 
13781  /* function exit code */
13782  __pyx_L1_error:;
13783  __Pyx_XDECREF(__pyx_t_1);
13784  __Pyx_XDECREF(__pyx_t_4);
13785  __Pyx_AddTraceback("PyClical.clifford.__rand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13786  __pyx_r = NULL;
13787  __pyx_L0:;
13788  __Pyx_XGIVEREF(__pyx_r);
13789  __Pyx_RefNannyFinishContext();
13790  return __pyx_r;
13791  }
13792 
13793  /* "PyClical.pyx":896
13794  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) )
13795  *
13796  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
13797  * """
13798  * Inner product.
13799  */
13800 
13801  /* Python wrapper */
13802  static PyObject *__pyx_pw_8PyClical_8clifford_49__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
13803  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_48__iand__, "\n Inner product.\n\n >>> x = clifford(\"{1}\"); x &= clifford(\"{2}\"); print(x)\n 0\n >>> x = clifford(2); x &= clifford(\"{2}\"); print(x)\n 0\n >>> x = clifford(\"{1}\"); x &= clifford(\"{1}\"); print(x)\n 1\n >>> x = clifford(\"{1}\"); x &= clifford(\"{1,2}\"); print(x)\n {2}\n ");
13804  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13805  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_48__iand__;
13806  #endif
13807  static PyObject *__pyx_pw_8PyClical_8clifford_49__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
13808  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13809  PyObject *__pyx_r = 0;
13810  __Pyx_RefNannyDeclarations
13811  __Pyx_RefNannySetupContext("__iand__ (wrapper)", 0);
13812  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13813  __pyx_r = __pyx_pf_8PyClical_8clifford_48__iand__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
13814 
13815  /* function exit code */
13816  __Pyx_RefNannyFinishContext();
13817  return __pyx_r;
13818  }
13819 
13820  static PyObject *__pyx_pf_8PyClical_8clifford_48__iand__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
13821  PyObject *__pyx_r = NULL;
13822  __Pyx_RefNannyDeclarations
13823  Clifford __pyx_t_1;
13824  Clifford __pyx_t_2;
13825  PyObject *__pyx_t_3 = NULL;
13826  int __pyx_lineno = 0;
13827  const char *__pyx_filename = NULL;
13828  int __pyx_clineno = 0;
13829  __Pyx_RefNannySetupContext("__iand__", 1);
13830 
13831  /* "PyClical.pyx":909
13832  * {2}
13833  * """
13834  * return self.wrap( self.unwrap() & toClifford(rhs) ) # <<<<<<<<<<<<<<
13835  *
13836  * def __xor__(lhs, rhs):
13837  */
13838  __Pyx_XDECREF(__pyx_r);
13839  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 909, __pyx_L1_error)
13840  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 909, __pyx_L1_error)
13841  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 & __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 909, __pyx_L1_error)
13842  __Pyx_GOTREF(__pyx_t_3);
13843  __pyx_r = __pyx_t_3;
13844  __pyx_t_3 = 0;
13845  goto __pyx_L0;
13846 
13847  /* "PyClical.pyx":896
13848  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) )
13849  *
13850  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
13851  * """
13852  * Inner product.
13853  */
13854 
13855  /* function exit code */
13856  __pyx_L1_error:;
13857  __Pyx_XDECREF(__pyx_t_3);
13858  __Pyx_AddTraceback("PyClical.clifford.__iand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13859  __pyx_r = NULL;
13860  __pyx_L0:;
13861  __Pyx_XGIVEREF(__pyx_r);
13862  __Pyx_RefNannyFinishContext();
13863  return __pyx_r;
13864  }
13865 
13866  /* "PyClical.pyx":911
13867  * return self.wrap( self.unwrap() & toClifford(rhs) )
13868  *
13869  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
13870  * """
13871  * Outer product.
13872  */
13873 
13874  /* Python wrapper */
13875  static PyObject *__pyx_pw_8PyClical_8clifford_51__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
13876  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_50__xor__, "\n Outer product.\n\n >>> print(clifford(\"{1}\") ^ clifford(\"{2}\"))\n {1,2}\n >>> print(clifford(2) ^ clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") ^ clifford(\"{1}\"))\n 0\n >>> print(clifford(\"{1}\") ^ clifford(\"{1,2}\"))\n 0\n ");
13877  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13878  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_50__xor__;
13879  #endif
13880  static PyObject *__pyx_pw_8PyClical_8clifford_51__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13881  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13882  PyObject *__pyx_r = 0;
13883  __Pyx_RefNannyDeclarations
13884  __Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
13885  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13886  __pyx_r = __pyx_pf_8PyClical_8clifford_50__xor__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
13887 
13888  /* function exit code */
13889  __Pyx_RefNannyFinishContext();
13890  return __pyx_r;
13891  }
13892 
13893  static PyObject *__pyx_pf_8PyClical_8clifford_50__xor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
13894  PyObject *__pyx_r = NULL;
13895  __Pyx_RefNannyDeclarations
13896  PyObject *__pyx_t_1 = NULL;
13897  Clifford __pyx_t_2;
13898  Clifford __pyx_t_3;
13899  PyObject *__pyx_t_4 = NULL;
13900  int __pyx_lineno = 0;
13901  const char *__pyx_filename = NULL;
13902  int __pyx_clineno = 0;
13903  __Pyx_RefNannySetupContext("__xor__", 1);
13904 
13905  /* "PyClical.pyx":924
13906  * 0
13907  * """
13908  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) ) # <<<<<<<<<<<<<<
13909  *
13910  * def __rxor__(rhs, lhs):
13911  */
13912  __Pyx_XDECREF(__pyx_r);
13913  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error)
13914  __Pyx_GOTREF(__pyx_t_1);
13915  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 924, __pyx_L1_error)
13916  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 924, __pyx_L1_error)
13917  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 ^ __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 924, __pyx_L1_error)
13918  __Pyx_GOTREF(__pyx_t_4);
13919  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13920  __pyx_r = __pyx_t_4;
13921  __pyx_t_4 = 0;
13922  goto __pyx_L0;
13923 
13924  /* "PyClical.pyx":911
13925  * return self.wrap( self.unwrap() & toClifford(rhs) )
13926  *
13927  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
13928  * """
13929  * Outer product.
13930  */
13931 
13932  /* function exit code */
13933  __pyx_L1_error:;
13934  __Pyx_XDECREF(__pyx_t_1);
13935  __Pyx_XDECREF(__pyx_t_4);
13936  __Pyx_AddTraceback("PyClical.clifford.__xor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13937  __pyx_r = NULL;
13938  __pyx_L0:;
13939  __Pyx_XGIVEREF(__pyx_r);
13940  __Pyx_RefNannyFinishContext();
13941  return __pyx_r;
13942  }
13943 
13944  /* "PyClical.pyx":926
13945  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) )
13946  *
13947  * def __rxor__(rhs, lhs): # <<<<<<<<<<<<<<
13948  * """
13949  * Outer product.
13950  */
13951 
13952  /* Python wrapper */
13953  static PyObject *__pyx_pw_8PyClical_8clifford_53__rxor__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
13954  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_52__rxor__, "\n Outer product.\n\n >>> print(2 ^ clifford(\"{2}\"))\n 2{2}\n ");
13955  #if CYTHON_UPDATE_DESCRIPTOR_DOC
13956  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_52__rxor__;
13957  #endif
13958  static PyObject *__pyx_pw_8PyClical_8clifford_53__rxor__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13959  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
13960  PyObject *__pyx_r = 0;
13961  __Pyx_RefNannyDeclarations
13962  __Pyx_RefNannySetupContext("__rxor__ (wrapper)", 0);
13963  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
13964  __pyx_r = __pyx_pf_8PyClical_8clifford_52__rxor__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
13965 
13966  /* function exit code */
13967  __Pyx_RefNannyFinishContext();
13968  return __pyx_r;
13969  }
13970 
13971  static PyObject *__pyx_pf_8PyClical_8clifford_52__rxor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
13972  PyObject *__pyx_r = NULL;
13973  __Pyx_RefNannyDeclarations
13974  PyObject *__pyx_t_1 = NULL;
13975  Clifford __pyx_t_2;
13976  Clifford __pyx_t_3;
13977  PyObject *__pyx_t_4 = NULL;
13978  int __pyx_lineno = 0;
13979  const char *__pyx_filename = NULL;
13980  int __pyx_clineno = 0;
13981  __Pyx_RefNannySetupContext("__rxor__", 1);
13982 
13983  /* "PyClical.pyx":933
13984  * 2{2}
13985  * """
13986  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) ) # <<<<<<<<<<<<<<
13987  *
13988  * def __ixor__(self, rhs):
13989  */
13990  __Pyx_XDECREF(__pyx_r);
13991  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error)
13992  __Pyx_GOTREF(__pyx_t_1);
13993  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 933, __pyx_L1_error)
13994  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 933, __pyx_L1_error)
13995  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 ^ __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 933, __pyx_L1_error)
13996  __Pyx_GOTREF(__pyx_t_4);
13997  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13998  __pyx_r = __pyx_t_4;
13999  __pyx_t_4 = 0;
14000  goto __pyx_L0;
14001 
14002  /* "PyClical.pyx":926
14003  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) )
14004  *
14005  * def __rxor__(rhs, lhs): # <<<<<<<<<<<<<<
14006  * """
14007  * Outer product.
14008  */
14009 
14010  /* function exit code */
14011  __pyx_L1_error:;
14012  __Pyx_XDECREF(__pyx_t_1);
14013  __Pyx_XDECREF(__pyx_t_4);
14014  __Pyx_AddTraceback("PyClical.clifford.__rxor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14015  __pyx_r = NULL;
14016  __pyx_L0:;
14017  __Pyx_XGIVEREF(__pyx_r);
14018  __Pyx_RefNannyFinishContext();
14019  return __pyx_r;
14020  }
14021 
14022  /* "PyClical.pyx":935
14023  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) )
14024  *
14025  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
14026  * """
14027  * Outer product.
14028  */
14029 
14030  /* Python wrapper */
14031  static PyObject *__pyx_pw_8PyClical_8clifford_55__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
14032  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_54__ixor__, "\n Outer product.\n\n >>> x = clifford(\"{1}\"); x ^= clifford(\"{2}\"); print(x)\n {1,2}\n >>> x = clifford(2); x ^= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x ^= clifford(\"{1}\"); print(x)\n 0\n >>> x = clifford(\"{1}\"); x ^= clifford(\"{1,2}\"); print(x)\n 0\n ");
14033  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14034  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_54__ixor__;
14035  #endif
14036  static PyObject *__pyx_pw_8PyClical_8clifford_55__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
14037  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14038  PyObject *__pyx_r = 0;
14039  __Pyx_RefNannyDeclarations
14040  __Pyx_RefNannySetupContext("__ixor__ (wrapper)", 0);
14041  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14042  __pyx_r = __pyx_pf_8PyClical_8clifford_54__ixor__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
14043 
14044  /* function exit code */
14045  __Pyx_RefNannyFinishContext();
14046  return __pyx_r;
14047  }
14048 
14049  static PyObject *__pyx_pf_8PyClical_8clifford_54__ixor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
14050  PyObject *__pyx_r = NULL;
14051  __Pyx_RefNannyDeclarations
14052  Clifford __pyx_t_1;
14053  Clifford __pyx_t_2;
14054  PyObject *__pyx_t_3 = NULL;
14055  int __pyx_lineno = 0;
14056  const char *__pyx_filename = NULL;
14057  int __pyx_clineno = 0;
14058  __Pyx_RefNannySetupContext("__ixor__", 1);
14059 
14060  /* "PyClical.pyx":948
14061  * 0
14062  * """
14063  * return self.wrap( self.unwrap() ^ toClifford(rhs) ) # <<<<<<<<<<<<<<
14064  *
14065  * def __truediv__(lhs, rhs):
14066  */
14067  __Pyx_XDECREF(__pyx_r);
14068  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 948, __pyx_L1_error)
14069  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 948, __pyx_L1_error)
14070  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 ^ __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 948, __pyx_L1_error)
14071  __Pyx_GOTREF(__pyx_t_3);
14072  __pyx_r = __pyx_t_3;
14073  __pyx_t_3 = 0;
14074  goto __pyx_L0;
14075 
14076  /* "PyClical.pyx":935
14077  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) )
14078  *
14079  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
14080  * """
14081  * Outer product.
14082  */
14083 
14084  /* function exit code */
14085  __pyx_L1_error:;
14086  __Pyx_XDECREF(__pyx_t_3);
14087  __Pyx_AddTraceback("PyClical.clifford.__ixor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14088  __pyx_r = NULL;
14089  __pyx_L0:;
14090  __Pyx_XGIVEREF(__pyx_r);
14091  __Pyx_RefNannyFinishContext();
14092  return __pyx_r;
14093  }
14094 
14095  /* "PyClical.pyx":950
14096  * return self.wrap( self.unwrap() ^ toClifford(rhs) )
14097  *
14098  * def __truediv__(lhs, rhs): # <<<<<<<<<<<<<<
14099  * """
14100  * Geometric quotient.
14101  */
14102 
14103  /* Python wrapper */
14104  static PyObject *__pyx_pw_8PyClical_8clifford_57__truediv__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
14105  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_56__truediv__, "\n Geometric quotient.\n\n >>> print(clifford(\"{1}\") / clifford(\"{2}\"))\n {1,2}\n >>> print(clifford(2) / clifford(\"{2}\"))\n 2{2}\n >>> print(clifford(\"{1}\") / clifford(\"{1}\"))\n 1\n >>> print(clifford(\"{1}\") / clifford(\"{1,2}\"))\n -{2}\n ");
14106  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14107  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_56__truediv__;
14108  #endif
14109  static PyObject *__pyx_pw_8PyClical_8clifford_57__truediv__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
14110  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14111  PyObject *__pyx_r = 0;
14112  __Pyx_RefNannyDeclarations
14113  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
14114  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14115  __pyx_r = __pyx_pf_8PyClical_8clifford_56__truediv__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
14116 
14117  /* function exit code */
14118  __Pyx_RefNannyFinishContext();
14119  return __pyx_r;
14120  }
14121 
14122  static PyObject *__pyx_pf_8PyClical_8clifford_56__truediv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
14123  PyObject *__pyx_r = NULL;
14124  __Pyx_RefNannyDeclarations
14125  PyObject *__pyx_t_1 = NULL;
14126  Clifford __pyx_t_2;
14127  Clifford __pyx_t_3;
14128  PyObject *__pyx_t_4 = NULL;
14129  int __pyx_lineno = 0;
14130  const char *__pyx_filename = NULL;
14131  int __pyx_clineno = 0;
14132  __Pyx_RefNannySetupContext("__truediv__", 1);
14133 
14134  /* "PyClical.pyx":963
14135  * -{2}
14136  * """
14137  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) ) # <<<<<<<<<<<<<<
14138  *
14139  * def __rtruediv__(rhs, lhs):
14140  */
14141  __Pyx_XDECREF(__pyx_r);
14142  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error)
14143  __Pyx_GOTREF(__pyx_t_1);
14144  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 963, __pyx_L1_error)
14145  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 963, __pyx_L1_error)
14146  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 / __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 963, __pyx_L1_error)
14147  __Pyx_GOTREF(__pyx_t_4);
14148  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14149  __pyx_r = __pyx_t_4;
14150  __pyx_t_4 = 0;
14151  goto __pyx_L0;
14152 
14153  /* "PyClical.pyx":950
14154  * return self.wrap( self.unwrap() ^ toClifford(rhs) )
14155  *
14156  * def __truediv__(lhs, rhs): # <<<<<<<<<<<<<<
14157  * """
14158  * Geometric quotient.
14159  */
14160 
14161  /* function exit code */
14162  __pyx_L1_error:;
14163  __Pyx_XDECREF(__pyx_t_1);
14164  __Pyx_XDECREF(__pyx_t_4);
14165  __Pyx_AddTraceback("PyClical.clifford.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14166  __pyx_r = NULL;
14167  __pyx_L0:;
14168  __Pyx_XGIVEREF(__pyx_r);
14169  __Pyx_RefNannyFinishContext();
14170  return __pyx_r;
14171  }
14172 
14173  /* "PyClical.pyx":965
14174  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) )
14175  *
14176  * def __rtruediv__(rhs, lhs): # <<<<<<<<<<<<<<
14177  * """
14178  * Geometric quotient.
14179  */
14180 
14181  /* Python wrapper */
14182  static PyObject *__pyx_pw_8PyClical_8clifford_59__rtruediv__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs); /*proto*/
14183  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_58__rtruediv__, "\n Geometric quotient.\n\n >>> print(2 / clifford(\"{2}\"))\n 2{2}\n ");
14184  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14185  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_58__rtruediv__;
14186  #endif
14187  static PyObject *__pyx_pw_8PyClical_8clifford_59__rtruediv__(PyObject *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
14188  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14189  PyObject *__pyx_r = 0;
14190  __Pyx_RefNannyDeclarations
14191  __Pyx_RefNannySetupContext("__rtruediv__ (wrapper)", 0);
14192  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14193  __pyx_r = __pyx_pf_8PyClical_8clifford_58__rtruediv__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_rhs), ((PyObject *)__pyx_v_lhs));
14194 
14195  /* function exit code */
14196  __Pyx_RefNannyFinishContext();
14197  return __pyx_r;
14198  }
14199 
14200  static PyObject *__pyx_pf_8PyClical_8clifford_58__rtruediv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_rhs, PyObject *__pyx_v_lhs) {
14201  PyObject *__pyx_r = NULL;
14202  __Pyx_RefNannyDeclarations
14203  PyObject *__pyx_t_1 = NULL;
14204  Clifford __pyx_t_2;
14205  Clifford __pyx_t_3;
14206  PyObject *__pyx_t_4 = NULL;
14207  int __pyx_lineno = 0;
14208  const char *__pyx_filename = NULL;
14209  int __pyx_clineno = 0;
14210  __Pyx_RefNannySetupContext("__rtruediv__", 1);
14211 
14212  /* "PyClical.pyx":972
14213  * 2{2}
14214  * """
14215  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) ) # <<<<<<<<<<<<<<
14216  *
14217  * def __idiv__(self, rhs):
14218  */
14219  __Pyx_XDECREF(__pyx_r);
14220  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 972, __pyx_L1_error)
14221  __Pyx_GOTREF(__pyx_t_1);
14222  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 972, __pyx_L1_error)
14223  __pyx_t_3 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_rhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 972, __pyx_L1_error)
14224  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 / __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 972, __pyx_L1_error)
14225  __Pyx_GOTREF(__pyx_t_4);
14226  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14227  __pyx_r = __pyx_t_4;
14228  __pyx_t_4 = 0;
14229  goto __pyx_L0;
14230 
14231  /* "PyClical.pyx":965
14232  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) )
14233  *
14234  * def __rtruediv__(rhs, lhs): # <<<<<<<<<<<<<<
14235  * """
14236  * Geometric quotient.
14237  */
14238 
14239  /* function exit code */
14240  __pyx_L1_error:;
14241  __Pyx_XDECREF(__pyx_t_1);
14242  __Pyx_XDECREF(__pyx_t_4);
14243  __Pyx_AddTraceback("PyClical.clifford.__rtruediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14244  __pyx_r = NULL;
14245  __pyx_L0:;
14246  __Pyx_XGIVEREF(__pyx_r);
14247  __Pyx_RefNannyFinishContext();
14248  return __pyx_r;
14249  }
14250 
14251  /* "PyClical.pyx":974
14252  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) )
14253  *
14254  * def __idiv__(self, rhs): # <<<<<<<<<<<<<<
14255  * """
14256  * Geometric quotient.
14257  */
14258 
14259  /* Python wrapper */
14260  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
14261  static PyObject *__pyx_pw_8PyClical_8clifford_61__idiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
14262  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_60__idiv__, "\n Geometric quotient.\n\n >>> x = clifford(\"{1}\"); x /= clifford(\"{2}\"); print(x)\n {1,2}\n >>> x = clifford(2); x /= clifford(\"{2}\"); print(x)\n 2{2}\n >>> x = clifford(\"{1}\"); x /= clifford(\"{1}\"); print(x)\n 1\n >>> x = clifford(\"{1}\"); x /= clifford(\"{1,2}\"); print(x)\n -{2}\n ");
14263  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14264  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_60__idiv__;
14265  #endif
14266  static PyObject *__pyx_pw_8PyClical_8clifford_61__idiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
14267  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14268  PyObject *__pyx_r = 0;
14269  __Pyx_RefNannyDeclarations
14270  __Pyx_RefNannySetupContext("__idiv__ (wrapper)", 0);
14271  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14272  __pyx_r = __pyx_pf_8PyClical_8clifford_60__idiv__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
14273 
14274  /* function exit code */
14275  __Pyx_RefNannyFinishContext();
14276  return __pyx_r;
14277  }
14278  #endif
14280  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
14281  static PyObject *__pyx_pf_8PyClical_8clifford_60__idiv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
14282  PyObject *__pyx_r = NULL;
14283  __Pyx_RefNannyDeclarations
14284  Clifford __pyx_t_1;
14285  Clifford __pyx_t_2;
14286  PyObject *__pyx_t_3 = NULL;
14287  int __pyx_lineno = 0;
14288  const char *__pyx_filename = NULL;
14289  int __pyx_clineno = 0;
14290  __Pyx_RefNannySetupContext("__idiv__", 1);
14291 
14292  /* "PyClical.pyx":987
14293  * -{2}
14294  * """
14295  * return self.wrap( self.unwrap() / toClifford(rhs) ) # <<<<<<<<<<<<<<
14296  *
14297  * def inv(self):
14298  */
14299  __Pyx_XDECREF(__pyx_r);
14300  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 987, __pyx_L1_error)
14301  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 987, __pyx_L1_error)
14302  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 / __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
14303  __Pyx_GOTREF(__pyx_t_3);
14304  __pyx_r = __pyx_t_3;
14305  __pyx_t_3 = 0;
14306  goto __pyx_L0;
14307 
14308  /* "PyClical.pyx":974
14309  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) )
14310  *
14311  * def __idiv__(self, rhs): # <<<<<<<<<<<<<<
14312  * """
14313  * Geometric quotient.
14314  */
14315 
14316  /* function exit code */
14317  __pyx_L1_error:;
14318  __Pyx_XDECREF(__pyx_t_3);
14319  __Pyx_AddTraceback("PyClical.clifford.__idiv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14320  __pyx_r = NULL;
14321  __pyx_L0:;
14322  __Pyx_XGIVEREF(__pyx_r);
14323  __Pyx_RefNannyFinishContext();
14324  return __pyx_r;
14325  }
14326  #endif
14328  /* "PyClical.pyx":989
14329  * return self.wrap( self.unwrap() / toClifford(rhs) )
14330  *
14331  * def inv(self): # <<<<<<<<<<<<<<
14332  * """
14333  * Geometric multiplicative inverse.
14334  */
14335 
14336  /* Python wrapper */
14337  static PyObject *__pyx_pw_8PyClical_8clifford_63inv(PyObject *__pyx_v_self,
14338 #if CYTHON_METH_FASTCALL
14339 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14340 #else
14341 PyObject *__pyx_args, PyObject *__pyx_kwds
14342 #endif
14343 ); /*proto*/
14344  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_62inv, "\n Geometric multiplicative inverse.\n\n >>> x = clifford(\"{1}\"); print(x.inv())\n {1}\n >>> x = clifford(2); print(x.inv())\n 0.5\n >>> x = clifford(\"{1,2}\"); print(x.inv())\n -{1,2}\n ");
14345  static PyMethodDef __pyx_mdef_8PyClical_8clifford_63inv = {"inv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_63inv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_62inv};
14346  static PyObject *__pyx_pw_8PyClical_8clifford_63inv(PyObject *__pyx_v_self,
14347 #if CYTHON_METH_FASTCALL
14348 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14349 #else
14350 PyObject *__pyx_args, PyObject *__pyx_kwds
14351 #endif
14352 ) {
14353  #if !CYTHON_METH_FASTCALL
14354  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
14355  #endif
14356  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14357  PyObject *__pyx_r = 0;
14358  __Pyx_RefNannyDeclarations
14359  __Pyx_RefNannySetupContext("inv (wrapper)", 0);
14360  #if !CYTHON_METH_FASTCALL
14361  #if CYTHON_ASSUME_SAFE_MACROS
14362  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
14363  #else
14364  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
14365  #endif
14366  #endif
14367  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
14368  if (unlikely(__pyx_nargs > 0)) {
14369  __Pyx_RaiseArgtupleInvalid("inv", 1, 0, 0, __pyx_nargs); return NULL;}
14370  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "inv", 0))) return NULL;
14371  __pyx_r = __pyx_pf_8PyClical_8clifford_62inv(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
14372 
14373  /* function exit code */
14374  __Pyx_RefNannyFinishContext();
14375  return __pyx_r;
14376  }
14377 
14378  static PyObject *__pyx_pf_8PyClical_8clifford_62inv(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
14379  PyObject *__pyx_r = NULL;
14380  __Pyx_RefNannyDeclarations
14381  PyObject *__pyx_t_1 = NULL;
14382  PyObject *__pyx_t_2 = NULL;
14383  int __pyx_lineno = 0;
14384  const char *__pyx_filename = NULL;
14385  int __pyx_clineno = 0;
14386  __Pyx_RefNannySetupContext("inv", 1);
14387 
14388  /* "PyClical.pyx":1000
14389  * -{1,2}
14390  * """
14391  * return clifford().wrap( self.instance.inv() ) # <<<<<<<<<<<<<<
14392  *
14393  * def __or__(lhs, rhs):
14394  */
14395  __Pyx_XDECREF(__pyx_r);
14396  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error)
14397  __Pyx_GOTREF(__pyx_t_1);
14398  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->inv()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error)
14399  __Pyx_GOTREF(__pyx_t_2);
14400  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14401  __pyx_r = __pyx_t_2;
14402  __pyx_t_2 = 0;
14403  goto __pyx_L0;
14404 
14405  /* "PyClical.pyx":989
14406  * return self.wrap( self.unwrap() / toClifford(rhs) )
14407  *
14408  * def inv(self): # <<<<<<<<<<<<<<
14409  * """
14410  * Geometric multiplicative inverse.
14411  */
14412 
14413  /* function exit code */
14414  __pyx_L1_error:;
14415  __Pyx_XDECREF(__pyx_t_1);
14416  __Pyx_XDECREF(__pyx_t_2);
14417  __Pyx_AddTraceback("PyClical.clifford.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
14418  __pyx_r = NULL;
14419  __pyx_L0:;
14420  __Pyx_XGIVEREF(__pyx_r);
14421  __Pyx_RefNannyFinishContext();
14422  return __pyx_r;
14423  }
14424 
14425  /* "PyClical.pyx":1002
14426  * return clifford().wrap( self.instance.inv() )
14427  *
14428  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
14429  * """
14430  * Transform left hand side, using right hand side as a transformation.
14431  */
14432 
14433  /* Python wrapper */
14434  static PyObject *__pyx_pw_8PyClical_8clifford_65__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
14435  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_64__or__, "\n Transform left hand side, using right hand side as a transformation.\n\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); print(y|x)\n -{1}\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); print(y|exp(x))\n -{1}\n ");
14436  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14437  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_64__or__;
14438  #endif
14439  static PyObject *__pyx_pw_8PyClical_8clifford_65__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
14440  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14441  PyObject *__pyx_r = 0;
14442  __Pyx_RefNannyDeclarations
14443  __Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
14444  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14445  __pyx_r = __pyx_pf_8PyClical_8clifford_64__or__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
14446 
14447  /* function exit code */
14448  __Pyx_RefNannyFinishContext();
14449  return __pyx_r;
14450  }
14451 
14452  static PyObject *__pyx_pf_8PyClical_8clifford_64__or__(struct __pyx_obj_8PyClical_clifford *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
14453  PyObject *__pyx_r = NULL;
14454  __Pyx_RefNannyDeclarations
14455  PyObject *__pyx_t_1 = NULL;
14456  Clifford __pyx_t_2;
14457  Clifford __pyx_t_3;
14458  PyObject *__pyx_t_4 = NULL;
14459  int __pyx_lineno = 0;
14460  const char *__pyx_filename = NULL;
14461  int __pyx_clineno = 0;
14462  __Pyx_RefNannySetupContext("__or__", 1);
14463 
14464  /* "PyClical.pyx":1011
14465  * -{1}
14466  * """
14467  * return clifford().wrap( toClifford(lhs) | toClifford(rhs) ) # <<<<<<<<<<<<<<
14468  *
14469  * def __ior__(self, rhs):
14470  */
14471  __Pyx_XDECREF(__pyx_r);
14472  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
14473  __Pyx_GOTREF(__pyx_t_1);
14474  __pyx_t_2 = __pyx_f_8PyClical_toClifford(((PyObject *)__pyx_v_lhs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1011, __pyx_L1_error)
14475  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1011, __pyx_L1_error)
14476  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_t_2 | __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1011, __pyx_L1_error)
14477  __Pyx_GOTREF(__pyx_t_4);
14478  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14479  __pyx_r = __pyx_t_4;
14480  __pyx_t_4 = 0;
14481  goto __pyx_L0;
14482 
14483  /* "PyClical.pyx":1002
14484  * return clifford().wrap( self.instance.inv() )
14485  *
14486  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
14487  * """
14488  * Transform left hand side, using right hand side as a transformation.
14489  */
14490 
14491  /* function exit code */
14492  __pyx_L1_error:;
14493  __Pyx_XDECREF(__pyx_t_1);
14494  __Pyx_XDECREF(__pyx_t_4);
14495  __Pyx_AddTraceback("PyClical.clifford.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14496  __pyx_r = NULL;
14497  __pyx_L0:;
14498  __Pyx_XGIVEREF(__pyx_r);
14499  __Pyx_RefNannyFinishContext();
14500  return __pyx_r;
14501  }
14502 
14503  /* "PyClical.pyx":1013
14504  * return clifford().wrap( toClifford(lhs) | toClifford(rhs) )
14505  *
14506  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
14507  * """
14508  * Transform left hand side, using right hand side as a transformation.
14509  */
14510 
14511  /* Python wrapper */
14512  static PyObject *__pyx_pw_8PyClical_8clifford_67__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
14513  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_66__ior__, "\n Transform left hand side, using right hand side as a transformation.\n\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); y|=x; print(y)\n -{1}\n >>> x=clifford(\"{1,2}\") * pi/2; y=clifford(\"{1}\"); y|=exp(x); print(y)\n -{1}\n ");
14514  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14515  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_66__ior__;
14516  #endif
14517  static PyObject *__pyx_pw_8PyClical_8clifford_67__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
14518  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14519  PyObject *__pyx_r = 0;
14520  __Pyx_RefNannyDeclarations
14521  __Pyx_RefNannySetupContext("__ior__ (wrapper)", 0);
14522  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14523  __pyx_r = __pyx_pf_8PyClical_8clifford_66__ior__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
14524 
14525  /* function exit code */
14526  __Pyx_RefNannyFinishContext();
14527  return __pyx_r;
14528  }
14529 
14530  static PyObject *__pyx_pf_8PyClical_8clifford_66__ior__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
14531  PyObject *__pyx_r = NULL;
14532  __Pyx_RefNannyDeclarations
14533  Clifford __pyx_t_1;
14534  Clifford __pyx_t_2;
14535  PyObject *__pyx_t_3 = NULL;
14536  int __pyx_lineno = 0;
14537  const char *__pyx_filename = NULL;
14538  int __pyx_clineno = 0;
14539  __Pyx_RefNannySetupContext("__ior__", 1);
14540 
14541  /* "PyClical.pyx":1022
14542  * -{1}
14543  * """
14544  * return self.wrap( self.unwrap() | toClifford(rhs) ) # <<<<<<<<<<<<<<
14545  *
14546  * def __pow__(self, m, dummy):
14547  */
14548  __Pyx_XDECREF(__pyx_r);
14549  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1022, __pyx_L1_error)
14550  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1022, __pyx_L1_error)
14551  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_t_1 | __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1022, __pyx_L1_error)
14552  __Pyx_GOTREF(__pyx_t_3);
14553  __pyx_r = __pyx_t_3;
14554  __pyx_t_3 = 0;
14555  goto __pyx_L0;
14556 
14557  /* "PyClical.pyx":1013
14558  * return clifford().wrap( toClifford(lhs) | toClifford(rhs) )
14559  *
14560  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
14561  * """
14562  * Transform left hand side, using right hand side as a transformation.
14563  */
14564 
14565  /* function exit code */
14566  __pyx_L1_error:;
14567  __Pyx_XDECREF(__pyx_t_3);
14568  __Pyx_AddTraceback("PyClical.clifford.__ior__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14569  __pyx_r = NULL;
14570  __pyx_L0:;
14571  __Pyx_XGIVEREF(__pyx_r);
14572  __Pyx_RefNannyFinishContext();
14573  return __pyx_r;
14574  }
14575 
14576  /* "PyClical.pyx":1024
14577  * return self.wrap( self.unwrap() | toClifford(rhs) )
14578  *
14579  * def __pow__(self, m, dummy): # <<<<<<<<<<<<<<
14580  * """
14581  * Power: self to the m.
14582  */
14583 
14584  /* Python wrapper */
14585  static PyObject *__pyx_pw_8PyClical_8clifford_69__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_m, PyObject *__pyx_v_dummy); /*proto*/
14586  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_68__pow__, "\n Power: self to the m.\n\n >>> x=clifford(\"{1}\"); print(x ** 2)\n 1\n >>> x=clifford(\"2\"); print(x ** 2)\n 4\n >>> x=clifford(\"2+{1}\"); print(x ** 0)\n 1\n >>> x=clifford(\"2+{1}\"); print(x ** 1)\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(x ** 2)\n 5+4{1}\n >>> i=clifford(\"{1,2}\"); print(exp(pi/2) * (i ** i))\n 1\n ");
14587  #if CYTHON_UPDATE_DESCRIPTOR_DOC
14588  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_68__pow__;
14589  #endif
14590  static PyObject *__pyx_pw_8PyClical_8clifford_69__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_m, PyObject *__pyx_v_dummy) {
14591  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14592  PyObject *__pyx_r = 0;
14593  __Pyx_RefNannyDeclarations
14594  __Pyx_RefNannySetupContext("__pow__ (wrapper)", 0);
14595  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
14596  __pyx_r = __pyx_pf_8PyClical_8clifford_68__pow__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_m), ((PyObject *)__pyx_v_dummy));
14597 
14598  /* function exit code */
14599  __Pyx_RefNannyFinishContext();
14600  return __pyx_r;
14601  }
14602 
14603  static PyObject *__pyx_pf_8PyClical_8clifford_68__pow__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m, CYTHON_UNUSED PyObject *__pyx_v_dummy) {
14604  PyObject *__pyx_r = NULL;
14605  __Pyx_RefNannyDeclarations
14606  PyObject *__pyx_t_1 = NULL;
14607  int __pyx_lineno = 0;
14608  const char *__pyx_filename = NULL;
14609  int __pyx_clineno = 0;
14610  __Pyx_RefNannySetupContext("__pow__", 1);
14611 
14612  /* "PyClical.pyx":1041
14613  * 1
14614  * """
14615  * return pow(self, m) # <<<<<<<<<<<<<<
14616  *
14617  * def pow(self, m):
14618  */
14619  __Pyx_XDECREF(__pyx_r);
14620  __pyx_t_1 = __pyx_f_8PyClical_pow(((PyObject *)__pyx_v_self), __pyx_v_m, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1041, __pyx_L1_error)
14621  __Pyx_GOTREF(__pyx_t_1);
14622  __pyx_r = __pyx_t_1;
14623  __pyx_t_1 = 0;
14624  goto __pyx_L0;
14625 
14626  /* "PyClical.pyx":1024
14627  * return self.wrap( self.unwrap() | toClifford(rhs) )
14628  *
14629  * def __pow__(self, m, dummy): # <<<<<<<<<<<<<<
14630  * """
14631  * Power: self to the m.
14632  */
14633 
14634  /* function exit code */
14635  __pyx_L1_error:;
14636  __Pyx_XDECREF(__pyx_t_1);
14637  __Pyx_AddTraceback("PyClical.clifford.__pow__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14638  __pyx_r = NULL;
14639  __pyx_L0:;
14640  __Pyx_XGIVEREF(__pyx_r);
14641  __Pyx_RefNannyFinishContext();
14642  return __pyx_r;
14643  }
14644 
14645  /* "PyClical.pyx":1043
14646  * return pow(self, m)
14647  *
14648  * def pow(self, m): # <<<<<<<<<<<<<<
14649  * """
14650  * Power: self to the m.
14651  */
14652 
14653  /* Python wrapper */
14654  static PyObject *__pyx_pw_8PyClical_8clifford_71pow(PyObject *__pyx_v_self,
14655 #if CYTHON_METH_FASTCALL
14656 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14657 #else
14658 PyObject *__pyx_args, PyObject *__pyx_kwds
14659 #endif
14660 ); /*proto*/
14661  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_70pow, "\n Power: self to the m.\n\n >>> x=clifford(\"{1}\"); print(x.pow(2))\n 1\n >>> x=clifford(\"2\"); print(x.pow(2))\n 4\n >>> x=clifford(\"2+{1}\"); print(x.pow(0))\n 1\n >>> x=clifford(\"2+{1}\"); print(x.pow(1))\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(x.pow(2))\n 5+4{1}\n >>> print(clifford(\"1+{1}+{1,2}\").pow(3))\n 1+3{1}+3{1,2}\n >>> i=clifford(\"{1,2}\"); print(exp(pi/2) * i.pow(i))\n 1\n ");
14662  static PyMethodDef __pyx_mdef_8PyClical_8clifford_71pow = {"pow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_71pow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_70pow};
14663  static PyObject *__pyx_pw_8PyClical_8clifford_71pow(PyObject *__pyx_v_self,
14664 #if CYTHON_METH_FASTCALL
14665 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14666 #else
14667 PyObject *__pyx_args, PyObject *__pyx_kwds
14668 #endif
14669 ) {
14670  PyObject *__pyx_v_m = 0;
14671  #if !CYTHON_METH_FASTCALL
14672  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
14673  #endif
14674  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14675  PyObject* values[1] = {0};
14676  int __pyx_lineno = 0;
14677  const char *__pyx_filename = NULL;
14678  int __pyx_clineno = 0;
14679  PyObject *__pyx_r = 0;
14680  __Pyx_RefNannyDeclarations
14681  __Pyx_RefNannySetupContext("pow (wrapper)", 0);
14682  #if !CYTHON_METH_FASTCALL
14683  #if CYTHON_ASSUME_SAFE_MACROS
14684  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
14685  #else
14686  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
14687  #endif
14688  #endif
14689  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
14690  {
14691  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,0};
14692  if (__pyx_kwds) {
14693  Py_ssize_t kw_args;
14694  switch (__pyx_nargs) {
14695  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
14696  CYTHON_FALLTHROUGH;
14697  case 0: break;
14698  default: goto __pyx_L5_argtuple_error;
14699  }
14700  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
14701  switch (__pyx_nargs) {
14702  case 0:
14703  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_m)) != 0)) {
14704  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
14705  kw_args--;
14706  }
14707  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1043, __pyx_L3_error)
14708  else goto __pyx_L5_argtuple_error;
14709  }
14710  if (unlikely(kw_args > 0)) {
14711  const Py_ssize_t kwd_pos_args = __pyx_nargs;
14712  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "pow") < 0)) __PYX_ERR(0, 1043, __pyx_L3_error)
14713  }
14714  } else if (unlikely(__pyx_nargs != 1)) {
14715  goto __pyx_L5_argtuple_error;
14716  } else {
14717  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
14718  }
14719  __pyx_v_m = values[0];
14720  }
14721  goto __pyx_L6_skip;
14722  __pyx_L5_argtuple_error:;
14723  __Pyx_RaiseArgtupleInvalid("pow", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1043, __pyx_L3_error)
14724  __pyx_L6_skip:;
14725  goto __pyx_L4_argument_unpacking_done;
14726  __pyx_L3_error:;
14727  {
14728  Py_ssize_t __pyx_temp;
14729  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14730  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
14731  }
14732  }
14733  __Pyx_AddTraceback("PyClical.clifford.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
14734  __Pyx_RefNannyFinishContext();
14735  return NULL;
14736  __pyx_L4_argument_unpacking_done:;
14737  __pyx_r = __pyx_pf_8PyClical_8clifford_70pow(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_m);
14738 
14739  /* function exit code */
14740  {
14741  Py_ssize_t __pyx_temp;
14742  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14743  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
14744  }
14745  }
14746  __Pyx_RefNannyFinishContext();
14747  return __pyx_r;
14748  }
14749 
14750  static PyObject *__pyx_pf_8PyClical_8clifford_70pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m) {
14751  PyObject *__pyx_r = NULL;
14752  __Pyx_RefNannyDeclarations
14753  PyObject *__pyx_t_1 = NULL;
14754  PyObject *__pyx_t_2 = NULL;
14755  int __pyx_t_3;
14756  int __pyx_t_4;
14757  int __pyx_lineno = 0;
14758  const char *__pyx_filename = NULL;
14759  int __pyx_clineno = 0;
14760  __Pyx_RefNannySetupContext("pow", 1);
14761 
14762  /* "PyClical.pyx":1062
14763  * 1
14764  * """
14765  * if isinstance(m, numbers.Integral): # <<<<<<<<<<<<<<
14766  * return clifford().wrap( self.instance.pow(m) )
14767  * else:
14768  */
14769  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numbers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1062, __pyx_L1_error)
14770  __Pyx_GOTREF(__pyx_t_1);
14771  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Integral); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1062, __pyx_L1_error)
14772  __Pyx_GOTREF(__pyx_t_2);
14773  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14774  __pyx_t_3 = PyObject_IsInstance(__pyx_v_m, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1062, __pyx_L1_error)
14775  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14776  if (__pyx_t_3) {
14777 
14778  /* "PyClical.pyx":1063
14779  * """
14780  * if isinstance(m, numbers.Integral):
14781  * return clifford().wrap( self.instance.pow(m) ) # <<<<<<<<<<<<<<
14782  * else:
14783  * return exp(m * log(self))
14784  */
14785  __Pyx_XDECREF(__pyx_r);
14786  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1063, __pyx_L1_error)
14787  __Pyx_GOTREF(__pyx_t_2);
14788  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_m); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1063, __pyx_L1_error)
14789  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __pyx_v_self->instance->pow(__pyx_t_4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1063, __pyx_L1_error)
14790  __Pyx_GOTREF(__pyx_t_1);
14791  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14792  __pyx_r = __pyx_t_1;
14793  __pyx_t_1 = 0;
14794  goto __pyx_L0;
14795 
14796  /* "PyClical.pyx":1062
14797  * 1
14798  * """
14799  * if isinstance(m, numbers.Integral): # <<<<<<<<<<<<<<
14800  * return clifford().wrap( self.instance.pow(m) )
14801  * else:
14802  */
14803  }
14804 
14805  /* "PyClical.pyx":1065
14806  * return clifford().wrap( self.instance.pow(m) )
14807  * else:
14808  * return exp(m * log(self)) # <<<<<<<<<<<<<<
14809  *
14810  * def outer_pow(self, m):
14811  */
14812  /*else*/ {
14813  __Pyx_XDECREF(__pyx_r);
14814  __pyx_t_1 = __pyx_f_8PyClical_log(((PyObject *)__pyx_v_self), 0, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error)
14815  __Pyx_GOTREF(__pyx_t_1);
14816  __pyx_t_2 = PyNumber_Multiply(__pyx_v_m, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1065, __pyx_L1_error)
14817  __Pyx_GOTREF(__pyx_t_2);
14818  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14819  __pyx_t_1 = __pyx_f_8PyClical_exp(__pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error)
14820  __Pyx_GOTREF(__pyx_t_1);
14821  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14822  __pyx_r = __pyx_t_1;
14823  __pyx_t_1 = 0;
14824  goto __pyx_L0;
14825  }
14826 
14827  /* "PyClical.pyx":1043
14828  * return pow(self, m)
14829  *
14830  * def pow(self, m): # <<<<<<<<<<<<<<
14831  * """
14832  * Power: self to the m.
14833  */
14834 
14835  /* function exit code */
14836  __pyx_L1_error:;
14837  __Pyx_XDECREF(__pyx_t_1);
14838  __Pyx_XDECREF(__pyx_t_2);
14839  __Pyx_AddTraceback("PyClical.clifford.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
14840  __pyx_r = NULL;
14841  __pyx_L0:;
14842  __Pyx_XGIVEREF(__pyx_r);
14843  __Pyx_RefNannyFinishContext();
14844  return __pyx_r;
14845  }
14846 
14847  /* "PyClical.pyx":1067
14848  * return exp(m * log(self))
14849  *
14850  * def outer_pow(self, m): # <<<<<<<<<<<<<<
14851  * """
14852  * Outer product power.
14853  */
14854 
14855  /* Python wrapper */
14856  static PyObject *__pyx_pw_8PyClical_8clifford_73outer_pow(PyObject *__pyx_v_self,
14857 #if CYTHON_METH_FASTCALL
14858 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14859 #else
14860 PyObject *__pyx_args, PyObject *__pyx_kwds
14861 #endif
14862 ); /*proto*/
14863  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_72outer_pow, "\n Outer product power.\n\n >>> x=clifford(\"2+{1}\"); print(x.outer_pow(0))\n 1\n >>> x=clifford(\"2+{1}\"); print(x.outer_pow(1))\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(x.outer_pow(2))\n 4+4{1}\n >>> print(clifford(\"1+{1}+{1,2}\").outer_pow(3))\n 1+3{1}+3{1,2}\n\n ");
14864  static PyMethodDef __pyx_mdef_8PyClical_8clifford_73outer_pow = {"outer_pow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_73outer_pow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_72outer_pow};
14865  static PyObject *__pyx_pw_8PyClical_8clifford_73outer_pow(PyObject *__pyx_v_self,
14866 #if CYTHON_METH_FASTCALL
14867 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
14868 #else
14869 PyObject *__pyx_args, PyObject *__pyx_kwds
14870 #endif
14871 ) {
14872  PyObject *__pyx_v_m = 0;
14873  #if !CYTHON_METH_FASTCALL
14874  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
14875  #endif
14876  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
14877  PyObject* values[1] = {0};
14878  int __pyx_lineno = 0;
14879  const char *__pyx_filename = NULL;
14880  int __pyx_clineno = 0;
14881  PyObject *__pyx_r = 0;
14882  __Pyx_RefNannyDeclarations
14883  __Pyx_RefNannySetupContext("outer_pow (wrapper)", 0);
14884  #if !CYTHON_METH_FASTCALL
14885  #if CYTHON_ASSUME_SAFE_MACROS
14886  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
14887  #else
14888  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
14889  #endif
14890  #endif
14891  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
14892  {
14893  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_m,0};
14894  if (__pyx_kwds) {
14895  Py_ssize_t kw_args;
14896  switch (__pyx_nargs) {
14897  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
14898  CYTHON_FALLTHROUGH;
14899  case 0: break;
14900  default: goto __pyx_L5_argtuple_error;
14901  }
14902  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
14903  switch (__pyx_nargs) {
14904  case 0:
14905  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_m)) != 0)) {
14906  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
14907  kw_args--;
14908  }
14909  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1067, __pyx_L3_error)
14910  else goto __pyx_L5_argtuple_error;
14911  }
14912  if (unlikely(kw_args > 0)) {
14913  const Py_ssize_t kwd_pos_args = __pyx_nargs;
14914  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "outer_pow") < 0)) __PYX_ERR(0, 1067, __pyx_L3_error)
14915  }
14916  } else if (unlikely(__pyx_nargs != 1)) {
14917  goto __pyx_L5_argtuple_error;
14918  } else {
14919  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
14920  }
14921  __pyx_v_m = values[0];
14922  }
14923  goto __pyx_L6_skip;
14924  __pyx_L5_argtuple_error:;
14925  __Pyx_RaiseArgtupleInvalid("outer_pow", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1067, __pyx_L3_error)
14926  __pyx_L6_skip:;
14927  goto __pyx_L4_argument_unpacking_done;
14928  __pyx_L3_error:;
14929  {
14930  Py_ssize_t __pyx_temp;
14931  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14932  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
14933  }
14934  }
14935  __Pyx_AddTraceback("PyClical.clifford.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
14936  __Pyx_RefNannyFinishContext();
14937  return NULL;
14938  __pyx_L4_argument_unpacking_done:;
14939  __pyx_r = __pyx_pf_8PyClical_8clifford_72outer_pow(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_m);
14940 
14941  /* function exit code */
14942  {
14943  Py_ssize_t __pyx_temp;
14944  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
14945  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
14946  }
14947  }
14948  __Pyx_RefNannyFinishContext();
14949  return __pyx_r;
14950  }
14951 
14952  static PyObject *__pyx_pf_8PyClical_8clifford_72outer_pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m) {
14953  PyObject *__pyx_r = NULL;
14954  __Pyx_RefNannyDeclarations
14955  PyObject *__pyx_t_1 = NULL;
14956  int __pyx_t_2;
14957  PyObject *__pyx_t_3 = NULL;
14958  int __pyx_lineno = 0;
14959  const char *__pyx_filename = NULL;
14960  int __pyx_clineno = 0;
14961  __Pyx_RefNannySetupContext("outer_pow", 1);
14962 
14963  /* "PyClical.pyx":1081
14964  *
14965  * """
14966  * return clifford().wrap( self.instance.outer_pow(m) ) # <<<<<<<<<<<<<<
14967  *
14968  * def __call__(self, grade):
14969  */
14970  __Pyx_XDECREF(__pyx_r);
14971  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1081, __pyx_L1_error)
14972  __Pyx_GOTREF(__pyx_t_1);
14973  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_m); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1081, __pyx_L1_error)
14974  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->outer_pow(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1081, __pyx_L1_error)
14975  __Pyx_GOTREF(__pyx_t_3);
14976  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14977  __pyx_r = __pyx_t_3;
14978  __pyx_t_3 = 0;
14979  goto __pyx_L0;
14980 
14981  /* "PyClical.pyx":1067
14982  * return exp(m * log(self))
14983  *
14984  * def outer_pow(self, m): # <<<<<<<<<<<<<<
14985  * """
14986  * Outer product power.
14987  */
14988 
14989  /* function exit code */
14990  __pyx_L1_error:;
14991  __Pyx_XDECREF(__pyx_t_1);
14992  __Pyx_XDECREF(__pyx_t_3);
14993  __Pyx_AddTraceback("PyClical.clifford.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
14994  __pyx_r = NULL;
14995  __pyx_L0:;
14996  __Pyx_XGIVEREF(__pyx_r);
14997  __Pyx_RefNannyFinishContext();
14998  return __pyx_r;
14999  }
15000 
15001  /* "PyClical.pyx":1083
15002  * return clifford().wrap( self.instance.outer_pow(m) )
15003  *
15004  * def __call__(self, grade): # <<<<<<<<<<<<<<
15005  * """
15006  * Pure grade-vector part.
15007  */
15008 
15009  /* Python wrapper */
15010  static PyObject *__pyx_pw_8PyClical_8clifford_75__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15011  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_74__call__, "\n Pure grade-vector part.\n\n >>> print(clifford(\"{1}\")(1))\n {1}\n >>> print(clifford(\"{1}\")(0))\n 0\n >>> print(clifford(\"1+{1}+{1,2}\")(0))\n 1\n >>> print(clifford(\"1+{1}+{1,2}\")(1))\n {1}\n >>> print(clifford(\"1+{1}+{1,2}\")(2))\n {1,2}\n >>> print(clifford(\"1+{1}+{1,2}\")(3))\n 0\n ");
15012  #if CYTHON_UPDATE_DESCRIPTOR_DOC
15013  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_74__call__;
15014  #endif
15015  static PyObject *__pyx_pw_8PyClical_8clifford_75__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15016  PyObject *__pyx_v_grade = 0;
15017  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
15018  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
15019  PyObject* values[1] = {0};
15020  int __pyx_lineno = 0;
15021  const char *__pyx_filename = NULL;
15022  int __pyx_clineno = 0;
15023  PyObject *__pyx_r = 0;
15024  __Pyx_RefNannyDeclarations
15025  __Pyx_RefNannySetupContext("__call__ (wrapper)", 0);
15026  #if CYTHON_ASSUME_SAFE_MACROS
15027  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
15028  #else
15029  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
15030  #endif
15031  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
15032  {
15033  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grade,0};
15034  if (__pyx_kwds) {
15035  Py_ssize_t kw_args;
15036  switch (__pyx_nargs) {
15037  case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
15038  CYTHON_FALLTHROUGH;
15039  case 0: break;
15040  default: goto __pyx_L5_argtuple_error;
15041  }
15042  kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
15043  switch (__pyx_nargs) {
15044  case 0:
15045  if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_grade)) != 0)) {
15046  (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
15047  kw_args--;
15048  }
15049  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L3_error)
15050  else goto __pyx_L5_argtuple_error;
15051  }
15052  if (unlikely(kw_args > 0)) {
15053  const Py_ssize_t kwd_pos_args = __pyx_nargs;
15054  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__call__") < 0)) __PYX_ERR(0, 1083, __pyx_L3_error)
15055  }
15056  } else if (unlikely(__pyx_nargs != 1)) {
15057  goto __pyx_L5_argtuple_error;
15058  } else {
15059  values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
15060  }
15061  __pyx_v_grade = values[0];
15062  }
15063  goto __pyx_L6_skip;
15064  __pyx_L5_argtuple_error:;
15065  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1083, __pyx_L3_error)
15066  __pyx_L6_skip:;
15067  goto __pyx_L4_argument_unpacking_done;
15068  __pyx_L3_error:;
15069  {
15070  Py_ssize_t __pyx_temp;
15071  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
15072  __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
15073  }
15074  }
15075  __Pyx_AddTraceback("PyClical.clifford.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15076  __Pyx_RefNannyFinishContext();
15077  return NULL;
15078  __pyx_L4_argument_unpacking_done:;
15079  __pyx_r = __pyx_pf_8PyClical_8clifford_74__call__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_grade);
15080 
15081  /* function exit code */
15082  {
15083  Py_ssize_t __pyx_temp;
15084  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
15085  __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
15086  }
15087  }
15088  __Pyx_RefNannyFinishContext();
15089  return __pyx_r;
15090  }
15091 
15092  static PyObject *__pyx_pf_8PyClical_8clifford_74__call__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_grade) {
15093  PyObject *__pyx_r = NULL;
15094  __Pyx_RefNannyDeclarations
15095  PyObject *__pyx_t_1 = NULL;
15096  int __pyx_t_2;
15097  PyObject *__pyx_t_3 = NULL;
15098  int __pyx_lineno = 0;
15099  const char *__pyx_filename = NULL;
15100  int __pyx_clineno = 0;
15101  __Pyx_RefNannySetupContext("__call__", 1);
15102 
15103  /* "PyClical.pyx":1100
15104  * 0
15105  * """
15106  * return clifford().wrap( self.instance.call(grade) ) # <<<<<<<<<<<<<<
15107  *
15108  * def scalar(self):
15109  */
15110  __Pyx_XDECREF(__pyx_r);
15111  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1100, __pyx_L1_error)
15112  __Pyx_GOTREF(__pyx_t_1);
15113  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_grade); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1100, __pyx_L1_error)
15114  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->operator()(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1100, __pyx_L1_error)
15115  __Pyx_GOTREF(__pyx_t_3);
15116  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15117  __pyx_r = __pyx_t_3;
15118  __pyx_t_3 = 0;
15119  goto __pyx_L0;
15120 
15121  /* "PyClical.pyx":1083
15122  * return clifford().wrap( self.instance.outer_pow(m) )
15123  *
15124  * def __call__(self, grade): # <<<<<<<<<<<<<<
15125  * """
15126  * Pure grade-vector part.
15127  */
15128 
15129  /* function exit code */
15130  __pyx_L1_error:;
15131  __Pyx_XDECREF(__pyx_t_1);
15132  __Pyx_XDECREF(__pyx_t_3);
15133  __Pyx_AddTraceback("PyClical.clifford.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15134  __pyx_r = NULL;
15135  __pyx_L0:;
15136  __Pyx_XGIVEREF(__pyx_r);
15137  __Pyx_RefNannyFinishContext();
15138  return __pyx_r;
15139  }
15140 
15141  /* "PyClical.pyx":1102
15142  * return clifford().wrap( self.instance.call(grade) )
15143  *
15144  * def scalar(self): # <<<<<<<<<<<<<<
15145  * """
15146  * Scalar part.
15147  */
15148 
15149  /* Python wrapper */
15150  static PyObject *__pyx_pw_8PyClical_8clifford_77scalar(PyObject *__pyx_v_self,
15151 #if CYTHON_METH_FASTCALL
15152 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15153 #else
15154 PyObject *__pyx_args, PyObject *__pyx_kwds
15155 #endif
15156 ); /*proto*/
15157  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_76scalar, "\n Scalar part.\n\n >>> clifford(\"1+{1}+{1,2}\").scalar()\n 1.0\n >>> clifford(\"{1,2}\").scalar()\n 0.0\n ");
15158  static PyMethodDef __pyx_mdef_8PyClical_8clifford_77scalar = {"scalar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_77scalar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_76scalar};
15159  static PyObject *__pyx_pw_8PyClical_8clifford_77scalar(PyObject *__pyx_v_self,
15160 #if CYTHON_METH_FASTCALL
15161 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15162 #else
15163 PyObject *__pyx_args, PyObject *__pyx_kwds
15164 #endif
15165 ) {
15166  #if !CYTHON_METH_FASTCALL
15167  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
15168  #endif
15169  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
15170  PyObject *__pyx_r = 0;
15171  __Pyx_RefNannyDeclarations
15172  __Pyx_RefNannySetupContext("scalar (wrapper)", 0);
15173  #if !CYTHON_METH_FASTCALL
15174  #if CYTHON_ASSUME_SAFE_MACROS
15175  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
15176  #else
15177  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
15178  #endif
15179  #endif
15180  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
15181  if (unlikely(__pyx_nargs > 0)) {
15182  __Pyx_RaiseArgtupleInvalid("scalar", 1, 0, 0, __pyx_nargs); return NULL;}
15183  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "scalar", 0))) return NULL;
15184  __pyx_r = __pyx_pf_8PyClical_8clifford_76scalar(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
15185 
15186  /* function exit code */
15187  __Pyx_RefNannyFinishContext();
15188  return __pyx_r;
15189  }
15190 
15191  static PyObject *__pyx_pf_8PyClical_8clifford_76scalar(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
15192  PyObject *__pyx_r = NULL;
15193  __Pyx_RefNannyDeclarations
15194  PyObject *__pyx_t_1 = NULL;
15195  int __pyx_lineno = 0;
15196  const char *__pyx_filename = NULL;
15197  int __pyx_clineno = 0;
15198  __Pyx_RefNannySetupContext("scalar", 1);
15199 
15200  /* "PyClical.pyx":1111
15201  * 0.0
15202  * """
15203  * return self.instance.scalar() # <<<<<<<<<<<<<<
15204  *
15205  * def pure(self):
15206  */
15207  __Pyx_XDECREF(__pyx_r);
15208  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->scalar()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
15209  __Pyx_GOTREF(__pyx_t_1);
15210  __pyx_r = __pyx_t_1;
15211  __pyx_t_1 = 0;
15212  goto __pyx_L0;
15213 
15214  /* "PyClical.pyx":1102
15215  * return clifford().wrap( self.instance.call(grade) )
15216  *
15217  * def scalar(self): # <<<<<<<<<<<<<<
15218  * """
15219  * Scalar part.
15220  */
15221 
15222  /* function exit code */
15223  __pyx_L1_error:;
15224  __Pyx_XDECREF(__pyx_t_1);
15225  __Pyx_AddTraceback("PyClical.clifford.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
15226  __pyx_r = NULL;
15227  __pyx_L0:;
15228  __Pyx_XGIVEREF(__pyx_r);
15229  __Pyx_RefNannyFinishContext();
15230  return __pyx_r;
15231  }
15232 
15233  /* "PyClical.pyx":1113
15234  * return self.instance.scalar()
15235  *
15236  * def pure(self): # <<<<<<<<<<<<<<
15237  * """
15238  * Pure part.
15239  */
15240 
15241  /* Python wrapper */
15242  static PyObject *__pyx_pw_8PyClical_8clifford_79pure(PyObject *__pyx_v_self,
15243 #if CYTHON_METH_FASTCALL
15244 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15245 #else
15246 PyObject *__pyx_args, PyObject *__pyx_kwds
15247 #endif
15248 ); /*proto*/
15249  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_78pure, "\n Pure part.\n\n >>> print(clifford(\"1+{1}+{1,2}\").pure())\n {1}+{1,2}\n >>> print(clifford(\"{1,2}\").pure())\n {1,2}\n ");
15250  static PyMethodDef __pyx_mdef_8PyClical_8clifford_79pure = {"pure", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_79pure, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_78pure};
15251  static PyObject *__pyx_pw_8PyClical_8clifford_79pure(PyObject *__pyx_v_self,
15252 #if CYTHON_METH_FASTCALL
15253 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15254 #else
15255 PyObject *__pyx_args, PyObject *__pyx_kwds
15256 #endif
15257 ) {
15258  #if !CYTHON_METH_FASTCALL
15259  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
15260  #endif
15261  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
15262  PyObject *__pyx_r = 0;
15263  __Pyx_RefNannyDeclarations
15264  __Pyx_RefNannySetupContext("pure (wrapper)", 0);
15265  #if !CYTHON_METH_FASTCALL
15266  #if CYTHON_ASSUME_SAFE_MACROS
15267  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
15268  #else
15269  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
15270  #endif
15271  #endif
15272  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
15273  if (unlikely(__pyx_nargs > 0)) {
15274  __Pyx_RaiseArgtupleInvalid("pure", 1, 0, 0, __pyx_nargs); return NULL;}
15275  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "pure", 0))) return NULL;
15276  __pyx_r = __pyx_pf_8PyClical_8clifford_78pure(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
15277 
15278  /* function exit code */
15279  __Pyx_RefNannyFinishContext();
15280  return __pyx_r;
15281  }
15282 
15283  static PyObject *__pyx_pf_8PyClical_8clifford_78pure(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
15284  PyObject *__pyx_r = NULL;
15285  __Pyx_RefNannyDeclarations
15286  PyObject *__pyx_t_1 = NULL;
15287  PyObject *__pyx_t_2 = NULL;
15288  int __pyx_lineno = 0;
15289  const char *__pyx_filename = NULL;
15290  int __pyx_clineno = 0;
15291  __Pyx_RefNannySetupContext("pure", 1);
15292 
15293  /* "PyClical.pyx":1122
15294  * {1,2}
15295  * """
15296  * return clifford().wrap( self.instance.pure() ) # <<<<<<<<<<<<<<
15297  *
15298  * def even(self):
15299  */
15300  __Pyx_XDECREF(__pyx_r);
15301  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error)
15302  __Pyx_GOTREF(__pyx_t_1);
15303  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->pure()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error)
15304  __Pyx_GOTREF(__pyx_t_2);
15305  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15306  __pyx_r = __pyx_t_2;
15307  __pyx_t_2 = 0;
15308  goto __pyx_L0;
15309 
15310  /* "PyClical.pyx":1113
15311  * return self.instance.scalar()
15312  *
15313  * def pure(self): # <<<<<<<<<<<<<<
15314  * """
15315  * Pure part.
15316  */
15317 
15318  /* function exit code */
15319  __pyx_L1_error:;
15320  __Pyx_XDECREF(__pyx_t_1);
15321  __Pyx_XDECREF(__pyx_t_2);
15322  __Pyx_AddTraceback("PyClical.clifford.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
15323  __pyx_r = NULL;
15324  __pyx_L0:;
15325  __Pyx_XGIVEREF(__pyx_r);
15326  __Pyx_RefNannyFinishContext();
15327  return __pyx_r;
15328  }
15329 
15330  /* "PyClical.pyx":1124
15331  * return clifford().wrap( self.instance.pure() )
15332  *
15333  * def even(self): # <<<<<<<<<<<<<<
15334  * """
15335  * Even part of multivector, sum of even grade terms.
15336  */
15337 
15338  /* Python wrapper */
15339  static PyObject *__pyx_pw_8PyClical_8clifford_81even(PyObject *__pyx_v_self,
15340 #if CYTHON_METH_FASTCALL
15341 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15342 #else
15343 PyObject *__pyx_args, PyObject *__pyx_kwds
15344 #endif
15345 ); /*proto*/
15346  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_80even, "\n Even part of multivector, sum of even grade terms.\n\n >>> print(clifford(\"1+{1}+{1,2}\").even())\n 1+{1,2}\n ");
15347  static PyMethodDef __pyx_mdef_8PyClical_8clifford_81even = {"even", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_81even, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_80even};
15348  static PyObject *__pyx_pw_8PyClical_8clifford_81even(PyObject *__pyx_v_self,
15349 #if CYTHON_METH_FASTCALL
15350 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15351 #else
15352 PyObject *__pyx_args, PyObject *__pyx_kwds
15353 #endif
15354 ) {
15355  #if !CYTHON_METH_FASTCALL
15356  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
15357  #endif
15358  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
15359  PyObject *__pyx_r = 0;
15360  __Pyx_RefNannyDeclarations
15361  __Pyx_RefNannySetupContext("even (wrapper)", 0);
15362  #if !CYTHON_METH_FASTCALL
15363  #if CYTHON_ASSUME_SAFE_MACROS
15364  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
15365  #else
15366  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
15367  #endif
15368  #endif
15369  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
15370  if (unlikely(__pyx_nargs > 0)) {
15371  __Pyx_RaiseArgtupleInvalid("even", 1, 0, 0, __pyx_nargs); return NULL;}
15372  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "even", 0))) return NULL;
15373  __pyx_r = __pyx_pf_8PyClical_8clifford_80even(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
15374 
15375  /* function exit code */
15376  __Pyx_RefNannyFinishContext();
15377  return __pyx_r;
15378  }
15379 
15380  static PyObject *__pyx_pf_8PyClical_8clifford_80even(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
15381  PyObject *__pyx_r = NULL;
15382  __Pyx_RefNannyDeclarations
15383  PyObject *__pyx_t_1 = NULL;
15384  PyObject *__pyx_t_2 = NULL;
15385  int __pyx_lineno = 0;
15386  const char *__pyx_filename = NULL;
15387  int __pyx_clineno = 0;
15388  __Pyx_RefNannySetupContext("even", 1);
15389 
15390  /* "PyClical.pyx":1131
15391  * 1+{1,2}
15392  * """
15393  * return clifford().wrap( self.instance.even() ) # <<<<<<<<<<<<<<
15394  *
15395  * def odd(self):
15396  */
15397  __Pyx_XDECREF(__pyx_r);
15398  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error)
15399  __Pyx_GOTREF(__pyx_t_1);
15400  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->even()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error)
15401  __Pyx_GOTREF(__pyx_t_2);
15402  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15403  __pyx_r = __pyx_t_2;
15404  __pyx_t_2 = 0;
15405  goto __pyx_L0;
15406 
15407  /* "PyClical.pyx":1124
15408  * return clifford().wrap( self.instance.pure() )
15409  *
15410  * def even(self): # <<<<<<<<<<<<<<
15411  * """
15412  * Even part of multivector, sum of even grade terms.
15413  */
15414 
15415  /* function exit code */
15416  __pyx_L1_error:;
15417  __Pyx_XDECREF(__pyx_t_1);
15418  __Pyx_XDECREF(__pyx_t_2);
15419  __Pyx_AddTraceback("PyClical.clifford.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
15420  __pyx_r = NULL;
15421  __pyx_L0:;
15422  __Pyx_XGIVEREF(__pyx_r);
15423  __Pyx_RefNannyFinishContext();
15424  return __pyx_r;
15425  }
15426 
15427  /* "PyClical.pyx":1133
15428  * return clifford().wrap( self.instance.even() )
15429  *
15430  * def odd(self): # <<<<<<<<<<<<<<
15431  * """
15432  * Odd part of multivector, sum of odd grade terms.
15433  */
15434 
15435  /* Python wrapper */
15436  static PyObject *__pyx_pw_8PyClical_8clifford_83odd(PyObject *__pyx_v_self,
15437 #if CYTHON_METH_FASTCALL
15438 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15439 #else
15440 PyObject *__pyx_args, PyObject *__pyx_kwds
15441 #endif
15442 ); /*proto*/
15443  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_82odd, "\n Odd part of multivector, sum of odd grade terms.\n\n >>> print(clifford(\"1+{1}+{1,2}\").odd())\n {1}\n ");
15444  static PyMethodDef __pyx_mdef_8PyClical_8clifford_83odd = {"odd", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_83odd, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_82odd};
15445  static PyObject *__pyx_pw_8PyClical_8clifford_83odd(PyObject *__pyx_v_self,
15446 #if CYTHON_METH_FASTCALL
15447 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15448 #else
15449 PyObject *__pyx_args, PyObject *__pyx_kwds
15450 #endif
15451 ) {
15452  #if !CYTHON_METH_FASTCALL
15453  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
15454  #endif
15455  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
15456  PyObject *__pyx_r = 0;
15457  __Pyx_RefNannyDeclarations
15458  __Pyx_RefNannySetupContext("odd (wrapper)", 0);
15459  #if !CYTHON_METH_FASTCALL
15460  #if CYTHON_ASSUME_SAFE_MACROS
15461  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
15462  #else
15463  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
15464  #endif
15465  #endif
15466  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
15467  if (unlikely(__pyx_nargs > 0)) {
15468  __Pyx_RaiseArgtupleInvalid("odd", 1, 0, 0, __pyx_nargs); return NULL;}
15469  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "odd", 0))) return NULL;
15470  __pyx_r = __pyx_pf_8PyClical_8clifford_82odd(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
15471 
15472  /* function exit code */
15473  __Pyx_RefNannyFinishContext();
15474  return __pyx_r;
15475  }
15476 
15477  static PyObject *__pyx_pf_8PyClical_8clifford_82odd(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
15478  PyObject *__pyx_r = NULL;
15479  __Pyx_RefNannyDeclarations
15480  PyObject *__pyx_t_1 = NULL;
15481  PyObject *__pyx_t_2 = NULL;
15482  int __pyx_lineno = 0;
15483  const char *__pyx_filename = NULL;
15484  int __pyx_clineno = 0;
15485  __Pyx_RefNannySetupContext("odd", 1);
15486 
15487  /* "PyClical.pyx":1140
15488  * {1}
15489  * """
15490  * return clifford().wrap( self.instance.odd() ) # <<<<<<<<<<<<<<
15491  *
15492  * def vector_part(self, frm = None):
15493  */
15494  __Pyx_XDECREF(__pyx_r);
15495  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1140, __pyx_L1_error)
15496  __Pyx_GOTREF(__pyx_t_1);
15497  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->odd()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1140, __pyx_L1_error)
15498  __Pyx_GOTREF(__pyx_t_2);
15499  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15500  __pyx_r = __pyx_t_2;
15501  __pyx_t_2 = 0;
15502  goto __pyx_L0;
15503 
15504  /* "PyClical.pyx":1133
15505  * return clifford().wrap( self.instance.even() )
15506  *
15507  * def odd(self): # <<<<<<<<<<<<<<
15508  * """
15509  * Odd part of multivector, sum of odd grade terms.
15510  */
15511 
15512  /* function exit code */
15513  __pyx_L1_error:;
15514  __Pyx_XDECREF(__pyx_t_1);
15515  __Pyx_XDECREF(__pyx_t_2);
15516  __Pyx_AddTraceback("PyClical.clifford.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
15517  __pyx_r = NULL;
15518  __pyx_L0:;
15519  __Pyx_XGIVEREF(__pyx_r);
15520  __Pyx_RefNannyFinishContext();
15521  return __pyx_r;
15522  }
15523 
15524  /* "PyClical.pyx":1142
15525  * return clifford().wrap( self.instance.odd() )
15526  *
15527  * def vector_part(self, frm = None): # <<<<<<<<<<<<<<
15528  * """
15529  * Vector part of multivector, as a Python list, with respect to frm.
15530  */
15531 
15532  /* Python wrapper */
15533  static PyObject *__pyx_pw_8PyClical_8clifford_85vector_part(PyObject *__pyx_v_self,
15534 #if CYTHON_METH_FASTCALL
15535 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15536 #else
15537 PyObject *__pyx_args, PyObject *__pyx_kwds
15538 #endif
15539 ); /*proto*/
15540  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_84vector_part, "\n Vector part of multivector, as a Python list, with respect to frm.\n\n >>> print(clifford(\"1+2{1}+3{2}+4{1,2}\").vector_part())\n [2.0, 3.0]\n >>> print(clifford(\"1+2{1}+3{2}+4{1,2}\").vector_part(index_set({-1,1,2})))\n [0.0, 2.0, 3.0]\n ");
15541  static PyMethodDef __pyx_mdef_8PyClical_8clifford_85vector_part = {"vector_part", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_85vector_part, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_84vector_part};
15542  static PyObject *__pyx_pw_8PyClical_8clifford_85vector_part(PyObject *__pyx_v_self,
15543 #if CYTHON_METH_FASTCALL
15544 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
15545 #else
15546 PyObject *__pyx_args, PyObject *__pyx_kwds
15547 #endif
15548 ) {
15549  PyObject *__pyx_v_frm = 0;
15550  #if !CYTHON_METH_FASTCALL
15551  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
15552  #endif
15553  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
15554  PyObject* values[1] = {0};
15555  int __pyx_lineno = 0;
15556  const char *__pyx_filename = NULL;
15557  int __pyx_clineno = 0;
15558  PyObject *__pyx_r = 0;
15559  __Pyx_RefNannyDeclarations
15560  __Pyx_RefNannySetupContext("vector_part (wrapper)", 0);
15561  #if !CYTHON_METH_FASTCALL
15562  #if CYTHON_ASSUME_SAFE_MACROS
15563  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
15564  #else
15565  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
15566  #endif
15567  #endif
15568  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
15569  {
15570  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frm,0};
15571  values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
15572  if (__pyx_kwds) {
15573  Py_ssize_t kw_args;
15574  switch (__pyx_nargs) {
15575  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
15576  CYTHON_FALLTHROUGH;
15577  case 0: break;
15578  default: goto __pyx_L5_argtuple_error;
15579  }
15580  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
15581  switch (__pyx_nargs) {
15582  case 0:
15583  if (kw_args > 0) {
15584  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frm);
15585  if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
15586  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1142, __pyx_L3_error)
15587  }
15588  }
15589  if (unlikely(kw_args > 0)) {
15590  const Py_ssize_t kwd_pos_args = __pyx_nargs;
15591  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "vector_part") < 0)) __PYX_ERR(0, 1142, __pyx_L3_error)
15592  }
15593  } else {
15594  switch (__pyx_nargs) {
15595  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
15596  CYTHON_FALLTHROUGH;
15597  case 0: break;
15598  default: goto __pyx_L5_argtuple_error;
15599  }
15600  }
15601  __pyx_v_frm = values[0];
15602  }
15603  goto __pyx_L6_skip;
15604  __pyx_L5_argtuple_error:;
15605  __Pyx_RaiseArgtupleInvalid("vector_part", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1142, __pyx_L3_error)
15606  __pyx_L6_skip:;
15607  goto __pyx_L4_argument_unpacking_done;
15608  __pyx_L3_error:;
15609  {
15610  Py_ssize_t __pyx_temp;
15611  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
15612  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
15613  }
15614  }
15615  __Pyx_AddTraceback("PyClical.clifford.vector_part", __pyx_clineno, __pyx_lineno, __pyx_filename);
15616  __Pyx_RefNannyFinishContext();
15617  return NULL;
15618  __pyx_L4_argument_unpacking_done:;
15619  __pyx_r = __pyx_pf_8PyClical_8clifford_84vector_part(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_frm);
15620 
15621  /* function exit code */
15622  {
15623  Py_ssize_t __pyx_temp;
15624  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
15625  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
15626  }
15627  }
15628  __Pyx_RefNannyFinishContext();
15629  return __pyx_r;
15630  }
15631 
15632  static PyObject *__pyx_pf_8PyClical_8clifford_84vector_part(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_frm) {
15633  PyObject *__pyx_v_error_msg_prefix = NULL;
15634  std::vector<scalar_t> __pyx_v_vec;
15635  int __pyx_v_n;
15636  int __pyx_v_i;
15637  PyObject *__pyx_v_lst = NULL;
15638  PyObject *__pyx_v_err = NULL;
15639  PyObject *__pyx_r = NULL;
15640  __Pyx_RefNannyDeclarations
15641  PyObject *__pyx_t_1 = NULL;
15642  PyObject *__pyx_t_2 = NULL;
15643  PyObject *__pyx_t_3 = NULL;
15644  int __pyx_t_4;
15645  std::vector<scalar_t> __pyx_t_5;
15646  IndexSet __pyx_t_6;
15647  PyObject *__pyx_t_7 = NULL;
15648  int __pyx_t_8;
15649  int __pyx_t_9;
15650  int __pyx_t_10;
15651  PyObject *__pyx_t_11 = NULL;
15652  PyObject *__pyx_t_12 = NULL;
15653  PyObject *__pyx_t_13 = NULL;
15654  PyObject *__pyx_t_14 = NULL;
15655  PyObject *__pyx_t_15 = NULL;
15656  char const *__pyx_t_16;
15657  PyObject *__pyx_t_17 = NULL;
15658  PyObject *__pyx_t_18 = NULL;
15659  PyObject *__pyx_t_19 = NULL;
15660  PyObject *__pyx_t_20 = NULL;
15661  PyObject *__pyx_t_21 = NULL;
15662  PyObject *__pyx_t_22 = NULL;
15663  int __pyx_lineno = 0;
15664  const char *__pyx_filename = NULL;
15665  int __pyx_clineno = 0;
15666  __Pyx_RefNannySetupContext("vector_part", 1);
15667 
15668  /* "PyClical.pyx":1151
15669  * [0.0, 2.0, 3.0]
15670  * """
15671  * error_msg_prefix = "Cannot take vector part of " # <<<<<<<<<<<<<<
15672  * cdef vector[scalar_t] vec
15673  * cdef int n
15674  */
15675  __Pyx_INCREF(__pyx_kp_u_Cannot_take_vector_part_of);
15676  __pyx_v_error_msg_prefix = __pyx_kp_u_Cannot_take_vector_part_of;
15677 
15678  /* "PyClical.pyx":1155
15679  * cdef int n
15680  * cdef int i
15681  * try: # <<<<<<<<<<<<<<
15682  * if frm is None:
15683  * vec = self.instance.vector_part()
15684  */
15685  {
15686  __Pyx_PyThreadState_declare
15687  __Pyx_PyThreadState_assign
15688  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
15689  __Pyx_XGOTREF(__pyx_t_1);
15690  __Pyx_XGOTREF(__pyx_t_2);
15691  __Pyx_XGOTREF(__pyx_t_3);
15692  /*try:*/ {
15693 
15694  /* "PyClical.pyx":1156
15695  * cdef int i
15696  * try:
15697  * if frm is None: # <<<<<<<<<<<<<<
15698  * vec = self.instance.vector_part()
15699  * else:
15700  */
15701  __pyx_t_4 = (__pyx_v_frm == Py_None);
15702  if (__pyx_t_4) {
15703 
15704  /* "PyClical.pyx":1157
15705  * try:
15706  * if frm is None:
15707  * vec = self.instance.vector_part() # <<<<<<<<<<<<<<
15708  * else:
15709  * vec = self.instance.vector_part((<index_set>frm).unwrap())
15710  */
15711  __pyx_t_5 = __pyx_v_self->instance->vector_part();
15712  __pyx_v_vec = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
15713 
15714  /* "PyClical.pyx":1156
15715  * cdef int i
15716  * try:
15717  * if frm is None: # <<<<<<<<<<<<<<
15718  * vec = self.instance.vector_part()
15719  * else:
15720  */
15721  goto __pyx_L9;
15722  }
15723 
15724  /* "PyClical.pyx":1159
15725  * vec = self.instance.vector_part()
15726  * else:
15727  * vec = self.instance.vector_part((<index_set>frm).unwrap()) # <<<<<<<<<<<<<<
15728  * n = vec.size()
15729  * lst = [0.0]*n
15730  */
15731  /*else*/ {
15732  __pyx_t_6 = __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_frm)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1159, __pyx_L3_error)
15733  try {
15734  __pyx_t_5 = __pyx_v_self->instance->vector_part(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
15735  } catch(...) {
15736  __Pyx_CppExn2PyErr();
15737  __PYX_ERR(0, 1159, __pyx_L3_error)
15738  }
15739  __pyx_v_vec = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
15740  }
15741  __pyx_L9:;
15742 
15743  /* "PyClical.pyx":1160
15744  * else:
15745  * vec = self.instance.vector_part((<index_set>frm).unwrap())
15746  * n = vec.size() # <<<<<<<<<<<<<<
15747  * lst = [0.0]*n
15748  * for i in xrange(n):
15749  */
15750  __pyx_v_n = __pyx_v_vec.size();
15751 
15752  /* "PyClical.pyx":1161
15753  * vec = self.instance.vector_part((<index_set>frm).unwrap())
15754  * n = vec.size()
15755  * lst = [0.0]*n # <<<<<<<<<<<<<<
15756  * for i in xrange(n):
15757  * lst[i] = vec[i]
15758  */
15759  __pyx_t_7 = PyList_New(1 * ((__pyx_v_n<0) ? 0:__pyx_v_n)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1161, __pyx_L3_error)
15760  __Pyx_GOTREF(__pyx_t_7);
15761  { Py_ssize_t __pyx_temp;
15762  for (__pyx_temp=0; __pyx_temp < __pyx_v_n; __pyx_temp++) {
15763  __Pyx_INCREF(__pyx_float_0_0);
15764  __Pyx_GIVEREF(__pyx_float_0_0);
15765  if (__Pyx_PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_float_0_0)) __PYX_ERR(0, 1161, __pyx_L3_error);
15766  }
15767  }
15768  __pyx_v_lst = ((PyObject*)__pyx_t_7);
15769  __pyx_t_7 = 0;
15770 
15771  /* "PyClical.pyx":1162
15772  * n = vec.size()
15773  * lst = [0.0]*n
15774  * for i in xrange(n): # <<<<<<<<<<<<<<
15775  * lst[i] = vec[i]
15776  * return lst
15777  */
15778  __pyx_t_8 = __pyx_v_n;
15779  __pyx_t_9 = __pyx_t_8;
15780  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
15781  __pyx_v_i = __pyx_t_10;
15782 
15783  /* "PyClical.pyx":1163
15784  * lst = [0.0]*n
15785  * for i in xrange(n):
15786  * lst[i] = vec[i] # <<<<<<<<<<<<<<
15787  * return lst
15788  * except RuntimeError as err:
15789  */
15790  __pyx_t_7 = PyFloat_FromDouble((__pyx_v_vec[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1163, __pyx_L3_error)
15791  __Pyx_GOTREF(__pyx_t_7);
15792  if (unlikely((__Pyx_SetItemInt(__pyx_v_lst, __pyx_v_i, __pyx_t_7, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(0, 1163, __pyx_L3_error)
15793  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15794  }
15795 
15796  /* "PyClical.pyx":1164
15797  * for i in xrange(n):
15798  * lst[i] = vec[i]
15799  * return lst # <<<<<<<<<<<<<<
15800  * except RuntimeError as err:
15801  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
15802  */
15803  __Pyx_XDECREF(__pyx_r);
15804  __Pyx_INCREF(__pyx_v_lst);
15805  __pyx_r = __pyx_v_lst;
15806  goto __pyx_L7_try_return;
15807 
15808  /* "PyClical.pyx":1155
15809  * cdef int n
15810  * cdef int i
15811  * try: # <<<<<<<<<<<<<<
15812  * if frm is None:
15813  * vec = self.instance.vector_part()
15814  */
15815  }
15816  __pyx_L3_error:;
15817  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
15818 
15819  /* "PyClical.pyx":1165
15820  * lst[i] = vec[i]
15821  * return lst
15822  * except RuntimeError as err: # <<<<<<<<<<<<<<
15823  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
15824  * + repr(frm) + " as frame:\n\t"
15825  */
15826  __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
15827  if (__pyx_t_8) {
15828  __Pyx_AddTraceback("PyClical.clifford.vector_part", __pyx_clineno, __pyx_lineno, __pyx_filename);
15829  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 1165, __pyx_L5_except_error)
15830  __Pyx_XGOTREF(__pyx_t_7);
15831  __Pyx_XGOTREF(__pyx_t_11);
15832  __Pyx_XGOTREF(__pyx_t_12);
15833  __Pyx_INCREF(__pyx_t_11);
15834  __pyx_v_err = __pyx_t_11;
15835  /*try:*/ {
15836 
15837  /* "PyClical.pyx":1166
15838  * return lst
15839  * except RuntimeError as err:
15840  * raise ValueError(error_msg_prefix + str(self) + " using invalid " # <<<<<<<<<<<<<<
15841  * + repr(frm) + " as frame:\n\t"
15842  * + str(err))
15843  */
15844  __pyx_t_13 = __Pyx_PyObject_Str(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1166, __pyx_L17_error)
15845  __Pyx_GOTREF(__pyx_t_13);
15846  __pyx_t_14 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1166, __pyx_L17_error)
15847  __Pyx_GOTREF(__pyx_t_14);
15848  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
15849  __pyx_t_13 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_14, __pyx_kp_u_using_invalid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1166, __pyx_L17_error)
15850  __Pyx_GOTREF(__pyx_t_13);
15851  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
15852 
15853  /* "PyClical.pyx":1167
15854  * except RuntimeError as err:
15855  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
15856  * + repr(frm) + " as frame:\n\t" # <<<<<<<<<<<<<<
15857  * + str(err))
15858  *
15859  */
15860  __pyx_t_14 = PyObject_Repr(__pyx_v_frm); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1167, __pyx_L17_error)
15861  __Pyx_GOTREF(__pyx_t_14);
15862  __pyx_t_15 = PyNumber_Add(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1167, __pyx_L17_error)
15863  __Pyx_GOTREF(__pyx_t_15);
15864  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
15865  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
15866  __pyx_t_14 = PyNumber_Add(__pyx_t_15, __pyx_kp_u_as_frame); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1167, __pyx_L17_error)
15867  __Pyx_GOTREF(__pyx_t_14);
15868  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15869 
15870  /* "PyClical.pyx":1168
15871  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
15872  * + repr(frm) + " as frame:\n\t"
15873  * + str(err)) # <<<<<<<<<<<<<<
15874  *
15875  * def involute(self):
15876  */
15877  __pyx_t_15 = __Pyx_PyObject_Str(__pyx_v_err); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1168, __pyx_L17_error)
15878  __Pyx_GOTREF(__pyx_t_15);
15879  __pyx_t_13 = PyNumber_Add(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1168, __pyx_L17_error)
15880  __Pyx_GOTREF(__pyx_t_13);
15881  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
15882  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15883 
15884  /* "PyClical.pyx":1166
15885  * return lst
15886  * except RuntimeError as err:
15887  * raise ValueError(error_msg_prefix + str(self) + " using invalid " # <<<<<<<<<<<<<<
15888  * + repr(frm) + " as frame:\n\t"
15889  * + str(err))
15890  */
15891  __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1166, __pyx_L17_error)
15892  __Pyx_GOTREF(__pyx_t_15);
15893  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
15894  __Pyx_Raise(__pyx_t_15, 0, 0, 0);
15895  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15896  __PYX_ERR(0, 1166, __pyx_L17_error)
15897  }
15898 
15899  /* "PyClical.pyx":1165
15900  * lst[i] = vec[i]
15901  * return lst
15902  * except RuntimeError as err: # <<<<<<<<<<<<<<
15903  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
15904  * + repr(frm) + " as frame:\n\t"
15905  */
15906  /*finally:*/ {
15907  __pyx_L17_error:;
15908  /*exception exit:*/{
15909  __Pyx_PyThreadState_declare
15910  __Pyx_PyThreadState_assign
15911  __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
15912  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
15913  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
15914  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
15915  if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
15916  if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
15917  __Pyx_XGOTREF(__pyx_t_17);
15918  __Pyx_XGOTREF(__pyx_t_18);
15919  __Pyx_XGOTREF(__pyx_t_19);
15920  __Pyx_XGOTREF(__pyx_t_20);
15921  __Pyx_XGOTREF(__pyx_t_21);
15922  __Pyx_XGOTREF(__pyx_t_22);
15923  __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
15924  {
15925  __Pyx_DECREF(__pyx_v_err); __pyx_v_err = 0;
15926  }
15927  if (PY_MAJOR_VERSION >= 3) {
15928  __Pyx_XGIVEREF(__pyx_t_20);
15929  __Pyx_XGIVEREF(__pyx_t_21);
15930  __Pyx_XGIVEREF(__pyx_t_22);
15931  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
15932  }
15933  __Pyx_XGIVEREF(__pyx_t_17);
15934  __Pyx_XGIVEREF(__pyx_t_18);
15935  __Pyx_XGIVEREF(__pyx_t_19);
15936  __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
15937  __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
15938  __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_16;
15939  goto __pyx_L5_except_error;
15940  }
15941  }
15942  }
15943  goto __pyx_L5_except_error;
15944 
15945  /* "PyClical.pyx":1155
15946  * cdef int n
15947  * cdef int i
15948  * try: # <<<<<<<<<<<<<<
15949  * if frm is None:
15950  * vec = self.instance.vector_part()
15951  */
15952  __pyx_L5_except_error:;
15953  __Pyx_XGIVEREF(__pyx_t_1);
15954  __Pyx_XGIVEREF(__pyx_t_2);
15955  __Pyx_XGIVEREF(__pyx_t_3);
15956  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
15957  goto __pyx_L1_error;
15958  __pyx_L7_try_return:;
15959  __Pyx_XGIVEREF(__pyx_t_1);
15960  __Pyx_XGIVEREF(__pyx_t_2);
15961  __Pyx_XGIVEREF(__pyx_t_3);
15962  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
15963  goto __pyx_L0;
15964  }
15965 
15966  /* "PyClical.pyx":1142
15967  * return clifford().wrap( self.instance.odd() )
15968  *
15969  * def vector_part(self, frm = None): # <<<<<<<<<<<<<<
15970  * """
15971  * Vector part of multivector, as a Python list, with respect to frm.
15972  */
15973 
15974  /* function exit code */
15975  __pyx_L1_error:;
15976  __Pyx_XDECREF(__pyx_t_7);
15977  __Pyx_XDECREF(__pyx_t_11);
15978  __Pyx_XDECREF(__pyx_t_12);
15979  __Pyx_XDECREF(__pyx_t_13);
15980  __Pyx_XDECREF(__pyx_t_14);
15981  __Pyx_XDECREF(__pyx_t_15);
15982  __Pyx_AddTraceback("PyClical.clifford.vector_part", __pyx_clineno, __pyx_lineno, __pyx_filename);
15983  __pyx_r = NULL;
15984  __pyx_L0:;
15985  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
15986  __Pyx_XDECREF(__pyx_v_lst);
15987  __Pyx_XDECREF(__pyx_v_err);
15988  __Pyx_XGIVEREF(__pyx_r);
15989  __Pyx_RefNannyFinishContext();
15990  return __pyx_r;
15991  }
15992 
15993  /* "PyClical.pyx":1170
15994  * + str(err))
15995  *
15996  * def involute(self): # <<<<<<<<<<<<<<
15997  * """
15998  * Main involution, each {i} is replaced by -{i} in each term,
15999  */
16000 
16001  /* Python wrapper */
16002  static PyObject *__pyx_pw_8PyClical_8clifford_87involute(PyObject *__pyx_v_self,
16003 #if CYTHON_METH_FASTCALL
16004 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16005 #else
16006 PyObject *__pyx_args, PyObject *__pyx_kwds
16007 #endif
16008 ); /*proto*/
16009  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_86involute, "\n Main involution, each {i} is replaced by -{i} in each term,\n eg. clifford(\"{1}\") -> -clifford(\"{1}\").\n\n >>> print(clifford(\"{1}\").involute())\n -{1}\n >>> print((clifford(\"{2}\") * clifford(\"{1}\")).involute())\n -{1,2}\n >>> print((clifford(\"{1}\") * clifford(\"{2}\")).involute())\n {1,2}\n >>> print(clifford(\"1+{1}+{1,2}\").involute())\n 1-{1}+{1,2}\n ");
16010  static PyMethodDef __pyx_mdef_8PyClical_8clifford_87involute = {"involute", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_87involute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_86involute};
16011  static PyObject *__pyx_pw_8PyClical_8clifford_87involute(PyObject *__pyx_v_self,
16012 #if CYTHON_METH_FASTCALL
16013 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16014 #else
16015 PyObject *__pyx_args, PyObject *__pyx_kwds
16016 #endif
16017 ) {
16018  #if !CYTHON_METH_FASTCALL
16019  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16020  #endif
16021  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16022  PyObject *__pyx_r = 0;
16023  __Pyx_RefNannyDeclarations
16024  __Pyx_RefNannySetupContext("involute (wrapper)", 0);
16025  #if !CYTHON_METH_FASTCALL
16026  #if CYTHON_ASSUME_SAFE_MACROS
16027  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16028  #else
16029  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16030  #endif
16031  #endif
16032  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16033  if (unlikely(__pyx_nargs > 0)) {
16034  __Pyx_RaiseArgtupleInvalid("involute", 1, 0, 0, __pyx_nargs); return NULL;}
16035  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "involute", 0))) return NULL;
16036  __pyx_r = __pyx_pf_8PyClical_8clifford_86involute(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16037 
16038  /* function exit code */
16039  __Pyx_RefNannyFinishContext();
16040  return __pyx_r;
16041  }
16042 
16043  static PyObject *__pyx_pf_8PyClical_8clifford_86involute(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16044  PyObject *__pyx_r = NULL;
16045  __Pyx_RefNannyDeclarations
16046  PyObject *__pyx_t_1 = NULL;
16047  PyObject *__pyx_t_2 = NULL;
16048  int __pyx_lineno = 0;
16049  const char *__pyx_filename = NULL;
16050  int __pyx_clineno = 0;
16051  __Pyx_RefNannySetupContext("involute", 1);
16052 
16053  /* "PyClical.pyx":1184
16054  * 1-{1}+{1,2}
16055  * """
16056  * return clifford().wrap( self.instance.involute() ) # <<<<<<<<<<<<<<
16057  *
16058  * def reverse(self):
16059  */
16060  __Pyx_XDECREF(__pyx_r);
16061  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
16062  __Pyx_GOTREF(__pyx_t_1);
16063  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->involute()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1184, __pyx_L1_error)
16064  __Pyx_GOTREF(__pyx_t_2);
16065  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16066  __pyx_r = __pyx_t_2;
16067  __pyx_t_2 = 0;
16068  goto __pyx_L0;
16069 
16070  /* "PyClical.pyx":1170
16071  * + str(err))
16072  *
16073  * def involute(self): # <<<<<<<<<<<<<<
16074  * """
16075  * Main involution, each {i} is replaced by -{i} in each term,
16076  */
16077 
16078  /* function exit code */
16079  __pyx_L1_error:;
16080  __Pyx_XDECREF(__pyx_t_1);
16081  __Pyx_XDECREF(__pyx_t_2);
16082  __Pyx_AddTraceback("PyClical.clifford.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
16083  __pyx_r = NULL;
16084  __pyx_L0:;
16085  __Pyx_XGIVEREF(__pyx_r);
16086  __Pyx_RefNannyFinishContext();
16087  return __pyx_r;
16088  }
16089 
16090  /* "PyClical.pyx":1186
16091  * return clifford().wrap( self.instance.involute() )
16092  *
16093  * def reverse(self): # <<<<<<<<<<<<<<
16094  * """
16095  * Reversion, eg. clifford("{1}")*clifford("{2}") -> clifford("{2}")*clifford("{1}").
16096  */
16097 
16098  /* Python wrapper */
16099  static PyObject *__pyx_pw_8PyClical_8clifford_89reverse(PyObject *__pyx_v_self,
16100 #if CYTHON_METH_FASTCALL
16101 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16102 #else
16103 PyObject *__pyx_args, PyObject *__pyx_kwds
16104 #endif
16105 ); /*proto*/
16106  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_88reverse, "\n Reversion, eg. clifford(\"{1}\")*clifford(\"{2}\") -> clifford(\"{2}\")*clifford(\"{1}\").\n\n >>> print(clifford(\"{1}\").reverse())\n {1}\n >>> print((clifford(\"{2}\") * clifford(\"{1}\")).reverse())\n {1,2}\n >>> print((clifford(\"{1}\") * clifford(\"{2}\")).reverse())\n -{1,2}\n >>> print(clifford(\"1+{1}+{1,2}\").reverse())\n 1+{1}-{1,2}\n ");
16107  static PyMethodDef __pyx_mdef_8PyClical_8clifford_89reverse = {"reverse", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_89reverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_88reverse};
16108  static PyObject *__pyx_pw_8PyClical_8clifford_89reverse(PyObject *__pyx_v_self,
16109 #if CYTHON_METH_FASTCALL
16110 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16111 #else
16112 PyObject *__pyx_args, PyObject *__pyx_kwds
16113 #endif
16114 ) {
16115  #if !CYTHON_METH_FASTCALL
16116  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16117  #endif
16118  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16119  PyObject *__pyx_r = 0;
16120  __Pyx_RefNannyDeclarations
16121  __Pyx_RefNannySetupContext("reverse (wrapper)", 0);
16122  #if !CYTHON_METH_FASTCALL
16123  #if CYTHON_ASSUME_SAFE_MACROS
16124  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16125  #else
16126  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16127  #endif
16128  #endif
16129  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16130  if (unlikely(__pyx_nargs > 0)) {
16131  __Pyx_RaiseArgtupleInvalid("reverse", 1, 0, 0, __pyx_nargs); return NULL;}
16132  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reverse", 0))) return NULL;
16133  __pyx_r = __pyx_pf_8PyClical_8clifford_88reverse(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16134 
16135  /* function exit code */
16136  __Pyx_RefNannyFinishContext();
16137  return __pyx_r;
16138  }
16139 
16140  static PyObject *__pyx_pf_8PyClical_8clifford_88reverse(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16141  PyObject *__pyx_r = NULL;
16142  __Pyx_RefNannyDeclarations
16143  PyObject *__pyx_t_1 = NULL;
16144  PyObject *__pyx_t_2 = NULL;
16145  int __pyx_lineno = 0;
16146  const char *__pyx_filename = NULL;
16147  int __pyx_clineno = 0;
16148  __Pyx_RefNannySetupContext("reverse", 1);
16149 
16150  /* "PyClical.pyx":1199
16151  * 1+{1}-{1,2}
16152  * """
16153  * return clifford().wrap( self.instance.reverse() ) # <<<<<<<<<<<<<<
16154  *
16155  * def conj(self):
16156  */
16157  __Pyx_XDECREF(__pyx_r);
16158  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1199, __pyx_L1_error)
16159  __Pyx_GOTREF(__pyx_t_1);
16160  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->reverse()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1199, __pyx_L1_error)
16161  __Pyx_GOTREF(__pyx_t_2);
16162  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16163  __pyx_r = __pyx_t_2;
16164  __pyx_t_2 = 0;
16165  goto __pyx_L0;
16166 
16167  /* "PyClical.pyx":1186
16168  * return clifford().wrap( self.instance.involute() )
16169  *
16170  * def reverse(self): # <<<<<<<<<<<<<<
16171  * """
16172  * Reversion, eg. clifford("{1}")*clifford("{2}") -> clifford("{2}")*clifford("{1}").
16173  */
16174 
16175  /* function exit code */
16176  __pyx_L1_error:;
16177  __Pyx_XDECREF(__pyx_t_1);
16178  __Pyx_XDECREF(__pyx_t_2);
16179  __Pyx_AddTraceback("PyClical.clifford.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
16180  __pyx_r = NULL;
16181  __pyx_L0:;
16182  __Pyx_XGIVEREF(__pyx_r);
16183  __Pyx_RefNannyFinishContext();
16184  return __pyx_r;
16185  }
16186 
16187  /* "PyClical.pyx":1201
16188  * return clifford().wrap( self.instance.reverse() )
16189  *
16190  * def conj(self): # <<<<<<<<<<<<<<
16191  * """
16192  * Conjugation, reverse o involute == involute o reverse.
16193  */
16194 
16195  /* Python wrapper */
16196  static PyObject *__pyx_pw_8PyClical_8clifford_91conj(PyObject *__pyx_v_self,
16197 #if CYTHON_METH_FASTCALL
16198 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16199 #else
16200 PyObject *__pyx_args, PyObject *__pyx_kwds
16201 #endif
16202 ); /*proto*/
16203  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_90conj, "\n Conjugation, reverse o involute == involute o reverse.\n\n >>> print((clifford(\"{1}\")).conj())\n -{1}\n >>> print((clifford(\"{2}\") * clifford(\"{1}\")).conj())\n {1,2}\n >>> print((clifford(\"{1}\") * clifford(\"{2}\")).conj())\n -{1,2}\n >>> print(clifford(\"1+{1}+{1,2}\").conj())\n 1-{1}-{1,2}\n ");
16204  static PyMethodDef __pyx_mdef_8PyClical_8clifford_91conj = {"conj", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_91conj, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_90conj};
16205  static PyObject *__pyx_pw_8PyClical_8clifford_91conj(PyObject *__pyx_v_self,
16206 #if CYTHON_METH_FASTCALL
16207 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16208 #else
16209 PyObject *__pyx_args, PyObject *__pyx_kwds
16210 #endif
16211 ) {
16212  #if !CYTHON_METH_FASTCALL
16213  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16214  #endif
16215  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16216  PyObject *__pyx_r = 0;
16217  __Pyx_RefNannyDeclarations
16218  __Pyx_RefNannySetupContext("conj (wrapper)", 0);
16219  #if !CYTHON_METH_FASTCALL
16220  #if CYTHON_ASSUME_SAFE_MACROS
16221  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16222  #else
16223  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16224  #endif
16225  #endif
16226  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16227  if (unlikely(__pyx_nargs > 0)) {
16228  __Pyx_RaiseArgtupleInvalid("conj", 1, 0, 0, __pyx_nargs); return NULL;}
16229  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "conj", 0))) return NULL;
16230  __pyx_r = __pyx_pf_8PyClical_8clifford_90conj(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16231 
16232  /* function exit code */
16233  __Pyx_RefNannyFinishContext();
16234  return __pyx_r;
16235  }
16236 
16237  static PyObject *__pyx_pf_8PyClical_8clifford_90conj(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16238  PyObject *__pyx_r = NULL;
16239  __Pyx_RefNannyDeclarations
16240  PyObject *__pyx_t_1 = NULL;
16241  PyObject *__pyx_t_2 = NULL;
16242  int __pyx_lineno = 0;
16243  const char *__pyx_filename = NULL;
16244  int __pyx_clineno = 0;
16245  __Pyx_RefNannySetupContext("conj", 1);
16246 
16247  /* "PyClical.pyx":1214
16248  * 1-{1}-{1,2}
16249  * """
16250  * return clifford().wrap( self.instance.conj() ) # <<<<<<<<<<<<<<
16251  *
16252  * def quad(self):
16253  */
16254  __Pyx_XDECREF(__pyx_r);
16255  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1214, __pyx_L1_error)
16256  __Pyx_GOTREF(__pyx_t_1);
16257  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->conj()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1214, __pyx_L1_error)
16258  __Pyx_GOTREF(__pyx_t_2);
16259  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16260  __pyx_r = __pyx_t_2;
16261  __pyx_t_2 = 0;
16262  goto __pyx_L0;
16263 
16264  /* "PyClical.pyx":1201
16265  * return clifford().wrap( self.instance.reverse() )
16266  *
16267  * def conj(self): # <<<<<<<<<<<<<<
16268  * """
16269  * Conjugation, reverse o involute == involute o reverse.
16270  */
16271 
16272  /* function exit code */
16273  __pyx_L1_error:;
16274  __Pyx_XDECREF(__pyx_t_1);
16275  __Pyx_XDECREF(__pyx_t_2);
16276  __Pyx_AddTraceback("PyClical.clifford.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
16277  __pyx_r = NULL;
16278  __pyx_L0:;
16279  __Pyx_XGIVEREF(__pyx_r);
16280  __Pyx_RefNannyFinishContext();
16281  return __pyx_r;
16282  }
16283 
16284  /* "PyClical.pyx":1216
16285  * return clifford().wrap( self.instance.conj() )
16286  *
16287  * def quad(self): # <<<<<<<<<<<<<<
16288  * """
16289  * Quadratic form == (rev(x)*x)(0).
16290  */
16291 
16292  /* Python wrapper */
16293  static PyObject *__pyx_pw_8PyClical_8clifford_93quad(PyObject *__pyx_v_self,
16294 #if CYTHON_METH_FASTCALL
16295 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16296 #else
16297 PyObject *__pyx_args, PyObject *__pyx_kwds
16298 #endif
16299 ); /*proto*/
16300  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_92quad, "\n Quadratic form == (rev(x)*x)(0).\n\n >>> print(clifford(\"1+{1}+{1,2}\").quad())\n 3.0\n >>> print(clifford(\"1+{-1}+{1,2}+{1,2,3}\").quad())\n 2.0\n ");
16301  static PyMethodDef __pyx_mdef_8PyClical_8clifford_93quad = {"quad", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_93quad, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_92quad};
16302  static PyObject *__pyx_pw_8PyClical_8clifford_93quad(PyObject *__pyx_v_self,
16303 #if CYTHON_METH_FASTCALL
16304 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16305 #else
16306 PyObject *__pyx_args, PyObject *__pyx_kwds
16307 #endif
16308 ) {
16309  #if !CYTHON_METH_FASTCALL
16310  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16311  #endif
16312  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16313  PyObject *__pyx_r = 0;
16314  __Pyx_RefNannyDeclarations
16315  __Pyx_RefNannySetupContext("quad (wrapper)", 0);
16316  #if !CYTHON_METH_FASTCALL
16317  #if CYTHON_ASSUME_SAFE_MACROS
16318  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16319  #else
16320  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16321  #endif
16322  #endif
16323  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16324  if (unlikely(__pyx_nargs > 0)) {
16325  __Pyx_RaiseArgtupleInvalid("quad", 1, 0, 0, __pyx_nargs); return NULL;}
16326  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "quad", 0))) return NULL;
16327  __pyx_r = __pyx_pf_8PyClical_8clifford_92quad(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16328 
16329  /* function exit code */
16330  __Pyx_RefNannyFinishContext();
16331  return __pyx_r;
16332  }
16333 
16334  static PyObject *__pyx_pf_8PyClical_8clifford_92quad(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16335  PyObject *__pyx_r = NULL;
16336  __Pyx_RefNannyDeclarations
16337  PyObject *__pyx_t_1 = NULL;
16338  int __pyx_lineno = 0;
16339  const char *__pyx_filename = NULL;
16340  int __pyx_clineno = 0;
16341  __Pyx_RefNannySetupContext("quad", 1);
16342 
16343  /* "PyClical.pyx":1225
16344  * 2.0
16345  * """
16346  * return self.instance.quad() # <<<<<<<<<<<<<<
16347  *
16348  * def norm(self):
16349  */
16350  __Pyx_XDECREF(__pyx_r);
16351  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->quad()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error)
16352  __Pyx_GOTREF(__pyx_t_1);
16353  __pyx_r = __pyx_t_1;
16354  __pyx_t_1 = 0;
16355  goto __pyx_L0;
16356 
16357  /* "PyClical.pyx":1216
16358  * return clifford().wrap( self.instance.conj() )
16359  *
16360  * def quad(self): # <<<<<<<<<<<<<<
16361  * """
16362  * Quadratic form == (rev(x)*x)(0).
16363  */
16364 
16365  /* function exit code */
16366  __pyx_L1_error:;
16367  __Pyx_XDECREF(__pyx_t_1);
16368  __Pyx_AddTraceback("PyClical.clifford.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
16369  __pyx_r = NULL;
16370  __pyx_L0:;
16371  __Pyx_XGIVEREF(__pyx_r);
16372  __Pyx_RefNannyFinishContext();
16373  return __pyx_r;
16374  }
16375 
16376  /* "PyClical.pyx":1227
16377  * return self.instance.quad()
16378  *
16379  * def norm(self): # <<<<<<<<<<<<<<
16380  * """
16381  * Norm == sum of squares of coordinates.
16382  */
16383 
16384  /* Python wrapper */
16385  static PyObject *__pyx_pw_8PyClical_8clifford_95norm(PyObject *__pyx_v_self,
16386 #if CYTHON_METH_FASTCALL
16387 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16388 #else
16389 PyObject *__pyx_args, PyObject *__pyx_kwds
16390 #endif
16391 ); /*proto*/
16392  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_94norm, "\n Norm == sum of squares of coordinates.\n\n >>> clifford(\"1+{1}+{1,2}\").norm()\n 3.0\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").norm()\n 4.0\n ");
16393  static PyMethodDef __pyx_mdef_8PyClical_8clifford_95norm = {"norm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_95norm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_94norm};
16394  static PyObject *__pyx_pw_8PyClical_8clifford_95norm(PyObject *__pyx_v_self,
16395 #if CYTHON_METH_FASTCALL
16396 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16397 #else
16398 PyObject *__pyx_args, PyObject *__pyx_kwds
16399 #endif
16400 ) {
16401  #if !CYTHON_METH_FASTCALL
16402  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16403  #endif
16404  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16405  PyObject *__pyx_r = 0;
16406  __Pyx_RefNannyDeclarations
16407  __Pyx_RefNannySetupContext("norm (wrapper)", 0);
16408  #if !CYTHON_METH_FASTCALL
16409  #if CYTHON_ASSUME_SAFE_MACROS
16410  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16411  #else
16412  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16413  #endif
16414  #endif
16415  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16416  if (unlikely(__pyx_nargs > 0)) {
16417  __Pyx_RaiseArgtupleInvalid("norm", 1, 0, 0, __pyx_nargs); return NULL;}
16418  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "norm", 0))) return NULL;
16419  __pyx_r = __pyx_pf_8PyClical_8clifford_94norm(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16420 
16421  /* function exit code */
16422  __Pyx_RefNannyFinishContext();
16423  return __pyx_r;
16424  }
16425 
16426  static PyObject *__pyx_pf_8PyClical_8clifford_94norm(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16427  PyObject *__pyx_r = NULL;
16428  __Pyx_RefNannyDeclarations
16429  PyObject *__pyx_t_1 = NULL;
16430  int __pyx_lineno = 0;
16431  const char *__pyx_filename = NULL;
16432  int __pyx_clineno = 0;
16433  __Pyx_RefNannySetupContext("norm", 1);
16434 
16435  /* "PyClical.pyx":1236
16436  * 4.0
16437  * """
16438  * return self.instance.norm() # <<<<<<<<<<<<<<
16439  *
16440  * def abs(self):
16441  */
16442  __Pyx_XDECREF(__pyx_r);
16443  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->norm()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1236, __pyx_L1_error)
16444  __Pyx_GOTREF(__pyx_t_1);
16445  __pyx_r = __pyx_t_1;
16446  __pyx_t_1 = 0;
16447  goto __pyx_L0;
16448 
16449  /* "PyClical.pyx":1227
16450  * return self.instance.quad()
16451  *
16452  * def norm(self): # <<<<<<<<<<<<<<
16453  * """
16454  * Norm == sum of squares of coordinates.
16455  */
16456 
16457  /* function exit code */
16458  __pyx_L1_error:;
16459  __Pyx_XDECREF(__pyx_t_1);
16460  __Pyx_AddTraceback("PyClical.clifford.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
16461  __pyx_r = NULL;
16462  __pyx_L0:;
16463  __Pyx_XGIVEREF(__pyx_r);
16464  __Pyx_RefNannyFinishContext();
16465  return __pyx_r;
16466  }
16467 
16468  /* "PyClical.pyx":1238
16469  * return self.instance.norm()
16470  *
16471  * def abs(self): # <<<<<<<<<<<<<<
16472  * """
16473  * Absolute value: square root of norm.
16474  */
16475 
16476  /* Python wrapper */
16477  static PyObject *__pyx_pw_8PyClical_8clifford_97abs(PyObject *__pyx_v_self,
16478 #if CYTHON_METH_FASTCALL
16479 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16480 #else
16481 PyObject *__pyx_args, PyObject *__pyx_kwds
16482 #endif
16483 ); /*proto*/
16484  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_96abs, "\n Absolute value: square root of norm.\n\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").abs()\n 2.0\n ");
16485  static PyMethodDef __pyx_mdef_8PyClical_8clifford_97abs = {"abs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_97abs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_96abs};
16486  static PyObject *__pyx_pw_8PyClical_8clifford_97abs(PyObject *__pyx_v_self,
16487 #if CYTHON_METH_FASTCALL
16488 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16489 #else
16490 PyObject *__pyx_args, PyObject *__pyx_kwds
16491 #endif
16492 ) {
16493  #if !CYTHON_METH_FASTCALL
16494  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16495  #endif
16496  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16497  PyObject *__pyx_r = 0;
16498  __Pyx_RefNannyDeclarations
16499  __Pyx_RefNannySetupContext("abs (wrapper)", 0);
16500  #if !CYTHON_METH_FASTCALL
16501  #if CYTHON_ASSUME_SAFE_MACROS
16502  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16503  #else
16504  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16505  #endif
16506  #endif
16507  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16508  if (unlikely(__pyx_nargs > 0)) {
16509  __Pyx_RaiseArgtupleInvalid("abs", 1, 0, 0, __pyx_nargs); return NULL;}
16510  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "abs", 0))) return NULL;
16511  __pyx_r = __pyx_pf_8PyClical_8clifford_96abs(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16512 
16513  /* function exit code */
16514  __Pyx_RefNannyFinishContext();
16515  return __pyx_r;
16516  }
16517 
16518  static PyObject *__pyx_pf_8PyClical_8clifford_96abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16519  PyObject *__pyx_r = NULL;
16520  __Pyx_RefNannyDeclarations
16521  Clifford __pyx_t_1;
16522  PyObject *__pyx_t_2 = NULL;
16523  int __pyx_lineno = 0;
16524  const char *__pyx_filename = NULL;
16525  int __pyx_clineno = 0;
16526  __Pyx_RefNannySetupContext("abs", 1);
16527 
16528  /* "PyClical.pyx":1245
16529  * 2.0
16530  * """
16531  * return glucat.abs( self.unwrap() ) # <<<<<<<<<<<<<<
16532  *
16533  * def max_abs(self):
16534  */
16535  __Pyx_XDECREF(__pyx_r);
16536  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1245, __pyx_L1_error)
16537  __pyx_t_2 = PyFloat_FromDouble(abs(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1245, __pyx_L1_error)
16538  __Pyx_GOTREF(__pyx_t_2);
16539  __pyx_r = __pyx_t_2;
16540  __pyx_t_2 = 0;
16541  goto __pyx_L0;
16542 
16543  /* "PyClical.pyx":1238
16544  * return self.instance.norm()
16545  *
16546  * def abs(self): # <<<<<<<<<<<<<<
16547  * """
16548  * Absolute value: square root of norm.
16549  */
16550 
16551  /* function exit code */
16552  __pyx_L1_error:;
16553  __Pyx_XDECREF(__pyx_t_2);
16554  __Pyx_AddTraceback("PyClical.clifford.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
16555  __pyx_r = NULL;
16556  __pyx_L0:;
16557  __Pyx_XGIVEREF(__pyx_r);
16558  __Pyx_RefNannyFinishContext();
16559  return __pyx_r;
16560  }
16561 
16562  /* "PyClical.pyx":1247
16563  * return glucat.abs( self.unwrap() )
16564  *
16565  * def max_abs(self): # <<<<<<<<<<<<<<
16566  * """
16567  * Maximum of absolute values of components of multivector: multivector infinity norm.
16568  */
16569 
16570  /* Python wrapper */
16571  static PyObject *__pyx_pw_8PyClical_8clifford_99max_abs(PyObject *__pyx_v_self,
16572 #if CYTHON_METH_FASTCALL
16573 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16574 #else
16575 PyObject *__pyx_args, PyObject *__pyx_kwds
16576 #endif
16577 ); /*proto*/
16578  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_98max_abs, "\n Maximum of absolute values of components of multivector: multivector infinity norm.\n\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").max_abs()\n 1.0\n >>> clifford(\"3+2{1}+{1,2}\").max_abs()\n 3.0\n ");
16579  static PyMethodDef __pyx_mdef_8PyClical_8clifford_99max_abs = {"max_abs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_99max_abs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_98max_abs};
16580  static PyObject *__pyx_pw_8PyClical_8clifford_99max_abs(PyObject *__pyx_v_self,
16581 #if CYTHON_METH_FASTCALL
16582 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16583 #else
16584 PyObject *__pyx_args, PyObject *__pyx_kwds
16585 #endif
16586 ) {
16587  #if !CYTHON_METH_FASTCALL
16588  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16589  #endif
16590  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16591  PyObject *__pyx_r = 0;
16592  __Pyx_RefNannyDeclarations
16593  __Pyx_RefNannySetupContext("max_abs (wrapper)", 0);
16594  #if !CYTHON_METH_FASTCALL
16595  #if CYTHON_ASSUME_SAFE_MACROS
16596  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16597  #else
16598  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16599  #endif
16600  #endif
16601  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16602  if (unlikely(__pyx_nargs > 0)) {
16603  __Pyx_RaiseArgtupleInvalid("max_abs", 1, 0, 0, __pyx_nargs); return NULL;}
16604  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "max_abs", 0))) return NULL;
16605  __pyx_r = __pyx_pf_8PyClical_8clifford_98max_abs(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16606 
16607  /* function exit code */
16608  __Pyx_RefNannyFinishContext();
16609  return __pyx_r;
16610  }
16611 
16612  static PyObject *__pyx_pf_8PyClical_8clifford_98max_abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16613  PyObject *__pyx_r = NULL;
16614  __Pyx_RefNannyDeclarations
16615  PyObject *__pyx_t_1 = NULL;
16616  int __pyx_lineno = 0;
16617  const char *__pyx_filename = NULL;
16618  int __pyx_clineno = 0;
16619  __Pyx_RefNannySetupContext("max_abs", 1);
16620 
16621  /* "PyClical.pyx":1256
16622  * 3.0
16623  * """
16624  * return self.instance.max_abs() # <<<<<<<<<<<<<<
16625  *
16626  * def truncated(self, limit):
16627  */
16628  __Pyx_XDECREF(__pyx_r);
16629  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->max_abs()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error)
16630  __Pyx_GOTREF(__pyx_t_1);
16631  __pyx_r = __pyx_t_1;
16632  __pyx_t_1 = 0;
16633  goto __pyx_L0;
16634 
16635  /* "PyClical.pyx":1247
16636  * return glucat.abs( self.unwrap() )
16637  *
16638  * def max_abs(self): # <<<<<<<<<<<<<<
16639  * """
16640  * Maximum of absolute values of components of multivector: multivector infinity norm.
16641  */
16642 
16643  /* function exit code */
16644  __pyx_L1_error:;
16645  __Pyx_XDECREF(__pyx_t_1);
16646  __Pyx_AddTraceback("PyClical.clifford.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
16647  __pyx_r = NULL;
16648  __pyx_L0:;
16649  __Pyx_XGIVEREF(__pyx_r);
16650  __Pyx_RefNannyFinishContext();
16651  return __pyx_r;
16652  }
16653 
16654  /* "PyClical.pyx":1258
16655  * return self.instance.max_abs()
16656  *
16657  * def truncated(self, limit): # <<<<<<<<<<<<<<
16658  * """
16659  * Remove all terms of self with relative size smaller than limit.
16660  */
16661 
16662  /* Python wrapper */
16663  static PyObject *__pyx_pw_8PyClical_8clifford_101truncated(PyObject *__pyx_v_self,
16664 #if CYTHON_METH_FASTCALL
16665 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16666 #else
16667 PyObject *__pyx_args, PyObject *__pyx_kwds
16668 #endif
16669 ); /*proto*/
16670  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_100truncated, "\n Remove all terms of self with relative size smaller than limit.\n\n >>> clifford(\"1e8+{1}+1e-8{1,2}\").truncated(1.0e-6)\n clifford(\"100000000\")\n >>> clifford(\"1e4+{1}+1e-4{1,2}\").truncated(1.0e-6)\n clifford(\"10000+{1}\")\n ");
16671  static PyMethodDef __pyx_mdef_8PyClical_8clifford_101truncated = {"truncated", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_101truncated, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_100truncated};
16672  static PyObject *__pyx_pw_8PyClical_8clifford_101truncated(PyObject *__pyx_v_self,
16673 #if CYTHON_METH_FASTCALL
16674 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16675 #else
16676 PyObject *__pyx_args, PyObject *__pyx_kwds
16677 #endif
16678 ) {
16679  PyObject *__pyx_v_limit = 0;
16680  #if !CYTHON_METH_FASTCALL
16681  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16682  #endif
16683  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16684  PyObject* values[1] = {0};
16685  int __pyx_lineno = 0;
16686  const char *__pyx_filename = NULL;
16687  int __pyx_clineno = 0;
16688  PyObject *__pyx_r = 0;
16689  __Pyx_RefNannyDeclarations
16690  __Pyx_RefNannySetupContext("truncated (wrapper)", 0);
16691  #if !CYTHON_METH_FASTCALL
16692  #if CYTHON_ASSUME_SAFE_MACROS
16693  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16694  #else
16695  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16696  #endif
16697  #endif
16698  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16699  {
16700  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_limit,0};
16701  if (__pyx_kwds) {
16702  Py_ssize_t kw_args;
16703  switch (__pyx_nargs) {
16704  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
16705  CYTHON_FALLTHROUGH;
16706  case 0: break;
16707  default: goto __pyx_L5_argtuple_error;
16708  }
16709  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
16710  switch (__pyx_nargs) {
16711  case 0:
16712  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_limit)) != 0)) {
16713  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
16714  kw_args--;
16715  }
16716  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1258, __pyx_L3_error)
16717  else goto __pyx_L5_argtuple_error;
16718  }
16719  if (unlikely(kw_args > 0)) {
16720  const Py_ssize_t kwd_pos_args = __pyx_nargs;
16721  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "truncated") < 0)) __PYX_ERR(0, 1258, __pyx_L3_error)
16722  }
16723  } else if (unlikely(__pyx_nargs != 1)) {
16724  goto __pyx_L5_argtuple_error;
16725  } else {
16726  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
16727  }
16728  __pyx_v_limit = values[0];
16729  }
16730  goto __pyx_L6_skip;
16731  __pyx_L5_argtuple_error:;
16732  __Pyx_RaiseArgtupleInvalid("truncated", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1258, __pyx_L3_error)
16733  __pyx_L6_skip:;
16734  goto __pyx_L4_argument_unpacking_done;
16735  __pyx_L3_error:;
16736  {
16737  Py_ssize_t __pyx_temp;
16738  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
16739  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
16740  }
16741  }
16742  __Pyx_AddTraceback("PyClical.clifford.truncated", __pyx_clineno, __pyx_lineno, __pyx_filename);
16743  __Pyx_RefNannyFinishContext();
16744  return NULL;
16745  __pyx_L4_argument_unpacking_done:;
16746  __pyx_r = __pyx_pf_8PyClical_8clifford_100truncated(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_limit);
16747 
16748  /* function exit code */
16749  {
16750  Py_ssize_t __pyx_temp;
16751  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
16752  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
16753  }
16754  }
16755  __Pyx_RefNannyFinishContext();
16756  return __pyx_r;
16757  }
16758 
16759  static PyObject *__pyx_pf_8PyClical_8clifford_100truncated(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_limit) {
16760  PyObject *__pyx_r = NULL;
16761  __Pyx_RefNannyDeclarations
16762  PyObject *__pyx_t_1 = NULL;
16763  scalar_t __pyx_t_2;
16764  PyObject *__pyx_t_3 = NULL;
16765  int __pyx_lineno = 0;
16766  const char *__pyx_filename = NULL;
16767  int __pyx_clineno = 0;
16768  __Pyx_RefNannySetupContext("truncated", 1);
16769 
16770  /* "PyClical.pyx":1267
16771  * clifford("10000+{1}")
16772  * """
16773  * return clifford().wrap( self.instance.truncated(limit) ) # <<<<<<<<<<<<<<
16774  *
16775  * def isinf(self):
16776  */
16777  __Pyx_XDECREF(__pyx_r);
16778  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1267, __pyx_L1_error)
16779  __Pyx_GOTREF(__pyx_t_1);
16780  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_limit); if (unlikely((__pyx_t_2 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1267, __pyx_L1_error)
16781  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), __pyx_v_self->instance->truncated(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
16782  __Pyx_GOTREF(__pyx_t_3);
16783  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16784  __pyx_r = __pyx_t_3;
16785  __pyx_t_3 = 0;
16786  goto __pyx_L0;
16787 
16788  /* "PyClical.pyx":1258
16789  * return self.instance.max_abs()
16790  *
16791  * def truncated(self, limit): # <<<<<<<<<<<<<<
16792  * """
16793  * Remove all terms of self with relative size smaller than limit.
16794  */
16795 
16796  /* function exit code */
16797  __pyx_L1_error:;
16798  __Pyx_XDECREF(__pyx_t_1);
16799  __Pyx_XDECREF(__pyx_t_3);
16800  __Pyx_AddTraceback("PyClical.clifford.truncated", __pyx_clineno, __pyx_lineno, __pyx_filename);
16801  __pyx_r = NULL;
16802  __pyx_L0:;
16803  __Pyx_XGIVEREF(__pyx_r);
16804  __Pyx_RefNannyFinishContext();
16805  return __pyx_r;
16806  }
16807 
16808  /* "PyClical.pyx":1269
16809  * return clifford().wrap( self.instance.truncated(limit) )
16810  *
16811  * def isinf(self): # <<<<<<<<<<<<<<
16812  * """
16813  * Check if a multivector contains any infinite values.
16814  */
16815 
16816  /* Python wrapper */
16817  static PyObject *__pyx_pw_8PyClical_8clifford_103isinf(PyObject *__pyx_v_self,
16818 #if CYTHON_METH_FASTCALL
16819 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16820 #else
16821 PyObject *__pyx_args, PyObject *__pyx_kwds
16822 #endif
16823 ); /*proto*/
16824  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_102isinf, "\n Check if a multivector contains any infinite values.\n\n >>> clifford().isinf()\n False\n ");
16825  static PyMethodDef __pyx_mdef_8PyClical_8clifford_103isinf = {"isinf", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_103isinf, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_102isinf};
16826  static PyObject *__pyx_pw_8PyClical_8clifford_103isinf(PyObject *__pyx_v_self,
16827 #if CYTHON_METH_FASTCALL
16828 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16829 #else
16830 PyObject *__pyx_args, PyObject *__pyx_kwds
16831 #endif
16832 ) {
16833  #if !CYTHON_METH_FASTCALL
16834  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16835  #endif
16836  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16837  PyObject *__pyx_r = 0;
16838  __Pyx_RefNannyDeclarations
16839  __Pyx_RefNannySetupContext("isinf (wrapper)", 0);
16840  #if !CYTHON_METH_FASTCALL
16841  #if CYTHON_ASSUME_SAFE_MACROS
16842  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16843  #else
16844  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16845  #endif
16846  #endif
16847  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16848  if (unlikely(__pyx_nargs > 0)) {
16849  __Pyx_RaiseArgtupleInvalid("isinf", 1, 0, 0, __pyx_nargs); return NULL;}
16850  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isinf", 0))) return NULL;
16851  __pyx_r = __pyx_pf_8PyClical_8clifford_102isinf(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16852 
16853  /* function exit code */
16854  __Pyx_RefNannyFinishContext();
16855  return __pyx_r;
16856  }
16857 
16858  static PyObject *__pyx_pf_8PyClical_8clifford_102isinf(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16859  PyObject *__pyx_r = NULL;
16860  __Pyx_RefNannyDeclarations
16861  PyObject *__pyx_t_1 = NULL;
16862  int __pyx_lineno = 0;
16863  const char *__pyx_filename = NULL;
16864  int __pyx_clineno = 0;
16865  __Pyx_RefNannySetupContext("isinf", 1);
16866 
16867  /* "PyClical.pyx":1276
16868  * False
16869  * """
16870  * return self.instance.isnan() # <<<<<<<<<<<<<<
16871  *
16872  * def isnan(self):
16873  */
16874  __Pyx_XDECREF(__pyx_r);
16875  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->instance->isnan()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1276, __pyx_L1_error)
16876  __Pyx_GOTREF(__pyx_t_1);
16877  __pyx_r = __pyx_t_1;
16878  __pyx_t_1 = 0;
16879  goto __pyx_L0;
16880 
16881  /* "PyClical.pyx":1269
16882  * return clifford().wrap( self.instance.truncated(limit) )
16883  *
16884  * def isinf(self): # <<<<<<<<<<<<<<
16885  * """
16886  * Check if a multivector contains any infinite values.
16887  */
16888 
16889  /* function exit code */
16890  __pyx_L1_error:;
16891  __Pyx_XDECREF(__pyx_t_1);
16892  __Pyx_AddTraceback("PyClical.clifford.isinf", __pyx_clineno, __pyx_lineno, __pyx_filename);
16893  __pyx_r = NULL;
16894  __pyx_L0:;
16895  __Pyx_XGIVEREF(__pyx_r);
16896  __Pyx_RefNannyFinishContext();
16897  return __pyx_r;
16898  }
16899 
16900  /* "PyClical.pyx":1278
16901  * return self.instance.isnan()
16902  *
16903  * def isnan(self): # <<<<<<<<<<<<<<
16904  * """
16905  * Check if a multivector contains any IEEE NaN values.
16906  */
16907 
16908  /* Python wrapper */
16909  static PyObject *__pyx_pw_8PyClical_8clifford_105isnan(PyObject *__pyx_v_self,
16910 #if CYTHON_METH_FASTCALL
16911 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16912 #else
16913 PyObject *__pyx_args, PyObject *__pyx_kwds
16914 #endif
16915 ); /*proto*/
16916  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_104isnan, "\n Check if a multivector contains any IEEE NaN values.\n\n >>> clifford().isnan()\n False\n ");
16917  static PyMethodDef __pyx_mdef_8PyClical_8clifford_105isnan = {"isnan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_105isnan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_104isnan};
16918  static PyObject *__pyx_pw_8PyClical_8clifford_105isnan(PyObject *__pyx_v_self,
16919 #if CYTHON_METH_FASTCALL
16920 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
16921 #else
16922 PyObject *__pyx_args, PyObject *__pyx_kwds
16923 #endif
16924 ) {
16925  #if !CYTHON_METH_FASTCALL
16926  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
16927  #endif
16928  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
16929  PyObject *__pyx_r = 0;
16930  __Pyx_RefNannyDeclarations
16931  __Pyx_RefNannySetupContext("isnan (wrapper)", 0);
16932  #if !CYTHON_METH_FASTCALL
16933  #if CYTHON_ASSUME_SAFE_MACROS
16934  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
16935  #else
16936  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
16937  #endif
16938  #endif
16939  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
16940  if (unlikely(__pyx_nargs > 0)) {
16941  __Pyx_RaiseArgtupleInvalid("isnan", 1, 0, 0, __pyx_nargs); return NULL;}
16942  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isnan", 0))) return NULL;
16943  __pyx_r = __pyx_pf_8PyClical_8clifford_104isnan(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
16944 
16945  /* function exit code */
16946  __Pyx_RefNannyFinishContext();
16947  return __pyx_r;
16948  }
16949 
16950  static PyObject *__pyx_pf_8PyClical_8clifford_104isnan(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
16951  PyObject *__pyx_r = NULL;
16952  __Pyx_RefNannyDeclarations
16953  PyObject *__pyx_t_1 = NULL;
16954  int __pyx_lineno = 0;
16955  const char *__pyx_filename = NULL;
16956  int __pyx_clineno = 0;
16957  __Pyx_RefNannySetupContext("isnan", 1);
16958 
16959  /* "PyClical.pyx":1285
16960  * False
16961  * """
16962  * return self.instance.isnan() # <<<<<<<<<<<<<<
16963  *
16964  * def frame(self):
16965  */
16966  __Pyx_XDECREF(__pyx_r);
16967  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->instance->isnan()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1285, __pyx_L1_error)
16968  __Pyx_GOTREF(__pyx_t_1);
16969  __pyx_r = __pyx_t_1;
16970  __pyx_t_1 = 0;
16971  goto __pyx_L0;
16972 
16973  /* "PyClical.pyx":1278
16974  * return self.instance.isnan()
16975  *
16976  * def isnan(self): # <<<<<<<<<<<<<<
16977  * """
16978  * Check if a multivector contains any IEEE NaN values.
16979  */
16980 
16981  /* function exit code */
16982  __pyx_L1_error:;
16983  __Pyx_XDECREF(__pyx_t_1);
16984  __Pyx_AddTraceback("PyClical.clifford.isnan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16985  __pyx_r = NULL;
16986  __pyx_L0:;
16987  __Pyx_XGIVEREF(__pyx_r);
16988  __Pyx_RefNannyFinishContext();
16989  return __pyx_r;
16990  }
16991 
16992  /* "PyClical.pyx":1287
16993  * return self.instance.isnan()
16994  *
16995  * def frame(self): # <<<<<<<<<<<<<<
16996  * """
16997  * Subalgebra generated by all generators of terms of given multivector.
16998  */
16999 
17000  /* Python wrapper */
17001  static PyObject *__pyx_pw_8PyClical_8clifford_107frame(PyObject *__pyx_v_self,
17002 #if CYTHON_METH_FASTCALL
17003 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17004 #else
17005 PyObject *__pyx_args, PyObject *__pyx_kwds
17006 #endif
17007 ); /*proto*/
17008  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_106frame, "\n Subalgebra generated by all generators of terms of given multivector.\n\n >>> print(clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").frame())\n {-2,-1,1,2,7}\n >>> s=clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").frame(); type(s)\n <class 'PyClical.index_set'>\n ");
17009  static PyMethodDef __pyx_mdef_8PyClical_8clifford_107frame = {"frame", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_107frame, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_106frame};
17010  static PyObject *__pyx_pw_8PyClical_8clifford_107frame(PyObject *__pyx_v_self,
17011 #if CYTHON_METH_FASTCALL
17012 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17013 #else
17014 PyObject *__pyx_args, PyObject *__pyx_kwds
17015 #endif
17016 ) {
17017  #if !CYTHON_METH_FASTCALL
17018  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
17019  #endif
17020  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17021  PyObject *__pyx_r = 0;
17022  __Pyx_RefNannyDeclarations
17023  __Pyx_RefNannySetupContext("frame (wrapper)", 0);
17024  #if !CYTHON_METH_FASTCALL
17025  #if CYTHON_ASSUME_SAFE_MACROS
17026  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
17027  #else
17028  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
17029  #endif
17030  #endif
17031  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
17032  if (unlikely(__pyx_nargs > 0)) {
17033  __Pyx_RaiseArgtupleInvalid("frame", 1, 0, 0, __pyx_nargs); return NULL;}
17034  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "frame", 0))) return NULL;
17035  __pyx_r = __pyx_pf_8PyClical_8clifford_106frame(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
17036 
17037  /* function exit code */
17038  __Pyx_RefNannyFinishContext();
17039  return __pyx_r;
17040  }
17041 
17042  static PyObject *__pyx_pf_8PyClical_8clifford_106frame(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
17043  PyObject *__pyx_r = NULL;
17044  __Pyx_RefNannyDeclarations
17045  PyObject *__pyx_t_1 = NULL;
17046  PyObject *__pyx_t_2 = NULL;
17047  int __pyx_lineno = 0;
17048  const char *__pyx_filename = NULL;
17049  int __pyx_clineno = 0;
17050  __Pyx_RefNannySetupContext("frame", 1);
17051 
17052  /* "PyClical.pyx":1296
17053  * <class 'PyClical.index_set'>
17054  * """
17055  * return index_set().wrap( self.instance.frame() ) # <<<<<<<<<<<<<<
17056  *
17057  * def __repr__(self):
17058  */
17059  __Pyx_XDECREF(__pyx_r);
17060  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_index_set)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error)
17061  __Pyx_GOTREF(__pyx_t_1);
17062  __pyx_t_2 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), __pyx_v_self->instance->frame()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error)
17063  __Pyx_GOTREF(__pyx_t_2);
17064  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17065  __pyx_r = __pyx_t_2;
17066  __pyx_t_2 = 0;
17067  goto __pyx_L0;
17068 
17069  /* "PyClical.pyx":1287
17070  * return self.instance.isnan()
17071  *
17072  * def frame(self): # <<<<<<<<<<<<<<
17073  * """
17074  * Subalgebra generated by all generators of terms of given multivector.
17075  */
17076 
17077  /* function exit code */
17078  __pyx_L1_error:;
17079  __Pyx_XDECREF(__pyx_t_1);
17080  __Pyx_XDECREF(__pyx_t_2);
17081  __Pyx_AddTraceback("PyClical.clifford.frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
17082  __pyx_r = NULL;
17083  __pyx_L0:;
17084  __Pyx_XGIVEREF(__pyx_r);
17085  __Pyx_RefNannyFinishContext();
17086  return __pyx_r;
17087  }
17088 
17089  /* "PyClical.pyx":1298
17090  * return index_set().wrap( self.instance.frame() )
17091  *
17092  * def __repr__(self): # <<<<<<<<<<<<<<
17093  * """
17094  * The official string representation of self.
17095  */
17096 
17097  /* Python wrapper */
17098  static PyObject *__pyx_pw_8PyClical_8clifford_109__repr__(PyObject *__pyx_v_self); /*proto*/
17099  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_108__repr__, "\n The \342\200\234official\342\200\235 string representation of self.\n\n >>> clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").__repr__()\n 'clifford(\"1+3{-1}+2{1,2}+4{-2,7}\")'\n ");
17100  #if CYTHON_UPDATE_DESCRIPTOR_DOC
17101  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_108__repr__;
17102  #endif
17103  static PyObject *__pyx_pw_8PyClical_8clifford_109__repr__(PyObject *__pyx_v_self) {
17104  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17105  PyObject *__pyx_r = 0;
17106  __Pyx_RefNannyDeclarations
17107  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
17108  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
17109  __pyx_r = __pyx_pf_8PyClical_8clifford_108__repr__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
17110 
17111  /* function exit code */
17112  __Pyx_RefNannyFinishContext();
17113  return __pyx_r;
17114  }
17115 
17116  static PyObject *__pyx_pf_8PyClical_8clifford_108__repr__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
17117  PyObject *__pyx_r = NULL;
17118  __Pyx_RefNannyDeclarations
17119  Clifford __pyx_t_1;
17120  PyObject *__pyx_t_2 = NULL;
17121  int __pyx_lineno = 0;
17122  const char *__pyx_filename = NULL;
17123  int __pyx_clineno = 0;
17124  __Pyx_RefNannySetupContext("__repr__", 1);
17125 
17126  /* "PyClical.pyx":1305
17127  * 'clifford("1+3{-1}+2{1,2}+4{-2,7}")'
17128  * """
17129  * return clifford_to_repr( self.unwrap() ).decode() # <<<<<<<<<<<<<<
17130  *
17131  * def __str__(self):
17132  */
17133  __Pyx_XDECREF(__pyx_r);
17134  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1305, __pyx_L1_error)
17135  __pyx_t_2 = __Pyx_decode_cpp_string(clifford_to_repr(__pyx_t_1), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error)
17136  __Pyx_GOTREF(__pyx_t_2);
17137  __pyx_r = __pyx_t_2;
17138  __pyx_t_2 = 0;
17139  goto __pyx_L0;
17140 
17141  /* "PyClical.pyx":1298
17142  * return index_set().wrap( self.instance.frame() )
17143  *
17144  * def __repr__(self): # <<<<<<<<<<<<<<
17145  * """
17146  * The official string representation of self.
17147  */
17148 
17149  /* function exit code */
17150  __pyx_L1_error:;
17151  __Pyx_XDECREF(__pyx_t_2);
17152  __Pyx_AddTraceback("PyClical.clifford.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17153  __pyx_r = NULL;
17154  __pyx_L0:;
17155  __Pyx_XGIVEREF(__pyx_r);
17156  __Pyx_RefNannyFinishContext();
17157  return __pyx_r;
17158  }
17159 
17160  /* "PyClical.pyx":1307
17161  * return clifford_to_repr( self.unwrap() ).decode()
17162  *
17163  * def __str__(self): # <<<<<<<<<<<<<<
17164  * """
17165  * The informal string representation of self.
17166  */
17167 
17168  /* Python wrapper */
17169  static PyObject *__pyx_pw_8PyClical_8clifford_111__str__(PyObject *__pyx_v_self); /*proto*/
17170  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_110__str__, "\n The \342\200\234informal\342\200\235 string representation of self.\n\n >>> clifford(\"1+3{-1}+2{1,2}+4{-2,7}\").__str__()\n '1+3{-1}+2{1,2}+4{-2,7}'\n ");
17171  #if CYTHON_UPDATE_DESCRIPTOR_DOC
17172  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_110__str__;
17173  #endif
17174  static PyObject *__pyx_pw_8PyClical_8clifford_111__str__(PyObject *__pyx_v_self) {
17175  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17176  PyObject *__pyx_r = 0;
17177  __Pyx_RefNannyDeclarations
17178  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
17179  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
17180  __pyx_r = __pyx_pf_8PyClical_8clifford_110__str__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
17181 
17182  /* function exit code */
17183  __Pyx_RefNannyFinishContext();
17184  return __pyx_r;
17185  }
17186 
17187  static PyObject *__pyx_pf_8PyClical_8clifford_110__str__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
17188  PyObject *__pyx_r = NULL;
17189  __Pyx_RefNannyDeclarations
17190  Clifford __pyx_t_1;
17191  PyObject *__pyx_t_2 = NULL;
17192  int __pyx_lineno = 0;
17193  const char *__pyx_filename = NULL;
17194  int __pyx_clineno = 0;
17195  __Pyx_RefNannySetupContext("__str__", 1);
17196 
17197  /* "PyClical.pyx":1314
17198  * '1+3{-1}+2{1,2}+4{-2,7}'
17199  * """
17200  * return clifford_to_str( self.unwrap() ).decode() # <<<<<<<<<<<<<<
17201  *
17202  * def clifford_hidden_doctests():
17203  */
17204  __Pyx_XDECREF(__pyx_r);
17205  __pyx_t_1 = __pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1314, __pyx_L1_error)
17206  __pyx_t_2 = __Pyx_decode_cpp_string(clifford_to_str(__pyx_t_1), 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error)
17207  __Pyx_GOTREF(__pyx_t_2);
17208  __pyx_r = __pyx_t_2;
17209  __pyx_t_2 = 0;
17210  goto __pyx_L0;
17211 
17212  /* "PyClical.pyx":1307
17213  * return clifford_to_repr( self.unwrap() ).decode()
17214  *
17215  * def __str__(self): # <<<<<<<<<<<<<<
17216  * """
17217  * The informal string representation of self.
17218  */
17219 
17220  /* function exit code */
17221  __pyx_L1_error:;
17222  __Pyx_XDECREF(__pyx_t_2);
17223  __Pyx_AddTraceback("PyClical.clifford.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17224  __pyx_r = NULL;
17225  __pyx_L0:;
17226  __Pyx_XGIVEREF(__pyx_r);
17227  __Pyx_RefNannyFinishContext();
17228  return __pyx_r;
17229  }
17230 
17231  /* "(tree fragment)":1
17232  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
17233  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17234  * def __setstate_cython__(self, __pyx_state):
17235  */
17236 
17237  /* Python wrapper */
17238  static PyObject *__pyx_pw_8PyClical_8clifford_113__reduce_cython__(PyObject *__pyx_v_self,
17239 #if CYTHON_METH_FASTCALL
17240 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17241 #else
17242 PyObject *__pyx_args, PyObject *__pyx_kwds
17243 #endif
17244 ); /*proto*/
17245  static PyMethodDef __pyx_mdef_8PyClical_8clifford_113__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_113__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
17246  static PyObject *__pyx_pw_8PyClical_8clifford_113__reduce_cython__(PyObject *__pyx_v_self,
17247 #if CYTHON_METH_FASTCALL
17248 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17249 #else
17250 PyObject *__pyx_args, PyObject *__pyx_kwds
17251 #endif
17252 ) {
17253  #if !CYTHON_METH_FASTCALL
17254  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
17255  #endif
17256  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17257  PyObject *__pyx_r = 0;
17258  __Pyx_RefNannyDeclarations
17259  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
17260  #if !CYTHON_METH_FASTCALL
17261  #if CYTHON_ASSUME_SAFE_MACROS
17262  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
17263  #else
17264  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
17265  #endif
17266  #endif
17267  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
17268  if (unlikely(__pyx_nargs > 0)) {
17269  __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
17270  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
17271  __pyx_r = __pyx_pf_8PyClical_8clifford_112__reduce_cython__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
17272 
17273  /* function exit code */
17274  __Pyx_RefNannyFinishContext();
17275  return __pyx_r;
17276  }
17277 
17278  static PyObject *__pyx_pf_8PyClical_8clifford_112__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
17279  PyObject *__pyx_r = NULL;
17280  __Pyx_RefNannyDeclarations
17281  int __pyx_lineno = 0;
17282  const char *__pyx_filename = NULL;
17283  int __pyx_clineno = 0;
17284  __Pyx_RefNannySetupContext("__reduce_cython__", 1);
17285 
17286  /* "(tree fragment)":2
17287  * def __reduce_cython__(self):
17288  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<<
17289  * def __setstate_cython__(self, __pyx_state):
17290  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17291  */
17292  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
17293  __PYX_ERR(1, 2, __pyx_L1_error)
17294 
17295  /* "(tree fragment)":1
17296  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
17297  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17298  * def __setstate_cython__(self, __pyx_state):
17299  */
17300 
17301  /* function exit code */
17302  __pyx_L1_error:;
17303  __Pyx_AddTraceback("PyClical.clifford.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17304  __pyx_r = NULL;
17305  __Pyx_XGIVEREF(__pyx_r);
17306  __Pyx_RefNannyFinishContext();
17307  return __pyx_r;
17308  }
17309 
17310  /* "(tree fragment)":3
17311  * def __reduce_cython__(self):
17312  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17313  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
17314  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17315  */
17316 
17317  /* Python wrapper */
17318  static PyObject *__pyx_pw_8PyClical_8clifford_115__setstate_cython__(PyObject *__pyx_v_self,
17319 #if CYTHON_METH_FASTCALL
17320 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17321 #else
17322 PyObject *__pyx_args, PyObject *__pyx_kwds
17323 #endif
17324 ); /*proto*/
17325  static PyMethodDef __pyx_mdef_8PyClical_8clifford_115__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_115__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
17326  static PyObject *__pyx_pw_8PyClical_8clifford_115__setstate_cython__(PyObject *__pyx_v_self,
17327 #if CYTHON_METH_FASTCALL
17328 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17329 #else
17330 PyObject *__pyx_args, PyObject *__pyx_kwds
17331 #endif
17332 ) {
17333  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
17334  #if !CYTHON_METH_FASTCALL
17335  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
17336  #endif
17337  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17338  PyObject* values[1] = {0};
17339  int __pyx_lineno = 0;
17340  const char *__pyx_filename = NULL;
17341  int __pyx_clineno = 0;
17342  PyObject *__pyx_r = 0;
17343  __Pyx_RefNannyDeclarations
17344  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
17345  #if !CYTHON_METH_FASTCALL
17346  #if CYTHON_ASSUME_SAFE_MACROS
17347  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
17348  #else
17349  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
17350  #endif
17351  #endif
17352  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
17353  {
17354  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
17355  if (__pyx_kwds) {
17356  Py_ssize_t kw_args;
17357  switch (__pyx_nargs) {
17358  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
17359  CYTHON_FALLTHROUGH;
17360  case 0: break;
17361  default: goto __pyx_L5_argtuple_error;
17362  }
17363  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
17364  switch (__pyx_nargs) {
17365  case 0:
17366  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
17367  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
17368  kw_args--;
17369  }
17370  else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error)
17371  else goto __pyx_L5_argtuple_error;
17372  }
17373  if (unlikely(kw_args > 0)) {
17374  const Py_ssize_t kwd_pos_args = __pyx_nargs;
17375  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error)
17376  }
17377  } else if (unlikely(__pyx_nargs != 1)) {
17378  goto __pyx_L5_argtuple_error;
17379  } else {
17380  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
17381  }
17382  __pyx_v___pyx_state = values[0];
17383  }
17384  goto __pyx_L6_skip;
17385  __pyx_L5_argtuple_error:;
17386  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
17387  __pyx_L6_skip:;
17388  goto __pyx_L4_argument_unpacking_done;
17389  __pyx_L3_error:;
17390  {
17391  Py_ssize_t __pyx_temp;
17392  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
17393  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
17394  }
17395  }
17396  __Pyx_AddTraceback("PyClical.clifford.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17397  __Pyx_RefNannyFinishContext();
17398  return NULL;
17399  __pyx_L4_argument_unpacking_done:;
17400  __pyx_r = __pyx_pf_8PyClical_8clifford_114__setstate_cython__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v___pyx_state);
17401 
17402  /* function exit code */
17403  {
17404  Py_ssize_t __pyx_temp;
17405  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
17406  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
17407  }
17408  }
17409  __Pyx_RefNannyFinishContext();
17410  return __pyx_r;
17411  }
17412 
17413  static PyObject *__pyx_pf_8PyClical_8clifford_114__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
17414  PyObject *__pyx_r = NULL;
17415  __Pyx_RefNannyDeclarations
17416  int __pyx_lineno = 0;
17417  const char *__pyx_filename = NULL;
17418  int __pyx_clineno = 0;
17419  __Pyx_RefNannySetupContext("__setstate_cython__", 1);
17420 
17421  /* "(tree fragment)":4
17422  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17423  * def __setstate_cython__(self, __pyx_state):
17424  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<<
17425  */
17426  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
17427  __PYX_ERR(1, 4, __pyx_L1_error)
17428 
17429  /* "(tree fragment)":3
17430  * def __reduce_cython__(self):
17431  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17432  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
17433  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
17434  */
17435 
17436  /* function exit code */
17437  __pyx_L1_error:;
17438  __Pyx_AddTraceback("PyClical.clifford.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17439  __pyx_r = NULL;
17440  __Pyx_XGIVEREF(__pyx_r);
17441  __Pyx_RefNannyFinishContext();
17442  return __pyx_r;
17443  }
17444 
17445  /* "PyClical.pyx":1316
17446  * return clifford_to_str( self.unwrap() ).decode()
17447  *
17448  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
17449  * """
17450  * Tests for functions that Doctest cannot see.
17451  */
17452 
17453  /* Python wrapper */
17454  static PyObject *__pyx_pw_8PyClical_9clifford_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
17455  PyDoc_STRVAR(__pyx_doc_8PyClical_8clifford_hidden_doctests, "\n Tests for functions that Doctest cannot see.\n\n For clifford.__cinit__: Construct an object of type clifford.\n\n >>> print(clifford(2))\n 2\n >>> print(clifford(2.0))\n 2\n >>> print(clifford(1.0e-1))\n 0.1\n >>> print(clifford(\"2\"))\n 2\n >>> print(clifford(\"2{1,2,3}\"))\n 2{1,2,3}\n >>> print(clifford(clifford(\"2{1,2,3}\")))\n 2{1,2,3}\n >>> print(clifford(\"-{1}\"))\n -{1}\n >>> print(clifford(2,index_set({1,2})))\n 2{1,2}\n >>> print(clifford([2,3],index_set({1,2})))\n 2{1}+3{2}\n >>> print(clifford([1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from <class 'list'>.\n >>> print(clifford(None))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from <class 'NoneType'>.\n >>> print(clifford(None,[1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<class 'NoneType'>, <class 'list'>).\n >>> print(clifford([1,2],[1,2]))\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<class 'list'>, <class 'list'>).\n >>> print(clifford(\"\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string ''.\n >>> print(clifford(\"{\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '{'.\n >>> print(clifford(\"{1\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '{1'.\n >>> print(clifford(\"+\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '+'.\n >>> print(clifford(\"-\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object fro""m invalid string '-'.\n >>> print(clifford(\"{1}+\"))\n Traceback (most recent call last):\n ...\n ValueError: Cannot initialize clifford object from invalid string '{1}+'.\n\n For clifford.__richcmp__: Compare objects of type clifford.\n\n >>> clifford(\"{1}\") == clifford(\"1{1}\")\n True\n >>> clifford(\"{1}\") != clifford(\"1.0{1}\")\n False\n >>> clifford(\"{1}\") != clifford(\"1.0\")\n True\n >>> clifford(\"{1,2}\") == None\n False\n >>> clifford(\"{1,2}\") != None\n True\n >>> None == clifford(\"{1,2}\")\n False\n >>> None != clifford(\"{1,2}\")\n True\n ");
17456  static PyMethodDef __pyx_mdef_8PyClical_9clifford_hidden_doctests = {"clifford_hidden_doctests", (PyCFunction)__pyx_pw_8PyClical_9clifford_hidden_doctests, METH_NOARGS, __pyx_doc_8PyClical_8clifford_hidden_doctests};
17457  static PyObject *__pyx_pw_8PyClical_9clifford_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
17458  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17459  PyObject *__pyx_r = 0;
17460  __Pyx_RefNannyDeclarations
17461  __Pyx_RefNannySetupContext("clifford_hidden_doctests (wrapper)", 0);
17462  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
17463  __pyx_r = __pyx_pf_8PyClical_8clifford_hidden_doctests(__pyx_self);
17464 
17465  /* function exit code */
17466  __Pyx_RefNannyFinishContext();
17467  return __pyx_r;
17468  }
17469 
17470  static PyObject *__pyx_pf_8PyClical_8clifford_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self) {
17471  PyObject *__pyx_r = NULL;
17472  __Pyx_RefNannyDeclarations
17473  __Pyx_RefNannySetupContext("clifford_hidden_doctests", 1);
17474 
17475  /* "PyClical.pyx":1398
17476  * True
17477  * """
17478  * return # <<<<<<<<<<<<<<
17479  *
17480  * cpdef inline error_squared_tol(obj):
17481  */
17482  __Pyx_XDECREF(__pyx_r);
17483  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17484  goto __pyx_L0;
17485 
17486  /* "PyClical.pyx":1316
17487  * return clifford_to_str( self.unwrap() ).decode()
17488  *
17489  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
17490  * """
17491  * Tests for functions that Doctest cannot see.
17492  */
17493 
17494  /* function exit code */
17495  __pyx_L0:;
17496  __Pyx_XGIVEREF(__pyx_r);
17497  __Pyx_RefNannyFinishContext();
17498  return __pyx_r;
17499  }
17500 
17501  /* "PyClical.pyx":1400
17502  * return
17503  *
17504  * cpdef inline error_squared_tol(obj): # <<<<<<<<<<<<<<
17505  * """
17506  * Quadratic norm error tolerance relative to a specific multivector.
17507  */
17508 
17509  static PyObject *__pyx_pw_8PyClical_11error_squared_tol(PyObject *__pyx_self,
17510 #if CYTHON_METH_FASTCALL
17511 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17512 #else
17513 PyObject *__pyx_args, PyObject *__pyx_kwds
17514 #endif
17515 ); /*proto*/
17516  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_error_squared_tol(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
17517  PyObject *__pyx_r = NULL;
17518  __Pyx_RefNannyDeclarations
17519  Clifford __pyx_t_1;
17520  PyObject *__pyx_t_2 = NULL;
17521  int __pyx_lineno = 0;
17522  const char *__pyx_filename = NULL;
17523  int __pyx_clineno = 0;
17524  __Pyx_RefNannySetupContext("error_squared_tol", 1);
17525 
17526  /* "PyClical.pyx":1407
17527  * 0.0
17528  * """
17529  * return glucat.error_squared_tol(toClifford(obj)) # <<<<<<<<<<<<<<
17530  *
17531  * cpdef inline error_squared(lhs, rhs, threshold):
17532  */
17533  __Pyx_XDECREF(__pyx_r);
17534  __pyx_t_1 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1407, __pyx_L1_error)
17535  __pyx_t_2 = PyFloat_FromDouble(error_squared_tol(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1407, __pyx_L1_error)
17536  __Pyx_GOTREF(__pyx_t_2);
17537  __pyx_r = __pyx_t_2;
17538  __pyx_t_2 = 0;
17539  goto __pyx_L0;
17540 
17541  /* "PyClical.pyx":1400
17542  * return
17543  *
17544  * cpdef inline error_squared_tol(obj): # <<<<<<<<<<<<<<
17545  * """
17546  * Quadratic norm error tolerance relative to a specific multivector.
17547  */
17548 
17549  /* function exit code */
17550  __pyx_L1_error:;
17551  __Pyx_XDECREF(__pyx_t_2);
17552  __Pyx_AddTraceback("PyClical.error_squared_tol", __pyx_clineno, __pyx_lineno, __pyx_filename);
17553  __pyx_r = 0;
17554  __pyx_L0:;
17555  __Pyx_XGIVEREF(__pyx_r);
17556  __Pyx_RefNannyFinishContext();
17557  return __pyx_r;
17558  }
17559 
17560  /* Python wrapper */
17561  static PyObject *__pyx_pw_8PyClical_11error_squared_tol(PyObject *__pyx_self,
17562 #if CYTHON_METH_FASTCALL
17563 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17564 #else
17565 PyObject *__pyx_args, PyObject *__pyx_kwds
17566 #endif
17567 ); /*proto*/
17568  PyDoc_STRVAR(__pyx_doc_8PyClical_10error_squared_tol, "\n Quadratic norm error tolerance relative to a specific multivector.\n\n >>> print(error_squared_tol(clifford(\"{1}\")) * 3.0 - error_squared_tol(clifford(\"1{1}-2{2}+3{3}\")))\n 0.0\n ");
17569  static PyMethodDef __pyx_mdef_8PyClical_11error_squared_tol = {"error_squared_tol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_11error_squared_tol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_10error_squared_tol};
17570  static PyObject *__pyx_pw_8PyClical_11error_squared_tol(PyObject *__pyx_self,
17571 #if CYTHON_METH_FASTCALL
17572 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17573 #else
17574 PyObject *__pyx_args, PyObject *__pyx_kwds
17575 #endif
17576 ) {
17577  PyObject *__pyx_v_obj = 0;
17578  #if !CYTHON_METH_FASTCALL
17579  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
17580  #endif
17581  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17582  PyObject* values[1] = {0};
17583  int __pyx_lineno = 0;
17584  const char *__pyx_filename = NULL;
17585  int __pyx_clineno = 0;
17586  PyObject *__pyx_r = 0;
17587  __Pyx_RefNannyDeclarations
17588  __Pyx_RefNannySetupContext("error_squared_tol (wrapper)", 0);
17589  #if !CYTHON_METH_FASTCALL
17590  #if CYTHON_ASSUME_SAFE_MACROS
17591  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
17592  #else
17593  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
17594  #endif
17595  #endif
17596  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
17597  {
17598  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
17599  if (__pyx_kwds) {
17600  Py_ssize_t kw_args;
17601  switch (__pyx_nargs) {
17602  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
17603  CYTHON_FALLTHROUGH;
17604  case 0: break;
17605  default: goto __pyx_L5_argtuple_error;
17606  }
17607  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
17608  switch (__pyx_nargs) {
17609  case 0:
17610  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
17611  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
17612  kw_args--;
17613  }
17614  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1400, __pyx_L3_error)
17615  else goto __pyx_L5_argtuple_error;
17616  }
17617  if (unlikely(kw_args > 0)) {
17618  const Py_ssize_t kwd_pos_args = __pyx_nargs;
17619  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "error_squared_tol") < 0)) __PYX_ERR(0, 1400, __pyx_L3_error)
17620  }
17621  } else if (unlikely(__pyx_nargs != 1)) {
17622  goto __pyx_L5_argtuple_error;
17623  } else {
17624  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
17625  }
17626  __pyx_v_obj = values[0];
17627  }
17628  goto __pyx_L6_skip;
17629  __pyx_L5_argtuple_error:;
17630  __Pyx_RaiseArgtupleInvalid("error_squared_tol", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1400, __pyx_L3_error)
17631  __pyx_L6_skip:;
17632  goto __pyx_L4_argument_unpacking_done;
17633  __pyx_L3_error:;
17634  {
17635  Py_ssize_t __pyx_temp;
17636  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
17637  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
17638  }
17639  }
17640  __Pyx_AddTraceback("PyClical.error_squared_tol", __pyx_clineno, __pyx_lineno, __pyx_filename);
17641  __Pyx_RefNannyFinishContext();
17642  return NULL;
17643  __pyx_L4_argument_unpacking_done:;
17644  __pyx_r = __pyx_pf_8PyClical_10error_squared_tol(__pyx_self, __pyx_v_obj);
17645 
17646  /* function exit code */
17647  {
17648  Py_ssize_t __pyx_temp;
17649  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
17650  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
17651  }
17652  }
17653  __Pyx_RefNannyFinishContext();
17654  return __pyx_r;
17655  }
17656 
17657  static PyObject *__pyx_pf_8PyClical_10error_squared_tol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17658  PyObject *__pyx_r = NULL;
17659  __Pyx_RefNannyDeclarations
17660  PyObject *__pyx_t_1 = NULL;
17661  int __pyx_lineno = 0;
17662  const char *__pyx_filename = NULL;
17663  int __pyx_clineno = 0;
17664  __Pyx_RefNannySetupContext("error_squared_tol", 1);
17665  __Pyx_XDECREF(__pyx_r);
17666  __pyx_t_1 = __pyx_f_8PyClical_error_squared_tol(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1400, __pyx_L1_error)
17667  __Pyx_GOTREF(__pyx_t_1);
17668  __pyx_r = __pyx_t_1;
17669  __pyx_t_1 = 0;
17670  goto __pyx_L0;
17671 
17672  /* function exit code */
17673  __pyx_L1_error:;
17674  __Pyx_XDECREF(__pyx_t_1);
17675  __Pyx_AddTraceback("PyClical.error_squared_tol", __pyx_clineno, __pyx_lineno, __pyx_filename);
17676  __pyx_r = NULL;
17677  __pyx_L0:;
17678  __Pyx_XGIVEREF(__pyx_r);
17679  __Pyx_RefNannyFinishContext();
17680  return __pyx_r;
17681  }
17682 
17683  /* "PyClical.pyx":1409
17684  * return glucat.error_squared_tol(toClifford(obj))
17685  *
17686  * cpdef inline error_squared(lhs, rhs, threshold): # <<<<<<<<<<<<<<
17687  * """
17688  * Relative or absolute error using the quadratic norm.
17689  */
17690 
17691  static PyObject *__pyx_pw_8PyClical_13error_squared(PyObject *__pyx_self,
17692 #if CYTHON_METH_FASTCALL
17693 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17694 #else
17695 PyObject *__pyx_args, PyObject *__pyx_kwds
17696 #endif
17697 ); /*proto*/
17698  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_error_squared(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, PyObject *__pyx_v_threshold, CYTHON_UNUSED int __pyx_skip_dispatch) {
17699  PyObject *__pyx_r = NULL;
17700  __Pyx_RefNannyDeclarations
17701  Clifford __pyx_t_1;
17702  Clifford __pyx_t_2;
17703  scalar_t __pyx_t_3;
17704  PyObject *__pyx_t_4 = NULL;
17705  int __pyx_lineno = 0;
17706  const char *__pyx_filename = NULL;
17707  int __pyx_clineno = 0;
17708  __Pyx_RefNannySetupContext("error_squared", 1);
17709 
17710  /* "PyClical.pyx":1420
17711  * 25.0
17712  * """
17713  * return glucat.error_squared(toClifford(lhs), toClifford(rhs), <scalar_t>threshold) # <<<<<<<<<<<<<<
17714  *
17715  * cpdef inline approx_equal(lhs, rhs, threshold=None, tol=None):
17716  */
17717  __Pyx_XDECREF(__pyx_r);
17718  __pyx_t_1 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1420, __pyx_L1_error)
17719  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1420, __pyx_L1_error)
17720  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_threshold); if (unlikely((__pyx_t_3 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1420, __pyx_L1_error)
17721  __pyx_t_4 = PyFloat_FromDouble(error_squared(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2), ((scalar_t)__pyx_t_3))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1420, __pyx_L1_error)
17722  __Pyx_GOTREF(__pyx_t_4);
17723  __pyx_r = __pyx_t_4;
17724  __pyx_t_4 = 0;
17725  goto __pyx_L0;
17726 
17727  /* "PyClical.pyx":1409
17728  * return glucat.error_squared_tol(toClifford(obj))
17729  *
17730  * cpdef inline error_squared(lhs, rhs, threshold): # <<<<<<<<<<<<<<
17731  * """
17732  * Relative or absolute error using the quadratic norm.
17733  */
17734 
17735  /* function exit code */
17736  __pyx_L1_error:;
17737  __Pyx_XDECREF(__pyx_t_4);
17738  __Pyx_AddTraceback("PyClical.error_squared", __pyx_clineno, __pyx_lineno, __pyx_filename);
17739  __pyx_r = 0;
17740  __pyx_L0:;
17741  __Pyx_XGIVEREF(__pyx_r);
17742  __Pyx_RefNannyFinishContext();
17743  return __pyx_r;
17744  }
17745 
17746  /* Python wrapper */
17747  static PyObject *__pyx_pw_8PyClical_13error_squared(PyObject *__pyx_self,
17748 #if CYTHON_METH_FASTCALL
17749 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17750 #else
17751 PyObject *__pyx_args, PyObject *__pyx_kwds
17752 #endif
17753 ); /*proto*/
17754  PyDoc_STRVAR(__pyx_doc_8PyClical_12error_squared, "\n Relative or absolute error using the quadratic norm.\n\n >>> err2=scalar_epsilon*scalar_epsilon\n\n >>> print(error_squared(clifford(\"{1}\"), clifford(\"1{1}\"), err2))\n 0.0\n >>> print(error_squared(clifford(\"1{1}-3{2}+4{3}\"), clifford(\"{1}\"), err2))\n 25.0\n ");
17755  static PyMethodDef __pyx_mdef_8PyClical_13error_squared = {"error_squared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_13error_squared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_12error_squared};
17756  static PyObject *__pyx_pw_8PyClical_13error_squared(PyObject *__pyx_self,
17757 #if CYTHON_METH_FASTCALL
17758 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17759 #else
17760 PyObject *__pyx_args, PyObject *__pyx_kwds
17761 #endif
17762 ) {
17763  PyObject *__pyx_v_lhs = 0;
17764  PyObject *__pyx_v_rhs = 0;
17765  PyObject *__pyx_v_threshold = 0;
17766  #if !CYTHON_METH_FASTCALL
17767  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
17768  #endif
17769  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
17770  PyObject* values[3] = {0,0,0};
17771  int __pyx_lineno = 0;
17772  const char *__pyx_filename = NULL;
17773  int __pyx_clineno = 0;
17774  PyObject *__pyx_r = 0;
17775  __Pyx_RefNannyDeclarations
17776  __Pyx_RefNannySetupContext("error_squared (wrapper)", 0);
17777  #if !CYTHON_METH_FASTCALL
17778  #if CYTHON_ASSUME_SAFE_MACROS
17779  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
17780  #else
17781  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
17782  #endif
17783  #endif
17784  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
17785  {
17786  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lhs,&__pyx_n_s_rhs,&__pyx_n_s_threshold,0};
17787  if (__pyx_kwds) {
17788  Py_ssize_t kw_args;
17789  switch (__pyx_nargs) {
17790  case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
17791  CYTHON_FALLTHROUGH;
17792  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
17793  CYTHON_FALLTHROUGH;
17794  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
17795  CYTHON_FALLTHROUGH;
17796  case 0: break;
17797  default: goto __pyx_L5_argtuple_error;
17798  }
17799  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
17800  switch (__pyx_nargs) {
17801  case 0:
17802  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lhs)) != 0)) {
17803  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
17804  kw_args--;
17805  }
17806  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L3_error)
17807  else goto __pyx_L5_argtuple_error;
17808  CYTHON_FALLTHROUGH;
17809  case 1:
17810  if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rhs)) != 0)) {
17811  (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
17812  kw_args--;
17813  }
17814  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L3_error)
17815  else {
17816  __Pyx_RaiseArgtupleInvalid("error_squared", 1, 3, 3, 1); __PYX_ERR(0, 1409, __pyx_L3_error)
17817  }
17818  CYTHON_FALLTHROUGH;
17819  case 2:
17820  if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_threshold)) != 0)) {
17821  (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
17822  kw_args--;
17823  }
17824  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L3_error)
17825  else {
17826  __Pyx_RaiseArgtupleInvalid("error_squared", 1, 3, 3, 2); __PYX_ERR(0, 1409, __pyx_L3_error)
17827  }
17828  }
17829  if (unlikely(kw_args > 0)) {
17830  const Py_ssize_t kwd_pos_args = __pyx_nargs;
17831  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "error_squared") < 0)) __PYX_ERR(0, 1409, __pyx_L3_error)
17832  }
17833  } else if (unlikely(__pyx_nargs != 3)) {
17834  goto __pyx_L5_argtuple_error;
17835  } else {
17836  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
17837  values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
17838  values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
17839  }
17840  __pyx_v_lhs = values[0];
17841  __pyx_v_rhs = values[1];
17842  __pyx_v_threshold = values[2];
17843  }
17844  goto __pyx_L6_skip;
17845  __pyx_L5_argtuple_error:;
17846  __Pyx_RaiseArgtupleInvalid("error_squared", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1409, __pyx_L3_error)
17847  __pyx_L6_skip:;
17848  goto __pyx_L4_argument_unpacking_done;
17849  __pyx_L3_error:;
17850  {
17851  Py_ssize_t __pyx_temp;
17852  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
17853  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
17854  }
17855  }
17856  __Pyx_AddTraceback("PyClical.error_squared", __pyx_clineno, __pyx_lineno, __pyx_filename);
17857  __Pyx_RefNannyFinishContext();
17858  return NULL;
17859  __pyx_L4_argument_unpacking_done:;
17860  __pyx_r = __pyx_pf_8PyClical_12error_squared(__pyx_self, __pyx_v_lhs, __pyx_v_rhs, __pyx_v_threshold);
17861 
17862  /* function exit code */
17863  {
17864  Py_ssize_t __pyx_temp;
17865  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
17866  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
17867  }
17868  }
17869  __Pyx_RefNannyFinishContext();
17870  return __pyx_r;
17871  }
17872 
17873  static PyObject *__pyx_pf_8PyClical_12error_squared(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, PyObject *__pyx_v_threshold) {
17874  PyObject *__pyx_r = NULL;
17875  __Pyx_RefNannyDeclarations
17876  PyObject *__pyx_t_1 = NULL;
17877  int __pyx_lineno = 0;
17878  const char *__pyx_filename = NULL;
17879  int __pyx_clineno = 0;
17880  __Pyx_RefNannySetupContext("error_squared", 1);
17881  __Pyx_XDECREF(__pyx_r);
17882  __pyx_t_1 = __pyx_f_8PyClical_error_squared(__pyx_v_lhs, __pyx_v_rhs, __pyx_v_threshold, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L1_error)
17883  __Pyx_GOTREF(__pyx_t_1);
17884  __pyx_r = __pyx_t_1;
17885  __pyx_t_1 = 0;
17886  goto __pyx_L0;
17887 
17888  /* function exit code */
17889  __pyx_L1_error:;
17890  __Pyx_XDECREF(__pyx_t_1);
17891  __Pyx_AddTraceback("PyClical.error_squared", __pyx_clineno, __pyx_lineno, __pyx_filename);
17892  __pyx_r = NULL;
17893  __pyx_L0:;
17894  __Pyx_XGIVEREF(__pyx_r);
17895  __Pyx_RefNannyFinishContext();
17896  return __pyx_r;
17897  }
17898 
17899  /* "PyClical.pyx":1422
17900  * return glucat.error_squared(toClifford(lhs), toClifford(rhs), <scalar_t>threshold)
17901  *
17902  * cpdef inline approx_equal(lhs, rhs, threshold=None, tol=None): # <<<<<<<<<<<<<<
17903  * """
17904  * Test for approximate equality of multivectors.
17905  */
17906 
17907  static PyObject *__pyx_pw_8PyClical_15approx_equal(PyObject *__pyx_self,
17908 #if CYTHON_METH_FASTCALL
17909 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
17910 #else
17911 PyObject *__pyx_args, PyObject *__pyx_kwds
17912 #endif
17913 ); /*proto*/
17914  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_approx_equal(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_approx_equal *__pyx_optional_args) {
17915  PyObject *__pyx_v_threshold = ((PyObject *)Py_None);
17916  PyObject *__pyx_v_tol = ((PyObject *)Py_None);
17917  PyObject *__pyx_r = NULL;
17918  __Pyx_RefNannyDeclarations
17919  PyObject *__pyx_t_1 = NULL;
17920  int __pyx_t_2;
17921  PyObject *__pyx_t_3 = NULL;
17922  Clifford __pyx_t_4;
17923  Clifford __pyx_t_5;
17924  scalar_t __pyx_t_6;
17925  scalar_t __pyx_t_7;
17926  int __pyx_lineno = 0;
17927  const char *__pyx_filename = NULL;
17928  int __pyx_clineno = 0;
17929  __Pyx_RefNannySetupContext("approx_equal", 0);
17930  if (__pyx_optional_args) {
17931  if (__pyx_optional_args->__pyx_n > 0) {
17932  __pyx_v_threshold = __pyx_optional_args->threshold;
17933  if (__pyx_optional_args->__pyx_n > 1) {
17934  __pyx_v_tol = __pyx_optional_args->tol;
17935  }
17936  }
17937  }
17938  __Pyx_INCREF(__pyx_v_threshold);
17939  __Pyx_INCREF(__pyx_v_tol);
17940 
17941  /* "PyClical.pyx":1437
17942  * True
17943  * """
17944  * threshold = error_squared_tol(rhs) if threshold is None else threshold # <<<<<<<<<<<<<<
17945  * tol = error_squared_tol(rhs) if tol is None else tol
17946  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol)
17947  */
17948  __pyx_t_2 = (__pyx_v_threshold == Py_None);
17949  if (__pyx_t_2) {
17950  __pyx_t_3 = __pyx_f_8PyClical_error_squared_tol(__pyx_v_rhs, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1437, __pyx_L1_error)
17951  __Pyx_GOTREF(__pyx_t_3);
17952  __pyx_t_1 = __pyx_t_3;
17953  __pyx_t_3 = 0;
17954  } else {
17955  __Pyx_INCREF(__pyx_v_threshold);
17956  __pyx_t_1 = __pyx_v_threshold;
17957  }
17958  __Pyx_DECREF_SET(__pyx_v_threshold, __pyx_t_1);
17959  __pyx_t_1 = 0;
17960 
17961  /* "PyClical.pyx":1438
17962  * """
17963  * threshold = error_squared_tol(rhs) if threshold is None else threshold
17964  * tol = error_squared_tol(rhs) if tol is None else tol # <<<<<<<<<<<<<<
17965  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol)
17966  *
17967  */
17968  __pyx_t_2 = (__pyx_v_tol == Py_None);
17969  if (__pyx_t_2) {
17970  __pyx_t_3 = __pyx_f_8PyClical_error_squared_tol(__pyx_v_rhs, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1438, __pyx_L1_error)
17971  __Pyx_GOTREF(__pyx_t_3);
17972  __pyx_t_1 = __pyx_t_3;
17973  __pyx_t_3 = 0;
17974  } else {
17975  __Pyx_INCREF(__pyx_v_tol);
17976  __pyx_t_1 = __pyx_v_tol;
17977  }
17978  __Pyx_DECREF_SET(__pyx_v_tol, __pyx_t_1);
17979  __pyx_t_1 = 0;
17980 
17981  /* "PyClical.pyx":1439
17982  * threshold = error_squared_tol(rhs) if threshold is None else threshold
17983  * tol = error_squared_tol(rhs) if tol is None else tol
17984  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol) # <<<<<<<<<<<<<<
17985  *
17986  * cpdef inline inv(obj):
17987  */
17988  __Pyx_XDECREF(__pyx_r);
17989  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_lhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1439, __pyx_L1_error)
17990  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_rhs); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1439, __pyx_L1_error)
17991  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_threshold); if (unlikely((__pyx_t_6 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1439, __pyx_L1_error)
17992  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_tol); if (unlikely((__pyx_t_7 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1439, __pyx_L1_error)
17993  __pyx_t_1 = __Pyx_PyBool_FromLong(approx_equal(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5), ((scalar_t)__pyx_t_6), ((scalar_t)__pyx_t_7))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1439, __pyx_L1_error)
17994  __Pyx_GOTREF(__pyx_t_1);
17995  __pyx_r = __pyx_t_1;
17996  __pyx_t_1 = 0;
17997  goto __pyx_L0;
17998 
17999  /* "PyClical.pyx":1422
18000  * return glucat.error_squared(toClifford(lhs), toClifford(rhs), <scalar_t>threshold)
18001  *
18002  * cpdef inline approx_equal(lhs, rhs, threshold=None, tol=None): # <<<<<<<<<<<<<<
18003  * """
18004  * Test for approximate equality of multivectors.
18005  */
18006 
18007  /* function exit code */
18008  __pyx_L1_error:;
18009  __Pyx_XDECREF(__pyx_t_1);
18010  __Pyx_XDECREF(__pyx_t_3);
18011  __Pyx_AddTraceback("PyClical.approx_equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
18012  __pyx_r = 0;
18013  __pyx_L0:;
18014  __Pyx_XDECREF(__pyx_v_threshold);
18015  __Pyx_XDECREF(__pyx_v_tol);
18016  __Pyx_XGIVEREF(__pyx_r);
18017  __Pyx_RefNannyFinishContext();
18018  return __pyx_r;
18019  }
18020 
18021  /* Python wrapper */
18022  static PyObject *__pyx_pw_8PyClical_15approx_equal(PyObject *__pyx_self,
18023 #if CYTHON_METH_FASTCALL
18024 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18025 #else
18026 PyObject *__pyx_args, PyObject *__pyx_kwds
18027 #endif
18028 ); /*proto*/
18029  PyDoc_STRVAR(__pyx_doc_8PyClical_14approx_equal, "\n Test for approximate equality of multivectors.\n\n >>> err2=scalar_epsilon*scalar_epsilon\n\n >>> print(approx_equal(clifford(\"{1}\"), clifford(\"1{1}\")))\n True\n >>> print(approx_equal(clifford(\"1{1}-3{2}+4{3}\"), clifford(\"{1}\")))\n False\n >>> print(approx_equal(clifford(\"1{1}-3{2}+4{3}+0.001\"), clifford(\"1{1}-3{2}+4{3}\"), err2, err2))\n False\n >>> print(approx_equal(clifford(\"1{1}-3{2}+4{3}+1.0e-30\"), clifford(\"1{1}-3{2}+4{3}\"), err2, err2))\n True\n ");
18030  static PyMethodDef __pyx_mdef_8PyClical_15approx_equal = {"approx_equal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_15approx_equal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_14approx_equal};
18031  static PyObject *__pyx_pw_8PyClical_15approx_equal(PyObject *__pyx_self,
18032 #if CYTHON_METH_FASTCALL
18033 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18034 #else
18035 PyObject *__pyx_args, PyObject *__pyx_kwds
18036 #endif
18037 ) {
18038  PyObject *__pyx_v_lhs = 0;
18039  PyObject *__pyx_v_rhs = 0;
18040  PyObject *__pyx_v_threshold = 0;
18041  PyObject *__pyx_v_tol = 0;
18042  #if !CYTHON_METH_FASTCALL
18043  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
18044  #endif
18045  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
18046  PyObject* values[4] = {0,0,0,0};
18047  int __pyx_lineno = 0;
18048  const char *__pyx_filename = NULL;
18049  int __pyx_clineno = 0;
18050  PyObject *__pyx_r = 0;
18051  __Pyx_RefNannyDeclarations
18052  __Pyx_RefNannySetupContext("approx_equal (wrapper)", 0);
18053  #if !CYTHON_METH_FASTCALL
18054  #if CYTHON_ASSUME_SAFE_MACROS
18055  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
18056  #else
18057  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
18058  #endif
18059  #endif
18060  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
18061  {
18062  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lhs,&__pyx_n_s_rhs,&__pyx_n_s_threshold,&__pyx_n_s_tol,0};
18063  values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
18064  values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
18065  if (__pyx_kwds) {
18066  Py_ssize_t kw_args;
18067  switch (__pyx_nargs) {
18068  case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
18069  CYTHON_FALLTHROUGH;
18070  case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
18071  CYTHON_FALLTHROUGH;
18072  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
18073  CYTHON_FALLTHROUGH;
18074  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18075  CYTHON_FALLTHROUGH;
18076  case 0: break;
18077  default: goto __pyx_L5_argtuple_error;
18078  }
18079  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
18080  switch (__pyx_nargs) {
18081  case 0:
18082  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lhs)) != 0)) {
18083  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
18084  kw_args--;
18085  }
18086  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
18087  else goto __pyx_L5_argtuple_error;
18088  CYTHON_FALLTHROUGH;
18089  case 1:
18090  if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rhs)) != 0)) {
18091  (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
18092  kw_args--;
18093  }
18094  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
18095  else {
18096  __Pyx_RaiseArgtupleInvalid("approx_equal", 0, 2, 4, 1); __PYX_ERR(0, 1422, __pyx_L3_error)
18097  }
18098  CYTHON_FALLTHROUGH;
18099  case 2:
18100  if (kw_args > 0) {
18101  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_threshold);
18102  if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
18103  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
18104  }
18105  CYTHON_FALLTHROUGH;
18106  case 3:
18107  if (kw_args > 0) {
18108  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tol);
18109  if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
18110  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1422, __pyx_L3_error)
18111  }
18112  }
18113  if (unlikely(kw_args > 0)) {
18114  const Py_ssize_t kwd_pos_args = __pyx_nargs;
18115  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "approx_equal") < 0)) __PYX_ERR(0, 1422, __pyx_L3_error)
18116  }
18117  } else {
18118  switch (__pyx_nargs) {
18119  case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
18120  CYTHON_FALLTHROUGH;
18121  case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
18122  CYTHON_FALLTHROUGH;
18123  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
18124  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18125  break;
18126  default: goto __pyx_L5_argtuple_error;
18127  }
18128  }
18129  __pyx_v_lhs = values[0];
18130  __pyx_v_rhs = values[1];
18131  __pyx_v_threshold = values[2];
18132  __pyx_v_tol = values[3];
18133  }
18134  goto __pyx_L6_skip;
18135  __pyx_L5_argtuple_error:;
18136  __Pyx_RaiseArgtupleInvalid("approx_equal", 0, 2, 4, __pyx_nargs); __PYX_ERR(0, 1422, __pyx_L3_error)
18137  __pyx_L6_skip:;
18138  goto __pyx_L4_argument_unpacking_done;
18139  __pyx_L3_error:;
18140  {
18141  Py_ssize_t __pyx_temp;
18142  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18143  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18144  }
18145  }
18146  __Pyx_AddTraceback("PyClical.approx_equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
18147  __Pyx_RefNannyFinishContext();
18148  return NULL;
18149  __pyx_L4_argument_unpacking_done:;
18150  __pyx_r = __pyx_pf_8PyClical_14approx_equal(__pyx_self, __pyx_v_lhs, __pyx_v_rhs, __pyx_v_threshold, __pyx_v_tol);
18151 
18152  /* function exit code */
18153  {
18154  Py_ssize_t __pyx_temp;
18155  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18156  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18157  }
18158  }
18159  __Pyx_RefNannyFinishContext();
18160  return __pyx_r;
18161  }
18162 
18163  static PyObject *__pyx_pf_8PyClical_14approx_equal(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, PyObject *__pyx_v_threshold, PyObject *__pyx_v_tol) {
18164  PyObject *__pyx_r = NULL;
18165  __Pyx_RefNannyDeclarations
18166  PyObject *__pyx_t_1 = NULL;
18167  struct __pyx_opt_args_8PyClical_approx_equal __pyx_t_2;
18168  int __pyx_lineno = 0;
18169  const char *__pyx_filename = NULL;
18170  int __pyx_clineno = 0;
18171  __Pyx_RefNannySetupContext("approx_equal", 1);
18172  __Pyx_XDECREF(__pyx_r);
18173  __pyx_t_2.__pyx_n = 2;
18174  __pyx_t_2.threshold = __pyx_v_threshold;
18175  __pyx_t_2.tol = __pyx_v_tol;
18176  __pyx_t_1 = __pyx_f_8PyClical_approx_equal(__pyx_v_lhs, __pyx_v_rhs, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error)
18177  __Pyx_GOTREF(__pyx_t_1);
18178  __pyx_r = __pyx_t_1;
18179  __pyx_t_1 = 0;
18180  goto __pyx_L0;
18181 
18182  /* function exit code */
18183  __pyx_L1_error:;
18184  __Pyx_XDECREF(__pyx_t_1);
18185  __Pyx_AddTraceback("PyClical.approx_equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
18186  __pyx_r = NULL;
18187  __pyx_L0:;
18188  __Pyx_XGIVEREF(__pyx_r);
18189  __Pyx_RefNannyFinishContext();
18190  return __pyx_r;
18191  }
18192 
18193  /* "PyClical.pyx":1441
18194  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol)
18195  *
18196  * cpdef inline inv(obj): # <<<<<<<<<<<<<<
18197  * """
18198  * Geometric multiplicative inverse.
18199  */
18200 
18201  static PyObject *__pyx_pw_8PyClical_17inv(PyObject *__pyx_self,
18202 #if CYTHON_METH_FASTCALL
18203 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18204 #else
18205 PyObject *__pyx_args, PyObject *__pyx_kwds
18206 #endif
18207 ); /*proto*/
18208  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_inv(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
18209  PyObject *__pyx_r = NULL;
18210  __Pyx_RefNannyDeclarations
18211  PyObject *__pyx_t_1 = NULL;
18212  PyObject *__pyx_t_2 = NULL;
18213  PyObject *__pyx_t_3 = NULL;
18214  int __pyx_t_4;
18215  int __pyx_lineno = 0;
18216  const char *__pyx_filename = NULL;
18217  int __pyx_clineno = 0;
18218  __Pyx_RefNannySetupContext("inv", 1);
18219 
18220  /* "PyClical.pyx":1454
18221  * nan
18222  * """
18223  * return clifford(obj).inv() # <<<<<<<<<<<<<<
18224  *
18225  * cpdef inline scalar(obj):
18226  */
18227  __Pyx_XDECREF(__pyx_r);
18228  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1454, __pyx_L1_error)
18229  __Pyx_GOTREF(__pyx_t_2);
18230  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inv); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1454, __pyx_L1_error)
18231  __Pyx_GOTREF(__pyx_t_3);
18232  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18233  __pyx_t_2 = NULL;
18234  __pyx_t_4 = 0;
18235  #if CYTHON_UNPACK_METHODS
18236  if (likely(PyMethod_Check(__pyx_t_3))) {
18237  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
18238  if (likely(__pyx_t_2)) {
18239  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
18240  __Pyx_INCREF(__pyx_t_2);
18241  __Pyx_INCREF(function);
18242  __Pyx_DECREF_SET(__pyx_t_3, function);
18243  __pyx_t_4 = 1;
18244  }
18245  }
18246  #endif
18247  {
18248  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
18249  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
18250  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
18251  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1454, __pyx_L1_error)
18252  __Pyx_GOTREF(__pyx_t_1);
18253  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18254  }
18255  __pyx_r = __pyx_t_1;
18256  __pyx_t_1 = 0;
18257  goto __pyx_L0;
18258 
18259  /* "PyClical.pyx":1441
18260  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol)
18261  *
18262  * cpdef inline inv(obj): # <<<<<<<<<<<<<<
18263  * """
18264  * Geometric multiplicative inverse.
18265  */
18266 
18267  /* function exit code */
18268  __pyx_L1_error:;
18269  __Pyx_XDECREF(__pyx_t_1);
18270  __Pyx_XDECREF(__pyx_t_2);
18271  __Pyx_XDECREF(__pyx_t_3);
18272  __Pyx_AddTraceback("PyClical.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
18273  __pyx_r = 0;
18274  __pyx_L0:;
18275  __Pyx_XGIVEREF(__pyx_r);
18276  __Pyx_RefNannyFinishContext();
18277  return __pyx_r;
18278  }
18279 
18280  /* Python wrapper */
18281  static PyObject *__pyx_pw_8PyClical_17inv(PyObject *__pyx_self,
18282 #if CYTHON_METH_FASTCALL
18283 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18284 #else
18285 PyObject *__pyx_args, PyObject *__pyx_kwds
18286 #endif
18287 ); /*proto*/
18288  PyDoc_STRVAR(__pyx_doc_8PyClical_16inv, "\n Geometric multiplicative inverse.\n\n >>> print(inv(clifford(\"{1}\")))\n {1}\n >>> print(inv(clifford(\"{-1}\")))\n -{-1}\n >>> print(inv(clifford(\"{-2,-1}\")))\n -{-2,-1}\n >>> print(inv(clifford(\"{-1}+{1}\")))\n nan\n ");
18289  static PyMethodDef __pyx_mdef_8PyClical_17inv = {"inv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_17inv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_16inv};
18290  static PyObject *__pyx_pw_8PyClical_17inv(PyObject *__pyx_self,
18291 #if CYTHON_METH_FASTCALL
18292 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18293 #else
18294 PyObject *__pyx_args, PyObject *__pyx_kwds
18295 #endif
18296 ) {
18297  PyObject *__pyx_v_obj = 0;
18298  #if !CYTHON_METH_FASTCALL
18299  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
18300  #endif
18301  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
18302  PyObject* values[1] = {0};
18303  int __pyx_lineno = 0;
18304  const char *__pyx_filename = NULL;
18305  int __pyx_clineno = 0;
18306  PyObject *__pyx_r = 0;
18307  __Pyx_RefNannyDeclarations
18308  __Pyx_RefNannySetupContext("inv (wrapper)", 0);
18309  #if !CYTHON_METH_FASTCALL
18310  #if CYTHON_ASSUME_SAFE_MACROS
18311  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
18312  #else
18313  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
18314  #endif
18315  #endif
18316  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
18317  {
18318  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
18319  if (__pyx_kwds) {
18320  Py_ssize_t kw_args;
18321  switch (__pyx_nargs) {
18322  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18323  CYTHON_FALLTHROUGH;
18324  case 0: break;
18325  default: goto __pyx_L5_argtuple_error;
18326  }
18327  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
18328  switch (__pyx_nargs) {
18329  case 0:
18330  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
18331  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
18332  kw_args--;
18333  }
18334  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1441, __pyx_L3_error)
18335  else goto __pyx_L5_argtuple_error;
18336  }
18337  if (unlikely(kw_args > 0)) {
18338  const Py_ssize_t kwd_pos_args = __pyx_nargs;
18339  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "inv") < 0)) __PYX_ERR(0, 1441, __pyx_L3_error)
18340  }
18341  } else if (unlikely(__pyx_nargs != 1)) {
18342  goto __pyx_L5_argtuple_error;
18343  } else {
18344  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18345  }
18346  __pyx_v_obj = values[0];
18347  }
18348  goto __pyx_L6_skip;
18349  __pyx_L5_argtuple_error:;
18350  __Pyx_RaiseArgtupleInvalid("inv", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1441, __pyx_L3_error)
18351  __pyx_L6_skip:;
18352  goto __pyx_L4_argument_unpacking_done;
18353  __pyx_L3_error:;
18354  {
18355  Py_ssize_t __pyx_temp;
18356  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18357  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18358  }
18359  }
18360  __Pyx_AddTraceback("PyClical.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
18361  __Pyx_RefNannyFinishContext();
18362  return NULL;
18363  __pyx_L4_argument_unpacking_done:;
18364  __pyx_r = __pyx_pf_8PyClical_16inv(__pyx_self, __pyx_v_obj);
18365 
18366  /* function exit code */
18367  {
18368  Py_ssize_t __pyx_temp;
18369  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18370  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18371  }
18372  }
18373  __Pyx_RefNannyFinishContext();
18374  return __pyx_r;
18375  }
18376 
18377  static PyObject *__pyx_pf_8PyClical_16inv(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
18378  PyObject *__pyx_r = NULL;
18379  __Pyx_RefNannyDeclarations
18380  PyObject *__pyx_t_1 = NULL;
18381  int __pyx_lineno = 0;
18382  const char *__pyx_filename = NULL;
18383  int __pyx_clineno = 0;
18384  __Pyx_RefNannySetupContext("inv", 1);
18385  __Pyx_XDECREF(__pyx_r);
18386  __pyx_t_1 = __pyx_f_8PyClical_inv(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1441, __pyx_L1_error)
18387  __Pyx_GOTREF(__pyx_t_1);
18388  __pyx_r = __pyx_t_1;
18389  __pyx_t_1 = 0;
18390  goto __pyx_L0;
18391 
18392  /* function exit code */
18393  __pyx_L1_error:;
18394  __Pyx_XDECREF(__pyx_t_1);
18395  __Pyx_AddTraceback("PyClical.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
18396  __pyx_r = NULL;
18397  __pyx_L0:;
18398  __Pyx_XGIVEREF(__pyx_r);
18399  __Pyx_RefNannyFinishContext();
18400  return __pyx_r;
18401  }
18402 
18403  /* "PyClical.pyx":1456
18404  * return clifford(obj).inv()
18405  *
18406  * cpdef inline scalar(obj): # <<<<<<<<<<<<<<
18407  * """
18408  * Scalar part.
18409  */
18410 
18411  static PyObject *__pyx_pw_8PyClical_19scalar(PyObject *__pyx_self,
18412 #if CYTHON_METH_FASTCALL
18413 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18414 #else
18415 PyObject *__pyx_args, PyObject *__pyx_kwds
18416 #endif
18417 ); /*proto*/
18418  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_scalar(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
18419  PyObject *__pyx_r = NULL;
18420  __Pyx_RefNannyDeclarations
18421  PyObject *__pyx_t_1 = NULL;
18422  PyObject *__pyx_t_2 = NULL;
18423  PyObject *__pyx_t_3 = NULL;
18424  int __pyx_t_4;
18425  int __pyx_lineno = 0;
18426  const char *__pyx_filename = NULL;
18427  int __pyx_clineno = 0;
18428  __Pyx_RefNannySetupContext("scalar", 1);
18429 
18430  /* "PyClical.pyx":1465
18431  * 0.0
18432  * """
18433  * return clifford(obj).scalar() # <<<<<<<<<<<<<<
18434  *
18435  * cpdef inline real(obj):
18436  */
18437  __Pyx_XDECREF(__pyx_r);
18438  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1465, __pyx_L1_error)
18439  __Pyx_GOTREF(__pyx_t_2);
18440  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_scalar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1465, __pyx_L1_error)
18441  __Pyx_GOTREF(__pyx_t_3);
18442  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18443  __pyx_t_2 = NULL;
18444  __pyx_t_4 = 0;
18445  #if CYTHON_UNPACK_METHODS
18446  if (likely(PyMethod_Check(__pyx_t_3))) {
18447  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
18448  if (likely(__pyx_t_2)) {
18449  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
18450  __Pyx_INCREF(__pyx_t_2);
18451  __Pyx_INCREF(function);
18452  __Pyx_DECREF_SET(__pyx_t_3, function);
18453  __pyx_t_4 = 1;
18454  }
18455  }
18456  #endif
18457  {
18458  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
18459  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
18460  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
18461  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1465, __pyx_L1_error)
18462  __Pyx_GOTREF(__pyx_t_1);
18463  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18464  }
18465  __pyx_r = __pyx_t_1;
18466  __pyx_t_1 = 0;
18467  goto __pyx_L0;
18468 
18469  /* "PyClical.pyx":1456
18470  * return clifford(obj).inv()
18471  *
18472  * cpdef inline scalar(obj): # <<<<<<<<<<<<<<
18473  * """
18474  * Scalar part.
18475  */
18476 
18477  /* function exit code */
18478  __pyx_L1_error:;
18479  __Pyx_XDECREF(__pyx_t_1);
18480  __Pyx_XDECREF(__pyx_t_2);
18481  __Pyx_XDECREF(__pyx_t_3);
18482  __Pyx_AddTraceback("PyClical.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
18483  __pyx_r = 0;
18484  __pyx_L0:;
18485  __Pyx_XGIVEREF(__pyx_r);
18486  __Pyx_RefNannyFinishContext();
18487  return __pyx_r;
18488  }
18489 
18490  /* Python wrapper */
18491  static PyObject *__pyx_pw_8PyClical_19scalar(PyObject *__pyx_self,
18492 #if CYTHON_METH_FASTCALL
18493 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18494 #else
18495 PyObject *__pyx_args, PyObject *__pyx_kwds
18496 #endif
18497 ); /*proto*/
18498  PyDoc_STRVAR(__pyx_doc_8PyClical_18scalar, "\n Scalar part.\n\n >>> scalar(clifford(\"1+{1}+{1,2}\"))\n 1.0\n >>> scalar(clifford(\"{1,2}\"))\n 0.0\n ");
18499  static PyMethodDef __pyx_mdef_8PyClical_19scalar = {"scalar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_19scalar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_18scalar};
18500  static PyObject *__pyx_pw_8PyClical_19scalar(PyObject *__pyx_self,
18501 #if CYTHON_METH_FASTCALL
18502 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18503 #else
18504 PyObject *__pyx_args, PyObject *__pyx_kwds
18505 #endif
18506 ) {
18507  PyObject *__pyx_v_obj = 0;
18508  #if !CYTHON_METH_FASTCALL
18509  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
18510  #endif
18511  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
18512  PyObject* values[1] = {0};
18513  int __pyx_lineno = 0;
18514  const char *__pyx_filename = NULL;
18515  int __pyx_clineno = 0;
18516  PyObject *__pyx_r = 0;
18517  __Pyx_RefNannyDeclarations
18518  __Pyx_RefNannySetupContext("scalar (wrapper)", 0);
18519  #if !CYTHON_METH_FASTCALL
18520  #if CYTHON_ASSUME_SAFE_MACROS
18521  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
18522  #else
18523  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
18524  #endif
18525  #endif
18526  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
18527  {
18528  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
18529  if (__pyx_kwds) {
18530  Py_ssize_t kw_args;
18531  switch (__pyx_nargs) {
18532  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18533  CYTHON_FALLTHROUGH;
18534  case 0: break;
18535  default: goto __pyx_L5_argtuple_error;
18536  }
18537  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
18538  switch (__pyx_nargs) {
18539  case 0:
18540  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
18541  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
18542  kw_args--;
18543  }
18544  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L3_error)
18545  else goto __pyx_L5_argtuple_error;
18546  }
18547  if (unlikely(kw_args > 0)) {
18548  const Py_ssize_t kwd_pos_args = __pyx_nargs;
18549  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scalar") < 0)) __PYX_ERR(0, 1456, __pyx_L3_error)
18550  }
18551  } else if (unlikely(__pyx_nargs != 1)) {
18552  goto __pyx_L5_argtuple_error;
18553  } else {
18554  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18555  }
18556  __pyx_v_obj = values[0];
18557  }
18558  goto __pyx_L6_skip;
18559  __pyx_L5_argtuple_error:;
18560  __Pyx_RaiseArgtupleInvalid("scalar", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1456, __pyx_L3_error)
18561  __pyx_L6_skip:;
18562  goto __pyx_L4_argument_unpacking_done;
18563  __pyx_L3_error:;
18564  {
18565  Py_ssize_t __pyx_temp;
18566  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18567  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18568  }
18569  }
18570  __Pyx_AddTraceback("PyClical.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
18571  __Pyx_RefNannyFinishContext();
18572  return NULL;
18573  __pyx_L4_argument_unpacking_done:;
18574  __pyx_r = __pyx_pf_8PyClical_18scalar(__pyx_self, __pyx_v_obj);
18575 
18576  /* function exit code */
18577  {
18578  Py_ssize_t __pyx_temp;
18579  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18580  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18581  }
18582  }
18583  __Pyx_RefNannyFinishContext();
18584  return __pyx_r;
18585  }
18586 
18587  static PyObject *__pyx_pf_8PyClical_18scalar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
18588  PyObject *__pyx_r = NULL;
18589  __Pyx_RefNannyDeclarations
18590  PyObject *__pyx_t_1 = NULL;
18591  int __pyx_lineno = 0;
18592  const char *__pyx_filename = NULL;
18593  int __pyx_clineno = 0;
18594  __Pyx_RefNannySetupContext("scalar", 1);
18595  __Pyx_XDECREF(__pyx_r);
18596  __pyx_t_1 = __pyx_f_8PyClical_scalar(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error)
18597  __Pyx_GOTREF(__pyx_t_1);
18598  __pyx_r = __pyx_t_1;
18599  __pyx_t_1 = 0;
18600  goto __pyx_L0;
18601 
18602  /* function exit code */
18603  __pyx_L1_error:;
18604  __Pyx_XDECREF(__pyx_t_1);
18605  __Pyx_AddTraceback("PyClical.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
18606  __pyx_r = NULL;
18607  __pyx_L0:;
18608  __Pyx_XGIVEREF(__pyx_r);
18609  __Pyx_RefNannyFinishContext();
18610  return __pyx_r;
18611  }
18612 
18613  /* "PyClical.pyx":1467
18614  * return clifford(obj).scalar()
18615  *
18616  * cpdef inline real(obj): # <<<<<<<<<<<<<<
18617  * """
18618  * Real part: synonym for scalar part.
18619  */
18620 
18621  static PyObject *__pyx_pw_8PyClical_21real(PyObject *__pyx_self,
18622 #if CYTHON_METH_FASTCALL
18623 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18624 #else
18625 PyObject *__pyx_args, PyObject *__pyx_kwds
18626 #endif
18627 ); /*proto*/
18628  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_real(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
18629  PyObject *__pyx_r = NULL;
18630  __Pyx_RefNannyDeclarations
18631  PyObject *__pyx_t_1 = NULL;
18632  PyObject *__pyx_t_2 = NULL;
18633  PyObject *__pyx_t_3 = NULL;
18634  int __pyx_t_4;
18635  int __pyx_lineno = 0;
18636  const char *__pyx_filename = NULL;
18637  int __pyx_clineno = 0;
18638  __Pyx_RefNannySetupContext("real", 1);
18639 
18640  /* "PyClical.pyx":1476
18641  * 0.0
18642  * """
18643  * return clifford(obj).scalar() # <<<<<<<<<<<<<<
18644  *
18645  * cpdef inline imag(obj):
18646  */
18647  __Pyx_XDECREF(__pyx_r);
18648  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1476, __pyx_L1_error)
18649  __Pyx_GOTREF(__pyx_t_2);
18650  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_scalar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1476, __pyx_L1_error)
18651  __Pyx_GOTREF(__pyx_t_3);
18652  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18653  __pyx_t_2 = NULL;
18654  __pyx_t_4 = 0;
18655  #if CYTHON_UNPACK_METHODS
18656  if (likely(PyMethod_Check(__pyx_t_3))) {
18657  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
18658  if (likely(__pyx_t_2)) {
18659  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
18660  __Pyx_INCREF(__pyx_t_2);
18661  __Pyx_INCREF(function);
18662  __Pyx_DECREF_SET(__pyx_t_3, function);
18663  __pyx_t_4 = 1;
18664  }
18665  }
18666  #endif
18667  {
18668  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
18669  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
18670  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
18671  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1476, __pyx_L1_error)
18672  __Pyx_GOTREF(__pyx_t_1);
18673  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18674  }
18675  __pyx_r = __pyx_t_1;
18676  __pyx_t_1 = 0;
18677  goto __pyx_L0;
18678 
18679  /* "PyClical.pyx":1467
18680  * return clifford(obj).scalar()
18681  *
18682  * cpdef inline real(obj): # <<<<<<<<<<<<<<
18683  * """
18684  * Real part: synonym for scalar part.
18685  */
18686 
18687  /* function exit code */
18688  __pyx_L1_error:;
18689  __Pyx_XDECREF(__pyx_t_1);
18690  __Pyx_XDECREF(__pyx_t_2);
18691  __Pyx_XDECREF(__pyx_t_3);
18692  __Pyx_AddTraceback("PyClical.real", __pyx_clineno, __pyx_lineno, __pyx_filename);
18693  __pyx_r = 0;
18694  __pyx_L0:;
18695  __Pyx_XGIVEREF(__pyx_r);
18696  __Pyx_RefNannyFinishContext();
18697  return __pyx_r;
18698  }
18699 
18700  /* Python wrapper */
18701  static PyObject *__pyx_pw_8PyClical_21real(PyObject *__pyx_self,
18702 #if CYTHON_METH_FASTCALL
18703 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18704 #else
18705 PyObject *__pyx_args, PyObject *__pyx_kwds
18706 #endif
18707 ); /*proto*/
18708  PyDoc_STRVAR(__pyx_doc_8PyClical_20real, "\n Real part: synonym for scalar part.\n\n >>> real(clifford(\"1+{1}+{1,2}\"))\n 1.0\n >>> real(clifford(\"{1,2}\"))\n 0.0\n ");
18709  static PyMethodDef __pyx_mdef_8PyClical_21real = {"real", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_21real, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_20real};
18710  static PyObject *__pyx_pw_8PyClical_21real(PyObject *__pyx_self,
18711 #if CYTHON_METH_FASTCALL
18712 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18713 #else
18714 PyObject *__pyx_args, PyObject *__pyx_kwds
18715 #endif
18716 ) {
18717  PyObject *__pyx_v_obj = 0;
18718  #if !CYTHON_METH_FASTCALL
18719  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
18720  #endif
18721  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
18722  PyObject* values[1] = {0};
18723  int __pyx_lineno = 0;
18724  const char *__pyx_filename = NULL;
18725  int __pyx_clineno = 0;
18726  PyObject *__pyx_r = 0;
18727  __Pyx_RefNannyDeclarations
18728  __Pyx_RefNannySetupContext("real (wrapper)", 0);
18729  #if !CYTHON_METH_FASTCALL
18730  #if CYTHON_ASSUME_SAFE_MACROS
18731  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
18732  #else
18733  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
18734  #endif
18735  #endif
18736  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
18737  {
18738  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
18739  if (__pyx_kwds) {
18740  Py_ssize_t kw_args;
18741  switch (__pyx_nargs) {
18742  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18743  CYTHON_FALLTHROUGH;
18744  case 0: break;
18745  default: goto __pyx_L5_argtuple_error;
18746  }
18747  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
18748  switch (__pyx_nargs) {
18749  case 0:
18750  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
18751  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
18752  kw_args--;
18753  }
18754  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1467, __pyx_L3_error)
18755  else goto __pyx_L5_argtuple_error;
18756  }
18757  if (unlikely(kw_args > 0)) {
18758  const Py_ssize_t kwd_pos_args = __pyx_nargs;
18759  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "real") < 0)) __PYX_ERR(0, 1467, __pyx_L3_error)
18760  }
18761  } else if (unlikely(__pyx_nargs != 1)) {
18762  goto __pyx_L5_argtuple_error;
18763  } else {
18764  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18765  }
18766  __pyx_v_obj = values[0];
18767  }
18768  goto __pyx_L6_skip;
18769  __pyx_L5_argtuple_error:;
18770  __Pyx_RaiseArgtupleInvalid("real", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1467, __pyx_L3_error)
18771  __pyx_L6_skip:;
18772  goto __pyx_L4_argument_unpacking_done;
18773  __pyx_L3_error:;
18774  {
18775  Py_ssize_t __pyx_temp;
18776  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18777  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18778  }
18779  }
18780  __Pyx_AddTraceback("PyClical.real", __pyx_clineno, __pyx_lineno, __pyx_filename);
18781  __Pyx_RefNannyFinishContext();
18782  return NULL;
18783  __pyx_L4_argument_unpacking_done:;
18784  __pyx_r = __pyx_pf_8PyClical_20real(__pyx_self, __pyx_v_obj);
18785 
18786  /* function exit code */
18787  {
18788  Py_ssize_t __pyx_temp;
18789  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18790  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18791  }
18792  }
18793  __Pyx_RefNannyFinishContext();
18794  return __pyx_r;
18795  }
18796 
18797  static PyObject *__pyx_pf_8PyClical_20real(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
18798  PyObject *__pyx_r = NULL;
18799  __Pyx_RefNannyDeclarations
18800  PyObject *__pyx_t_1 = NULL;
18801  int __pyx_lineno = 0;
18802  const char *__pyx_filename = NULL;
18803  int __pyx_clineno = 0;
18804  __Pyx_RefNannySetupContext("real", 1);
18805  __Pyx_XDECREF(__pyx_r);
18806  __pyx_t_1 = __pyx_f_8PyClical_real(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1467, __pyx_L1_error)
18807  __Pyx_GOTREF(__pyx_t_1);
18808  __pyx_r = __pyx_t_1;
18809  __pyx_t_1 = 0;
18810  goto __pyx_L0;
18811 
18812  /* function exit code */
18813  __pyx_L1_error:;
18814  __Pyx_XDECREF(__pyx_t_1);
18815  __Pyx_AddTraceback("PyClical.real", __pyx_clineno, __pyx_lineno, __pyx_filename);
18816  __pyx_r = NULL;
18817  __pyx_L0:;
18818  __Pyx_XGIVEREF(__pyx_r);
18819  __Pyx_RefNannyFinishContext();
18820  return __pyx_r;
18821  }
18822 
18823  /* "PyClical.pyx":1478
18824  * return clifford(obj).scalar()
18825  *
18826  * cpdef inline imag(obj): # <<<<<<<<<<<<<<
18827  * """
18828  * Imaginary part: deprecated (always 0).
18829  */
18830 
18831  static PyObject *__pyx_pw_8PyClical_23imag(PyObject *__pyx_self,
18832 #if CYTHON_METH_FASTCALL
18833 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18834 #else
18835 PyObject *__pyx_args, PyObject *__pyx_kwds
18836 #endif
18837 ); /*proto*/
18838  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_imag(CYTHON_UNUSED PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
18839  PyObject *__pyx_r = NULL;
18840  __Pyx_RefNannyDeclarations
18841  __Pyx_RefNannySetupContext("imag", 1);
18842 
18843  /* "PyClical.pyx":1487
18844  * 0.0
18845  * """
18846  * return 0.0 # <<<<<<<<<<<<<<
18847  *
18848  * cpdef inline pure(obj):
18849  */
18850  __Pyx_XDECREF(__pyx_r);
18851  __Pyx_INCREF(__pyx_float_0_0);
18852  __pyx_r = __pyx_float_0_0;
18853  goto __pyx_L0;
18854 
18855  /* "PyClical.pyx":1478
18856  * return clifford(obj).scalar()
18857  *
18858  * cpdef inline imag(obj): # <<<<<<<<<<<<<<
18859  * """
18860  * Imaginary part: deprecated (always 0).
18861  */
18862 
18863  /* function exit code */
18864  __pyx_L0:;
18865  __Pyx_XGIVEREF(__pyx_r);
18866  __Pyx_RefNannyFinishContext();
18867  return __pyx_r;
18868  }
18869 
18870  /* Python wrapper */
18871  static PyObject *__pyx_pw_8PyClical_23imag(PyObject *__pyx_self,
18872 #if CYTHON_METH_FASTCALL
18873 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18874 #else
18875 PyObject *__pyx_args, PyObject *__pyx_kwds
18876 #endif
18877 ); /*proto*/
18878  PyDoc_STRVAR(__pyx_doc_8PyClical_22imag, "\n Imaginary part: deprecated (always 0).\n\n >>> imag(clifford(\"1+{1}+{1,2}\"))\n 0.0\n >>> imag(clifford(\"{1,2}\"))\n 0.0\n ");
18879  static PyMethodDef __pyx_mdef_8PyClical_23imag = {"imag", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_23imag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_22imag};
18880  static PyObject *__pyx_pw_8PyClical_23imag(PyObject *__pyx_self,
18881 #if CYTHON_METH_FASTCALL
18882 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
18883 #else
18884 PyObject *__pyx_args, PyObject *__pyx_kwds
18885 #endif
18886 ) {
18887  PyObject *__pyx_v_obj = 0;
18888  #if !CYTHON_METH_FASTCALL
18889  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
18890  #endif
18891  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
18892  PyObject* values[1] = {0};
18893  int __pyx_lineno = 0;
18894  const char *__pyx_filename = NULL;
18895  int __pyx_clineno = 0;
18896  PyObject *__pyx_r = 0;
18897  __Pyx_RefNannyDeclarations
18898  __Pyx_RefNannySetupContext("imag (wrapper)", 0);
18899  #if !CYTHON_METH_FASTCALL
18900  #if CYTHON_ASSUME_SAFE_MACROS
18901  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
18902  #else
18903  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
18904  #endif
18905  #endif
18906  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
18907  {
18908  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
18909  if (__pyx_kwds) {
18910  Py_ssize_t kw_args;
18911  switch (__pyx_nargs) {
18912  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18913  CYTHON_FALLTHROUGH;
18914  case 0: break;
18915  default: goto __pyx_L5_argtuple_error;
18916  }
18917  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
18918  switch (__pyx_nargs) {
18919  case 0:
18920  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
18921  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
18922  kw_args--;
18923  }
18924  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1478, __pyx_L3_error)
18925  else goto __pyx_L5_argtuple_error;
18926  }
18927  if (unlikely(kw_args > 0)) {
18928  const Py_ssize_t kwd_pos_args = __pyx_nargs;
18929  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "imag") < 0)) __PYX_ERR(0, 1478, __pyx_L3_error)
18930  }
18931  } else if (unlikely(__pyx_nargs != 1)) {
18932  goto __pyx_L5_argtuple_error;
18933  } else {
18934  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
18935  }
18936  __pyx_v_obj = values[0];
18937  }
18938  goto __pyx_L6_skip;
18939  __pyx_L5_argtuple_error:;
18940  __Pyx_RaiseArgtupleInvalid("imag", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1478, __pyx_L3_error)
18941  __pyx_L6_skip:;
18942  goto __pyx_L4_argument_unpacking_done;
18943  __pyx_L3_error:;
18944  {
18945  Py_ssize_t __pyx_temp;
18946  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18947  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18948  }
18949  }
18950  __Pyx_AddTraceback("PyClical.imag", __pyx_clineno, __pyx_lineno, __pyx_filename);
18951  __Pyx_RefNannyFinishContext();
18952  return NULL;
18953  __pyx_L4_argument_unpacking_done:;
18954  __pyx_r = __pyx_pf_8PyClical_22imag(__pyx_self, __pyx_v_obj);
18955 
18956  /* function exit code */
18957  {
18958  Py_ssize_t __pyx_temp;
18959  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
18960  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
18961  }
18962  }
18963  __Pyx_RefNannyFinishContext();
18964  return __pyx_r;
18965  }
18966 
18967  static PyObject *__pyx_pf_8PyClical_22imag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
18968  PyObject *__pyx_r = NULL;
18969  __Pyx_RefNannyDeclarations
18970  PyObject *__pyx_t_1 = NULL;
18971  int __pyx_lineno = 0;
18972  const char *__pyx_filename = NULL;
18973  int __pyx_clineno = 0;
18974  __Pyx_RefNannySetupContext("imag", 1);
18975  __Pyx_XDECREF(__pyx_r);
18976  __pyx_t_1 = __pyx_f_8PyClical_imag(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1478, __pyx_L1_error)
18977  __Pyx_GOTREF(__pyx_t_1);
18978  __pyx_r = __pyx_t_1;
18979  __pyx_t_1 = 0;
18980  goto __pyx_L0;
18981 
18982  /* function exit code */
18983  __pyx_L1_error:;
18984  __Pyx_XDECREF(__pyx_t_1);
18985  __Pyx_AddTraceback("PyClical.imag", __pyx_clineno, __pyx_lineno, __pyx_filename);
18986  __pyx_r = NULL;
18987  __pyx_L0:;
18988  __Pyx_XGIVEREF(__pyx_r);
18989  __Pyx_RefNannyFinishContext();
18990  return __pyx_r;
18991  }
18992 
18993  /* "PyClical.pyx":1489
18994  * return 0.0
18995  *
18996  * cpdef inline pure(obj): # <<<<<<<<<<<<<<
18997  * """
18998  * Pure part
18999  */
19000 
19001  static PyObject *__pyx_pw_8PyClical_25pure(PyObject *__pyx_self,
19002 #if CYTHON_METH_FASTCALL
19003 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19004 #else
19005 PyObject *__pyx_args, PyObject *__pyx_kwds
19006 #endif
19007 ); /*proto*/
19008  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pure(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
19009  PyObject *__pyx_r = NULL;
19010  __Pyx_RefNannyDeclarations
19011  PyObject *__pyx_t_1 = NULL;
19012  PyObject *__pyx_t_2 = NULL;
19013  PyObject *__pyx_t_3 = NULL;
19014  int __pyx_t_4;
19015  int __pyx_lineno = 0;
19016  const char *__pyx_filename = NULL;
19017  int __pyx_clineno = 0;
19018  __Pyx_RefNannySetupContext("pure", 1);
19019 
19020  /* "PyClical.pyx":1498
19021  * {1,2}
19022  * """
19023  * return clifford(obj).pure() # <<<<<<<<<<<<<<
19024  *
19025  * cpdef inline even(obj):
19026  */
19027  __Pyx_XDECREF(__pyx_r);
19028  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1498, __pyx_L1_error)
19029  __Pyx_GOTREF(__pyx_t_2);
19030  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pure); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error)
19031  __Pyx_GOTREF(__pyx_t_3);
19032  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19033  __pyx_t_2 = NULL;
19034  __pyx_t_4 = 0;
19035  #if CYTHON_UNPACK_METHODS
19036  if (likely(PyMethod_Check(__pyx_t_3))) {
19037  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
19038  if (likely(__pyx_t_2)) {
19039  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
19040  __Pyx_INCREF(__pyx_t_2);
19041  __Pyx_INCREF(function);
19042  __Pyx_DECREF_SET(__pyx_t_3, function);
19043  __pyx_t_4 = 1;
19044  }
19045  }
19046  #endif
19047  {
19048  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
19049  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
19050  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19051  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1498, __pyx_L1_error)
19052  __Pyx_GOTREF(__pyx_t_1);
19053  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19054  }
19055  __pyx_r = __pyx_t_1;
19056  __pyx_t_1 = 0;
19057  goto __pyx_L0;
19058 
19059  /* "PyClical.pyx":1489
19060  * return 0.0
19061  *
19062  * cpdef inline pure(obj): # <<<<<<<<<<<<<<
19063  * """
19064  * Pure part
19065  */
19066 
19067  /* function exit code */
19068  __pyx_L1_error:;
19069  __Pyx_XDECREF(__pyx_t_1);
19070  __Pyx_XDECREF(__pyx_t_2);
19071  __Pyx_XDECREF(__pyx_t_3);
19072  __Pyx_AddTraceback("PyClical.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
19073  __pyx_r = 0;
19074  __pyx_L0:;
19075  __Pyx_XGIVEREF(__pyx_r);
19076  __Pyx_RefNannyFinishContext();
19077  return __pyx_r;
19078  }
19079 
19080  /* Python wrapper */
19081  static PyObject *__pyx_pw_8PyClical_25pure(PyObject *__pyx_self,
19082 #if CYTHON_METH_FASTCALL
19083 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19084 #else
19085 PyObject *__pyx_args, PyObject *__pyx_kwds
19086 #endif
19087 ); /*proto*/
19088  PyDoc_STRVAR(__pyx_doc_8PyClical_24pure, "\n Pure part\n\n >>> print(pure(clifford(\"1+{1}+{1,2}\")))\n {1}+{1,2}\n >>> print(pure(clifford(\"{1,2}\")))\n {1,2}\n ");
19089  static PyMethodDef __pyx_mdef_8PyClical_25pure = {"pure", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_25pure, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_24pure};
19090  static PyObject *__pyx_pw_8PyClical_25pure(PyObject *__pyx_self,
19091 #if CYTHON_METH_FASTCALL
19092 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19093 #else
19094 PyObject *__pyx_args, PyObject *__pyx_kwds
19095 #endif
19096 ) {
19097  PyObject *__pyx_v_obj = 0;
19098  #if !CYTHON_METH_FASTCALL
19099  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
19100  #endif
19101  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
19102  PyObject* values[1] = {0};
19103  int __pyx_lineno = 0;
19104  const char *__pyx_filename = NULL;
19105  int __pyx_clineno = 0;
19106  PyObject *__pyx_r = 0;
19107  __Pyx_RefNannyDeclarations
19108  __Pyx_RefNannySetupContext("pure (wrapper)", 0);
19109  #if !CYTHON_METH_FASTCALL
19110  #if CYTHON_ASSUME_SAFE_MACROS
19111  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
19112  #else
19113  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
19114  #endif
19115  #endif
19116  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
19117  {
19118  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
19119  if (__pyx_kwds) {
19120  Py_ssize_t kw_args;
19121  switch (__pyx_nargs) {
19122  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19123  CYTHON_FALLTHROUGH;
19124  case 0: break;
19125  default: goto __pyx_L5_argtuple_error;
19126  }
19127  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
19128  switch (__pyx_nargs) {
19129  case 0:
19130  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
19131  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
19132  kw_args--;
19133  }
19134  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1489, __pyx_L3_error)
19135  else goto __pyx_L5_argtuple_error;
19136  }
19137  if (unlikely(kw_args > 0)) {
19138  const Py_ssize_t kwd_pos_args = __pyx_nargs;
19139  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "pure") < 0)) __PYX_ERR(0, 1489, __pyx_L3_error)
19140  }
19141  } else if (unlikely(__pyx_nargs != 1)) {
19142  goto __pyx_L5_argtuple_error;
19143  } else {
19144  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19145  }
19146  __pyx_v_obj = values[0];
19147  }
19148  goto __pyx_L6_skip;
19149  __pyx_L5_argtuple_error:;
19150  __Pyx_RaiseArgtupleInvalid("pure", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1489, __pyx_L3_error)
19151  __pyx_L6_skip:;
19152  goto __pyx_L4_argument_unpacking_done;
19153  __pyx_L3_error:;
19154  {
19155  Py_ssize_t __pyx_temp;
19156  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19157  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19158  }
19159  }
19160  __Pyx_AddTraceback("PyClical.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
19161  __Pyx_RefNannyFinishContext();
19162  return NULL;
19163  __pyx_L4_argument_unpacking_done:;
19164  __pyx_r = __pyx_pf_8PyClical_24pure(__pyx_self, __pyx_v_obj);
19165 
19166  /* function exit code */
19167  {
19168  Py_ssize_t __pyx_temp;
19169  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19170  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19171  }
19172  }
19173  __Pyx_RefNannyFinishContext();
19174  return __pyx_r;
19175  }
19176 
19177  static PyObject *__pyx_pf_8PyClical_24pure(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
19178  PyObject *__pyx_r = NULL;
19179  __Pyx_RefNannyDeclarations
19180  PyObject *__pyx_t_1 = NULL;
19181  int __pyx_lineno = 0;
19182  const char *__pyx_filename = NULL;
19183  int __pyx_clineno = 0;
19184  __Pyx_RefNannySetupContext("pure", 1);
19185  __Pyx_XDECREF(__pyx_r);
19186  __pyx_t_1 = __pyx_f_8PyClical_pure(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1489, __pyx_L1_error)
19187  __Pyx_GOTREF(__pyx_t_1);
19188  __pyx_r = __pyx_t_1;
19189  __pyx_t_1 = 0;
19190  goto __pyx_L0;
19191 
19192  /* function exit code */
19193  __pyx_L1_error:;
19194  __Pyx_XDECREF(__pyx_t_1);
19195  __Pyx_AddTraceback("PyClical.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
19196  __pyx_r = NULL;
19197  __pyx_L0:;
19198  __Pyx_XGIVEREF(__pyx_r);
19199  __Pyx_RefNannyFinishContext();
19200  return __pyx_r;
19201  }
19202 
19203  /* "PyClical.pyx":1500
19204  * return clifford(obj).pure()
19205  *
19206  * cpdef inline even(obj): # <<<<<<<<<<<<<<
19207  * """
19208  * Even part of multivector, sum of even grade terms.
19209  */
19210 
19211  static PyObject *__pyx_pw_8PyClical_27even(PyObject *__pyx_self,
19212 #if CYTHON_METH_FASTCALL
19213 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19214 #else
19215 PyObject *__pyx_args, PyObject *__pyx_kwds
19216 #endif
19217 ); /*proto*/
19218  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_even(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
19219  PyObject *__pyx_r = NULL;
19220  __Pyx_RefNannyDeclarations
19221  PyObject *__pyx_t_1 = NULL;
19222  PyObject *__pyx_t_2 = NULL;
19223  PyObject *__pyx_t_3 = NULL;
19224  int __pyx_t_4;
19225  int __pyx_lineno = 0;
19226  const char *__pyx_filename = NULL;
19227  int __pyx_clineno = 0;
19228  __Pyx_RefNannySetupContext("even", 1);
19229 
19230  /* "PyClical.pyx":1507
19231  * 1+{1,2}
19232  * """
19233  * return clifford(obj).even() # <<<<<<<<<<<<<<
19234  *
19235  * cpdef inline odd(obj):
19236  */
19237  __Pyx_XDECREF(__pyx_r);
19238  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1507, __pyx_L1_error)
19239  __Pyx_GOTREF(__pyx_t_2);
19240  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_even); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1507, __pyx_L1_error)
19241  __Pyx_GOTREF(__pyx_t_3);
19242  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19243  __pyx_t_2 = NULL;
19244  __pyx_t_4 = 0;
19245  #if CYTHON_UNPACK_METHODS
19246  if (likely(PyMethod_Check(__pyx_t_3))) {
19247  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
19248  if (likely(__pyx_t_2)) {
19249  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
19250  __Pyx_INCREF(__pyx_t_2);
19251  __Pyx_INCREF(function);
19252  __Pyx_DECREF_SET(__pyx_t_3, function);
19253  __pyx_t_4 = 1;
19254  }
19255  }
19256  #endif
19257  {
19258  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
19259  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
19260  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19261  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1507, __pyx_L1_error)
19262  __Pyx_GOTREF(__pyx_t_1);
19263  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19264  }
19265  __pyx_r = __pyx_t_1;
19266  __pyx_t_1 = 0;
19267  goto __pyx_L0;
19268 
19269  /* "PyClical.pyx":1500
19270  * return clifford(obj).pure()
19271  *
19272  * cpdef inline even(obj): # <<<<<<<<<<<<<<
19273  * """
19274  * Even part of multivector, sum of even grade terms.
19275  */
19276 
19277  /* function exit code */
19278  __pyx_L1_error:;
19279  __Pyx_XDECREF(__pyx_t_1);
19280  __Pyx_XDECREF(__pyx_t_2);
19281  __Pyx_XDECREF(__pyx_t_3);
19282  __Pyx_AddTraceback("PyClical.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
19283  __pyx_r = 0;
19284  __pyx_L0:;
19285  __Pyx_XGIVEREF(__pyx_r);
19286  __Pyx_RefNannyFinishContext();
19287  return __pyx_r;
19288  }
19289 
19290  /* Python wrapper */
19291  static PyObject *__pyx_pw_8PyClical_27even(PyObject *__pyx_self,
19292 #if CYTHON_METH_FASTCALL
19293 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19294 #else
19295 PyObject *__pyx_args, PyObject *__pyx_kwds
19296 #endif
19297 ); /*proto*/
19298  PyDoc_STRVAR(__pyx_doc_8PyClical_26even, "\n Even part of multivector, sum of even grade terms.\n\n >>> print(even(clifford(\"1+{1}+{1,2}\")))\n 1+{1,2}\n ");
19299  static PyMethodDef __pyx_mdef_8PyClical_27even = {"even", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_27even, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_26even};
19300  static PyObject *__pyx_pw_8PyClical_27even(PyObject *__pyx_self,
19301 #if CYTHON_METH_FASTCALL
19302 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19303 #else
19304 PyObject *__pyx_args, PyObject *__pyx_kwds
19305 #endif
19306 ) {
19307  PyObject *__pyx_v_obj = 0;
19308  #if !CYTHON_METH_FASTCALL
19309  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
19310  #endif
19311  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
19312  PyObject* values[1] = {0};
19313  int __pyx_lineno = 0;
19314  const char *__pyx_filename = NULL;
19315  int __pyx_clineno = 0;
19316  PyObject *__pyx_r = 0;
19317  __Pyx_RefNannyDeclarations
19318  __Pyx_RefNannySetupContext("even (wrapper)", 0);
19319  #if !CYTHON_METH_FASTCALL
19320  #if CYTHON_ASSUME_SAFE_MACROS
19321  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
19322  #else
19323  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
19324  #endif
19325  #endif
19326  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
19327  {
19328  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
19329  if (__pyx_kwds) {
19330  Py_ssize_t kw_args;
19331  switch (__pyx_nargs) {
19332  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19333  CYTHON_FALLTHROUGH;
19334  case 0: break;
19335  default: goto __pyx_L5_argtuple_error;
19336  }
19337  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
19338  switch (__pyx_nargs) {
19339  case 0:
19340  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
19341  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
19342  kw_args--;
19343  }
19344  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1500, __pyx_L3_error)
19345  else goto __pyx_L5_argtuple_error;
19346  }
19347  if (unlikely(kw_args > 0)) {
19348  const Py_ssize_t kwd_pos_args = __pyx_nargs;
19349  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "even") < 0)) __PYX_ERR(0, 1500, __pyx_L3_error)
19350  }
19351  } else if (unlikely(__pyx_nargs != 1)) {
19352  goto __pyx_L5_argtuple_error;
19353  } else {
19354  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19355  }
19356  __pyx_v_obj = values[0];
19357  }
19358  goto __pyx_L6_skip;
19359  __pyx_L5_argtuple_error:;
19360  __Pyx_RaiseArgtupleInvalid("even", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1500, __pyx_L3_error)
19361  __pyx_L6_skip:;
19362  goto __pyx_L4_argument_unpacking_done;
19363  __pyx_L3_error:;
19364  {
19365  Py_ssize_t __pyx_temp;
19366  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19367  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19368  }
19369  }
19370  __Pyx_AddTraceback("PyClical.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
19371  __Pyx_RefNannyFinishContext();
19372  return NULL;
19373  __pyx_L4_argument_unpacking_done:;
19374  __pyx_r = __pyx_pf_8PyClical_26even(__pyx_self, __pyx_v_obj);
19375 
19376  /* function exit code */
19377  {
19378  Py_ssize_t __pyx_temp;
19379  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19380  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19381  }
19382  }
19383  __Pyx_RefNannyFinishContext();
19384  return __pyx_r;
19385  }
19386 
19387  static PyObject *__pyx_pf_8PyClical_26even(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
19388  PyObject *__pyx_r = NULL;
19389  __Pyx_RefNannyDeclarations
19390  PyObject *__pyx_t_1 = NULL;
19391  int __pyx_lineno = 0;
19392  const char *__pyx_filename = NULL;
19393  int __pyx_clineno = 0;
19394  __Pyx_RefNannySetupContext("even", 1);
19395  __Pyx_XDECREF(__pyx_r);
19396  __pyx_t_1 = __pyx_f_8PyClical_even(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1500, __pyx_L1_error)
19397  __Pyx_GOTREF(__pyx_t_1);
19398  __pyx_r = __pyx_t_1;
19399  __pyx_t_1 = 0;
19400  goto __pyx_L0;
19401 
19402  /* function exit code */
19403  __pyx_L1_error:;
19404  __Pyx_XDECREF(__pyx_t_1);
19405  __Pyx_AddTraceback("PyClical.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
19406  __pyx_r = NULL;
19407  __pyx_L0:;
19408  __Pyx_XGIVEREF(__pyx_r);
19409  __Pyx_RefNannyFinishContext();
19410  return __pyx_r;
19411  }
19412 
19413  /* "PyClical.pyx":1509
19414  * return clifford(obj).even()
19415  *
19416  * cpdef inline odd(obj): # <<<<<<<<<<<<<<
19417  * """
19418  * Odd part of multivector, sum of odd grade terms.
19419  */
19420 
19421  static PyObject *__pyx_pw_8PyClical_29odd(PyObject *__pyx_self,
19422 #if CYTHON_METH_FASTCALL
19423 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19424 #else
19425 PyObject *__pyx_args, PyObject *__pyx_kwds
19426 #endif
19427 ); /*proto*/
19428  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_odd(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
19429  PyObject *__pyx_r = NULL;
19430  __Pyx_RefNannyDeclarations
19431  PyObject *__pyx_t_1 = NULL;
19432  PyObject *__pyx_t_2 = NULL;
19433  PyObject *__pyx_t_3 = NULL;
19434  int __pyx_t_4;
19435  int __pyx_lineno = 0;
19436  const char *__pyx_filename = NULL;
19437  int __pyx_clineno = 0;
19438  __Pyx_RefNannySetupContext("odd", 1);
19439 
19440  /* "PyClical.pyx":1516
19441  * {1}
19442  * """
19443  * return clifford(obj).odd() # <<<<<<<<<<<<<<
19444  *
19445  * cpdef inline involute(obj):
19446  */
19447  __Pyx_XDECREF(__pyx_r);
19448  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1516, __pyx_L1_error)
19449  __Pyx_GOTREF(__pyx_t_2);
19450  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_odd); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1516, __pyx_L1_error)
19451  __Pyx_GOTREF(__pyx_t_3);
19452  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19453  __pyx_t_2 = NULL;
19454  __pyx_t_4 = 0;
19455  #if CYTHON_UNPACK_METHODS
19456  if (likely(PyMethod_Check(__pyx_t_3))) {
19457  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
19458  if (likely(__pyx_t_2)) {
19459  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
19460  __Pyx_INCREF(__pyx_t_2);
19461  __Pyx_INCREF(function);
19462  __Pyx_DECREF_SET(__pyx_t_3, function);
19463  __pyx_t_4 = 1;
19464  }
19465  }
19466  #endif
19467  {
19468  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
19469  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
19470  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19471  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1516, __pyx_L1_error)
19472  __Pyx_GOTREF(__pyx_t_1);
19473  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19474  }
19475  __pyx_r = __pyx_t_1;
19476  __pyx_t_1 = 0;
19477  goto __pyx_L0;
19478 
19479  /* "PyClical.pyx":1509
19480  * return clifford(obj).even()
19481  *
19482  * cpdef inline odd(obj): # <<<<<<<<<<<<<<
19483  * """
19484  * Odd part of multivector, sum of odd grade terms.
19485  */
19486 
19487  /* function exit code */
19488  __pyx_L1_error:;
19489  __Pyx_XDECREF(__pyx_t_1);
19490  __Pyx_XDECREF(__pyx_t_2);
19491  __Pyx_XDECREF(__pyx_t_3);
19492  __Pyx_AddTraceback("PyClical.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
19493  __pyx_r = 0;
19494  __pyx_L0:;
19495  __Pyx_XGIVEREF(__pyx_r);
19496  __Pyx_RefNannyFinishContext();
19497  return __pyx_r;
19498  }
19499 
19500  /* Python wrapper */
19501  static PyObject *__pyx_pw_8PyClical_29odd(PyObject *__pyx_self,
19502 #if CYTHON_METH_FASTCALL
19503 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19504 #else
19505 PyObject *__pyx_args, PyObject *__pyx_kwds
19506 #endif
19507 ); /*proto*/
19508  PyDoc_STRVAR(__pyx_doc_8PyClical_28odd, "\n Odd part of multivector, sum of odd grade terms.\n\n >>> print(odd(clifford(\"1+{1}+{1,2}\")))\n {1}\n ");
19509  static PyMethodDef __pyx_mdef_8PyClical_29odd = {"odd", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_29odd, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_28odd};
19510  static PyObject *__pyx_pw_8PyClical_29odd(PyObject *__pyx_self,
19511 #if CYTHON_METH_FASTCALL
19512 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19513 #else
19514 PyObject *__pyx_args, PyObject *__pyx_kwds
19515 #endif
19516 ) {
19517  PyObject *__pyx_v_obj = 0;
19518  #if !CYTHON_METH_FASTCALL
19519  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
19520  #endif
19521  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
19522  PyObject* values[1] = {0};
19523  int __pyx_lineno = 0;
19524  const char *__pyx_filename = NULL;
19525  int __pyx_clineno = 0;
19526  PyObject *__pyx_r = 0;
19527  __Pyx_RefNannyDeclarations
19528  __Pyx_RefNannySetupContext("odd (wrapper)", 0);
19529  #if !CYTHON_METH_FASTCALL
19530  #if CYTHON_ASSUME_SAFE_MACROS
19531  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
19532  #else
19533  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
19534  #endif
19535  #endif
19536  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
19537  {
19538  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
19539  if (__pyx_kwds) {
19540  Py_ssize_t kw_args;
19541  switch (__pyx_nargs) {
19542  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19543  CYTHON_FALLTHROUGH;
19544  case 0: break;
19545  default: goto __pyx_L5_argtuple_error;
19546  }
19547  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
19548  switch (__pyx_nargs) {
19549  case 0:
19550  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
19551  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
19552  kw_args--;
19553  }
19554  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1509, __pyx_L3_error)
19555  else goto __pyx_L5_argtuple_error;
19556  }
19557  if (unlikely(kw_args > 0)) {
19558  const Py_ssize_t kwd_pos_args = __pyx_nargs;
19559  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "odd") < 0)) __PYX_ERR(0, 1509, __pyx_L3_error)
19560  }
19561  } else if (unlikely(__pyx_nargs != 1)) {
19562  goto __pyx_L5_argtuple_error;
19563  } else {
19564  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19565  }
19566  __pyx_v_obj = values[0];
19567  }
19568  goto __pyx_L6_skip;
19569  __pyx_L5_argtuple_error:;
19570  __Pyx_RaiseArgtupleInvalid("odd", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1509, __pyx_L3_error)
19571  __pyx_L6_skip:;
19572  goto __pyx_L4_argument_unpacking_done;
19573  __pyx_L3_error:;
19574  {
19575  Py_ssize_t __pyx_temp;
19576  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19577  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19578  }
19579  }
19580  __Pyx_AddTraceback("PyClical.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
19581  __Pyx_RefNannyFinishContext();
19582  return NULL;
19583  __pyx_L4_argument_unpacking_done:;
19584  __pyx_r = __pyx_pf_8PyClical_28odd(__pyx_self, __pyx_v_obj);
19585 
19586  /* function exit code */
19587  {
19588  Py_ssize_t __pyx_temp;
19589  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19590  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19591  }
19592  }
19593  __Pyx_RefNannyFinishContext();
19594  return __pyx_r;
19595  }
19596 
19597  static PyObject *__pyx_pf_8PyClical_28odd(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
19598  PyObject *__pyx_r = NULL;
19599  __Pyx_RefNannyDeclarations
19600  PyObject *__pyx_t_1 = NULL;
19601  int __pyx_lineno = 0;
19602  const char *__pyx_filename = NULL;
19603  int __pyx_clineno = 0;
19604  __Pyx_RefNannySetupContext("odd", 1);
19605  __Pyx_XDECREF(__pyx_r);
19606  __pyx_t_1 = __pyx_f_8PyClical_odd(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1509, __pyx_L1_error)
19607  __Pyx_GOTREF(__pyx_t_1);
19608  __pyx_r = __pyx_t_1;
19609  __pyx_t_1 = 0;
19610  goto __pyx_L0;
19611 
19612  /* function exit code */
19613  __pyx_L1_error:;
19614  __Pyx_XDECREF(__pyx_t_1);
19615  __Pyx_AddTraceback("PyClical.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
19616  __pyx_r = NULL;
19617  __pyx_L0:;
19618  __Pyx_XGIVEREF(__pyx_r);
19619  __Pyx_RefNannyFinishContext();
19620  return __pyx_r;
19621  }
19622 
19623  /* "PyClical.pyx":1518
19624  * return clifford(obj).odd()
19625  *
19626  * cpdef inline involute(obj): # <<<<<<<<<<<<<<
19627  * """
19628  * Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})
19629  */
19630 
19631  static PyObject *__pyx_pw_8PyClical_31involute(PyObject *__pyx_self,
19632 #if CYTHON_METH_FASTCALL
19633 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19634 #else
19635 PyObject *__pyx_args, PyObject *__pyx_kwds
19636 #endif
19637 ); /*proto*/
19638  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_involute(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
19639  PyObject *__pyx_r = NULL;
19640  __Pyx_RefNannyDeclarations
19641  PyObject *__pyx_t_1 = NULL;
19642  PyObject *__pyx_t_2 = NULL;
19643  PyObject *__pyx_t_3 = NULL;
19644  int __pyx_t_4;
19645  int __pyx_lineno = 0;
19646  const char *__pyx_filename = NULL;
19647  int __pyx_clineno = 0;
19648  __Pyx_RefNannySetupContext("involute", 1);
19649 
19650  /* "PyClical.pyx":1531
19651  * 1-{1}+{1,2}
19652  * """
19653  * return clifford(obj).involute() # <<<<<<<<<<<<<<
19654  *
19655  * cpdef inline reverse(obj):
19656  */
19657  __Pyx_XDECREF(__pyx_r);
19658  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1531, __pyx_L1_error)
19659  __Pyx_GOTREF(__pyx_t_2);
19660  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_involute); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1531, __pyx_L1_error)
19661  __Pyx_GOTREF(__pyx_t_3);
19662  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19663  __pyx_t_2 = NULL;
19664  __pyx_t_4 = 0;
19665  #if CYTHON_UNPACK_METHODS
19666  if (likely(PyMethod_Check(__pyx_t_3))) {
19667  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
19668  if (likely(__pyx_t_2)) {
19669  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
19670  __Pyx_INCREF(__pyx_t_2);
19671  __Pyx_INCREF(function);
19672  __Pyx_DECREF_SET(__pyx_t_3, function);
19673  __pyx_t_4 = 1;
19674  }
19675  }
19676  #endif
19677  {
19678  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
19679  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
19680  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19681  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L1_error)
19682  __Pyx_GOTREF(__pyx_t_1);
19683  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19684  }
19685  __pyx_r = __pyx_t_1;
19686  __pyx_t_1 = 0;
19687  goto __pyx_L0;
19688 
19689  /* "PyClical.pyx":1518
19690  * return clifford(obj).odd()
19691  *
19692  * cpdef inline involute(obj): # <<<<<<<<<<<<<<
19693  * """
19694  * Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})
19695  */
19696 
19697  /* function exit code */
19698  __pyx_L1_error:;
19699  __Pyx_XDECREF(__pyx_t_1);
19700  __Pyx_XDECREF(__pyx_t_2);
19701  __Pyx_XDECREF(__pyx_t_3);
19702  __Pyx_AddTraceback("PyClical.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
19703  __pyx_r = 0;
19704  __pyx_L0:;
19705  __Pyx_XGIVEREF(__pyx_r);
19706  __Pyx_RefNannyFinishContext();
19707  return __pyx_r;
19708  }
19709 
19710  /* Python wrapper */
19711  static PyObject *__pyx_pw_8PyClical_31involute(PyObject *__pyx_self,
19712 #if CYTHON_METH_FASTCALL
19713 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19714 #else
19715 PyObject *__pyx_args, PyObject *__pyx_kwds
19716 #endif
19717 ); /*proto*/
19718  PyDoc_STRVAR(__pyx_doc_8PyClical_30involute, "\n Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})\n\n >>> print(involute(clifford(\"{1}\")))\n -{1}\n >>> print(involute(clifford(\"{2}\") * clifford(\"{1}\")))\n -{1,2}\n >>> print(involute(clifford(\"{1}\") * clifford(\"{2}\")))\n {1,2}\n >>> print(involute(clifford(\"1+{1}+{1,2}\")))\n 1-{1}+{1,2}\n ");
19719  static PyMethodDef __pyx_mdef_8PyClical_31involute = {"involute", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_31involute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_30involute};
19720  static PyObject *__pyx_pw_8PyClical_31involute(PyObject *__pyx_self,
19721 #if CYTHON_METH_FASTCALL
19722 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19723 #else
19724 PyObject *__pyx_args, PyObject *__pyx_kwds
19725 #endif
19726 ) {
19727  PyObject *__pyx_v_obj = 0;
19728  #if !CYTHON_METH_FASTCALL
19729  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
19730  #endif
19731  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
19732  PyObject* values[1] = {0};
19733  int __pyx_lineno = 0;
19734  const char *__pyx_filename = NULL;
19735  int __pyx_clineno = 0;
19736  PyObject *__pyx_r = 0;
19737  __Pyx_RefNannyDeclarations
19738  __Pyx_RefNannySetupContext("involute (wrapper)", 0);
19739  #if !CYTHON_METH_FASTCALL
19740  #if CYTHON_ASSUME_SAFE_MACROS
19741  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
19742  #else
19743  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
19744  #endif
19745  #endif
19746  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
19747  {
19748  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
19749  if (__pyx_kwds) {
19750  Py_ssize_t kw_args;
19751  switch (__pyx_nargs) {
19752  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19753  CYTHON_FALLTHROUGH;
19754  case 0: break;
19755  default: goto __pyx_L5_argtuple_error;
19756  }
19757  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
19758  switch (__pyx_nargs) {
19759  case 0:
19760  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
19761  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
19762  kw_args--;
19763  }
19764  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1518, __pyx_L3_error)
19765  else goto __pyx_L5_argtuple_error;
19766  }
19767  if (unlikely(kw_args > 0)) {
19768  const Py_ssize_t kwd_pos_args = __pyx_nargs;
19769  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "involute") < 0)) __PYX_ERR(0, 1518, __pyx_L3_error)
19770  }
19771  } else if (unlikely(__pyx_nargs != 1)) {
19772  goto __pyx_L5_argtuple_error;
19773  } else {
19774  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19775  }
19776  __pyx_v_obj = values[0];
19777  }
19778  goto __pyx_L6_skip;
19779  __pyx_L5_argtuple_error:;
19780  __Pyx_RaiseArgtupleInvalid("involute", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1518, __pyx_L3_error)
19781  __pyx_L6_skip:;
19782  goto __pyx_L4_argument_unpacking_done;
19783  __pyx_L3_error:;
19784  {
19785  Py_ssize_t __pyx_temp;
19786  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19787  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19788  }
19789  }
19790  __Pyx_AddTraceback("PyClical.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
19791  __Pyx_RefNannyFinishContext();
19792  return NULL;
19793  __pyx_L4_argument_unpacking_done:;
19794  __pyx_r = __pyx_pf_8PyClical_30involute(__pyx_self, __pyx_v_obj);
19795 
19796  /* function exit code */
19797  {
19798  Py_ssize_t __pyx_temp;
19799  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19800  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19801  }
19802  }
19803  __Pyx_RefNannyFinishContext();
19804  return __pyx_r;
19805  }
19806 
19807  static PyObject *__pyx_pf_8PyClical_30involute(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
19808  PyObject *__pyx_r = NULL;
19809  __Pyx_RefNannyDeclarations
19810  PyObject *__pyx_t_1 = NULL;
19811  int __pyx_lineno = 0;
19812  const char *__pyx_filename = NULL;
19813  int __pyx_clineno = 0;
19814  __Pyx_RefNannySetupContext("involute", 1);
19815  __Pyx_XDECREF(__pyx_r);
19816  __pyx_t_1 = __pyx_f_8PyClical_involute(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1518, __pyx_L1_error)
19817  __Pyx_GOTREF(__pyx_t_1);
19818  __pyx_r = __pyx_t_1;
19819  __pyx_t_1 = 0;
19820  goto __pyx_L0;
19821 
19822  /* function exit code */
19823  __pyx_L1_error:;
19824  __Pyx_XDECREF(__pyx_t_1);
19825  __Pyx_AddTraceback("PyClical.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
19826  __pyx_r = NULL;
19827  __pyx_L0:;
19828  __Pyx_XGIVEREF(__pyx_r);
19829  __Pyx_RefNannyFinishContext();
19830  return __pyx_r;
19831  }
19832 
19833  /* "PyClical.pyx":1533
19834  * return clifford(obj).involute()
19835  *
19836  * cpdef inline reverse(obj): # <<<<<<<<<<<<<<
19837  * """
19838  * Reversion, eg. {1}*{2} -> {2}*{1}
19839  */
19840 
19841  static PyObject *__pyx_pw_8PyClical_33reverse(PyObject *__pyx_self,
19842 #if CYTHON_METH_FASTCALL
19843 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19844 #else
19845 PyObject *__pyx_args, PyObject *__pyx_kwds
19846 #endif
19847 ); /*proto*/
19848  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_reverse(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
19849  PyObject *__pyx_r = NULL;
19850  __Pyx_RefNannyDeclarations
19851  PyObject *__pyx_t_1 = NULL;
19852  PyObject *__pyx_t_2 = NULL;
19853  PyObject *__pyx_t_3 = NULL;
19854  int __pyx_t_4;
19855  int __pyx_lineno = 0;
19856  const char *__pyx_filename = NULL;
19857  int __pyx_clineno = 0;
19858  __Pyx_RefNannySetupContext("reverse", 1);
19859 
19860  /* "PyClical.pyx":1546
19861  * 1+{1}-{1,2}
19862  * """
19863  * return clifford(obj).reverse() # <<<<<<<<<<<<<<
19864  *
19865  * cpdef inline conj(obj):
19866  */
19867  __Pyx_XDECREF(__pyx_r);
19868  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1546, __pyx_L1_error)
19869  __Pyx_GOTREF(__pyx_t_2);
19870  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reverse); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1546, __pyx_L1_error)
19871  __Pyx_GOTREF(__pyx_t_3);
19872  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19873  __pyx_t_2 = NULL;
19874  __pyx_t_4 = 0;
19875  #if CYTHON_UNPACK_METHODS
19876  if (likely(PyMethod_Check(__pyx_t_3))) {
19877  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
19878  if (likely(__pyx_t_2)) {
19879  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
19880  __Pyx_INCREF(__pyx_t_2);
19881  __Pyx_INCREF(function);
19882  __Pyx_DECREF_SET(__pyx_t_3, function);
19883  __pyx_t_4 = 1;
19884  }
19885  }
19886  #endif
19887  {
19888  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
19889  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
19890  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19891  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error)
19892  __Pyx_GOTREF(__pyx_t_1);
19893  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19894  }
19895  __pyx_r = __pyx_t_1;
19896  __pyx_t_1 = 0;
19897  goto __pyx_L0;
19898 
19899  /* "PyClical.pyx":1533
19900  * return clifford(obj).involute()
19901  *
19902  * cpdef inline reverse(obj): # <<<<<<<<<<<<<<
19903  * """
19904  * Reversion, eg. {1}*{2} -> {2}*{1}
19905  */
19906 
19907  /* function exit code */
19908  __pyx_L1_error:;
19909  __Pyx_XDECREF(__pyx_t_1);
19910  __Pyx_XDECREF(__pyx_t_2);
19911  __Pyx_XDECREF(__pyx_t_3);
19912  __Pyx_AddTraceback("PyClical.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
19913  __pyx_r = 0;
19914  __pyx_L0:;
19915  __Pyx_XGIVEREF(__pyx_r);
19916  __Pyx_RefNannyFinishContext();
19917  return __pyx_r;
19918  }
19919 
19920  /* Python wrapper */
19921  static PyObject *__pyx_pw_8PyClical_33reverse(PyObject *__pyx_self,
19922 #if CYTHON_METH_FASTCALL
19923 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19924 #else
19925 PyObject *__pyx_args, PyObject *__pyx_kwds
19926 #endif
19927 ); /*proto*/
19928  PyDoc_STRVAR(__pyx_doc_8PyClical_32reverse, "\n Reversion, eg. {1}*{2} -> {2}*{1}\n\n >>> print(reverse(clifford(\"{1}\")))\n {1}\n >>> print(reverse(clifford(\"{2}\") * clifford(\"{1}\")))\n {1,2}\n >>> print(reverse(clifford(\"{1}\") * clifford(\"{2}\")))\n -{1,2}\n >>> print(reverse(clifford(\"1+{1}+{1,2}\")))\n 1+{1}-{1,2}\n ");
19929  static PyMethodDef __pyx_mdef_8PyClical_33reverse = {"reverse", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_33reverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_32reverse};
19930  static PyObject *__pyx_pw_8PyClical_33reverse(PyObject *__pyx_self,
19931 #if CYTHON_METH_FASTCALL
19932 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
19933 #else
19934 PyObject *__pyx_args, PyObject *__pyx_kwds
19935 #endif
19936 ) {
19937  PyObject *__pyx_v_obj = 0;
19938  #if !CYTHON_METH_FASTCALL
19939  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
19940  #endif
19941  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
19942  PyObject* values[1] = {0};
19943  int __pyx_lineno = 0;
19944  const char *__pyx_filename = NULL;
19945  int __pyx_clineno = 0;
19946  PyObject *__pyx_r = 0;
19947  __Pyx_RefNannyDeclarations
19948  __Pyx_RefNannySetupContext("reverse (wrapper)", 0);
19949  #if !CYTHON_METH_FASTCALL
19950  #if CYTHON_ASSUME_SAFE_MACROS
19951  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
19952  #else
19953  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
19954  #endif
19955  #endif
19956  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
19957  {
19958  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
19959  if (__pyx_kwds) {
19960  Py_ssize_t kw_args;
19961  switch (__pyx_nargs) {
19962  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19963  CYTHON_FALLTHROUGH;
19964  case 0: break;
19965  default: goto __pyx_L5_argtuple_error;
19966  }
19967  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
19968  switch (__pyx_nargs) {
19969  case 0:
19970  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
19971  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
19972  kw_args--;
19973  }
19974  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1533, __pyx_L3_error)
19975  else goto __pyx_L5_argtuple_error;
19976  }
19977  if (unlikely(kw_args > 0)) {
19978  const Py_ssize_t kwd_pos_args = __pyx_nargs;
19979  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "reverse") < 0)) __PYX_ERR(0, 1533, __pyx_L3_error)
19980  }
19981  } else if (unlikely(__pyx_nargs != 1)) {
19982  goto __pyx_L5_argtuple_error;
19983  } else {
19984  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
19985  }
19986  __pyx_v_obj = values[0];
19987  }
19988  goto __pyx_L6_skip;
19989  __pyx_L5_argtuple_error:;
19990  __Pyx_RaiseArgtupleInvalid("reverse", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1533, __pyx_L3_error)
19991  __pyx_L6_skip:;
19992  goto __pyx_L4_argument_unpacking_done;
19993  __pyx_L3_error:;
19994  {
19995  Py_ssize_t __pyx_temp;
19996  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
19997  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
19998  }
19999  }
20000  __Pyx_AddTraceback("PyClical.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
20001  __Pyx_RefNannyFinishContext();
20002  return NULL;
20003  __pyx_L4_argument_unpacking_done:;
20004  __pyx_r = __pyx_pf_8PyClical_32reverse(__pyx_self, __pyx_v_obj);
20005 
20006  /* function exit code */
20007  {
20008  Py_ssize_t __pyx_temp;
20009  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20010  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20011  }
20012  }
20013  __Pyx_RefNannyFinishContext();
20014  return __pyx_r;
20015  }
20016 
20017  static PyObject *__pyx_pf_8PyClical_32reverse(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
20018  PyObject *__pyx_r = NULL;
20019  __Pyx_RefNannyDeclarations
20020  PyObject *__pyx_t_1 = NULL;
20021  int __pyx_lineno = 0;
20022  const char *__pyx_filename = NULL;
20023  int __pyx_clineno = 0;
20024  __Pyx_RefNannySetupContext("reverse", 1);
20025  __Pyx_XDECREF(__pyx_r);
20026  __pyx_t_1 = __pyx_f_8PyClical_reverse(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1533, __pyx_L1_error)
20027  __Pyx_GOTREF(__pyx_t_1);
20028  __pyx_r = __pyx_t_1;
20029  __pyx_t_1 = 0;
20030  goto __pyx_L0;
20031 
20032  /* function exit code */
20033  __pyx_L1_error:;
20034  __Pyx_XDECREF(__pyx_t_1);
20035  __Pyx_AddTraceback("PyClical.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
20036  __pyx_r = NULL;
20037  __pyx_L0:;
20038  __Pyx_XGIVEREF(__pyx_r);
20039  __Pyx_RefNannyFinishContext();
20040  return __pyx_r;
20041  }
20042 
20043  /* "PyClical.pyx":1548
20044  * return clifford(obj).reverse()
20045  *
20046  * cpdef inline conj(obj): # <<<<<<<<<<<<<<
20047  * """
20048  * Conjugation, reverse o involute == involute o reverse.
20049  */
20050 
20051  static PyObject *__pyx_pw_8PyClical_35conj(PyObject *__pyx_self,
20052 #if CYTHON_METH_FASTCALL
20053 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20054 #else
20055 PyObject *__pyx_args, PyObject *__pyx_kwds
20056 #endif
20057 ); /*proto*/
20058  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_conj(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
20059  PyObject *__pyx_r = NULL;
20060  __Pyx_RefNannyDeclarations
20061  PyObject *__pyx_t_1 = NULL;
20062  PyObject *__pyx_t_2 = NULL;
20063  PyObject *__pyx_t_3 = NULL;
20064  int __pyx_t_4;
20065  int __pyx_lineno = 0;
20066  const char *__pyx_filename = NULL;
20067  int __pyx_clineno = 0;
20068  __Pyx_RefNannySetupContext("conj", 1);
20069 
20070  /* "PyClical.pyx":1561
20071  * 1-{1}-{1,2}
20072  * """
20073  * return clifford(obj).conj() # <<<<<<<<<<<<<<
20074  *
20075  * cpdef inline quad(obj):
20076  */
20077  __Pyx_XDECREF(__pyx_r);
20078  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1561, __pyx_L1_error)
20079  __Pyx_GOTREF(__pyx_t_2);
20080  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_conj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1561, __pyx_L1_error)
20081  __Pyx_GOTREF(__pyx_t_3);
20082  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20083  __pyx_t_2 = NULL;
20084  __pyx_t_4 = 0;
20085  #if CYTHON_UNPACK_METHODS
20086  if (likely(PyMethod_Check(__pyx_t_3))) {
20087  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
20088  if (likely(__pyx_t_2)) {
20089  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20090  __Pyx_INCREF(__pyx_t_2);
20091  __Pyx_INCREF(function);
20092  __Pyx_DECREF_SET(__pyx_t_3, function);
20093  __pyx_t_4 = 1;
20094  }
20095  }
20096  #endif
20097  {
20098  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
20099  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
20100  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20101  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1561, __pyx_L1_error)
20102  __Pyx_GOTREF(__pyx_t_1);
20103  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20104  }
20105  __pyx_r = __pyx_t_1;
20106  __pyx_t_1 = 0;
20107  goto __pyx_L0;
20108 
20109  /* "PyClical.pyx":1548
20110  * return clifford(obj).reverse()
20111  *
20112  * cpdef inline conj(obj): # <<<<<<<<<<<<<<
20113  * """
20114  * Conjugation, reverse o involute == involute o reverse.
20115  */
20116 
20117  /* function exit code */
20118  __pyx_L1_error:;
20119  __Pyx_XDECREF(__pyx_t_1);
20120  __Pyx_XDECREF(__pyx_t_2);
20121  __Pyx_XDECREF(__pyx_t_3);
20122  __Pyx_AddTraceback("PyClical.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
20123  __pyx_r = 0;
20124  __pyx_L0:;
20125  __Pyx_XGIVEREF(__pyx_r);
20126  __Pyx_RefNannyFinishContext();
20127  return __pyx_r;
20128  }
20129 
20130  /* Python wrapper */
20131  static PyObject *__pyx_pw_8PyClical_35conj(PyObject *__pyx_self,
20132 #if CYTHON_METH_FASTCALL
20133 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20134 #else
20135 PyObject *__pyx_args, PyObject *__pyx_kwds
20136 #endif
20137 ); /*proto*/
20138  PyDoc_STRVAR(__pyx_doc_8PyClical_34conj, "\n Conjugation, reverse o involute == involute o reverse.\n\n >>> print(conj(clifford(\"{1}\")))\n -{1}\n >>> print(conj(clifford(\"{2}\") * clifford(\"{1}\")))\n {1,2}\n >>> print(conj(clifford(\"{1}\") * clifford(\"{2}\")))\n -{1,2}\n >>> print(conj(clifford(\"1+{1}+{1,2}\")))\n 1-{1}-{1,2}\n ");
20139  static PyMethodDef __pyx_mdef_8PyClical_35conj = {"conj", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_35conj, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_34conj};
20140  static PyObject *__pyx_pw_8PyClical_35conj(PyObject *__pyx_self,
20141 #if CYTHON_METH_FASTCALL
20142 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20143 #else
20144 PyObject *__pyx_args, PyObject *__pyx_kwds
20145 #endif
20146 ) {
20147  PyObject *__pyx_v_obj = 0;
20148  #if !CYTHON_METH_FASTCALL
20149  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
20150  #endif
20151  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
20152  PyObject* values[1] = {0};
20153  int __pyx_lineno = 0;
20154  const char *__pyx_filename = NULL;
20155  int __pyx_clineno = 0;
20156  PyObject *__pyx_r = 0;
20157  __Pyx_RefNannyDeclarations
20158  __Pyx_RefNannySetupContext("conj (wrapper)", 0);
20159  #if !CYTHON_METH_FASTCALL
20160  #if CYTHON_ASSUME_SAFE_MACROS
20161  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
20162  #else
20163  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
20164  #endif
20165  #endif
20166  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
20167  {
20168  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
20169  if (__pyx_kwds) {
20170  Py_ssize_t kw_args;
20171  switch (__pyx_nargs) {
20172  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20173  CYTHON_FALLTHROUGH;
20174  case 0: break;
20175  default: goto __pyx_L5_argtuple_error;
20176  }
20177  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
20178  switch (__pyx_nargs) {
20179  case 0:
20180  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
20181  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
20182  kw_args--;
20183  }
20184  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1548, __pyx_L3_error)
20185  else goto __pyx_L5_argtuple_error;
20186  }
20187  if (unlikely(kw_args > 0)) {
20188  const Py_ssize_t kwd_pos_args = __pyx_nargs;
20189  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "conj") < 0)) __PYX_ERR(0, 1548, __pyx_L3_error)
20190  }
20191  } else if (unlikely(__pyx_nargs != 1)) {
20192  goto __pyx_L5_argtuple_error;
20193  } else {
20194  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20195  }
20196  __pyx_v_obj = values[0];
20197  }
20198  goto __pyx_L6_skip;
20199  __pyx_L5_argtuple_error:;
20200  __Pyx_RaiseArgtupleInvalid("conj", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1548, __pyx_L3_error)
20201  __pyx_L6_skip:;
20202  goto __pyx_L4_argument_unpacking_done;
20203  __pyx_L3_error:;
20204  {
20205  Py_ssize_t __pyx_temp;
20206  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20207  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20208  }
20209  }
20210  __Pyx_AddTraceback("PyClical.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
20211  __Pyx_RefNannyFinishContext();
20212  return NULL;
20213  __pyx_L4_argument_unpacking_done:;
20214  __pyx_r = __pyx_pf_8PyClical_34conj(__pyx_self, __pyx_v_obj);
20215 
20216  /* function exit code */
20217  {
20218  Py_ssize_t __pyx_temp;
20219  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20220  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20221  }
20222  }
20223  __Pyx_RefNannyFinishContext();
20224  return __pyx_r;
20225  }
20226 
20227  static PyObject *__pyx_pf_8PyClical_34conj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
20228  PyObject *__pyx_r = NULL;
20229  __Pyx_RefNannyDeclarations
20230  PyObject *__pyx_t_1 = NULL;
20231  int __pyx_lineno = 0;
20232  const char *__pyx_filename = NULL;
20233  int __pyx_clineno = 0;
20234  __Pyx_RefNannySetupContext("conj", 1);
20235  __Pyx_XDECREF(__pyx_r);
20236  __pyx_t_1 = __pyx_f_8PyClical_conj(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
20237  __Pyx_GOTREF(__pyx_t_1);
20238  __pyx_r = __pyx_t_1;
20239  __pyx_t_1 = 0;
20240  goto __pyx_L0;
20241 
20242  /* function exit code */
20243  __pyx_L1_error:;
20244  __Pyx_XDECREF(__pyx_t_1);
20245  __Pyx_AddTraceback("PyClical.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
20246  __pyx_r = NULL;
20247  __pyx_L0:;
20248  __Pyx_XGIVEREF(__pyx_r);
20249  __Pyx_RefNannyFinishContext();
20250  return __pyx_r;
20251  }
20252 
20253  /* "PyClical.pyx":1563
20254  * return clifford(obj).conj()
20255  *
20256  * cpdef inline quad(obj): # <<<<<<<<<<<<<<
20257  * """
20258  * Quadratic form == (rev(x)*x)(0).
20259  */
20260 
20261  static PyObject *__pyx_pw_8PyClical_37quad(PyObject *__pyx_self,
20262 #if CYTHON_METH_FASTCALL
20263 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20264 #else
20265 PyObject *__pyx_args, PyObject *__pyx_kwds
20266 #endif
20267 ); /*proto*/
20268  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_quad(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
20269  PyObject *__pyx_r = NULL;
20270  __Pyx_RefNannyDeclarations
20271  PyObject *__pyx_t_1 = NULL;
20272  PyObject *__pyx_t_2 = NULL;
20273  PyObject *__pyx_t_3 = NULL;
20274  int __pyx_t_4;
20275  int __pyx_lineno = 0;
20276  const char *__pyx_filename = NULL;
20277  int __pyx_clineno = 0;
20278  __Pyx_RefNannySetupContext("quad", 1);
20279 
20280  /* "PyClical.pyx":1572
20281  * 2.0
20282  * """
20283  * return clifford(obj).quad() # <<<<<<<<<<<<<<
20284  *
20285  * cpdef inline norm(obj):
20286  */
20287  __Pyx_XDECREF(__pyx_r);
20288  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
20289  __Pyx_GOTREF(__pyx_t_2);
20290  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_quad); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1572, __pyx_L1_error)
20291  __Pyx_GOTREF(__pyx_t_3);
20292  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20293  __pyx_t_2 = NULL;
20294  __pyx_t_4 = 0;
20295  #if CYTHON_UNPACK_METHODS
20296  if (likely(PyMethod_Check(__pyx_t_3))) {
20297  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
20298  if (likely(__pyx_t_2)) {
20299  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20300  __Pyx_INCREF(__pyx_t_2);
20301  __Pyx_INCREF(function);
20302  __Pyx_DECREF_SET(__pyx_t_3, function);
20303  __pyx_t_4 = 1;
20304  }
20305  }
20306  #endif
20307  {
20308  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
20309  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
20310  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20311  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
20312  __Pyx_GOTREF(__pyx_t_1);
20313  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20314  }
20315  __pyx_r = __pyx_t_1;
20316  __pyx_t_1 = 0;
20317  goto __pyx_L0;
20318 
20319  /* "PyClical.pyx":1563
20320  * return clifford(obj).conj()
20321  *
20322  * cpdef inline quad(obj): # <<<<<<<<<<<<<<
20323  * """
20324  * Quadratic form == (rev(x)*x)(0).
20325  */
20326 
20327  /* function exit code */
20328  __pyx_L1_error:;
20329  __Pyx_XDECREF(__pyx_t_1);
20330  __Pyx_XDECREF(__pyx_t_2);
20331  __Pyx_XDECREF(__pyx_t_3);
20332  __Pyx_AddTraceback("PyClical.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
20333  __pyx_r = 0;
20334  __pyx_L0:;
20335  __Pyx_XGIVEREF(__pyx_r);
20336  __Pyx_RefNannyFinishContext();
20337  return __pyx_r;
20338  }
20339 
20340  /* Python wrapper */
20341  static PyObject *__pyx_pw_8PyClical_37quad(PyObject *__pyx_self,
20342 #if CYTHON_METH_FASTCALL
20343 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20344 #else
20345 PyObject *__pyx_args, PyObject *__pyx_kwds
20346 #endif
20347 ); /*proto*/
20348  PyDoc_STRVAR(__pyx_doc_8PyClical_36quad, "\n Quadratic form == (rev(x)*x)(0).\n\n >>> print(quad(clifford(\"1+{1}+{1,2}\")))\n 3.0\n >>> print(quad(clifford(\"1+{-1}+{1,2}+{1,2,3}\")))\n 2.0\n ");
20349  static PyMethodDef __pyx_mdef_8PyClical_37quad = {"quad", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_37quad, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_36quad};
20350  static PyObject *__pyx_pw_8PyClical_37quad(PyObject *__pyx_self,
20351 #if CYTHON_METH_FASTCALL
20352 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20353 #else
20354 PyObject *__pyx_args, PyObject *__pyx_kwds
20355 #endif
20356 ) {
20357  PyObject *__pyx_v_obj = 0;
20358  #if !CYTHON_METH_FASTCALL
20359  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
20360  #endif
20361  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
20362  PyObject* values[1] = {0};
20363  int __pyx_lineno = 0;
20364  const char *__pyx_filename = NULL;
20365  int __pyx_clineno = 0;
20366  PyObject *__pyx_r = 0;
20367  __Pyx_RefNannyDeclarations
20368  __Pyx_RefNannySetupContext("quad (wrapper)", 0);
20369  #if !CYTHON_METH_FASTCALL
20370  #if CYTHON_ASSUME_SAFE_MACROS
20371  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
20372  #else
20373  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
20374  #endif
20375  #endif
20376  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
20377  {
20378  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
20379  if (__pyx_kwds) {
20380  Py_ssize_t kw_args;
20381  switch (__pyx_nargs) {
20382  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20383  CYTHON_FALLTHROUGH;
20384  case 0: break;
20385  default: goto __pyx_L5_argtuple_error;
20386  }
20387  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
20388  switch (__pyx_nargs) {
20389  case 0:
20390  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
20391  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
20392  kw_args--;
20393  }
20394  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1563, __pyx_L3_error)
20395  else goto __pyx_L5_argtuple_error;
20396  }
20397  if (unlikely(kw_args > 0)) {
20398  const Py_ssize_t kwd_pos_args = __pyx_nargs;
20399  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "quad") < 0)) __PYX_ERR(0, 1563, __pyx_L3_error)
20400  }
20401  } else if (unlikely(__pyx_nargs != 1)) {
20402  goto __pyx_L5_argtuple_error;
20403  } else {
20404  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20405  }
20406  __pyx_v_obj = values[0];
20407  }
20408  goto __pyx_L6_skip;
20409  __pyx_L5_argtuple_error:;
20410  __Pyx_RaiseArgtupleInvalid("quad", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1563, __pyx_L3_error)
20411  __pyx_L6_skip:;
20412  goto __pyx_L4_argument_unpacking_done;
20413  __pyx_L3_error:;
20414  {
20415  Py_ssize_t __pyx_temp;
20416  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20417  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20418  }
20419  }
20420  __Pyx_AddTraceback("PyClical.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
20421  __Pyx_RefNannyFinishContext();
20422  return NULL;
20423  __pyx_L4_argument_unpacking_done:;
20424  __pyx_r = __pyx_pf_8PyClical_36quad(__pyx_self, __pyx_v_obj);
20425 
20426  /* function exit code */
20427  {
20428  Py_ssize_t __pyx_temp;
20429  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20430  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20431  }
20432  }
20433  __Pyx_RefNannyFinishContext();
20434  return __pyx_r;
20435  }
20436 
20437  static PyObject *__pyx_pf_8PyClical_36quad(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
20438  PyObject *__pyx_r = NULL;
20439  __Pyx_RefNannyDeclarations
20440  PyObject *__pyx_t_1 = NULL;
20441  int __pyx_lineno = 0;
20442  const char *__pyx_filename = NULL;
20443  int __pyx_clineno = 0;
20444  __Pyx_RefNannySetupContext("quad", 1);
20445  __Pyx_XDECREF(__pyx_r);
20446  __pyx_t_1 = __pyx_f_8PyClical_quad(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L1_error)
20447  __Pyx_GOTREF(__pyx_t_1);
20448  __pyx_r = __pyx_t_1;
20449  __pyx_t_1 = 0;
20450  goto __pyx_L0;
20451 
20452  /* function exit code */
20453  __pyx_L1_error:;
20454  __Pyx_XDECREF(__pyx_t_1);
20455  __Pyx_AddTraceback("PyClical.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
20456  __pyx_r = NULL;
20457  __pyx_L0:;
20458  __Pyx_XGIVEREF(__pyx_r);
20459  __Pyx_RefNannyFinishContext();
20460  return __pyx_r;
20461  }
20462 
20463  /* "PyClical.pyx":1574
20464  * return clifford(obj).quad()
20465  *
20466  * cpdef inline norm(obj): # <<<<<<<<<<<<<<
20467  * """
20468  * norm == sum of squares of coordinates.
20469  */
20470 
20471  static PyObject *__pyx_pw_8PyClical_39norm(PyObject *__pyx_self,
20472 #if CYTHON_METH_FASTCALL
20473 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20474 #else
20475 PyObject *__pyx_args, PyObject *__pyx_kwds
20476 #endif
20477 ); /*proto*/
20478  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_norm(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
20479  PyObject *__pyx_r = NULL;
20480  __Pyx_RefNannyDeclarations
20481  PyObject *__pyx_t_1 = NULL;
20482  PyObject *__pyx_t_2 = NULL;
20483  PyObject *__pyx_t_3 = NULL;
20484  int __pyx_t_4;
20485  int __pyx_lineno = 0;
20486  const char *__pyx_filename = NULL;
20487  int __pyx_clineno = 0;
20488  __Pyx_RefNannySetupContext("norm", 1);
20489 
20490  /* "PyClical.pyx":1583
20491  * 4.0
20492  * """
20493  * return clifford(obj).norm() # <<<<<<<<<<<<<<
20494  *
20495  * cpdef inline abs(obj):
20496  */
20497  __Pyx_XDECREF(__pyx_r);
20498  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1583, __pyx_L1_error)
20499  __Pyx_GOTREF(__pyx_t_2);
20500  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_norm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1583, __pyx_L1_error)
20501  __Pyx_GOTREF(__pyx_t_3);
20502  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20503  __pyx_t_2 = NULL;
20504  __pyx_t_4 = 0;
20505  #if CYTHON_UNPACK_METHODS
20506  if (likely(PyMethod_Check(__pyx_t_3))) {
20507  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
20508  if (likely(__pyx_t_2)) {
20509  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20510  __Pyx_INCREF(__pyx_t_2);
20511  __Pyx_INCREF(function);
20512  __Pyx_DECREF_SET(__pyx_t_3, function);
20513  __pyx_t_4 = 1;
20514  }
20515  }
20516  #endif
20517  {
20518  PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
20519  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
20520  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20521  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L1_error)
20522  __Pyx_GOTREF(__pyx_t_1);
20523  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20524  }
20525  __pyx_r = __pyx_t_1;
20526  __pyx_t_1 = 0;
20527  goto __pyx_L0;
20528 
20529  /* "PyClical.pyx":1574
20530  * return clifford(obj).quad()
20531  *
20532  * cpdef inline norm(obj): # <<<<<<<<<<<<<<
20533  * """
20534  * norm == sum of squares of coordinates.
20535  */
20536 
20537  /* function exit code */
20538  __pyx_L1_error:;
20539  __Pyx_XDECREF(__pyx_t_1);
20540  __Pyx_XDECREF(__pyx_t_2);
20541  __Pyx_XDECREF(__pyx_t_3);
20542  __Pyx_AddTraceback("PyClical.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
20543  __pyx_r = 0;
20544  __pyx_L0:;
20545  __Pyx_XGIVEREF(__pyx_r);
20546  __Pyx_RefNannyFinishContext();
20547  return __pyx_r;
20548  }
20549 
20550  /* Python wrapper */
20551  static PyObject *__pyx_pw_8PyClical_39norm(PyObject *__pyx_self,
20552 #if CYTHON_METH_FASTCALL
20553 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20554 #else
20555 PyObject *__pyx_args, PyObject *__pyx_kwds
20556 #endif
20557 ); /*proto*/
20558  PyDoc_STRVAR(__pyx_doc_8PyClical_38norm, "\n norm == sum of squares of coordinates.\n\n >>> norm(clifford(\"1+{1}+{1,2}\"))\n 3.0\n >>> norm(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 4.0\n ");
20559  static PyMethodDef __pyx_mdef_8PyClical_39norm = {"norm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_39norm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_38norm};
20560  static PyObject *__pyx_pw_8PyClical_39norm(PyObject *__pyx_self,
20561 #if CYTHON_METH_FASTCALL
20562 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20563 #else
20564 PyObject *__pyx_args, PyObject *__pyx_kwds
20565 #endif
20566 ) {
20567  PyObject *__pyx_v_obj = 0;
20568  #if !CYTHON_METH_FASTCALL
20569  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
20570  #endif
20571  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
20572  PyObject* values[1] = {0};
20573  int __pyx_lineno = 0;
20574  const char *__pyx_filename = NULL;
20575  int __pyx_clineno = 0;
20576  PyObject *__pyx_r = 0;
20577  __Pyx_RefNannyDeclarations
20578  __Pyx_RefNannySetupContext("norm (wrapper)", 0);
20579  #if !CYTHON_METH_FASTCALL
20580  #if CYTHON_ASSUME_SAFE_MACROS
20581  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
20582  #else
20583  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
20584  #endif
20585  #endif
20586  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
20587  {
20588  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
20589  if (__pyx_kwds) {
20590  Py_ssize_t kw_args;
20591  switch (__pyx_nargs) {
20592  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20593  CYTHON_FALLTHROUGH;
20594  case 0: break;
20595  default: goto __pyx_L5_argtuple_error;
20596  }
20597  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
20598  switch (__pyx_nargs) {
20599  case 0:
20600  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
20601  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
20602  kw_args--;
20603  }
20604  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1574, __pyx_L3_error)
20605  else goto __pyx_L5_argtuple_error;
20606  }
20607  if (unlikely(kw_args > 0)) {
20608  const Py_ssize_t kwd_pos_args = __pyx_nargs;
20609  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "norm") < 0)) __PYX_ERR(0, 1574, __pyx_L3_error)
20610  }
20611  } else if (unlikely(__pyx_nargs != 1)) {
20612  goto __pyx_L5_argtuple_error;
20613  } else {
20614  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20615  }
20616  __pyx_v_obj = values[0];
20617  }
20618  goto __pyx_L6_skip;
20619  __pyx_L5_argtuple_error:;
20620  __Pyx_RaiseArgtupleInvalid("norm", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1574, __pyx_L3_error)
20621  __pyx_L6_skip:;
20622  goto __pyx_L4_argument_unpacking_done;
20623  __pyx_L3_error:;
20624  {
20625  Py_ssize_t __pyx_temp;
20626  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20627  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20628  }
20629  }
20630  __Pyx_AddTraceback("PyClical.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
20631  __Pyx_RefNannyFinishContext();
20632  return NULL;
20633  __pyx_L4_argument_unpacking_done:;
20634  __pyx_r = __pyx_pf_8PyClical_38norm(__pyx_self, __pyx_v_obj);
20635 
20636  /* function exit code */
20637  {
20638  Py_ssize_t __pyx_temp;
20639  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20640  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20641  }
20642  }
20643  __Pyx_RefNannyFinishContext();
20644  return __pyx_r;
20645  }
20646 
20647  static PyObject *__pyx_pf_8PyClical_38norm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
20648  PyObject *__pyx_r = NULL;
20649  __Pyx_RefNannyDeclarations
20650  PyObject *__pyx_t_1 = NULL;
20651  int __pyx_lineno = 0;
20652  const char *__pyx_filename = NULL;
20653  int __pyx_clineno = 0;
20654  __Pyx_RefNannySetupContext("norm", 1);
20655  __Pyx_XDECREF(__pyx_r);
20656  __pyx_t_1 = __pyx_f_8PyClical_norm(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
20657  __Pyx_GOTREF(__pyx_t_1);
20658  __pyx_r = __pyx_t_1;
20659  __pyx_t_1 = 0;
20660  goto __pyx_L0;
20661 
20662  /* function exit code */
20663  __pyx_L1_error:;
20664  __Pyx_XDECREF(__pyx_t_1);
20665  __Pyx_AddTraceback("PyClical.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
20666  __pyx_r = NULL;
20667  __pyx_L0:;
20668  __Pyx_XGIVEREF(__pyx_r);
20669  __Pyx_RefNannyFinishContext();
20670  return __pyx_r;
20671  }
20672 
20673  /* "PyClical.pyx":1585
20674  * return clifford(obj).norm()
20675  *
20676  * cpdef inline abs(obj): # <<<<<<<<<<<<<<
20677  * """
20678  * Absolute value of multivector: multivector 2-norm.
20679  */
20680 
20681  static PyObject *__pyx_pw_8PyClical_41abs(PyObject *__pyx_self,
20682 #if CYTHON_METH_FASTCALL
20683 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20684 #else
20685 PyObject *__pyx_args, PyObject *__pyx_kwds
20686 #endif
20687 ); /*proto*/
20688  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_abs(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
20689  PyObject *__pyx_r = NULL;
20690  __Pyx_RefNannyDeclarations
20691  Clifford __pyx_t_1;
20692  PyObject *__pyx_t_2 = NULL;
20693  int __pyx_lineno = 0;
20694  const char *__pyx_filename = NULL;
20695  int __pyx_clineno = 0;
20696  __Pyx_RefNannySetupContext("abs", 1);
20697 
20698  /* "PyClical.pyx":1592
20699  * 2.0
20700  * """
20701  * return glucat.abs(toClifford(obj)) # <<<<<<<<<<<<<<
20702  *
20703  * cpdef inline max_abs(obj):
20704  */
20705  __Pyx_XDECREF(__pyx_r);
20706  __pyx_t_1 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1592, __pyx_L1_error)
20707  __pyx_t_2 = PyFloat_FromDouble(abs(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1592, __pyx_L1_error)
20708  __Pyx_GOTREF(__pyx_t_2);
20709  __pyx_r = __pyx_t_2;
20710  __pyx_t_2 = 0;
20711  goto __pyx_L0;
20712 
20713  /* "PyClical.pyx":1585
20714  * return clifford(obj).norm()
20715  *
20716  * cpdef inline abs(obj): # <<<<<<<<<<<<<<
20717  * """
20718  * Absolute value of multivector: multivector 2-norm.
20719  */
20720 
20721  /* function exit code */
20722  __pyx_L1_error:;
20723  __Pyx_XDECREF(__pyx_t_2);
20724  __Pyx_AddTraceback("PyClical.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
20725  __pyx_r = 0;
20726  __pyx_L0:;
20727  __Pyx_XGIVEREF(__pyx_r);
20728  __Pyx_RefNannyFinishContext();
20729  return __pyx_r;
20730  }
20731 
20732  /* Python wrapper */
20733  static PyObject *__pyx_pw_8PyClical_41abs(PyObject *__pyx_self,
20734 #if CYTHON_METH_FASTCALL
20735 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20736 #else
20737 PyObject *__pyx_args, PyObject *__pyx_kwds
20738 #endif
20739 ); /*proto*/
20740  PyDoc_STRVAR(__pyx_doc_8PyClical_40abs, "\n Absolute value of multivector: multivector 2-norm.\n\n >>> abs(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 2.0\n ");
20741  static PyMethodDef __pyx_mdef_8PyClical_41abs = {"abs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_41abs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_40abs};
20742  static PyObject *__pyx_pw_8PyClical_41abs(PyObject *__pyx_self,
20743 #if CYTHON_METH_FASTCALL
20744 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20745 #else
20746 PyObject *__pyx_args, PyObject *__pyx_kwds
20747 #endif
20748 ) {
20749  PyObject *__pyx_v_obj = 0;
20750  #if !CYTHON_METH_FASTCALL
20751  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
20752  #endif
20753  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
20754  PyObject* values[1] = {0};
20755  int __pyx_lineno = 0;
20756  const char *__pyx_filename = NULL;
20757  int __pyx_clineno = 0;
20758  PyObject *__pyx_r = 0;
20759  __Pyx_RefNannyDeclarations
20760  __Pyx_RefNannySetupContext("abs (wrapper)", 0);
20761  #if !CYTHON_METH_FASTCALL
20762  #if CYTHON_ASSUME_SAFE_MACROS
20763  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
20764  #else
20765  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
20766  #endif
20767  #endif
20768  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
20769  {
20770  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
20771  if (__pyx_kwds) {
20772  Py_ssize_t kw_args;
20773  switch (__pyx_nargs) {
20774  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20775  CYTHON_FALLTHROUGH;
20776  case 0: break;
20777  default: goto __pyx_L5_argtuple_error;
20778  }
20779  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
20780  switch (__pyx_nargs) {
20781  case 0:
20782  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
20783  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
20784  kw_args--;
20785  }
20786  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1585, __pyx_L3_error)
20787  else goto __pyx_L5_argtuple_error;
20788  }
20789  if (unlikely(kw_args > 0)) {
20790  const Py_ssize_t kwd_pos_args = __pyx_nargs;
20791  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "abs") < 0)) __PYX_ERR(0, 1585, __pyx_L3_error)
20792  }
20793  } else if (unlikely(__pyx_nargs != 1)) {
20794  goto __pyx_L5_argtuple_error;
20795  } else {
20796  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20797  }
20798  __pyx_v_obj = values[0];
20799  }
20800  goto __pyx_L6_skip;
20801  __pyx_L5_argtuple_error:;
20802  __Pyx_RaiseArgtupleInvalid("abs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1585, __pyx_L3_error)
20803  __pyx_L6_skip:;
20804  goto __pyx_L4_argument_unpacking_done;
20805  __pyx_L3_error:;
20806  {
20807  Py_ssize_t __pyx_temp;
20808  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20809  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20810  }
20811  }
20812  __Pyx_AddTraceback("PyClical.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
20813  __Pyx_RefNannyFinishContext();
20814  return NULL;
20815  __pyx_L4_argument_unpacking_done:;
20816  __pyx_r = __pyx_pf_8PyClical_40abs(__pyx_self, __pyx_v_obj);
20817 
20818  /* function exit code */
20819  {
20820  Py_ssize_t __pyx_temp;
20821  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20822  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20823  }
20824  }
20825  __Pyx_RefNannyFinishContext();
20826  return __pyx_r;
20827  }
20828 
20829  static PyObject *__pyx_pf_8PyClical_40abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
20830  PyObject *__pyx_r = NULL;
20831  __Pyx_RefNannyDeclarations
20832  PyObject *__pyx_t_1 = NULL;
20833  int __pyx_lineno = 0;
20834  const char *__pyx_filename = NULL;
20835  int __pyx_clineno = 0;
20836  __Pyx_RefNannySetupContext("abs", 1);
20837  __Pyx_XDECREF(__pyx_r);
20838  __pyx_t_1 = __pyx_f_8PyClical_abs(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1585, __pyx_L1_error)
20839  __Pyx_GOTREF(__pyx_t_1);
20840  __pyx_r = __pyx_t_1;
20841  __pyx_t_1 = 0;
20842  goto __pyx_L0;
20843 
20844  /* function exit code */
20845  __pyx_L1_error:;
20846  __Pyx_XDECREF(__pyx_t_1);
20847  __Pyx_AddTraceback("PyClical.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
20848  __pyx_r = NULL;
20849  __pyx_L0:;
20850  __Pyx_XGIVEREF(__pyx_r);
20851  __Pyx_RefNannyFinishContext();
20852  return __pyx_r;
20853  }
20854 
20855  /* "PyClical.pyx":1594
20856  * return glucat.abs(toClifford(obj))
20857  *
20858  * cpdef inline max_abs(obj): # <<<<<<<<<<<<<<
20859  * """
20860  * Maximum absolute value of coordinates multivector: multivector infinity-norm.
20861  */
20862 
20863  static PyObject *__pyx_pw_8PyClical_43max_abs(PyObject *__pyx_self,
20864 #if CYTHON_METH_FASTCALL
20865 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20866 #else
20867 PyObject *__pyx_args, PyObject *__pyx_kwds
20868 #endif
20869 ); /*proto*/
20870  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_abs(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
20871  PyObject *__pyx_r = NULL;
20872  __Pyx_RefNannyDeclarations
20873  Clifford __pyx_t_1;
20874  PyObject *__pyx_t_2 = NULL;
20875  int __pyx_lineno = 0;
20876  const char *__pyx_filename = NULL;
20877  int __pyx_clineno = 0;
20878  __Pyx_RefNannySetupContext("max_abs", 1);
20879 
20880  /* "PyClical.pyx":1604
20881  *
20882  * """
20883  * return glucat.max_abs(toClifford(obj)) # <<<<<<<<<<<<<<
20884  *
20885  * cpdef inline pow(obj, m):
20886  */
20887  __Pyx_XDECREF(__pyx_r);
20888  __pyx_t_1 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L1_error)
20889  __pyx_t_2 = PyFloat_FromDouble(max_abs(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1604, __pyx_L1_error)
20890  __Pyx_GOTREF(__pyx_t_2);
20891  __pyx_r = __pyx_t_2;
20892  __pyx_t_2 = 0;
20893  goto __pyx_L0;
20894 
20895  /* "PyClical.pyx":1594
20896  * return glucat.abs(toClifford(obj))
20897  *
20898  * cpdef inline max_abs(obj): # <<<<<<<<<<<<<<
20899  * """
20900  * Maximum absolute value of coordinates multivector: multivector infinity-norm.
20901  */
20902 
20903  /* function exit code */
20904  __pyx_L1_error:;
20905  __Pyx_XDECREF(__pyx_t_2);
20906  __Pyx_AddTraceback("PyClical.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
20907  __pyx_r = 0;
20908  __pyx_L0:;
20909  __Pyx_XGIVEREF(__pyx_r);
20910  __Pyx_RefNannyFinishContext();
20911  return __pyx_r;
20912  }
20913 
20914  /* Python wrapper */
20915  static PyObject *__pyx_pw_8PyClical_43max_abs(PyObject *__pyx_self,
20916 #if CYTHON_METH_FASTCALL
20917 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20918 #else
20919 PyObject *__pyx_args, PyObject *__pyx_kwds
20920 #endif
20921 ); /*proto*/
20922  PyDoc_STRVAR(__pyx_doc_8PyClical_42max_abs, "\n Maximum absolute value of coordinates multivector: multivector infinity-norm.\n\n >>> max_abs(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 1.0\n >>> max_abs(clifford(\"3+2{1}+{1,2}\"))\n 3.0\n\n ");
20923  static PyMethodDef __pyx_mdef_8PyClical_43max_abs = {"max_abs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_43max_abs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_42max_abs};
20924  static PyObject *__pyx_pw_8PyClical_43max_abs(PyObject *__pyx_self,
20925 #if CYTHON_METH_FASTCALL
20926 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
20927 #else
20928 PyObject *__pyx_args, PyObject *__pyx_kwds
20929 #endif
20930 ) {
20931  PyObject *__pyx_v_obj = 0;
20932  #if !CYTHON_METH_FASTCALL
20933  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
20934  #endif
20935  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
20936  PyObject* values[1] = {0};
20937  int __pyx_lineno = 0;
20938  const char *__pyx_filename = NULL;
20939  int __pyx_clineno = 0;
20940  PyObject *__pyx_r = 0;
20941  __Pyx_RefNannyDeclarations
20942  __Pyx_RefNannySetupContext("max_abs (wrapper)", 0);
20943  #if !CYTHON_METH_FASTCALL
20944  #if CYTHON_ASSUME_SAFE_MACROS
20945  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
20946  #else
20947  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
20948  #endif
20949  #endif
20950  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
20951  {
20952  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
20953  if (__pyx_kwds) {
20954  Py_ssize_t kw_args;
20955  switch (__pyx_nargs) {
20956  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20957  CYTHON_FALLTHROUGH;
20958  case 0: break;
20959  default: goto __pyx_L5_argtuple_error;
20960  }
20961  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
20962  switch (__pyx_nargs) {
20963  case 0:
20964  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
20965  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
20966  kw_args--;
20967  }
20968  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1594, __pyx_L3_error)
20969  else goto __pyx_L5_argtuple_error;
20970  }
20971  if (unlikely(kw_args > 0)) {
20972  const Py_ssize_t kwd_pos_args = __pyx_nargs;
20973  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "max_abs") < 0)) __PYX_ERR(0, 1594, __pyx_L3_error)
20974  }
20975  } else if (unlikely(__pyx_nargs != 1)) {
20976  goto __pyx_L5_argtuple_error;
20977  } else {
20978  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
20979  }
20980  __pyx_v_obj = values[0];
20981  }
20982  goto __pyx_L6_skip;
20983  __pyx_L5_argtuple_error:;
20984  __Pyx_RaiseArgtupleInvalid("max_abs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1594, __pyx_L3_error)
20985  __pyx_L6_skip:;
20986  goto __pyx_L4_argument_unpacking_done;
20987  __pyx_L3_error:;
20988  {
20989  Py_ssize_t __pyx_temp;
20990  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
20991  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
20992  }
20993  }
20994  __Pyx_AddTraceback("PyClical.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
20995  __Pyx_RefNannyFinishContext();
20996  return NULL;
20997  __pyx_L4_argument_unpacking_done:;
20998  __pyx_r = __pyx_pf_8PyClical_42max_abs(__pyx_self, __pyx_v_obj);
20999 
21000  /* function exit code */
21001  {
21002  Py_ssize_t __pyx_temp;
21003  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21004  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21005  }
21006  }
21007  __Pyx_RefNannyFinishContext();
21008  return __pyx_r;
21009  }
21010 
21011  static PyObject *__pyx_pf_8PyClical_42max_abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
21012  PyObject *__pyx_r = NULL;
21013  __Pyx_RefNannyDeclarations
21014  PyObject *__pyx_t_1 = NULL;
21015  int __pyx_lineno = 0;
21016  const char *__pyx_filename = NULL;
21017  int __pyx_clineno = 0;
21018  __Pyx_RefNannySetupContext("max_abs", 1);
21019  __Pyx_XDECREF(__pyx_r);
21020  __pyx_t_1 = __pyx_f_8PyClical_max_abs(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1594, __pyx_L1_error)
21021  __Pyx_GOTREF(__pyx_t_1);
21022  __pyx_r = __pyx_t_1;
21023  __pyx_t_1 = 0;
21024  goto __pyx_L0;
21025 
21026  /* function exit code */
21027  __pyx_L1_error:;
21028  __Pyx_XDECREF(__pyx_t_1);
21029  __Pyx_AddTraceback("PyClical.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
21030  __pyx_r = NULL;
21031  __pyx_L0:;
21032  __Pyx_XGIVEREF(__pyx_r);
21033  __Pyx_RefNannyFinishContext();
21034  return __pyx_r;
21035  }
21036 
21037  /* "PyClical.pyx":1606
21038  * return glucat.max_abs(toClifford(obj))
21039  *
21040  * cpdef inline pow(obj, m): # <<<<<<<<<<<<<<
21041  * """
21042  * Integer power of multivector: obj to the m.
21043  */
21044 
21045  static PyObject *__pyx_pw_8PyClical_45pow(PyObject *__pyx_self,
21046 #if CYTHON_METH_FASTCALL
21047 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21048 #else
21049 PyObject *__pyx_args, PyObject *__pyx_kwds
21050 #endif
21051 ); /*proto*/
21052  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pow(PyObject *__pyx_v_obj, PyObject *__pyx_v_m, CYTHON_UNUSED int __pyx_skip_dispatch) {
21053  PyObject *__pyx_r = NULL;
21054  __Pyx_RefNannyDeclarations
21055  PyObject *__pyx_t_1 = NULL;
21056  PyObject *__pyx_t_2 = NULL;
21057  PyObject *__pyx_t_3 = NULL;
21058  PyObject *__pyx_t_4 = NULL;
21059  PyObject *__pyx_t_5 = NULL;
21060  PyObject *__pyx_t_6 = NULL;
21061  int __pyx_t_7;
21062  PyObject *__pyx_t_8 = NULL;
21063  PyObject *__pyx_t_9 = NULL;
21064  PyObject *__pyx_t_10 = NULL;
21065  int __pyx_lineno = 0;
21066  const char *__pyx_filename = NULL;
21067  int __pyx_clineno = 0;
21068  __Pyx_RefNannySetupContext("pow", 1);
21069 
21070  /* "PyClical.pyx":1625
21071  * 1
21072  * """
21073  * try: # <<<<<<<<<<<<<<
21074  * math.pow(obj, m)
21075  * except:
21076  */
21077  {
21078  __Pyx_PyThreadState_declare
21079  __Pyx_PyThreadState_assign
21080  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
21081  __Pyx_XGOTREF(__pyx_t_1);
21082  __Pyx_XGOTREF(__pyx_t_2);
21083  __Pyx_XGOTREF(__pyx_t_3);
21084  /*try:*/ {
21085 
21086  /* "PyClical.pyx":1626
21087  * """
21088  * try:
21089  * math.pow(obj, m) # <<<<<<<<<<<<<<
21090  * except:
21091  * return clifford(obj).pow(m)
21092  */
21093  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1626, __pyx_L3_error)
21094  __Pyx_GOTREF(__pyx_t_5);
21095  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pow); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1626, __pyx_L3_error)
21096  __Pyx_GOTREF(__pyx_t_6);
21097  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21098  __pyx_t_5 = NULL;
21099  __pyx_t_7 = 0;
21100  #if CYTHON_UNPACK_METHODS
21101  if (unlikely(PyMethod_Check(__pyx_t_6))) {
21102  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
21103  if (likely(__pyx_t_5)) {
21104  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
21105  __Pyx_INCREF(__pyx_t_5);
21106  __Pyx_INCREF(function);
21107  __Pyx_DECREF_SET(__pyx_t_6, function);
21108  __pyx_t_7 = 1;
21109  }
21110  }
21111  #endif
21112  {
21113  PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_obj, __pyx_v_m};
21114  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
21115  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
21116  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1626, __pyx_L3_error)
21117  __Pyx_GOTREF(__pyx_t_4);
21118  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21119  }
21120  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21121 
21122  /* "PyClical.pyx":1625
21123  * 1
21124  * """
21125  * try: # <<<<<<<<<<<<<<
21126  * math.pow(obj, m)
21127  * except:
21128  */
21129  }
21130  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
21131  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21132  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21133  goto __pyx_L8_try_end;
21134  __pyx_L3_error:;
21135  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
21136  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
21137  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
21138 
21139  /* "PyClical.pyx":1627
21140  * try:
21141  * math.pow(obj, m)
21142  * except: # <<<<<<<<<<<<<<
21143  * return clifford(obj).pow(m)
21144  *
21145  */
21146  /*except:*/ {
21147  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21148  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 1627, __pyx_L5_except_error)
21149  __Pyx_XGOTREF(__pyx_t_4);
21150  __Pyx_XGOTREF(__pyx_t_6);
21151  __Pyx_XGOTREF(__pyx_t_5);
21152 
21153  /* "PyClical.pyx":1628
21154  * math.pow(obj, m)
21155  * except:
21156  * return clifford(obj).pow(m) # <<<<<<<<<<<<<<
21157  *
21158  * cpdef inline outer_pow(obj, m):
21159  */
21160  __Pyx_XDECREF(__pyx_r);
21161  __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1628, __pyx_L5_except_error)
21162  __Pyx_GOTREF(__pyx_t_9);
21163  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_pow); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1628, __pyx_L5_except_error)
21164  __Pyx_GOTREF(__pyx_t_10);
21165  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21166  __pyx_t_9 = NULL;
21167  __pyx_t_7 = 0;
21168  #if CYTHON_UNPACK_METHODS
21169  if (likely(PyMethod_Check(__pyx_t_10))) {
21170  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
21171  if (likely(__pyx_t_9)) {
21172  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
21173  __Pyx_INCREF(__pyx_t_9);
21174  __Pyx_INCREF(function);
21175  __Pyx_DECREF_SET(__pyx_t_10, function);
21176  __pyx_t_7 = 1;
21177  }
21178  }
21179  #endif
21180  {
21181  PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_m};
21182  __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
21183  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
21184  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1628, __pyx_L5_except_error)
21185  __Pyx_GOTREF(__pyx_t_8);
21186  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
21187  }
21188  __pyx_r = __pyx_t_8;
21189  __pyx_t_8 = 0;
21190  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21191  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21192  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21193  goto __pyx_L6_except_return;
21194  }
21195 
21196  /* "PyClical.pyx":1625
21197  * 1
21198  * """
21199  * try: # <<<<<<<<<<<<<<
21200  * math.pow(obj, m)
21201  * except:
21202  */
21203  __pyx_L5_except_error:;
21204  __Pyx_XGIVEREF(__pyx_t_1);
21205  __Pyx_XGIVEREF(__pyx_t_2);
21206  __Pyx_XGIVEREF(__pyx_t_3);
21207  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
21208  goto __pyx_L1_error;
21209  __pyx_L6_except_return:;
21210  __Pyx_XGIVEREF(__pyx_t_1);
21211  __Pyx_XGIVEREF(__pyx_t_2);
21212  __Pyx_XGIVEREF(__pyx_t_3);
21213  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
21214  goto __pyx_L0;
21215  __pyx_L8_try_end:;
21216  }
21217 
21218  /* "PyClical.pyx":1606
21219  * return glucat.max_abs(toClifford(obj))
21220  *
21221  * cpdef inline pow(obj, m): # <<<<<<<<<<<<<<
21222  * """
21223  * Integer power of multivector: obj to the m.
21224  */
21225 
21226  /* function exit code */
21227  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
21228  goto __pyx_L0;
21229  __pyx_L1_error:;
21230  __Pyx_XDECREF(__pyx_t_4);
21231  __Pyx_XDECREF(__pyx_t_5);
21232  __Pyx_XDECREF(__pyx_t_6);
21233  __Pyx_XDECREF(__pyx_t_8);
21234  __Pyx_XDECREF(__pyx_t_9);
21235  __Pyx_XDECREF(__pyx_t_10);
21236  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21237  __pyx_r = 0;
21238  __pyx_L0:;
21239  __Pyx_XGIVEREF(__pyx_r);
21240  __Pyx_RefNannyFinishContext();
21241  return __pyx_r;
21242  }
21243 
21244  /* Python wrapper */
21245  static PyObject *__pyx_pw_8PyClical_45pow(PyObject *__pyx_self,
21246 #if CYTHON_METH_FASTCALL
21247 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21248 #else
21249 PyObject *__pyx_args, PyObject *__pyx_kwds
21250 #endif
21251 ); /*proto*/
21252  PyDoc_STRVAR(__pyx_doc_8PyClical_44pow, "\n Integer power of multivector: obj to the m.\n\n >>> x=clifford(\"{1}\"); print(pow(x,2))\n 1\n >>> x=clifford(\"2\"); print(pow(x,2))\n 4\n >>> x=clifford(\"2+{1}\"); print(pow(x,0))\n 1\n >>> x=clifford(\"2+{1}\"); print(pow(x,1))\n 2+{1}\n >>> x=clifford(\"2+{1}\"); print(pow(x,2))\n 5+4{1}\n >>> print(pow(clifford(\"1+{1}+{1,2}\"),3))\n 1+3{1}+3{1,2}\n >>> i=clifford(\"{1,2}\"); print(exp(pi/2) * pow(i, i))\n 1\n ");
21253  static PyMethodDef __pyx_mdef_8PyClical_45pow = {"pow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_45pow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_44pow};
21254  static PyObject *__pyx_pw_8PyClical_45pow(PyObject *__pyx_self,
21255 #if CYTHON_METH_FASTCALL
21256 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21257 #else
21258 PyObject *__pyx_args, PyObject *__pyx_kwds
21259 #endif
21260 ) {
21261  PyObject *__pyx_v_obj = 0;
21262  PyObject *__pyx_v_m = 0;
21263  #if !CYTHON_METH_FASTCALL
21264  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
21265  #endif
21266  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
21267  PyObject* values[2] = {0,0};
21268  int __pyx_lineno = 0;
21269  const char *__pyx_filename = NULL;
21270  int __pyx_clineno = 0;
21271  PyObject *__pyx_r = 0;
21272  __Pyx_RefNannyDeclarations
21273  __Pyx_RefNannySetupContext("pow (wrapper)", 0);
21274  #if !CYTHON_METH_FASTCALL
21275  #if CYTHON_ASSUME_SAFE_MACROS
21276  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
21277  #else
21278  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
21279  #endif
21280  #endif
21281  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
21282  {
21283  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_m,0};
21284  if (__pyx_kwds) {
21285  Py_ssize_t kw_args;
21286  switch (__pyx_nargs) {
21287  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
21288  CYTHON_FALLTHROUGH;
21289  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
21290  CYTHON_FALLTHROUGH;
21291  case 0: break;
21292  default: goto __pyx_L5_argtuple_error;
21293  }
21294  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
21295  switch (__pyx_nargs) {
21296  case 0:
21297  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
21298  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
21299  kw_args--;
21300  }
21301  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1606, __pyx_L3_error)
21302  else goto __pyx_L5_argtuple_error;
21303  CYTHON_FALLTHROUGH;
21304  case 1:
21305  if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_m)) != 0)) {
21306  (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
21307  kw_args--;
21308  }
21309  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1606, __pyx_L3_error)
21310  else {
21311  __Pyx_RaiseArgtupleInvalid("pow", 1, 2, 2, 1); __PYX_ERR(0, 1606, __pyx_L3_error)
21312  }
21313  }
21314  if (unlikely(kw_args > 0)) {
21315  const Py_ssize_t kwd_pos_args = __pyx_nargs;
21316  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "pow") < 0)) __PYX_ERR(0, 1606, __pyx_L3_error)
21317  }
21318  } else if (unlikely(__pyx_nargs != 2)) {
21319  goto __pyx_L5_argtuple_error;
21320  } else {
21321  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
21322  values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
21323  }
21324  __pyx_v_obj = values[0];
21325  __pyx_v_m = values[1];
21326  }
21327  goto __pyx_L6_skip;
21328  __pyx_L5_argtuple_error:;
21329  __Pyx_RaiseArgtupleInvalid("pow", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1606, __pyx_L3_error)
21330  __pyx_L6_skip:;
21331  goto __pyx_L4_argument_unpacking_done;
21332  __pyx_L3_error:;
21333  {
21334  Py_ssize_t __pyx_temp;
21335  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21336  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21337  }
21338  }
21339  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21340  __Pyx_RefNannyFinishContext();
21341  return NULL;
21342  __pyx_L4_argument_unpacking_done:;
21343  __pyx_r = __pyx_pf_8PyClical_44pow(__pyx_self, __pyx_v_obj, __pyx_v_m);
21344 
21345  /* function exit code */
21346  {
21347  Py_ssize_t __pyx_temp;
21348  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21349  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21350  }
21351  }
21352  __Pyx_RefNannyFinishContext();
21353  return __pyx_r;
21354  }
21355 
21356  static PyObject *__pyx_pf_8PyClical_44pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m) {
21357  PyObject *__pyx_r = NULL;
21358  __Pyx_RefNannyDeclarations
21359  PyObject *__pyx_t_1 = NULL;
21360  int __pyx_lineno = 0;
21361  const char *__pyx_filename = NULL;
21362  int __pyx_clineno = 0;
21363  __Pyx_RefNannySetupContext("pow", 1);
21364  __Pyx_XDECREF(__pyx_r);
21365  __pyx_t_1 = __pyx_f_8PyClical_pow(__pyx_v_obj, __pyx_v_m, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
21366  __Pyx_GOTREF(__pyx_t_1);
21367  __pyx_r = __pyx_t_1;
21368  __pyx_t_1 = 0;
21369  goto __pyx_L0;
21370 
21371  /* function exit code */
21372  __pyx_L1_error:;
21373  __Pyx_XDECREF(__pyx_t_1);
21374  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21375  __pyx_r = NULL;
21376  __pyx_L0:;
21377  __Pyx_XGIVEREF(__pyx_r);
21378  __Pyx_RefNannyFinishContext();
21379  return __pyx_r;
21380  }
21381 
21382  /* "PyClical.pyx":1630
21383  * return clifford(obj).pow(m)
21384  *
21385  * cpdef inline outer_pow(obj, m): # <<<<<<<<<<<<<<
21386  * """
21387  * Outer product power of multivector.
21388  */
21389 
21390  static PyObject *__pyx_pw_8PyClical_47outer_pow(PyObject *__pyx_self,
21391 #if CYTHON_METH_FASTCALL
21392 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21393 #else
21394 PyObject *__pyx_args, PyObject *__pyx_kwds
21395 #endif
21396 ); /*proto*/
21397  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_outer_pow(PyObject *__pyx_v_obj, PyObject *__pyx_v_m, CYTHON_UNUSED int __pyx_skip_dispatch) {
21398  PyObject *__pyx_r = NULL;
21399  __Pyx_RefNannyDeclarations
21400  PyObject *__pyx_t_1 = NULL;
21401  PyObject *__pyx_t_2 = NULL;
21402  PyObject *__pyx_t_3 = NULL;
21403  int __pyx_t_4;
21404  int __pyx_lineno = 0;
21405  const char *__pyx_filename = NULL;
21406  int __pyx_clineno = 0;
21407  __Pyx_RefNannySetupContext("outer_pow", 1);
21408 
21409  /* "PyClical.pyx":1637
21410  * 1+3{1}+3{1,2}
21411  * """
21412  * return clifford(obj).outer_pow(m) # <<<<<<<<<<<<<<
21413  *
21414  * cpdef inline complexifier(obj):
21415  */
21416  __Pyx_XDECREF(__pyx_r);
21417  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L1_error)
21418  __Pyx_GOTREF(__pyx_t_2);
21419  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_outer_pow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1637, __pyx_L1_error)
21420  __Pyx_GOTREF(__pyx_t_3);
21421  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21422  __pyx_t_2 = NULL;
21423  __pyx_t_4 = 0;
21424  #if CYTHON_UNPACK_METHODS
21425  if (likely(PyMethod_Check(__pyx_t_3))) {
21426  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
21427  if (likely(__pyx_t_2)) {
21428  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
21429  __Pyx_INCREF(__pyx_t_2);
21430  __Pyx_INCREF(function);
21431  __Pyx_DECREF_SET(__pyx_t_3, function);
21432  __pyx_t_4 = 1;
21433  }
21434  }
21435  #endif
21436  {
21437  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_m};
21438  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
21439  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21440  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L1_error)
21441  __Pyx_GOTREF(__pyx_t_1);
21442  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21443  }
21444  __pyx_r = __pyx_t_1;
21445  __pyx_t_1 = 0;
21446  goto __pyx_L0;
21447 
21448  /* "PyClical.pyx":1630
21449  * return clifford(obj).pow(m)
21450  *
21451  * cpdef inline outer_pow(obj, m): # <<<<<<<<<<<<<<
21452  * """
21453  * Outer product power of multivector.
21454  */
21455 
21456  /* function exit code */
21457  __pyx_L1_error:;
21458  __Pyx_XDECREF(__pyx_t_1);
21459  __Pyx_XDECREF(__pyx_t_2);
21460  __Pyx_XDECREF(__pyx_t_3);
21461  __Pyx_AddTraceback("PyClical.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21462  __pyx_r = 0;
21463  __pyx_L0:;
21464  __Pyx_XGIVEREF(__pyx_r);
21465  __Pyx_RefNannyFinishContext();
21466  return __pyx_r;
21467  }
21468 
21469  /* Python wrapper */
21470  static PyObject *__pyx_pw_8PyClical_47outer_pow(PyObject *__pyx_self,
21471 #if CYTHON_METH_FASTCALL
21472 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21473 #else
21474 PyObject *__pyx_args, PyObject *__pyx_kwds
21475 #endif
21476 ); /*proto*/
21477  PyDoc_STRVAR(__pyx_doc_8PyClical_46outer_pow, "\n Outer product power of multivector.\n\n >>> print(outer_pow(clifford(\"1+{1}+{1,2}\"),3))\n 1+3{1}+3{1,2}\n ");
21478  static PyMethodDef __pyx_mdef_8PyClical_47outer_pow = {"outer_pow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_47outer_pow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_46outer_pow};
21479  static PyObject *__pyx_pw_8PyClical_47outer_pow(PyObject *__pyx_self,
21480 #if CYTHON_METH_FASTCALL
21481 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21482 #else
21483 PyObject *__pyx_args, PyObject *__pyx_kwds
21484 #endif
21485 ) {
21486  PyObject *__pyx_v_obj = 0;
21487  PyObject *__pyx_v_m = 0;
21488  #if !CYTHON_METH_FASTCALL
21489  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
21490  #endif
21491  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
21492  PyObject* values[2] = {0,0};
21493  int __pyx_lineno = 0;
21494  const char *__pyx_filename = NULL;
21495  int __pyx_clineno = 0;
21496  PyObject *__pyx_r = 0;
21497  __Pyx_RefNannyDeclarations
21498  __Pyx_RefNannySetupContext("outer_pow (wrapper)", 0);
21499  #if !CYTHON_METH_FASTCALL
21500  #if CYTHON_ASSUME_SAFE_MACROS
21501  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
21502  #else
21503  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
21504  #endif
21505  #endif
21506  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
21507  {
21508  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_m,0};
21509  if (__pyx_kwds) {
21510  Py_ssize_t kw_args;
21511  switch (__pyx_nargs) {
21512  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
21513  CYTHON_FALLTHROUGH;
21514  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
21515  CYTHON_FALLTHROUGH;
21516  case 0: break;
21517  default: goto __pyx_L5_argtuple_error;
21518  }
21519  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
21520  switch (__pyx_nargs) {
21521  case 0:
21522  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
21523  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
21524  kw_args--;
21525  }
21526  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1630, __pyx_L3_error)
21527  else goto __pyx_L5_argtuple_error;
21528  CYTHON_FALLTHROUGH;
21529  case 1:
21530  if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_m)) != 0)) {
21531  (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
21532  kw_args--;
21533  }
21534  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1630, __pyx_L3_error)
21535  else {
21536  __Pyx_RaiseArgtupleInvalid("outer_pow", 1, 2, 2, 1); __PYX_ERR(0, 1630, __pyx_L3_error)
21537  }
21538  }
21539  if (unlikely(kw_args > 0)) {
21540  const Py_ssize_t kwd_pos_args = __pyx_nargs;
21541  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "outer_pow") < 0)) __PYX_ERR(0, 1630, __pyx_L3_error)
21542  }
21543  } else if (unlikely(__pyx_nargs != 2)) {
21544  goto __pyx_L5_argtuple_error;
21545  } else {
21546  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
21547  values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
21548  }
21549  __pyx_v_obj = values[0];
21550  __pyx_v_m = values[1];
21551  }
21552  goto __pyx_L6_skip;
21553  __pyx_L5_argtuple_error:;
21554  __Pyx_RaiseArgtupleInvalid("outer_pow", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1630, __pyx_L3_error)
21555  __pyx_L6_skip:;
21556  goto __pyx_L4_argument_unpacking_done;
21557  __pyx_L3_error:;
21558  {
21559  Py_ssize_t __pyx_temp;
21560  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21561  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21562  }
21563  }
21564  __Pyx_AddTraceback("PyClical.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21565  __Pyx_RefNannyFinishContext();
21566  return NULL;
21567  __pyx_L4_argument_unpacking_done:;
21568  __pyx_r = __pyx_pf_8PyClical_46outer_pow(__pyx_self, __pyx_v_obj, __pyx_v_m);
21569 
21570  /* function exit code */
21571  {
21572  Py_ssize_t __pyx_temp;
21573  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21574  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21575  }
21576  }
21577  __Pyx_RefNannyFinishContext();
21578  return __pyx_r;
21579  }
21580 
21581  static PyObject *__pyx_pf_8PyClical_46outer_pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m) {
21582  PyObject *__pyx_r = NULL;
21583  __Pyx_RefNannyDeclarations
21584  PyObject *__pyx_t_1 = NULL;
21585  int __pyx_lineno = 0;
21586  const char *__pyx_filename = NULL;
21587  int __pyx_clineno = 0;
21588  __Pyx_RefNannySetupContext("outer_pow", 1);
21589  __Pyx_XDECREF(__pyx_r);
21590  __pyx_t_1 = __pyx_f_8PyClical_outer_pow(__pyx_v_obj, __pyx_v_m, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1630, __pyx_L1_error)
21591  __Pyx_GOTREF(__pyx_t_1);
21592  __pyx_r = __pyx_t_1;
21593  __pyx_t_1 = 0;
21594  goto __pyx_L0;
21595 
21596  /* function exit code */
21597  __pyx_L1_error:;
21598  __Pyx_XDECREF(__pyx_t_1);
21599  __Pyx_AddTraceback("PyClical.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
21600  __pyx_r = NULL;
21601  __pyx_L0:;
21602  __Pyx_XGIVEREF(__pyx_r);
21603  __Pyx_RefNannyFinishContext();
21604  return __pyx_r;
21605  }
21606 
21607  /* "PyClical.pyx":1639
21608  * return clifford(obj).outer_pow(m)
21609  *
21610  * cpdef inline complexifier(obj): # <<<<<<<<<<<<<<
21611  * """
21612  * Square root of -1 which commutes with all members of the frame of the given multivector.
21613  */
21614 
21615  static PyObject *__pyx_pw_8PyClical_49complexifier(PyObject *__pyx_self,
21616 #if CYTHON_METH_FASTCALL
21617 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21618 #else
21619 PyObject *__pyx_args, PyObject *__pyx_kwds
21620 #endif
21621 ); /*proto*/
21622  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_complexifier(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
21623  PyObject *__pyx_r = NULL;
21624  __Pyx_RefNannyDeclarations
21625  PyObject *__pyx_t_1 = NULL;
21626  Clifford __pyx_t_2;
21627  PyObject *__pyx_t_3 = NULL;
21628  int __pyx_lineno = 0;
21629  const char *__pyx_filename = NULL;
21630  int __pyx_clineno = 0;
21631  __Pyx_RefNannySetupContext("complexifier", 1);
21632 
21633  /* "PyClical.pyx":1652
21634  * {-1}
21635  * """
21636  * return clifford().wrap( glucat.complexifier(toClifford(obj)) ) # <<<<<<<<<<<<<<
21637  *
21638  * cpdef inline sqrt(obj, i = None):
21639  */
21640  __Pyx_XDECREF(__pyx_r);
21641  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1652, __pyx_L1_error)
21642  __Pyx_GOTREF(__pyx_t_1);
21643  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1652, __pyx_L1_error)
21644  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), complexifier(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error)
21645  __Pyx_GOTREF(__pyx_t_3);
21646  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21647  __pyx_r = __pyx_t_3;
21648  __pyx_t_3 = 0;
21649  goto __pyx_L0;
21650 
21651  /* "PyClical.pyx":1639
21652  * return clifford(obj).outer_pow(m)
21653  *
21654  * cpdef inline complexifier(obj): # <<<<<<<<<<<<<<
21655  * """
21656  * Square root of -1 which commutes with all members of the frame of the given multivector.
21657  */
21658 
21659  /* function exit code */
21660  __pyx_L1_error:;
21661  __Pyx_XDECREF(__pyx_t_1);
21662  __Pyx_XDECREF(__pyx_t_3);
21663  __Pyx_AddTraceback("PyClical.complexifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
21664  __pyx_r = 0;
21665  __pyx_L0:;
21666  __Pyx_XGIVEREF(__pyx_r);
21667  __Pyx_RefNannyFinishContext();
21668  return __pyx_r;
21669  }
21670 
21671  /* Python wrapper */
21672  static PyObject *__pyx_pw_8PyClical_49complexifier(PyObject *__pyx_self,
21673 #if CYTHON_METH_FASTCALL
21674 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21675 #else
21676 PyObject *__pyx_args, PyObject *__pyx_kwds
21677 #endif
21678 ); /*proto*/
21679  PyDoc_STRVAR(__pyx_doc_8PyClical_48complexifier, "\n Square root of -1 which commutes with all members of the frame of the given multivector.\n\n >>> print(complexifier(clifford(index_set({1}))))\n {1,2,3}\n >>> print(complexifier(clifford(index_set({-1}))))\n {-1}\n >>> print(complexifier(index_set({1})))\n {1,2,3}\n >>> print(complexifier(index_set({-1})))\n {-1}\n ");
21680  static PyMethodDef __pyx_mdef_8PyClical_49complexifier = {"complexifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_49complexifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_48complexifier};
21681  static PyObject *__pyx_pw_8PyClical_49complexifier(PyObject *__pyx_self,
21682 #if CYTHON_METH_FASTCALL
21683 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21684 #else
21685 PyObject *__pyx_args, PyObject *__pyx_kwds
21686 #endif
21687 ) {
21688  PyObject *__pyx_v_obj = 0;
21689  #if !CYTHON_METH_FASTCALL
21690  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
21691  #endif
21692  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
21693  PyObject* values[1] = {0};
21694  int __pyx_lineno = 0;
21695  const char *__pyx_filename = NULL;
21696  int __pyx_clineno = 0;
21697  PyObject *__pyx_r = 0;
21698  __Pyx_RefNannyDeclarations
21699  __Pyx_RefNannySetupContext("complexifier (wrapper)", 0);
21700  #if !CYTHON_METH_FASTCALL
21701  #if CYTHON_ASSUME_SAFE_MACROS
21702  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
21703  #else
21704  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
21705  #endif
21706  #endif
21707  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
21708  {
21709  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
21710  if (__pyx_kwds) {
21711  Py_ssize_t kw_args;
21712  switch (__pyx_nargs) {
21713  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
21714  CYTHON_FALLTHROUGH;
21715  case 0: break;
21716  default: goto __pyx_L5_argtuple_error;
21717  }
21718  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
21719  switch (__pyx_nargs) {
21720  case 0:
21721  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
21722  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
21723  kw_args--;
21724  }
21725  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1639, __pyx_L3_error)
21726  else goto __pyx_L5_argtuple_error;
21727  }
21728  if (unlikely(kw_args > 0)) {
21729  const Py_ssize_t kwd_pos_args = __pyx_nargs;
21730  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "complexifier") < 0)) __PYX_ERR(0, 1639, __pyx_L3_error)
21731  }
21732  } else if (unlikely(__pyx_nargs != 1)) {
21733  goto __pyx_L5_argtuple_error;
21734  } else {
21735  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
21736  }
21737  __pyx_v_obj = values[0];
21738  }
21739  goto __pyx_L6_skip;
21740  __pyx_L5_argtuple_error:;
21741  __Pyx_RaiseArgtupleInvalid("complexifier", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1639, __pyx_L3_error)
21742  __pyx_L6_skip:;
21743  goto __pyx_L4_argument_unpacking_done;
21744  __pyx_L3_error:;
21745  {
21746  Py_ssize_t __pyx_temp;
21747  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21748  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21749  }
21750  }
21751  __Pyx_AddTraceback("PyClical.complexifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
21752  __Pyx_RefNannyFinishContext();
21753  return NULL;
21754  __pyx_L4_argument_unpacking_done:;
21755  __pyx_r = __pyx_pf_8PyClical_48complexifier(__pyx_self, __pyx_v_obj);
21756 
21757  /* function exit code */
21758  {
21759  Py_ssize_t __pyx_temp;
21760  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
21761  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
21762  }
21763  }
21764  __Pyx_RefNannyFinishContext();
21765  return __pyx_r;
21766  }
21767 
21768  static PyObject *__pyx_pf_8PyClical_48complexifier(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
21769  PyObject *__pyx_r = NULL;
21770  __Pyx_RefNannyDeclarations
21771  PyObject *__pyx_t_1 = NULL;
21772  int __pyx_lineno = 0;
21773  const char *__pyx_filename = NULL;
21774  int __pyx_clineno = 0;
21775  __Pyx_RefNannySetupContext("complexifier", 1);
21776  __Pyx_XDECREF(__pyx_r);
21777  __pyx_t_1 = __pyx_f_8PyClical_complexifier(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error)
21778  __Pyx_GOTREF(__pyx_t_1);
21779  __pyx_r = __pyx_t_1;
21780  __pyx_t_1 = 0;
21781  goto __pyx_L0;
21782 
21783  /* function exit code */
21784  __pyx_L1_error:;
21785  __Pyx_XDECREF(__pyx_t_1);
21786  __Pyx_AddTraceback("PyClical.complexifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
21787  __pyx_r = NULL;
21788  __pyx_L0:;
21789  __Pyx_XGIVEREF(__pyx_r);
21790  __Pyx_RefNannyFinishContext();
21791  return __pyx_r;
21792  }
21793 
21794  /* "PyClical.pyx":1654
21795  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
21796  *
21797  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
21798  * """
21799  * Square root of multivector with optional complexifier.
21800  */
21801 
21802  static PyObject *__pyx_pw_8PyClical_51sqrt(PyObject *__pyx_self,
21803 #if CYTHON_METH_FASTCALL
21804 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
21805 #else
21806 PyObject *__pyx_args, PyObject *__pyx_kwds
21807 #endif
21808 ); /*proto*/
21809  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sqrt(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_sqrt *__pyx_optional_args) {
21810  PyObject *__pyx_v_i = ((PyObject *)Py_None);
21811  PyObject *__pyx_r = NULL;
21812  __Pyx_RefNannyDeclarations
21813  int __pyx_t_1;
21814  PyObject *__pyx_t_2 = NULL;
21815  Clifford __pyx_t_3;
21816  Clifford __pyx_t_4;
21817  Clifford __pyx_t_5;
21818  PyObject *__pyx_t_6 = NULL;
21819  PyObject *__pyx_t_7 = NULL;
21820  PyObject *__pyx_t_8 = NULL;
21821  PyObject *__pyx_t_9 = NULL;
21822  PyObject *__pyx_t_10 = NULL;
21823  int __pyx_t_11;
21824  PyObject *__pyx_t_12 = NULL;
21825  PyObject *__pyx_t_13 = NULL;
21826  int __pyx_lineno = 0;
21827  const char *__pyx_filename = NULL;
21828  int __pyx_clineno = 0;
21829  __Pyx_RefNannySetupContext("sqrt", 1);
21830  if (__pyx_optional_args) {
21831  if (__pyx_optional_args->__pyx_n > 0) {
21832  __pyx_v_i = __pyx_optional_args->i;
21833  }
21834  }
21835 
21836  /* "PyClical.pyx":1669
21837  * -1
21838  * """
21839  * if not (i is None): # <<<<<<<<<<<<<<
21840  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
21841  * else:
21842  */
21843  __pyx_t_1 = (__pyx_v_i != Py_None);
21844  if (__pyx_t_1) {
21845 
21846  /* "PyClical.pyx":1670
21847  * """
21848  * if not (i is None):
21849  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
21850  * else:
21851  * try:
21852  */
21853  __Pyx_XDECREF(__pyx_r);
21854  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1670, __pyx_L1_error)
21855  __Pyx_GOTREF(__pyx_t_2);
21856  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1670, __pyx_L1_error)
21857  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1670, __pyx_L1_error)
21858  try {
21859  __pyx_t_5 = sqrt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
21860  } catch(...) {
21861  __Pyx_CppExn2PyErr();
21862  __PYX_ERR(0, 1670, __pyx_L1_error)
21863  }
21864  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1670, __pyx_L1_error)
21865  __Pyx_GOTREF(__pyx_t_6);
21866  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21867  __pyx_r = __pyx_t_6;
21868  __pyx_t_6 = 0;
21869  goto __pyx_L0;
21870 
21871  /* "PyClical.pyx":1669
21872  * -1
21873  * """
21874  * if not (i is None): # <<<<<<<<<<<<<<
21875  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
21876  * else:
21877  */
21878  }
21879 
21880  /* "PyClical.pyx":1672
21881  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
21882  * else:
21883  * try: # <<<<<<<<<<<<<<
21884  * return math.sqrt(obj)
21885  * except:
21886  */
21887  /*else*/ {
21888  {
21889  __Pyx_PyThreadState_declare
21890  __Pyx_PyThreadState_assign
21891  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
21892  __Pyx_XGOTREF(__pyx_t_7);
21893  __Pyx_XGOTREF(__pyx_t_8);
21894  __Pyx_XGOTREF(__pyx_t_9);
21895  /*try:*/ {
21896 
21897  /* "PyClical.pyx":1673
21898  * else:
21899  * try:
21900  * return math.sqrt(obj) # <<<<<<<<<<<<<<
21901  * except:
21902  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
21903  */
21904  __Pyx_XDECREF(__pyx_r);
21905  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1673, __pyx_L4_error)
21906  __Pyx_GOTREF(__pyx_t_2);
21907  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1673, __pyx_L4_error)
21908  __Pyx_GOTREF(__pyx_t_10);
21909  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21910  __pyx_t_2 = NULL;
21911  __pyx_t_11 = 0;
21912  #if CYTHON_UNPACK_METHODS
21913  if (unlikely(PyMethod_Check(__pyx_t_10))) {
21914  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
21915  if (likely(__pyx_t_2)) {
21916  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
21917  __Pyx_INCREF(__pyx_t_2);
21918  __Pyx_INCREF(function);
21919  __Pyx_DECREF_SET(__pyx_t_10, function);
21920  __pyx_t_11 = 1;
21921  }
21922  }
21923  #endif
21924  {
21925  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
21926  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
21927  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21928  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1673, __pyx_L4_error)
21929  __Pyx_GOTREF(__pyx_t_6);
21930  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
21931  }
21932  __pyx_r = __pyx_t_6;
21933  __pyx_t_6 = 0;
21934  goto __pyx_L8_try_return;
21935 
21936  /* "PyClical.pyx":1672
21937  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
21938  * else:
21939  * try: # <<<<<<<<<<<<<<
21940  * return math.sqrt(obj)
21941  * except:
21942  */
21943  }
21944  __pyx_L4_error:;
21945  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
21946  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21947  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
21948 
21949  /* "PyClical.pyx":1674
21950  * try:
21951  * return math.sqrt(obj)
21952  * except: # <<<<<<<<<<<<<<
21953  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
21954  *
21955  */
21956  /*except:*/ {
21957  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
21958  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1674, __pyx_L6_except_error)
21959  __Pyx_XGOTREF(__pyx_t_6);
21960  __Pyx_XGOTREF(__pyx_t_10);
21961  __Pyx_XGOTREF(__pyx_t_2);
21962 
21963  /* "PyClical.pyx":1675
21964  * return math.sqrt(obj)
21965  * except:
21966  * return clifford().wrap( glucat.sqrt(toClifford(obj)) ) # <<<<<<<<<<<<<<
21967  *
21968  * cpdef inline exp(obj):
21969  */
21970  __Pyx_XDECREF(__pyx_r);
21971  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1675, __pyx_L6_except_error)
21972  __Pyx_GOTREF(__pyx_t_12);
21973  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1675, __pyx_L6_except_error)
21974  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), sqrt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1675, __pyx_L6_except_error)
21975  __Pyx_GOTREF(__pyx_t_13);
21976  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
21977  __pyx_r = __pyx_t_13;
21978  __pyx_t_13 = 0;
21979  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21980  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21981  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
21982  goto __pyx_L7_except_return;
21983  }
21984 
21985  /* "PyClical.pyx":1672
21986  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
21987  * else:
21988  * try: # <<<<<<<<<<<<<<
21989  * return math.sqrt(obj)
21990  * except:
21991  */
21992  __pyx_L6_except_error:;
21993  __Pyx_XGIVEREF(__pyx_t_7);
21994  __Pyx_XGIVEREF(__pyx_t_8);
21995  __Pyx_XGIVEREF(__pyx_t_9);
21996  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
21997  goto __pyx_L1_error;
21998  __pyx_L8_try_return:;
21999  __Pyx_XGIVEREF(__pyx_t_7);
22000  __Pyx_XGIVEREF(__pyx_t_8);
22001  __Pyx_XGIVEREF(__pyx_t_9);
22002  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
22003  goto __pyx_L0;
22004  __pyx_L7_except_return:;
22005  __Pyx_XGIVEREF(__pyx_t_7);
22006  __Pyx_XGIVEREF(__pyx_t_8);
22007  __Pyx_XGIVEREF(__pyx_t_9);
22008  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
22009  goto __pyx_L0;
22010  }
22011  }
22012 
22013  /* "PyClical.pyx":1654
22014  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
22015  *
22016  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
22017  * """
22018  * Square root of multivector with optional complexifier.
22019  */
22020 
22021  /* function exit code */
22022  __pyx_L1_error:;
22023  __Pyx_XDECREF(__pyx_t_2);
22024  __Pyx_XDECREF(__pyx_t_6);
22025  __Pyx_XDECREF(__pyx_t_10);
22026  __Pyx_XDECREF(__pyx_t_12);
22027  __Pyx_XDECREF(__pyx_t_13);
22028  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
22029  __pyx_r = 0;
22030  __pyx_L0:;
22031  __Pyx_XGIVEREF(__pyx_r);
22032  __Pyx_RefNannyFinishContext();
22033  return __pyx_r;
22034  }
22035 
22036  /* Python wrapper */
22037  static PyObject *__pyx_pw_8PyClical_51sqrt(PyObject *__pyx_self,
22038 #if CYTHON_METH_FASTCALL
22039 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22040 #else
22041 PyObject *__pyx_args, PyObject *__pyx_kwds
22042 #endif
22043 ); /*proto*/
22044  PyDoc_STRVAR(__pyx_doc_8PyClical_50sqrt, "\n Square root of multivector with optional complexifier.\n\n >>> print(sqrt(-1))\n {-1}\n >>> print(sqrt(clifford(\"2{-1}\")))\n 1+{-1}\n >>> j=sqrt(-1,complexifier(index_set({1}))); print(j); print(j*j)\n {1,2,3}\n -1\n >>> j=sqrt(-1,\"{1,2,3}\"); print(j); print(j*j)\n {1,2,3}\n -1\n ");
22045  static PyMethodDef __pyx_mdef_8PyClical_51sqrt = {"sqrt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_51sqrt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_50sqrt};
22046  static PyObject *__pyx_pw_8PyClical_51sqrt(PyObject *__pyx_self,
22047 #if CYTHON_METH_FASTCALL
22048 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22049 #else
22050 PyObject *__pyx_args, PyObject *__pyx_kwds
22051 #endif
22052 ) {
22053  PyObject *__pyx_v_obj = 0;
22054  PyObject *__pyx_v_i = 0;
22055  #if !CYTHON_METH_FASTCALL
22056  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
22057  #endif
22058  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
22059  PyObject* values[2] = {0,0};
22060  int __pyx_lineno = 0;
22061  const char *__pyx_filename = NULL;
22062  int __pyx_clineno = 0;
22063  PyObject *__pyx_r = 0;
22064  __Pyx_RefNannyDeclarations
22065  __Pyx_RefNannySetupContext("sqrt (wrapper)", 0);
22066  #if !CYTHON_METH_FASTCALL
22067  #if CYTHON_ASSUME_SAFE_MACROS
22068  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
22069  #else
22070  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
22071  #endif
22072  #endif
22073  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
22074  {
22075  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
22076  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
22077  if (__pyx_kwds) {
22078  Py_ssize_t kw_args;
22079  switch (__pyx_nargs) {
22080  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
22081  CYTHON_FALLTHROUGH;
22082  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
22083  CYTHON_FALLTHROUGH;
22084  case 0: break;
22085  default: goto __pyx_L5_argtuple_error;
22086  }
22087  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
22088  switch (__pyx_nargs) {
22089  case 0:
22090  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
22091  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
22092  kw_args--;
22093  }
22094  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1654, __pyx_L3_error)
22095  else goto __pyx_L5_argtuple_error;
22096  CYTHON_FALLTHROUGH;
22097  case 1:
22098  if (kw_args > 0) {
22099  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
22100  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
22101  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1654, __pyx_L3_error)
22102  }
22103  }
22104  if (unlikely(kw_args > 0)) {
22105  const Py_ssize_t kwd_pos_args = __pyx_nargs;
22106  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sqrt") < 0)) __PYX_ERR(0, 1654, __pyx_L3_error)
22107  }
22108  } else {
22109  switch (__pyx_nargs) {
22110  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
22111  CYTHON_FALLTHROUGH;
22112  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
22113  break;
22114  default: goto __pyx_L5_argtuple_error;
22115  }
22116  }
22117  __pyx_v_obj = values[0];
22118  __pyx_v_i = values[1];
22119  }
22120  goto __pyx_L6_skip;
22121  __pyx_L5_argtuple_error:;
22122  __Pyx_RaiseArgtupleInvalid("sqrt", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1654, __pyx_L3_error)
22123  __pyx_L6_skip:;
22124  goto __pyx_L4_argument_unpacking_done;
22125  __pyx_L3_error:;
22126  {
22127  Py_ssize_t __pyx_temp;
22128  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
22129  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
22130  }
22131  }
22132  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
22133  __Pyx_RefNannyFinishContext();
22134  return NULL;
22135  __pyx_L4_argument_unpacking_done:;
22136  __pyx_r = __pyx_pf_8PyClical_50sqrt(__pyx_self, __pyx_v_obj, __pyx_v_i);
22137 
22138  /* function exit code */
22139  {
22140  Py_ssize_t __pyx_temp;
22141  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
22142  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
22143  }
22144  }
22145  __Pyx_RefNannyFinishContext();
22146  return __pyx_r;
22147  }
22148 
22149  static PyObject *__pyx_pf_8PyClical_50sqrt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
22150  PyObject *__pyx_r = NULL;
22151  __Pyx_RefNannyDeclarations
22152  PyObject *__pyx_t_1 = NULL;
22153  struct __pyx_opt_args_8PyClical_sqrt __pyx_t_2;
22154  int __pyx_lineno = 0;
22155  const char *__pyx_filename = NULL;
22156  int __pyx_clineno = 0;
22157  __Pyx_RefNannySetupContext("sqrt", 1);
22158  __Pyx_XDECREF(__pyx_r);
22159  __pyx_t_2.__pyx_n = 1;
22160  __pyx_t_2.i = __pyx_v_i;
22161  __pyx_t_1 = __pyx_f_8PyClical_sqrt(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error)
22162  __Pyx_GOTREF(__pyx_t_1);
22163  __pyx_r = __pyx_t_1;
22164  __pyx_t_1 = 0;
22165  goto __pyx_L0;
22166 
22167  /* function exit code */
22168  __pyx_L1_error:;
22169  __Pyx_XDECREF(__pyx_t_1);
22170  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
22171  __pyx_r = NULL;
22172  __pyx_L0:;
22173  __Pyx_XGIVEREF(__pyx_r);
22174  __Pyx_RefNannyFinishContext();
22175  return __pyx_r;
22176  }
22177 
22178  /* "PyClical.pyx":1677
22179  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
22180  *
22181  * cpdef inline exp(obj): # <<<<<<<<<<<<<<
22182  * """
22183  * Exponential of multivector.
22184  */
22185 
22186  static PyObject *__pyx_pw_8PyClical_53exp(PyObject *__pyx_self,
22187 #if CYTHON_METH_FASTCALL
22188 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22189 #else
22190 PyObject *__pyx_args, PyObject *__pyx_kwds
22191 #endif
22192 ); /*proto*/
22193  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_exp(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
22194  PyObject *__pyx_r = NULL;
22195  __Pyx_RefNannyDeclarations
22196  PyObject *__pyx_t_1 = NULL;
22197  PyObject *__pyx_t_2 = NULL;
22198  PyObject *__pyx_t_3 = NULL;
22199  PyObject *__pyx_t_4 = NULL;
22200  PyObject *__pyx_t_5 = NULL;
22201  PyObject *__pyx_t_6 = NULL;
22202  int __pyx_t_7;
22203  PyObject *__pyx_t_8 = NULL;
22204  Clifford __pyx_t_9;
22205  PyObject *__pyx_t_10 = NULL;
22206  int __pyx_lineno = 0;
22207  const char *__pyx_filename = NULL;
22208  int __pyx_clineno = 0;
22209  __Pyx_RefNannySetupContext("exp", 1);
22210 
22211  /* "PyClical.pyx":1686
22212  * {1,2}
22213  * """
22214  * try: # <<<<<<<<<<<<<<
22215  * return math.exp(obj)
22216  * except:
22217  */
22218  {
22219  __Pyx_PyThreadState_declare
22220  __Pyx_PyThreadState_assign
22221  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
22222  __Pyx_XGOTREF(__pyx_t_1);
22223  __Pyx_XGOTREF(__pyx_t_2);
22224  __Pyx_XGOTREF(__pyx_t_3);
22225  /*try:*/ {
22226 
22227  /* "PyClical.pyx":1687
22228  * """
22229  * try:
22230  * return math.exp(obj) # <<<<<<<<<<<<<<
22231  * except:
22232  * return clifford().wrap( glucat.exp(toClifford(obj)) )
22233  */
22234  __Pyx_XDECREF(__pyx_r);
22235  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1687, __pyx_L3_error)
22236  __Pyx_GOTREF(__pyx_t_5);
22237  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1687, __pyx_L3_error)
22238  __Pyx_GOTREF(__pyx_t_6);
22239  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22240  __pyx_t_5 = NULL;
22241  __pyx_t_7 = 0;
22242  #if CYTHON_UNPACK_METHODS
22243  if (unlikely(PyMethod_Check(__pyx_t_6))) {
22244  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
22245  if (likely(__pyx_t_5)) {
22246  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
22247  __Pyx_INCREF(__pyx_t_5);
22248  __Pyx_INCREF(function);
22249  __Pyx_DECREF_SET(__pyx_t_6, function);
22250  __pyx_t_7 = 1;
22251  }
22252  }
22253  #endif
22254  {
22255  PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_obj};
22256  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
22257  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
22258  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1687, __pyx_L3_error)
22259  __Pyx_GOTREF(__pyx_t_4);
22260  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22261  }
22262  __pyx_r = __pyx_t_4;
22263  __pyx_t_4 = 0;
22264  goto __pyx_L7_try_return;
22265 
22266  /* "PyClical.pyx":1686
22267  * {1,2}
22268  * """
22269  * try: # <<<<<<<<<<<<<<
22270  * return math.exp(obj)
22271  * except:
22272  */
22273  }
22274  __pyx_L3_error:;
22275  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
22276  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
22277  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
22278 
22279  /* "PyClical.pyx":1688
22280  * try:
22281  * return math.exp(obj)
22282  * except: # <<<<<<<<<<<<<<
22283  * return clifford().wrap( glucat.exp(toClifford(obj)) )
22284  *
22285  */
22286  /*except:*/ {
22287  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
22288  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 1688, __pyx_L5_except_error)
22289  __Pyx_XGOTREF(__pyx_t_4);
22290  __Pyx_XGOTREF(__pyx_t_6);
22291  __Pyx_XGOTREF(__pyx_t_5);
22292 
22293  /* "PyClical.pyx":1689
22294  * return math.exp(obj)
22295  * except:
22296  * return clifford().wrap( glucat.exp(toClifford(obj)) ) # <<<<<<<<<<<<<<
22297  *
22298  * cpdef inline log(obj,i = None):
22299  */
22300  __Pyx_XDECREF(__pyx_r);
22301  __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1689, __pyx_L5_except_error)
22302  __Pyx_GOTREF(__pyx_t_8);
22303  __pyx_t_9 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1689, __pyx_L5_except_error)
22304  __pyx_t_10 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_8), exp(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1689, __pyx_L5_except_error)
22305  __Pyx_GOTREF(__pyx_t_10);
22306  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22307  __pyx_r = __pyx_t_10;
22308  __pyx_t_10 = 0;
22309  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22310  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22311  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22312  goto __pyx_L6_except_return;
22313  }
22314 
22315  /* "PyClical.pyx":1686
22316  * {1,2}
22317  * """
22318  * try: # <<<<<<<<<<<<<<
22319  * return math.exp(obj)
22320  * except:
22321  */
22322  __pyx_L5_except_error:;
22323  __Pyx_XGIVEREF(__pyx_t_1);
22324  __Pyx_XGIVEREF(__pyx_t_2);
22325  __Pyx_XGIVEREF(__pyx_t_3);
22326  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
22327  goto __pyx_L1_error;
22328  __pyx_L7_try_return:;
22329  __Pyx_XGIVEREF(__pyx_t_1);
22330  __Pyx_XGIVEREF(__pyx_t_2);
22331  __Pyx_XGIVEREF(__pyx_t_3);
22332  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
22333  goto __pyx_L0;
22334  __pyx_L6_except_return:;
22335  __Pyx_XGIVEREF(__pyx_t_1);
22336  __Pyx_XGIVEREF(__pyx_t_2);
22337  __Pyx_XGIVEREF(__pyx_t_3);
22338  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
22339  goto __pyx_L0;
22340  }
22341 
22342  /* "PyClical.pyx":1677
22343  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
22344  *
22345  * cpdef inline exp(obj): # <<<<<<<<<<<<<<
22346  * """
22347  * Exponential of multivector.
22348  */
22349 
22350  /* function exit code */
22351  __pyx_L1_error:;
22352  __Pyx_XDECREF(__pyx_t_4);
22353  __Pyx_XDECREF(__pyx_t_5);
22354  __Pyx_XDECREF(__pyx_t_6);
22355  __Pyx_XDECREF(__pyx_t_8);
22356  __Pyx_XDECREF(__pyx_t_10);
22357  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
22358  __pyx_r = 0;
22359  __pyx_L0:;
22360  __Pyx_XGIVEREF(__pyx_r);
22361  __Pyx_RefNannyFinishContext();
22362  return __pyx_r;
22363  }
22364 
22365  /* Python wrapper */
22366  static PyObject *__pyx_pw_8PyClical_53exp(PyObject *__pyx_self,
22367 #if CYTHON_METH_FASTCALL
22368 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22369 #else
22370 PyObject *__pyx_args, PyObject *__pyx_kwds
22371 #endif
22372 ); /*proto*/
22373  PyDoc_STRVAR(__pyx_doc_8PyClical_52exp, "\n Exponential of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/4; print(exp(x))\n 0.7071+0.7071{1,2}\n >>> x=clifford(\"{1,2}\") * pi/2; print(exp(x))\n {1,2}\n ");
22374  static PyMethodDef __pyx_mdef_8PyClical_53exp = {"exp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_53exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_52exp};
22375  static PyObject *__pyx_pw_8PyClical_53exp(PyObject *__pyx_self,
22376 #if CYTHON_METH_FASTCALL
22377 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22378 #else
22379 PyObject *__pyx_args, PyObject *__pyx_kwds
22380 #endif
22381 ) {
22382  PyObject *__pyx_v_obj = 0;
22383  #if !CYTHON_METH_FASTCALL
22384  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
22385  #endif
22386  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
22387  PyObject* values[1] = {0};
22388  int __pyx_lineno = 0;
22389  const char *__pyx_filename = NULL;
22390  int __pyx_clineno = 0;
22391  PyObject *__pyx_r = 0;
22392  __Pyx_RefNannyDeclarations
22393  __Pyx_RefNannySetupContext("exp (wrapper)", 0);
22394  #if !CYTHON_METH_FASTCALL
22395  #if CYTHON_ASSUME_SAFE_MACROS
22396  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
22397  #else
22398  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
22399  #endif
22400  #endif
22401  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
22402  {
22403  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
22404  if (__pyx_kwds) {
22405  Py_ssize_t kw_args;
22406  switch (__pyx_nargs) {
22407  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
22408  CYTHON_FALLTHROUGH;
22409  case 0: break;
22410  default: goto __pyx_L5_argtuple_error;
22411  }
22412  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
22413  switch (__pyx_nargs) {
22414  case 0:
22415  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
22416  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
22417  kw_args--;
22418  }
22419  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1677, __pyx_L3_error)
22420  else goto __pyx_L5_argtuple_error;
22421  }
22422  if (unlikely(kw_args > 0)) {
22423  const Py_ssize_t kwd_pos_args = __pyx_nargs;
22424  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "exp") < 0)) __PYX_ERR(0, 1677, __pyx_L3_error)
22425  }
22426  } else if (unlikely(__pyx_nargs != 1)) {
22427  goto __pyx_L5_argtuple_error;
22428  } else {
22429  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
22430  }
22431  __pyx_v_obj = values[0];
22432  }
22433  goto __pyx_L6_skip;
22434  __pyx_L5_argtuple_error:;
22435  __Pyx_RaiseArgtupleInvalid("exp", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1677, __pyx_L3_error)
22436  __pyx_L6_skip:;
22437  goto __pyx_L4_argument_unpacking_done;
22438  __pyx_L3_error:;
22439  {
22440  Py_ssize_t __pyx_temp;
22441  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
22442  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
22443  }
22444  }
22445  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
22446  __Pyx_RefNannyFinishContext();
22447  return NULL;
22448  __pyx_L4_argument_unpacking_done:;
22449  __pyx_r = __pyx_pf_8PyClical_52exp(__pyx_self, __pyx_v_obj);
22450 
22451  /* function exit code */
22452  {
22453  Py_ssize_t __pyx_temp;
22454  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
22455  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
22456  }
22457  }
22458  __Pyx_RefNannyFinishContext();
22459  return __pyx_r;
22460  }
22461 
22462  static PyObject *__pyx_pf_8PyClical_52exp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
22463  PyObject *__pyx_r = NULL;
22464  __Pyx_RefNannyDeclarations
22465  PyObject *__pyx_t_1 = NULL;
22466  int __pyx_lineno = 0;
22467  const char *__pyx_filename = NULL;
22468  int __pyx_clineno = 0;
22469  __Pyx_RefNannySetupContext("exp", 1);
22470  __Pyx_XDECREF(__pyx_r);
22471  __pyx_t_1 = __pyx_f_8PyClical_exp(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1677, __pyx_L1_error)
22472  __Pyx_GOTREF(__pyx_t_1);
22473  __pyx_r = __pyx_t_1;
22474  __pyx_t_1 = 0;
22475  goto __pyx_L0;
22476 
22477  /* function exit code */
22478  __pyx_L1_error:;
22479  __Pyx_XDECREF(__pyx_t_1);
22480  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
22481  __pyx_r = NULL;
22482  __pyx_L0:;
22483  __Pyx_XGIVEREF(__pyx_r);
22484  __Pyx_RefNannyFinishContext();
22485  return __pyx_r;
22486  }
22487 
22488  /* "PyClical.pyx":1691
22489  * return clifford().wrap( glucat.exp(toClifford(obj)) )
22490  *
22491  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
22492  * """
22493  * Natural logarithm of multivector with optional complexifier.
22494  */
22495 
22496  static PyObject *__pyx_pw_8PyClical_55log(PyObject *__pyx_self,
22497 #if CYTHON_METH_FASTCALL
22498 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22499 #else
22500 PyObject *__pyx_args, PyObject *__pyx_kwds
22501 #endif
22502 ); /*proto*/
22503  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_log(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_log *__pyx_optional_args) {
22504  PyObject *__pyx_v_i = ((PyObject *)Py_None);
22505  PyObject *__pyx_r = NULL;
22506  __Pyx_RefNannyDeclarations
22507  int __pyx_t_1;
22508  PyObject *__pyx_t_2 = NULL;
22509  Clifford __pyx_t_3;
22510  Clifford __pyx_t_4;
22511  Clifford __pyx_t_5;
22512  PyObject *__pyx_t_6 = NULL;
22513  PyObject *__pyx_t_7 = NULL;
22514  PyObject *__pyx_t_8 = NULL;
22515  PyObject *__pyx_t_9 = NULL;
22516  PyObject *__pyx_t_10 = NULL;
22517  int __pyx_t_11;
22518  PyObject *__pyx_t_12 = NULL;
22519  PyObject *__pyx_t_13 = NULL;
22520  int __pyx_lineno = 0;
22521  const char *__pyx_filename = NULL;
22522  int __pyx_clineno = 0;
22523  __Pyx_RefNannySetupContext("log", 1);
22524  if (__pyx_optional_args) {
22525  if (__pyx_optional_args->__pyx_n > 0) {
22526  __pyx_v_i = __pyx_optional_args->i;
22527  }
22528  }
22529 
22530  /* "PyClical.pyx":1706
22531  * RuntimeError: check_complex(val, i): i is not a valid complexifier for val
22532  * """
22533  * if not (i is None): # <<<<<<<<<<<<<<
22534  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
22535  * else:
22536  */
22537  __pyx_t_1 = (__pyx_v_i != Py_None);
22538  if (__pyx_t_1) {
22539 
22540  /* "PyClical.pyx":1707
22541  * """
22542  * if not (i is None):
22543  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
22544  * else:
22545  * try:
22546  */
22547  __Pyx_XDECREF(__pyx_r);
22548  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1707, __pyx_L1_error)
22549  __Pyx_GOTREF(__pyx_t_2);
22550  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1707, __pyx_L1_error)
22551  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1707, __pyx_L1_error)
22552  try {
22553  __pyx_t_5 = log(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
22554  } catch(...) {
22555  __Pyx_CppExn2PyErr();
22556  __PYX_ERR(0, 1707, __pyx_L1_error)
22557  }
22558  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1707, __pyx_L1_error)
22559  __Pyx_GOTREF(__pyx_t_6);
22560  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22561  __pyx_r = __pyx_t_6;
22562  __pyx_t_6 = 0;
22563  goto __pyx_L0;
22564 
22565  /* "PyClical.pyx":1706
22566  * RuntimeError: check_complex(val, i): i is not a valid complexifier for val
22567  * """
22568  * if not (i is None): # <<<<<<<<<<<<<<
22569  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
22570  * else:
22571  */
22572  }
22573 
22574  /* "PyClical.pyx":1709
22575  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
22576  * else:
22577  * try: # <<<<<<<<<<<<<<
22578  * return math.log(obj)
22579  * except:
22580  */
22581  /*else*/ {
22582  {
22583  __Pyx_PyThreadState_declare
22584  __Pyx_PyThreadState_assign
22585  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
22586  __Pyx_XGOTREF(__pyx_t_7);
22587  __Pyx_XGOTREF(__pyx_t_8);
22588  __Pyx_XGOTREF(__pyx_t_9);
22589  /*try:*/ {
22590 
22591  /* "PyClical.pyx":1710
22592  * else:
22593  * try:
22594  * return math.log(obj) # <<<<<<<<<<<<<<
22595  * except:
22596  * return clifford().wrap( glucat.log(toClifford(obj)) )
22597  */
22598  __Pyx_XDECREF(__pyx_r);
22599  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1710, __pyx_L4_error)
22600  __Pyx_GOTREF(__pyx_t_2);
22601  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1710, __pyx_L4_error)
22602  __Pyx_GOTREF(__pyx_t_10);
22603  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22604  __pyx_t_2 = NULL;
22605  __pyx_t_11 = 0;
22606  #if CYTHON_UNPACK_METHODS
22607  if (unlikely(PyMethod_Check(__pyx_t_10))) {
22608  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
22609  if (likely(__pyx_t_2)) {
22610  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
22611  __Pyx_INCREF(__pyx_t_2);
22612  __Pyx_INCREF(function);
22613  __Pyx_DECREF_SET(__pyx_t_10, function);
22614  __pyx_t_11 = 1;
22615  }
22616  }
22617  #endif
22618  {
22619  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
22620  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
22621  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
22622  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1710, __pyx_L4_error)
22623  __Pyx_GOTREF(__pyx_t_6);
22624  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
22625  }
22626  __pyx_r = __pyx_t_6;
22627  __pyx_t_6 = 0;
22628  goto __pyx_L8_try_return;
22629 
22630  /* "PyClical.pyx":1709
22631  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
22632  * else:
22633  * try: # <<<<<<<<<<<<<<
22634  * return math.log(obj)
22635  * except:
22636  */
22637  }
22638  __pyx_L4_error:;
22639  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
22640  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
22641  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
22642 
22643  /* "PyClical.pyx":1711
22644  * try:
22645  * return math.log(obj)
22646  * except: # <<<<<<<<<<<<<<
22647  * return clifford().wrap( glucat.log(toClifford(obj)) )
22648  *
22649  */
22650  /*except:*/ {
22651  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
22652  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1711, __pyx_L6_except_error)
22653  __Pyx_XGOTREF(__pyx_t_6);
22654  __Pyx_XGOTREF(__pyx_t_10);
22655  __Pyx_XGOTREF(__pyx_t_2);
22656 
22657  /* "PyClical.pyx":1712
22658  * return math.log(obj)
22659  * except:
22660  * return clifford().wrap( glucat.log(toClifford(obj)) ) # <<<<<<<<<<<<<<
22661  *
22662  * cpdef inline cos(obj,i = None):
22663  */
22664  __Pyx_XDECREF(__pyx_r);
22665  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1712, __pyx_L6_except_error)
22666  __Pyx_GOTREF(__pyx_t_12);
22667  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1712, __pyx_L6_except_error)
22668  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), log(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1712, __pyx_L6_except_error)
22669  __Pyx_GOTREF(__pyx_t_13);
22670  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
22671  __pyx_r = __pyx_t_13;
22672  __pyx_t_13 = 0;
22673  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22674  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22675  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
22676  goto __pyx_L7_except_return;
22677  }
22678 
22679  /* "PyClical.pyx":1709
22680  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
22681  * else:
22682  * try: # <<<<<<<<<<<<<<
22683  * return math.log(obj)
22684  * except:
22685  */
22686  __pyx_L6_except_error:;
22687  __Pyx_XGIVEREF(__pyx_t_7);
22688  __Pyx_XGIVEREF(__pyx_t_8);
22689  __Pyx_XGIVEREF(__pyx_t_9);
22690  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
22691  goto __pyx_L1_error;
22692  __pyx_L8_try_return:;
22693  __Pyx_XGIVEREF(__pyx_t_7);
22694  __Pyx_XGIVEREF(__pyx_t_8);
22695  __Pyx_XGIVEREF(__pyx_t_9);
22696  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
22697  goto __pyx_L0;
22698  __pyx_L7_except_return:;
22699  __Pyx_XGIVEREF(__pyx_t_7);
22700  __Pyx_XGIVEREF(__pyx_t_8);
22701  __Pyx_XGIVEREF(__pyx_t_9);
22702  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
22703  goto __pyx_L0;
22704  }
22705  }
22706 
22707  /* "PyClical.pyx":1691
22708  * return clifford().wrap( glucat.exp(toClifford(obj)) )
22709  *
22710  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
22711  * """
22712  * Natural logarithm of multivector with optional complexifier.
22713  */
22714 
22715  /* function exit code */
22716  __pyx_L1_error:;
22717  __Pyx_XDECREF(__pyx_t_2);
22718  __Pyx_XDECREF(__pyx_t_6);
22719  __Pyx_XDECREF(__pyx_t_10);
22720  __Pyx_XDECREF(__pyx_t_12);
22721  __Pyx_XDECREF(__pyx_t_13);
22722  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
22723  __pyx_r = 0;
22724  __pyx_L0:;
22725  __Pyx_XGIVEREF(__pyx_r);
22726  __Pyx_RefNannyFinishContext();
22727  return __pyx_r;
22728  }
22729 
22730  /* Python wrapper */
22731  static PyObject *__pyx_pw_8PyClical_55log(PyObject *__pyx_self,
22732 #if CYTHON_METH_FASTCALL
22733 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22734 #else
22735 PyObject *__pyx_args, PyObject *__pyx_kwds
22736 #endif
22737 ); /*proto*/
22738  PyDoc_STRVAR(__pyx_doc_8PyClical_54log, "\n Natural logarithm of multivector with optional complexifier.\n\n >>> x=clifford(\"{-1}\"); print((log(x,\"{-1}\") * 2/pi))\n {-1}\n >>> x=clifford(\"{1,2}\"); print((log(x,\"{1,2,3}\") * 2/pi))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print((log(x) * 2/pi))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print((log(x,\"{1,2}\") * 2/pi))\n Traceback (most recent call last):\n ...\n RuntimeError: check_complex(val, i): i is not a valid complexifier for val\n ");
22739  static PyMethodDef __pyx_mdef_8PyClical_55log = {"log", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_55log, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_54log};
22740  static PyObject *__pyx_pw_8PyClical_55log(PyObject *__pyx_self,
22741 #if CYTHON_METH_FASTCALL
22742 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22743 #else
22744 PyObject *__pyx_args, PyObject *__pyx_kwds
22745 #endif
22746 ) {
22747  PyObject *__pyx_v_obj = 0;
22748  PyObject *__pyx_v_i = 0;
22749  #if !CYTHON_METH_FASTCALL
22750  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
22751  #endif
22752  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
22753  PyObject* values[2] = {0,0};
22754  int __pyx_lineno = 0;
22755  const char *__pyx_filename = NULL;
22756  int __pyx_clineno = 0;
22757  PyObject *__pyx_r = 0;
22758  __Pyx_RefNannyDeclarations
22759  __Pyx_RefNannySetupContext("log (wrapper)", 0);
22760  #if !CYTHON_METH_FASTCALL
22761  #if CYTHON_ASSUME_SAFE_MACROS
22762  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
22763  #else
22764  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
22765  #endif
22766  #endif
22767  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
22768  {
22769  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
22770  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
22771  if (__pyx_kwds) {
22772  Py_ssize_t kw_args;
22773  switch (__pyx_nargs) {
22774  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
22775  CYTHON_FALLTHROUGH;
22776  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
22777  CYTHON_FALLTHROUGH;
22778  case 0: break;
22779  default: goto __pyx_L5_argtuple_error;
22780  }
22781  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
22782  switch (__pyx_nargs) {
22783  case 0:
22784  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
22785  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
22786  kw_args--;
22787  }
22788  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1691, __pyx_L3_error)
22789  else goto __pyx_L5_argtuple_error;
22790  CYTHON_FALLTHROUGH;
22791  case 1:
22792  if (kw_args > 0) {
22793  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
22794  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
22795  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1691, __pyx_L3_error)
22796  }
22797  }
22798  if (unlikely(kw_args > 0)) {
22799  const Py_ssize_t kwd_pos_args = __pyx_nargs;
22800  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "log") < 0)) __PYX_ERR(0, 1691, __pyx_L3_error)
22801  }
22802  } else {
22803  switch (__pyx_nargs) {
22804  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
22805  CYTHON_FALLTHROUGH;
22806  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
22807  break;
22808  default: goto __pyx_L5_argtuple_error;
22809  }
22810  }
22811  __pyx_v_obj = values[0];
22812  __pyx_v_i = values[1];
22813  }
22814  goto __pyx_L6_skip;
22815  __pyx_L5_argtuple_error:;
22816  __Pyx_RaiseArgtupleInvalid("log", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1691, __pyx_L3_error)
22817  __pyx_L6_skip:;
22818  goto __pyx_L4_argument_unpacking_done;
22819  __pyx_L3_error:;
22820  {
22821  Py_ssize_t __pyx_temp;
22822  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
22823  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
22824  }
22825  }
22826  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
22827  __Pyx_RefNannyFinishContext();
22828  return NULL;
22829  __pyx_L4_argument_unpacking_done:;
22830  __pyx_r = __pyx_pf_8PyClical_54log(__pyx_self, __pyx_v_obj, __pyx_v_i);
22831 
22832  /* function exit code */
22833  {
22834  Py_ssize_t __pyx_temp;
22835  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
22836  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
22837  }
22838  }
22839  __Pyx_RefNannyFinishContext();
22840  return __pyx_r;
22841  }
22842 
22843  static PyObject *__pyx_pf_8PyClical_54log(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
22844  PyObject *__pyx_r = NULL;
22845  __Pyx_RefNannyDeclarations
22846  PyObject *__pyx_t_1 = NULL;
22847  struct __pyx_opt_args_8PyClical_log __pyx_t_2;
22848  int __pyx_lineno = 0;
22849  const char *__pyx_filename = NULL;
22850  int __pyx_clineno = 0;
22851  __Pyx_RefNannySetupContext("log", 1);
22852  __Pyx_XDECREF(__pyx_r);
22853  __pyx_t_2.__pyx_n = 1;
22854  __pyx_t_2.i = __pyx_v_i;
22855  __pyx_t_1 = __pyx_f_8PyClical_log(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1691, __pyx_L1_error)
22856  __Pyx_GOTREF(__pyx_t_1);
22857  __pyx_r = __pyx_t_1;
22858  __pyx_t_1 = 0;
22859  goto __pyx_L0;
22860 
22861  /* function exit code */
22862  __pyx_L1_error:;
22863  __Pyx_XDECREF(__pyx_t_1);
22864  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
22865  __pyx_r = NULL;
22866  __pyx_L0:;
22867  __Pyx_XGIVEREF(__pyx_r);
22868  __Pyx_RefNannyFinishContext();
22869  return __pyx_r;
22870  }
22871 
22872  /* "PyClical.pyx":1714
22873  * return clifford().wrap( glucat.log(toClifford(obj)) )
22874  *
22875  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
22876  * """
22877  * Cosine of multivector with optional complexifier.
22878  */
22879 
22880  static PyObject *__pyx_pw_8PyClical_57cos(PyObject *__pyx_self,
22881 #if CYTHON_METH_FASTCALL
22882 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
22883 #else
22884 PyObject *__pyx_args, PyObject *__pyx_kwds
22885 #endif
22886 ); /*proto*/
22887  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cos(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_cos *__pyx_optional_args) {
22888  PyObject *__pyx_v_i = ((PyObject *)Py_None);
22889  PyObject *__pyx_r = NULL;
22890  __Pyx_RefNannyDeclarations
22891  int __pyx_t_1;
22892  PyObject *__pyx_t_2 = NULL;
22893  Clifford __pyx_t_3;
22894  Clifford __pyx_t_4;
22895  Clifford __pyx_t_5;
22896  PyObject *__pyx_t_6 = NULL;
22897  PyObject *__pyx_t_7 = NULL;
22898  PyObject *__pyx_t_8 = NULL;
22899  PyObject *__pyx_t_9 = NULL;
22900  PyObject *__pyx_t_10 = NULL;
22901  int __pyx_t_11;
22902  PyObject *__pyx_t_12 = NULL;
22903  PyObject *__pyx_t_13 = NULL;
22904  int __pyx_lineno = 0;
22905  const char *__pyx_filename = NULL;
22906  int __pyx_clineno = 0;
22907  __Pyx_RefNannySetupContext("cos", 1);
22908  if (__pyx_optional_args) {
22909  if (__pyx_optional_args->__pyx_n > 0) {
22910  __pyx_v_i = __pyx_optional_args->i;
22911  }
22912  }
22913 
22914  /* "PyClical.pyx":1723
22915  * {1,2}
22916  * """
22917  * if not (i is None): # <<<<<<<<<<<<<<
22918  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
22919  * else:
22920  */
22921  __pyx_t_1 = (__pyx_v_i != Py_None);
22922  if (__pyx_t_1) {
22923 
22924  /* "PyClical.pyx":1724
22925  * """
22926  * if not (i is None):
22927  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
22928  * else:
22929  * try:
22930  */
22931  __Pyx_XDECREF(__pyx_r);
22932  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1724, __pyx_L1_error)
22933  __Pyx_GOTREF(__pyx_t_2);
22934  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L1_error)
22935  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1724, __pyx_L1_error)
22936  try {
22937  __pyx_t_5 = cos(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
22938  } catch(...) {
22939  __Pyx_CppExn2PyErr();
22940  __PYX_ERR(0, 1724, __pyx_L1_error)
22941  }
22942  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1724, __pyx_L1_error)
22943  __Pyx_GOTREF(__pyx_t_6);
22944  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22945  __pyx_r = __pyx_t_6;
22946  __pyx_t_6 = 0;
22947  goto __pyx_L0;
22948 
22949  /* "PyClical.pyx":1723
22950  * {1,2}
22951  * """
22952  * if not (i is None): # <<<<<<<<<<<<<<
22953  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
22954  * else:
22955  */
22956  }
22957 
22958  /* "PyClical.pyx":1726
22959  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
22960  * else:
22961  * try: # <<<<<<<<<<<<<<
22962  * return math.cos(obj)
22963  * except:
22964  */
22965  /*else*/ {
22966  {
22967  __Pyx_PyThreadState_declare
22968  __Pyx_PyThreadState_assign
22969  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
22970  __Pyx_XGOTREF(__pyx_t_7);
22971  __Pyx_XGOTREF(__pyx_t_8);
22972  __Pyx_XGOTREF(__pyx_t_9);
22973  /*try:*/ {
22974 
22975  /* "PyClical.pyx":1727
22976  * else:
22977  * try:
22978  * return math.cos(obj) # <<<<<<<<<<<<<<
22979  * except:
22980  * return clifford().wrap( glucat.cos(toClifford(obj)) )
22981  */
22982  __Pyx_XDECREF(__pyx_r);
22983  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1727, __pyx_L4_error)
22984  __Pyx_GOTREF(__pyx_t_2);
22985  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cos); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1727, __pyx_L4_error)
22986  __Pyx_GOTREF(__pyx_t_10);
22987  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22988  __pyx_t_2 = NULL;
22989  __pyx_t_11 = 0;
22990  #if CYTHON_UNPACK_METHODS
22991  if (unlikely(PyMethod_Check(__pyx_t_10))) {
22992  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
22993  if (likely(__pyx_t_2)) {
22994  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
22995  __Pyx_INCREF(__pyx_t_2);
22996  __Pyx_INCREF(function);
22997  __Pyx_DECREF_SET(__pyx_t_10, function);
22998  __pyx_t_11 = 1;
22999  }
23000  }
23001  #endif
23002  {
23003  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
23004  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
23005  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23006  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1727, __pyx_L4_error)
23007  __Pyx_GOTREF(__pyx_t_6);
23008  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23009  }
23010  __pyx_r = __pyx_t_6;
23011  __pyx_t_6 = 0;
23012  goto __pyx_L8_try_return;
23013 
23014  /* "PyClical.pyx":1726
23015  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
23016  * else:
23017  * try: # <<<<<<<<<<<<<<
23018  * return math.cos(obj)
23019  * except:
23020  */
23021  }
23022  __pyx_L4_error:;
23023  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
23024  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23025  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
23026 
23027  /* "PyClical.pyx":1728
23028  * try:
23029  * return math.cos(obj)
23030  * except: # <<<<<<<<<<<<<<
23031  * return clifford().wrap( glucat.cos(toClifford(obj)) )
23032  *
23033  */
23034  /*except:*/ {
23035  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23036  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1728, __pyx_L6_except_error)
23037  __Pyx_XGOTREF(__pyx_t_6);
23038  __Pyx_XGOTREF(__pyx_t_10);
23039  __Pyx_XGOTREF(__pyx_t_2);
23040 
23041  /* "PyClical.pyx":1729
23042  * return math.cos(obj)
23043  * except:
23044  * return clifford().wrap( glucat.cos(toClifford(obj)) ) # <<<<<<<<<<<<<<
23045  *
23046  * cpdef inline acos(obj,i = None):
23047  */
23048  __Pyx_XDECREF(__pyx_r);
23049  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1729, __pyx_L6_except_error)
23050  __Pyx_GOTREF(__pyx_t_12);
23051  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1729, __pyx_L6_except_error)
23052  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), cos(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1729, __pyx_L6_except_error)
23053  __Pyx_GOTREF(__pyx_t_13);
23054  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
23055  __pyx_r = __pyx_t_13;
23056  __pyx_t_13 = 0;
23057  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23058  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
23059  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23060  goto __pyx_L7_except_return;
23061  }
23062 
23063  /* "PyClical.pyx":1726
23064  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
23065  * else:
23066  * try: # <<<<<<<<<<<<<<
23067  * return math.cos(obj)
23068  * except:
23069  */
23070  __pyx_L6_except_error:;
23071  __Pyx_XGIVEREF(__pyx_t_7);
23072  __Pyx_XGIVEREF(__pyx_t_8);
23073  __Pyx_XGIVEREF(__pyx_t_9);
23074  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
23075  goto __pyx_L1_error;
23076  __pyx_L8_try_return:;
23077  __Pyx_XGIVEREF(__pyx_t_7);
23078  __Pyx_XGIVEREF(__pyx_t_8);
23079  __Pyx_XGIVEREF(__pyx_t_9);
23080  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
23081  goto __pyx_L0;
23082  __pyx_L7_except_return:;
23083  __Pyx_XGIVEREF(__pyx_t_7);
23084  __Pyx_XGIVEREF(__pyx_t_8);
23085  __Pyx_XGIVEREF(__pyx_t_9);
23086  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
23087  goto __pyx_L0;
23088  }
23089  }
23090 
23091  /* "PyClical.pyx":1714
23092  * return clifford().wrap( glucat.log(toClifford(obj)) )
23093  *
23094  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
23095  * """
23096  * Cosine of multivector with optional complexifier.
23097  */
23098 
23099  /* function exit code */
23100  __pyx_L1_error:;
23101  __Pyx_XDECREF(__pyx_t_2);
23102  __Pyx_XDECREF(__pyx_t_6);
23103  __Pyx_XDECREF(__pyx_t_10);
23104  __Pyx_XDECREF(__pyx_t_12);
23105  __Pyx_XDECREF(__pyx_t_13);
23106  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23107  __pyx_r = 0;
23108  __pyx_L0:;
23109  __Pyx_XGIVEREF(__pyx_r);
23110  __Pyx_RefNannyFinishContext();
23111  return __pyx_r;
23112  }
23113 
23114  /* Python wrapper */
23115  static PyObject *__pyx_pw_8PyClical_57cos(PyObject *__pyx_self,
23116 #if CYTHON_METH_FASTCALL
23117 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23118 #else
23119 PyObject *__pyx_args, PyObject *__pyx_kwds
23120 #endif
23121 ); /*proto*/
23122  PyDoc_STRVAR(__pyx_doc_8PyClical_56cos, "\n Cosine of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x),\"{1,2,3}\"))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x)))\n {1,2}\n ");
23123  static PyMethodDef __pyx_mdef_8PyClical_57cos = {"cos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_57cos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_56cos};
23124  static PyObject *__pyx_pw_8PyClical_57cos(PyObject *__pyx_self,
23125 #if CYTHON_METH_FASTCALL
23126 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23127 #else
23128 PyObject *__pyx_args, PyObject *__pyx_kwds
23129 #endif
23130 ) {
23131  PyObject *__pyx_v_obj = 0;
23132  PyObject *__pyx_v_i = 0;
23133  #if !CYTHON_METH_FASTCALL
23134  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
23135  #endif
23136  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
23137  PyObject* values[2] = {0,0};
23138  int __pyx_lineno = 0;
23139  const char *__pyx_filename = NULL;
23140  int __pyx_clineno = 0;
23141  PyObject *__pyx_r = 0;
23142  __Pyx_RefNannyDeclarations
23143  __Pyx_RefNannySetupContext("cos (wrapper)", 0);
23144  #if !CYTHON_METH_FASTCALL
23145  #if CYTHON_ASSUME_SAFE_MACROS
23146  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
23147  #else
23148  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
23149  #endif
23150  #endif
23151  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
23152  {
23153  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
23154  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
23155  if (__pyx_kwds) {
23156  Py_ssize_t kw_args;
23157  switch (__pyx_nargs) {
23158  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
23159  CYTHON_FALLTHROUGH;
23160  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
23161  CYTHON_FALLTHROUGH;
23162  case 0: break;
23163  default: goto __pyx_L5_argtuple_error;
23164  }
23165  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
23166  switch (__pyx_nargs) {
23167  case 0:
23168  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
23169  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
23170  kw_args--;
23171  }
23172  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1714, __pyx_L3_error)
23173  else goto __pyx_L5_argtuple_error;
23174  CYTHON_FALLTHROUGH;
23175  case 1:
23176  if (kw_args > 0) {
23177  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
23178  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
23179  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1714, __pyx_L3_error)
23180  }
23181  }
23182  if (unlikely(kw_args > 0)) {
23183  const Py_ssize_t kwd_pos_args = __pyx_nargs;
23184  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cos") < 0)) __PYX_ERR(0, 1714, __pyx_L3_error)
23185  }
23186  } else {
23187  switch (__pyx_nargs) {
23188  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
23189  CYTHON_FALLTHROUGH;
23190  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
23191  break;
23192  default: goto __pyx_L5_argtuple_error;
23193  }
23194  }
23195  __pyx_v_obj = values[0];
23196  __pyx_v_i = values[1];
23197  }
23198  goto __pyx_L6_skip;
23199  __pyx_L5_argtuple_error:;
23200  __Pyx_RaiseArgtupleInvalid("cos", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1714, __pyx_L3_error)
23201  __pyx_L6_skip:;
23202  goto __pyx_L4_argument_unpacking_done;
23203  __pyx_L3_error:;
23204  {
23205  Py_ssize_t __pyx_temp;
23206  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
23207  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
23208  }
23209  }
23210  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23211  __Pyx_RefNannyFinishContext();
23212  return NULL;
23213  __pyx_L4_argument_unpacking_done:;
23214  __pyx_r = __pyx_pf_8PyClical_56cos(__pyx_self, __pyx_v_obj, __pyx_v_i);
23215 
23216  /* function exit code */
23217  {
23218  Py_ssize_t __pyx_temp;
23219  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
23220  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
23221  }
23222  }
23223  __Pyx_RefNannyFinishContext();
23224  return __pyx_r;
23225  }
23226 
23227  static PyObject *__pyx_pf_8PyClical_56cos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
23228  PyObject *__pyx_r = NULL;
23229  __Pyx_RefNannyDeclarations
23230  PyObject *__pyx_t_1 = NULL;
23231  struct __pyx_opt_args_8PyClical_cos __pyx_t_2;
23232  int __pyx_lineno = 0;
23233  const char *__pyx_filename = NULL;
23234  int __pyx_clineno = 0;
23235  __Pyx_RefNannySetupContext("cos", 1);
23236  __Pyx_XDECREF(__pyx_r);
23237  __pyx_t_2.__pyx_n = 1;
23238  __pyx_t_2.i = __pyx_v_i;
23239  __pyx_t_1 = __pyx_f_8PyClical_cos(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error)
23240  __Pyx_GOTREF(__pyx_t_1);
23241  __pyx_r = __pyx_t_1;
23242  __pyx_t_1 = 0;
23243  goto __pyx_L0;
23244 
23245  /* function exit code */
23246  __pyx_L1_error:;
23247  __Pyx_XDECREF(__pyx_t_1);
23248  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23249  __pyx_r = NULL;
23250  __pyx_L0:;
23251  __Pyx_XGIVEREF(__pyx_r);
23252  __Pyx_RefNannyFinishContext();
23253  return __pyx_r;
23254  }
23255 
23256  /* "PyClical.pyx":1731
23257  * return clifford().wrap( glucat.cos(toClifford(obj)) )
23258  *
23259  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
23260  * """
23261  * Inverse cosine of multivector with optional complexifier.
23262  */
23263 
23264  static PyObject *__pyx_pw_8PyClical_59acos(PyObject *__pyx_self,
23265 #if CYTHON_METH_FASTCALL
23266 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23267 #else
23268 PyObject *__pyx_args, PyObject *__pyx_kwds
23269 #endif
23270 ); /*proto*/
23271  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_acos(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_acos *__pyx_optional_args) {
23272  PyObject *__pyx_v_i = ((PyObject *)Py_None);
23273  PyObject *__pyx_r = NULL;
23274  __Pyx_RefNannyDeclarations
23275  int __pyx_t_1;
23276  PyObject *__pyx_t_2 = NULL;
23277  Clifford __pyx_t_3;
23278  Clifford __pyx_t_4;
23279  Clifford __pyx_t_5;
23280  PyObject *__pyx_t_6 = NULL;
23281  PyObject *__pyx_t_7 = NULL;
23282  PyObject *__pyx_t_8 = NULL;
23283  PyObject *__pyx_t_9 = NULL;
23284  PyObject *__pyx_t_10 = NULL;
23285  int __pyx_t_11;
23286  PyObject *__pyx_t_12 = NULL;
23287  PyObject *__pyx_t_13 = NULL;
23288  int __pyx_lineno = 0;
23289  const char *__pyx_filename = NULL;
23290  int __pyx_clineno = 0;
23291  __Pyx_RefNannySetupContext("acos", 1);
23292  if (__pyx_optional_args) {
23293  if (__pyx_optional_args->__pyx_n > 0) {
23294  __pyx_v_i = __pyx_optional_args->i;
23295  }
23296  }
23297 
23298  /* "PyClical.pyx":1744
23299  * {1,2}
23300  * """
23301  * if not (i is None): # <<<<<<<<<<<<<<
23302  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
23303  * else:
23304  */
23305  __pyx_t_1 = (__pyx_v_i != Py_None);
23306  if (__pyx_t_1) {
23307 
23308  /* "PyClical.pyx":1745
23309  * """
23310  * if not (i is None):
23311  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
23312  * else:
23313  * try:
23314  */
23315  __Pyx_XDECREF(__pyx_r);
23316  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1745, __pyx_L1_error)
23317  __Pyx_GOTREF(__pyx_t_2);
23318  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1745, __pyx_L1_error)
23319  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1745, __pyx_L1_error)
23320  try {
23321  __pyx_t_5 = acos(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
23322  } catch(...) {
23323  __Pyx_CppExn2PyErr();
23324  __PYX_ERR(0, 1745, __pyx_L1_error)
23325  }
23326  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1745, __pyx_L1_error)
23327  __Pyx_GOTREF(__pyx_t_6);
23328  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23329  __pyx_r = __pyx_t_6;
23330  __pyx_t_6 = 0;
23331  goto __pyx_L0;
23332 
23333  /* "PyClical.pyx":1744
23334  * {1,2}
23335  * """
23336  * if not (i is None): # <<<<<<<<<<<<<<
23337  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
23338  * else:
23339  */
23340  }
23341 
23342  /* "PyClical.pyx":1747
23343  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
23344  * else:
23345  * try: # <<<<<<<<<<<<<<
23346  * return math.acos(obj)
23347  * except:
23348  */
23349  /*else*/ {
23350  {
23351  __Pyx_PyThreadState_declare
23352  __Pyx_PyThreadState_assign
23353  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
23354  __Pyx_XGOTREF(__pyx_t_7);
23355  __Pyx_XGOTREF(__pyx_t_8);
23356  __Pyx_XGOTREF(__pyx_t_9);
23357  /*try:*/ {
23358 
23359  /* "PyClical.pyx":1748
23360  * else:
23361  * try:
23362  * return math.acos(obj) # <<<<<<<<<<<<<<
23363  * except:
23364  * return clifford().wrap( glucat.acos(toClifford(obj)) )
23365  */
23366  __Pyx_XDECREF(__pyx_r);
23367  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1748, __pyx_L4_error)
23368  __Pyx_GOTREF(__pyx_t_2);
23369  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acos); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1748, __pyx_L4_error)
23370  __Pyx_GOTREF(__pyx_t_10);
23371  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23372  __pyx_t_2 = NULL;
23373  __pyx_t_11 = 0;
23374  #if CYTHON_UNPACK_METHODS
23375  if (unlikely(PyMethod_Check(__pyx_t_10))) {
23376  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
23377  if (likely(__pyx_t_2)) {
23378  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
23379  __Pyx_INCREF(__pyx_t_2);
23380  __Pyx_INCREF(function);
23381  __Pyx_DECREF_SET(__pyx_t_10, function);
23382  __pyx_t_11 = 1;
23383  }
23384  }
23385  #endif
23386  {
23387  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
23388  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
23389  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23390  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1748, __pyx_L4_error)
23391  __Pyx_GOTREF(__pyx_t_6);
23392  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23393  }
23394  __pyx_r = __pyx_t_6;
23395  __pyx_t_6 = 0;
23396  goto __pyx_L8_try_return;
23397 
23398  /* "PyClical.pyx":1747
23399  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
23400  * else:
23401  * try: # <<<<<<<<<<<<<<
23402  * return math.acos(obj)
23403  * except:
23404  */
23405  }
23406  __pyx_L4_error:;
23407  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
23408  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23409  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
23410 
23411  /* "PyClical.pyx":1749
23412  * try:
23413  * return math.acos(obj)
23414  * except: # <<<<<<<<<<<<<<
23415  * return clifford().wrap( glucat.acos(toClifford(obj)) )
23416  *
23417  */
23418  /*except:*/ {
23419  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23420  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1749, __pyx_L6_except_error)
23421  __Pyx_XGOTREF(__pyx_t_6);
23422  __Pyx_XGOTREF(__pyx_t_10);
23423  __Pyx_XGOTREF(__pyx_t_2);
23424 
23425  /* "PyClical.pyx":1750
23426  * return math.acos(obj)
23427  * except:
23428  * return clifford().wrap( glucat.acos(toClifford(obj)) ) # <<<<<<<<<<<<<<
23429  *
23430  * cpdef inline cosh(obj):
23431  */
23432  __Pyx_XDECREF(__pyx_r);
23433  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1750, __pyx_L6_except_error)
23434  __Pyx_GOTREF(__pyx_t_12);
23435  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1750, __pyx_L6_except_error)
23436  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), acos(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1750, __pyx_L6_except_error)
23437  __Pyx_GOTREF(__pyx_t_13);
23438  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
23439  __pyx_r = __pyx_t_13;
23440  __pyx_t_13 = 0;
23441  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23442  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
23443  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23444  goto __pyx_L7_except_return;
23445  }
23446 
23447  /* "PyClical.pyx":1747
23448  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
23449  * else:
23450  * try: # <<<<<<<<<<<<<<
23451  * return math.acos(obj)
23452  * except:
23453  */
23454  __pyx_L6_except_error:;
23455  __Pyx_XGIVEREF(__pyx_t_7);
23456  __Pyx_XGIVEREF(__pyx_t_8);
23457  __Pyx_XGIVEREF(__pyx_t_9);
23458  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
23459  goto __pyx_L1_error;
23460  __pyx_L8_try_return:;
23461  __Pyx_XGIVEREF(__pyx_t_7);
23462  __Pyx_XGIVEREF(__pyx_t_8);
23463  __Pyx_XGIVEREF(__pyx_t_9);
23464  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
23465  goto __pyx_L0;
23466  __pyx_L7_except_return:;
23467  __Pyx_XGIVEREF(__pyx_t_7);
23468  __Pyx_XGIVEREF(__pyx_t_8);
23469  __Pyx_XGIVEREF(__pyx_t_9);
23470  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
23471  goto __pyx_L0;
23472  }
23473  }
23474 
23475  /* "PyClical.pyx":1731
23476  * return clifford().wrap( glucat.cos(toClifford(obj)) )
23477  *
23478  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
23479  * """
23480  * Inverse cosine of multivector with optional complexifier.
23481  */
23482 
23483  /* function exit code */
23484  __pyx_L1_error:;
23485  __Pyx_XDECREF(__pyx_t_2);
23486  __Pyx_XDECREF(__pyx_t_6);
23487  __Pyx_XDECREF(__pyx_t_10);
23488  __Pyx_XDECREF(__pyx_t_12);
23489  __Pyx_XDECREF(__pyx_t_13);
23490  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23491  __pyx_r = 0;
23492  __pyx_L0:;
23493  __Pyx_XGIVEREF(__pyx_r);
23494  __Pyx_RefNannyFinishContext();
23495  return __pyx_r;
23496  }
23497 
23498  /* Python wrapper */
23499  static PyObject *__pyx_pw_8PyClical_59acos(PyObject *__pyx_self,
23500 #if CYTHON_METH_FASTCALL
23501 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23502 #else
23503 PyObject *__pyx_args, PyObject *__pyx_kwds
23504 #endif
23505 ); /*proto*/
23506  PyDoc_STRVAR(__pyx_doc_8PyClical_58acos, "\n Inverse cosine of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x),\"{1,2,3}\"))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x),\"{-1,1,2,3,4}\"))\n {1,2}\n >>> print(acos(0) / pi)\n 0.5\n >>> x=clifford(\"{1,2}\"); print(cos(acos(x)))\n {1,2}\n ");
23507  static PyMethodDef __pyx_mdef_8PyClical_59acos = {"acos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_59acos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_58acos};
23508  static PyObject *__pyx_pw_8PyClical_59acos(PyObject *__pyx_self,
23509 #if CYTHON_METH_FASTCALL
23510 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23511 #else
23512 PyObject *__pyx_args, PyObject *__pyx_kwds
23513 #endif
23514 ) {
23515  PyObject *__pyx_v_obj = 0;
23516  PyObject *__pyx_v_i = 0;
23517  #if !CYTHON_METH_FASTCALL
23518  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
23519  #endif
23520  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
23521  PyObject* values[2] = {0,0};
23522  int __pyx_lineno = 0;
23523  const char *__pyx_filename = NULL;
23524  int __pyx_clineno = 0;
23525  PyObject *__pyx_r = 0;
23526  __Pyx_RefNannyDeclarations
23527  __Pyx_RefNannySetupContext("acos (wrapper)", 0);
23528  #if !CYTHON_METH_FASTCALL
23529  #if CYTHON_ASSUME_SAFE_MACROS
23530  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
23531  #else
23532  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
23533  #endif
23534  #endif
23535  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
23536  {
23537  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
23538  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
23539  if (__pyx_kwds) {
23540  Py_ssize_t kw_args;
23541  switch (__pyx_nargs) {
23542  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
23543  CYTHON_FALLTHROUGH;
23544  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
23545  CYTHON_FALLTHROUGH;
23546  case 0: break;
23547  default: goto __pyx_L5_argtuple_error;
23548  }
23549  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
23550  switch (__pyx_nargs) {
23551  case 0:
23552  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
23553  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
23554  kw_args--;
23555  }
23556  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1731, __pyx_L3_error)
23557  else goto __pyx_L5_argtuple_error;
23558  CYTHON_FALLTHROUGH;
23559  case 1:
23560  if (kw_args > 0) {
23561  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
23562  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
23563  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1731, __pyx_L3_error)
23564  }
23565  }
23566  if (unlikely(kw_args > 0)) {
23567  const Py_ssize_t kwd_pos_args = __pyx_nargs;
23568  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "acos") < 0)) __PYX_ERR(0, 1731, __pyx_L3_error)
23569  }
23570  } else {
23571  switch (__pyx_nargs) {
23572  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
23573  CYTHON_FALLTHROUGH;
23574  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
23575  break;
23576  default: goto __pyx_L5_argtuple_error;
23577  }
23578  }
23579  __pyx_v_obj = values[0];
23580  __pyx_v_i = values[1];
23581  }
23582  goto __pyx_L6_skip;
23583  __pyx_L5_argtuple_error:;
23584  __Pyx_RaiseArgtupleInvalid("acos", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1731, __pyx_L3_error)
23585  __pyx_L6_skip:;
23586  goto __pyx_L4_argument_unpacking_done;
23587  __pyx_L3_error:;
23588  {
23589  Py_ssize_t __pyx_temp;
23590  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
23591  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
23592  }
23593  }
23594  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23595  __Pyx_RefNannyFinishContext();
23596  return NULL;
23597  __pyx_L4_argument_unpacking_done:;
23598  __pyx_r = __pyx_pf_8PyClical_58acos(__pyx_self, __pyx_v_obj, __pyx_v_i);
23599 
23600  /* function exit code */
23601  {
23602  Py_ssize_t __pyx_temp;
23603  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
23604  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
23605  }
23606  }
23607  __Pyx_RefNannyFinishContext();
23608  return __pyx_r;
23609  }
23610 
23611  static PyObject *__pyx_pf_8PyClical_58acos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
23612  PyObject *__pyx_r = NULL;
23613  __Pyx_RefNannyDeclarations
23614  PyObject *__pyx_t_1 = NULL;
23615  struct __pyx_opt_args_8PyClical_acos __pyx_t_2;
23616  int __pyx_lineno = 0;
23617  const char *__pyx_filename = NULL;
23618  int __pyx_clineno = 0;
23619  __Pyx_RefNannySetupContext("acos", 1);
23620  __Pyx_XDECREF(__pyx_r);
23621  __pyx_t_2.__pyx_n = 1;
23622  __pyx_t_2.i = __pyx_v_i;
23623  __pyx_t_1 = __pyx_f_8PyClical_acos(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error)
23624  __Pyx_GOTREF(__pyx_t_1);
23625  __pyx_r = __pyx_t_1;
23626  __pyx_t_1 = 0;
23627  goto __pyx_L0;
23628 
23629  /* function exit code */
23630  __pyx_L1_error:;
23631  __Pyx_XDECREF(__pyx_t_1);
23632  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
23633  __pyx_r = NULL;
23634  __pyx_L0:;
23635  __Pyx_XGIVEREF(__pyx_r);
23636  __Pyx_RefNannyFinishContext();
23637  return __pyx_r;
23638  }
23639 
23640  /* "PyClical.pyx":1752
23641  * return clifford().wrap( glucat.acos(toClifford(obj)) )
23642  *
23643  * cpdef inline cosh(obj): # <<<<<<<<<<<<<<
23644  * """
23645  * Hyperbolic cosine of multivector.
23646  */
23647 
23648  static PyObject *__pyx_pw_8PyClical_61cosh(PyObject *__pyx_self,
23649 #if CYTHON_METH_FASTCALL
23650 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23651 #else
23652 PyObject *__pyx_args, PyObject *__pyx_kwds
23653 #endif
23654 ); /*proto*/
23655  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cosh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
23656  PyObject *__pyx_r = NULL;
23657  __Pyx_RefNannyDeclarations
23658  PyObject *__pyx_t_1 = NULL;
23659  PyObject *__pyx_t_2 = NULL;
23660  PyObject *__pyx_t_3 = NULL;
23661  PyObject *__pyx_t_4 = NULL;
23662  PyObject *__pyx_t_5 = NULL;
23663  PyObject *__pyx_t_6 = NULL;
23664  int __pyx_t_7;
23665  PyObject *__pyx_t_8 = NULL;
23666  Clifford __pyx_t_9;
23667  PyObject *__pyx_t_10 = NULL;
23668  int __pyx_lineno = 0;
23669  const char *__pyx_filename = NULL;
23670  int __pyx_clineno = 0;
23671  __Pyx_RefNannySetupContext("cosh", 1);
23672 
23673  /* "PyClical.pyx":1763
23674  * {1,2}
23675  * """
23676  * try: # <<<<<<<<<<<<<<
23677  * return math.cosh(obj)
23678  * except:
23679  */
23680  {
23681  __Pyx_PyThreadState_declare
23682  __Pyx_PyThreadState_assign
23683  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
23684  __Pyx_XGOTREF(__pyx_t_1);
23685  __Pyx_XGOTREF(__pyx_t_2);
23686  __Pyx_XGOTREF(__pyx_t_3);
23687  /*try:*/ {
23688 
23689  /* "PyClical.pyx":1764
23690  * """
23691  * try:
23692  * return math.cosh(obj) # <<<<<<<<<<<<<<
23693  * except:
23694  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
23695  */
23696  __Pyx_XDECREF(__pyx_r);
23697  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L3_error)
23698  __Pyx_GOTREF(__pyx_t_5);
23699  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_cosh); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1764, __pyx_L3_error)
23700  __Pyx_GOTREF(__pyx_t_6);
23701  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
23702  __pyx_t_5 = NULL;
23703  __pyx_t_7 = 0;
23704  #if CYTHON_UNPACK_METHODS
23705  if (unlikely(PyMethod_Check(__pyx_t_6))) {
23706  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
23707  if (likely(__pyx_t_5)) {
23708  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
23709  __Pyx_INCREF(__pyx_t_5);
23710  __Pyx_INCREF(function);
23711  __Pyx_DECREF_SET(__pyx_t_6, function);
23712  __pyx_t_7 = 1;
23713  }
23714  }
23715  #endif
23716  {
23717  PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_obj};
23718  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
23719  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
23720  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L3_error)
23721  __Pyx_GOTREF(__pyx_t_4);
23722  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
23723  }
23724  __pyx_r = __pyx_t_4;
23725  __pyx_t_4 = 0;
23726  goto __pyx_L7_try_return;
23727 
23728  /* "PyClical.pyx":1763
23729  * {1,2}
23730  * """
23731  * try: # <<<<<<<<<<<<<<
23732  * return math.cosh(obj)
23733  * except:
23734  */
23735  }
23736  __pyx_L3_error:;
23737  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
23738  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
23739  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
23740 
23741  /* "PyClical.pyx":1765
23742  * try:
23743  * return math.cosh(obj)
23744  * except: # <<<<<<<<<<<<<<
23745  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
23746  *
23747  */
23748  /*except:*/ {
23749  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
23750  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 1765, __pyx_L5_except_error)
23751  __Pyx_XGOTREF(__pyx_t_4);
23752  __Pyx_XGOTREF(__pyx_t_6);
23753  __Pyx_XGOTREF(__pyx_t_5);
23754 
23755  /* "PyClical.pyx":1766
23756  * return math.cosh(obj)
23757  * except:
23758  * return clifford().wrap( glucat.cosh(toClifford(obj)) ) # <<<<<<<<<<<<<<
23759  *
23760  * cpdef inline acosh(obj,i = None):
23761  */
23762  __Pyx_XDECREF(__pyx_r);
23763  __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1766, __pyx_L5_except_error)
23764  __Pyx_GOTREF(__pyx_t_8);
23765  __pyx_t_9 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1766, __pyx_L5_except_error)
23766  __pyx_t_10 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_8), cosh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1766, __pyx_L5_except_error)
23767  __Pyx_GOTREF(__pyx_t_10);
23768  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
23769  __pyx_r = __pyx_t_10;
23770  __pyx_t_10 = 0;
23771  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
23772  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
23773  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
23774  goto __pyx_L6_except_return;
23775  }
23776 
23777  /* "PyClical.pyx":1763
23778  * {1,2}
23779  * """
23780  * try: # <<<<<<<<<<<<<<
23781  * return math.cosh(obj)
23782  * except:
23783  */
23784  __pyx_L5_except_error:;
23785  __Pyx_XGIVEREF(__pyx_t_1);
23786  __Pyx_XGIVEREF(__pyx_t_2);
23787  __Pyx_XGIVEREF(__pyx_t_3);
23788  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
23789  goto __pyx_L1_error;
23790  __pyx_L7_try_return:;
23791  __Pyx_XGIVEREF(__pyx_t_1);
23792  __Pyx_XGIVEREF(__pyx_t_2);
23793  __Pyx_XGIVEREF(__pyx_t_3);
23794  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
23795  goto __pyx_L0;
23796  __pyx_L6_except_return:;
23797  __Pyx_XGIVEREF(__pyx_t_1);
23798  __Pyx_XGIVEREF(__pyx_t_2);
23799  __Pyx_XGIVEREF(__pyx_t_3);
23800  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
23801  goto __pyx_L0;
23802  }
23803 
23804  /* "PyClical.pyx":1752
23805  * return clifford().wrap( glucat.acos(toClifford(obj)) )
23806  *
23807  * cpdef inline cosh(obj): # <<<<<<<<<<<<<<
23808  * """
23809  * Hyperbolic cosine of multivector.
23810  */
23811 
23812  /* function exit code */
23813  __pyx_L1_error:;
23814  __Pyx_XDECREF(__pyx_t_4);
23815  __Pyx_XDECREF(__pyx_t_5);
23816  __Pyx_XDECREF(__pyx_t_6);
23817  __Pyx_XDECREF(__pyx_t_8);
23818  __Pyx_XDECREF(__pyx_t_10);
23819  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
23820  __pyx_r = 0;
23821  __pyx_L0:;
23822  __Pyx_XGIVEREF(__pyx_r);
23823  __Pyx_RefNannyFinishContext();
23824  return __pyx_r;
23825  }
23826 
23827  /* Python wrapper */
23828  static PyObject *__pyx_pw_8PyClical_61cosh(PyObject *__pyx_self,
23829 #if CYTHON_METH_FASTCALL
23830 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23831 #else
23832 PyObject *__pyx_args, PyObject *__pyx_kwds
23833 #endif
23834 ); /*proto*/
23835  PyDoc_STRVAR(__pyx_doc_8PyClical_60cosh, "\n Hyperbolic cosine of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi; print(cosh(x))\n -1\n >>> x=clifford(\"{1,2,3}\"); print(cosh(acosh(x)))\n {1,2,3}\n >>> x=clifford(\"{1,2}\"); print(cosh(acosh(x)))\n {1,2}\n ");
23836  static PyMethodDef __pyx_mdef_8PyClical_61cosh = {"cosh", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_61cosh, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_60cosh};
23837  static PyObject *__pyx_pw_8PyClical_61cosh(PyObject *__pyx_self,
23838 #if CYTHON_METH_FASTCALL
23839 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23840 #else
23841 PyObject *__pyx_args, PyObject *__pyx_kwds
23842 #endif
23843 ) {
23844  PyObject *__pyx_v_obj = 0;
23845  #if !CYTHON_METH_FASTCALL
23846  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
23847  #endif
23848  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
23849  PyObject* values[1] = {0};
23850  int __pyx_lineno = 0;
23851  const char *__pyx_filename = NULL;
23852  int __pyx_clineno = 0;
23853  PyObject *__pyx_r = 0;
23854  __Pyx_RefNannyDeclarations
23855  __Pyx_RefNannySetupContext("cosh (wrapper)", 0);
23856  #if !CYTHON_METH_FASTCALL
23857  #if CYTHON_ASSUME_SAFE_MACROS
23858  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
23859  #else
23860  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
23861  #endif
23862  #endif
23863  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
23864  {
23865  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
23866  if (__pyx_kwds) {
23867  Py_ssize_t kw_args;
23868  switch (__pyx_nargs) {
23869  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
23870  CYTHON_FALLTHROUGH;
23871  case 0: break;
23872  default: goto __pyx_L5_argtuple_error;
23873  }
23874  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
23875  switch (__pyx_nargs) {
23876  case 0:
23877  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
23878  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
23879  kw_args--;
23880  }
23881  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1752, __pyx_L3_error)
23882  else goto __pyx_L5_argtuple_error;
23883  }
23884  if (unlikely(kw_args > 0)) {
23885  const Py_ssize_t kwd_pos_args = __pyx_nargs;
23886  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cosh") < 0)) __PYX_ERR(0, 1752, __pyx_L3_error)
23887  }
23888  } else if (unlikely(__pyx_nargs != 1)) {
23889  goto __pyx_L5_argtuple_error;
23890  } else {
23891  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
23892  }
23893  __pyx_v_obj = values[0];
23894  }
23895  goto __pyx_L6_skip;
23896  __pyx_L5_argtuple_error:;
23897  __Pyx_RaiseArgtupleInvalid("cosh", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1752, __pyx_L3_error)
23898  __pyx_L6_skip:;
23899  goto __pyx_L4_argument_unpacking_done;
23900  __pyx_L3_error:;
23901  {
23902  Py_ssize_t __pyx_temp;
23903  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
23904  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
23905  }
23906  }
23907  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
23908  __Pyx_RefNannyFinishContext();
23909  return NULL;
23910  __pyx_L4_argument_unpacking_done:;
23911  __pyx_r = __pyx_pf_8PyClical_60cosh(__pyx_self, __pyx_v_obj);
23912 
23913  /* function exit code */
23914  {
23915  Py_ssize_t __pyx_temp;
23916  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
23917  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
23918  }
23919  }
23920  __Pyx_RefNannyFinishContext();
23921  return __pyx_r;
23922  }
23923 
23924  static PyObject *__pyx_pf_8PyClical_60cosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
23925  PyObject *__pyx_r = NULL;
23926  __Pyx_RefNannyDeclarations
23927  PyObject *__pyx_t_1 = NULL;
23928  int __pyx_lineno = 0;
23929  const char *__pyx_filename = NULL;
23930  int __pyx_clineno = 0;
23931  __Pyx_RefNannySetupContext("cosh", 1);
23932  __Pyx_XDECREF(__pyx_r);
23933  __pyx_t_1 = __pyx_f_8PyClical_cosh(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error)
23934  __Pyx_GOTREF(__pyx_t_1);
23935  __pyx_r = __pyx_t_1;
23936  __pyx_t_1 = 0;
23937  goto __pyx_L0;
23938 
23939  /* function exit code */
23940  __pyx_L1_error:;
23941  __Pyx_XDECREF(__pyx_t_1);
23942  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
23943  __pyx_r = NULL;
23944  __pyx_L0:;
23945  __Pyx_XGIVEREF(__pyx_r);
23946  __Pyx_RefNannyFinishContext();
23947  return __pyx_r;
23948  }
23949 
23950  /* "PyClical.pyx":1768
23951  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
23952  *
23953  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
23954  * """
23955  * Inverse hyperbolic cosine of multivector with optional complexifier.
23956  */
23957 
23958  static PyObject *__pyx_pw_8PyClical_63acosh(PyObject *__pyx_self,
23959 #if CYTHON_METH_FASTCALL
23960 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
23961 #else
23962 PyObject *__pyx_args, PyObject *__pyx_kwds
23963 #endif
23964 ); /*proto*/
23965  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_acosh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_acosh *__pyx_optional_args) {
23966  PyObject *__pyx_v_i = ((PyObject *)Py_None);
23967  PyObject *__pyx_r = NULL;
23968  __Pyx_RefNannyDeclarations
23969  int __pyx_t_1;
23970  PyObject *__pyx_t_2 = NULL;
23971  Clifford __pyx_t_3;
23972  Clifford __pyx_t_4;
23973  Clifford __pyx_t_5;
23974  PyObject *__pyx_t_6 = NULL;
23975  PyObject *__pyx_t_7 = NULL;
23976  PyObject *__pyx_t_8 = NULL;
23977  PyObject *__pyx_t_9 = NULL;
23978  PyObject *__pyx_t_10 = NULL;
23979  int __pyx_t_11;
23980  PyObject *__pyx_t_12 = NULL;
23981  PyObject *__pyx_t_13 = NULL;
23982  int __pyx_lineno = 0;
23983  const char *__pyx_filename = NULL;
23984  int __pyx_clineno = 0;
23985  __Pyx_RefNannySetupContext("acosh", 1);
23986  if (__pyx_optional_args) {
23987  if (__pyx_optional_args->__pyx_n > 0) {
23988  __pyx_v_i = __pyx_optional_args->i;
23989  }
23990  }
23991 
23992  /* "PyClical.pyx":1783
23993  * {1,2}
23994  * """
23995  * if not (i is None): # <<<<<<<<<<<<<<
23996  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
23997  * else:
23998  */
23999  __pyx_t_1 = (__pyx_v_i != Py_None);
24000  if (__pyx_t_1) {
24001 
24002  /* "PyClical.pyx":1784
24003  * """
24004  * if not (i is None):
24005  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
24006  * else:
24007  * try:
24008  */
24009  __Pyx_XDECREF(__pyx_r);
24010  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1784, __pyx_L1_error)
24011  __Pyx_GOTREF(__pyx_t_2);
24012  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L1_error)
24013  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L1_error)
24014  try {
24015  __pyx_t_5 = acosh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
24016  } catch(...) {
24017  __Pyx_CppExn2PyErr();
24018  __PYX_ERR(0, 1784, __pyx_L1_error)
24019  }
24020  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1784, __pyx_L1_error)
24021  __Pyx_GOTREF(__pyx_t_6);
24022  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24023  __pyx_r = __pyx_t_6;
24024  __pyx_t_6 = 0;
24025  goto __pyx_L0;
24026 
24027  /* "PyClical.pyx":1783
24028  * {1,2}
24029  * """
24030  * if not (i is None): # <<<<<<<<<<<<<<
24031  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
24032  * else:
24033  */
24034  }
24035 
24036  /* "PyClical.pyx":1786
24037  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
24038  * else:
24039  * try: # <<<<<<<<<<<<<<
24040  * return math.acosh(obj)
24041  * except:
24042  */
24043  /*else*/ {
24044  {
24045  __Pyx_PyThreadState_declare
24046  __Pyx_PyThreadState_assign
24047  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
24048  __Pyx_XGOTREF(__pyx_t_7);
24049  __Pyx_XGOTREF(__pyx_t_8);
24050  __Pyx_XGOTREF(__pyx_t_9);
24051  /*try:*/ {
24052 
24053  /* "PyClical.pyx":1787
24054  * else:
24055  * try:
24056  * return math.acosh(obj) # <<<<<<<<<<<<<<
24057  * except:
24058  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
24059  */
24060  __Pyx_XDECREF(__pyx_r);
24061  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1787, __pyx_L4_error)
24062  __Pyx_GOTREF(__pyx_t_2);
24063  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acosh); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1787, __pyx_L4_error)
24064  __Pyx_GOTREF(__pyx_t_10);
24065  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24066  __pyx_t_2 = NULL;
24067  __pyx_t_11 = 0;
24068  #if CYTHON_UNPACK_METHODS
24069  if (unlikely(PyMethod_Check(__pyx_t_10))) {
24070  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
24071  if (likely(__pyx_t_2)) {
24072  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
24073  __Pyx_INCREF(__pyx_t_2);
24074  __Pyx_INCREF(function);
24075  __Pyx_DECREF_SET(__pyx_t_10, function);
24076  __pyx_t_11 = 1;
24077  }
24078  }
24079  #endif
24080  {
24081  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
24082  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
24083  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24084  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1787, __pyx_L4_error)
24085  __Pyx_GOTREF(__pyx_t_6);
24086  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
24087  }
24088  __pyx_r = __pyx_t_6;
24089  __pyx_t_6 = 0;
24090  goto __pyx_L8_try_return;
24091 
24092  /* "PyClical.pyx":1786
24093  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
24094  * else:
24095  * try: # <<<<<<<<<<<<<<
24096  * return math.acosh(obj)
24097  * except:
24098  */
24099  }
24100  __pyx_L4_error:;
24101  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
24102  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24103  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
24104 
24105  /* "PyClical.pyx":1788
24106  * try:
24107  * return math.acosh(obj)
24108  * except: # <<<<<<<<<<<<<<
24109  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
24110  *
24111  */
24112  /*except:*/ {
24113  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
24114  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1788, __pyx_L6_except_error)
24115  __Pyx_XGOTREF(__pyx_t_6);
24116  __Pyx_XGOTREF(__pyx_t_10);
24117  __Pyx_XGOTREF(__pyx_t_2);
24118 
24119  /* "PyClical.pyx":1789
24120  * return math.acosh(obj)
24121  * except:
24122  * return clifford().wrap( glucat.acosh(toClifford(obj)) ) # <<<<<<<<<<<<<<
24123  *
24124  * cpdef inline sin(obj,i = None):
24125  */
24126  __Pyx_XDECREF(__pyx_r);
24127  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1789, __pyx_L6_except_error)
24128  __Pyx_GOTREF(__pyx_t_12);
24129  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1789, __pyx_L6_except_error)
24130  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), acosh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1789, __pyx_L6_except_error)
24131  __Pyx_GOTREF(__pyx_t_13);
24132  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
24133  __pyx_r = __pyx_t_13;
24134  __pyx_t_13 = 0;
24135  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24136  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
24137  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
24138  goto __pyx_L7_except_return;
24139  }
24140 
24141  /* "PyClical.pyx":1786
24142  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
24143  * else:
24144  * try: # <<<<<<<<<<<<<<
24145  * return math.acosh(obj)
24146  * except:
24147  */
24148  __pyx_L6_except_error:;
24149  __Pyx_XGIVEREF(__pyx_t_7);
24150  __Pyx_XGIVEREF(__pyx_t_8);
24151  __Pyx_XGIVEREF(__pyx_t_9);
24152  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24153  goto __pyx_L1_error;
24154  __pyx_L8_try_return:;
24155  __Pyx_XGIVEREF(__pyx_t_7);
24156  __Pyx_XGIVEREF(__pyx_t_8);
24157  __Pyx_XGIVEREF(__pyx_t_9);
24158  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24159  goto __pyx_L0;
24160  __pyx_L7_except_return:;
24161  __Pyx_XGIVEREF(__pyx_t_7);
24162  __Pyx_XGIVEREF(__pyx_t_8);
24163  __Pyx_XGIVEREF(__pyx_t_9);
24164  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24165  goto __pyx_L0;
24166  }
24167  }
24168 
24169  /* "PyClical.pyx":1768
24170  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
24171  *
24172  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
24173  * """
24174  * Inverse hyperbolic cosine of multivector with optional complexifier.
24175  */
24176 
24177  /* function exit code */
24178  __pyx_L1_error:;
24179  __Pyx_XDECREF(__pyx_t_2);
24180  __Pyx_XDECREF(__pyx_t_6);
24181  __Pyx_XDECREF(__pyx_t_10);
24182  __Pyx_XDECREF(__pyx_t_12);
24183  __Pyx_XDECREF(__pyx_t_13);
24184  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
24185  __pyx_r = 0;
24186  __pyx_L0:;
24187  __Pyx_XGIVEREF(__pyx_r);
24188  __Pyx_RefNannyFinishContext();
24189  return __pyx_r;
24190  }
24191 
24192  /* Python wrapper */
24193  static PyObject *__pyx_pw_8PyClical_63acosh(PyObject *__pyx_self,
24194 #if CYTHON_METH_FASTCALL
24195 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24196 #else
24197 PyObject *__pyx_args, PyObject *__pyx_kwds
24198 #endif
24199 ); /*proto*/
24200  PyDoc_STRVAR(__pyx_doc_8PyClical_62acosh, "\n Inverse hyperbolic cosine of multivector with optional complexifier.\n\n >>> print(acosh(0,\"{-2,-1,1}\"))\n 1.571{-2,-1,1}\n >>> x=clifford(\"{1,2,3}\"); print(cosh(acosh(x,\"{-1,1,2,3,4}\")))\n {1,2,3}\n >>> print(acosh(0))\n 1.571{-1}\n >>> x=clifford(\"{1,2,3}\"); print(cosh(acosh(x)))\n {1,2,3}\n >>> x=clifford(\"{1,2}\"); print(cosh(acosh(x)))\n {1,2}\n ");
24201  static PyMethodDef __pyx_mdef_8PyClical_63acosh = {"acosh", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_63acosh, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_62acosh};
24202  static PyObject *__pyx_pw_8PyClical_63acosh(PyObject *__pyx_self,
24203 #if CYTHON_METH_FASTCALL
24204 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24205 #else
24206 PyObject *__pyx_args, PyObject *__pyx_kwds
24207 #endif
24208 ) {
24209  PyObject *__pyx_v_obj = 0;
24210  PyObject *__pyx_v_i = 0;
24211  #if !CYTHON_METH_FASTCALL
24212  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
24213  #endif
24214  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
24215  PyObject* values[2] = {0,0};
24216  int __pyx_lineno = 0;
24217  const char *__pyx_filename = NULL;
24218  int __pyx_clineno = 0;
24219  PyObject *__pyx_r = 0;
24220  __Pyx_RefNannyDeclarations
24221  __Pyx_RefNannySetupContext("acosh (wrapper)", 0);
24222  #if !CYTHON_METH_FASTCALL
24223  #if CYTHON_ASSUME_SAFE_MACROS
24224  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
24225  #else
24226  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
24227  #endif
24228  #endif
24229  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
24230  {
24231  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
24232  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
24233  if (__pyx_kwds) {
24234  Py_ssize_t kw_args;
24235  switch (__pyx_nargs) {
24236  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
24237  CYTHON_FALLTHROUGH;
24238  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
24239  CYTHON_FALLTHROUGH;
24240  case 0: break;
24241  default: goto __pyx_L5_argtuple_error;
24242  }
24243  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
24244  switch (__pyx_nargs) {
24245  case 0:
24246  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
24247  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
24248  kw_args--;
24249  }
24250  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1768, __pyx_L3_error)
24251  else goto __pyx_L5_argtuple_error;
24252  CYTHON_FALLTHROUGH;
24253  case 1:
24254  if (kw_args > 0) {
24255  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
24256  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
24257  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1768, __pyx_L3_error)
24258  }
24259  }
24260  if (unlikely(kw_args > 0)) {
24261  const Py_ssize_t kwd_pos_args = __pyx_nargs;
24262  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "acosh") < 0)) __PYX_ERR(0, 1768, __pyx_L3_error)
24263  }
24264  } else {
24265  switch (__pyx_nargs) {
24266  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
24267  CYTHON_FALLTHROUGH;
24268  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
24269  break;
24270  default: goto __pyx_L5_argtuple_error;
24271  }
24272  }
24273  __pyx_v_obj = values[0];
24274  __pyx_v_i = values[1];
24275  }
24276  goto __pyx_L6_skip;
24277  __pyx_L5_argtuple_error:;
24278  __Pyx_RaiseArgtupleInvalid("acosh", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1768, __pyx_L3_error)
24279  __pyx_L6_skip:;
24280  goto __pyx_L4_argument_unpacking_done;
24281  __pyx_L3_error:;
24282  {
24283  Py_ssize_t __pyx_temp;
24284  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
24285  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
24286  }
24287  }
24288  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
24289  __Pyx_RefNannyFinishContext();
24290  return NULL;
24291  __pyx_L4_argument_unpacking_done:;
24292  __pyx_r = __pyx_pf_8PyClical_62acosh(__pyx_self, __pyx_v_obj, __pyx_v_i);
24293 
24294  /* function exit code */
24295  {
24296  Py_ssize_t __pyx_temp;
24297  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
24298  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
24299  }
24300  }
24301  __Pyx_RefNannyFinishContext();
24302  return __pyx_r;
24303  }
24304 
24305  static PyObject *__pyx_pf_8PyClical_62acosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
24306  PyObject *__pyx_r = NULL;
24307  __Pyx_RefNannyDeclarations
24308  PyObject *__pyx_t_1 = NULL;
24309  struct __pyx_opt_args_8PyClical_acosh __pyx_t_2;
24310  int __pyx_lineno = 0;
24311  const char *__pyx_filename = NULL;
24312  int __pyx_clineno = 0;
24313  __Pyx_RefNannySetupContext("acosh", 1);
24314  __Pyx_XDECREF(__pyx_r);
24315  __pyx_t_2.__pyx_n = 1;
24316  __pyx_t_2.i = __pyx_v_i;
24317  __pyx_t_1 = __pyx_f_8PyClical_acosh(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1768, __pyx_L1_error)
24318  __Pyx_GOTREF(__pyx_t_1);
24319  __pyx_r = __pyx_t_1;
24320  __pyx_t_1 = 0;
24321  goto __pyx_L0;
24322 
24323  /* function exit code */
24324  __pyx_L1_error:;
24325  __Pyx_XDECREF(__pyx_t_1);
24326  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
24327  __pyx_r = NULL;
24328  __pyx_L0:;
24329  __Pyx_XGIVEREF(__pyx_r);
24330  __Pyx_RefNannyFinishContext();
24331  return __pyx_r;
24332  }
24333 
24334  /* "PyClical.pyx":1791
24335  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
24336  *
24337  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
24338  * """
24339  * Sine of multivector with optional complexifier.
24340  */
24341 
24342  static PyObject *__pyx_pw_8PyClical_65sin(PyObject *__pyx_self,
24343 #if CYTHON_METH_FASTCALL
24344 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24345 #else
24346 PyObject *__pyx_args, PyObject *__pyx_kwds
24347 #endif
24348 ); /*proto*/
24349  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sin(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_sin *__pyx_optional_args) {
24350  PyObject *__pyx_v_i = ((PyObject *)Py_None);
24351  PyObject *__pyx_r = NULL;
24352  __Pyx_RefNannyDeclarations
24353  int __pyx_t_1;
24354  PyObject *__pyx_t_2 = NULL;
24355  Clifford __pyx_t_3;
24356  Clifford __pyx_t_4;
24357  Clifford __pyx_t_5;
24358  PyObject *__pyx_t_6 = NULL;
24359  PyObject *__pyx_t_7 = NULL;
24360  PyObject *__pyx_t_8 = NULL;
24361  PyObject *__pyx_t_9 = NULL;
24362  PyObject *__pyx_t_10 = NULL;
24363  int __pyx_t_11;
24364  PyObject *__pyx_t_12 = NULL;
24365  PyObject *__pyx_t_13 = NULL;
24366  int __pyx_lineno = 0;
24367  const char *__pyx_filename = NULL;
24368  int __pyx_clineno = 0;
24369  __Pyx_RefNannySetupContext("sin", 1);
24370  if (__pyx_optional_args) {
24371  if (__pyx_optional_args->__pyx_n > 0) {
24372  __pyx_v_i = __pyx_optional_args->i;
24373  }
24374  }
24375 
24376  /* "PyClical.pyx":1802
24377  * {1,2,3}
24378  * """
24379  * if not (i is None): # <<<<<<<<<<<<<<
24380  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
24381  * else:
24382  */
24383  __pyx_t_1 = (__pyx_v_i != Py_None);
24384  if (__pyx_t_1) {
24385 
24386  /* "PyClical.pyx":1803
24387  * """
24388  * if not (i is None):
24389  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
24390  * else:
24391  * try:
24392  */
24393  __Pyx_XDECREF(__pyx_r);
24394  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1803, __pyx_L1_error)
24395  __Pyx_GOTREF(__pyx_t_2);
24396  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L1_error)
24397  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1803, __pyx_L1_error)
24398  try {
24399  __pyx_t_5 = sin(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
24400  } catch(...) {
24401  __Pyx_CppExn2PyErr();
24402  __PYX_ERR(0, 1803, __pyx_L1_error)
24403  }
24404  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1803, __pyx_L1_error)
24405  __Pyx_GOTREF(__pyx_t_6);
24406  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24407  __pyx_r = __pyx_t_6;
24408  __pyx_t_6 = 0;
24409  goto __pyx_L0;
24410 
24411  /* "PyClical.pyx":1802
24412  * {1,2,3}
24413  * """
24414  * if not (i is None): # <<<<<<<<<<<<<<
24415  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
24416  * else:
24417  */
24418  }
24419 
24420  /* "PyClical.pyx":1805
24421  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
24422  * else:
24423  * try: # <<<<<<<<<<<<<<
24424  * return math.sin(obj)
24425  * except:
24426  */
24427  /*else*/ {
24428  {
24429  __Pyx_PyThreadState_declare
24430  __Pyx_PyThreadState_assign
24431  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
24432  __Pyx_XGOTREF(__pyx_t_7);
24433  __Pyx_XGOTREF(__pyx_t_8);
24434  __Pyx_XGOTREF(__pyx_t_9);
24435  /*try:*/ {
24436 
24437  /* "PyClical.pyx":1806
24438  * else:
24439  * try:
24440  * return math.sin(obj) # <<<<<<<<<<<<<<
24441  * except:
24442  * return clifford().wrap( glucat.sin(toClifford(obj)) )
24443  */
24444  __Pyx_XDECREF(__pyx_r);
24445  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1806, __pyx_L4_error)
24446  __Pyx_GOTREF(__pyx_t_2);
24447  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sin); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1806, __pyx_L4_error)
24448  __Pyx_GOTREF(__pyx_t_10);
24449  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24450  __pyx_t_2 = NULL;
24451  __pyx_t_11 = 0;
24452  #if CYTHON_UNPACK_METHODS
24453  if (unlikely(PyMethod_Check(__pyx_t_10))) {
24454  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
24455  if (likely(__pyx_t_2)) {
24456  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
24457  __Pyx_INCREF(__pyx_t_2);
24458  __Pyx_INCREF(function);
24459  __Pyx_DECREF_SET(__pyx_t_10, function);
24460  __pyx_t_11 = 1;
24461  }
24462  }
24463  #endif
24464  {
24465  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
24466  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
24467  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24468  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1806, __pyx_L4_error)
24469  __Pyx_GOTREF(__pyx_t_6);
24470  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
24471  }
24472  __pyx_r = __pyx_t_6;
24473  __pyx_t_6 = 0;
24474  goto __pyx_L8_try_return;
24475 
24476  /* "PyClical.pyx":1805
24477  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
24478  * else:
24479  * try: # <<<<<<<<<<<<<<
24480  * return math.sin(obj)
24481  * except:
24482  */
24483  }
24484  __pyx_L4_error:;
24485  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
24486  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24487  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
24488 
24489  /* "PyClical.pyx":1807
24490  * try:
24491  * return math.sin(obj)
24492  * except: # <<<<<<<<<<<<<<
24493  * return clifford().wrap( glucat.sin(toClifford(obj)) )
24494  *
24495  */
24496  /*except:*/ {
24497  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
24498  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1807, __pyx_L6_except_error)
24499  __Pyx_XGOTREF(__pyx_t_6);
24500  __Pyx_XGOTREF(__pyx_t_10);
24501  __Pyx_XGOTREF(__pyx_t_2);
24502 
24503  /* "PyClical.pyx":1808
24504  * return math.sin(obj)
24505  * except:
24506  * return clifford().wrap( glucat.sin(toClifford(obj)) ) # <<<<<<<<<<<<<<
24507  *
24508  * cpdef inline asin(obj,i = None):
24509  */
24510  __Pyx_XDECREF(__pyx_r);
24511  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1808, __pyx_L6_except_error)
24512  __Pyx_GOTREF(__pyx_t_12);
24513  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1808, __pyx_L6_except_error)
24514  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), sin(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1808, __pyx_L6_except_error)
24515  __Pyx_GOTREF(__pyx_t_13);
24516  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
24517  __pyx_r = __pyx_t_13;
24518  __pyx_t_13 = 0;
24519  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24520  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
24521  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
24522  goto __pyx_L7_except_return;
24523  }
24524 
24525  /* "PyClical.pyx":1805
24526  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
24527  * else:
24528  * try: # <<<<<<<<<<<<<<
24529  * return math.sin(obj)
24530  * except:
24531  */
24532  __pyx_L6_except_error:;
24533  __Pyx_XGIVEREF(__pyx_t_7);
24534  __Pyx_XGIVEREF(__pyx_t_8);
24535  __Pyx_XGIVEREF(__pyx_t_9);
24536  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24537  goto __pyx_L1_error;
24538  __pyx_L8_try_return:;
24539  __Pyx_XGIVEREF(__pyx_t_7);
24540  __Pyx_XGIVEREF(__pyx_t_8);
24541  __Pyx_XGIVEREF(__pyx_t_9);
24542  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24543  goto __pyx_L0;
24544  __pyx_L7_except_return:;
24545  __Pyx_XGIVEREF(__pyx_t_7);
24546  __Pyx_XGIVEREF(__pyx_t_8);
24547  __Pyx_XGIVEREF(__pyx_t_9);
24548  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24549  goto __pyx_L0;
24550  }
24551  }
24552 
24553  /* "PyClical.pyx":1791
24554  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
24555  *
24556  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
24557  * """
24558  * Sine of multivector with optional complexifier.
24559  */
24560 
24561  /* function exit code */
24562  __pyx_L1_error:;
24563  __Pyx_XDECREF(__pyx_t_2);
24564  __Pyx_XDECREF(__pyx_t_6);
24565  __Pyx_XDECREF(__pyx_t_10);
24566  __Pyx_XDECREF(__pyx_t_12);
24567  __Pyx_XDECREF(__pyx_t_13);
24568  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
24569  __pyx_r = 0;
24570  __pyx_L0:;
24571  __Pyx_XGIVEREF(__pyx_r);
24572  __Pyx_RefNannyFinishContext();
24573  return __pyx_r;
24574  }
24575 
24576  /* Python wrapper */
24577  static PyObject *__pyx_pw_8PyClical_65sin(PyObject *__pyx_self,
24578 #if CYTHON_METH_FASTCALL
24579 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24580 #else
24581 PyObject *__pyx_args, PyObject *__pyx_kwds
24582 #endif
24583 ); /*proto*/
24584  PyDoc_STRVAR(__pyx_doc_8PyClical_64sin, "\n Sine of multivector with optional complexifier.\n\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),s))\n {-1}\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),\"{-2,-1,1}\"))\n {-1}\n >>> x=clifford(\"{1,2,3}\"); print(asin(sin(x)))\n {1,2,3}\n ");
24585  static PyMethodDef __pyx_mdef_8PyClical_65sin = {"sin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_65sin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_64sin};
24586  static PyObject *__pyx_pw_8PyClical_65sin(PyObject *__pyx_self,
24587 #if CYTHON_METH_FASTCALL
24588 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24589 #else
24590 PyObject *__pyx_args, PyObject *__pyx_kwds
24591 #endif
24592 ) {
24593  PyObject *__pyx_v_obj = 0;
24594  PyObject *__pyx_v_i = 0;
24595  #if !CYTHON_METH_FASTCALL
24596  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
24597  #endif
24598  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
24599  PyObject* values[2] = {0,0};
24600  int __pyx_lineno = 0;
24601  const char *__pyx_filename = NULL;
24602  int __pyx_clineno = 0;
24603  PyObject *__pyx_r = 0;
24604  __Pyx_RefNannyDeclarations
24605  __Pyx_RefNannySetupContext("sin (wrapper)", 0);
24606  #if !CYTHON_METH_FASTCALL
24607  #if CYTHON_ASSUME_SAFE_MACROS
24608  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
24609  #else
24610  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
24611  #endif
24612  #endif
24613  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
24614  {
24615  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
24616  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
24617  if (__pyx_kwds) {
24618  Py_ssize_t kw_args;
24619  switch (__pyx_nargs) {
24620  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
24621  CYTHON_FALLTHROUGH;
24622  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
24623  CYTHON_FALLTHROUGH;
24624  case 0: break;
24625  default: goto __pyx_L5_argtuple_error;
24626  }
24627  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
24628  switch (__pyx_nargs) {
24629  case 0:
24630  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
24631  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
24632  kw_args--;
24633  }
24634  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1791, __pyx_L3_error)
24635  else goto __pyx_L5_argtuple_error;
24636  CYTHON_FALLTHROUGH;
24637  case 1:
24638  if (kw_args > 0) {
24639  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
24640  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
24641  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1791, __pyx_L3_error)
24642  }
24643  }
24644  if (unlikely(kw_args > 0)) {
24645  const Py_ssize_t kwd_pos_args = __pyx_nargs;
24646  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sin") < 0)) __PYX_ERR(0, 1791, __pyx_L3_error)
24647  }
24648  } else {
24649  switch (__pyx_nargs) {
24650  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
24651  CYTHON_FALLTHROUGH;
24652  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
24653  break;
24654  default: goto __pyx_L5_argtuple_error;
24655  }
24656  }
24657  __pyx_v_obj = values[0];
24658  __pyx_v_i = values[1];
24659  }
24660  goto __pyx_L6_skip;
24661  __pyx_L5_argtuple_error:;
24662  __Pyx_RaiseArgtupleInvalid("sin", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1791, __pyx_L3_error)
24663  __pyx_L6_skip:;
24664  goto __pyx_L4_argument_unpacking_done;
24665  __pyx_L3_error:;
24666  {
24667  Py_ssize_t __pyx_temp;
24668  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
24669  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
24670  }
24671  }
24672  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
24673  __Pyx_RefNannyFinishContext();
24674  return NULL;
24675  __pyx_L4_argument_unpacking_done:;
24676  __pyx_r = __pyx_pf_8PyClical_64sin(__pyx_self, __pyx_v_obj, __pyx_v_i);
24677 
24678  /* function exit code */
24679  {
24680  Py_ssize_t __pyx_temp;
24681  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
24682  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
24683  }
24684  }
24685  __Pyx_RefNannyFinishContext();
24686  return __pyx_r;
24687  }
24688 
24689  static PyObject *__pyx_pf_8PyClical_64sin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
24690  PyObject *__pyx_r = NULL;
24691  __Pyx_RefNannyDeclarations
24692  PyObject *__pyx_t_1 = NULL;
24693  struct __pyx_opt_args_8PyClical_sin __pyx_t_2;
24694  int __pyx_lineno = 0;
24695  const char *__pyx_filename = NULL;
24696  int __pyx_clineno = 0;
24697  __Pyx_RefNannySetupContext("sin", 1);
24698  __Pyx_XDECREF(__pyx_r);
24699  __pyx_t_2.__pyx_n = 1;
24700  __pyx_t_2.i = __pyx_v_i;
24701  __pyx_t_1 = __pyx_f_8PyClical_sin(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
24702  __Pyx_GOTREF(__pyx_t_1);
24703  __pyx_r = __pyx_t_1;
24704  __pyx_t_1 = 0;
24705  goto __pyx_L0;
24706 
24707  /* function exit code */
24708  __pyx_L1_error:;
24709  __Pyx_XDECREF(__pyx_t_1);
24710  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
24711  __pyx_r = NULL;
24712  __pyx_L0:;
24713  __Pyx_XGIVEREF(__pyx_r);
24714  __Pyx_RefNannyFinishContext();
24715  return __pyx_r;
24716  }
24717 
24718  /* "PyClical.pyx":1810
24719  * return clifford().wrap( glucat.sin(toClifford(obj)) )
24720  *
24721  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
24722  * """
24723  * Inverse sine of multivector with optional complexifier.
24724  */
24725 
24726  static PyObject *__pyx_pw_8PyClical_67asin(PyObject *__pyx_self,
24727 #if CYTHON_METH_FASTCALL
24728 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24729 #else
24730 PyObject *__pyx_args, PyObject *__pyx_kwds
24731 #endif
24732 ); /*proto*/
24733  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_asin(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_asin *__pyx_optional_args) {
24734  PyObject *__pyx_v_i = ((PyObject *)Py_None);
24735  PyObject *__pyx_r = NULL;
24736  __Pyx_RefNannyDeclarations
24737  int __pyx_t_1;
24738  PyObject *__pyx_t_2 = NULL;
24739  Clifford __pyx_t_3;
24740  Clifford __pyx_t_4;
24741  Clifford __pyx_t_5;
24742  PyObject *__pyx_t_6 = NULL;
24743  PyObject *__pyx_t_7 = NULL;
24744  PyObject *__pyx_t_8 = NULL;
24745  PyObject *__pyx_t_9 = NULL;
24746  PyObject *__pyx_t_10 = NULL;
24747  int __pyx_t_11;
24748  PyObject *__pyx_t_12 = NULL;
24749  PyObject *__pyx_t_13 = NULL;
24750  int __pyx_lineno = 0;
24751  const char *__pyx_filename = NULL;
24752  int __pyx_clineno = 0;
24753  __Pyx_RefNannySetupContext("asin", 1);
24754  if (__pyx_optional_args) {
24755  if (__pyx_optional_args->__pyx_n > 0) {
24756  __pyx_v_i = __pyx_optional_args->i;
24757  }
24758  }
24759 
24760  /* "PyClical.pyx":1823
24761  * {1,2,3}
24762  * """
24763  * if not (i is None): # <<<<<<<<<<<<<<
24764  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
24765  * else:
24766  */
24767  __pyx_t_1 = (__pyx_v_i != Py_None);
24768  if (__pyx_t_1) {
24769 
24770  /* "PyClical.pyx":1824
24771  * """
24772  * if not (i is None):
24773  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
24774  * else:
24775  * try:
24776  */
24777  __Pyx_XDECREF(__pyx_r);
24778  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1824, __pyx_L1_error)
24779  __Pyx_GOTREF(__pyx_t_2);
24780  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1824, __pyx_L1_error)
24781  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1824, __pyx_L1_error)
24782  try {
24783  __pyx_t_5 = asin(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
24784  } catch(...) {
24785  __Pyx_CppExn2PyErr();
24786  __PYX_ERR(0, 1824, __pyx_L1_error)
24787  }
24788  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1824, __pyx_L1_error)
24789  __Pyx_GOTREF(__pyx_t_6);
24790  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24791  __pyx_r = __pyx_t_6;
24792  __pyx_t_6 = 0;
24793  goto __pyx_L0;
24794 
24795  /* "PyClical.pyx":1823
24796  * {1,2,3}
24797  * """
24798  * if not (i is None): # <<<<<<<<<<<<<<
24799  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
24800  * else:
24801  */
24802  }
24803 
24804  /* "PyClical.pyx":1826
24805  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
24806  * else:
24807  * try: # <<<<<<<<<<<<<<
24808  * return math.asin(obj)
24809  * except:
24810  */
24811  /*else*/ {
24812  {
24813  __Pyx_PyThreadState_declare
24814  __Pyx_PyThreadState_assign
24815  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
24816  __Pyx_XGOTREF(__pyx_t_7);
24817  __Pyx_XGOTREF(__pyx_t_8);
24818  __Pyx_XGOTREF(__pyx_t_9);
24819  /*try:*/ {
24820 
24821  /* "PyClical.pyx":1827
24822  * else:
24823  * try:
24824  * return math.asin(obj) # <<<<<<<<<<<<<<
24825  * except:
24826  * return clifford().wrap( glucat.asin(toClifford(obj)) )
24827  */
24828  __Pyx_XDECREF(__pyx_r);
24829  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1827, __pyx_L4_error)
24830  __Pyx_GOTREF(__pyx_t_2);
24831  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asin); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1827, __pyx_L4_error)
24832  __Pyx_GOTREF(__pyx_t_10);
24833  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24834  __pyx_t_2 = NULL;
24835  __pyx_t_11 = 0;
24836  #if CYTHON_UNPACK_METHODS
24837  if (unlikely(PyMethod_Check(__pyx_t_10))) {
24838  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
24839  if (likely(__pyx_t_2)) {
24840  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
24841  __Pyx_INCREF(__pyx_t_2);
24842  __Pyx_INCREF(function);
24843  __Pyx_DECREF_SET(__pyx_t_10, function);
24844  __pyx_t_11 = 1;
24845  }
24846  }
24847  #endif
24848  {
24849  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
24850  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
24851  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24852  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1827, __pyx_L4_error)
24853  __Pyx_GOTREF(__pyx_t_6);
24854  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
24855  }
24856  __pyx_r = __pyx_t_6;
24857  __pyx_t_6 = 0;
24858  goto __pyx_L8_try_return;
24859 
24860  /* "PyClical.pyx":1826
24861  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
24862  * else:
24863  * try: # <<<<<<<<<<<<<<
24864  * return math.asin(obj)
24865  * except:
24866  */
24867  }
24868  __pyx_L4_error:;
24869  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
24870  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24871  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
24872 
24873  /* "PyClical.pyx":1828
24874  * try:
24875  * return math.asin(obj)
24876  * except: # <<<<<<<<<<<<<<
24877  * return clifford().wrap( glucat.asin(toClifford(obj)) )
24878  *
24879  */
24880  /*except:*/ {
24881  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
24882  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1828, __pyx_L6_except_error)
24883  __Pyx_XGOTREF(__pyx_t_6);
24884  __Pyx_XGOTREF(__pyx_t_10);
24885  __Pyx_XGOTREF(__pyx_t_2);
24886 
24887  /* "PyClical.pyx":1829
24888  * return math.asin(obj)
24889  * except:
24890  * return clifford().wrap( glucat.asin(toClifford(obj)) ) # <<<<<<<<<<<<<<
24891  *
24892  * cpdef inline sinh(obj):
24893  */
24894  __Pyx_XDECREF(__pyx_r);
24895  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1829, __pyx_L6_except_error)
24896  __Pyx_GOTREF(__pyx_t_12);
24897  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1829, __pyx_L6_except_error)
24898  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), asin(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1829, __pyx_L6_except_error)
24899  __Pyx_GOTREF(__pyx_t_13);
24900  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
24901  __pyx_r = __pyx_t_13;
24902  __pyx_t_13 = 0;
24903  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24904  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
24905  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
24906  goto __pyx_L7_except_return;
24907  }
24908 
24909  /* "PyClical.pyx":1826
24910  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
24911  * else:
24912  * try: # <<<<<<<<<<<<<<
24913  * return math.asin(obj)
24914  * except:
24915  */
24916  __pyx_L6_except_error:;
24917  __Pyx_XGIVEREF(__pyx_t_7);
24918  __Pyx_XGIVEREF(__pyx_t_8);
24919  __Pyx_XGIVEREF(__pyx_t_9);
24920  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24921  goto __pyx_L1_error;
24922  __pyx_L8_try_return:;
24923  __Pyx_XGIVEREF(__pyx_t_7);
24924  __Pyx_XGIVEREF(__pyx_t_8);
24925  __Pyx_XGIVEREF(__pyx_t_9);
24926  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24927  goto __pyx_L0;
24928  __pyx_L7_except_return:;
24929  __Pyx_XGIVEREF(__pyx_t_7);
24930  __Pyx_XGIVEREF(__pyx_t_8);
24931  __Pyx_XGIVEREF(__pyx_t_9);
24932  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
24933  goto __pyx_L0;
24934  }
24935  }
24936 
24937  /* "PyClical.pyx":1810
24938  * return clifford().wrap( glucat.sin(toClifford(obj)) )
24939  *
24940  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
24941  * """
24942  * Inverse sine of multivector with optional complexifier.
24943  */
24944 
24945  /* function exit code */
24946  __pyx_L1_error:;
24947  __Pyx_XDECREF(__pyx_t_2);
24948  __Pyx_XDECREF(__pyx_t_6);
24949  __Pyx_XDECREF(__pyx_t_10);
24950  __Pyx_XDECREF(__pyx_t_12);
24951  __Pyx_XDECREF(__pyx_t_13);
24952  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
24953  __pyx_r = 0;
24954  __pyx_L0:;
24955  __Pyx_XGIVEREF(__pyx_r);
24956  __Pyx_RefNannyFinishContext();
24957  return __pyx_r;
24958  }
24959 
24960  /* Python wrapper */
24961  static PyObject *__pyx_pw_8PyClical_67asin(PyObject *__pyx_self,
24962 #if CYTHON_METH_FASTCALL
24963 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24964 #else
24965 PyObject *__pyx_args, PyObject *__pyx_kwds
24966 #endif
24967 ); /*proto*/
24968  PyDoc_STRVAR(__pyx_doc_8PyClical_66asin, "\n Inverse sine of multivector with optional complexifier.\n\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),s))\n {-1}\n >>> s=\"{-1}\"; x=clifford(s); print(asin(sin(x,s),\"{-2,-1,1}\"))\n {-1}\n >>> print(asin(1) / pi)\n 0.5\n >>> x=clifford(\"{1,2,3}\"); print(asin(sin(x)))\n {1,2,3}\n ");
24969  static PyMethodDef __pyx_mdef_8PyClical_67asin = {"asin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_67asin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_66asin};
24970  static PyObject *__pyx_pw_8PyClical_67asin(PyObject *__pyx_self,
24971 #if CYTHON_METH_FASTCALL
24972 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
24973 #else
24974 PyObject *__pyx_args, PyObject *__pyx_kwds
24975 #endif
24976 ) {
24977  PyObject *__pyx_v_obj = 0;
24978  PyObject *__pyx_v_i = 0;
24979  #if !CYTHON_METH_FASTCALL
24980  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
24981  #endif
24982  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
24983  PyObject* values[2] = {0,0};
24984  int __pyx_lineno = 0;
24985  const char *__pyx_filename = NULL;
24986  int __pyx_clineno = 0;
24987  PyObject *__pyx_r = 0;
24988  __Pyx_RefNannyDeclarations
24989  __Pyx_RefNannySetupContext("asin (wrapper)", 0);
24990  #if !CYTHON_METH_FASTCALL
24991  #if CYTHON_ASSUME_SAFE_MACROS
24992  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
24993  #else
24994  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
24995  #endif
24996  #endif
24997  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
24998  {
24999  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
25000  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
25001  if (__pyx_kwds) {
25002  Py_ssize_t kw_args;
25003  switch (__pyx_nargs) {
25004  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
25005  CYTHON_FALLTHROUGH;
25006  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
25007  CYTHON_FALLTHROUGH;
25008  case 0: break;
25009  default: goto __pyx_L5_argtuple_error;
25010  }
25011  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
25012  switch (__pyx_nargs) {
25013  case 0:
25014  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
25015  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
25016  kw_args--;
25017  }
25018  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1810, __pyx_L3_error)
25019  else goto __pyx_L5_argtuple_error;
25020  CYTHON_FALLTHROUGH;
25021  case 1:
25022  if (kw_args > 0) {
25023  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
25024  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
25025  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1810, __pyx_L3_error)
25026  }
25027  }
25028  if (unlikely(kw_args > 0)) {
25029  const Py_ssize_t kwd_pos_args = __pyx_nargs;
25030  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "asin") < 0)) __PYX_ERR(0, 1810, __pyx_L3_error)
25031  }
25032  } else {
25033  switch (__pyx_nargs) {
25034  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
25035  CYTHON_FALLTHROUGH;
25036  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
25037  break;
25038  default: goto __pyx_L5_argtuple_error;
25039  }
25040  }
25041  __pyx_v_obj = values[0];
25042  __pyx_v_i = values[1];
25043  }
25044  goto __pyx_L6_skip;
25045  __pyx_L5_argtuple_error:;
25046  __Pyx_RaiseArgtupleInvalid("asin", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1810, __pyx_L3_error)
25047  __pyx_L6_skip:;
25048  goto __pyx_L4_argument_unpacking_done;
25049  __pyx_L3_error:;
25050  {
25051  Py_ssize_t __pyx_temp;
25052  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
25053  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
25054  }
25055  }
25056  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
25057  __Pyx_RefNannyFinishContext();
25058  return NULL;
25059  __pyx_L4_argument_unpacking_done:;
25060  __pyx_r = __pyx_pf_8PyClical_66asin(__pyx_self, __pyx_v_obj, __pyx_v_i);
25061 
25062  /* function exit code */
25063  {
25064  Py_ssize_t __pyx_temp;
25065  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
25066  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
25067  }
25068  }
25069  __Pyx_RefNannyFinishContext();
25070  return __pyx_r;
25071  }
25072 
25073  static PyObject *__pyx_pf_8PyClical_66asin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
25074  PyObject *__pyx_r = NULL;
25075  __Pyx_RefNannyDeclarations
25076  PyObject *__pyx_t_1 = NULL;
25077  struct __pyx_opt_args_8PyClical_asin __pyx_t_2;
25078  int __pyx_lineno = 0;
25079  const char *__pyx_filename = NULL;
25080  int __pyx_clineno = 0;
25081  __Pyx_RefNannySetupContext("asin", 1);
25082  __Pyx_XDECREF(__pyx_r);
25083  __pyx_t_2.__pyx_n = 1;
25084  __pyx_t_2.i = __pyx_v_i;
25085  __pyx_t_1 = __pyx_f_8PyClical_asin(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1810, __pyx_L1_error)
25086  __Pyx_GOTREF(__pyx_t_1);
25087  __pyx_r = __pyx_t_1;
25088  __pyx_t_1 = 0;
25089  goto __pyx_L0;
25090 
25091  /* function exit code */
25092  __pyx_L1_error:;
25093  __Pyx_XDECREF(__pyx_t_1);
25094  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
25095  __pyx_r = NULL;
25096  __pyx_L0:;
25097  __Pyx_XGIVEREF(__pyx_r);
25098  __Pyx_RefNannyFinishContext();
25099  return __pyx_r;
25100  }
25101 
25102  /* "PyClical.pyx":1831
25103  * return clifford().wrap( glucat.asin(toClifford(obj)) )
25104  *
25105  * cpdef inline sinh(obj): # <<<<<<<<<<<<<<
25106  * """
25107  * Hyperbolic sine of multivector.
25108  */
25109 
25110  static PyObject *__pyx_pw_8PyClical_69sinh(PyObject *__pyx_self,
25111 #if CYTHON_METH_FASTCALL
25112 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25113 #else
25114 PyObject *__pyx_args, PyObject *__pyx_kwds
25115 #endif
25116 ); /*proto*/
25117  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sinh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
25118  PyObject *__pyx_r = NULL;
25119  __Pyx_RefNannyDeclarations
25120  PyObject *__pyx_t_1 = NULL;
25121  PyObject *__pyx_t_2 = NULL;
25122  PyObject *__pyx_t_3 = NULL;
25123  PyObject *__pyx_t_4 = NULL;
25124  PyObject *__pyx_t_5 = NULL;
25125  PyObject *__pyx_t_6 = NULL;
25126  int __pyx_t_7;
25127  PyObject *__pyx_t_8 = NULL;
25128  Clifford __pyx_t_9;
25129  PyObject *__pyx_t_10 = NULL;
25130  int __pyx_lineno = 0;
25131  const char *__pyx_filename = NULL;
25132  int __pyx_clineno = 0;
25133  __Pyx_RefNannySetupContext("sinh", 1);
25134 
25135  /* "PyClical.pyx":1840
25136  * 0.5{1,2}
25137  * """
25138  * try: # <<<<<<<<<<<<<<
25139  * return math.sinh(obj)
25140  * except:
25141  */
25142  {
25143  __Pyx_PyThreadState_declare
25144  __Pyx_PyThreadState_assign
25145  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
25146  __Pyx_XGOTREF(__pyx_t_1);
25147  __Pyx_XGOTREF(__pyx_t_2);
25148  __Pyx_XGOTREF(__pyx_t_3);
25149  /*try:*/ {
25150 
25151  /* "PyClical.pyx":1841
25152  * """
25153  * try:
25154  * return math.sinh(obj) # <<<<<<<<<<<<<<
25155  * except:
25156  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
25157  */
25158  __Pyx_XDECREF(__pyx_r);
25159  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1841, __pyx_L3_error)
25160  __Pyx_GOTREF(__pyx_t_5);
25161  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sinh); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1841, __pyx_L3_error)
25162  __Pyx_GOTREF(__pyx_t_6);
25163  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25164  __pyx_t_5 = NULL;
25165  __pyx_t_7 = 0;
25166  #if CYTHON_UNPACK_METHODS
25167  if (unlikely(PyMethod_Check(__pyx_t_6))) {
25168  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
25169  if (likely(__pyx_t_5)) {
25170  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
25171  __Pyx_INCREF(__pyx_t_5);
25172  __Pyx_INCREF(function);
25173  __Pyx_DECREF_SET(__pyx_t_6, function);
25174  __pyx_t_7 = 1;
25175  }
25176  }
25177  #endif
25178  {
25179  PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_obj};
25180  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
25181  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
25182  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1841, __pyx_L3_error)
25183  __Pyx_GOTREF(__pyx_t_4);
25184  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
25185  }
25186  __pyx_r = __pyx_t_4;
25187  __pyx_t_4 = 0;
25188  goto __pyx_L7_try_return;
25189 
25190  /* "PyClical.pyx":1840
25191  * 0.5{1,2}
25192  * """
25193  * try: # <<<<<<<<<<<<<<
25194  * return math.sinh(obj)
25195  * except:
25196  */
25197  }
25198  __pyx_L3_error:;
25199  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
25200  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
25201  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
25202 
25203  /* "PyClical.pyx":1842
25204  * try:
25205  * return math.sinh(obj)
25206  * except: # <<<<<<<<<<<<<<
25207  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
25208  *
25209  */
25210  /*except:*/ {
25211  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25212  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 1842, __pyx_L5_except_error)
25213  __Pyx_XGOTREF(__pyx_t_4);
25214  __Pyx_XGOTREF(__pyx_t_6);
25215  __Pyx_XGOTREF(__pyx_t_5);
25216 
25217  /* "PyClical.pyx":1843
25218  * return math.sinh(obj)
25219  * except:
25220  * return clifford().wrap( glucat.sinh(toClifford(obj)) ) # <<<<<<<<<<<<<<
25221  *
25222  * cpdef inline asinh(obj,i = None):
25223  */
25224  __Pyx_XDECREF(__pyx_r);
25225  __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1843, __pyx_L5_except_error)
25226  __Pyx_GOTREF(__pyx_t_8);
25227  __pyx_t_9 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1843, __pyx_L5_except_error)
25228  __pyx_t_10 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_8), sinh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1843, __pyx_L5_except_error)
25229  __Pyx_GOTREF(__pyx_t_10);
25230  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
25231  __pyx_r = __pyx_t_10;
25232  __pyx_t_10 = 0;
25233  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25234  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25235  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
25236  goto __pyx_L6_except_return;
25237  }
25238 
25239  /* "PyClical.pyx":1840
25240  * 0.5{1,2}
25241  * """
25242  * try: # <<<<<<<<<<<<<<
25243  * return math.sinh(obj)
25244  * except:
25245  */
25246  __pyx_L5_except_error:;
25247  __Pyx_XGIVEREF(__pyx_t_1);
25248  __Pyx_XGIVEREF(__pyx_t_2);
25249  __Pyx_XGIVEREF(__pyx_t_3);
25250  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
25251  goto __pyx_L1_error;
25252  __pyx_L7_try_return:;
25253  __Pyx_XGIVEREF(__pyx_t_1);
25254  __Pyx_XGIVEREF(__pyx_t_2);
25255  __Pyx_XGIVEREF(__pyx_t_3);
25256  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
25257  goto __pyx_L0;
25258  __pyx_L6_except_return:;
25259  __Pyx_XGIVEREF(__pyx_t_1);
25260  __Pyx_XGIVEREF(__pyx_t_2);
25261  __Pyx_XGIVEREF(__pyx_t_3);
25262  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
25263  goto __pyx_L0;
25264  }
25265 
25266  /* "PyClical.pyx":1831
25267  * return clifford().wrap( glucat.asin(toClifford(obj)) )
25268  *
25269  * cpdef inline sinh(obj): # <<<<<<<<<<<<<<
25270  * """
25271  * Hyperbolic sine of multivector.
25272  */
25273 
25274  /* function exit code */
25275  __pyx_L1_error:;
25276  __Pyx_XDECREF(__pyx_t_4);
25277  __Pyx_XDECREF(__pyx_t_5);
25278  __Pyx_XDECREF(__pyx_t_6);
25279  __Pyx_XDECREF(__pyx_t_8);
25280  __Pyx_XDECREF(__pyx_t_10);
25281  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25282  __pyx_r = 0;
25283  __pyx_L0:;
25284  __Pyx_XGIVEREF(__pyx_r);
25285  __Pyx_RefNannyFinishContext();
25286  return __pyx_r;
25287  }
25288 
25289  /* Python wrapper */
25290  static PyObject *__pyx_pw_8PyClical_69sinh(PyObject *__pyx_self,
25291 #if CYTHON_METH_FASTCALL
25292 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25293 #else
25294 PyObject *__pyx_args, PyObject *__pyx_kwds
25295 #endif
25296 ); /*proto*/
25297  PyDoc_STRVAR(__pyx_doc_8PyClical_68sinh, "\n Hyperbolic sine of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/2; print(sinh(x))\n {1,2}\n >>> x=clifford(\"{1,2}\") * pi/6; print(sinh(x))\n 0.5{1,2}\n ");
25298  static PyMethodDef __pyx_mdef_8PyClical_69sinh = {"sinh", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_69sinh, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_68sinh};
25299  static PyObject *__pyx_pw_8PyClical_69sinh(PyObject *__pyx_self,
25300 #if CYTHON_METH_FASTCALL
25301 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25302 #else
25303 PyObject *__pyx_args, PyObject *__pyx_kwds
25304 #endif
25305 ) {
25306  PyObject *__pyx_v_obj = 0;
25307  #if !CYTHON_METH_FASTCALL
25308  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
25309  #endif
25310  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
25311  PyObject* values[1] = {0};
25312  int __pyx_lineno = 0;
25313  const char *__pyx_filename = NULL;
25314  int __pyx_clineno = 0;
25315  PyObject *__pyx_r = 0;
25316  __Pyx_RefNannyDeclarations
25317  __Pyx_RefNannySetupContext("sinh (wrapper)", 0);
25318  #if !CYTHON_METH_FASTCALL
25319  #if CYTHON_ASSUME_SAFE_MACROS
25320  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
25321  #else
25322  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
25323  #endif
25324  #endif
25325  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
25326  {
25327  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
25328  if (__pyx_kwds) {
25329  Py_ssize_t kw_args;
25330  switch (__pyx_nargs) {
25331  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
25332  CYTHON_FALLTHROUGH;
25333  case 0: break;
25334  default: goto __pyx_L5_argtuple_error;
25335  }
25336  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
25337  switch (__pyx_nargs) {
25338  case 0:
25339  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
25340  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
25341  kw_args--;
25342  }
25343  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1831, __pyx_L3_error)
25344  else goto __pyx_L5_argtuple_error;
25345  }
25346  if (unlikely(kw_args > 0)) {
25347  const Py_ssize_t kwd_pos_args = __pyx_nargs;
25348  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sinh") < 0)) __PYX_ERR(0, 1831, __pyx_L3_error)
25349  }
25350  } else if (unlikely(__pyx_nargs != 1)) {
25351  goto __pyx_L5_argtuple_error;
25352  } else {
25353  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
25354  }
25355  __pyx_v_obj = values[0];
25356  }
25357  goto __pyx_L6_skip;
25358  __pyx_L5_argtuple_error:;
25359  __Pyx_RaiseArgtupleInvalid("sinh", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1831, __pyx_L3_error)
25360  __pyx_L6_skip:;
25361  goto __pyx_L4_argument_unpacking_done;
25362  __pyx_L3_error:;
25363  {
25364  Py_ssize_t __pyx_temp;
25365  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
25366  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
25367  }
25368  }
25369  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25370  __Pyx_RefNannyFinishContext();
25371  return NULL;
25372  __pyx_L4_argument_unpacking_done:;
25373  __pyx_r = __pyx_pf_8PyClical_68sinh(__pyx_self, __pyx_v_obj);
25374 
25375  /* function exit code */
25376  {
25377  Py_ssize_t __pyx_temp;
25378  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
25379  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
25380  }
25381  }
25382  __Pyx_RefNannyFinishContext();
25383  return __pyx_r;
25384  }
25385 
25386  static PyObject *__pyx_pf_8PyClical_68sinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
25387  PyObject *__pyx_r = NULL;
25388  __Pyx_RefNannyDeclarations
25389  PyObject *__pyx_t_1 = NULL;
25390  int __pyx_lineno = 0;
25391  const char *__pyx_filename = NULL;
25392  int __pyx_clineno = 0;
25393  __Pyx_RefNannySetupContext("sinh", 1);
25394  __Pyx_XDECREF(__pyx_r);
25395  __pyx_t_1 = __pyx_f_8PyClical_sinh(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1831, __pyx_L1_error)
25396  __Pyx_GOTREF(__pyx_t_1);
25397  __pyx_r = __pyx_t_1;
25398  __pyx_t_1 = 0;
25399  goto __pyx_L0;
25400 
25401  /* function exit code */
25402  __pyx_L1_error:;
25403  __Pyx_XDECREF(__pyx_t_1);
25404  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25405  __pyx_r = NULL;
25406  __pyx_L0:;
25407  __Pyx_XGIVEREF(__pyx_r);
25408  __Pyx_RefNannyFinishContext();
25409  return __pyx_r;
25410  }
25411 
25412  /* "PyClical.pyx":1845
25413  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
25414  *
25415  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
25416  * """
25417  * Inverse hyperbolic sine of multivector with optional complexifier.
25418  */
25419 
25420  static PyObject *__pyx_pw_8PyClical_71asinh(PyObject *__pyx_self,
25421 #if CYTHON_METH_FASTCALL
25422 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25423 #else
25424 PyObject *__pyx_args, PyObject *__pyx_kwds
25425 #endif
25426 ); /*proto*/
25427  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_asinh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_asinh *__pyx_optional_args) {
25428  PyObject *__pyx_v_i = ((PyObject *)Py_None);
25429  PyObject *__pyx_r = NULL;
25430  __Pyx_RefNannyDeclarations
25431  int __pyx_t_1;
25432  PyObject *__pyx_t_2 = NULL;
25433  Clifford __pyx_t_3;
25434  Clifford __pyx_t_4;
25435  Clifford __pyx_t_5;
25436  PyObject *__pyx_t_6 = NULL;
25437  PyObject *__pyx_t_7 = NULL;
25438  PyObject *__pyx_t_8 = NULL;
25439  PyObject *__pyx_t_9 = NULL;
25440  PyObject *__pyx_t_10 = NULL;
25441  int __pyx_t_11;
25442  PyObject *__pyx_t_12 = NULL;
25443  PyObject *__pyx_t_13 = NULL;
25444  int __pyx_lineno = 0;
25445  const char *__pyx_filename = NULL;
25446  int __pyx_clineno = 0;
25447  __Pyx_RefNannySetupContext("asinh", 1);
25448  if (__pyx_optional_args) {
25449  if (__pyx_optional_args->__pyx_n > 0) {
25450  __pyx_v_i = __pyx_optional_args->i;
25451  }
25452  }
25453 
25454  /* "PyClical.pyx":1856
25455  * {1,2}
25456  * """
25457  * if not (i is None): # <<<<<<<<<<<<<<
25458  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
25459  * else:
25460  */
25461  __pyx_t_1 = (__pyx_v_i != Py_None);
25462  if (__pyx_t_1) {
25463 
25464  /* "PyClical.pyx":1857
25465  * """
25466  * if not (i is None):
25467  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
25468  * else:
25469  * try:
25470  */
25471  __Pyx_XDECREF(__pyx_r);
25472  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1857, __pyx_L1_error)
25473  __Pyx_GOTREF(__pyx_t_2);
25474  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1857, __pyx_L1_error)
25475  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1857, __pyx_L1_error)
25476  try {
25477  __pyx_t_5 = asinh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
25478  } catch(...) {
25479  __Pyx_CppExn2PyErr();
25480  __PYX_ERR(0, 1857, __pyx_L1_error)
25481  }
25482  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1857, __pyx_L1_error)
25483  __Pyx_GOTREF(__pyx_t_6);
25484  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25485  __pyx_r = __pyx_t_6;
25486  __pyx_t_6 = 0;
25487  goto __pyx_L0;
25488 
25489  /* "PyClical.pyx":1856
25490  * {1,2}
25491  * """
25492  * if not (i is None): # <<<<<<<<<<<<<<
25493  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
25494  * else:
25495  */
25496  }
25497 
25498  /* "PyClical.pyx":1859
25499  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
25500  * else:
25501  * try: # <<<<<<<<<<<<<<
25502  * return math.asinh(obj)
25503  * except:
25504  */
25505  /*else*/ {
25506  {
25507  __Pyx_PyThreadState_declare
25508  __Pyx_PyThreadState_assign
25509  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
25510  __Pyx_XGOTREF(__pyx_t_7);
25511  __Pyx_XGOTREF(__pyx_t_8);
25512  __Pyx_XGOTREF(__pyx_t_9);
25513  /*try:*/ {
25514 
25515  /* "PyClical.pyx":1860
25516  * else:
25517  * try:
25518  * return math.asinh(obj) # <<<<<<<<<<<<<<
25519  * except:
25520  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
25521  */
25522  __Pyx_XDECREF(__pyx_r);
25523  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1860, __pyx_L4_error)
25524  __Pyx_GOTREF(__pyx_t_2);
25525  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asinh); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1860, __pyx_L4_error)
25526  __Pyx_GOTREF(__pyx_t_10);
25527  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25528  __pyx_t_2 = NULL;
25529  __pyx_t_11 = 0;
25530  #if CYTHON_UNPACK_METHODS
25531  if (unlikely(PyMethod_Check(__pyx_t_10))) {
25532  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
25533  if (likely(__pyx_t_2)) {
25534  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
25535  __Pyx_INCREF(__pyx_t_2);
25536  __Pyx_INCREF(function);
25537  __Pyx_DECREF_SET(__pyx_t_10, function);
25538  __pyx_t_11 = 1;
25539  }
25540  }
25541  #endif
25542  {
25543  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
25544  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
25545  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
25546  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1860, __pyx_L4_error)
25547  __Pyx_GOTREF(__pyx_t_6);
25548  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
25549  }
25550  __pyx_r = __pyx_t_6;
25551  __pyx_t_6 = 0;
25552  goto __pyx_L8_try_return;
25553 
25554  /* "PyClical.pyx":1859
25555  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
25556  * else:
25557  * try: # <<<<<<<<<<<<<<
25558  * return math.asinh(obj)
25559  * except:
25560  */
25561  }
25562  __pyx_L4_error:;
25563  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
25564  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
25565  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
25566 
25567  /* "PyClical.pyx":1861
25568  * try:
25569  * return math.asinh(obj)
25570  * except: # <<<<<<<<<<<<<<
25571  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
25572  *
25573  */
25574  /*except:*/ {
25575  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25576  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1861, __pyx_L6_except_error)
25577  __Pyx_XGOTREF(__pyx_t_6);
25578  __Pyx_XGOTREF(__pyx_t_10);
25579  __Pyx_XGOTREF(__pyx_t_2);
25580 
25581  /* "PyClical.pyx":1862
25582  * return math.asinh(obj)
25583  * except:
25584  * return clifford().wrap( glucat.asinh(toClifford(obj)) ) # <<<<<<<<<<<<<<
25585  *
25586  * cpdef inline tan(obj,i = None):
25587  */
25588  __Pyx_XDECREF(__pyx_r);
25589  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1862, __pyx_L6_except_error)
25590  __Pyx_GOTREF(__pyx_t_12);
25591  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1862, __pyx_L6_except_error)
25592  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), asinh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1862, __pyx_L6_except_error)
25593  __Pyx_GOTREF(__pyx_t_13);
25594  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
25595  __pyx_r = __pyx_t_13;
25596  __pyx_t_13 = 0;
25597  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25598  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
25599  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
25600  goto __pyx_L7_except_return;
25601  }
25602 
25603  /* "PyClical.pyx":1859
25604  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
25605  * else:
25606  * try: # <<<<<<<<<<<<<<
25607  * return math.asinh(obj)
25608  * except:
25609  */
25610  __pyx_L6_except_error:;
25611  __Pyx_XGIVEREF(__pyx_t_7);
25612  __Pyx_XGIVEREF(__pyx_t_8);
25613  __Pyx_XGIVEREF(__pyx_t_9);
25614  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
25615  goto __pyx_L1_error;
25616  __pyx_L8_try_return:;
25617  __Pyx_XGIVEREF(__pyx_t_7);
25618  __Pyx_XGIVEREF(__pyx_t_8);
25619  __Pyx_XGIVEREF(__pyx_t_9);
25620  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
25621  goto __pyx_L0;
25622  __pyx_L7_except_return:;
25623  __Pyx_XGIVEREF(__pyx_t_7);
25624  __Pyx_XGIVEREF(__pyx_t_8);
25625  __Pyx_XGIVEREF(__pyx_t_9);
25626  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
25627  goto __pyx_L0;
25628  }
25629  }
25630 
25631  /* "PyClical.pyx":1845
25632  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
25633  *
25634  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
25635  * """
25636  * Inverse hyperbolic sine of multivector with optional complexifier.
25637  */
25638 
25639  /* function exit code */
25640  __pyx_L1_error:;
25641  __Pyx_XDECREF(__pyx_t_2);
25642  __Pyx_XDECREF(__pyx_t_6);
25643  __Pyx_XDECREF(__pyx_t_10);
25644  __Pyx_XDECREF(__pyx_t_12);
25645  __Pyx_XDECREF(__pyx_t_13);
25646  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25647  __pyx_r = 0;
25648  __pyx_L0:;
25649  __Pyx_XGIVEREF(__pyx_r);
25650  __Pyx_RefNannyFinishContext();
25651  return __pyx_r;
25652  }
25653 
25654  /* Python wrapper */
25655  static PyObject *__pyx_pw_8PyClical_71asinh(PyObject *__pyx_self,
25656 #if CYTHON_METH_FASTCALL
25657 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25658 #else
25659 PyObject *__pyx_args, PyObject *__pyx_kwds
25660 #endif
25661 ); /*proto*/
25662  PyDoc_STRVAR(__pyx_doc_8PyClical_70asinh, "\n Inverse hyperbolic sine of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(asinh(x,\"{1,2,3}\") * 2/pi)\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(asinh(x) * 2/pi)\n {1,2}\n >>> x=clifford(\"{1,2}\") / 2; print(asinh(x) * 6/pi)\n {1,2}\n ");
25663  static PyMethodDef __pyx_mdef_8PyClical_71asinh = {"asinh", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_71asinh, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_70asinh};
25664  static PyObject *__pyx_pw_8PyClical_71asinh(PyObject *__pyx_self,
25665 #if CYTHON_METH_FASTCALL
25666 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25667 #else
25668 PyObject *__pyx_args, PyObject *__pyx_kwds
25669 #endif
25670 ) {
25671  PyObject *__pyx_v_obj = 0;
25672  PyObject *__pyx_v_i = 0;
25673  #if !CYTHON_METH_FASTCALL
25674  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
25675  #endif
25676  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
25677  PyObject* values[2] = {0,0};
25678  int __pyx_lineno = 0;
25679  const char *__pyx_filename = NULL;
25680  int __pyx_clineno = 0;
25681  PyObject *__pyx_r = 0;
25682  __Pyx_RefNannyDeclarations
25683  __Pyx_RefNannySetupContext("asinh (wrapper)", 0);
25684  #if !CYTHON_METH_FASTCALL
25685  #if CYTHON_ASSUME_SAFE_MACROS
25686  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
25687  #else
25688  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
25689  #endif
25690  #endif
25691  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
25692  {
25693  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
25694  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
25695  if (__pyx_kwds) {
25696  Py_ssize_t kw_args;
25697  switch (__pyx_nargs) {
25698  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
25699  CYTHON_FALLTHROUGH;
25700  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
25701  CYTHON_FALLTHROUGH;
25702  case 0: break;
25703  default: goto __pyx_L5_argtuple_error;
25704  }
25705  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
25706  switch (__pyx_nargs) {
25707  case 0:
25708  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
25709  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
25710  kw_args--;
25711  }
25712  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1845, __pyx_L3_error)
25713  else goto __pyx_L5_argtuple_error;
25714  CYTHON_FALLTHROUGH;
25715  case 1:
25716  if (kw_args > 0) {
25717  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
25718  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
25719  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1845, __pyx_L3_error)
25720  }
25721  }
25722  if (unlikely(kw_args > 0)) {
25723  const Py_ssize_t kwd_pos_args = __pyx_nargs;
25724  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "asinh") < 0)) __PYX_ERR(0, 1845, __pyx_L3_error)
25725  }
25726  } else {
25727  switch (__pyx_nargs) {
25728  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
25729  CYTHON_FALLTHROUGH;
25730  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
25731  break;
25732  default: goto __pyx_L5_argtuple_error;
25733  }
25734  }
25735  __pyx_v_obj = values[0];
25736  __pyx_v_i = values[1];
25737  }
25738  goto __pyx_L6_skip;
25739  __pyx_L5_argtuple_error:;
25740  __Pyx_RaiseArgtupleInvalid("asinh", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1845, __pyx_L3_error)
25741  __pyx_L6_skip:;
25742  goto __pyx_L4_argument_unpacking_done;
25743  __pyx_L3_error:;
25744  {
25745  Py_ssize_t __pyx_temp;
25746  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
25747  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
25748  }
25749  }
25750  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25751  __Pyx_RefNannyFinishContext();
25752  return NULL;
25753  __pyx_L4_argument_unpacking_done:;
25754  __pyx_r = __pyx_pf_8PyClical_70asinh(__pyx_self, __pyx_v_obj, __pyx_v_i);
25755 
25756  /* function exit code */
25757  {
25758  Py_ssize_t __pyx_temp;
25759  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
25760  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
25761  }
25762  }
25763  __Pyx_RefNannyFinishContext();
25764  return __pyx_r;
25765  }
25766 
25767  static PyObject *__pyx_pf_8PyClical_70asinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
25768  PyObject *__pyx_r = NULL;
25769  __Pyx_RefNannyDeclarations
25770  PyObject *__pyx_t_1 = NULL;
25771  struct __pyx_opt_args_8PyClical_asinh __pyx_t_2;
25772  int __pyx_lineno = 0;
25773  const char *__pyx_filename = NULL;
25774  int __pyx_clineno = 0;
25775  __Pyx_RefNannySetupContext("asinh", 1);
25776  __Pyx_XDECREF(__pyx_r);
25777  __pyx_t_2.__pyx_n = 1;
25778  __pyx_t_2.i = __pyx_v_i;
25779  __pyx_t_1 = __pyx_f_8PyClical_asinh(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1845, __pyx_L1_error)
25780  __Pyx_GOTREF(__pyx_t_1);
25781  __pyx_r = __pyx_t_1;
25782  __pyx_t_1 = 0;
25783  goto __pyx_L0;
25784 
25785  /* function exit code */
25786  __pyx_L1_error:;
25787  __Pyx_XDECREF(__pyx_t_1);
25788  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
25789  __pyx_r = NULL;
25790  __pyx_L0:;
25791  __Pyx_XGIVEREF(__pyx_r);
25792  __Pyx_RefNannyFinishContext();
25793  return __pyx_r;
25794  }
25795 
25796  /* "PyClical.pyx":1864
25797  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
25798  *
25799  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
25800  * """
25801  * Tangent of multivector with optional complexifier.
25802  */
25803 
25804  static PyObject *__pyx_pw_8PyClical_73tan(PyObject *__pyx_self,
25805 #if CYTHON_METH_FASTCALL
25806 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
25807 #else
25808 PyObject *__pyx_args, PyObject *__pyx_kwds
25809 #endif
25810 ); /*proto*/
25811  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tan(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_tan *__pyx_optional_args) {
25812  PyObject *__pyx_v_i = ((PyObject *)Py_None);
25813  PyObject *__pyx_r = NULL;
25814  __Pyx_RefNannyDeclarations
25815  int __pyx_t_1;
25816  PyObject *__pyx_t_2 = NULL;
25817  Clifford __pyx_t_3;
25818  Clifford __pyx_t_4;
25819  Clifford __pyx_t_5;
25820  PyObject *__pyx_t_6 = NULL;
25821  PyObject *__pyx_t_7 = NULL;
25822  PyObject *__pyx_t_8 = NULL;
25823  PyObject *__pyx_t_9 = NULL;
25824  PyObject *__pyx_t_10 = NULL;
25825  int __pyx_t_11;
25826  PyObject *__pyx_t_12 = NULL;
25827  PyObject *__pyx_t_13 = NULL;
25828  int __pyx_lineno = 0;
25829  const char *__pyx_filename = NULL;
25830  int __pyx_clineno = 0;
25831  __Pyx_RefNannySetupContext("tan", 1);
25832  if (__pyx_optional_args) {
25833  if (__pyx_optional_args->__pyx_n > 0) {
25834  __pyx_v_i = __pyx_optional_args->i;
25835  }
25836  }
25837 
25838  /* "PyClical.pyx":1873
25839  * 0.7616{1,2}
25840  * """
25841  * if not (i is None): # <<<<<<<<<<<<<<
25842  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
25843  * else:
25844  */
25845  __pyx_t_1 = (__pyx_v_i != Py_None);
25846  if (__pyx_t_1) {
25847 
25848  /* "PyClical.pyx":1874
25849  * """
25850  * if not (i is None):
25851  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
25852  * else:
25853  * try:
25854  */
25855  __Pyx_XDECREF(__pyx_r);
25856  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1874, __pyx_L1_error)
25857  __Pyx_GOTREF(__pyx_t_2);
25858  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1874, __pyx_L1_error)
25859  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1874, __pyx_L1_error)
25860  try {
25861  __pyx_t_5 = tan(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
25862  } catch(...) {
25863  __Pyx_CppExn2PyErr();
25864  __PYX_ERR(0, 1874, __pyx_L1_error)
25865  }
25866  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1874, __pyx_L1_error)
25867  __Pyx_GOTREF(__pyx_t_6);
25868  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25869  __pyx_r = __pyx_t_6;
25870  __pyx_t_6 = 0;
25871  goto __pyx_L0;
25872 
25873  /* "PyClical.pyx":1873
25874  * 0.7616{1,2}
25875  * """
25876  * if not (i is None): # <<<<<<<<<<<<<<
25877  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
25878  * else:
25879  */
25880  }
25881 
25882  /* "PyClical.pyx":1876
25883  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
25884  * else:
25885  * try: # <<<<<<<<<<<<<<
25886  * return math.tan(obj)
25887  * except:
25888  */
25889  /*else*/ {
25890  {
25891  __Pyx_PyThreadState_declare
25892  __Pyx_PyThreadState_assign
25893  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
25894  __Pyx_XGOTREF(__pyx_t_7);
25895  __Pyx_XGOTREF(__pyx_t_8);
25896  __Pyx_XGOTREF(__pyx_t_9);
25897  /*try:*/ {
25898 
25899  /* "PyClical.pyx":1877
25900  * else:
25901  * try:
25902  * return math.tan(obj) # <<<<<<<<<<<<<<
25903  * except:
25904  * return clifford().wrap( glucat.tan(toClifford(obj)) )
25905  */
25906  __Pyx_XDECREF(__pyx_r);
25907  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1877, __pyx_L4_error)
25908  __Pyx_GOTREF(__pyx_t_2);
25909  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_tan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1877, __pyx_L4_error)
25910  __Pyx_GOTREF(__pyx_t_10);
25911  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25912  __pyx_t_2 = NULL;
25913  __pyx_t_11 = 0;
25914  #if CYTHON_UNPACK_METHODS
25915  if (unlikely(PyMethod_Check(__pyx_t_10))) {
25916  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
25917  if (likely(__pyx_t_2)) {
25918  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
25919  __Pyx_INCREF(__pyx_t_2);
25920  __Pyx_INCREF(function);
25921  __Pyx_DECREF_SET(__pyx_t_10, function);
25922  __pyx_t_11 = 1;
25923  }
25924  }
25925  #endif
25926  {
25927  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
25928  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
25929  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
25930  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1877, __pyx_L4_error)
25931  __Pyx_GOTREF(__pyx_t_6);
25932  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
25933  }
25934  __pyx_r = __pyx_t_6;
25935  __pyx_t_6 = 0;
25936  goto __pyx_L8_try_return;
25937 
25938  /* "PyClical.pyx":1876
25939  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
25940  * else:
25941  * try: # <<<<<<<<<<<<<<
25942  * return math.tan(obj)
25943  * except:
25944  */
25945  }
25946  __pyx_L4_error:;
25947  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
25948  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
25949  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
25950 
25951  /* "PyClical.pyx":1878
25952  * try:
25953  * return math.tan(obj)
25954  * except: # <<<<<<<<<<<<<<
25955  * return clifford().wrap( glucat.tan(toClifford(obj)) )
25956  *
25957  */
25958  /*except:*/ {
25959  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
25960  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1878, __pyx_L6_except_error)
25961  __Pyx_XGOTREF(__pyx_t_6);
25962  __Pyx_XGOTREF(__pyx_t_10);
25963  __Pyx_XGOTREF(__pyx_t_2);
25964 
25965  /* "PyClical.pyx":1879
25966  * return math.tan(obj)
25967  * except:
25968  * return clifford().wrap( glucat.tan(toClifford(obj)) ) # <<<<<<<<<<<<<<
25969  *
25970  * cpdef inline atan(obj,i = None):
25971  */
25972  __Pyx_XDECREF(__pyx_r);
25973  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1879, __pyx_L6_except_error)
25974  __Pyx_GOTREF(__pyx_t_12);
25975  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1879, __pyx_L6_except_error)
25976  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), tan(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1879, __pyx_L6_except_error)
25977  __Pyx_GOTREF(__pyx_t_13);
25978  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
25979  __pyx_r = __pyx_t_13;
25980  __pyx_t_13 = 0;
25981  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25982  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
25983  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
25984  goto __pyx_L7_except_return;
25985  }
25986 
25987  /* "PyClical.pyx":1876
25988  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
25989  * else:
25990  * try: # <<<<<<<<<<<<<<
25991  * return math.tan(obj)
25992  * except:
25993  */
25994  __pyx_L6_except_error:;
25995  __Pyx_XGIVEREF(__pyx_t_7);
25996  __Pyx_XGIVEREF(__pyx_t_8);
25997  __Pyx_XGIVEREF(__pyx_t_9);
25998  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
25999  goto __pyx_L1_error;
26000  __pyx_L8_try_return:;
26001  __Pyx_XGIVEREF(__pyx_t_7);
26002  __Pyx_XGIVEREF(__pyx_t_8);
26003  __Pyx_XGIVEREF(__pyx_t_9);
26004  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
26005  goto __pyx_L0;
26006  __pyx_L7_except_return:;
26007  __Pyx_XGIVEREF(__pyx_t_7);
26008  __Pyx_XGIVEREF(__pyx_t_8);
26009  __Pyx_XGIVEREF(__pyx_t_9);
26010  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
26011  goto __pyx_L0;
26012  }
26013  }
26014 
26015  /* "PyClical.pyx":1864
26016  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
26017  *
26018  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
26019  * """
26020  * Tangent of multivector with optional complexifier.
26021  */
26022 
26023  /* function exit code */
26024  __pyx_L1_error:;
26025  __Pyx_XDECREF(__pyx_t_2);
26026  __Pyx_XDECREF(__pyx_t_6);
26027  __Pyx_XDECREF(__pyx_t_10);
26028  __Pyx_XDECREF(__pyx_t_12);
26029  __Pyx_XDECREF(__pyx_t_13);
26030  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26031  __pyx_r = 0;
26032  __pyx_L0:;
26033  __Pyx_XGIVEREF(__pyx_r);
26034  __Pyx_RefNannyFinishContext();
26035  return __pyx_r;
26036  }
26037 
26038  /* Python wrapper */
26039  static PyObject *__pyx_pw_8PyClical_73tan(PyObject *__pyx_self,
26040 #if CYTHON_METH_FASTCALL
26041 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26042 #else
26043 PyObject *__pyx_args, PyObject *__pyx_kwds
26044 #endif
26045 ); /*proto*/
26046  PyDoc_STRVAR(__pyx_doc_8PyClical_72tan, "\n Tangent of multivector with optional complexifier.\n\n >>> x=clifford(\"{1,2}\"); print(tan(x,\"{1,2,3}\"))\n 0.7616{1,2}\n >>> x=clifford(\"{1,2}\"); print(tan(x))\n 0.7616{1,2}\n ");
26047  static PyMethodDef __pyx_mdef_8PyClical_73tan = {"tan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_73tan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_72tan};
26048  static PyObject *__pyx_pw_8PyClical_73tan(PyObject *__pyx_self,
26049 #if CYTHON_METH_FASTCALL
26050 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26051 #else
26052 PyObject *__pyx_args, PyObject *__pyx_kwds
26053 #endif
26054 ) {
26055  PyObject *__pyx_v_obj = 0;
26056  PyObject *__pyx_v_i = 0;
26057  #if !CYTHON_METH_FASTCALL
26058  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
26059  #endif
26060  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
26061  PyObject* values[2] = {0,0};
26062  int __pyx_lineno = 0;
26063  const char *__pyx_filename = NULL;
26064  int __pyx_clineno = 0;
26065  PyObject *__pyx_r = 0;
26066  __Pyx_RefNannyDeclarations
26067  __Pyx_RefNannySetupContext("tan (wrapper)", 0);
26068  #if !CYTHON_METH_FASTCALL
26069  #if CYTHON_ASSUME_SAFE_MACROS
26070  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
26071  #else
26072  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
26073  #endif
26074  #endif
26075  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
26076  {
26077  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
26078  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
26079  if (__pyx_kwds) {
26080  Py_ssize_t kw_args;
26081  switch (__pyx_nargs) {
26082  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
26083  CYTHON_FALLTHROUGH;
26084  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
26085  CYTHON_FALLTHROUGH;
26086  case 0: break;
26087  default: goto __pyx_L5_argtuple_error;
26088  }
26089  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
26090  switch (__pyx_nargs) {
26091  case 0:
26092  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
26093  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
26094  kw_args--;
26095  }
26096  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1864, __pyx_L3_error)
26097  else goto __pyx_L5_argtuple_error;
26098  CYTHON_FALLTHROUGH;
26099  case 1:
26100  if (kw_args > 0) {
26101  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
26102  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
26103  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1864, __pyx_L3_error)
26104  }
26105  }
26106  if (unlikely(kw_args > 0)) {
26107  const Py_ssize_t kwd_pos_args = __pyx_nargs;
26108  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "tan") < 0)) __PYX_ERR(0, 1864, __pyx_L3_error)
26109  }
26110  } else {
26111  switch (__pyx_nargs) {
26112  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
26113  CYTHON_FALLTHROUGH;
26114  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
26115  break;
26116  default: goto __pyx_L5_argtuple_error;
26117  }
26118  }
26119  __pyx_v_obj = values[0];
26120  __pyx_v_i = values[1];
26121  }
26122  goto __pyx_L6_skip;
26123  __pyx_L5_argtuple_error:;
26124  __Pyx_RaiseArgtupleInvalid("tan", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1864, __pyx_L3_error)
26125  __pyx_L6_skip:;
26126  goto __pyx_L4_argument_unpacking_done;
26127  __pyx_L3_error:;
26128  {
26129  Py_ssize_t __pyx_temp;
26130  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
26131  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
26132  }
26133  }
26134  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26135  __Pyx_RefNannyFinishContext();
26136  return NULL;
26137  __pyx_L4_argument_unpacking_done:;
26138  __pyx_r = __pyx_pf_8PyClical_72tan(__pyx_self, __pyx_v_obj, __pyx_v_i);
26139 
26140  /* function exit code */
26141  {
26142  Py_ssize_t __pyx_temp;
26143  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
26144  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
26145  }
26146  }
26147  __Pyx_RefNannyFinishContext();
26148  return __pyx_r;
26149  }
26150 
26151  static PyObject *__pyx_pf_8PyClical_72tan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
26152  PyObject *__pyx_r = NULL;
26153  __Pyx_RefNannyDeclarations
26154  PyObject *__pyx_t_1 = NULL;
26155  struct __pyx_opt_args_8PyClical_tan __pyx_t_2;
26156  int __pyx_lineno = 0;
26157  const char *__pyx_filename = NULL;
26158  int __pyx_clineno = 0;
26159  __Pyx_RefNannySetupContext("tan", 1);
26160  __Pyx_XDECREF(__pyx_r);
26161  __pyx_t_2.__pyx_n = 1;
26162  __pyx_t_2.i = __pyx_v_i;
26163  __pyx_t_1 = __pyx_f_8PyClical_tan(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1864, __pyx_L1_error)
26164  __Pyx_GOTREF(__pyx_t_1);
26165  __pyx_r = __pyx_t_1;
26166  __pyx_t_1 = 0;
26167  goto __pyx_L0;
26168 
26169  /* function exit code */
26170  __pyx_L1_error:;
26171  __Pyx_XDECREF(__pyx_t_1);
26172  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26173  __pyx_r = NULL;
26174  __pyx_L0:;
26175  __Pyx_XGIVEREF(__pyx_r);
26176  __Pyx_RefNannyFinishContext();
26177  return __pyx_r;
26178  }
26179 
26180  /* "PyClical.pyx":1881
26181  * return clifford().wrap( glucat.tan(toClifford(obj)) )
26182  *
26183  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
26184  * """
26185  * Inverse tangent of multivector with optional complexifier.
26186  */
26187 
26188  static PyObject *__pyx_pw_8PyClical_75atan(PyObject *__pyx_self,
26189 #if CYTHON_METH_FASTCALL
26190 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26191 #else
26192 PyObject *__pyx_args, PyObject *__pyx_kwds
26193 #endif
26194 ); /*proto*/
26195  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_atan(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_atan *__pyx_optional_args) {
26196  PyObject *__pyx_v_i = ((PyObject *)Py_None);
26197  PyObject *__pyx_r = NULL;
26198  __Pyx_RefNannyDeclarations
26199  int __pyx_t_1;
26200  PyObject *__pyx_t_2 = NULL;
26201  Clifford __pyx_t_3;
26202  Clifford __pyx_t_4;
26203  Clifford __pyx_t_5;
26204  PyObject *__pyx_t_6 = NULL;
26205  PyObject *__pyx_t_7 = NULL;
26206  PyObject *__pyx_t_8 = NULL;
26207  PyObject *__pyx_t_9 = NULL;
26208  PyObject *__pyx_t_10 = NULL;
26209  int __pyx_t_11;
26210  PyObject *__pyx_t_12 = NULL;
26211  PyObject *__pyx_t_13 = NULL;
26212  int __pyx_lineno = 0;
26213  const char *__pyx_filename = NULL;
26214  int __pyx_clineno = 0;
26215  __Pyx_RefNannySetupContext("atan", 1);
26216  if (__pyx_optional_args) {
26217  if (__pyx_optional_args->__pyx_n > 0) {
26218  __pyx_v_i = __pyx_optional_args->i;
26219  }
26220  }
26221 
26222  /* "PyClical.pyx":1890
26223  * {1}
26224  * """
26225  * if not (i is None): # <<<<<<<<<<<<<<
26226  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
26227  * else:
26228  */
26229  __pyx_t_1 = (__pyx_v_i != Py_None);
26230  if (__pyx_t_1) {
26231 
26232  /* "PyClical.pyx":1891
26233  * """
26234  * if not (i is None):
26235  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
26236  * else:
26237  * try:
26238  */
26239  __Pyx_XDECREF(__pyx_r);
26240  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1891, __pyx_L1_error)
26241  __Pyx_GOTREF(__pyx_t_2);
26242  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L1_error)
26243  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1891, __pyx_L1_error)
26244  try {
26245  __pyx_t_5 = atan(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
26246  } catch(...) {
26247  __Pyx_CppExn2PyErr();
26248  __PYX_ERR(0, 1891, __pyx_L1_error)
26249  }
26250  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1891, __pyx_L1_error)
26251  __Pyx_GOTREF(__pyx_t_6);
26252  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26253  __pyx_r = __pyx_t_6;
26254  __pyx_t_6 = 0;
26255  goto __pyx_L0;
26256 
26257  /* "PyClical.pyx":1890
26258  * {1}
26259  * """
26260  * if not (i is None): # <<<<<<<<<<<<<<
26261  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
26262  * else:
26263  */
26264  }
26265 
26266  /* "PyClical.pyx":1893
26267  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
26268  * else:
26269  * try: # <<<<<<<<<<<<<<
26270  * return math.atan(obj)
26271  * except:
26272  */
26273  /*else*/ {
26274  {
26275  __Pyx_PyThreadState_declare
26276  __Pyx_PyThreadState_assign
26277  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
26278  __Pyx_XGOTREF(__pyx_t_7);
26279  __Pyx_XGOTREF(__pyx_t_8);
26280  __Pyx_XGOTREF(__pyx_t_9);
26281  /*try:*/ {
26282 
26283  /* "PyClical.pyx":1894
26284  * else:
26285  * try:
26286  * return math.atan(obj) # <<<<<<<<<<<<<<
26287  * except:
26288  * return clifford().wrap( glucat.atan(toClifford(obj)) )
26289  */
26290  __Pyx_XDECREF(__pyx_r);
26291  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1894, __pyx_L4_error)
26292  __Pyx_GOTREF(__pyx_t_2);
26293  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_atan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1894, __pyx_L4_error)
26294  __Pyx_GOTREF(__pyx_t_10);
26295  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26296  __pyx_t_2 = NULL;
26297  __pyx_t_11 = 0;
26298  #if CYTHON_UNPACK_METHODS
26299  if (unlikely(PyMethod_Check(__pyx_t_10))) {
26300  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
26301  if (likely(__pyx_t_2)) {
26302  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
26303  __Pyx_INCREF(__pyx_t_2);
26304  __Pyx_INCREF(function);
26305  __Pyx_DECREF_SET(__pyx_t_10, function);
26306  __pyx_t_11 = 1;
26307  }
26308  }
26309  #endif
26310  {
26311  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
26312  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
26313  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
26314  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1894, __pyx_L4_error)
26315  __Pyx_GOTREF(__pyx_t_6);
26316  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
26317  }
26318  __pyx_r = __pyx_t_6;
26319  __pyx_t_6 = 0;
26320  goto __pyx_L8_try_return;
26321 
26322  /* "PyClical.pyx":1893
26323  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
26324  * else:
26325  * try: # <<<<<<<<<<<<<<
26326  * return math.atan(obj)
26327  * except:
26328  */
26329  }
26330  __pyx_L4_error:;
26331  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
26332  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
26333  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
26334 
26335  /* "PyClical.pyx":1895
26336  * try:
26337  * return math.atan(obj)
26338  * except: # <<<<<<<<<<<<<<
26339  * return clifford().wrap( glucat.atan(toClifford(obj)) )
26340  *
26341  */
26342  /*except:*/ {
26343  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26344  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1895, __pyx_L6_except_error)
26345  __Pyx_XGOTREF(__pyx_t_6);
26346  __Pyx_XGOTREF(__pyx_t_10);
26347  __Pyx_XGOTREF(__pyx_t_2);
26348 
26349  /* "PyClical.pyx":1896
26350  * return math.atan(obj)
26351  * except:
26352  * return clifford().wrap( glucat.atan(toClifford(obj)) ) # <<<<<<<<<<<<<<
26353  *
26354  * cpdef inline tanh(obj):
26355  */
26356  __Pyx_XDECREF(__pyx_r);
26357  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1896, __pyx_L6_except_error)
26358  __Pyx_GOTREF(__pyx_t_12);
26359  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1896, __pyx_L6_except_error)
26360  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), atan(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1896, __pyx_L6_except_error)
26361  __Pyx_GOTREF(__pyx_t_13);
26362  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
26363  __pyx_r = __pyx_t_13;
26364  __pyx_t_13 = 0;
26365  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26366  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26367  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
26368  goto __pyx_L7_except_return;
26369  }
26370 
26371  /* "PyClical.pyx":1893
26372  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
26373  * else:
26374  * try: # <<<<<<<<<<<<<<
26375  * return math.atan(obj)
26376  * except:
26377  */
26378  __pyx_L6_except_error:;
26379  __Pyx_XGIVEREF(__pyx_t_7);
26380  __Pyx_XGIVEREF(__pyx_t_8);
26381  __Pyx_XGIVEREF(__pyx_t_9);
26382  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
26383  goto __pyx_L1_error;
26384  __pyx_L8_try_return:;
26385  __Pyx_XGIVEREF(__pyx_t_7);
26386  __Pyx_XGIVEREF(__pyx_t_8);
26387  __Pyx_XGIVEREF(__pyx_t_9);
26388  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
26389  goto __pyx_L0;
26390  __pyx_L7_except_return:;
26391  __Pyx_XGIVEREF(__pyx_t_7);
26392  __Pyx_XGIVEREF(__pyx_t_8);
26393  __Pyx_XGIVEREF(__pyx_t_9);
26394  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
26395  goto __pyx_L0;
26396  }
26397  }
26398 
26399  /* "PyClical.pyx":1881
26400  * return clifford().wrap( glucat.tan(toClifford(obj)) )
26401  *
26402  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
26403  * """
26404  * Inverse tangent of multivector with optional complexifier.
26405  */
26406 
26407  /* function exit code */
26408  __pyx_L1_error:;
26409  __Pyx_XDECREF(__pyx_t_2);
26410  __Pyx_XDECREF(__pyx_t_6);
26411  __Pyx_XDECREF(__pyx_t_10);
26412  __Pyx_XDECREF(__pyx_t_12);
26413  __Pyx_XDECREF(__pyx_t_13);
26414  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26415  __pyx_r = 0;
26416  __pyx_L0:;
26417  __Pyx_XGIVEREF(__pyx_r);
26418  __Pyx_RefNannyFinishContext();
26419  return __pyx_r;
26420  }
26421 
26422  /* Python wrapper */
26423  static PyObject *__pyx_pw_8PyClical_75atan(PyObject *__pyx_self,
26424 #if CYTHON_METH_FASTCALL
26425 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26426 #else
26427 PyObject *__pyx_args, PyObject *__pyx_kwds
26428 #endif
26429 ); /*proto*/
26430  PyDoc_STRVAR(__pyx_doc_8PyClical_74atan, "\n Inverse tangent of multivector with optional complexifier.\n\n >>> s=index_set({1,2,3}); x=clifford(\"{1}\"); print(tan(atan(x,s),s))\n {1}\n >>> x=clifford(\"{1}\"); print(tan(atan(x)))\n {1}\n ");
26431  static PyMethodDef __pyx_mdef_8PyClical_75atan = {"atan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_75atan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_74atan};
26432  static PyObject *__pyx_pw_8PyClical_75atan(PyObject *__pyx_self,
26433 #if CYTHON_METH_FASTCALL
26434 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26435 #else
26436 PyObject *__pyx_args, PyObject *__pyx_kwds
26437 #endif
26438 ) {
26439  PyObject *__pyx_v_obj = 0;
26440  PyObject *__pyx_v_i = 0;
26441  #if !CYTHON_METH_FASTCALL
26442  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
26443  #endif
26444  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
26445  PyObject* values[2] = {0,0};
26446  int __pyx_lineno = 0;
26447  const char *__pyx_filename = NULL;
26448  int __pyx_clineno = 0;
26449  PyObject *__pyx_r = 0;
26450  __Pyx_RefNannyDeclarations
26451  __Pyx_RefNannySetupContext("atan (wrapper)", 0);
26452  #if !CYTHON_METH_FASTCALL
26453  #if CYTHON_ASSUME_SAFE_MACROS
26454  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
26455  #else
26456  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
26457  #endif
26458  #endif
26459  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
26460  {
26461  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
26462  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
26463  if (__pyx_kwds) {
26464  Py_ssize_t kw_args;
26465  switch (__pyx_nargs) {
26466  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
26467  CYTHON_FALLTHROUGH;
26468  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
26469  CYTHON_FALLTHROUGH;
26470  case 0: break;
26471  default: goto __pyx_L5_argtuple_error;
26472  }
26473  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
26474  switch (__pyx_nargs) {
26475  case 0:
26476  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
26477  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
26478  kw_args--;
26479  }
26480  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1881, __pyx_L3_error)
26481  else goto __pyx_L5_argtuple_error;
26482  CYTHON_FALLTHROUGH;
26483  case 1:
26484  if (kw_args > 0) {
26485  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
26486  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
26487  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1881, __pyx_L3_error)
26488  }
26489  }
26490  if (unlikely(kw_args > 0)) {
26491  const Py_ssize_t kwd_pos_args = __pyx_nargs;
26492  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "atan") < 0)) __PYX_ERR(0, 1881, __pyx_L3_error)
26493  }
26494  } else {
26495  switch (__pyx_nargs) {
26496  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
26497  CYTHON_FALLTHROUGH;
26498  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
26499  break;
26500  default: goto __pyx_L5_argtuple_error;
26501  }
26502  }
26503  __pyx_v_obj = values[0];
26504  __pyx_v_i = values[1];
26505  }
26506  goto __pyx_L6_skip;
26507  __pyx_L5_argtuple_error:;
26508  __Pyx_RaiseArgtupleInvalid("atan", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1881, __pyx_L3_error)
26509  __pyx_L6_skip:;
26510  goto __pyx_L4_argument_unpacking_done;
26511  __pyx_L3_error:;
26512  {
26513  Py_ssize_t __pyx_temp;
26514  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
26515  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
26516  }
26517  }
26518  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26519  __Pyx_RefNannyFinishContext();
26520  return NULL;
26521  __pyx_L4_argument_unpacking_done:;
26522  __pyx_r = __pyx_pf_8PyClical_74atan(__pyx_self, __pyx_v_obj, __pyx_v_i);
26523 
26524  /* function exit code */
26525  {
26526  Py_ssize_t __pyx_temp;
26527  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
26528  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
26529  }
26530  }
26531  __Pyx_RefNannyFinishContext();
26532  return __pyx_r;
26533  }
26534 
26535  static PyObject *__pyx_pf_8PyClical_74atan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
26536  PyObject *__pyx_r = NULL;
26537  __Pyx_RefNannyDeclarations
26538  PyObject *__pyx_t_1 = NULL;
26539  struct __pyx_opt_args_8PyClical_atan __pyx_t_2;
26540  int __pyx_lineno = 0;
26541  const char *__pyx_filename = NULL;
26542  int __pyx_clineno = 0;
26543  __Pyx_RefNannySetupContext("atan", 1);
26544  __Pyx_XDECREF(__pyx_r);
26545  __pyx_t_2.__pyx_n = 1;
26546  __pyx_t_2.i = __pyx_v_i;
26547  __pyx_t_1 = __pyx_f_8PyClical_atan(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1881, __pyx_L1_error)
26548  __Pyx_GOTREF(__pyx_t_1);
26549  __pyx_r = __pyx_t_1;
26550  __pyx_t_1 = 0;
26551  goto __pyx_L0;
26552 
26553  /* function exit code */
26554  __pyx_L1_error:;
26555  __Pyx_XDECREF(__pyx_t_1);
26556  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
26557  __pyx_r = NULL;
26558  __pyx_L0:;
26559  __Pyx_XGIVEREF(__pyx_r);
26560  __Pyx_RefNannyFinishContext();
26561  return __pyx_r;
26562  }
26563 
26564  /* "PyClical.pyx":1898
26565  * return clifford().wrap( glucat.atan(toClifford(obj)) )
26566  *
26567  * cpdef inline tanh(obj): # <<<<<<<<<<<<<<
26568  * """
26569  * Hyperbolic tangent of multivector.
26570  */
26571 
26572  static PyObject *__pyx_pw_8PyClical_77tanh(PyObject *__pyx_self,
26573 #if CYTHON_METH_FASTCALL
26574 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26575 #else
26576 PyObject *__pyx_args, PyObject *__pyx_kwds
26577 #endif
26578 ); /*proto*/
26579  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tanh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
26580  PyObject *__pyx_r = NULL;
26581  __Pyx_RefNannyDeclarations
26582  PyObject *__pyx_t_1 = NULL;
26583  PyObject *__pyx_t_2 = NULL;
26584  PyObject *__pyx_t_3 = NULL;
26585  PyObject *__pyx_t_4 = NULL;
26586  PyObject *__pyx_t_5 = NULL;
26587  PyObject *__pyx_t_6 = NULL;
26588  int __pyx_t_7;
26589  PyObject *__pyx_t_8 = NULL;
26590  Clifford __pyx_t_9;
26591  PyObject *__pyx_t_10 = NULL;
26592  int __pyx_lineno = 0;
26593  const char *__pyx_filename = NULL;
26594  int __pyx_clineno = 0;
26595  __Pyx_RefNannySetupContext("tanh", 1);
26596 
26597  /* "PyClical.pyx":1905
26598  * {1,2}
26599  * """
26600  * try: # <<<<<<<<<<<<<<
26601  * return math.tanh(obj)
26602  * except:
26603  */
26604  {
26605  __Pyx_PyThreadState_declare
26606  __Pyx_PyThreadState_assign
26607  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
26608  __Pyx_XGOTREF(__pyx_t_1);
26609  __Pyx_XGOTREF(__pyx_t_2);
26610  __Pyx_XGOTREF(__pyx_t_3);
26611  /*try:*/ {
26612 
26613  /* "PyClical.pyx":1906
26614  * """
26615  * try:
26616  * return math.tanh(obj) # <<<<<<<<<<<<<<
26617  * except:
26618  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
26619  */
26620  __Pyx_XDECREF(__pyx_r);
26621  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1906, __pyx_L3_error)
26622  __Pyx_GOTREF(__pyx_t_5);
26623  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tanh); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1906, __pyx_L3_error)
26624  __Pyx_GOTREF(__pyx_t_6);
26625  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26626  __pyx_t_5 = NULL;
26627  __pyx_t_7 = 0;
26628  #if CYTHON_UNPACK_METHODS
26629  if (unlikely(PyMethod_Check(__pyx_t_6))) {
26630  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
26631  if (likely(__pyx_t_5)) {
26632  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
26633  __Pyx_INCREF(__pyx_t_5);
26634  __Pyx_INCREF(function);
26635  __Pyx_DECREF_SET(__pyx_t_6, function);
26636  __pyx_t_7 = 1;
26637  }
26638  }
26639  #endif
26640  {
26641  PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_obj};
26642  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
26643  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
26644  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1906, __pyx_L3_error)
26645  __Pyx_GOTREF(__pyx_t_4);
26646  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26647  }
26648  __pyx_r = __pyx_t_4;
26649  __pyx_t_4 = 0;
26650  goto __pyx_L7_try_return;
26651 
26652  /* "PyClical.pyx":1905
26653  * {1,2}
26654  * """
26655  * try: # <<<<<<<<<<<<<<
26656  * return math.tanh(obj)
26657  * except:
26658  */
26659  }
26660  __pyx_L3_error:;
26661  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26662  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
26663  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
26664 
26665  /* "PyClical.pyx":1907
26666  * try:
26667  * return math.tanh(obj)
26668  * except: # <<<<<<<<<<<<<<
26669  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
26670  *
26671  */
26672  /*except:*/ {
26673  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
26674  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 1907, __pyx_L5_except_error)
26675  __Pyx_XGOTREF(__pyx_t_4);
26676  __Pyx_XGOTREF(__pyx_t_6);
26677  __Pyx_XGOTREF(__pyx_t_5);
26678 
26679  /* "PyClical.pyx":1908
26680  * return math.tanh(obj)
26681  * except:
26682  * return clifford().wrap( glucat.tanh(toClifford(obj)) ) # <<<<<<<<<<<<<<
26683  *
26684  * cpdef inline atanh(obj,i = None):
26685  */
26686  __Pyx_XDECREF(__pyx_r);
26687  __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1908, __pyx_L5_except_error)
26688  __Pyx_GOTREF(__pyx_t_8);
26689  __pyx_t_9 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1908, __pyx_L5_except_error)
26690  __pyx_t_10 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_8), tanh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1908, __pyx_L5_except_error)
26691  __Pyx_GOTREF(__pyx_t_10);
26692  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
26693  __pyx_r = __pyx_t_10;
26694  __pyx_t_10 = 0;
26695  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
26696  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26697  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26698  goto __pyx_L6_except_return;
26699  }
26700 
26701  /* "PyClical.pyx":1905
26702  * {1,2}
26703  * """
26704  * try: # <<<<<<<<<<<<<<
26705  * return math.tanh(obj)
26706  * except:
26707  */
26708  __pyx_L5_except_error:;
26709  __Pyx_XGIVEREF(__pyx_t_1);
26710  __Pyx_XGIVEREF(__pyx_t_2);
26711  __Pyx_XGIVEREF(__pyx_t_3);
26712  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
26713  goto __pyx_L1_error;
26714  __pyx_L7_try_return:;
26715  __Pyx_XGIVEREF(__pyx_t_1);
26716  __Pyx_XGIVEREF(__pyx_t_2);
26717  __Pyx_XGIVEREF(__pyx_t_3);
26718  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
26719  goto __pyx_L0;
26720  __pyx_L6_except_return:;
26721  __Pyx_XGIVEREF(__pyx_t_1);
26722  __Pyx_XGIVEREF(__pyx_t_2);
26723  __Pyx_XGIVEREF(__pyx_t_3);
26724  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
26725  goto __pyx_L0;
26726  }
26727 
26728  /* "PyClical.pyx":1898
26729  * return clifford().wrap( glucat.atan(toClifford(obj)) )
26730  *
26731  * cpdef inline tanh(obj): # <<<<<<<<<<<<<<
26732  * """
26733  * Hyperbolic tangent of multivector.
26734  */
26735 
26736  /* function exit code */
26737  __pyx_L1_error:;
26738  __Pyx_XDECREF(__pyx_t_4);
26739  __Pyx_XDECREF(__pyx_t_5);
26740  __Pyx_XDECREF(__pyx_t_6);
26741  __Pyx_XDECREF(__pyx_t_8);
26742  __Pyx_XDECREF(__pyx_t_10);
26743  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
26744  __pyx_r = 0;
26745  __pyx_L0:;
26746  __Pyx_XGIVEREF(__pyx_r);
26747  __Pyx_RefNannyFinishContext();
26748  return __pyx_r;
26749  }
26750 
26751  /* Python wrapper */
26752  static PyObject *__pyx_pw_8PyClical_77tanh(PyObject *__pyx_self,
26753 #if CYTHON_METH_FASTCALL
26754 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26755 #else
26756 PyObject *__pyx_args, PyObject *__pyx_kwds
26757 #endif
26758 ); /*proto*/
26759  PyDoc_STRVAR(__pyx_doc_8PyClical_76tanh, "\n Hyperbolic tangent of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/4; print(tanh(x))\n {1,2}\n ");
26760  static PyMethodDef __pyx_mdef_8PyClical_77tanh = {"tanh", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_77tanh, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_76tanh};
26761  static PyObject *__pyx_pw_8PyClical_77tanh(PyObject *__pyx_self,
26762 #if CYTHON_METH_FASTCALL
26763 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26764 #else
26765 PyObject *__pyx_args, PyObject *__pyx_kwds
26766 #endif
26767 ) {
26768  PyObject *__pyx_v_obj = 0;
26769  #if !CYTHON_METH_FASTCALL
26770  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
26771  #endif
26772  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
26773  PyObject* values[1] = {0};
26774  int __pyx_lineno = 0;
26775  const char *__pyx_filename = NULL;
26776  int __pyx_clineno = 0;
26777  PyObject *__pyx_r = 0;
26778  __Pyx_RefNannyDeclarations
26779  __Pyx_RefNannySetupContext("tanh (wrapper)", 0);
26780  #if !CYTHON_METH_FASTCALL
26781  #if CYTHON_ASSUME_SAFE_MACROS
26782  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
26783  #else
26784  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
26785  #endif
26786  #endif
26787  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
26788  {
26789  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
26790  if (__pyx_kwds) {
26791  Py_ssize_t kw_args;
26792  switch (__pyx_nargs) {
26793  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
26794  CYTHON_FALLTHROUGH;
26795  case 0: break;
26796  default: goto __pyx_L5_argtuple_error;
26797  }
26798  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
26799  switch (__pyx_nargs) {
26800  case 0:
26801  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
26802  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
26803  kw_args--;
26804  }
26805  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1898, __pyx_L3_error)
26806  else goto __pyx_L5_argtuple_error;
26807  }
26808  if (unlikely(kw_args > 0)) {
26809  const Py_ssize_t kwd_pos_args = __pyx_nargs;
26810  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "tanh") < 0)) __PYX_ERR(0, 1898, __pyx_L3_error)
26811  }
26812  } else if (unlikely(__pyx_nargs != 1)) {
26813  goto __pyx_L5_argtuple_error;
26814  } else {
26815  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
26816  }
26817  __pyx_v_obj = values[0];
26818  }
26819  goto __pyx_L6_skip;
26820  __pyx_L5_argtuple_error:;
26821  __Pyx_RaiseArgtupleInvalid("tanh", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1898, __pyx_L3_error)
26822  __pyx_L6_skip:;
26823  goto __pyx_L4_argument_unpacking_done;
26824  __pyx_L3_error:;
26825  {
26826  Py_ssize_t __pyx_temp;
26827  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
26828  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
26829  }
26830  }
26831  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
26832  __Pyx_RefNannyFinishContext();
26833  return NULL;
26834  __pyx_L4_argument_unpacking_done:;
26835  __pyx_r = __pyx_pf_8PyClical_76tanh(__pyx_self, __pyx_v_obj);
26836 
26837  /* function exit code */
26838  {
26839  Py_ssize_t __pyx_temp;
26840  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
26841  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
26842  }
26843  }
26844  __Pyx_RefNannyFinishContext();
26845  return __pyx_r;
26846  }
26847 
26848  static PyObject *__pyx_pf_8PyClical_76tanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
26849  PyObject *__pyx_r = NULL;
26850  __Pyx_RefNannyDeclarations
26851  PyObject *__pyx_t_1 = NULL;
26852  int __pyx_lineno = 0;
26853  const char *__pyx_filename = NULL;
26854  int __pyx_clineno = 0;
26855  __Pyx_RefNannySetupContext("tanh", 1);
26856  __Pyx_XDECREF(__pyx_r);
26857  __pyx_t_1 = __pyx_f_8PyClical_tanh(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1898, __pyx_L1_error)
26858  __Pyx_GOTREF(__pyx_t_1);
26859  __pyx_r = __pyx_t_1;
26860  __pyx_t_1 = 0;
26861  goto __pyx_L0;
26862 
26863  /* function exit code */
26864  __pyx_L1_error:;
26865  __Pyx_XDECREF(__pyx_t_1);
26866  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
26867  __pyx_r = NULL;
26868  __pyx_L0:;
26869  __Pyx_XGIVEREF(__pyx_r);
26870  __Pyx_RefNannyFinishContext();
26871  return __pyx_r;
26872  }
26873 
26874  /* "PyClical.pyx":1910
26875  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
26876  *
26877  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
26878  * """
26879  * Inverse hyperbolic tangent of multivector with optional complexifier.
26880  */
26881 
26882  static PyObject *__pyx_pw_8PyClical_79atanh(PyObject *__pyx_self,
26883 #if CYTHON_METH_FASTCALL
26884 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
26885 #else
26886 PyObject *__pyx_args, PyObject *__pyx_kwds
26887 #endif
26888 ); /*proto*/
26889  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_atanh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_atanh *__pyx_optional_args) {
26890  PyObject *__pyx_v_i = ((PyObject *)Py_None);
26891  PyObject *__pyx_r = NULL;
26892  __Pyx_RefNannyDeclarations
26893  int __pyx_t_1;
26894  PyObject *__pyx_t_2 = NULL;
26895  Clifford __pyx_t_3;
26896  Clifford __pyx_t_4;
26897  Clifford __pyx_t_5;
26898  PyObject *__pyx_t_6 = NULL;
26899  PyObject *__pyx_t_7 = NULL;
26900  PyObject *__pyx_t_8 = NULL;
26901  PyObject *__pyx_t_9 = NULL;
26902  PyObject *__pyx_t_10 = NULL;
26903  int __pyx_t_11;
26904  PyObject *__pyx_t_12 = NULL;
26905  PyObject *__pyx_t_13 = NULL;
26906  int __pyx_lineno = 0;
26907  const char *__pyx_filename = NULL;
26908  int __pyx_clineno = 0;
26909  __Pyx_RefNannySetupContext("atanh", 1);
26910  if (__pyx_optional_args) {
26911  if (__pyx_optional_args->__pyx_n > 0) {
26912  __pyx_v_i = __pyx_optional_args->i;
26913  }
26914  }
26915 
26916  /* "PyClical.pyx":1919
26917  * {1,2}
26918  * """
26919  * if not (i is None): # <<<<<<<<<<<<<<
26920  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
26921  * else:
26922  */
26923  __pyx_t_1 = (__pyx_v_i != Py_None);
26924  if (__pyx_t_1) {
26925 
26926  /* "PyClical.pyx":1920
26927  * """
26928  * if not (i is None):
26929  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
26930  * else:
26931  * try:
26932  */
26933  __Pyx_XDECREF(__pyx_r);
26934  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1920, __pyx_L1_error)
26935  __Pyx_GOTREF(__pyx_t_2);
26936  __pyx_t_3 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1920, __pyx_L1_error)
26937  __pyx_t_4 = __pyx_f_8PyClical_toClifford(__pyx_v_i); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1920, __pyx_L1_error)
26938  try {
26939  __pyx_t_5 = atanh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
26940  } catch(...) {
26941  __Pyx_CppExn2PyErr();
26942  __PYX_ERR(0, 1920, __pyx_L1_error)
26943  }
26944  __pyx_t_6 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1920, __pyx_L1_error)
26945  __Pyx_GOTREF(__pyx_t_6);
26946  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26947  __pyx_r = __pyx_t_6;
26948  __pyx_t_6 = 0;
26949  goto __pyx_L0;
26950 
26951  /* "PyClical.pyx":1919
26952  * {1,2}
26953  * """
26954  * if not (i is None): # <<<<<<<<<<<<<<
26955  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
26956  * else:
26957  */
26958  }
26959 
26960  /* "PyClical.pyx":1922
26961  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
26962  * else:
26963  * try: # <<<<<<<<<<<<<<
26964  * return math.atanh(obj)
26965  * except:
26966  */
26967  /*else*/ {
26968  {
26969  __Pyx_PyThreadState_declare
26970  __Pyx_PyThreadState_assign
26971  __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
26972  __Pyx_XGOTREF(__pyx_t_7);
26973  __Pyx_XGOTREF(__pyx_t_8);
26974  __Pyx_XGOTREF(__pyx_t_9);
26975  /*try:*/ {
26976 
26977  /* "PyClical.pyx":1923
26978  * else:
26979  * try:
26980  * return math.atanh(obj) # <<<<<<<<<<<<<<
26981  * except:
26982  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
26983  */
26984  __Pyx_XDECREF(__pyx_r);
26985  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1923, __pyx_L4_error)
26986  __Pyx_GOTREF(__pyx_t_2);
26987  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_atanh); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1923, __pyx_L4_error)
26988  __Pyx_GOTREF(__pyx_t_10);
26989  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26990  __pyx_t_2 = NULL;
26991  __pyx_t_11 = 0;
26992  #if CYTHON_UNPACK_METHODS
26993  if (unlikely(PyMethod_Check(__pyx_t_10))) {
26994  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
26995  if (likely(__pyx_t_2)) {
26996  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
26997  __Pyx_INCREF(__pyx_t_2);
26998  __Pyx_INCREF(function);
26999  __Pyx_DECREF_SET(__pyx_t_10, function);
27000  __pyx_t_11 = 1;
27001  }
27002  }
27003  #endif
27004  {
27005  PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj};
27006  __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
27007  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27008  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1923, __pyx_L4_error)
27009  __Pyx_GOTREF(__pyx_t_6);
27010  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
27011  }
27012  __pyx_r = __pyx_t_6;
27013  __pyx_t_6 = 0;
27014  goto __pyx_L8_try_return;
27015 
27016  /* "PyClical.pyx":1922
27017  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
27018  * else:
27019  * try: # <<<<<<<<<<<<<<
27020  * return math.atanh(obj)
27021  * except:
27022  */
27023  }
27024  __pyx_L4_error:;
27025  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
27026  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27027  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
27028 
27029  /* "PyClical.pyx":1924
27030  * try:
27031  * return math.atanh(obj)
27032  * except: # <<<<<<<<<<<<<<
27033  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
27034  *
27035  */
27036  /*except:*/ {
27037  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
27038  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 1924, __pyx_L6_except_error)
27039  __Pyx_XGOTREF(__pyx_t_6);
27040  __Pyx_XGOTREF(__pyx_t_10);
27041  __Pyx_XGOTREF(__pyx_t_2);
27042 
27043  /* "PyClical.pyx":1925
27044  * return math.atanh(obj)
27045  * except:
27046  * return clifford().wrap( glucat.atanh(toClifford(obj)) ) # <<<<<<<<<<<<<<
27047  *
27048  * cpdef inline random_clifford(index_set ixt, fill = 1.0):
27049  */
27050  __Pyx_XDECREF(__pyx_r);
27051  __pyx_t_12 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1925, __pyx_L6_except_error)
27052  __Pyx_GOTREF(__pyx_t_12);
27053  __pyx_t_5 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1925, __pyx_L6_except_error)
27054  __pyx_t_13 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_12), atanh(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1925, __pyx_L6_except_error)
27055  __Pyx_GOTREF(__pyx_t_13);
27056  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27057  __pyx_r = __pyx_t_13;
27058  __pyx_t_13 = 0;
27059  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27060  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
27061  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
27062  goto __pyx_L7_except_return;
27063  }
27064 
27065  /* "PyClical.pyx":1922
27066  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
27067  * else:
27068  * try: # <<<<<<<<<<<<<<
27069  * return math.atanh(obj)
27070  * except:
27071  */
27072  __pyx_L6_except_error:;
27073  __Pyx_XGIVEREF(__pyx_t_7);
27074  __Pyx_XGIVEREF(__pyx_t_8);
27075  __Pyx_XGIVEREF(__pyx_t_9);
27076  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
27077  goto __pyx_L1_error;
27078  __pyx_L8_try_return:;
27079  __Pyx_XGIVEREF(__pyx_t_7);
27080  __Pyx_XGIVEREF(__pyx_t_8);
27081  __Pyx_XGIVEREF(__pyx_t_9);
27082  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
27083  goto __pyx_L0;
27084  __pyx_L7_except_return:;
27085  __Pyx_XGIVEREF(__pyx_t_7);
27086  __Pyx_XGIVEREF(__pyx_t_8);
27087  __Pyx_XGIVEREF(__pyx_t_9);
27088  __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
27089  goto __pyx_L0;
27090  }
27091  }
27092 
27093  /* "PyClical.pyx":1910
27094  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
27095  *
27096  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
27097  * """
27098  * Inverse hyperbolic tangent of multivector with optional complexifier.
27099  */
27100 
27101  /* function exit code */
27102  __pyx_L1_error:;
27103  __Pyx_XDECREF(__pyx_t_2);
27104  __Pyx_XDECREF(__pyx_t_6);
27105  __Pyx_XDECREF(__pyx_t_10);
27106  __Pyx_XDECREF(__pyx_t_12);
27107  __Pyx_XDECREF(__pyx_t_13);
27108  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
27109  __pyx_r = 0;
27110  __pyx_L0:;
27111  __Pyx_XGIVEREF(__pyx_r);
27112  __Pyx_RefNannyFinishContext();
27113  return __pyx_r;
27114  }
27115 
27116  /* Python wrapper */
27117  static PyObject *__pyx_pw_8PyClical_79atanh(PyObject *__pyx_self,
27118 #if CYTHON_METH_FASTCALL
27119 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27120 #else
27121 PyObject *__pyx_args, PyObject *__pyx_kwds
27122 #endif
27123 ); /*proto*/
27124  PyDoc_STRVAR(__pyx_doc_8PyClical_78atanh, "\n Inverse hyperbolic tangent of multivector with optional complexifier.\n\n >>> s=index_set({1,2,3}); x=clifford(\"{1,2}\"); print(tanh(atanh(x,s)))\n {1,2}\n >>> x=clifford(\"{1,2}\"); print(tanh(atanh(x)))\n {1,2}\n ");
27125  static PyMethodDef __pyx_mdef_8PyClical_79atanh = {"atanh", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_79atanh, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_78atanh};
27126  static PyObject *__pyx_pw_8PyClical_79atanh(PyObject *__pyx_self,
27127 #if CYTHON_METH_FASTCALL
27128 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27129 #else
27130 PyObject *__pyx_args, PyObject *__pyx_kwds
27131 #endif
27132 ) {
27133  PyObject *__pyx_v_obj = 0;
27134  PyObject *__pyx_v_i = 0;
27135  #if !CYTHON_METH_FASTCALL
27136  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
27137  #endif
27138  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
27139  PyObject* values[2] = {0,0};
27140  int __pyx_lineno = 0;
27141  const char *__pyx_filename = NULL;
27142  int __pyx_clineno = 0;
27143  PyObject *__pyx_r = 0;
27144  __Pyx_RefNannyDeclarations
27145  __Pyx_RefNannySetupContext("atanh (wrapper)", 0);
27146  #if !CYTHON_METH_FASTCALL
27147  #if CYTHON_ASSUME_SAFE_MACROS
27148  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
27149  #else
27150  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
27151  #endif
27152  #endif
27153  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
27154  {
27155  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
27156  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
27157  if (__pyx_kwds) {
27158  Py_ssize_t kw_args;
27159  switch (__pyx_nargs) {
27160  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
27161  CYTHON_FALLTHROUGH;
27162  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27163  CYTHON_FALLTHROUGH;
27164  case 0: break;
27165  default: goto __pyx_L5_argtuple_error;
27166  }
27167  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
27168  switch (__pyx_nargs) {
27169  case 0:
27170  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
27171  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
27172  kw_args--;
27173  }
27174  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1910, __pyx_L3_error)
27175  else goto __pyx_L5_argtuple_error;
27176  CYTHON_FALLTHROUGH;
27177  case 1:
27178  if (kw_args > 0) {
27179  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i);
27180  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
27181  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1910, __pyx_L3_error)
27182  }
27183  }
27184  if (unlikely(kw_args > 0)) {
27185  const Py_ssize_t kwd_pos_args = __pyx_nargs;
27186  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "atanh") < 0)) __PYX_ERR(0, 1910, __pyx_L3_error)
27187  }
27188  } else {
27189  switch (__pyx_nargs) {
27190  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
27191  CYTHON_FALLTHROUGH;
27192  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27193  break;
27194  default: goto __pyx_L5_argtuple_error;
27195  }
27196  }
27197  __pyx_v_obj = values[0];
27198  __pyx_v_i = values[1];
27199  }
27200  goto __pyx_L6_skip;
27201  __pyx_L5_argtuple_error:;
27202  __Pyx_RaiseArgtupleInvalid("atanh", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1910, __pyx_L3_error)
27203  __pyx_L6_skip:;
27204  goto __pyx_L4_argument_unpacking_done;
27205  __pyx_L3_error:;
27206  {
27207  Py_ssize_t __pyx_temp;
27208  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27209  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27210  }
27211  }
27212  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
27213  __Pyx_RefNannyFinishContext();
27214  return NULL;
27215  __pyx_L4_argument_unpacking_done:;
27216  __pyx_r = __pyx_pf_8PyClical_78atanh(__pyx_self, __pyx_v_obj, __pyx_v_i);
27217 
27218  /* function exit code */
27219  {
27220  Py_ssize_t __pyx_temp;
27221  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27222  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27223  }
27224  }
27225  __Pyx_RefNannyFinishContext();
27226  return __pyx_r;
27227  }
27228 
27229  static PyObject *__pyx_pf_8PyClical_78atanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
27230  PyObject *__pyx_r = NULL;
27231  __Pyx_RefNannyDeclarations
27232  PyObject *__pyx_t_1 = NULL;
27233  struct __pyx_opt_args_8PyClical_atanh __pyx_t_2;
27234  int __pyx_lineno = 0;
27235  const char *__pyx_filename = NULL;
27236  int __pyx_clineno = 0;
27237  __Pyx_RefNannySetupContext("atanh", 1);
27238  __Pyx_XDECREF(__pyx_r);
27239  __pyx_t_2.__pyx_n = 1;
27240  __pyx_t_2.i = __pyx_v_i;
27241  __pyx_t_1 = __pyx_f_8PyClical_atanh(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1910, __pyx_L1_error)
27242  __Pyx_GOTREF(__pyx_t_1);
27243  __pyx_r = __pyx_t_1;
27244  __pyx_t_1 = 0;
27245  goto __pyx_L0;
27246 
27247  /* function exit code */
27248  __pyx_L1_error:;
27249  __Pyx_XDECREF(__pyx_t_1);
27250  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
27251  __pyx_r = NULL;
27252  __pyx_L0:;
27253  __Pyx_XGIVEREF(__pyx_r);
27254  __Pyx_RefNannyFinishContext();
27255  return __pyx_r;
27256  }
27257 
27258  /* "PyClical.pyx":1927
27259  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
27260  *
27261  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
27262  * """
27263  * Random multivector within a frame.
27264  */
27265 
27266  static PyObject *__pyx_pw_8PyClical_81random_clifford(PyObject *__pyx_self,
27267 #if CYTHON_METH_FASTCALL
27268 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27269 #else
27270 PyObject *__pyx_args, PyObject *__pyx_kwds
27271 #endif
27272 ); /*proto*/
27273  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_random_clifford(struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_random_clifford *__pyx_optional_args) {
27274  PyObject *__pyx_v_fill = ((PyObject *)__pyx_float_1_0);
27275  PyObject *__pyx_r = NULL;
27276  __Pyx_RefNannyDeclarations
27277  PyObject *__pyx_t_1 = NULL;
27278  PyObject *__pyx_t_2 = NULL;
27279  IndexSet __pyx_t_3;
27280  scalar_t __pyx_t_4;
27281  PyObject *__pyx_t_5 = NULL;
27282  int __pyx_lineno = 0;
27283  const char *__pyx_filename = NULL;
27284  int __pyx_clineno = 0;
27285  __Pyx_RefNannySetupContext("random_clifford", 1);
27286  if (__pyx_optional_args) {
27287  if (__pyx_optional_args->__pyx_n > 0) {
27288  __pyx_v_fill = __pyx_optional_args->fill;
27289  }
27290  }
27291 
27292  /* "PyClical.pyx":1934
27293  * {-3,-1,2}
27294  * """
27295  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) ) # <<<<<<<<<<<<<<
27296  *
27297  * cpdef inline cga3(obj):
27298  */
27299  __Pyx_XDECREF(__pyx_r);
27300  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1934, __pyx_L1_error)
27301  __Pyx_GOTREF(__pyx_t_1);
27302  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1934, __pyx_L1_error)
27303  __Pyx_GOTREF(__pyx_t_2);
27304  __pyx_t_3 = __pyx_f_8PyClical_9index_set_unwrap(__pyx_v_ixt); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1934, __pyx_L1_error)
27305  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fill); if (unlikely((__pyx_t_4 == ((scalar_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1934, __pyx_L1_error)
27306  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), ((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2)->instance->random(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3), ((scalar_t)__pyx_t_4))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1934, __pyx_L1_error)
27307  __Pyx_GOTREF(__pyx_t_5);
27308  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27309  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27310  __pyx_r = __pyx_t_5;
27311  __pyx_t_5 = 0;
27312  goto __pyx_L0;
27313 
27314  /* "PyClical.pyx":1927
27315  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
27316  *
27317  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
27318  * """
27319  * Random multivector within a frame.
27320  */
27321 
27322  /* function exit code */
27323  __pyx_L1_error:;
27324  __Pyx_XDECREF(__pyx_t_1);
27325  __Pyx_XDECREF(__pyx_t_2);
27326  __Pyx_XDECREF(__pyx_t_5);
27327  __Pyx_AddTraceback("PyClical.random_clifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
27328  __pyx_r = 0;
27329  __pyx_L0:;
27330  __Pyx_XGIVEREF(__pyx_r);
27331  __Pyx_RefNannyFinishContext();
27332  return __pyx_r;
27333  }
27334 
27335  /* Python wrapper */
27336  static PyObject *__pyx_pw_8PyClical_81random_clifford(PyObject *__pyx_self,
27337 #if CYTHON_METH_FASTCALL
27338 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27339 #else
27340 PyObject *__pyx_args, PyObject *__pyx_kwds
27341 #endif
27342 ); /*proto*/
27343  PyDoc_STRVAR(__pyx_doc_8PyClical_80random_clifford, "\n Random multivector within a frame.\n\n >>> print(random_clifford(index_set({-3,-1,2})).frame())\n {-3,-1,2}\n ");
27344  static PyMethodDef __pyx_mdef_8PyClical_81random_clifford = {"random_clifford", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_81random_clifford, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_80random_clifford};
27345  static PyObject *__pyx_pw_8PyClical_81random_clifford(PyObject *__pyx_self,
27346 #if CYTHON_METH_FASTCALL
27347 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27348 #else
27349 PyObject *__pyx_args, PyObject *__pyx_kwds
27350 #endif
27351 ) {
27352  struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt = 0;
27353  PyObject *__pyx_v_fill = 0;
27354  #if !CYTHON_METH_FASTCALL
27355  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
27356  #endif
27357  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
27358  PyObject* values[2] = {0,0};
27359  int __pyx_lineno = 0;
27360  const char *__pyx_filename = NULL;
27361  int __pyx_clineno = 0;
27362  PyObject *__pyx_r = 0;
27363  __Pyx_RefNannyDeclarations
27364  __Pyx_RefNannySetupContext("random_clifford (wrapper)", 0);
27365  #if !CYTHON_METH_FASTCALL
27366  #if CYTHON_ASSUME_SAFE_MACROS
27367  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
27368  #else
27369  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
27370  #endif
27371  #endif
27372  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
27373  {
27374  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ixt,&__pyx_n_s_fill,0};
27375  values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
27376  if (__pyx_kwds) {
27377  Py_ssize_t kw_args;
27378  switch (__pyx_nargs) {
27379  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
27380  CYTHON_FALLTHROUGH;
27381  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27382  CYTHON_FALLTHROUGH;
27383  case 0: break;
27384  default: goto __pyx_L5_argtuple_error;
27385  }
27386  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
27387  switch (__pyx_nargs) {
27388  case 0:
27389  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ixt)) != 0)) {
27390  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
27391  kw_args--;
27392  }
27393  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error)
27394  else goto __pyx_L5_argtuple_error;
27395  CYTHON_FALLTHROUGH;
27396  case 1:
27397  if (kw_args > 0) {
27398  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fill);
27399  if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
27400  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error)
27401  }
27402  }
27403  if (unlikely(kw_args > 0)) {
27404  const Py_ssize_t kwd_pos_args = __pyx_nargs;
27405  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "random_clifford") < 0)) __PYX_ERR(0, 1927, __pyx_L3_error)
27406  }
27407  } else {
27408  switch (__pyx_nargs) {
27409  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
27410  CYTHON_FALLTHROUGH;
27411  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27412  break;
27413  default: goto __pyx_L5_argtuple_error;
27414  }
27415  }
27416  __pyx_v_ixt = ((struct __pyx_obj_8PyClical_index_set *)values[0]);
27417  __pyx_v_fill = values[1];
27418  }
27419  goto __pyx_L6_skip;
27420  __pyx_L5_argtuple_error:;
27421  __Pyx_RaiseArgtupleInvalid("random_clifford", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1927, __pyx_L3_error)
27422  __pyx_L6_skip:;
27423  goto __pyx_L4_argument_unpacking_done;
27424  __pyx_L3_error:;
27425  {
27426  Py_ssize_t __pyx_temp;
27427  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27428  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27429  }
27430  }
27431  __Pyx_AddTraceback("PyClical.random_clifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
27432  __Pyx_RefNannyFinishContext();
27433  return NULL;
27434  __pyx_L4_argument_unpacking_done:;
27435  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ixt), __pyx_ptype_8PyClical_index_set, 1, "ixt", 0))) __PYX_ERR(0, 1927, __pyx_L1_error)
27436  __pyx_r = __pyx_pf_8PyClical_80random_clifford(__pyx_self, __pyx_v_ixt, __pyx_v_fill);
27437 
27438  /* function exit code */
27439  goto __pyx_L0;
27440  __pyx_L1_error:;
27441  __pyx_r = NULL;
27442  __pyx_L0:;
27443  {
27444  Py_ssize_t __pyx_temp;
27445  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27446  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27447  }
27448  }
27449  __Pyx_RefNannyFinishContext();
27450  return __pyx_r;
27451  }
27452 
27453  static PyObject *__pyx_pf_8PyClical_80random_clifford(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt, PyObject *__pyx_v_fill) {
27454  PyObject *__pyx_r = NULL;
27455  __Pyx_RefNannyDeclarations
27456  PyObject *__pyx_t_1 = NULL;
27457  struct __pyx_opt_args_8PyClical_random_clifford __pyx_t_2;
27458  int __pyx_lineno = 0;
27459  const char *__pyx_filename = NULL;
27460  int __pyx_clineno = 0;
27461  __Pyx_RefNannySetupContext("random_clifford", 1);
27462  __Pyx_XDECREF(__pyx_r);
27463  __pyx_t_2.__pyx_n = 1;
27464  __pyx_t_2.fill = __pyx_v_fill;
27465  __pyx_t_1 = __pyx_f_8PyClical_random_clifford(__pyx_v_ixt, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1927, __pyx_L1_error)
27466  __Pyx_GOTREF(__pyx_t_1);
27467  __pyx_r = __pyx_t_1;
27468  __pyx_t_1 = 0;
27469  goto __pyx_L0;
27470 
27471  /* function exit code */
27472  __pyx_L1_error:;
27473  __Pyx_XDECREF(__pyx_t_1);
27474  __Pyx_AddTraceback("PyClical.random_clifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
27475  __pyx_r = NULL;
27476  __pyx_L0:;
27477  __Pyx_XGIVEREF(__pyx_r);
27478  __Pyx_RefNannyFinishContext();
27479  return __pyx_r;
27480  }
27481 
27482  /* "PyClical.pyx":1936
27483  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) )
27484  *
27485  * cpdef inline cga3(obj): # <<<<<<<<<<<<<<
27486  * """
27487  * Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.
27488  */
27489 
27490  static PyObject *__pyx_pw_8PyClical_83cga3(PyObject *__pyx_self,
27491 #if CYTHON_METH_FASTCALL
27492 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27493 #else
27494 PyObject *__pyx_args, PyObject *__pyx_kwds
27495 #endif
27496 ); /*proto*/
27497  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
27498  PyObject *__pyx_r = NULL;
27499  __Pyx_RefNannyDeclarations
27500  PyObject *__pyx_t_1 = NULL;
27501  Clifford __pyx_t_2;
27502  PyObject *__pyx_t_3 = NULL;
27503  int __pyx_lineno = 0;
27504  const char *__pyx_filename = NULL;
27505  int __pyx_clineno = 0;
27506  __Pyx_RefNannySetupContext("cga3", 1);
27507 
27508  /* "PyClical.pyx":1943
27509  * 87{-1}+4{1}+18{2}+2{3}+85{4}
27510  * """
27511  * return clifford().wrap( glucat.cga3(toClifford(obj)) ) # <<<<<<<<<<<<<<
27512  *
27513  * cpdef inline cga3std(obj):
27514  */
27515  __Pyx_XDECREF(__pyx_r);
27516  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1943, __pyx_L1_error)
27517  __Pyx_GOTREF(__pyx_t_1);
27518  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1943, __pyx_L1_error)
27519  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), cga3::cga3(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1943, __pyx_L1_error)
27520  __Pyx_GOTREF(__pyx_t_3);
27521  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27522  __pyx_r = __pyx_t_3;
27523  __pyx_t_3 = 0;
27524  goto __pyx_L0;
27525 
27526  /* "PyClical.pyx":1936
27527  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) )
27528  *
27529  * cpdef inline cga3(obj): # <<<<<<<<<<<<<<
27530  * """
27531  * Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.
27532  */
27533 
27534  /* function exit code */
27535  __pyx_L1_error:;
27536  __Pyx_XDECREF(__pyx_t_1);
27537  __Pyx_XDECREF(__pyx_t_3);
27538  __Pyx_AddTraceback("PyClical.cga3", __pyx_clineno, __pyx_lineno, __pyx_filename);
27539  __pyx_r = 0;
27540  __pyx_L0:;
27541  __Pyx_XGIVEREF(__pyx_r);
27542  __Pyx_RefNannyFinishContext();
27543  return __pyx_r;
27544  }
27545 
27546  /* Python wrapper */
27547  static PyObject *__pyx_pw_8PyClical_83cga3(PyObject *__pyx_self,
27548 #if CYTHON_METH_FASTCALL
27549 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27550 #else
27551 PyObject *__pyx_args, PyObject *__pyx_kwds
27552 #endif
27553 ); /*proto*/
27554  PyDoc_STRVAR(__pyx_doc_8PyClical_82cga3, "\n Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.\n\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(cga3(x))\n 87{-1}+4{1}+18{2}+2{3}+85{4}\n ");
27555  static PyMethodDef __pyx_mdef_8PyClical_83cga3 = {"cga3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_83cga3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_82cga3};
27556  static PyObject *__pyx_pw_8PyClical_83cga3(PyObject *__pyx_self,
27557 #if CYTHON_METH_FASTCALL
27558 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27559 #else
27560 PyObject *__pyx_args, PyObject *__pyx_kwds
27561 #endif
27562 ) {
27563  PyObject *__pyx_v_obj = 0;
27564  #if !CYTHON_METH_FASTCALL
27565  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
27566  #endif
27567  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
27568  PyObject* values[1] = {0};
27569  int __pyx_lineno = 0;
27570  const char *__pyx_filename = NULL;
27571  int __pyx_clineno = 0;
27572  PyObject *__pyx_r = 0;
27573  __Pyx_RefNannyDeclarations
27574  __Pyx_RefNannySetupContext("cga3 (wrapper)", 0);
27575  #if !CYTHON_METH_FASTCALL
27576  #if CYTHON_ASSUME_SAFE_MACROS
27577  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
27578  #else
27579  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
27580  #endif
27581  #endif
27582  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
27583  {
27584  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
27585  if (__pyx_kwds) {
27586  Py_ssize_t kw_args;
27587  switch (__pyx_nargs) {
27588  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27589  CYTHON_FALLTHROUGH;
27590  case 0: break;
27591  default: goto __pyx_L5_argtuple_error;
27592  }
27593  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
27594  switch (__pyx_nargs) {
27595  case 0:
27596  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
27597  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
27598  kw_args--;
27599  }
27600  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1936, __pyx_L3_error)
27601  else goto __pyx_L5_argtuple_error;
27602  }
27603  if (unlikely(kw_args > 0)) {
27604  const Py_ssize_t kwd_pos_args = __pyx_nargs;
27605  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cga3") < 0)) __PYX_ERR(0, 1936, __pyx_L3_error)
27606  }
27607  } else if (unlikely(__pyx_nargs != 1)) {
27608  goto __pyx_L5_argtuple_error;
27609  } else {
27610  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27611  }
27612  __pyx_v_obj = values[0];
27613  }
27614  goto __pyx_L6_skip;
27615  __pyx_L5_argtuple_error:;
27616  __Pyx_RaiseArgtupleInvalid("cga3", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1936, __pyx_L3_error)
27617  __pyx_L6_skip:;
27618  goto __pyx_L4_argument_unpacking_done;
27619  __pyx_L3_error:;
27620  {
27621  Py_ssize_t __pyx_temp;
27622  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27623  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27624  }
27625  }
27626  __Pyx_AddTraceback("PyClical.cga3", __pyx_clineno, __pyx_lineno, __pyx_filename);
27627  __Pyx_RefNannyFinishContext();
27628  return NULL;
27629  __pyx_L4_argument_unpacking_done:;
27630  __pyx_r = __pyx_pf_8PyClical_82cga3(__pyx_self, __pyx_v_obj);
27631 
27632  /* function exit code */
27633  {
27634  Py_ssize_t __pyx_temp;
27635  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27636  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27637  }
27638  }
27639  __Pyx_RefNannyFinishContext();
27640  return __pyx_r;
27641  }
27642 
27643  static PyObject *__pyx_pf_8PyClical_82cga3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
27644  PyObject *__pyx_r = NULL;
27645  __Pyx_RefNannyDeclarations
27646  PyObject *__pyx_t_1 = NULL;
27647  int __pyx_lineno = 0;
27648  const char *__pyx_filename = NULL;
27649  int __pyx_clineno = 0;
27650  __Pyx_RefNannySetupContext("cga3", 1);
27651  __Pyx_XDECREF(__pyx_r);
27652  __pyx_t_1 = __pyx_f_8PyClical_cga3(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1936, __pyx_L1_error)
27653  __Pyx_GOTREF(__pyx_t_1);
27654  __pyx_r = __pyx_t_1;
27655  __pyx_t_1 = 0;
27656  goto __pyx_L0;
27657 
27658  /* function exit code */
27659  __pyx_L1_error:;
27660  __Pyx_XDECREF(__pyx_t_1);
27661  __Pyx_AddTraceback("PyClical.cga3", __pyx_clineno, __pyx_lineno, __pyx_filename);
27662  __pyx_r = NULL;
27663  __pyx_L0:;
27664  __Pyx_XGIVEREF(__pyx_r);
27665  __Pyx_RefNannyFinishContext();
27666  return __pyx_r;
27667  }
27668 
27669  /* "PyClical.pyx":1945
27670  * return clifford().wrap( glucat.cga3(toClifford(obj)) )
27671  *
27672  * cpdef inline cga3std(obj): # <<<<<<<<<<<<<<
27673  * """
27674  * Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.
27675  */
27676 
27677  static PyObject *__pyx_pw_8PyClical_85cga3std(PyObject *__pyx_self,
27678 #if CYTHON_METH_FASTCALL
27679 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27680 #else
27681 PyObject *__pyx_args, PyObject *__pyx_kwds
27682 #endif
27683 ); /*proto*/
27684  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3std(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
27685  PyObject *__pyx_r = NULL;
27686  __Pyx_RefNannyDeclarations
27687  PyObject *__pyx_t_1 = NULL;
27688  Clifford __pyx_t_2;
27689  PyObject *__pyx_t_3 = NULL;
27690  int __pyx_lineno = 0;
27691  const char *__pyx_filename = NULL;
27692  int __pyx_clineno = 0;
27693  __Pyx_RefNannySetupContext("cga3std", 1);
27694 
27695  /* "PyClical.pyx":1954
27696  * 0
27697  * """
27698  * return clifford().wrap( glucat.cga3std(toClifford(obj)) ) # <<<<<<<<<<<<<<
27699  *
27700  * cpdef inline agc3(obj):
27701  */
27702  __Pyx_XDECREF(__pyx_r);
27703  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1954, __pyx_L1_error)
27704  __Pyx_GOTREF(__pyx_t_1);
27705  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1954, __pyx_L1_error)
27706  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), cga3::cga3std(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1954, __pyx_L1_error)
27707  __Pyx_GOTREF(__pyx_t_3);
27708  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27709  __pyx_r = __pyx_t_3;
27710  __pyx_t_3 = 0;
27711  goto __pyx_L0;
27712 
27713  /* "PyClical.pyx":1945
27714  * return clifford().wrap( glucat.cga3(toClifford(obj)) )
27715  *
27716  * cpdef inline cga3std(obj): # <<<<<<<<<<<<<<
27717  * """
27718  * Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.
27719  */
27720 
27721  /* function exit code */
27722  __pyx_L1_error:;
27723  __Pyx_XDECREF(__pyx_t_1);
27724  __Pyx_XDECREF(__pyx_t_3);
27725  __Pyx_AddTraceback("PyClical.cga3std", __pyx_clineno, __pyx_lineno, __pyx_filename);
27726  __pyx_r = 0;
27727  __pyx_L0:;
27728  __Pyx_XGIVEREF(__pyx_r);
27729  __Pyx_RefNannyFinishContext();
27730  return __pyx_r;
27731  }
27732 
27733  /* Python wrapper */
27734  static PyObject *__pyx_pw_8PyClical_85cga3std(PyObject *__pyx_self,
27735 #if CYTHON_METH_FASTCALL
27736 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27737 #else
27738 PyObject *__pyx_args, PyObject *__pyx_kwds
27739 #endif
27740 ); /*proto*/
27741  PyDoc_STRVAR(__pyx_doc_8PyClical_84cga3std, "\n Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.\n\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(cga3std(cga3(x)))\n 87{-1}+4{1}+18{2}+2{3}+85{4}\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(cga3std(cga3(x))-cga3(x))\n 0\n ");
27742  static PyMethodDef __pyx_mdef_8PyClical_85cga3std = {"cga3std", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_85cga3std, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_84cga3std};
27743  static PyObject *__pyx_pw_8PyClical_85cga3std(PyObject *__pyx_self,
27744 #if CYTHON_METH_FASTCALL
27745 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27746 #else
27747 PyObject *__pyx_args, PyObject *__pyx_kwds
27748 #endif
27749 ) {
27750  PyObject *__pyx_v_obj = 0;
27751  #if !CYTHON_METH_FASTCALL
27752  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
27753  #endif
27754  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
27755  PyObject* values[1] = {0};
27756  int __pyx_lineno = 0;
27757  const char *__pyx_filename = NULL;
27758  int __pyx_clineno = 0;
27759  PyObject *__pyx_r = 0;
27760  __Pyx_RefNannyDeclarations
27761  __Pyx_RefNannySetupContext("cga3std (wrapper)", 0);
27762  #if !CYTHON_METH_FASTCALL
27763  #if CYTHON_ASSUME_SAFE_MACROS
27764  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
27765  #else
27766  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
27767  #endif
27768  #endif
27769  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
27770  {
27771  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
27772  if (__pyx_kwds) {
27773  Py_ssize_t kw_args;
27774  switch (__pyx_nargs) {
27775  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27776  CYTHON_FALLTHROUGH;
27777  case 0: break;
27778  default: goto __pyx_L5_argtuple_error;
27779  }
27780  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
27781  switch (__pyx_nargs) {
27782  case 0:
27783  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
27784  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
27785  kw_args--;
27786  }
27787  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1945, __pyx_L3_error)
27788  else goto __pyx_L5_argtuple_error;
27789  }
27790  if (unlikely(kw_args > 0)) {
27791  const Py_ssize_t kwd_pos_args = __pyx_nargs;
27792  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cga3std") < 0)) __PYX_ERR(0, 1945, __pyx_L3_error)
27793  }
27794  } else if (unlikely(__pyx_nargs != 1)) {
27795  goto __pyx_L5_argtuple_error;
27796  } else {
27797  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27798  }
27799  __pyx_v_obj = values[0];
27800  }
27801  goto __pyx_L6_skip;
27802  __pyx_L5_argtuple_error:;
27803  __Pyx_RaiseArgtupleInvalid("cga3std", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1945, __pyx_L3_error)
27804  __pyx_L6_skip:;
27805  goto __pyx_L4_argument_unpacking_done;
27806  __pyx_L3_error:;
27807  {
27808  Py_ssize_t __pyx_temp;
27809  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27810  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27811  }
27812  }
27813  __Pyx_AddTraceback("PyClical.cga3std", __pyx_clineno, __pyx_lineno, __pyx_filename);
27814  __Pyx_RefNannyFinishContext();
27815  return NULL;
27816  __pyx_L4_argument_unpacking_done:;
27817  __pyx_r = __pyx_pf_8PyClical_84cga3std(__pyx_self, __pyx_v_obj);
27818 
27819  /* function exit code */
27820  {
27821  Py_ssize_t __pyx_temp;
27822  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27823  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27824  }
27825  }
27826  __Pyx_RefNannyFinishContext();
27827  return __pyx_r;
27828  }
27829 
27830  static PyObject *__pyx_pf_8PyClical_84cga3std(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
27831  PyObject *__pyx_r = NULL;
27832  __Pyx_RefNannyDeclarations
27833  PyObject *__pyx_t_1 = NULL;
27834  int __pyx_lineno = 0;
27835  const char *__pyx_filename = NULL;
27836  int __pyx_clineno = 0;
27837  __Pyx_RefNannySetupContext("cga3std", 1);
27838  __Pyx_XDECREF(__pyx_r);
27839  __pyx_t_1 = __pyx_f_8PyClical_cga3std(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1945, __pyx_L1_error)
27840  __Pyx_GOTREF(__pyx_t_1);
27841  __pyx_r = __pyx_t_1;
27842  __pyx_t_1 = 0;
27843  goto __pyx_L0;
27844 
27845  /* function exit code */
27846  __pyx_L1_error:;
27847  __Pyx_XDECREF(__pyx_t_1);
27848  __Pyx_AddTraceback("PyClical.cga3std", __pyx_clineno, __pyx_lineno, __pyx_filename);
27849  __pyx_r = NULL;
27850  __pyx_L0:;
27851  __Pyx_XGIVEREF(__pyx_r);
27852  __Pyx_RefNannyFinishContext();
27853  return __pyx_r;
27854  }
27855 
27856  /* "PyClical.pyx":1956
27857  * return clifford().wrap( glucat.cga3std(toClifford(obj)) )
27858  *
27859  * cpdef inline agc3(obj): # <<<<<<<<<<<<<<
27860  * """
27861  * Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.
27862  */
27863 
27864  static PyObject *__pyx_pw_8PyClical_87agc3(PyObject *__pyx_self,
27865 #if CYTHON_METH_FASTCALL
27866 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27867 #else
27868 PyObject *__pyx_args, PyObject *__pyx_kwds
27869 #endif
27870 ); /*proto*/
27871  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_agc3(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
27872  PyObject *__pyx_r = NULL;
27873  __Pyx_RefNannyDeclarations
27874  PyObject *__pyx_t_1 = NULL;
27875  Clifford __pyx_t_2;
27876  PyObject *__pyx_t_3 = NULL;
27877  int __pyx_lineno = 0;
27878  const char *__pyx_filename = NULL;
27879  int __pyx_clineno = 0;
27880  __Pyx_RefNannySetupContext("agc3", 1);
27881 
27882  /* "PyClical.pyx":1965
27883  * 0
27884  * """
27885  * return clifford().wrap( glucat.agc3(toClifford(obj)) ) # <<<<<<<<<<<<<<
27886  *
27887  * # Some abbreviations.
27888  */
27889  __Pyx_XDECREF(__pyx_r);
27890  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8PyClical_clifford)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1965, __pyx_L1_error)
27891  __Pyx_GOTREF(__pyx_t_1);
27892  __pyx_t_2 = __pyx_f_8PyClical_toClifford(__pyx_v_obj); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1965, __pyx_L1_error)
27893  __pyx_t_3 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), cga3::agc3(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1965, __pyx_L1_error)
27894  __Pyx_GOTREF(__pyx_t_3);
27895  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27896  __pyx_r = __pyx_t_3;
27897  __pyx_t_3 = 0;
27898  goto __pyx_L0;
27899 
27900  /* "PyClical.pyx":1956
27901  * return clifford().wrap( glucat.cga3std(toClifford(obj)) )
27902  *
27903  * cpdef inline agc3(obj): # <<<<<<<<<<<<<<
27904  * """
27905  * Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.
27906  */
27907 
27908  /* function exit code */
27909  __pyx_L1_error:;
27910  __Pyx_XDECREF(__pyx_t_1);
27911  __Pyx_XDECREF(__pyx_t_3);
27912  __Pyx_AddTraceback("PyClical.agc3", __pyx_clineno, __pyx_lineno, __pyx_filename);
27913  __pyx_r = 0;
27914  __pyx_L0:;
27915  __Pyx_XGIVEREF(__pyx_r);
27916  __Pyx_RefNannyFinishContext();
27917  return __pyx_r;
27918  }
27919 
27920  /* Python wrapper */
27921  static PyObject *__pyx_pw_8PyClical_87agc3(PyObject *__pyx_self,
27922 #if CYTHON_METH_FASTCALL
27923 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27924 #else
27925 PyObject *__pyx_args, PyObject *__pyx_kwds
27926 #endif
27927 ); /*proto*/
27928  PyDoc_STRVAR(__pyx_doc_8PyClical_86agc3, "\n Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.\n\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(agc3(cga3(x)))\n 2{1}+9{2}+{3}\n >>> x=clifford(\"2{1}+9{2}+{3}\"); print(agc3(cga3(x))-x)\n 0\n ");
27929  static PyMethodDef __pyx_mdef_8PyClical_87agc3 = {"agc3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_87agc3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_86agc3};
27930  static PyObject *__pyx_pw_8PyClical_87agc3(PyObject *__pyx_self,
27931 #if CYTHON_METH_FASTCALL
27932 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
27933 #else
27934 PyObject *__pyx_args, PyObject *__pyx_kwds
27935 #endif
27936 ) {
27937  PyObject *__pyx_v_obj = 0;
27938  #if !CYTHON_METH_FASTCALL
27939  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
27940  #endif
27941  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
27942  PyObject* values[1] = {0};
27943  int __pyx_lineno = 0;
27944  const char *__pyx_filename = NULL;
27945  int __pyx_clineno = 0;
27946  PyObject *__pyx_r = 0;
27947  __Pyx_RefNannyDeclarations
27948  __Pyx_RefNannySetupContext("agc3 (wrapper)", 0);
27949  #if !CYTHON_METH_FASTCALL
27950  #if CYTHON_ASSUME_SAFE_MACROS
27951  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
27952  #else
27953  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
27954  #endif
27955  #endif
27956  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
27957  {
27958  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
27959  if (__pyx_kwds) {
27960  Py_ssize_t kw_args;
27961  switch (__pyx_nargs) {
27962  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27963  CYTHON_FALLTHROUGH;
27964  case 0: break;
27965  default: goto __pyx_L5_argtuple_error;
27966  }
27967  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
27968  switch (__pyx_nargs) {
27969  case 0:
27970  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
27971  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
27972  kw_args--;
27973  }
27974  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1956, __pyx_L3_error)
27975  else goto __pyx_L5_argtuple_error;
27976  }
27977  if (unlikely(kw_args > 0)) {
27978  const Py_ssize_t kwd_pos_args = __pyx_nargs;
27979  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "agc3") < 0)) __PYX_ERR(0, 1956, __pyx_L3_error)
27980  }
27981  } else if (unlikely(__pyx_nargs != 1)) {
27982  goto __pyx_L5_argtuple_error;
27983  } else {
27984  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
27985  }
27986  __pyx_v_obj = values[0];
27987  }
27988  goto __pyx_L6_skip;
27989  __pyx_L5_argtuple_error:;
27990  __Pyx_RaiseArgtupleInvalid("agc3", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1956, __pyx_L3_error)
27991  __pyx_L6_skip:;
27992  goto __pyx_L4_argument_unpacking_done;
27993  __pyx_L3_error:;
27994  {
27995  Py_ssize_t __pyx_temp;
27996  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
27997  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
27998  }
27999  }
28000  __Pyx_AddTraceback("PyClical.agc3", __pyx_clineno, __pyx_lineno, __pyx_filename);
28001  __Pyx_RefNannyFinishContext();
28002  return NULL;
28003  __pyx_L4_argument_unpacking_done:;
28004  __pyx_r = __pyx_pf_8PyClical_86agc3(__pyx_self, __pyx_v_obj);
28005 
28006  /* function exit code */
28007  {
28008  Py_ssize_t __pyx_temp;
28009  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
28010  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
28011  }
28012  }
28013  __Pyx_RefNannyFinishContext();
28014  return __pyx_r;
28015  }
28016 
28017  static PyObject *__pyx_pf_8PyClical_86agc3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
28018  PyObject *__pyx_r = NULL;
28019  __Pyx_RefNannyDeclarations
28020  PyObject *__pyx_t_1 = NULL;
28021  int __pyx_lineno = 0;
28022  const char *__pyx_filename = NULL;
28023  int __pyx_clineno = 0;
28024  __Pyx_RefNannySetupContext("agc3", 1);
28025  __Pyx_XDECREF(__pyx_r);
28026  __pyx_t_1 = __pyx_f_8PyClical_agc3(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1956, __pyx_L1_error)
28027  __Pyx_GOTREF(__pyx_t_1);
28028  __pyx_r = __pyx_t_1;
28029  __pyx_t_1 = 0;
28030  goto __pyx_L0;
28031 
28032  /* function exit code */
28033  __pyx_L1_error:;
28034  __Pyx_XDECREF(__pyx_t_1);
28035  __Pyx_AddTraceback("PyClical.agc3", __pyx_clineno, __pyx_lineno, __pyx_filename);
28036  __pyx_r = NULL;
28037  __pyx_L0:;
28038  __Pyx_XGIVEREF(__pyx_r);
28039  __Pyx_RefNannyFinishContext();
28040  return __pyx_r;
28041  }
28042 
28043  /* "PyClical.pyx":1999
28044  * """
28045  *
28046  * def e(obj): # <<<<<<<<<<<<<<
28047  * """
28048  * Abbreviation for clifford(index_set(obj)).
28049  */
28050 
28051  /* Python wrapper */
28052  static PyObject *__pyx_pw_8PyClical_89e(PyObject *__pyx_self,
28053 #if CYTHON_METH_FASTCALL
28054 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
28055 #else
28056 PyObject *__pyx_args, PyObject *__pyx_kwds
28057 #endif
28058 ); /*proto*/
28059  PyDoc_STRVAR(__pyx_doc_8PyClical_88e, "\n Abbreviation for clifford(index_set(obj)).\n\n >>> print(e(1))\n {1}\n >>> print(e(-1))\n {-1}\n >>> print(e(0))\n 1\n ");
28060  static PyMethodDef __pyx_mdef_8PyClical_89e = {"e", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_89e, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_88e};
28061  static PyObject *__pyx_pw_8PyClical_89e(PyObject *__pyx_self,
28062 #if CYTHON_METH_FASTCALL
28063 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
28064 #else
28065 PyObject *__pyx_args, PyObject *__pyx_kwds
28066 #endif
28067 ) {
28068  PyObject *__pyx_v_obj = 0;
28069  #if !CYTHON_METH_FASTCALL
28070  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
28071  #endif
28072  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
28073  PyObject* values[1] = {0};
28074  int __pyx_lineno = 0;
28075  const char *__pyx_filename = NULL;
28076  int __pyx_clineno = 0;
28077  PyObject *__pyx_r = 0;
28078  __Pyx_RefNannyDeclarations
28079  __Pyx_RefNannySetupContext("e (wrapper)", 0);
28080  #if !CYTHON_METH_FASTCALL
28081  #if CYTHON_ASSUME_SAFE_MACROS
28082  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
28083  #else
28084  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
28085  #endif
28086  #endif
28087  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
28088  {
28089  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
28090  if (__pyx_kwds) {
28091  Py_ssize_t kw_args;
28092  switch (__pyx_nargs) {
28093  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
28094  CYTHON_FALLTHROUGH;
28095  case 0: break;
28096  default: goto __pyx_L5_argtuple_error;
28097  }
28098  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
28099  switch (__pyx_nargs) {
28100  case 0:
28101  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
28102  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
28103  kw_args--;
28104  }
28105  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1999, __pyx_L3_error)
28106  else goto __pyx_L5_argtuple_error;
28107  }
28108  if (unlikely(kw_args > 0)) {
28109  const Py_ssize_t kwd_pos_args = __pyx_nargs;
28110  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "e") < 0)) __PYX_ERR(0, 1999, __pyx_L3_error)
28111  }
28112  } else if (unlikely(__pyx_nargs != 1)) {
28113  goto __pyx_L5_argtuple_error;
28114  } else {
28115  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
28116  }
28117  __pyx_v_obj = values[0];
28118  }
28119  goto __pyx_L6_skip;
28120  __pyx_L5_argtuple_error:;
28121  __Pyx_RaiseArgtupleInvalid("e", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1999, __pyx_L3_error)
28122  __pyx_L6_skip:;
28123  goto __pyx_L4_argument_unpacking_done;
28124  __pyx_L3_error:;
28125  {
28126  Py_ssize_t __pyx_temp;
28127  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
28128  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
28129  }
28130  }
28131  __Pyx_AddTraceback("PyClical.e", __pyx_clineno, __pyx_lineno, __pyx_filename);
28132  __Pyx_RefNannyFinishContext();
28133  return NULL;
28134  __pyx_L4_argument_unpacking_done:;
28135  __pyx_r = __pyx_pf_8PyClical_88e(__pyx_self, __pyx_v_obj);
28136 
28137  /* function exit code */
28138  {
28139  Py_ssize_t __pyx_temp;
28140  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
28141  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
28142  }
28143  }
28144  __Pyx_RefNannyFinishContext();
28145  return __pyx_r;
28146  }
28147 
28148  static PyObject *__pyx_pf_8PyClical_88e(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
28149  PyObject *__pyx_r = NULL;
28150  __Pyx_RefNannyDeclarations
28151  PyObject *__pyx_t_1 = NULL;
28152  PyObject *__pyx_t_2 = NULL;
28153  int __pyx_lineno = 0;
28154  const char *__pyx_filename = NULL;
28155  int __pyx_clineno = 0;
28156  __Pyx_RefNannySetupContext("e", 1);
28157 
28158  /* "PyClical.pyx":2010
28159  * 1
28160  * """
28161  * return clifford(index_set(obj)) # <<<<<<<<<<<<<<
28162  *
28163  * def istpq(p, q):
28164  */
28165  __Pyx_XDECREF(__pyx_r);
28166  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2010, __pyx_L1_error)
28167  __Pyx_GOTREF(__pyx_t_1);
28168  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __pyx_L1_error)
28169  __Pyx_GOTREF(__pyx_t_2);
28170  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28171  __pyx_r = __pyx_t_2;
28172  __pyx_t_2 = 0;
28173  goto __pyx_L0;
28174 
28175  /* "PyClical.pyx":1999
28176  * """
28177  *
28178  * def e(obj): # <<<<<<<<<<<<<<
28179  * """
28180  * Abbreviation for clifford(index_set(obj)).
28181  */
28182 
28183  /* function exit code */
28184  __pyx_L1_error:;
28185  __Pyx_XDECREF(__pyx_t_1);
28186  __Pyx_XDECREF(__pyx_t_2);
28187  __Pyx_AddTraceback("PyClical.e", __pyx_clineno, __pyx_lineno, __pyx_filename);
28188  __pyx_r = NULL;
28189  __pyx_L0:;
28190  __Pyx_XGIVEREF(__pyx_r);
28191  __Pyx_RefNannyFinishContext();
28192  return __pyx_r;
28193  }
28194 
28195  /* "PyClical.pyx":2012
28196  * return clifford(index_set(obj))
28197  *
28198  * def istpq(p, q): # <<<<<<<<<<<<<<
28199  * """
28200  * Abbreviation for index_set({-q,...p}).
28201  */
28202 
28203  /* Python wrapper */
28204  static PyObject *__pyx_pw_8PyClical_91istpq(PyObject *__pyx_self,
28205 #if CYTHON_METH_FASTCALL
28206 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
28207 #else
28208 PyObject *__pyx_args, PyObject *__pyx_kwds
28209 #endif
28210 ); /*proto*/
28211  PyDoc_STRVAR(__pyx_doc_8PyClical_90istpq, "\n Abbreviation for index_set({-q,...p}).\n\n >>> print(istpq(2,3))\n {-3,-2,-1,1,2}\n ");
28212  static PyMethodDef __pyx_mdef_8PyClical_91istpq = {"istpq", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_91istpq, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_90istpq};
28213  static PyObject *__pyx_pw_8PyClical_91istpq(PyObject *__pyx_self,
28214 #if CYTHON_METH_FASTCALL
28215 PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
28216 #else
28217 PyObject *__pyx_args, PyObject *__pyx_kwds
28218 #endif
28219 ) {
28220  PyObject *__pyx_v_p = 0;
28221  PyObject *__pyx_v_q = 0;
28222  #if !CYTHON_METH_FASTCALL
28223  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
28224  #endif
28225  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
28226  PyObject* values[2] = {0,0};
28227  int __pyx_lineno = 0;
28228  const char *__pyx_filename = NULL;
28229  int __pyx_clineno = 0;
28230  PyObject *__pyx_r = 0;
28231  __Pyx_RefNannyDeclarations
28232  __Pyx_RefNannySetupContext("istpq (wrapper)", 0);
28233  #if !CYTHON_METH_FASTCALL
28234  #if CYTHON_ASSUME_SAFE_MACROS
28235  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
28236  #else
28237  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
28238  #endif
28239  #endif
28240  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
28241  {
28242  PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_q,0};
28243  if (__pyx_kwds) {
28244  Py_ssize_t kw_args;
28245  switch (__pyx_nargs) {
28246  case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
28247  CYTHON_FALLTHROUGH;
28248  case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
28249  CYTHON_FALLTHROUGH;
28250  case 0: break;
28251  default: goto __pyx_L5_argtuple_error;
28252  }
28253  kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
28254  switch (__pyx_nargs) {
28255  case 0:
28256  if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p)) != 0)) {
28257  (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
28258  kw_args--;
28259  }
28260  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
28261  else goto __pyx_L5_argtuple_error;
28262  CYTHON_FALLTHROUGH;
28263  case 1:
28264  if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_q)) != 0)) {
28265  (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
28266  kw_args--;
28267  }
28268  else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2012, __pyx_L3_error)
28269  else {
28270  __Pyx_RaiseArgtupleInvalid("istpq", 1, 2, 2, 1); __PYX_ERR(0, 2012, __pyx_L3_error)
28271  }
28272  }
28273  if (unlikely(kw_args > 0)) {
28274  const Py_ssize_t kwd_pos_args = __pyx_nargs;
28275  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "istpq") < 0)) __PYX_ERR(0, 2012, __pyx_L3_error)
28276  }
28277  } else if (unlikely(__pyx_nargs != 2)) {
28278  goto __pyx_L5_argtuple_error;
28279  } else {
28280  values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
28281  values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
28282  }
28283  __pyx_v_p = values[0];
28284  __pyx_v_q = values[1];
28285  }
28286  goto __pyx_L6_skip;
28287  __pyx_L5_argtuple_error:;
28288  __Pyx_RaiseArgtupleInvalid("istpq", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 2012, __pyx_L3_error)
28289  __pyx_L6_skip:;
28290  goto __pyx_L4_argument_unpacking_done;
28291  __pyx_L3_error:;
28292  {
28293  Py_ssize_t __pyx_temp;
28294  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
28295  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
28296  }
28297  }
28298  __Pyx_AddTraceback("PyClical.istpq", __pyx_clineno, __pyx_lineno, __pyx_filename);
28299  __Pyx_RefNannyFinishContext();
28300  return NULL;
28301  __pyx_L4_argument_unpacking_done:;
28302  __pyx_r = __pyx_pf_8PyClical_90istpq(__pyx_self, __pyx_v_p, __pyx_v_q);
28303 
28304  /* function exit code */
28305  {
28306  Py_ssize_t __pyx_temp;
28307  for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
28308  __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
28309  }
28310  }
28311  __Pyx_RefNannyFinishContext();
28312  return __pyx_r;
28313  }
28314 
28315  static PyObject *__pyx_pf_8PyClical_90istpq(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_p, PyObject *__pyx_v_q) {
28316  PyObject *__pyx_r = NULL;
28317  __Pyx_RefNannyDeclarations
28318  PyObject *__pyx_t_1 = NULL;
28319  PyObject *__pyx_t_2 = NULL;
28320  PyObject *__pyx_t_3 = NULL;
28321  int __pyx_lineno = 0;
28322  const char *__pyx_filename = NULL;
28323  int __pyx_clineno = 0;
28324  __Pyx_RefNannySetupContext("istpq", 1);
28325 
28326  /* "PyClical.pyx":2019
28327  * {-3,-2,-1,1,2}
28328  * """
28329  * return index_set(set(range(-q,p+1))) # <<<<<<<<<<<<<<
28330  *
28331  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL].
28332  */
28333  __Pyx_XDECREF(__pyx_r);
28334  __pyx_t_1 = PyNumber_Negative(__pyx_v_q); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2019, __pyx_L1_error)
28335  __Pyx_GOTREF(__pyx_t_1);
28336  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_p, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2019, __pyx_L1_error)
28337  __Pyx_GOTREF(__pyx_t_2);
28338  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2019, __pyx_L1_error)
28339  __Pyx_GOTREF(__pyx_t_3);
28340  __Pyx_GIVEREF(__pyx_t_1);
28341  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(0, 2019, __pyx_L1_error);
28342  __Pyx_GIVEREF(__pyx_t_2);
28343  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(0, 2019, __pyx_L1_error);
28344  __pyx_t_1 = 0;
28345  __pyx_t_2 = 0;
28346  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2019, __pyx_L1_error)
28347  __Pyx_GOTREF(__pyx_t_2);
28348  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28349  __pyx_t_3 = PySet_New(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2019, __pyx_L1_error)
28350  __Pyx_GOTREF(__pyx_t_3);
28351  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28352  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2019, __pyx_L1_error)
28353  __Pyx_GOTREF(__pyx_t_2);
28354  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28355  __pyx_r = __pyx_t_2;
28356  __pyx_t_2 = 0;
28357  goto __pyx_L0;
28358 
28359  /* "PyClical.pyx":2012
28360  * return clifford(index_set(obj))
28361  *
28362  * def istpq(p, q): # <<<<<<<<<<<<<<
28363  * """
28364  * Abbreviation for index_set({-q,...p}).
28365  */
28366 
28367  /* function exit code */
28368  __pyx_L1_error:;
28369  __Pyx_XDECREF(__pyx_t_1);
28370  __Pyx_XDECREF(__pyx_t_2);
28371  __Pyx_XDECREF(__pyx_t_3);
28372  __Pyx_AddTraceback("PyClical.istpq", __pyx_clineno, __pyx_lineno, __pyx_filename);
28373  __pyx_r = NULL;
28374  __pyx_L0:;
28375  __Pyx_XGIVEREF(__pyx_r);
28376  __Pyx_RefNannyFinishContext();
28377  return __pyx_r;
28378  }
28379 
28380  /* "PyClical.pyx":2025
28381  *
28382  * # Doctest interface.
28383  * def _test(): # <<<<<<<<<<<<<<
28384  * import PyClical, doctest
28385  * return doctest.testmod(PyClical)
28386  */
28387 
28388  /* Python wrapper */
28389  static PyObject *__pyx_pw_8PyClical_93_test(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
28390  static PyMethodDef __pyx_mdef_8PyClical_93_test = {"_test", (PyCFunction)__pyx_pw_8PyClical_93_test, METH_NOARGS, 0};
28391  static PyObject *__pyx_pw_8PyClical_93_test(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
28392  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
28393  PyObject *__pyx_r = 0;
28394  __Pyx_RefNannyDeclarations
28395  __Pyx_RefNannySetupContext("_test (wrapper)", 0);
28396  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
28397  __pyx_r = __pyx_pf_8PyClical_92_test(__pyx_self);
28398 
28399  /* function exit code */
28400  __Pyx_RefNannyFinishContext();
28401  return __pyx_r;
28402  }
28403 
28404  static PyObject *__pyx_pf_8PyClical_92_test(CYTHON_UNUSED PyObject *__pyx_self) {
28405  PyObject *__pyx_v_PyClical = NULL;
28406  PyObject *__pyx_v_doctest = NULL;
28407  PyObject *__pyx_r = NULL;
28408  __Pyx_RefNannyDeclarations
28409  PyObject *__pyx_t_1 = NULL;
28410  PyObject *__pyx_t_2 = NULL;
28411  PyObject *__pyx_t_3 = NULL;
28412  int __pyx_t_4;
28413  int __pyx_lineno = 0;
28414  const char *__pyx_filename = NULL;
28415  int __pyx_clineno = 0;
28416  __Pyx_RefNannySetupContext("_test", 1);
28417 
28418  /* "PyClical.pyx":2026
28419  * # Doctest interface.
28420  * def _test():
28421  * import PyClical, doctest # <<<<<<<<<<<<<<
28422  * return doctest.testmod(PyClical)
28423  *
28424  */
28425  __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_PyClical, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2026, __pyx_L1_error)
28426  __Pyx_GOTREF(__pyx_t_1);
28427  __pyx_v_PyClical = __pyx_t_1;
28428  __pyx_t_1 = 0;
28429  __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_doctest, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2026, __pyx_L1_error)
28430  __Pyx_GOTREF(__pyx_t_1);
28431  __pyx_v_doctest = __pyx_t_1;
28432  __pyx_t_1 = 0;
28433 
28434  /* "PyClical.pyx":2027
28435  * def _test():
28436  * import PyClical, doctest
28437  * return doctest.testmod(PyClical) # <<<<<<<<<<<<<<
28438  *
28439  * if __name__ == "__main__":
28440  */
28441  __Pyx_XDECREF(__pyx_r);
28442  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_doctest, __pyx_n_s_testmod); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2027, __pyx_L1_error)
28443  __Pyx_GOTREF(__pyx_t_2);
28444  __pyx_t_3 = NULL;
28445  __pyx_t_4 = 0;
28446  #if CYTHON_UNPACK_METHODS
28447  if (likely(PyMethod_Check(__pyx_t_2))) {
28448  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
28449  if (likely(__pyx_t_3)) {
28450  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28451  __Pyx_INCREF(__pyx_t_3);
28452  __Pyx_INCREF(function);
28453  __Pyx_DECREF_SET(__pyx_t_2, function);
28454  __pyx_t_4 = 1;
28455  }
28456  }
28457  #endif
28458  {
28459  PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_PyClical};
28460  __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
28461  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
28462  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2027, __pyx_L1_error)
28463  __Pyx_GOTREF(__pyx_t_1);
28464  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28465  }
28466  __pyx_r = __pyx_t_1;
28467  __pyx_t_1 = 0;
28468  goto __pyx_L0;
28469 
28470  /* "PyClical.pyx":2025
28471  *
28472  * # Doctest interface.
28473  * def _test(): # <<<<<<<<<<<<<<
28474  * import PyClical, doctest
28475  * return doctest.testmod(PyClical)
28476  */
28477 
28478  /* function exit code */
28479  __pyx_L1_error:;
28480  __Pyx_XDECREF(__pyx_t_1);
28481  __Pyx_XDECREF(__pyx_t_2);
28482  __Pyx_XDECREF(__pyx_t_3);
28483  __Pyx_AddTraceback("PyClical._test", __pyx_clineno, __pyx_lineno, __pyx_filename);
28484  __pyx_r = NULL;
28485  __pyx_L0:;
28486  __Pyx_XDECREF(__pyx_v_PyClical);
28487  __Pyx_XDECREF(__pyx_v_doctest);
28488  __Pyx_XGIVEREF(__pyx_r);
28489  __Pyx_RefNannyFinishContext();
28490  return __pyx_r;
28491  }
28492  static struct __pyx_vtabstruct_8PyClical_index_set __pyx_vtable_8PyClical_index_set;
28493 
28494  static PyObject *__pyx_tp_new_8PyClical_index_set(PyTypeObject *t, PyObject *a, PyObject *k) {
28495  struct __pyx_obj_8PyClical_index_set *p;
28496  PyObject *o;
28497  #if CYTHON_COMPILING_IN_LIMITED_API
28498  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
28499  o = alloc_func(t, 0);
28500  #else
28501  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
28502  o = (*t->tp_alloc)(t, 0);
28503  } else {
28504  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
28505  }
28506  if (unlikely(!o)) return 0;
28507  #endif
28508  p = ((struct __pyx_obj_8PyClical_index_set *)o);
28509  p->__pyx_vtab = __pyx_vtabptr_8PyClical_index_set;
28510  if (unlikely(__pyx_pw_8PyClical_9index_set_3__cinit__(o, a, k) < 0)) goto bad;
28511  return o;
28512  bad:
28513  Py_DECREF(o); o = 0;
28514  return NULL;
28515  }
28516 
28517  static void __pyx_tp_dealloc_8PyClical_index_set(PyObject *o) {
28518  #if CYTHON_USE_TP_FINALIZE
28519  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
28520  if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8PyClical_index_set) {
28521  if (PyObject_CallFinalizerFromDealloc(o)) return;
28522  }
28523  }
28524  #endif
28525  {
28526  PyObject *etype, *eval, *etb;
28527  PyErr_Fetch(&etype, &eval, &etb);
28528  __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
28529  __pyx_pw_8PyClical_9index_set_5__dealloc__(o);
28530  __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
28531  PyErr_Restore(etype, eval, etb);
28532  }
28533  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
28534  (*Py_TYPE(o)->tp_free)(o);
28535  #else
28536  {
28537  freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
28538  if (tp_free) tp_free(o);
28539  }
28540  #endif
28541  }
28542  static PyObject *__pyx_sq_item_8PyClical_index_set(PyObject *o, Py_ssize_t i) {
28543  PyObject *r;
28544  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
28545  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
28546  Py_DECREF(x);
28547  return r;
28548  }
28549 
28550  static int __pyx_mp_ass_subscript_8PyClical_index_set(PyObject *o, PyObject *i, PyObject *v) {
28551  if (v) {
28552  return __pyx_pw_8PyClical_9index_set_9__setitem__(o, i, v);
28553  }
28554  else {
28555  __Pyx_TypeName o_type_name;
28556  o_type_name = __Pyx_PyType_GetName(Py_TYPE(o));
28557  PyErr_Format(PyExc_NotImplementedError,
28558  "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name);
28559  __Pyx_DECREF_TypeName(o_type_name);
28560  return -1;
28561  }
28562  }
28563 
28564  static CYTHON_INLINE PyObject *__pyx_nb_and_8PyClical_index_set_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
28565  binaryfunc slot;
28566 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
28567  slot = type->tp_as_number ? type->tp_as_number->nb_and : NULL;
28568 #else
28569  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_and);
28570 #endif
28571  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
28572 }
28573 static PyObject *__pyx_nb_and_8PyClical_index_set(PyObject *left, PyObject *right ) {
28574  int maybe_self_is_left, maybe_self_is_right = 0;
28575  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
28576 #if CYTHON_USE_TYPE_SLOTS
28577  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_and == &__pyx_nb_and_8PyClical_index_set)
28578 #endif
28579  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_index_set);
28580  if (maybe_self_is_left) {
28581  PyObject *res;
28582  res = __pyx_pw_8PyClical_9index_set_24__and__(left, right);
28583  if (res != Py_NotImplemented) return res;
28584  Py_DECREF(res);
28585  }
28586  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
28587 #if CYTHON_USE_TYPE_SLOTS
28588  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_and == &__pyx_nb_and_8PyClical_index_set)
28589 #endif
28590  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_index_set);
28591  if (maybe_self_is_right) {
28592  return __pyx_nb_and_8PyClical_index_set_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_8PyClical_index_set, tp_base, PyTypeObject*), left, right );
28593  }
28594  return __Pyx_NewRef(Py_NotImplemented);
28595 }
28596 
28597 
28598 
28599  static CYTHON_INLINE PyObject *__pyx_nb_xor_8PyClical_index_set_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
28600  binaryfunc slot;
28601 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
28602  slot = type->tp_as_number ? type->tp_as_number->nb_xor : NULL;
28603 #else
28604  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_xor);
28605 #endif
28606  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
28607 }
28608 static PyObject *__pyx_nb_xor_8PyClical_index_set(PyObject *left, PyObject *right ) {
28609  int maybe_self_is_left, maybe_self_is_right = 0;
28610  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
28611 #if CYTHON_USE_TYPE_SLOTS
28612  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_xor == &__pyx_nb_xor_8PyClical_index_set)
28613 #endif
28614  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_index_set);
28615  if (maybe_self_is_left) {
28616  PyObject *res;
28617  res = __pyx_pw_8PyClical_9index_set_20__xor__(left, right);
28618  if (res != Py_NotImplemented) return res;
28619  Py_DECREF(res);
28620  }
28621  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
28622 #if CYTHON_USE_TYPE_SLOTS
28623  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_xor == &__pyx_nb_xor_8PyClical_index_set)
28624 #endif
28625  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_index_set);
28626  if (maybe_self_is_right) {
28627  return __pyx_nb_xor_8PyClical_index_set_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_8PyClical_index_set, tp_base, PyTypeObject*), left, right );
28628  }
28629  return __Pyx_NewRef(Py_NotImplemented);
28630 }
28631 
28632 
28633 
28634  static CYTHON_INLINE PyObject *__pyx_nb_or_8PyClical_index_set_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
28635  binaryfunc slot;
28636 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
28637  slot = type->tp_as_number ? type->tp_as_number->nb_or : NULL;
28638 #else
28639  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_or);
28640 #endif
28641  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
28642 }
28643 static PyObject *__pyx_nb_or_8PyClical_index_set(PyObject *left, PyObject *right ) {
28644  int maybe_self_is_left, maybe_self_is_right = 0;
28645  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
28646 #if CYTHON_USE_TYPE_SLOTS
28647  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_or == &__pyx_nb_or_8PyClical_index_set)
28648 #endif
28649  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_index_set);
28650  if (maybe_self_is_left) {
28651  PyObject *res;
28652  res = __pyx_pw_8PyClical_9index_set_28__or__(left, right);
28653  if (res != Py_NotImplemented) return res;
28654  Py_DECREF(res);
28655  }
28656  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
28657 #if CYTHON_USE_TYPE_SLOTS
28658  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_or == &__pyx_nb_or_8PyClical_index_set)
28659 #endif
28660  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_index_set);
28661  if (maybe_self_is_right) {
28662  return __pyx_nb_or_8PyClical_index_set_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_8PyClical_index_set, tp_base, PyTypeObject*), left, right );
28663  }
28664  return __Pyx_NewRef(Py_NotImplemented);
28665 }
28666 
28667 
28668 
28669  static PyObject *__pyx_specialmethod___pyx_pw_8PyClical_9index_set_48__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
28670  return __pyx_pw_8PyClical_9index_set_48__repr__(self);
28671  }
28672 
28673  static PyMethodDef __pyx_methods_8PyClical_index_set[] = {
28674  {"count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_32count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_31count},
28675  {"count_neg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_34count_neg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_33count_neg},
28676  {"count_pos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_36count_pos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_35count_pos},
28677  {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_38min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_37min},
28678  {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_40max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_39max},
28679  {"hash_fn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_42hash_fn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_41hash_fn},
28680  {"sign_of_mult", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_44sign_of_mult, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_43sign_of_mult},
28681  {"sign_of_square", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_46sign_of_square, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_9index_set_45sign_of_square},
28682  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_8PyClical_9index_set_48__repr__, METH_NOARGS|METH_COEXIST, __pyx_doc_8PyClical_9index_set_47__repr__},
28683  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_52__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
28684  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_9index_set_54__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
28685  {0, 0, 0, 0}
28686  };
28687  #if CYTHON_USE_TYPE_SPECS
28688  static PyType_Slot __pyx_type_8PyClical_index_set_slots[] = {
28689  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8PyClical_index_set},
28690  {Py_tp_repr, (void *)__pyx_pw_8PyClical_9index_set_48__repr__},
28691  {Py_nb_invert, (void *)__pyx_pw_8PyClical_9index_set_18__invert__},
28692  {Py_nb_and, (void *)__pyx_nb_and_8PyClical_index_set},
28693  {Py_nb_xor, (void *)__pyx_nb_xor_8PyClical_index_set},
28694  {Py_nb_or, (void *)__pyx_nb_or_8PyClical_index_set},
28695  {Py_nb_inplace_and, (void *)__pyx_pw_8PyClical_9index_set_26__iand__},
28696  {Py_nb_inplace_xor, (void *)__pyx_pw_8PyClical_9index_set_22__ixor__},
28697  {Py_nb_inplace_or, (void *)__pyx_pw_8PyClical_9index_set_30__ior__},
28698  {Py_sq_item, (void *)__pyx_sq_item_8PyClical_index_set},
28699  {Py_sq_contains, (void *)__pyx_pw_8PyClical_9index_set_13__contains__},
28700  {Py_mp_subscript, (void *)__pyx_pw_8PyClical_9index_set_11__getitem__},
28701  {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_8PyClical_index_set},
28702  {Py_tp_str, (void *)__pyx_pw_8PyClical_9index_set_50__str__},
28703  {Py_tp_doc, (void *)PyDoc_STR("\n Python class index_set wraps C++ class IndexSet.\n ")},
28704  {Py_tp_richcompare, (void *)__pyx_pw_8PyClical_9index_set_7__richcmp__},
28705  {Py_tp_iter, (void *)__pyx_pw_8PyClical_9index_set_15__iter__},
28706  {Py_tp_methods, (void *)__pyx_methods_8PyClical_index_set},
28707  {Py_tp_new, (void *)__pyx_tp_new_8PyClical_index_set},
28708  {0, 0},
28709  };
28710  static PyType_Spec __pyx_type_8PyClical_index_set_spec = {
28711  "PyClical.index_set",
28712  sizeof(struct __pyx_obj_8PyClical_index_set),
28713  0,
28714  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
28715  __pyx_type_8PyClical_index_set_slots,
28716  };
28717  #else
28718 
28719  static PyNumberMethods __pyx_tp_as_number_index_set = {
28720  0, /*nb_add*/
28721  0, /*nb_subtract*/
28722  0, /*nb_multiply*/
28723  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
28724  0, /*nb_divide*/
28725  #endif
28726  0, /*nb_remainder*/
28727  0, /*nb_divmod*/
28728  0, /*nb_power*/
28729  0, /*nb_negative*/
28730  0, /*nb_positive*/
28731  0, /*nb_absolute*/
28732  0, /*nb_bool*/
28733  __pyx_pw_8PyClical_9index_set_18__invert__, /*nb_invert*/
28734  0, /*nb_lshift*/
28735  0, /*nb_rshift*/
28736  __pyx_nb_and_8PyClical_index_set, /*nb_and*/
28737  __pyx_nb_xor_8PyClical_index_set, /*nb_xor*/
28738  __pyx_nb_or_8PyClical_index_set, /*nb_or*/
28739  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
28740  0, /*nb_coerce*/
28741  #endif
28742  0, /*nb_int*/
28743  #if PY_MAJOR_VERSION < 3
28744  0, /*nb_long*/
28745  #else
28746  0, /*reserved*/
28747  #endif
28748  0, /*nb_float*/
28749  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
28750  0, /*nb_oct*/
28751  #endif
28752  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
28753  0, /*nb_hex*/
28754  #endif
28755  0, /*nb_inplace_add*/
28756  0, /*nb_inplace_subtract*/
28757  0, /*nb_inplace_multiply*/
28758  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
28759  0, /*nb_inplace_divide*/
28760  #endif
28761  0, /*nb_inplace_remainder*/
28762  0, /*nb_inplace_power*/
28763  0, /*nb_inplace_lshift*/
28764  0, /*nb_inplace_rshift*/
28765  __pyx_pw_8PyClical_9index_set_26__iand__, /*nb_inplace_and*/
28766  __pyx_pw_8PyClical_9index_set_22__ixor__, /*nb_inplace_xor*/
28767  __pyx_pw_8PyClical_9index_set_30__ior__, /*nb_inplace_or*/
28768  0, /*nb_floor_divide*/
28769  0, /*nb_true_divide*/
28770  0, /*nb_inplace_floor_divide*/
28771  0, /*nb_inplace_true_divide*/
28772  0, /*nb_index*/
28773  #if PY_VERSION_HEX >= 0x03050000
28774  0, /*nb_matrix_multiply*/
28775  #endif
28776  #if PY_VERSION_HEX >= 0x03050000
28777  0, /*nb_inplace_matrix_multiply*/
28778  #endif
28779  };
28780 
28781  static PySequenceMethods __pyx_tp_as_sequence_index_set = {
28782  0, /*sq_length*/
28783  0, /*sq_concat*/
28784  0, /*sq_repeat*/
28785  __pyx_sq_item_8PyClical_index_set, /*sq_item*/
28786  0, /*sq_slice*/
28787  0, /*sq_ass_item*/
28788  0, /*sq_ass_slice*/
28789  __pyx_pw_8PyClical_9index_set_13__contains__, /*sq_contains*/
28790  0, /*sq_inplace_concat*/
28791  0, /*sq_inplace_repeat*/
28792  };
28793 
28794  static PyMappingMethods __pyx_tp_as_mapping_index_set = {
28795  0, /*mp_length*/
28796  __pyx_pw_8PyClical_9index_set_11__getitem__, /*mp_subscript*/
28797  __pyx_mp_ass_subscript_8PyClical_index_set, /*mp_ass_subscript*/
28798  };
28799 
28800  static PyTypeObject __pyx_type_8PyClical_index_set = {
28801  PyVarObject_HEAD_INIT(0, 0)
28802  "PyClical.""index_set", /*tp_name*/
28803  sizeof(struct __pyx_obj_8PyClical_index_set), /*tp_basicsize*/
28804  0, /*tp_itemsize*/
28805  __pyx_tp_dealloc_8PyClical_index_set, /*tp_dealloc*/
28806  #if PY_VERSION_HEX < 0x030800b4
28807  0, /*tp_print*/
28808  #endif
28809  #if PY_VERSION_HEX >= 0x030800b4
28810  0, /*tp_vectorcall_offset*/
28811  #endif
28812  0, /*tp_getattr*/
28813  0, /*tp_setattr*/
28814  #if PY_MAJOR_VERSION < 3
28815  0, /*tp_compare*/
28816  #endif
28817  #if PY_MAJOR_VERSION >= 3
28818  0, /*tp_as_async*/
28819  #endif
28820  __pyx_pw_8PyClical_9index_set_48__repr__, /*tp_repr*/
28821  &__pyx_tp_as_number_index_set, /*tp_as_number*/
28822  &__pyx_tp_as_sequence_index_set, /*tp_as_sequence*/
28823  &__pyx_tp_as_mapping_index_set, /*tp_as_mapping*/
28824  0, /*tp_hash*/
28825  0, /*tp_call*/
28826  __pyx_pw_8PyClical_9index_set_50__str__, /*tp_str*/
28827  0, /*tp_getattro*/
28828  0, /*tp_setattro*/
28829  0, /*tp_as_buffer*/
28830  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
28831  PyDoc_STR("\n Python class index_set wraps C++ class IndexSet.\n "), /*tp_doc*/
28832  0, /*tp_traverse*/
28833  0, /*tp_clear*/
28834  __pyx_pw_8PyClical_9index_set_7__richcmp__, /*tp_richcompare*/
28835  0, /*tp_weaklistoffset*/
28836  __pyx_pw_8PyClical_9index_set_15__iter__, /*tp_iter*/
28837  0, /*tp_iternext*/
28838  __pyx_methods_8PyClical_index_set, /*tp_methods*/
28839  0, /*tp_members*/
28840  0, /*tp_getset*/
28841  0, /*tp_base*/
28842  0, /*tp_dict*/
28843  0, /*tp_descr_get*/
28844  0, /*tp_descr_set*/
28845  #if !CYTHON_USE_TYPE_SPECS
28846  0, /*tp_dictoffset*/
28847  #endif
28848  0, /*tp_init*/
28849  0, /*tp_alloc*/
28850  __pyx_tp_new_8PyClical_index_set, /*tp_new*/
28851  0, /*tp_free*/
28852  0, /*tp_is_gc*/
28853  0, /*tp_bases*/
28854  0, /*tp_mro*/
28855  0, /*tp_cache*/
28856  0, /*tp_subclasses*/
28857  0, /*tp_weaklist*/
28858  0, /*tp_del*/
28859  0, /*tp_version_tag*/
28860  #if PY_VERSION_HEX >= 0x030400a1
28861  #if CYTHON_USE_TP_FINALIZE
28862  0, /*tp_finalize*/
28863  #else
28864  NULL, /*tp_finalize*/
28865  #endif
28866  #endif
28867  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
28868  0, /*tp_vectorcall*/
28869  #endif
28870  #if __PYX_NEED_TP_PRINT_SLOT == 1
28871  0, /*tp_print*/
28872  #endif
28873  #if PY_VERSION_HEX >= 0x030C0000
28874  0, /*tp_watched*/
28875  #endif
28876  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
28877  0, /*tp_pypy_flags*/
28878  #endif
28879  };
28880  #endif
28881  static struct __pyx_vtabstruct_8PyClical_clifford __pyx_vtable_8PyClical_clifford;
28882 
28883  static PyObject *__pyx_tp_new_8PyClical_clifford(PyTypeObject *t, PyObject *a, PyObject *k) {
28884  struct __pyx_obj_8PyClical_clifford *p;
28885  PyObject *o;
28886  #if CYTHON_COMPILING_IN_LIMITED_API
28887  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
28888  o = alloc_func(t, 0);
28889  #else
28890  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
28891  o = (*t->tp_alloc)(t, 0);
28892  } else {
28893  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
28894  }
28895  if (unlikely(!o)) return 0;
28896  #endif
28897  p = ((struct __pyx_obj_8PyClical_clifford *)o);
28898  p->__pyx_vtab = __pyx_vtabptr_8PyClical_clifford;
28899  if (unlikely(__pyx_pw_8PyClical_8clifford_3__cinit__(o, a, k) < 0)) goto bad;
28900  return o;
28901  bad:
28902  Py_DECREF(o); o = 0;
28903  return NULL;
28904  }
28905 
28906  static void __pyx_tp_dealloc_8PyClical_clifford(PyObject *o) {
28907  #if CYTHON_USE_TP_FINALIZE
28908  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
28909  if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8PyClical_clifford) {
28910  if (PyObject_CallFinalizerFromDealloc(o)) return;
28911  }
28912  }
28913  #endif
28914  {
28915  PyObject *etype, *eval, *etb;
28916  PyErr_Fetch(&etype, &eval, &etb);
28917  __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
28918  __pyx_pw_8PyClical_8clifford_5__dealloc__(o);
28919  __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
28920  PyErr_Restore(etype, eval, etb);
28921  }
28922  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
28923  (*Py_TYPE(o)->tp_free)(o);
28924  #else
28925  {
28926  freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
28927  if (tp_free) tp_free(o);
28928  }
28929  #endif
28930  }
28931  static PyObject *__pyx_sq_item_8PyClical_clifford(PyObject *o, Py_ssize_t i) {
28932  PyObject *r;
28933  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
28934  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
28935  Py_DECREF(x);
28936  return r;
28937  }
28938 
28939  static CYTHON_INLINE PyObject *__pyx_nb_add_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
28940  binaryfunc slot;
28941 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
28942  slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
28943 #else
28944  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
28945 #endif
28946  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
28947 }
28948 static PyObject *__pyx_nb_add_8PyClical_clifford(PyObject *left, PyObject *right ) {
28949  int maybe_self_is_left, maybe_self_is_right = 0;
28950  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
28951 #if CYTHON_USE_TYPE_SLOTS
28952  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_8PyClical_clifford)
28953 #endif
28954  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
28955  if (maybe_self_is_left) {
28956  PyObject *res;
28957  res = __pyx_pw_8PyClical_8clifford_21__add__(left, right);
28958  if (res != Py_NotImplemented) return res;
28959  Py_DECREF(res);
28960  }
28961  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
28962 #if CYTHON_USE_TYPE_SLOTS
28963  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_8PyClical_clifford)
28964 #endif
28965  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
28966  if (maybe_self_is_right) {
28967  return __pyx_pw_8PyClical_8clifford_23__radd__(right, left);
28968  }
28969  return __Pyx_NewRef(Py_NotImplemented);
28970 }
28971 
28972 
28973 
28974  static CYTHON_INLINE PyObject *__pyx_nb_subtract_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
28975  binaryfunc slot;
28976 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
28977  slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
28978 #else
28979  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
28980 #endif
28981  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
28982 }
28983 static PyObject *__pyx_nb_subtract_8PyClical_clifford(PyObject *left, PyObject *right ) {
28984  int maybe_self_is_left, maybe_self_is_right = 0;
28985  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
28986 #if CYTHON_USE_TYPE_SLOTS
28987  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_8PyClical_clifford)
28988 #endif
28989  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
28990  if (maybe_self_is_left) {
28991  PyObject *res;
28992  res = __pyx_pw_8PyClical_8clifford_27__sub__(left, right);
28993  if (res != Py_NotImplemented) return res;
28994  Py_DECREF(res);
28995  }
28996  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
28997 #if CYTHON_USE_TYPE_SLOTS
28998  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_8PyClical_clifford)
28999 #endif
29000  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29001  if (maybe_self_is_right) {
29002  return __pyx_pw_8PyClical_8clifford_29__rsub__(right, left);
29003  }
29004  return __Pyx_NewRef(Py_NotImplemented);
29005 }
29006 
29007 
29008 
29009  static CYTHON_INLINE PyObject *__pyx_nb_multiply_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
29010  binaryfunc slot;
29011 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29012  slot = type->tp_as_number ? type->tp_as_number->nb_multiply : NULL;
29013 #else
29014  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_multiply);
29015 #endif
29016  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
29017 }
29018 static PyObject *__pyx_nb_multiply_8PyClical_clifford(PyObject *left, PyObject *right ) {
29019  int maybe_self_is_left, maybe_self_is_right = 0;
29020  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29021 #if CYTHON_USE_TYPE_SLOTS
29022  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_multiply == &__pyx_nb_multiply_8PyClical_clifford)
29023 #endif
29024  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29025  if (maybe_self_is_left) {
29026  PyObject *res;
29027  res = __pyx_pw_8PyClical_8clifford_33__mul__(left, right);
29028  if (res != Py_NotImplemented) return res;
29029  Py_DECREF(res);
29030  }
29031  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29032 #if CYTHON_USE_TYPE_SLOTS
29033  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_multiply == &__pyx_nb_multiply_8PyClical_clifford)
29034 #endif
29035  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29036  if (maybe_self_is_right) {
29037  return __pyx_pw_8PyClical_8clifford_35__rmul__(right, left);
29038  }
29039  return __Pyx_NewRef(Py_NotImplemented);
29040 }
29041 
29042 
29043 
29044  static CYTHON_INLINE PyObject *__pyx_nb_remainder_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
29045  binaryfunc slot;
29046 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29047  slot = type->tp_as_number ? type->tp_as_number->nb_remainder : NULL;
29048 #else
29049  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_remainder);
29050 #endif
29051  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
29052 }
29053 static PyObject *__pyx_nb_remainder_8PyClical_clifford(PyObject *left, PyObject *right ) {
29054  int maybe_self_is_left, maybe_self_is_right = 0;
29055  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29056 #if CYTHON_USE_TYPE_SLOTS
29057  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_remainder == &__pyx_nb_remainder_8PyClical_clifford)
29058 #endif
29059  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29060  if (maybe_self_is_left) {
29061  PyObject *res;
29062  res = __pyx_pw_8PyClical_8clifford_39__mod__(left, right);
29063  if (res != Py_NotImplemented) return res;
29064  Py_DECREF(res);
29065  }
29066  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29067 #if CYTHON_USE_TYPE_SLOTS
29068  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_remainder == &__pyx_nb_remainder_8PyClical_clifford)
29069 #endif
29070  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29071  if (maybe_self_is_right) {
29072  return __pyx_pw_8PyClical_8clifford_41__rmod__(right, left);
29073  }
29074  return __Pyx_NewRef(Py_NotImplemented);
29075 }
29076 
29077 
29078 
29079  static CYTHON_INLINE PyObject *__pyx_nb_power_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right , PyObject* extra_arg) {
29080  ternaryfunc slot;
29081 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29082  slot = type->tp_as_number ? type->tp_as_number->nb_power : NULL;
29083 #else
29084  slot = (ternaryfunc) PyType_GetSlot(type, Py_nb_power);
29085 #endif
29086  return slot ? slot(left, right , extra_arg) : __Pyx_NewRef(Py_NotImplemented);
29087 }
29088 static PyObject *__pyx_nb_power_8PyClical_clifford(PyObject *left, PyObject *right , PyObject* extra_arg) {
29089  int maybe_self_is_left, maybe_self_is_right = 0;
29090  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29091 #if CYTHON_USE_TYPE_SLOTS
29092  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_power == &__pyx_nb_power_8PyClical_clifford)
29093 #endif
29094  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29095  if (maybe_self_is_left) {
29096  PyObject *res;
29097  res = __pyx_pw_8PyClical_8clifford_69__pow__(left, right, extra_arg);
29098  if (res != Py_NotImplemented) return res;
29099  Py_DECREF(res);
29100  }
29101  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29102 #if CYTHON_USE_TYPE_SLOTS
29103  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_power == &__pyx_nb_power_8PyClical_clifford)
29104 #endif
29105  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29106  if (maybe_self_is_right) {
29107  return __pyx_nb_power_8PyClical_clifford_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_8PyClical_clifford, tp_base, PyTypeObject*), left, right , extra_arg);
29108  }
29109  return __Pyx_NewRef(Py_NotImplemented);
29110 }
29111 
29112 
29113 
29114  static CYTHON_INLINE PyObject *__pyx_nb_and_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
29115  binaryfunc slot;
29116 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29117  slot = type->tp_as_number ? type->tp_as_number->nb_and : NULL;
29118 #else
29119  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_and);
29120 #endif
29121  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
29122 }
29123 static PyObject *__pyx_nb_and_8PyClical_clifford(PyObject *left, PyObject *right ) {
29124  int maybe_self_is_left, maybe_self_is_right = 0;
29125  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29126 #if CYTHON_USE_TYPE_SLOTS
29127  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_and == &__pyx_nb_and_8PyClical_clifford)
29128 #endif
29129  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29130  if (maybe_self_is_left) {
29131  PyObject *res;
29132  res = __pyx_pw_8PyClical_8clifford_45__and__(left, right);
29133  if (res != Py_NotImplemented) return res;
29134  Py_DECREF(res);
29135  }
29136  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29137 #if CYTHON_USE_TYPE_SLOTS
29138  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_and == &__pyx_nb_and_8PyClical_clifford)
29139 #endif
29140  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29141  if (maybe_self_is_right) {
29142  return __pyx_pw_8PyClical_8clifford_47__rand__(right, left);
29143  }
29144  return __Pyx_NewRef(Py_NotImplemented);
29145 }
29146 
29147 
29148 
29149  static CYTHON_INLINE PyObject *__pyx_nb_xor_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
29150  binaryfunc slot;
29151 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29152  slot = type->tp_as_number ? type->tp_as_number->nb_xor : NULL;
29153 #else
29154  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_xor);
29155 #endif
29156  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
29157 }
29158 static PyObject *__pyx_nb_xor_8PyClical_clifford(PyObject *left, PyObject *right ) {
29159  int maybe_self_is_left, maybe_self_is_right = 0;
29160  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29161 #if CYTHON_USE_TYPE_SLOTS
29162  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_xor == &__pyx_nb_xor_8PyClical_clifford)
29163 #endif
29164  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29165  if (maybe_self_is_left) {
29166  PyObject *res;
29167  res = __pyx_pw_8PyClical_8clifford_51__xor__(left, right);
29168  if (res != Py_NotImplemented) return res;
29169  Py_DECREF(res);
29170  }
29171  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29172 #if CYTHON_USE_TYPE_SLOTS
29173  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_xor == &__pyx_nb_xor_8PyClical_clifford)
29174 #endif
29175  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29176  if (maybe_self_is_right) {
29177  return __pyx_pw_8PyClical_8clifford_53__rxor__(right, left);
29178  }
29179  return __Pyx_NewRef(Py_NotImplemented);
29180 }
29181 
29182 
29183 
29184  static CYTHON_INLINE PyObject *__pyx_nb_or_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
29185  binaryfunc slot;
29186 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29187  slot = type->tp_as_number ? type->tp_as_number->nb_or : NULL;
29188 #else
29189  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_or);
29190 #endif
29191  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
29192 }
29193 static PyObject *__pyx_nb_or_8PyClical_clifford(PyObject *left, PyObject *right ) {
29194  int maybe_self_is_left, maybe_self_is_right = 0;
29195  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29196 #if CYTHON_USE_TYPE_SLOTS
29197  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_or == &__pyx_nb_or_8PyClical_clifford)
29198 #endif
29199  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29200  if (maybe_self_is_left) {
29201  PyObject *res;
29202  res = __pyx_pw_8PyClical_8clifford_65__or__(left, right);
29203  if (res != Py_NotImplemented) return res;
29204  Py_DECREF(res);
29205  }
29206  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29207 #if CYTHON_USE_TYPE_SLOTS
29208  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_or == &__pyx_nb_or_8PyClical_clifford)
29209 #endif
29210  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29211  if (maybe_self_is_right) {
29212  return __pyx_nb_or_8PyClical_clifford_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_8PyClical_clifford, tp_base, PyTypeObject*), left, right );
29213  }
29214  return __Pyx_NewRef(Py_NotImplemented);
29215 }
29216 
29217 
29218 
29219  static CYTHON_INLINE PyObject *__pyx_nb_true_divide_8PyClical_clifford_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
29220  binaryfunc slot;
29221 #if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
29222  slot = type->tp_as_number ? type->tp_as_number->nb_true_divide : NULL;
29223 #else
29224  slot = (binaryfunc) PyType_GetSlot(type, Py_nb_true_divide);
29225 #endif
29226  return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
29227 }
29228 static PyObject *__pyx_nb_true_divide_8PyClical_clifford(PyObject *left, PyObject *right ) {
29229  int maybe_self_is_left, maybe_self_is_right = 0;
29230  maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
29231 #if CYTHON_USE_TYPE_SLOTS
29232  || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_8PyClical_clifford)
29233 #endif
29234  || __Pyx_TypeCheck(left, __pyx_ptype_8PyClical_clifford);
29235  if (maybe_self_is_left) {
29236  PyObject *res;
29237  res = __pyx_pw_8PyClical_8clifford_57__truediv__(left, right);
29238  if (res != Py_NotImplemented) return res;
29239  Py_DECREF(res);
29240  }
29241  maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
29242 #if CYTHON_USE_TYPE_SLOTS
29243  || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_8PyClical_clifford)
29244 #endif
29245  || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_8PyClical_clifford);
29246  if (maybe_self_is_right) {
29247  return __pyx_pw_8PyClical_8clifford_59__rtruediv__(right, left);
29248  }
29249  return __Pyx_NewRef(Py_NotImplemented);
29250 }
29251 
29252 
29253 
29254  static PyObject *__pyx_specialmethod___pyx_pw_8PyClical_8clifford_109__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
29255  return __pyx_pw_8PyClical_8clifford_109__repr__(self);
29256  }
29257 
29258  static PyMethodDef __pyx_methods_8PyClical_clifford[] = {
29259  {"reframe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_11reframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_10reframe},
29260  {"__radd__", (PyCFunction)__pyx_pw_8PyClical_8clifford_23__radd__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_22__radd__},
29261  {"__rsub__", (PyCFunction)__pyx_pw_8PyClical_8clifford_29__rsub__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_28__rsub__},
29262  {"__rmul__", (PyCFunction)__pyx_pw_8PyClical_8clifford_35__rmul__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_34__rmul__},
29263  {"__rmod__", (PyCFunction)__pyx_pw_8PyClical_8clifford_41__rmod__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_40__rmod__},
29264  {"__rand__", (PyCFunction)__pyx_pw_8PyClical_8clifford_47__rand__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_46__rand__},
29265  {"__rxor__", (PyCFunction)__pyx_pw_8PyClical_8clifford_53__rxor__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_52__rxor__},
29266  {"__rtruediv__", (PyCFunction)__pyx_pw_8PyClical_8clifford_59__rtruediv__, METH_O|METH_COEXIST, __pyx_doc_8PyClical_8clifford_58__rtruediv__},
29267  {"inv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_63inv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_62inv},
29268  {"pow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_71pow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_70pow},
29269  {"outer_pow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_73outer_pow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_72outer_pow},
29270  {"scalar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_77scalar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_76scalar},
29271  {"pure", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_79pure, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_78pure},
29272  {"even", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_81even, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_80even},
29273  {"odd", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_83odd, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_82odd},
29274  {"vector_part", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_85vector_part, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_84vector_part},
29275  {"involute", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_87involute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_86involute},
29276  {"reverse", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_89reverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_88reverse},
29277  {"conj", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_91conj, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_90conj},
29278  {"quad", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_93quad, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_92quad},
29279  {"norm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_95norm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_94norm},
29280  {"abs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_97abs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_96abs},
29281  {"max_abs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_99max_abs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_98max_abs},
29282  {"truncated", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_101truncated, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_100truncated},
29283  {"isinf", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_103isinf, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_102isinf},
29284  {"isnan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_105isnan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_104isnan},
29285  {"frame", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_107frame, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_106frame},
29286  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_8PyClical_8clifford_109__repr__, METH_NOARGS|METH_COEXIST, __pyx_doc_8PyClical_8clifford_108__repr__},
29287  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_113__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
29288  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8PyClical_8clifford_115__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
29289  {0, 0, 0, 0}
29290  };
29291  #if CYTHON_USE_TYPE_SPECS
29292  static PyType_Slot __pyx_type_8PyClical_clifford_slots[] = {
29293  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8PyClical_clifford},
29294  {Py_tp_repr, (void *)__pyx_pw_8PyClical_8clifford_109__repr__},
29295  {Py_nb_add, (void *)__pyx_nb_add_8PyClical_clifford},
29296  {Py_nb_subtract, (void *)__pyx_nb_subtract_8PyClical_clifford},
29297  {Py_nb_multiply, (void *)__pyx_nb_multiply_8PyClical_clifford},
29298  {Py_nb_remainder, (void *)__pyx_nb_remainder_8PyClical_clifford},
29299  {Py_nb_power, (void *)__pyx_nb_power_8PyClical_clifford},
29300  {Py_nb_negative, (void *)__pyx_pw_8PyClical_8clifford_17__neg__},
29301  {Py_nb_positive, (void *)__pyx_pw_8PyClical_8clifford_19__pos__},
29302  {Py_nb_and, (void *)__pyx_nb_and_8PyClical_clifford},
29303  {Py_nb_xor, (void *)__pyx_nb_xor_8PyClical_clifford},
29304  {Py_nb_or, (void *)__pyx_nb_or_8PyClical_clifford},
29305  {Py_nb_inplace_add, (void *)__pyx_pw_8PyClical_8clifford_25__iadd__},
29306  {Py_nb_inplace_subtract, (void *)__pyx_pw_8PyClical_8clifford_31__isub__},
29307  {Py_nb_inplace_multiply, (void *)__pyx_pw_8PyClical_8clifford_37__imul__},
29308  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
29309  {Py_nb_inplace_divide, (void *)__pyx_pw_8PyClical_8clifford_61__idiv__},
29310  #endif
29311  {Py_nb_inplace_remainder, (void *)__pyx_pw_8PyClical_8clifford_43__imod__},
29312  {Py_nb_inplace_and, (void *)__pyx_pw_8PyClical_8clifford_49__iand__},
29313  {Py_nb_inplace_xor, (void *)__pyx_pw_8PyClical_8clifford_55__ixor__},
29314  {Py_nb_inplace_or, (void *)__pyx_pw_8PyClical_8clifford_67__ior__},
29315  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_8PyClical_clifford},
29316  {Py_sq_item, (void *)__pyx_sq_item_8PyClical_clifford},
29317  {Py_sq_contains, (void *)__pyx_pw_8PyClical_8clifford_7__contains__},
29318  {Py_mp_subscript, (void *)__pyx_pw_8PyClical_8clifford_15__getitem__},
29319  {Py_tp_call, (void *)__pyx_pw_8PyClical_8clifford_75__call__},
29320  {Py_tp_str, (void *)__pyx_pw_8PyClical_8clifford_111__str__},
29321  {Py_tp_doc, (void *)PyDoc_STR("\n Python class clifford wraps C++ class Clifford.\n ")},
29322  {Py_tp_richcompare, (void *)__pyx_pw_8PyClical_8clifford_13__richcmp__},
29323  {Py_tp_iter, (void *)__pyx_pw_8PyClical_8clifford_9__iter__},
29324  {Py_tp_methods, (void *)__pyx_methods_8PyClical_clifford},
29325  {Py_tp_new, (void *)__pyx_tp_new_8PyClical_clifford},
29326  {0, 0},
29327  };
29328  static PyType_Spec __pyx_type_8PyClical_clifford_spec = {
29329  "PyClical.clifford",
29330  sizeof(struct __pyx_obj_8PyClical_clifford),
29331  0,
29332  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
29333  __pyx_type_8PyClical_clifford_slots,
29334  };
29335  #else
29336 
29337  static PyNumberMethods __pyx_tp_as_number_clifford = {
29338  __pyx_nb_add_8PyClical_clifford, /*nb_add*/
29339  __pyx_nb_subtract_8PyClical_clifford, /*nb_subtract*/
29340  __pyx_nb_multiply_8PyClical_clifford, /*nb_multiply*/
29341  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
29342  0, /*nb_divide*/
29343  #endif
29344  __pyx_nb_remainder_8PyClical_clifford, /*nb_remainder*/
29345  0, /*nb_divmod*/
29346  __pyx_nb_power_8PyClical_clifford, /*nb_power*/
29347  __pyx_pw_8PyClical_8clifford_17__neg__, /*nb_negative*/
29348  __pyx_pw_8PyClical_8clifford_19__pos__, /*nb_positive*/
29349  0, /*nb_absolute*/
29350  0, /*nb_bool*/
29351  0, /*nb_invert*/
29352  0, /*nb_lshift*/
29353  0, /*nb_rshift*/
29354  __pyx_nb_and_8PyClical_clifford, /*nb_and*/
29355  __pyx_nb_xor_8PyClical_clifford, /*nb_xor*/
29356  __pyx_nb_or_8PyClical_clifford, /*nb_or*/
29357  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
29358  0, /*nb_coerce*/
29359  #endif
29360  0, /*nb_int*/
29361  #if PY_MAJOR_VERSION < 3
29362  0, /*nb_long*/
29363  #else
29364  0, /*reserved*/
29365  #endif
29366  0, /*nb_float*/
29367  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
29368  0, /*nb_oct*/
29369  #endif
29370  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
29371  0, /*nb_hex*/
29372  #endif
29373  __pyx_pw_8PyClical_8clifford_25__iadd__, /*nb_inplace_add*/
29374  __pyx_pw_8PyClical_8clifford_31__isub__, /*nb_inplace_subtract*/
29375  __pyx_pw_8PyClical_8clifford_37__imul__, /*nb_inplace_multiply*/
29376  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
29377  __pyx_pw_8PyClical_8clifford_61__idiv__, /*nb_inplace_divide*/
29378  #endif
29379  __pyx_pw_8PyClical_8clifford_43__imod__, /*nb_inplace_remainder*/
29380  0, /*nb_inplace_power*/
29381  0, /*nb_inplace_lshift*/
29382  0, /*nb_inplace_rshift*/
29383  __pyx_pw_8PyClical_8clifford_49__iand__, /*nb_inplace_and*/
29384  __pyx_pw_8PyClical_8clifford_55__ixor__, /*nb_inplace_xor*/
29385  __pyx_pw_8PyClical_8clifford_67__ior__, /*nb_inplace_or*/
29386  0, /*nb_floor_divide*/
29387  __pyx_nb_true_divide_8PyClical_clifford, /*nb_true_divide*/
29388  0, /*nb_inplace_floor_divide*/
29389  0, /*nb_inplace_true_divide*/
29390  0, /*nb_index*/
29391  #if PY_VERSION_HEX >= 0x03050000
29392  0, /*nb_matrix_multiply*/
29393  #endif
29394  #if PY_VERSION_HEX >= 0x03050000
29395  0, /*nb_inplace_matrix_multiply*/
29396  #endif
29397  };
29398 
29399  static PySequenceMethods __pyx_tp_as_sequence_clifford = {
29400  0, /*sq_length*/
29401  0, /*sq_concat*/
29402  0, /*sq_repeat*/
29403  __pyx_sq_item_8PyClical_clifford, /*sq_item*/
29404  0, /*sq_slice*/
29405  0, /*sq_ass_item*/
29406  0, /*sq_ass_slice*/
29407  __pyx_pw_8PyClical_8clifford_7__contains__, /*sq_contains*/
29408  0, /*sq_inplace_concat*/
29409  0, /*sq_inplace_repeat*/
29410  };
29411 
29412  static PyMappingMethods __pyx_tp_as_mapping_clifford = {
29413  0, /*mp_length*/
29414  __pyx_pw_8PyClical_8clifford_15__getitem__, /*mp_subscript*/
29415  0, /*mp_ass_subscript*/
29416  };
29417 
29418  static PyTypeObject __pyx_type_8PyClical_clifford = {
29419  PyVarObject_HEAD_INIT(0, 0)
29420  "PyClical.""clifford", /*tp_name*/
29421  sizeof(struct __pyx_obj_8PyClical_clifford), /*tp_basicsize*/
29422  0, /*tp_itemsize*/
29423  __pyx_tp_dealloc_8PyClical_clifford, /*tp_dealloc*/
29424  #if PY_VERSION_HEX < 0x030800b4
29425  0, /*tp_print*/
29426  #endif
29427  #if PY_VERSION_HEX >= 0x030800b4
29428  0, /*tp_vectorcall_offset*/
29429  #endif
29430  0, /*tp_getattr*/
29431  0, /*tp_setattr*/
29432  #if PY_MAJOR_VERSION < 3
29433  0, /*tp_compare*/
29434  #endif
29435  #if PY_MAJOR_VERSION >= 3
29436  0, /*tp_as_async*/
29437  #endif
29438  __pyx_pw_8PyClical_8clifford_109__repr__, /*tp_repr*/
29439  &__pyx_tp_as_number_clifford, /*tp_as_number*/
29440  &__pyx_tp_as_sequence_clifford, /*tp_as_sequence*/
29441  &__pyx_tp_as_mapping_clifford, /*tp_as_mapping*/
29442  0, /*tp_hash*/
29443  __pyx_pw_8PyClical_8clifford_75__call__, /*tp_call*/
29444  __pyx_pw_8PyClical_8clifford_111__str__, /*tp_str*/
29445  0, /*tp_getattro*/
29446  0, /*tp_setattro*/
29447  0, /*tp_as_buffer*/
29448  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
29449  PyDoc_STR("\n Python class clifford wraps C++ class Clifford.\n "), /*tp_doc*/
29450  0, /*tp_traverse*/
29451  0, /*tp_clear*/
29452  __pyx_pw_8PyClical_8clifford_13__richcmp__, /*tp_richcompare*/
29453  0, /*tp_weaklistoffset*/
29454  __pyx_pw_8PyClical_8clifford_9__iter__, /*tp_iter*/
29455  0, /*tp_iternext*/
29456  __pyx_methods_8PyClical_clifford, /*tp_methods*/
29457  0, /*tp_members*/
29458  0, /*tp_getset*/
29459  0, /*tp_base*/
29460  0, /*tp_dict*/
29461  0, /*tp_descr_get*/
29462  0, /*tp_descr_set*/
29463  #if !CYTHON_USE_TYPE_SPECS
29464  0, /*tp_dictoffset*/
29465  #endif
29466  0, /*tp_init*/
29467  0, /*tp_alloc*/
29468  __pyx_tp_new_8PyClical_clifford, /*tp_new*/
29469  0, /*tp_free*/
29470  0, /*tp_is_gc*/
29471  0, /*tp_bases*/
29472  0, /*tp_mro*/
29473  0, /*tp_cache*/
29474  0, /*tp_subclasses*/
29475  0, /*tp_weaklist*/
29476  0, /*tp_del*/
29477  0, /*tp_version_tag*/
29478  #if PY_VERSION_HEX >= 0x030400a1
29479  #if CYTHON_USE_TP_FINALIZE
29480  0, /*tp_finalize*/
29481  #else
29482  NULL, /*tp_finalize*/
29483  #endif
29484  #endif
29485  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
29486  0, /*tp_vectorcall*/
29487  #endif
29488  #if __PYX_NEED_TP_PRINT_SLOT == 1
29489  0, /*tp_print*/
29490  #endif
29491  #if PY_VERSION_HEX >= 0x030C0000
29492  0, /*tp_watched*/
29493  #endif
29494  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
29495  0, /*tp_pypy_flags*/
29496  #endif
29497  };
29498  #endif
29499 
29500  static struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *__pyx_freelist_8PyClical___pyx_scope_struct____iter__[8];
29501  static int __pyx_freecount_8PyClical___pyx_scope_struct____iter__ = 0;
29502 
29503  static PyObject *__pyx_tp_new_8PyClical___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
29504  PyObject *o;
29505  #if CYTHON_COMPILING_IN_LIMITED_API
29506  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
29507  o = alloc_func(t, 0);
29508  #else
29509  #if CYTHON_COMPILING_IN_CPYTHON
29510  if (likely((int)(__pyx_freecount_8PyClical___pyx_scope_struct____iter__ > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__)))) {
29511  o = (PyObject*)__pyx_freelist_8PyClical___pyx_scope_struct____iter__[--__pyx_freecount_8PyClical___pyx_scope_struct____iter__];
29512  memset(o, 0, sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__));
29513  (void) PyObject_INIT(o, t);
29514  PyObject_GC_Track(o);
29515  } else
29516  #endif
29517  {
29518  o = (*t->tp_alloc)(t, 0);
29519  if (unlikely(!o)) return 0;
29520  }
29521  #endif
29522  return o;
29523  }
29524 
29525  static void __pyx_tp_dealloc_8PyClical___pyx_scope_struct____iter__(PyObject *o) {
29526  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *p = (struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o;
29527  #if CYTHON_USE_TP_FINALIZE
29528  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
29529  if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8PyClical___pyx_scope_struct____iter__) {
29530  if (PyObject_CallFinalizerFromDealloc(o)) return;
29531  }
29532  }
29533  #endif
29534  PyObject_GC_UnTrack(o);
29535  Py_CLEAR(p->__pyx_v_idx);
29536  Py_CLEAR(p->__pyx_v_self);
29537  Py_CLEAR(p->__pyx_t_0);
29538  #if CYTHON_COMPILING_IN_CPYTHON
29539  if (((int)(__pyx_freecount_8PyClical___pyx_scope_struct____iter__ < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__)))) {
29540  __pyx_freelist_8PyClical___pyx_scope_struct____iter__[__pyx_freecount_8PyClical___pyx_scope_struct____iter__++] = ((struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o);
29541  } else
29542  #endif
29543  {
29544  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
29545  (*Py_TYPE(o)->tp_free)(o);
29546  #else
29547  {
29548  freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
29549  if (tp_free) tp_free(o);
29550  }
29551  #endif
29552  }
29553  }
29554 
29555  static int __pyx_tp_traverse_8PyClical___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) {
29556  int e;
29557  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *p = (struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o;
29558  if (p->__pyx_v_idx) {
29559  e = (*v)(p->__pyx_v_idx, a); if (e) return e;
29560  }
29561  if (p->__pyx_v_self) {
29562  e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
29563  }
29564  if (p->__pyx_t_0) {
29565  e = (*v)(p->__pyx_t_0, a); if (e) return e;
29566  }
29567  return 0;
29568  }
29569  #if CYTHON_USE_TYPE_SPECS
29570  static PyType_Slot __pyx_type_8PyClical___pyx_scope_struct____iter___slots[] = {
29571  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8PyClical___pyx_scope_struct____iter__},
29572  {Py_tp_traverse, (void *)__pyx_tp_traverse_8PyClical___pyx_scope_struct____iter__},
29573  {Py_tp_new, (void *)__pyx_tp_new_8PyClical___pyx_scope_struct____iter__},
29574  {0, 0},
29575  };
29576  static PyType_Spec __pyx_type_8PyClical___pyx_scope_struct____iter___spec = {
29577  "PyClical.__pyx_scope_struct____iter__",
29578  sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__),
29579  0,
29580  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
29581  __pyx_type_8PyClical___pyx_scope_struct____iter___slots,
29582  };
29583  #else
29584 
29585  static PyTypeObject __pyx_type_8PyClical___pyx_scope_struct____iter__ = {
29586  PyVarObject_HEAD_INIT(0, 0)
29587  "PyClical.""__pyx_scope_struct____iter__", /*tp_name*/
29588  sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__), /*tp_basicsize*/
29589  0, /*tp_itemsize*/
29590  __pyx_tp_dealloc_8PyClical___pyx_scope_struct____iter__, /*tp_dealloc*/
29591  #if PY_VERSION_HEX < 0x030800b4
29592  0, /*tp_print*/
29593  #endif
29594  #if PY_VERSION_HEX >= 0x030800b4
29595  0, /*tp_vectorcall_offset*/
29596  #endif
29597  0, /*tp_getattr*/
29598  0, /*tp_setattr*/
29599  #if PY_MAJOR_VERSION < 3
29600  0, /*tp_compare*/
29601  #endif
29602  #if PY_MAJOR_VERSION >= 3
29603  0, /*tp_as_async*/
29604  #endif
29605  0, /*tp_repr*/
29606  0, /*tp_as_number*/
29607  0, /*tp_as_sequence*/
29608  0, /*tp_as_mapping*/
29609  0, /*tp_hash*/
29610  0, /*tp_call*/
29611  0, /*tp_str*/
29612  0, /*tp_getattro*/
29613  0, /*tp_setattro*/
29614  0, /*tp_as_buffer*/
29615  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
29616  0, /*tp_doc*/
29617  __pyx_tp_traverse_8PyClical___pyx_scope_struct____iter__, /*tp_traverse*/
29618  0, /*tp_clear*/
29619  0, /*tp_richcompare*/
29620  0, /*tp_weaklistoffset*/
29621  0, /*tp_iter*/
29622  0, /*tp_iternext*/
29623  0, /*tp_methods*/
29624  0, /*tp_members*/
29625  0, /*tp_getset*/
29626  0, /*tp_base*/
29627  0, /*tp_dict*/
29628  0, /*tp_descr_get*/
29629  0, /*tp_descr_set*/
29630  #if !CYTHON_USE_TYPE_SPECS
29631  0, /*tp_dictoffset*/
29632  #endif
29633  0, /*tp_init*/
29634  0, /*tp_alloc*/
29635  __pyx_tp_new_8PyClical___pyx_scope_struct____iter__, /*tp_new*/
29636  0, /*tp_free*/
29637  0, /*tp_is_gc*/
29638  0, /*tp_bases*/
29639  0, /*tp_mro*/
29640  0, /*tp_cache*/
29641  0, /*tp_subclasses*/
29642  0, /*tp_weaklist*/
29643  0, /*tp_del*/
29644  0, /*tp_version_tag*/
29645  #if PY_VERSION_HEX >= 0x030400a1
29646  #if CYTHON_USE_TP_FINALIZE
29647  0, /*tp_finalize*/
29648  #else
29649  NULL, /*tp_finalize*/
29650  #endif
29651  #endif
29652  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
29653  0, /*tp_vectorcall*/
29654  #endif
29655  #if __PYX_NEED_TP_PRINT_SLOT == 1
29656  0, /*tp_print*/
29657  #endif
29658  #if PY_VERSION_HEX >= 0x030C0000
29659  0, /*tp_watched*/
29660  #endif
29661  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
29662  0, /*tp_pypy_flags*/
29663  #endif
29664  };
29665  #endif
29666 
29667  static PyMethodDef __pyx_methods[] = {
29668  {0, 0, 0, 0}
29669  };
29670  #ifndef CYTHON_SMALL_CODE
29671 #if defined(__clang__)
29672  #define CYTHON_SMALL_CODE
29673 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
29674  #define CYTHON_SMALL_CODE __attribute__((cold))
29675 #else
29676  #define CYTHON_SMALL_CODE
29677 #endif
29678 #endif
29679 /* #### Code section: pystring_table ### */
29680 
29681 static int __Pyx_CreateStringTabAndInitStrings(void) {
29682  __Pyx_StringTabEntry __pyx_string_tab[] = {
29683  {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
29684  {&__pyx_kp_u_Abbreviation_for_clifford_index, __pyx_k_Abbreviation_for_clifford_index, sizeof(__pyx_k_Abbreviation_for_clifford_index), 0, 1, 0, 0},
29685  {&__pyx_kp_u_Abbreviation_for_index_set_q_p, __pyx_k_Abbreviation_for_index_set_q_p, sizeof(__pyx_k_Abbreviation_for_index_set_q_p), 0, 1, 0, 0},
29686  {&__pyx_kp_u_Absolute_value_of_multivector_m, __pyx_k_Absolute_value_of_multivector_m, sizeof(__pyx_k_Absolute_value_of_multivector_m), 0, 1, 0, 0},
29687  {&__pyx_kp_u_Absolute_value_square_root_of_n, __pyx_k_Absolute_value_square_root_of_n, sizeof(__pyx_k_Absolute_value_square_root_of_n), 0, 1, 0, 0},
29688  {&__pyx_kp_u_Cannot_initialize_clifford_objec, __pyx_k_Cannot_initialize_clifford_objec, sizeof(__pyx_k_Cannot_initialize_clifford_objec), 0, 1, 0, 0},
29689  {&__pyx_kp_u_Cannot_initialize_index_set_obje, __pyx_k_Cannot_initialize_index_set_obje, sizeof(__pyx_k_Cannot_initialize_index_set_obje), 0, 1, 0, 0},
29690  {&__pyx_kp_u_Cannot_reframe, __pyx_k_Cannot_reframe, sizeof(__pyx_k_Cannot_reframe), 0, 1, 0, 0},
29691  {&__pyx_kp_u_Cannot_take_vector_part_of, __pyx_k_Cannot_take_vector_part_of, sizeof(__pyx_k_Cannot_take_vector_part_of), 0, 1, 0, 0},
29692  {&__pyx_kp_u_Cardinality_Number_of_indices_i, __pyx_k_Cardinality_Number_of_indices_i, sizeof(__pyx_k_Cardinality_Number_of_indices_i), 0, 1, 0, 0},
29693  {&__pyx_kp_u_Check_if_a_multivector_contains, __pyx_k_Check_if_a_multivector_contains, sizeof(__pyx_k_Check_if_a_multivector_contains), 0, 1, 0, 0},
29694  {&__pyx_kp_u_Check_if_a_multivector_contains_2, __pyx_k_Check_if_a_multivector_contains_2, sizeof(__pyx_k_Check_if_a_multivector_contains_2), 0, 1, 0, 0},
29695  {&__pyx_kp_u_Conjugation_reverse_o_involute, __pyx_k_Conjugation_reverse_o_involute, sizeof(__pyx_k_Conjugation_reverse_o_involute), 0, 1, 0, 0},
29696  {&__pyx_kp_u_Conjugation_reverse_o_involute_2, __pyx_k_Conjugation_reverse_o_involute_2, sizeof(__pyx_k_Conjugation_reverse_o_involute_2), 0, 1, 0, 0},
29697  {&__pyx_kp_u_Contraction_print_2_clifford_2, __pyx_k_Contraction_print_2_clifford_2, sizeof(__pyx_k_Contraction_print_2_clifford_2), 0, 1, 0, 0},
29698  {&__pyx_kp_u_Contraction_print_clifford_1_cl, __pyx_k_Contraction_print_clifford_1_cl, sizeof(__pyx_k_Contraction_print_clifford_1_cl), 0, 1, 0, 0},
29699  {&__pyx_kp_u_Contraction_x_clifford_1_x_clif, __pyx_k_Contraction_x_clifford_1_x_clif, sizeof(__pyx_k_Contraction_x_clifford_1_x_clif), 0, 1, 0, 0},
29700  {&__pyx_kp_u_Convert_CGA3_null_vector_to_Euc, __pyx_k_Convert_CGA3_null_vector_to_Euc, sizeof(__pyx_k_Convert_CGA3_null_vector_to_Euc), 0, 1, 0, 0},
29701  {&__pyx_kp_u_Convert_CGA3_null_vector_to_sta, __pyx_k_Convert_CGA3_null_vector_to_sta, sizeof(__pyx_k_Convert_CGA3_null_vector_to_sta), 0, 1, 0, 0},
29702  {&__pyx_kp_u_Convert_Euclidean_3D_multivecto, __pyx_k_Convert_Euclidean_3D_multivecto, sizeof(__pyx_k_Convert_Euclidean_3D_multivecto), 0, 1, 0, 0},
29703  {&__pyx_kp_u_Copy_this_clifford_object_x_cli, __pyx_k_Copy_this_clifford_object_x_cli, sizeof(__pyx_k_Copy_this_clifford_object_x_cli), 0, 1, 0, 0},
29704  {&__pyx_kp_u_Copy_this_index_set_object_s_in, __pyx_k_Copy_this_index_set_object_s_in, sizeof(__pyx_k_Copy_this_index_set_object_s_in), 0, 1, 0, 0},
29705  {&__pyx_kp_u_Cosine_of_multivector_with_opti, __pyx_k_Cosine_of_multivector_with_opti, sizeof(__pyx_k_Cosine_of_multivector_with_opti), 0, 1, 0, 0},
29706  {&__pyx_kp_u_Even_part_of_multivector_sum_of, __pyx_k_Even_part_of_multivector_sum_of, sizeof(__pyx_k_Even_part_of_multivector_sum_of), 0, 1, 0, 0},
29707  {&__pyx_kp_u_Even_part_of_multivector_sum_of_2, __pyx_k_Even_part_of_multivector_sum_of_2, sizeof(__pyx_k_Even_part_of_multivector_sum_of_2), 0, 1, 0, 0},
29708  {&__pyx_kp_u_Exponential_of_multivector_x_cl, __pyx_k_Exponential_of_multivector_x_cl, sizeof(__pyx_k_Exponential_of_multivector_x_cl), 0, 1, 0, 0},
29709  {&__pyx_kp_u_Geometric_difference_print_1_cl, __pyx_k_Geometric_difference_print_1_cl, sizeof(__pyx_k_Geometric_difference_print_1_cl), 0, 1, 0, 0},
29710  {&__pyx_kp_u_Geometric_difference_print_clif, __pyx_k_Geometric_difference_print_clif, sizeof(__pyx_k_Geometric_difference_print_clif), 0, 1, 0, 0},
29711  {&__pyx_kp_u_Geometric_difference_x_clifford, __pyx_k_Geometric_difference_x_clifford, sizeof(__pyx_k_Geometric_difference_x_clifford), 0, 1, 0, 0},
29712  {&__pyx_kp_u_Geometric_multiplicative_invers, __pyx_k_Geometric_multiplicative_invers, sizeof(__pyx_k_Geometric_multiplicative_invers), 0, 1, 0, 0},
29713  {&__pyx_kp_u_Geometric_multiplicative_invers_2, __pyx_k_Geometric_multiplicative_invers_2, sizeof(__pyx_k_Geometric_multiplicative_invers_2), 0, 1, 0, 0},
29714  {&__pyx_kp_u_Geometric_product_print_2_cliff, __pyx_k_Geometric_product_print_2_cliff, sizeof(__pyx_k_Geometric_product_print_2_cliff), 0, 1, 0, 0},
29715  {&__pyx_kp_u_Geometric_product_print_cliffor, __pyx_k_Geometric_product_print_cliffor, sizeof(__pyx_k_Geometric_product_print_cliffor), 0, 1, 0, 0},
29716  {&__pyx_kp_u_Geometric_product_x_clifford_2, __pyx_k_Geometric_product_x_clifford_2, sizeof(__pyx_k_Geometric_product_x_clifford_2), 0, 1, 0, 0},
29717  {&__pyx_kp_u_Geometric_quotient_print_2_clif, __pyx_k_Geometric_quotient_print_2_clif, sizeof(__pyx_k_Geometric_quotient_print_2_clif), 0, 1, 0, 0},
29718  {&__pyx_kp_u_Geometric_quotient_print_cliffo, __pyx_k_Geometric_quotient_print_cliffo, sizeof(__pyx_k_Geometric_quotient_print_cliffo), 0, 1, 0, 0},
29719  {&__pyx_kp_u_Geometric_quotient_x_clifford_1, __pyx_k_Geometric_quotient_x_clifford_1, sizeof(__pyx_k_Geometric_quotient_x_clifford_1), 0, 1, 0, 0},
29720  {&__pyx_kp_u_Geometric_sum_print_1_clifford, __pyx_k_Geometric_sum_print_1_clifford, sizeof(__pyx_k_Geometric_sum_print_1_clifford), 0, 1, 0, 0},
29721  {&__pyx_kp_u_Geometric_sum_print_clifford_1, __pyx_k_Geometric_sum_print_clifford_1, sizeof(__pyx_k_Geometric_sum_print_clifford_1), 0, 1, 0, 0},
29722  {&__pyx_kp_u_Geometric_sum_x_clifford_1_x_cl, __pyx_k_Geometric_sum_x_clifford_1_x_cl, sizeof(__pyx_k_Geometric_sum_x_clifford_1_x_cl), 0, 1, 0, 0},
29723  {&__pyx_kp_u_Get_the_value_of_an_index_set_o, __pyx_k_Get_the_value_of_an_index_set_o, sizeof(__pyx_k_Get_the_value_of_an_index_set_o), 0, 1, 0, 0},
29724  {&__pyx_kp_u_Hyperbolic_cosine_of_multivecto, __pyx_k_Hyperbolic_cosine_of_multivecto, sizeof(__pyx_k_Hyperbolic_cosine_of_multivecto), 0, 1, 0, 0},
29725  {&__pyx_kp_u_Hyperbolic_sine_of_multivector, __pyx_k_Hyperbolic_sine_of_multivector, sizeof(__pyx_k_Hyperbolic_sine_of_multivector), 0, 1, 0, 0},
29726  {&__pyx_kp_u_Hyperbolic_tangent_of_multivect, __pyx_k_Hyperbolic_tangent_of_multivect, sizeof(__pyx_k_Hyperbolic_tangent_of_multivect), 0, 1, 0, 0},
29727  {&__pyx_kp_u_Imaginary_part_deprecated_alway, __pyx_k_Imaginary_part_deprecated_alway, sizeof(__pyx_k_Imaginary_part_deprecated_alway), 0, 1, 0, 0},
29728  {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
29729  {&__pyx_kp_u_Inner_product_print_2_clifford, __pyx_k_Inner_product_print_2_clifford, sizeof(__pyx_k_Inner_product_print_2_clifford), 0, 1, 0, 0},
29730  {&__pyx_kp_u_Inner_product_print_clifford_1, __pyx_k_Inner_product_print_clifford_1, sizeof(__pyx_k_Inner_product_print_clifford_1), 0, 1, 0, 0},
29731  {&__pyx_kp_u_Inner_product_x_clifford_1_x_cl, __pyx_k_Inner_product_x_clifford_1_x_cl, sizeof(__pyx_k_Inner_product_x_clifford_1_x_cl), 0, 1, 0, 0},
29732  {&__pyx_kp_u_Integer_power_of_multivector_ob, __pyx_k_Integer_power_of_multivector_ob, sizeof(__pyx_k_Integer_power_of_multivector_ob), 0, 1, 0, 0},
29733  {&__pyx_n_s_Integral, __pyx_k_Integral, sizeof(__pyx_k_Integral), 0, 0, 1, 1},
29734  {&__pyx_kp_u_Inverse_cosine_of_multivector_w, __pyx_k_Inverse_cosine_of_multivector_w, sizeof(__pyx_k_Inverse_cosine_of_multivector_w), 0, 1, 0, 0},
29735  {&__pyx_kp_u_Inverse_hyperbolic_cosine_of_mu, __pyx_k_Inverse_hyperbolic_cosine_of_mu, sizeof(__pyx_k_Inverse_hyperbolic_cosine_of_mu), 0, 1, 0, 0},
29736  {&__pyx_kp_u_Inverse_hyperbolic_sine_of_mult, __pyx_k_Inverse_hyperbolic_sine_of_mult, sizeof(__pyx_k_Inverse_hyperbolic_sine_of_mult), 0, 1, 0, 0},
29737  {&__pyx_kp_u_Inverse_hyperbolic_tangent_of_m, __pyx_k_Inverse_hyperbolic_tangent_of_m, sizeof(__pyx_k_Inverse_hyperbolic_tangent_of_m), 0, 1, 0, 0},
29738  {&__pyx_kp_u_Inverse_sine_of_multivector_wit, __pyx_k_Inverse_sine_of_multivector_wit, sizeof(__pyx_k_Inverse_sine_of_multivector_wit), 0, 1, 0, 0},
29739  {&__pyx_kp_u_Inverse_tangent_of_multivector, __pyx_k_Inverse_tangent_of_multivector, sizeof(__pyx_k_Inverse_tangent_of_multivector), 0, 1, 0, 0},
29740  {&__pyx_kp_u_Iterate_over_the_indices_of_an, __pyx_k_Iterate_over_the_indices_of_an, sizeof(__pyx_k_Iterate_over_the_indices_of_an), 0, 1, 0, 0},
29741  {&__pyx_kp_u_Main_involution_each_i_is_repla, __pyx_k_Main_involution_each_i_is_repla, sizeof(__pyx_k_Main_involution_each_i_is_repla), 0, 1, 0, 0},
29742  {&__pyx_kp_u_Main_involution_each_i_is_repla_2, __pyx_k_Main_involution_each_i_is_repla_2, sizeof(__pyx_k_Main_involution_each_i_is_repla_2), 0, 1, 0, 0},
29743  {&__pyx_kp_u_Maximum_absolute_value_of_coord, __pyx_k_Maximum_absolute_value_of_coord, sizeof(__pyx_k_Maximum_absolute_value_of_coord), 0, 1, 0, 0},
29744  {&__pyx_kp_u_Maximum_member_index_set_1_1_2, __pyx_k_Maximum_member_index_set_1_1_2, sizeof(__pyx_k_Maximum_member_index_set_1_1_2), 0, 1, 0, 0},
29745  {&__pyx_kp_u_Maximum_of_absolute_values_of_c, __pyx_k_Maximum_of_absolute_values_of_c, sizeof(__pyx_k_Maximum_of_absolute_values_of_c), 0, 1, 0, 0},
29746  {&__pyx_kp_u_Maximum_positive_index_or_0_if, __pyx_k_Maximum_positive_index_or_0_if, sizeof(__pyx_k_Maximum_positive_index_or_0_if), 0, 1, 0, 0},
29747  {&__pyx_kp_u_Minimum_member_index_set_1_1_2, __pyx_k_Minimum_member_index_set_1_1_2, sizeof(__pyx_k_Minimum_member_index_set_1_1_2), 0, 1, 0, 0},
29748  {&__pyx_kp_u_Minimum_negative_index_or_0_if, __pyx_k_Minimum_negative_index_or_0_if, sizeof(__pyx_k_Minimum_negative_index_or_0_if), 0, 1, 0, 0},
29749  {&__pyx_kp_u_Natural_logarithm_of_multivecto, __pyx_k_Natural_logarithm_of_multivecto, sizeof(__pyx_k_Natural_logarithm_of_multivecto), 0, 1, 0, 0},
29750  {&__pyx_kp_u_Norm_sum_of_squares_of_coordina, __pyx_k_Norm_sum_of_squares_of_coordina, sizeof(__pyx_k_Norm_sum_of_squares_of_coordina), 0, 1, 0, 0},
29751  {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1},
29752  {&__pyx_kp_u_Not_applicable, __pyx_k_Not_applicable, sizeof(__pyx_k_Not_applicable), 0, 1, 0, 0},
29753  {&__pyx_kp_u_Not_applicable_for_a_in_cliffor, __pyx_k_Not_applicable_for_a_in_cliffor, sizeof(__pyx_k_Not_applicable_for_a_in_cliffor), 0, 1, 0, 0},
29754  {&__pyx_kp_u_Number_of_negative_indices_incl, __pyx_k_Number_of_negative_indices_incl, sizeof(__pyx_k_Number_of_negative_indices_incl), 0, 1, 0, 0},
29755  {&__pyx_kp_u_Number_of_positive_indices_incl, __pyx_k_Number_of_positive_indices_incl, sizeof(__pyx_k_Number_of_positive_indices_incl), 0, 1, 0, 0},
29756  {&__pyx_kp_u_Odd_part_of_multivector_sum_of, __pyx_k_Odd_part_of_multivector_sum_of, sizeof(__pyx_k_Odd_part_of_multivector_sum_of), 0, 1, 0, 0},
29757  {&__pyx_kp_u_Odd_part_of_multivector_sum_of_2, __pyx_k_Odd_part_of_multivector_sum_of_2, sizeof(__pyx_k_Odd_part_of_multivector_sum_of_2), 0, 1, 0, 0},
29758  {&__pyx_kp_u_Outer_product_power_of_multivec, __pyx_k_Outer_product_power_of_multivec, sizeof(__pyx_k_Outer_product_power_of_multivec), 0, 1, 0, 0},
29759  {&__pyx_kp_u_Outer_product_power_x_clifford, __pyx_k_Outer_product_power_x_clifford, sizeof(__pyx_k_Outer_product_power_x_clifford), 0, 1, 0, 0},
29760  {&__pyx_kp_u_Outer_product_print_2_clifford, __pyx_k_Outer_product_print_2_clifford, sizeof(__pyx_k_Outer_product_print_2_clifford), 0, 1, 0, 0},
29761  {&__pyx_kp_u_Outer_product_print_clifford_1, __pyx_k_Outer_product_print_clifford_1, sizeof(__pyx_k_Outer_product_print_clifford_1), 0, 1, 0, 0},
29762  {&__pyx_kp_u_Outer_product_x_clifford_1_x_cl, __pyx_k_Outer_product_x_clifford_1_x_cl, sizeof(__pyx_k_Outer_product_x_clifford_1_x_cl), 0, 1, 0, 0},
29763  {&__pyx_kp_u_Power_self_to_the_m_x_clifford, __pyx_k_Power_self_to_the_m_x_clifford, sizeof(__pyx_k_Power_self_to_the_m_x_clifford), 0, 1, 0, 0},
29764  {&__pyx_kp_u_Power_self_to_the_m_x_clifford_2, __pyx_k_Power_self_to_the_m_x_clifford_2, sizeof(__pyx_k_Power_self_to_the_m_x_clifford_2), 0, 1, 0, 0},
29765  {&__pyx_kp_u_Pure_grade_vector_part_print_cl, __pyx_k_Pure_grade_vector_part_print_cl, sizeof(__pyx_k_Pure_grade_vector_part_print_cl), 0, 1, 0, 0},
29766  {&__pyx_kp_u_Pure_part_print_clifford_1_1_1, __pyx_k_Pure_part_print_clifford_1_1_1, sizeof(__pyx_k_Pure_part_print_clifford_1_1_1), 0, 1, 0, 0},
29767  {&__pyx_kp_u_Pure_part_print_pure_clifford_1, __pyx_k_Pure_part_print_pure_clifford_1, sizeof(__pyx_k_Pure_part_print_pure_clifford_1), 0, 1, 0, 0},
29768  {&__pyx_kp_u_Put_self_into_a_larger_frame_co, __pyx_k_Put_self_into_a_larger_frame_co, sizeof(__pyx_k_Put_self_into_a_larger_frame_co), 0, 1, 0, 0},
29769  {&__pyx_n_s_PyClical, __pyx_k_PyClical, sizeof(__pyx_k_PyClical), 0, 0, 1, 1},
29770  {&__pyx_kp_s_PyClical_pyx, __pyx_k_PyClical_pyx, sizeof(__pyx_k_PyClical_pyx), 0, 0, 1, 0},
29771  {&__pyx_kp_u_Quadratic_form_rev_x_x_0_print, __pyx_k_Quadratic_form_rev_x_x_0_print, sizeof(__pyx_k_Quadratic_form_rev_x_x_0_print), 0, 1, 0, 0},
29772  {&__pyx_kp_u_Quadratic_form_rev_x_x_0_print_2, __pyx_k_Quadratic_form_rev_x_x_0_print_2, sizeof(__pyx_k_Quadratic_form_rev_x_x_0_print_2), 0, 1, 0, 0},
29773  {&__pyx_kp_u_Quadratic_norm_error_tolerance, __pyx_k_Quadratic_norm_error_tolerance, sizeof(__pyx_k_Quadratic_norm_error_tolerance), 0, 1, 0, 0},
29774  {&__pyx_kp_u_Random_multivector_within_a_fra, __pyx_k_Random_multivector_within_a_fra, sizeof(__pyx_k_Random_multivector_within_a_fra), 0, 1, 0, 0},
29775  {&__pyx_n_s_Real, __pyx_k_Real, sizeof(__pyx_k_Real), 0, 0, 1, 1},
29776  {&__pyx_kp_u_Real_part_synonym_for_scalar_pa, __pyx_k_Real_part_synonym_for_scalar_pa, sizeof(__pyx_k_Real_part_synonym_for_scalar_pa), 0, 1, 0, 0},
29777  {&__pyx_kp_u_Relative_or_absolute_error_usin, __pyx_k_Relative_or_absolute_error_usin, sizeof(__pyx_k_Relative_or_absolute_error_usin), 0, 1, 0, 0},
29778  {&__pyx_kp_u_Remove_all_terms_of_self_with_r, __pyx_k_Remove_all_terms_of_self_with_r, sizeof(__pyx_k_Remove_all_terms_of_self_with_r), 0, 1, 0, 0},
29779  {&__pyx_kp_u_Reversion_eg_1_2_2_1_print_reve, __pyx_k_Reversion_eg_1_2_2_1_print_reve, sizeof(__pyx_k_Reversion_eg_1_2_2_1_print_reve), 0, 1, 0, 0},
29780  {&__pyx_kp_u_Reversion_eg_clifford_1_cliffor, __pyx_k_Reversion_eg_clifford_1_cliffor, sizeof(__pyx_k_Reversion_eg_clifford_1_cliffor), 0, 1, 0, 0},
29781  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
29782  {&__pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc, __pyx_k_Scalar_part_clifford_1_1_1_2_sc, sizeof(__pyx_k_Scalar_part_clifford_1_1_1_2_sc), 0, 1, 0, 0},
29783  {&__pyx_kp_u_Scalar_part_scalar_clifford_1_1, __pyx_k_Scalar_part_scalar_clifford_1_1, sizeof(__pyx_k_Scalar_part_scalar_clifford_1_1), 0, 1, 0, 0},
29784  {&__pyx_n_s_Sequence, __pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 0, 1, 1},
29785  {&__pyx_kp_u_Set_complement_not_print_index, __pyx_k_Set_complement_not_print_index, sizeof(__pyx_k_Set_complement_not_print_index), 0, 1, 0, 0},
29786  {&__pyx_kp_u_Set_intersection_and_print_inde, __pyx_k_Set_intersection_and_print_inde, sizeof(__pyx_k_Set_intersection_and_print_inde), 0, 1, 0, 0},
29787  {&__pyx_kp_u_Set_intersection_and_x_index_se, __pyx_k_Set_intersection_and_x_index_se, sizeof(__pyx_k_Set_intersection_and_x_index_se), 0, 1, 0, 0},
29788  {&__pyx_kp_u_Set_the_value_of_an_index_set_o, __pyx_k_Set_the_value_of_an_index_set_o, sizeof(__pyx_k_Set_the_value_of_an_index_set_o), 0, 1, 0, 0},
29789  {&__pyx_kp_u_Set_union_or_print_index_set_1, __pyx_k_Set_union_or_print_index_set_1, sizeof(__pyx_k_Set_union_or_print_index_set_1), 0, 1, 0, 0},
29790  {&__pyx_kp_u_Set_union_or_x_index_set_1_x_in, __pyx_k_Set_union_or_x_index_set_1_x_in, sizeof(__pyx_k_Set_union_or_x_index_set_1_x_in), 0, 1, 0, 0},
29791  {&__pyx_kp_u_Sign_of_geometric_product_of_tw, __pyx_k_Sign_of_geometric_product_of_tw, sizeof(__pyx_k_Sign_of_geometric_product_of_tw), 0, 1, 0, 0},
29792  {&__pyx_kp_u_Sign_of_geometric_square_of_a_C, __pyx_k_Sign_of_geometric_square_of_a_C, sizeof(__pyx_k_Sign_of_geometric_square_of_a_C), 0, 1, 0, 0},
29793  {&__pyx_kp_u_Sine_of_multivector_with_option, __pyx_k_Sine_of_multivector_with_option, sizeof(__pyx_k_Sine_of_multivector_with_option), 0, 1, 0, 0},
29794  {&__pyx_kp_u_Square_root_of_1_which_commutes, __pyx_k_Square_root_of_1_which_commutes, sizeof(__pyx_k_Square_root_of_1_which_commutes), 0, 1, 0, 0},
29795  {&__pyx_kp_u_Square_root_of_multivector_with, __pyx_k_Square_root_of_multivector_with, sizeof(__pyx_k_Square_root_of_multivector_with), 0, 1, 0, 0},
29796  {&__pyx_kp_u_Subalgebra_generated_by_all_gen, __pyx_k_Subalgebra_generated_by_all_gen, sizeof(__pyx_k_Subalgebra_generated_by_all_gen), 0, 1, 0, 0},
29797  {&__pyx_kp_u_Subscripting_map_from_index_set, __pyx_k_Subscripting_map_from_index_set, sizeof(__pyx_k_Subscripting_map_from_index_set), 0, 1, 0, 0},
29798  {&__pyx_kp_u_Symmetric_set_difference_exclus, __pyx_k_Symmetric_set_difference_exclus, sizeof(__pyx_k_Symmetric_set_difference_exclus), 0, 1, 0, 0},
29799  {&__pyx_kp_u_Symmetric_set_difference_exclus_2, __pyx_k_Symmetric_set_difference_exclus_2, sizeof(__pyx_k_Symmetric_set_difference_exclus_2), 0, 1, 0, 0},
29800  {&__pyx_kp_u_Tangent_of_multivector_with_opt, __pyx_k_Tangent_of_multivector_with_opt, sizeof(__pyx_k_Tangent_of_multivector_with_opt), 0, 1, 0, 0},
29801  {&__pyx_kp_u_Test_for_approximate_equality_o, __pyx_k_Test_for_approximate_equality_o, sizeof(__pyx_k_Test_for_approximate_equality_o), 0, 1, 0, 0},
29802  {&__pyx_kp_u_Tests_for_functions_that_Doctes, __pyx_k_Tests_for_functions_that_Doctes, sizeof(__pyx_k_Tests_for_functions_that_Doctes), 0, 1, 0, 0},
29803  {&__pyx_kp_u_Tests_for_functions_that_Doctes_2, __pyx_k_Tests_for_functions_that_Doctes_2, sizeof(__pyx_k_Tests_for_functions_that_Doctes_2), 0, 1, 0, 0},
29804  {&__pyx_kp_u_The_informal_string_representat, __pyx_k_The_informal_string_representat, sizeof(__pyx_k_The_informal_string_representat), 0, 1, 0, 0},
29805  {&__pyx_kp_u_The_informal_string_representat_2, __pyx_k_The_informal_string_representat_2, sizeof(__pyx_k_The_informal_string_representat_2), 0, 1, 0, 0},
29806  {&__pyx_kp_u_The_official_string_representat, __pyx_k_The_official_string_representat, sizeof(__pyx_k_The_official_string_representat), 0, 1, 0, 0},
29807  {&__pyx_kp_u_The_official_string_representat_2, __pyx_k_The_official_string_representat_2, sizeof(__pyx_k_The_official_string_representat_2), 0, 1, 0, 0},
29808  {&__pyx_kp_u_This_comparison_operator_is_not, __pyx_k_This_comparison_operator_is_not, sizeof(__pyx_k_This_comparison_operator_is_not), 0, 1, 0, 0},
29809  {&__pyx_kp_u_Transform_left_hand_side_using, __pyx_k_Transform_left_hand_side_using, sizeof(__pyx_k_Transform_left_hand_side_using), 0, 1, 0, 0},
29810  {&__pyx_kp_u_Transform_left_hand_side_using_2, __pyx_k_Transform_left_hand_side_using_2, sizeof(__pyx_k_Transform_left_hand_side_using_2), 0, 1, 0, 0},
29811  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
29812  {&__pyx_kp_u_UTF_8, __pyx_k_UTF_8, sizeof(__pyx_k_UTF_8), 0, 1, 0, 0},
29813  {&__pyx_kp_u_Unary_print_clifford_1_1, __pyx_k_Unary_print_clifford_1_1, sizeof(__pyx_k_Unary_print_clifford_1_1), 0, 1, 0, 0},
29814  {&__pyx_kp_u_Unary_print_clifford_1_1_2, __pyx_k_Unary_print_clifford_1_1_2, sizeof(__pyx_k_Unary_print_clifford_1_1_2), 0, 1, 0, 0},
29815  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
29816  {&__pyx_kp_u_Vector_part_of_multivector_as_a, __pyx_k_Vector_part_of_multivector_as_a, sizeof(__pyx_k_Vector_part_of_multivector_as_a), 0, 1, 0, 0},
29817  {&__pyx_n_s__113, __pyx_k__113, sizeof(__pyx_k__113), 0, 0, 1, 1},
29818  {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0},
29819  {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
29820  {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0},
29821  {&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0},
29822  {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0},
29823  {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0},
29824  {&__pyx_n_s__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 0, 1, 1},
29825  {&__pyx_n_s_abc, __pyx_k_abc, sizeof(__pyx_k_abc), 0, 0, 1, 1},
29826  {&__pyx_n_s_abs, __pyx_k_abs, sizeof(__pyx_k_abs), 0, 0, 1, 1},
29827  {&__pyx_kp_u_abs_line_1585, __pyx_k_abs_line_1585, sizeof(__pyx_k_abs_line_1585), 0, 1, 0, 0},
29828  {&__pyx_n_s_acos, __pyx_k_acos, sizeof(__pyx_k_acos), 0, 0, 1, 1},
29829  {&__pyx_kp_u_acos_line_1731, __pyx_k_acos_line_1731, sizeof(__pyx_k_acos_line_1731), 0, 1, 0, 0},
29830  {&__pyx_n_s_acosh, __pyx_k_acosh, sizeof(__pyx_k_acosh), 0, 0, 1, 1},
29831  {&__pyx_kp_u_acosh_line_1768, __pyx_k_acosh_line_1768, sizeof(__pyx_k_acosh_line_1768), 0, 1, 0, 0},
29832  {&__pyx_n_s_agc3, __pyx_k_agc3, sizeof(__pyx_k_agc3), 0, 0, 1, 1},
29833  {&__pyx_kp_u_agc3_line_1956, __pyx_k_agc3_line_1956, sizeof(__pyx_k_agc3_line_1956), 0, 1, 0, 0},
29834  {&__pyx_n_s_approx_equal, __pyx_k_approx_equal, sizeof(__pyx_k_approx_equal), 0, 0, 1, 1},
29835  {&__pyx_kp_u_approx_equal_line_1422, __pyx_k_approx_equal_line_1422, sizeof(__pyx_k_approx_equal_line_1422), 0, 1, 0, 0},
29836  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
29837  {&__pyx_kp_u_as_frame, __pyx_k_as_frame, sizeof(__pyx_k_as_frame), 0, 1, 0, 0},
29838  {&__pyx_n_s_asin, __pyx_k_asin, sizeof(__pyx_k_asin), 0, 0, 1, 1},
29839  {&__pyx_kp_u_asin_line_1810, __pyx_k_asin_line_1810, sizeof(__pyx_k_asin_line_1810), 0, 1, 0, 0},
29840  {&__pyx_n_s_asinh, __pyx_k_asinh, sizeof(__pyx_k_asinh), 0, 0, 1, 1},
29841  {&__pyx_kp_u_asinh_line_1845, __pyx_k_asinh_line_1845, sizeof(__pyx_k_asinh_line_1845), 0, 1, 0, 0},
29842  {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
29843  {&__pyx_n_s_atan, __pyx_k_atan, sizeof(__pyx_k_atan), 0, 0, 1, 1},
29844  {&__pyx_kp_u_atan_line_1881, __pyx_k_atan_line_1881, sizeof(__pyx_k_atan_line_1881), 0, 1, 0, 0},
29845  {&__pyx_n_s_atanh, __pyx_k_atanh, sizeof(__pyx_k_atanh), 0, 0, 1, 1},
29846  {&__pyx_kp_u_atanh_line_1910, __pyx_k_atanh_line_1910, sizeof(__pyx_k_atanh_line_1910), 0, 1, 0, 0},
29847  {&__pyx_n_s_cga3, __pyx_k_cga3, sizeof(__pyx_k_cga3), 0, 0, 1, 1},
29848  {&__pyx_kp_u_cga3_line_1936, __pyx_k_cga3_line_1936, sizeof(__pyx_k_cga3_line_1936), 0, 1, 0, 0},
29849  {&__pyx_n_s_cga3std, __pyx_k_cga3std, sizeof(__pyx_k_cga3std), 0, 0, 1, 1},
29850  {&__pyx_kp_u_cga3std_line_1945, __pyx_k_cga3std_line_1945, sizeof(__pyx_k_cga3std_line_1945), 0, 1, 0, 0},
29851  {&__pyx_n_s_cl, __pyx_k_cl, sizeof(__pyx_k_cl), 0, 0, 1, 1},
29852  {&__pyx_n_s_clifford, __pyx_k_clifford, sizeof(__pyx_k_clifford), 0, 0, 1, 1},
29853  {&__pyx_kp_u_clifford___add___line_740, __pyx_k_clifford___add___line_740, sizeof(__pyx_k_clifford___add___line_740), 0, 1, 0, 0},
29854  {&__pyx_kp_u_clifford___and___line_872, __pyx_k_clifford___and___line_872, sizeof(__pyx_k_clifford___and___line_872), 0, 1, 0, 0},
29855  {&__pyx_kp_u_clifford___call___line_1083, __pyx_k_clifford___call___line_1083, sizeof(__pyx_k_clifford___call___line_1083), 0, 1, 0, 0},
29856  {&__pyx_kp_u_clifford___getitem___line_707, __pyx_k_clifford___getitem___line_707, sizeof(__pyx_k_clifford___getitem___line_707), 0, 1, 0, 0},
29857  {&__pyx_kp_u_clifford___iadd___line_760, __pyx_k_clifford___iadd___line_760, sizeof(__pyx_k_clifford___iadd___line_760), 0, 1, 0, 0},
29858  {&__pyx_kp_u_clifford___iand___line_896, __pyx_k_clifford___iand___line_896, sizeof(__pyx_k_clifford___iand___line_896), 0, 1, 0, 0},
29859  {&__pyx_kp_u_clifford___idiv___line_974, __pyx_k_clifford___idiv___line_974, sizeof(__pyx_k_clifford___idiv___line_974), 0, 1, 0, 0},
29860  {&__pyx_kp_u_clifford___imod___line_857, __pyx_k_clifford___imod___line_857, sizeof(__pyx_k_clifford___imod___line_857), 0, 1, 0, 0},
29861  {&__pyx_kp_u_clifford___imul___line_820, __pyx_k_clifford___imul___line_820, sizeof(__pyx_k_clifford___imul___line_820), 0, 1, 0, 0},
29862  {&__pyx_kp_u_clifford___ior___line_1013, __pyx_k_clifford___ior___line_1013, sizeof(__pyx_k_clifford___ior___line_1013), 0, 1, 0, 0},
29863  {&__pyx_kp_u_clifford___isub___line_789, __pyx_k_clifford___isub___line_789, sizeof(__pyx_k_clifford___isub___line_789), 0, 1, 0, 0},
29864  {&__pyx_kp_u_clifford___iter___line_638, __pyx_k_clifford___iter___line_638, sizeof(__pyx_k_clifford___iter___line_638), 0, 1, 0, 0},
29865  {&__pyx_kp_u_clifford___ixor___line_935, __pyx_k_clifford___ixor___line_935, sizeof(__pyx_k_clifford___ixor___line_935), 0, 1, 0, 0},
29866  {&__pyx_kp_u_clifford___mod___line_833, __pyx_k_clifford___mod___line_833, sizeof(__pyx_k_clifford___mod___line_833), 0, 1, 0, 0},
29867  {&__pyx_kp_u_clifford___mul___line_798, __pyx_k_clifford___mul___line_798, sizeof(__pyx_k_clifford___mul___line_798), 0, 1, 0, 0},
29868  {&__pyx_kp_u_clifford___neg___line_722, __pyx_k_clifford___neg___line_722, sizeof(__pyx_k_clifford___neg___line_722), 0, 1, 0, 0},
29869  {&__pyx_kp_u_clifford___or___line_1002, __pyx_k_clifford___or___line_1002, sizeof(__pyx_k_clifford___or___line_1002), 0, 1, 0, 0},
29870  {&__pyx_kp_u_clifford___pos___line_731, __pyx_k_clifford___pos___line_731, sizeof(__pyx_k_clifford___pos___line_731), 0, 1, 0, 0},
29871  {&__pyx_kp_u_clifford___pow___line_1024, __pyx_k_clifford___pow___line_1024, sizeof(__pyx_k_clifford___pow___line_1024), 0, 1, 0, 0},
29872  {&__pyx_kp_u_clifford___radd___line_751, __pyx_k_clifford___radd___line_751, sizeof(__pyx_k_clifford___radd___line_751), 0, 1, 0, 0},
29873  {&__pyx_kp_u_clifford___rand___line_887, __pyx_k_clifford___rand___line_887, sizeof(__pyx_k_clifford___rand___line_887), 0, 1, 0, 0},
29874  {&__pyx_n_s_clifford___reduce_cython, __pyx_k_clifford___reduce_cython, sizeof(__pyx_k_clifford___reduce_cython), 0, 0, 1, 1},
29875  {&__pyx_kp_u_clifford___repr___line_1298, __pyx_k_clifford___repr___line_1298, sizeof(__pyx_k_clifford___repr___line_1298), 0, 1, 0, 0},
29876  {&__pyx_kp_u_clifford___rmod___line_848, __pyx_k_clifford___rmod___line_848, sizeof(__pyx_k_clifford___rmod___line_848), 0, 1, 0, 0},
29877  {&__pyx_kp_u_clifford___rmul___line_811, __pyx_k_clifford___rmul___line_811, sizeof(__pyx_k_clifford___rmul___line_811), 0, 1, 0, 0},
29878  {&__pyx_kp_u_clifford___rsub___line_780, __pyx_k_clifford___rsub___line_780, sizeof(__pyx_k_clifford___rsub___line_780), 0, 1, 0, 0},
29879  {&__pyx_kp_u_clifford___rtruediv___line_965, __pyx_k_clifford___rtruediv___line_965, sizeof(__pyx_k_clifford___rtruediv___line_965), 0, 1, 0, 0},
29880  {&__pyx_kp_u_clifford___rxor___line_926, __pyx_k_clifford___rxor___line_926, sizeof(__pyx_k_clifford___rxor___line_926), 0, 1, 0, 0},
29881  {&__pyx_n_s_clifford___setstate_cython, __pyx_k_clifford___setstate_cython, sizeof(__pyx_k_clifford___setstate_cython), 0, 0, 1, 1},
29882  {&__pyx_kp_u_clifford___str___line_1307, __pyx_k_clifford___str___line_1307, sizeof(__pyx_k_clifford___str___line_1307), 0, 1, 0, 0},
29883  {&__pyx_kp_u_clifford___sub___line_769, __pyx_k_clifford___sub___line_769, sizeof(__pyx_k_clifford___sub___line_769), 0, 1, 0, 0},
29884  {&__pyx_kp_u_clifford___truediv___line_950, __pyx_k_clifford___truediv___line_950, sizeof(__pyx_k_clifford___truediv___line_950), 0, 1, 0, 0},
29885  {&__pyx_kp_u_clifford___xor___line_911, __pyx_k_clifford___xor___line_911, sizeof(__pyx_k_clifford___xor___line_911), 0, 1, 0, 0},
29886  {&__pyx_n_s_clifford_abs, __pyx_k_clifford_abs, sizeof(__pyx_k_clifford_abs), 0, 0, 1, 1},
29887  {&__pyx_kp_u_clifford_abs_line_1238, __pyx_k_clifford_abs_line_1238, sizeof(__pyx_k_clifford_abs_line_1238), 0, 1, 0, 0},
29888  {&__pyx_n_s_clifford_conj, __pyx_k_clifford_conj, sizeof(__pyx_k_clifford_conj), 0, 0, 1, 1},
29889  {&__pyx_kp_u_clifford_conj_line_1201, __pyx_k_clifford_conj_line_1201, sizeof(__pyx_k_clifford_conj_line_1201), 0, 1, 0, 0},
29890  {&__pyx_n_s_clifford_copy, __pyx_k_clifford_copy, sizeof(__pyx_k_clifford_copy), 0, 0, 1, 1},
29891  {&__pyx_kp_u_clifford_copy_line_556, __pyx_k_clifford_copy_line_556, sizeof(__pyx_k_clifford_copy_line_556), 0, 1, 0, 0},
29892  {&__pyx_n_s_clifford_even, __pyx_k_clifford_even, sizeof(__pyx_k_clifford_even), 0, 0, 1, 1},
29893  {&__pyx_kp_u_clifford_even_line_1124, __pyx_k_clifford_even_line_1124, sizeof(__pyx_k_clifford_even_line_1124), 0, 1, 0, 0},
29894  {&__pyx_n_s_clifford_frame, __pyx_k_clifford_frame, sizeof(__pyx_k_clifford_frame), 0, 0, 1, 1},
29895  {&__pyx_kp_u_clifford_frame_line_1287, __pyx_k_clifford_frame_line_1287, sizeof(__pyx_k_clifford_frame_line_1287), 0, 1, 0, 0},
29896  {&__pyx_n_s_clifford_hidden_doctests, __pyx_k_clifford_hidden_doctests, sizeof(__pyx_k_clifford_hidden_doctests), 0, 0, 1, 1},
29897  {&__pyx_kp_u_clifford_hidden_doctests_line_13, __pyx_k_clifford_hidden_doctests_line_13, sizeof(__pyx_k_clifford_hidden_doctests_line_13), 0, 1, 0, 0},
29898  {&__pyx_n_s_clifford_inv, __pyx_k_clifford_inv, sizeof(__pyx_k_clifford_inv), 0, 0, 1, 1},
29899  {&__pyx_kp_u_clifford_inv_line_989, __pyx_k_clifford_inv_line_989, sizeof(__pyx_k_clifford_inv_line_989), 0, 1, 0, 0},
29900  {&__pyx_n_s_clifford_involute, __pyx_k_clifford_involute, sizeof(__pyx_k_clifford_involute), 0, 0, 1, 1},
29901  {&__pyx_kp_u_clifford_involute_line_1170, __pyx_k_clifford_involute_line_1170, sizeof(__pyx_k_clifford_involute_line_1170), 0, 1, 0, 0},
29902  {&__pyx_n_s_clifford_isinf, __pyx_k_clifford_isinf, sizeof(__pyx_k_clifford_isinf), 0, 0, 1, 1},
29903  {&__pyx_kp_u_clifford_isinf_line_1269, __pyx_k_clifford_isinf_line_1269, sizeof(__pyx_k_clifford_isinf_line_1269), 0, 1, 0, 0},
29904  {&__pyx_n_s_clifford_isnan, __pyx_k_clifford_isnan, sizeof(__pyx_k_clifford_isnan), 0, 0, 1, 1},
29905  {&__pyx_kp_u_clifford_isnan_line_1278, __pyx_k_clifford_isnan_line_1278, sizeof(__pyx_k_clifford_isnan_line_1278), 0, 1, 0, 0},
29906  {&__pyx_n_s_clifford_max_abs, __pyx_k_clifford_max_abs, sizeof(__pyx_k_clifford_max_abs), 0, 0, 1, 1},
29907  {&__pyx_kp_u_clifford_max_abs_line_1247, __pyx_k_clifford_max_abs_line_1247, sizeof(__pyx_k_clifford_max_abs_line_1247), 0, 1, 0, 0},
29908  {&__pyx_n_s_clifford_norm, __pyx_k_clifford_norm, sizeof(__pyx_k_clifford_norm), 0, 0, 1, 1},
29909  {&__pyx_kp_u_clifford_norm_line_1227, __pyx_k_clifford_norm_line_1227, sizeof(__pyx_k_clifford_norm_line_1227), 0, 1, 0, 0},
29910  {&__pyx_n_s_clifford_odd, __pyx_k_clifford_odd, sizeof(__pyx_k_clifford_odd), 0, 0, 1, 1},
29911  {&__pyx_kp_u_clifford_odd_line_1133, __pyx_k_clifford_odd_line_1133, sizeof(__pyx_k_clifford_odd_line_1133), 0, 1, 0, 0},
29912  {&__pyx_n_s_clifford_outer_pow, __pyx_k_clifford_outer_pow, sizeof(__pyx_k_clifford_outer_pow), 0, 0, 1, 1},
29913  {&__pyx_kp_u_clifford_outer_pow_line_1067, __pyx_k_clifford_outer_pow_line_1067, sizeof(__pyx_k_clifford_outer_pow_line_1067), 0, 1, 0, 0},
29914  {&__pyx_n_s_clifford_pow, __pyx_k_clifford_pow, sizeof(__pyx_k_clifford_pow), 0, 0, 1, 1},
29915  {&__pyx_kp_u_clifford_pow_line_1043, __pyx_k_clifford_pow_line_1043, sizeof(__pyx_k_clifford_pow_line_1043), 0, 1, 0, 0},
29916  {&__pyx_n_s_clifford_pure, __pyx_k_clifford_pure, sizeof(__pyx_k_clifford_pure), 0, 0, 1, 1},
29917  {&__pyx_kp_u_clifford_pure_line_1113, __pyx_k_clifford_pure_line_1113, sizeof(__pyx_k_clifford_pure_line_1113), 0, 1, 0, 0},
29918  {&__pyx_n_s_clifford_quad, __pyx_k_clifford_quad, sizeof(__pyx_k_clifford_quad), 0, 0, 1, 1},
29919  {&__pyx_kp_u_clifford_quad_line_1216, __pyx_k_clifford_quad_line_1216, sizeof(__pyx_k_clifford_quad_line_1216), 0, 1, 0, 0},
29920  {&__pyx_n_s_clifford_reframe, __pyx_k_clifford_reframe, sizeof(__pyx_k_clifford_reframe), 0, 0, 1, 1},
29921  {&__pyx_kp_u_clifford_reframe_line_649, __pyx_k_clifford_reframe_line_649, sizeof(__pyx_k_clifford_reframe_line_649), 0, 1, 0, 0},
29922  {&__pyx_n_s_clifford_reverse, __pyx_k_clifford_reverse, sizeof(__pyx_k_clifford_reverse), 0, 0, 1, 1},
29923  {&__pyx_kp_u_clifford_reverse_line_1186, __pyx_k_clifford_reverse_line_1186, sizeof(__pyx_k_clifford_reverse_line_1186), 0, 1, 0, 0},
29924  {&__pyx_n_s_clifford_scalar, __pyx_k_clifford_scalar, sizeof(__pyx_k_clifford_scalar), 0, 0, 1, 1},
29925  {&__pyx_kp_u_clifford_scalar_line_1102, __pyx_k_clifford_scalar_line_1102, sizeof(__pyx_k_clifford_scalar_line_1102), 0, 1, 0, 0},
29926  {&__pyx_n_s_clifford_truncated, __pyx_k_clifford_truncated, sizeof(__pyx_k_clifford_truncated), 0, 0, 1, 1},
29927  {&__pyx_kp_u_clifford_truncated_line_1258, __pyx_k_clifford_truncated_line_1258, sizeof(__pyx_k_clifford_truncated_line_1258), 0, 1, 0, 0},
29928  {&__pyx_n_s_clifford_vector_part, __pyx_k_clifford_vector_part, sizeof(__pyx_k_clifford_vector_part), 0, 0, 1, 1},
29929  {&__pyx_kp_u_clifford_vector_part_line_1142, __pyx_k_clifford_vector_part_line_1142, sizeof(__pyx_k_clifford_vector_part_line_1142), 0, 1, 0, 0},
29930  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
29931  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
29932  {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
29933  {&__pyx_n_s_compare, __pyx_k_compare, sizeof(__pyx_k_compare), 0, 0, 1, 1},
29934  {&__pyx_kp_u_compare_line_492, __pyx_k_compare_line_492, sizeof(__pyx_k_compare_line_492), 0, 1, 0, 0},
29935  {&__pyx_n_s_complexifier, __pyx_k_complexifier, sizeof(__pyx_k_complexifier), 0, 0, 1, 1},
29936  {&__pyx_kp_u_complexifier_line_1639, __pyx_k_complexifier_line_1639, sizeof(__pyx_k_complexifier_line_1639), 0, 1, 0, 0},
29937  {&__pyx_n_s_conj, __pyx_k_conj, sizeof(__pyx_k_conj), 0, 0, 1, 1},
29938  {&__pyx_kp_u_conj_line_1548, __pyx_k_conj_line_1548, sizeof(__pyx_k_conj_line_1548), 0, 1, 0, 0},
29939  {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
29940  {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1},
29941  {&__pyx_kp_u_cos_line_1714, __pyx_k_cos_line_1714, sizeof(__pyx_k_cos_line_1714), 0, 1, 0, 0},
29942  {&__pyx_n_s_cosh, __pyx_k_cosh, sizeof(__pyx_k_cosh), 0, 0, 1, 1},
29943  {&__pyx_kp_u_cosh_line_1752, __pyx_k_cosh_line_1752, sizeof(__pyx_k_cosh_line_1752), 0, 1, 0, 0},
29944  {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
29945  {&__pyx_n_s_count_neg, __pyx_k_count_neg, sizeof(__pyx_k_count_neg), 0, 0, 1, 1},
29946  {&__pyx_n_s_count_pos, __pyx_k_count_pos, sizeof(__pyx_k_count_pos), 0, 0, 1, 1},
29947  {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
29948  {&__pyx_n_s_doctest, __pyx_k_doctest, sizeof(__pyx_k_doctest), 0, 0, 1, 1},
29949  {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1},
29950  {&__pyx_kp_u_e_line_1999, __pyx_k_e_line_1999, sizeof(__pyx_k_e_line_1999), 0, 1, 0, 0},
29951  {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
29952  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
29953  {&__pyx_n_s_err, __pyx_k_err, sizeof(__pyx_k_err), 0, 0, 1, 1},
29954  {&__pyx_n_s_error_msg_prefix, __pyx_k_error_msg_prefix, sizeof(__pyx_k_error_msg_prefix), 0, 0, 1, 1},
29955  {&__pyx_n_s_error_squared, __pyx_k_error_squared, sizeof(__pyx_k_error_squared), 0, 0, 1, 1},
29956  {&__pyx_kp_u_error_squared_line_1409, __pyx_k_error_squared_line_1409, sizeof(__pyx_k_error_squared_line_1409), 0, 1, 0, 0},
29957  {&__pyx_n_s_error_squared_tol, __pyx_k_error_squared_tol, sizeof(__pyx_k_error_squared_tol), 0, 0, 1, 1},
29958  {&__pyx_kp_u_error_squared_tol_line_1400, __pyx_k_error_squared_tol_line_1400, sizeof(__pyx_k_error_squared_tol_line_1400), 0, 1, 0, 0},
29959  {&__pyx_n_s_even, __pyx_k_even, sizeof(__pyx_k_even), 0, 0, 1, 1},
29960  {&__pyx_kp_u_even_line_1500, __pyx_k_even_line_1500, sizeof(__pyx_k_even_line_1500), 0, 1, 0, 0},
29961  {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1},
29962  {&__pyx_kp_u_exp_line_1677, __pyx_k_exp_line_1677, sizeof(__pyx_k_exp_line_1677), 0, 1, 0, 0},
29963  {&__pyx_n_s_fill, __pyx_k_fill, sizeof(__pyx_k_fill), 0, 0, 1, 1},
29964  {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1},
29965  {&__pyx_n_s_frm, __pyx_k_frm, sizeof(__pyx_k_frm), 0, 0, 1, 1},
29966  {&__pyx_kp_u_from, __pyx_k_from, sizeof(__pyx_k_from), 0, 1, 0, 0},
29967  {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
29968  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
29969  {&__pyx_n_s_grade, __pyx_k_grade, sizeof(__pyx_k_grade), 0, 0, 1, 1},
29970  {&__pyx_n_s_hash_fn, __pyx_k_hash_fn, sizeof(__pyx_k_hash_fn), 0, 0, 1, 1},
29971  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
29972  {&__pyx_n_s_imag, __pyx_k_imag, sizeof(__pyx_k_imag), 0, 0, 1, 1},
29973  {&__pyx_kp_u_imag_line_1478, __pyx_k_imag_line_1478, sizeof(__pyx_k_imag_line_1478), 0, 1, 0, 0},
29974  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
29975  {&__pyx_n_s_index_set, __pyx_k_index_set, sizeof(__pyx_k_index_set), 0, 0, 1, 1},
29976  {&__pyx_kp_u_index_set___and___line_271, __pyx_k_index_set___and___line_271, sizeof(__pyx_k_index_set___and___line_271), 0, 1, 0, 0},
29977  {&__pyx_kp_u_index_set___getitem___line_191, __pyx_k_index_set___getitem___line_191, sizeof(__pyx_k_index_set___getitem___line_191), 0, 1, 0, 0},
29978  {&__pyx_kp_u_index_set___iand___line_282, __pyx_k_index_set___iand___line_282, sizeof(__pyx_k_index_set___iand___line_282), 0, 1, 0, 0},
29979  {&__pyx_kp_u_index_set___invert___line_240, __pyx_k_index_set___invert___line_240, sizeof(__pyx_k_index_set___invert___line_240), 0, 1, 0, 0},
29980  {&__pyx_kp_u_index_set___ior___line_304, __pyx_k_index_set___ior___line_304, sizeof(__pyx_k_index_set___ior___line_304), 0, 1, 0, 0},
29981  {&__pyx_n_s_index_set___iter, __pyx_k_index_set___iter, sizeof(__pyx_k_index_set___iter), 0, 0, 1, 1},
29982  {&__pyx_kp_u_index_set___iter___line_229, __pyx_k_index_set___iter___line_229, sizeof(__pyx_k_index_set___iter___line_229), 0, 1, 0, 0},
29983  {&__pyx_kp_u_index_set___ixor___line_260, __pyx_k_index_set___ixor___line_260, sizeof(__pyx_k_index_set___ixor___line_260), 0, 1, 0, 0},
29984  {&__pyx_kp_u_index_set___or___line_293, __pyx_k_index_set___or___line_293, sizeof(__pyx_k_index_set___or___line_293), 0, 1, 0, 0},
29985  {&__pyx_n_s_index_set___reduce_cython, __pyx_k_index_set___reduce_cython, sizeof(__pyx_k_index_set___reduce_cython), 0, 0, 1, 1},
29986  {&__pyx_kp_u_index_set___repr___line_384, __pyx_k_index_set___repr___line_384, sizeof(__pyx_k_index_set___repr___line_384), 0, 1, 0, 0},
29987  {&__pyx_kp_u_index_set___setitem___line_179, __pyx_k_index_set___setitem___line_179, sizeof(__pyx_k_index_set___setitem___line_179), 0, 1, 0, 0},
29988  {&__pyx_n_s_index_set___setstate_cython, __pyx_k_index_set___setstate_cython, sizeof(__pyx_k_index_set___setstate_cython), 0, 0, 1, 1},
29989  {&__pyx_kp_u_index_set___str___line_395, __pyx_k_index_set___str___line_395, sizeof(__pyx_k_index_set___str___line_395), 0, 1, 0, 0},
29990  {&__pyx_kp_u_index_set___xor___line_249, __pyx_k_index_set___xor___line_249, sizeof(__pyx_k_index_set___xor___line_249), 0, 1, 0, 0},
29991  {&__pyx_n_s_index_set_copy, __pyx_k_index_set_copy, sizeof(__pyx_k_index_set_copy), 0, 0, 1, 1},
29992  {&__pyx_kp_u_index_set_copy_line_65, __pyx_k_index_set_copy_line_65, sizeof(__pyx_k_index_set_copy_line_65), 0, 1, 0, 0},
29993  {&__pyx_n_s_index_set_count, __pyx_k_index_set_count, sizeof(__pyx_k_index_set_count), 0, 0, 1, 1},
29994  {&__pyx_kp_u_index_set_count_line_315, __pyx_k_index_set_count_line_315, sizeof(__pyx_k_index_set_count_line_315), 0, 1, 0, 0},
29995  {&__pyx_n_s_index_set_count_neg, __pyx_k_index_set_count_neg, sizeof(__pyx_k_index_set_count_neg), 0, 0, 1, 1},
29996  {&__pyx_kp_u_index_set_count_neg_line_324, __pyx_k_index_set_count_neg_line_324, sizeof(__pyx_k_index_set_count_neg_line_324), 0, 1, 0, 0},
29997  {&__pyx_n_s_index_set_count_pos, __pyx_k_index_set_count_pos, sizeof(__pyx_k_index_set_count_pos), 0, 0, 1, 1},
29998  {&__pyx_kp_u_index_set_count_pos_line_333, __pyx_k_index_set_count_pos_line_333, sizeof(__pyx_k_index_set_count_pos_line_333), 0, 1, 0, 0},
29999  {&__pyx_n_s_index_set_hash_fn, __pyx_k_index_set_hash_fn, sizeof(__pyx_k_index_set_hash_fn), 0, 0, 1, 1},
30000  {&__pyx_n_s_index_set_hidden_doctests, __pyx_k_index_set_hidden_doctests, sizeof(__pyx_k_index_set_hidden_doctests), 0, 0, 1, 1},
30001  {&__pyx_kp_u_index_set_hidden_doctests_line_4, __pyx_k_index_set_hidden_doctests_line_4, sizeof(__pyx_k_index_set_hidden_doctests_line_4), 0, 1, 0, 0},
30002  {&__pyx_n_s_index_set_max, __pyx_k_index_set_max, sizeof(__pyx_k_index_set_max), 0, 0, 1, 1},
30003  {&__pyx_kp_u_index_set_max_line_351, __pyx_k_index_set_max_line_351, sizeof(__pyx_k_index_set_max_line_351), 0, 1, 0, 0},
30004  {&__pyx_n_s_index_set_min, __pyx_k_index_set_min, sizeof(__pyx_k_index_set_min), 0, 0, 1, 1},
30005  {&__pyx_kp_u_index_set_min_line_342, __pyx_k_index_set_min_line_342, sizeof(__pyx_k_index_set_min_line_342), 0, 1, 0, 0},
30006  {&__pyx_n_s_index_set_sign_of_mult, __pyx_k_index_set_sign_of_mult, sizeof(__pyx_k_index_set_sign_of_mult), 0, 0, 1, 1},
30007  {&__pyx_kp_u_index_set_sign_of_mult_line_366, __pyx_k_index_set_sign_of_mult_line_366, sizeof(__pyx_k_index_set_sign_of_mult_line_366), 0, 1, 0, 0},
30008  {&__pyx_n_s_index_set_sign_of_square, __pyx_k_index_set_sign_of_square, sizeof(__pyx_k_index_set_sign_of_square), 0, 0, 1, 1},
30009  {&__pyx_kp_u_index_set_sign_of_square_line_37, __pyx_k_index_set_sign_of_square_line_37, sizeof(__pyx_k_index_set_sign_of_square_line_37), 0, 1, 0, 0},
30010  {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
30011  {&__pyx_n_s_inv, __pyx_k_inv, sizeof(__pyx_k_inv), 0, 0, 1, 1},
30012  {&__pyx_kp_u_inv_line_1441, __pyx_k_inv_line_1441, sizeof(__pyx_k_inv_line_1441), 0, 1, 0, 0},
30013  {&__pyx_kp_u_invalid, __pyx_k_invalid, sizeof(__pyx_k_invalid), 0, 1, 0, 0},
30014  {&__pyx_kp_u_invalid_string, __pyx_k_invalid_string, sizeof(__pyx_k_invalid_string), 0, 1, 0, 0},
30015  {&__pyx_n_s_involute, __pyx_k_involute, sizeof(__pyx_k_involute), 0, 0, 1, 1},
30016  {&__pyx_kp_u_involute_line_1518, __pyx_k_involute_line_1518, sizeof(__pyx_k_involute_line_1518), 0, 1, 0, 0},
30017  {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
30018  {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
30019  {&__pyx_n_s_isinf, __pyx_k_isinf, sizeof(__pyx_k_isinf), 0, 0, 1, 1},
30020  {&__pyx_n_s_isnan, __pyx_k_isnan, sizeof(__pyx_k_isnan), 0, 0, 1, 1},
30021  {&__pyx_n_s_ist, __pyx_k_ist, sizeof(__pyx_k_ist), 0, 0, 1, 1},
30022  {&__pyx_n_s_istpq, __pyx_k_istpq, sizeof(__pyx_k_istpq), 0, 0, 1, 1},
30023  {&__pyx_kp_u_istpq_line_2012, __pyx_k_istpq_line_2012, sizeof(__pyx_k_istpq_line_2012), 0, 1, 0, 0},
30024  {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1},
30025  {&__pyx_n_s_ixt, __pyx_k_ixt, sizeof(__pyx_k_ixt), 0, 0, 1, 1},
30026  {&__pyx_kp_u_lexicographic_compare_eg_3_4_5, __pyx_k_lexicographic_compare_eg_3_4_5, sizeof(__pyx_k_lexicographic_compare_eg_3_4_5), 0, 1, 0, 0},
30027  {&__pyx_n_s_lhs, __pyx_k_lhs, sizeof(__pyx_k_lhs), 0, 0, 1, 1},
30028  {&__pyx_n_s_limit, __pyx_k_limit, sizeof(__pyx_k_limit), 0, 0, 1, 1},
30029  {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1},
30030  {&__pyx_kp_u_log_line_1691, __pyx_k_log_line_1691, sizeof(__pyx_k_log_line_1691), 0, 1, 0, 0},
30031  {&__pyx_n_s_lst, __pyx_k_lst, sizeof(__pyx_k_lst), 0, 0, 1, 1},
30032  {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1},
30033  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
30034  {&__pyx_n_u_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 1, 0, 1},
30035  {&__pyx_n_s_math, __pyx_k_math, sizeof(__pyx_k_math), 0, 0, 1, 1},
30036  {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
30037  {&__pyx_n_s_max_abs, __pyx_k_max_abs, sizeof(__pyx_k_max_abs), 0, 0, 1, 1},
30038  {&__pyx_kp_u_max_abs_line_1594, __pyx_k_max_abs_line_1594, sizeof(__pyx_k_max_abs_line_1594), 0, 1, 0, 0},
30039  {&__pyx_n_s_max_pos, __pyx_k_max_pos, sizeof(__pyx_k_max_pos), 0, 0, 1, 1},
30040  {&__pyx_kp_u_max_pos_line_513, __pyx_k_max_pos_line_513, sizeof(__pyx_k_max_pos_line_513), 0, 1, 0, 0},
30041  {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
30042  {&__pyx_n_s_min_neg, __pyx_k_min_neg, sizeof(__pyx_k_min_neg), 0, 0, 1, 1},
30043  {&__pyx_kp_u_min_neg_line_504, __pyx_k_min_neg_line_504, sizeof(__pyx_k_min_neg_line_504), 0, 1, 0, 0},
30044  {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
30045  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
30046  {&__pyx_n_s_nbar3, __pyx_k_nbar3, sizeof(__pyx_k_nbar3), 0, 0, 1, 1},
30047  {&__pyx_n_s_ninf3, __pyx_k_ninf3, sizeof(__pyx_k_ninf3), 0, 0, 1, 1},
30048  {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
30049  {&__pyx_n_s_norm, __pyx_k_norm, sizeof(__pyx_k_norm), 0, 0, 1, 1},
30050  {&__pyx_kp_u_norm_line_1574, __pyx_k_norm_line_1574, sizeof(__pyx_k_norm_line_1574), 0, 1, 0, 0},
30051  {&__pyx_kp_u_norm_sum_of_squares_of_coordina, __pyx_k_norm_sum_of_squares_of_coordina, sizeof(__pyx_k_norm_sum_of_squares_of_coordina), 0, 1, 0, 0},
30052  {&__pyx_n_s_numbers, __pyx_k_numbers, sizeof(__pyx_k_numbers), 0, 0, 1, 1},
30053  {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
30054  {&__pyx_n_s_odd, __pyx_k_odd, sizeof(__pyx_k_odd), 0, 0, 1, 1},
30055  {&__pyx_kp_u_odd_line_1509, __pyx_k_odd_line_1509, sizeof(__pyx_k_odd_line_1509), 0, 1, 0, 0},
30056  {&__pyx_n_s_other, __pyx_k_other, sizeof(__pyx_k_other), 0, 0, 1, 1},
30057  {&__pyx_n_s_outer_pow, __pyx_k_outer_pow, sizeof(__pyx_k_outer_pow), 0, 0, 1, 1},
30058  {&__pyx_kp_u_outer_pow_line_1630, __pyx_k_outer_pow_line_1630, sizeof(__pyx_k_outer_pow_line_1630), 0, 1, 0, 0},
30059  {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1},
30060  {&__pyx_n_s_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 0, 1, 1},
30061  {&__pyx_n_s_pow, __pyx_k_pow, sizeof(__pyx_k_pow), 0, 0, 1, 1},
30062  {&__pyx_kp_u_pow_line_1606, __pyx_k_pow_line_1606, sizeof(__pyx_k_pow_line_1606), 0, 1, 0, 0},
30063  {&__pyx_n_s_pure, __pyx_k_pure, sizeof(__pyx_k_pure), 0, 0, 1, 1},
30064  {&__pyx_kp_u_pure_line_1489, __pyx_k_pure_line_1489, sizeof(__pyx_k_pure_line_1489), 0, 1, 0, 0},
30065  {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
30066  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
30067  {&__pyx_n_s_q, __pyx_k_q, sizeof(__pyx_k_q), 0, 0, 1, 1},
30068  {&__pyx_n_s_quad, __pyx_k_quad, sizeof(__pyx_k_quad), 0, 0, 1, 1},
30069  {&__pyx_kp_u_quad_line_1563, __pyx_k_quad_line_1563, sizeof(__pyx_k_quad_line_1563), 0, 1, 0, 0},
30070  {&__pyx_n_s_random_clifford, __pyx_k_random_clifford, sizeof(__pyx_k_random_clifford), 0, 0, 1, 1},
30071  {&__pyx_kp_u_random_clifford_line_1927, __pyx_k_random_clifford_line_1927, sizeof(__pyx_k_random_clifford_line_1927), 0, 1, 0, 0},
30072  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
30073  {&__pyx_n_s_real, __pyx_k_real, sizeof(__pyx_k_real), 0, 0, 1, 1},
30074  {&__pyx_kp_u_real_line_1467, __pyx_k_real_line_1467, sizeof(__pyx_k_real_line_1467), 0, 1, 0, 0},
30075  {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
30076  {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
30077  {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
30078  {&__pyx_n_s_reframe, __pyx_k_reframe, sizeof(__pyx_k_reframe), 0, 0, 1, 1},
30079  {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
30080  {&__pyx_n_s_reverse, __pyx_k_reverse, sizeof(__pyx_k_reverse), 0, 0, 1, 1},
30081  {&__pyx_kp_u_reverse_line_1533, __pyx_k_reverse_line_1533, sizeof(__pyx_k_reverse_line_1533), 0, 1, 0, 0},
30082  {&__pyx_n_s_rhs, __pyx_k_rhs, sizeof(__pyx_k_rhs), 0, 0, 1, 1},
30083  {&__pyx_n_s_scalar, __pyx_k_scalar, sizeof(__pyx_k_scalar), 0, 0, 1, 1},
30084  {&__pyx_n_s_scalar_epsilon, __pyx_k_scalar_epsilon, sizeof(__pyx_k_scalar_epsilon), 0, 0, 1, 1},
30085  {&__pyx_kp_u_scalar_line_1456, __pyx_k_scalar_line_1456, sizeof(__pyx_k_scalar_line_1456), 0, 1, 0, 0},
30086  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
30087  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
30088  {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
30089  {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
30090  {&__pyx_n_s_sign_of_mult, __pyx_k_sign_of_mult, sizeof(__pyx_k_sign_of_mult), 0, 0, 1, 1},
30091  {&__pyx_n_s_sign_of_square, __pyx_k_sign_of_square, sizeof(__pyx_k_sign_of_square), 0, 0, 1, 1},
30092  {&__pyx_n_s_sin, __pyx_k_sin, sizeof(__pyx_k_sin), 0, 0, 1, 1},
30093  {&__pyx_kp_u_sin_line_1791, __pyx_k_sin_line_1791, sizeof(__pyx_k_sin_line_1791), 0, 1, 0, 0},
30094  {&__pyx_n_s_sinh, __pyx_k_sinh, sizeof(__pyx_k_sinh), 0, 0, 1, 1},
30095  {&__pyx_kp_u_sinh_line_1831, __pyx_k_sinh_line_1831, sizeof(__pyx_k_sinh_line_1831), 0, 1, 0, 0},
30096  {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
30097  {&__pyx_n_s_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 0, 0, 1, 1},
30098  {&__pyx_kp_u_sqrt_line_1654, __pyx_k_sqrt_line_1654, sizeof(__pyx_k_sqrt_line_1654), 0, 1, 0, 0},
30099  {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
30100  {&__pyx_n_s_tan, __pyx_k_tan, sizeof(__pyx_k_tan), 0, 0, 1, 1},
30101  {&__pyx_kp_u_tan_line_1864, __pyx_k_tan_line_1864, sizeof(__pyx_k_tan_line_1864), 0, 1, 0, 0},
30102  {&__pyx_n_s_tanh, __pyx_k_tanh, sizeof(__pyx_k_tanh), 0, 0, 1, 1},
30103  {&__pyx_kp_u_tanh_line_1898, __pyx_k_tanh_line_1898, sizeof(__pyx_k_tanh_line_1898), 0, 1, 0, 0},
30104  {&__pyx_n_s_tau, __pyx_k_tau, sizeof(__pyx_k_tau), 0, 0, 1, 1},
30105  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
30106  {&__pyx_n_s_test_2, __pyx_k_test_2, sizeof(__pyx_k_test_2), 0, 0, 1, 1},
30107  {&__pyx_n_s_testmod, __pyx_k_testmod, sizeof(__pyx_k_testmod), 0, 0, 1, 1},
30108  {&__pyx_n_s_threshold, __pyx_k_threshold, sizeof(__pyx_k_threshold), 0, 0, 1, 1},
30109  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
30110  {&__pyx_kp_u_to_frame, __pyx_k_to_frame, sizeof(__pyx_k_to_frame), 0, 1, 0, 0},
30111  {&__pyx_n_s_tol, __pyx_k_tol, sizeof(__pyx_k_tol), 0, 0, 1, 1},
30112  {&__pyx_n_s_truncated, __pyx_k_truncated, sizeof(__pyx_k_truncated), 0, 0, 1, 1},
30113  {&__pyx_kp_u_using, __pyx_k_using, sizeof(__pyx_k_using), 0, 1, 0, 0},
30114  {&__pyx_kp_u_using_invalid, __pyx_k_using_invalid, sizeof(__pyx_k_using_invalid), 0, 1, 0, 0},
30115  {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0},
30116  {&__pyx_kp_u_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 1, 0, 0},
30117  {&__pyx_n_s_vec, __pyx_k_vec, sizeof(__pyx_k_vec), 0, 0, 1, 1},
30118  {&__pyx_n_s_vector_part, __pyx_k_vector_part, sizeof(__pyx_k_vector_part), 0, 0, 1, 1},
30119  {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1},
30120  {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
30121  {0, 0, 0, 0, 0, 0, 0}
30122  };
30123  return __Pyx_InitStrings(__pyx_string_tab);
30124 }
30125 /* #### Code section: cached_builtins ### */
30126 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
30127  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 103, __pyx_L1_error)
30128  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 105, __pyx_L1_error)
30129  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 105, __pyx_L1_error)
30130  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 106, __pyx_L1_error)
30131  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(0, 159, __pyx_L1_error)
30132  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 236, __pyx_L1_error)
30133  #if PY_MAJOR_VERSION >= 3
30134  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) __PYX_ERR(0, 1162, __pyx_L1_error)
30135  #else
30136  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) __PYX_ERR(0, 1162, __pyx_L1_error)
30137  #endif
30138  return 0;
30139  __pyx_L1_error:;
30140  return -1;
30141 }
30142 /* #### Code section: cached_constants ### */
30143 
30144 static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
30145  __Pyx_RefNannyDeclarations
30146  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
30147 
30148  /* "PyClical.pyx":636
30149  * TypeError: Not applicable.
30150  * """
30151  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
30152  *
30153  * def __iter__(self):
30154  */
30155  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Not_applicable); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 636, __pyx_L1_error)
30156  __Pyx_GOTREF(__pyx_tuple__8);
30157  __Pyx_GIVEREF(__pyx_tuple__8);
30158 
30159  /* "PyClical.pyx":65
30160  * return self.instance[0]
30161  *
30162  * cpdef copy(index_set self): # <<<<<<<<<<<<<<
30163  * """
30164  * Copy this index_set object.
30165  */
30166  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 65, __pyx_L1_error)
30167  __Pyx_GOTREF(__pyx_tuple__10);
30168  __Pyx_GIVEREF(__pyx_tuple__10);
30169  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_copy, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 65, __pyx_L1_error)
30170 
30171  /* "PyClical.pyx":315
30172  * return self.wrap( self.unwrap() | toIndexSet(rhs) )
30173  *
30174  * def count(self): # <<<<<<<<<<<<<<
30175  * """
30176  * Cardinality: Number of indices included in set.
30177  */
30178  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_count, 315, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 315, __pyx_L1_error)
30179 
30180  /* "PyClical.pyx":324
30181  * return self.instance.count()
30182  *
30183  * def count_neg(self): # <<<<<<<<<<<<<<
30184  * """
30185  * Number of negative indices included in set.
30186  */
30187  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_count_neg, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 324, __pyx_L1_error)
30188 
30189  /* "PyClical.pyx":333
30190  * return self.instance.count_neg()
30191  *
30192  * def count_pos(self): # <<<<<<<<<<<<<<
30193  * """
30194  * Number of positive indices included in set.
30195  */
30196  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_count_pos, 333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 333, __pyx_L1_error)
30197 
30198  /* "PyClical.pyx":342
30199  * return self.instance.count_pos()
30200  *
30201  * def min(self): # <<<<<<<<<<<<<<
30202  * """
30203  * Minimum member.
30204  */
30205  __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_min, 342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 342, __pyx_L1_error)
30206 
30207  /* "PyClical.pyx":351
30208  * return self.instance.min()
30209  *
30210  * def max(self): # <<<<<<<<<<<<<<
30211  * """
30212  * Maximum member.
30213  */
30214  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_max, 351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 351, __pyx_L1_error)
30215 
30216  /* "PyClical.pyx":360
30217  * return self.instance.max()
30218  *
30219  * def hash_fn(self): # <<<<<<<<<<<<<<
30220  * """
30221  * Hash function.
30222  */
30223  __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_hash_fn, 360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 360, __pyx_L1_error)
30224 
30225  /* "PyClical.pyx":366
30226  * return self.instance.hash_fn()
30227  *
30228  * def sign_of_mult(self, rhs): # <<<<<<<<<<<<<<
30229  * """
30230  * Sign of geometric product of two Clifford basis elements.
30231  */
30232  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_rhs); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 366, __pyx_L1_error)
30233  __Pyx_GOTREF(__pyx_tuple__18);
30234  __Pyx_GIVEREF(__pyx_tuple__18);
30235  __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_sign_of_mult, 366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 366, __pyx_L1_error)
30236 
30237  /* "PyClical.pyx":375
30238  * return self.instance.sign_of_mult(toIndexSet(rhs))
30239  *
30240  * def sign_of_square(self): # <<<<<<<<<<<<<<
30241  * """
30242  * Sign of geometric square of a Clifford basis element.
30243  */
30244  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_sign_of_square, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 375, __pyx_L1_error)
30245 
30246  /* "(tree fragment)":1
30247  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
30248  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
30249  * def __setstate_cython__(self, __pyx_state):
30250  */
30251  __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(1, 1, __pyx_L1_error)
30252 
30253  /* "(tree fragment)":3
30254  * def __reduce_cython__(self):
30255  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
30256  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
30257  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
30258  */
30259  __pyx_tuple__22 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 3, __pyx_L1_error)
30260  __Pyx_GOTREF(__pyx_tuple__22);
30261  __Pyx_GIVEREF(__pyx_tuple__22);
30262  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(1, 3, __pyx_L1_error)
30263 
30264  /* "PyClical.pyx":406
30265  * return index_set_to_str( self.unwrap() ).decode()
30266  *
30267  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
30268  * """
30269  * Tests for functions that Doctest cannot see.
30270  */
30271  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_index_set_hidden_doctests, 406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 406, __pyx_L1_error)
30272 
30273  /* "PyClical.pyx":492
30274  * return
30275  *
30276  * cpdef inline compare(lhs,rhs): # <<<<<<<<<<<<<<
30277  * """
30278  * "lexicographic compare" eg. {3,4,5} is less than {3,7,8};
30279  */
30280  __pyx_tuple__25 = PyTuple_Pack(2, __pyx_n_s_lhs, __pyx_n_s_rhs); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 492, __pyx_L1_error)
30281  __Pyx_GOTREF(__pyx_tuple__25);
30282  __Pyx_GIVEREF(__pyx_tuple__25);
30283  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_compare, 492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 492, __pyx_L1_error)
30284 
30285  /* "PyClical.pyx":504
30286  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) )
30287  *
30288  * cpdef inline min_neg(obj): # <<<<<<<<<<<<<<
30289  * """
30290  * Minimum negative index, or 0 if none.
30291  */
30292  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 504, __pyx_L1_error)
30293  __Pyx_GOTREF(__pyx_tuple__27);
30294  __Pyx_GIVEREF(__pyx_tuple__27);
30295  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_min_neg, 504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 504, __pyx_L1_error)
30296 
30297  /* "PyClical.pyx":513
30298  * return glucat.min_neg( toIndexSet(obj) )
30299  *
30300  * cpdef inline max_pos(obj): # <<<<<<<<<<<<<<
30301  * """
30302  * Maximum positive index, or 0 if none.
30303  */
30304  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_max_pos, 513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 513, __pyx_L1_error)
30305 
30306  /* "PyClical.pyx":556
30307  * return self.instance[0]
30308  *
30309  * cpdef copy(clifford self): # <<<<<<<<<<<<<<
30310  * """
30311  * Copy this clifford object.
30312  */
30313  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_copy, 556, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 556, __pyx_L1_error)
30314 
30315  /* "PyClical.pyx":649
30316  * raise TypeError("Not applicable.")
30317  *
30318  * def reframe(self, ixt): # <<<<<<<<<<<<<<
30319  * """
30320  * Put self into a larger frame, containing the union of self.frame() and index set ixt.
30321  */
30322  __pyx_tuple__31 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_ixt, __pyx_n_s_error_msg_prefix, __pyx_n_s_result, __pyx_n_s_err); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 649, __pyx_L1_error)
30323  __Pyx_GOTREF(__pyx_tuple__31);
30324  __Pyx_GIVEREF(__pyx_tuple__31);
30325  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_reframe, 649, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 649, __pyx_L1_error)
30326 
30327  /* "PyClical.pyx":989
30328  * return self.wrap( self.unwrap() / toClifford(rhs) )
30329  *
30330  * def inv(self): # <<<<<<<<<<<<<<
30331  * """
30332  * Geometric multiplicative inverse.
30333  */
30334  __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_inv, 989, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 989, __pyx_L1_error)
30335 
30336  /* "PyClical.pyx":1043
30337  * return pow(self, m)
30338  *
30339  * def pow(self, m): # <<<<<<<<<<<<<<
30340  * """
30341  * Power: self to the m.
30342  */
30343  __pyx_tuple__34 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_m); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1043, __pyx_L1_error)
30344  __Pyx_GOTREF(__pyx_tuple__34);
30345  __Pyx_GIVEREF(__pyx_tuple__34);
30346  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_pow, 1043, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1043, __pyx_L1_error)
30347 
30348  /* "PyClical.pyx":1067
30349  * return exp(m * log(self))
30350  *
30351  * def outer_pow(self, m): # <<<<<<<<<<<<<<
30352  * """
30353  * Outer product power.
30354  */
30355  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_outer_pow, 1067, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 1067, __pyx_L1_error)
30356 
30357  /* "PyClical.pyx":1102
30358  * return clifford().wrap( self.instance.call(grade) )
30359  *
30360  * def scalar(self): # <<<<<<<<<<<<<<
30361  * """
30362  * Scalar part.
30363  */
30364  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_scalar, 1102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1102, __pyx_L1_error)
30365 
30366  /* "PyClical.pyx":1113
30367  * return self.instance.scalar()
30368  *
30369  * def pure(self): # <<<<<<<<<<<<<<
30370  * """
30371  * Pure part.
30372  */
30373  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_pure, 1113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 1113, __pyx_L1_error)
30374 
30375  /* "PyClical.pyx":1124
30376  * return clifford().wrap( self.instance.pure() )
30377  *
30378  * def even(self): # <<<<<<<<<<<<<<
30379  * """
30380  * Even part of multivector, sum of even grade terms.
30381  */
30382  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_even, 1124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1124, __pyx_L1_error)
30383 
30384  /* "PyClical.pyx":1133
30385  * return clifford().wrap( self.instance.even() )
30386  *
30387  * def odd(self): # <<<<<<<<<<<<<<
30388  * """
30389  * Odd part of multivector, sum of odd grade terms.
30390  */
30391  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_odd, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 1133, __pyx_L1_error)
30392 
30393  /* "PyClical.pyx":1142
30394  * return clifford().wrap( self.instance.odd() )
30395  *
30396  * def vector_part(self, frm = None): # <<<<<<<<<<<<<<
30397  * """
30398  * Vector part of multivector, as a Python list, with respect to frm.
30399  */
30400  __pyx_tuple__41 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_frm, __pyx_n_s_error_msg_prefix, __pyx_n_s_vec, __pyx_n_s_n, __pyx_n_s_i, __pyx_n_s_lst, __pyx_n_s_err); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 1142, __pyx_L1_error)
30401  __Pyx_GOTREF(__pyx_tuple__41);
30402  __Pyx_GIVEREF(__pyx_tuple__41);
30403  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_vector_part, 1142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 1142, __pyx_L1_error)
30404  __pyx_tuple__43 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1142, __pyx_L1_error)
30405  __Pyx_GOTREF(__pyx_tuple__43);
30406  __Pyx_GIVEREF(__pyx_tuple__43);
30407 
30408  /* "PyClical.pyx":1170
30409  * + str(err))
30410  *
30411  * def involute(self): # <<<<<<<<<<<<<<
30412  * """
30413  * Main involution, each {i} is replaced by -{i} in each term,
30414  */
30415  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_involute, 1170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 1170, __pyx_L1_error)
30416 
30417  /* "PyClical.pyx":1186
30418  * return clifford().wrap( self.instance.involute() )
30419  *
30420  * def reverse(self): # <<<<<<<<<<<<<<
30421  * """
30422  * Reversion, eg. clifford("{1}")*clifford("{2}") -> clifford("{2}")*clifford("{1}").
30423  */
30424  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_reverse, 1186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1186, __pyx_L1_error)
30425 
30426  /* "PyClical.pyx":1201
30427  * return clifford().wrap( self.instance.reverse() )
30428  *
30429  * def conj(self): # <<<<<<<<<<<<<<
30430  * """
30431  * Conjugation, reverse o involute == involute o reverse.
30432  */
30433  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_conj, 1201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 1201, __pyx_L1_error)
30434 
30435  /* "PyClical.pyx":1216
30436  * return clifford().wrap( self.instance.conj() )
30437  *
30438  * def quad(self): # <<<<<<<<<<<<<<
30439  * """
30440  * Quadratic form == (rev(x)*x)(0).
30441  */
30442  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_quad, 1216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 1216, __pyx_L1_error)
30443 
30444  /* "PyClical.pyx":1227
30445  * return self.instance.quad()
30446  *
30447  * def norm(self): # <<<<<<<<<<<<<<
30448  * """
30449  * Norm == sum of squares of coordinates.
30450  */
30451  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_norm, 1227, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 1227, __pyx_L1_error)
30452 
30453  /* "PyClical.pyx":1238
30454  * return self.instance.norm()
30455  *
30456  * def abs(self): # <<<<<<<<<<<<<<
30457  * """
30458  * Absolute value: square root of norm.
30459  */
30460  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_abs, 1238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 1238, __pyx_L1_error)
30461 
30462  /* "PyClical.pyx":1247
30463  * return glucat.abs( self.unwrap() )
30464  *
30465  * def max_abs(self): # <<<<<<<<<<<<<<
30466  * """
30467  * Maximum of absolute values of components of multivector: multivector infinity norm.
30468  */
30469  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_max_abs, 1247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 1247, __pyx_L1_error)
30470 
30471  /* "PyClical.pyx":1258
30472  * return self.instance.max_abs()
30473  *
30474  * def truncated(self, limit): # <<<<<<<<<<<<<<
30475  * """
30476  * Remove all terms of self with relative size smaller than limit.
30477  */
30478  __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_limit); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 1258, __pyx_L1_error)
30479  __Pyx_GOTREF(__pyx_tuple__51);
30480  __Pyx_GIVEREF(__pyx_tuple__51);
30481  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_truncated, 1258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 1258, __pyx_L1_error)
30482 
30483  /* "PyClical.pyx":1269
30484  * return clifford().wrap( self.instance.truncated(limit) )
30485  *
30486  * def isinf(self): # <<<<<<<<<<<<<<
30487  * """
30488  * Check if a multivector contains any infinite values.
30489  */
30490  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_isinf, 1269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 1269, __pyx_L1_error)
30491 
30492  /* "PyClical.pyx":1278
30493  * return self.instance.isnan()
30494  *
30495  * def isnan(self): # <<<<<<<<<<<<<<
30496  * """
30497  * Check if a multivector contains any IEEE NaN values.
30498  */
30499  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_isnan, 1278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 1278, __pyx_L1_error)
30500 
30501  /* "PyClical.pyx":1287
30502  * return self.instance.isnan()
30503  *
30504  * def frame(self): # <<<<<<<<<<<<<<
30505  * """
30506  * Subalgebra generated by all generators of terms of given multivector.
30507  */
30508  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_frame, 1287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 1287, __pyx_L1_error)
30509 
30510  /* "(tree fragment)":1
30511  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
30512  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
30513  * def __setstate_cython__(self, __pyx_state):
30514  */
30515  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(1, 1, __pyx_L1_error)
30516 
30517  /* "(tree fragment)":3
30518  * def __reduce_cython__(self):
30519  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
30520  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
30521  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
30522  */
30523  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(1, 3, __pyx_L1_error)
30524 
30525  /* "PyClical.pyx":1316
30526  * return clifford_to_str( self.unwrap() ).decode()
30527  *
30528  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
30529  * """
30530  * Tests for functions that Doctest cannot see.
30531  */
30532  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_clifford_hidden_doctests, 1316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 1316, __pyx_L1_error)
30533 
30534  /* "PyClical.pyx":1400
30535  * return
30536  *
30537  * cpdef inline error_squared_tol(obj): # <<<<<<<<<<<<<<
30538  * """
30539  * Quadratic norm error tolerance relative to a specific multivector.
30540  */
30541  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_error_squared_tol, 1400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 1400, __pyx_L1_error)
30542 
30543  /* "PyClical.pyx":1409
30544  * return glucat.error_squared_tol(toClifford(obj))
30545  *
30546  * cpdef inline error_squared(lhs, rhs, threshold): # <<<<<<<<<<<<<<
30547  * """
30548  * Relative or absolute error using the quadratic norm.
30549  */
30550  __pyx_tuple__60 = PyTuple_Pack(3, __pyx_n_s_lhs, __pyx_n_s_rhs, __pyx_n_s_threshold); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 1409, __pyx_L1_error)
30551  __Pyx_GOTREF(__pyx_tuple__60);
30552  __Pyx_GIVEREF(__pyx_tuple__60);
30553  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_error_squared, 1409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 1409, __pyx_L1_error)
30554 
30555  /* "PyClical.pyx":1422
30556  * return glucat.error_squared(toClifford(lhs), toClifford(rhs), <scalar_t>threshold)
30557  *
30558  * cpdef inline approx_equal(lhs, rhs, threshold=None, tol=None): # <<<<<<<<<<<<<<
30559  * """
30560  * Test for approximate equality of multivectors.
30561  */
30562  __pyx_tuple__62 = PyTuple_Pack(4, __pyx_n_s_lhs, __pyx_n_s_rhs, __pyx_n_s_threshold, __pyx_n_s_tol); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 1422, __pyx_L1_error)
30563  __Pyx_GOTREF(__pyx_tuple__62);
30564  __Pyx_GIVEREF(__pyx_tuple__62);
30565  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_approx_equal, 1422, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 1422, __pyx_L1_error)
30566  __pyx_tuple__64 = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 1422, __pyx_L1_error)
30567  __Pyx_GOTREF(__pyx_tuple__64);
30568  __Pyx_GIVEREF(__pyx_tuple__64);
30569 
30570  /* "PyClical.pyx":1441
30571  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol)
30572  *
30573  * cpdef inline inv(obj): # <<<<<<<<<<<<<<
30574  * """
30575  * Geometric multiplicative inverse.
30576  */
30577  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_inv, 1441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 1441, __pyx_L1_error)
30578 
30579  /* "PyClical.pyx":1456
30580  * return clifford(obj).inv()
30581  *
30582  * cpdef inline scalar(obj): # <<<<<<<<<<<<<<
30583  * """
30584  * Scalar part.
30585  */
30586  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_scalar, 1456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 1456, __pyx_L1_error)
30587 
30588  /* "PyClical.pyx":1467
30589  * return clifford(obj).scalar()
30590  *
30591  * cpdef inline real(obj): # <<<<<<<<<<<<<<
30592  * """
30593  * Real part: synonym for scalar part.
30594  */
30595  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_real, 1467, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 1467, __pyx_L1_error)
30596 
30597  /* "PyClical.pyx":1478
30598  * return clifford(obj).scalar()
30599  *
30600  * cpdef inline imag(obj): # <<<<<<<<<<<<<<
30601  * """
30602  * Imaginary part: deprecated (always 0).
30603  */
30604  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_imag, 1478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 1478, __pyx_L1_error)
30605 
30606  /* "PyClical.pyx":1489
30607  * return 0.0
30608  *
30609  * cpdef inline pure(obj): # <<<<<<<<<<<<<<
30610  * """
30611  * Pure part
30612  */
30613  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_pure, 1489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 1489, __pyx_L1_error)
30614 
30615  /* "PyClical.pyx":1500
30616  * return clifford(obj).pure()
30617  *
30618  * cpdef inline even(obj): # <<<<<<<<<<<<<<
30619  * """
30620  * Even part of multivector, sum of even grade terms.
30621  */
30622  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_even, 1500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 1500, __pyx_L1_error)
30623 
30624  /* "PyClical.pyx":1509
30625  * return clifford(obj).even()
30626  *
30627  * cpdef inline odd(obj): # <<<<<<<<<<<<<<
30628  * """
30629  * Odd part of multivector, sum of odd grade terms.
30630  */
30631  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_odd, 1509, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 1509, __pyx_L1_error)
30632 
30633  /* "PyClical.pyx":1518
30634  * return clifford(obj).odd()
30635  *
30636  * cpdef inline involute(obj): # <<<<<<<<<<<<<<
30637  * """
30638  * Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})
30639  */
30640  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_involute, 1518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 1518, __pyx_L1_error)
30641 
30642  /* "PyClical.pyx":1533
30643  * return clifford(obj).involute()
30644  *
30645  * cpdef inline reverse(obj): # <<<<<<<<<<<<<<
30646  * """
30647  * Reversion, eg. {1}*{2} -> {2}*{1}
30648  */
30649  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_reverse, 1533, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 1533, __pyx_L1_error)
30650 
30651  /* "PyClical.pyx":1548
30652  * return clifford(obj).reverse()
30653  *
30654  * cpdef inline conj(obj): # <<<<<<<<<<<<<<
30655  * """
30656  * Conjugation, reverse o involute == involute o reverse.
30657  */
30658  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_conj, 1548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1548, __pyx_L1_error)
30659 
30660  /* "PyClical.pyx":1563
30661  * return clifford(obj).conj()
30662  *
30663  * cpdef inline quad(obj): # <<<<<<<<<<<<<<
30664  * """
30665  * Quadratic form == (rev(x)*x)(0).
30666  */
30667  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_quad, 1563, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 1563, __pyx_L1_error)
30668 
30669  /* "PyClical.pyx":1574
30670  * return clifford(obj).quad()
30671  *
30672  * cpdef inline norm(obj): # <<<<<<<<<<<<<<
30673  * """
30674  * norm == sum of squares of coordinates.
30675  */
30676  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_norm, 1574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 1574, __pyx_L1_error)
30677 
30678  /* "PyClical.pyx":1585
30679  * return clifford(obj).norm()
30680  *
30681  * cpdef inline abs(obj): # <<<<<<<<<<<<<<
30682  * """
30683  * Absolute value of multivector: multivector 2-norm.
30684  */
30685  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_abs, 1585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 1585, __pyx_L1_error)
30686 
30687  /* "PyClical.pyx":1594
30688  * return glucat.abs(toClifford(obj))
30689  *
30690  * cpdef inline max_abs(obj): # <<<<<<<<<<<<<<
30691  * """
30692  * Maximum absolute value of coordinates multivector: multivector infinity-norm.
30693  */
30694  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_max_abs, 1594, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1594, __pyx_L1_error)
30695 
30696  /* "PyClical.pyx":1606
30697  * return glucat.max_abs(toClifford(obj))
30698  *
30699  * cpdef inline pow(obj, m): # <<<<<<<<<<<<<<
30700  * """
30701  * Integer power of multivector: obj to the m.
30702  */
30703  __pyx_tuple__79 = PyTuple_Pack(2, __pyx_n_s_obj, __pyx_n_s_m); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 1606, __pyx_L1_error)
30704  __Pyx_GOTREF(__pyx_tuple__79);
30705  __Pyx_GIVEREF(__pyx_tuple__79);
30706  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_pow, 1606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1606, __pyx_L1_error)
30707 
30708  /* "PyClical.pyx":1630
30709  * return clifford(obj).pow(m)
30710  *
30711  * cpdef inline outer_pow(obj, m): # <<<<<<<<<<<<<<
30712  * """
30713  * Outer product power of multivector.
30714  */
30715  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_outer_pow, 1630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 1630, __pyx_L1_error)
30716 
30717  /* "PyClical.pyx":1639
30718  * return clifford(obj).outer_pow(m)
30719  *
30720  * cpdef inline complexifier(obj): # <<<<<<<<<<<<<<
30721  * """
30722  * Square root of -1 which commutes with all members of the frame of the given multivector.
30723  */
30724  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_complexifier, 1639, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1639, __pyx_L1_error)
30725 
30726  /* "PyClical.pyx":1654
30727  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
30728  *
30729  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
30730  * """
30731  * Square root of multivector with optional complexifier.
30732  */
30733  __pyx_tuple__83 = PyTuple_Pack(2, __pyx_n_s_obj, __pyx_n_s_i); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 1654, __pyx_L1_error)
30734  __Pyx_GOTREF(__pyx_tuple__83);
30735  __Pyx_GIVEREF(__pyx_tuple__83);
30736  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_sqrt, 1654, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 1654, __pyx_L1_error)
30737 
30738  /* "PyClical.pyx":1677
30739  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
30740  *
30741  * cpdef inline exp(obj): # <<<<<<<<<<<<<<
30742  * """
30743  * Exponential of multivector.
30744  */
30745  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_exp, 1677, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 1677, __pyx_L1_error)
30746 
30747  /* "PyClical.pyx":1691
30748  * return clifford().wrap( glucat.exp(toClifford(obj)) )
30749  *
30750  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
30751  * """
30752  * Natural logarithm of multivector with optional complexifier.
30753  */
30754  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_log, 1691, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 1691, __pyx_L1_error)
30755 
30756  /* "PyClical.pyx":1714
30757  * return clifford().wrap( glucat.log(toClifford(obj)) )
30758  *
30759  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
30760  * """
30761  * Cosine of multivector with optional complexifier.
30762  */
30763  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_cos, 1714, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(0, 1714, __pyx_L1_error)
30764 
30765  /* "PyClical.pyx":1731
30766  * return clifford().wrap( glucat.cos(toClifford(obj)) )
30767  *
30768  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
30769  * """
30770  * Inverse cosine of multivector with optional complexifier.
30771  */
30772  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_acos, 1731, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 1731, __pyx_L1_error)
30773 
30774  /* "PyClical.pyx":1752
30775  * return clifford().wrap( glucat.acos(toClifford(obj)) )
30776  *
30777  * cpdef inline cosh(obj): # <<<<<<<<<<<<<<
30778  * """
30779  * Hyperbolic cosine of multivector.
30780  */
30781  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_cosh, 1752, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 1752, __pyx_L1_error)
30782 
30783  /* "PyClical.pyx":1768
30784  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
30785  *
30786  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
30787  * """
30788  * Inverse hyperbolic cosine of multivector with optional complexifier.
30789  */
30790  __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_acosh, 1768, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 1768, __pyx_L1_error)
30791 
30792  /* "PyClical.pyx":1791
30793  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
30794  *
30795  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
30796  * """
30797  * Sine of multivector with optional complexifier.
30798  */
30799  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_sin, 1791, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 1791, __pyx_L1_error)
30800 
30801  /* "PyClical.pyx":1810
30802  * return clifford().wrap( glucat.sin(toClifford(obj)) )
30803  *
30804  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
30805  * """
30806  * Inverse sine of multivector with optional complexifier.
30807  */
30808  __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_asin, 1810, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 1810, __pyx_L1_error)
30809 
30810  /* "PyClical.pyx":1831
30811  * return clifford().wrap( glucat.asin(toClifford(obj)) )
30812  *
30813  * cpdef inline sinh(obj): # <<<<<<<<<<<<<<
30814  * """
30815  * Hyperbolic sine of multivector.
30816  */
30817  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_sinh, 1831, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 1831, __pyx_L1_error)
30818 
30819  /* "PyClical.pyx":1845
30820  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
30821  *
30822  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
30823  * """
30824  * Inverse hyperbolic sine of multivector with optional complexifier.
30825  */
30826  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_asinh, 1845, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 1845, __pyx_L1_error)
30827 
30828  /* "PyClical.pyx":1864
30829  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
30830  *
30831  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
30832  * """
30833  * Tangent of multivector with optional complexifier.
30834  */
30835  __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_tan, 1864, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(0, 1864, __pyx_L1_error)
30836 
30837  /* "PyClical.pyx":1881
30838  * return clifford().wrap( glucat.tan(toClifford(obj)) )
30839  *
30840  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
30841  * """
30842  * Inverse tangent of multivector with optional complexifier.
30843  */
30844  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_atan, 1881, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 1881, __pyx_L1_error)
30845 
30846  /* "PyClical.pyx":1898
30847  * return clifford().wrap( glucat.atan(toClifford(obj)) )
30848  *
30849  * cpdef inline tanh(obj): # <<<<<<<<<<<<<<
30850  * """
30851  * Hyperbolic tangent of multivector.
30852  */
30853  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_tanh, 1898, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(0, 1898, __pyx_L1_error)
30854 
30855  /* "PyClical.pyx":1910
30856  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
30857  *
30858  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
30859  * """
30860  * Inverse hyperbolic tangent of multivector with optional complexifier.
30861  */
30862  __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_atanh, 1910, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(0, 1910, __pyx_L1_error)
30863 
30864  /* "PyClical.pyx":1927
30865  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
30866  *
30867  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
30868  * """
30869  * Random multivector within a frame.
30870  */
30871  __pyx_tuple__99 = PyTuple_Pack(2, __pyx_n_s_ixt, __pyx_n_s_fill); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 1927, __pyx_L1_error)
30872  __Pyx_GOTREF(__pyx_tuple__99);
30873  __Pyx_GIVEREF(__pyx_tuple__99);
30874  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__99, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_random_clifford, 1927, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(0, 1927, __pyx_L1_error)
30875  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_float_1_0); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 1927, __pyx_L1_error)
30876  __Pyx_GOTREF(__pyx_tuple__101);
30877  __Pyx_GIVEREF(__pyx_tuple__101);
30878 
30879  /* "PyClical.pyx":1936
30880  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) )
30881  *
30882  * cpdef inline cga3(obj): # <<<<<<<<<<<<<<
30883  * """
30884  * Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.
30885  */
30886  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_cga3, 1936, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 1936, __pyx_L1_error)
30887 
30888  /* "PyClical.pyx":1945
30889  * return clifford().wrap( glucat.cga3(toClifford(obj)) )
30890  *
30891  * cpdef inline cga3std(obj): # <<<<<<<<<<<<<<
30892  * """
30893  * Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.
30894  */
30895  __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_cga3std, 1945, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(0, 1945, __pyx_L1_error)
30896 
30897  /* "PyClical.pyx":1956
30898  * return clifford().wrap( glucat.cga3std(toClifford(obj)) )
30899  *
30900  * cpdef inline agc3(obj): # <<<<<<<<<<<<<<
30901  * """
30902  * Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.
30903  */
30904  __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_agc3, 1956, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(0, 1956, __pyx_L1_error)
30905 
30906  /* "PyClical.pyx":1970
30907  * scalar_epsilon = epsilon
30908  *
30909  * pi = atan(clifford(1.0)) * 4.0 # <<<<<<<<<<<<<<
30910  * tau = atan(clifford(1.0)) * 8.0
30911  *
30912  */
30913  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_float_1_0); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 1970, __pyx_L1_error)
30914  __Pyx_GOTREF(__pyx_tuple__105);
30915  __Pyx_GIVEREF(__pyx_tuple__105);
30916 
30917  /* "PyClical.pyx":1999
30918  * """
30919  *
30920  * def e(obj): # <<<<<<<<<<<<<<
30921  * """
30922  * Abbreviation for clifford(index_set(obj)).
30923  */
30924  __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_e, 1999, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 1999, __pyx_L1_error)
30925 
30926  /* "PyClical.pyx":2012
30927  * return clifford(index_set(obj))
30928  *
30929  * def istpq(p, q): # <<<<<<<<<<<<<<
30930  * """
30931  * Abbreviation for index_set({-q,...p}).
30932  */
30933  __pyx_tuple__107 = PyTuple_Pack(2, __pyx_n_s_p, __pyx_n_s_q); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 2012, __pyx_L1_error)
30934  __Pyx_GOTREF(__pyx_tuple__107);
30935  __Pyx_GIVEREF(__pyx_tuple__107);
30936  __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_istpq, 2012, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(0, 2012, __pyx_L1_error)
30937 
30938  /* "PyClical.pyx":2021
30939  * return index_set(set(range(-q,p+1)))
30940  *
30941  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
30942  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL].
30943  *
30944  */
30945  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_int_4); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 2021, __pyx_L1_error)
30946  __Pyx_GOTREF(__pyx_tuple__109);
30947  __Pyx_GIVEREF(__pyx_tuple__109);
30948  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 2021, __pyx_L1_error)
30949  __Pyx_GOTREF(__pyx_tuple__110);
30950  __Pyx_GIVEREF(__pyx_tuple__110);
30951 
30952  /* "PyClical.pyx":2025
30953  *
30954  * # Doctest interface.
30955  * def _test(): # <<<<<<<<<<<<<<
30956  * import PyClical, doctest
30957  * return doctest.testmod(PyClical)
30958  */
30959  __pyx_tuple__111 = PyTuple_Pack(2, __pyx_n_s_PyClical, __pyx_n_s_doctest); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 2025, __pyx_L1_error)
30960  __Pyx_GOTREF(__pyx_tuple__111);
30961  __Pyx_GIVEREF(__pyx_tuple__111);
30962  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_PyClical_pyx, __pyx_n_s_test, 2025, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(0, 2025, __pyx_L1_error)
30963  __Pyx_RefNannyFinishContext();
30964  return 0;
30965  __pyx_L1_error:;
30966  __Pyx_RefNannyFinishContext();
30967  return -1;
30968 }
30969 /* #### Code section: init_constants ### */
30970 
30971 static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
30972  if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error);
30973  __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __PYX_ERR(0, 1, __pyx_L1_error)
30974  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error)
30975  __pyx_float_4_0 = PyFloat_FromDouble(4.0); if (unlikely(!__pyx_float_4_0)) __PYX_ERR(0, 1, __pyx_L1_error)
30976  __pyx_float_8_0 = PyFloat_FromDouble(8.0); if (unlikely(!__pyx_float_8_0)) __PYX_ERR(0, 1, __pyx_L1_error)
30977  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
30978  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
30979  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
30980  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
30981  return 0;
30982  __pyx_L1_error:;
30983  return -1;
30984 }
30985 /* #### Code section: init_globals ### */
30986 
30987 static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
30988  return 0;
30989 }
30990 /* #### Code section: init_module ### */
30991 
30992 static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
30993 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
30994 static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
30995 static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
30996 static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
30997 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
30998 static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
30999 
31000 static int __Pyx_modinit_global_init_code(void) {
31001  __Pyx_RefNannyDeclarations
31002  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
31003  /*--- Global init code ---*/
31004  __Pyx_RefNannyFinishContext();
31005  return 0;
31006 }
31007 
31008 static int __Pyx_modinit_variable_export_code(void) {
31009  __Pyx_RefNannyDeclarations
31010  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
31011  /*--- Variable export code ---*/
31012  __Pyx_RefNannyFinishContext();
31013  return 0;
31014 }
31015 
31016 static int __Pyx_modinit_function_export_code(void) {
31017  __Pyx_RefNannyDeclarations
31018  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
31019  /*--- Function export code ---*/
31020  __Pyx_RefNannyFinishContext();
31021  return 0;
31022 }
31023 
31024 static int __Pyx_modinit_type_init_code(void) {
31025  __Pyx_RefNannyDeclarations
31026  int __pyx_lineno = 0;
31027  const char *__pyx_filename = NULL;
31028  int __pyx_clineno = 0;
31029  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
31030  /*--- Type init code ---*/
31031  __pyx_vtabptr_8PyClical_index_set = &__pyx_vtable_8PyClical_index_set;
31032  __pyx_vtable_8PyClical_index_set.wrap = (PyObject *(*)(struct __pyx_obj_8PyClical_index_set *, IndexSet))__pyx_f_8PyClical_9index_set_wrap;
31033  __pyx_vtable_8PyClical_index_set.unwrap = (IndexSet (*)(struct __pyx_obj_8PyClical_index_set *))__pyx_f_8PyClical_9index_set_unwrap;
31034  __pyx_vtable_8PyClical_index_set.copy = (PyObject *(*)(struct __pyx_obj_8PyClical_index_set *, int __pyx_skip_dispatch))__pyx_f_8PyClical_9index_set_copy;
31035  #if CYTHON_USE_TYPE_SPECS
31036  __pyx_ptype_8PyClical_index_set = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8PyClical_index_set_spec, NULL); if (unlikely(!__pyx_ptype_8PyClical_index_set)) __PYX_ERR(0, 46, __pyx_L1_error)
31037  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8PyClical_index_set_spec, __pyx_ptype_8PyClical_index_set) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
31038  #else
31039  __pyx_ptype_8PyClical_index_set = &__pyx_type_8PyClical_index_set;
31040  #endif
31041  #if !CYTHON_COMPILING_IN_LIMITED_API
31042  #endif
31043  #if !CYTHON_USE_TYPE_SPECS
31044  if (__Pyx_PyType_Ready(__pyx_ptype_8PyClical_index_set) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
31045  #endif
31046  #if PY_MAJOR_VERSION < 3
31047  __pyx_ptype_8PyClical_index_set->tp_print = 0;
31048  #endif
31049  #if !CYTHON_COMPILING_IN_LIMITED_API
31050  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8PyClical_index_set->tp_dictoffset && __pyx_ptype_8PyClical_index_set->tp_getattro == PyObject_GenericGetAttr)) {
31051  __pyx_ptype_8PyClical_index_set->tp_getattro = __Pyx_PyObject_GenericGetAttr;
31052  }
31053  #endif
31054  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31055  {
31056  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__setitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31057  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31058  __pyx_wrapperbase_8PyClical_9index_set_8__setitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31059  __pyx_wrapperbase_8PyClical_9index_set_8__setitem__.doc = __pyx_doc_8PyClical_9index_set_8__setitem__;
31060  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_8__setitem__;
31061  }
31062  }
31063  #endif
31064  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31065  {
31066  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31067  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31068  __pyx_wrapperbase_8PyClical_9index_set_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31069  __pyx_wrapperbase_8PyClical_9index_set_10__getitem__.doc = __pyx_doc_8PyClical_9index_set_10__getitem__;
31070  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_10__getitem__;
31071  }
31072  }
31073  #endif
31074  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31075  {
31076  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__contains__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31077  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31078  __pyx_wrapperbase_8PyClical_9index_set_12__contains__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31079  __pyx_wrapperbase_8PyClical_9index_set_12__contains__.doc = __pyx_doc_8PyClical_9index_set_12__contains__;
31080  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_12__contains__;
31081  }
31082  }
31083  #endif
31084  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31085  {
31086  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31087  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31088  __pyx_wrapperbase_8PyClical_9index_set_14__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31089  __pyx_wrapperbase_8PyClical_9index_set_14__iter__.doc = __pyx_doc_8PyClical_9index_set_14__iter__;
31090  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_14__iter__;
31091  }
31092  }
31093  #endif
31094  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31095  {
31096  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__invert__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31097  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31098  __pyx_wrapperbase_8PyClical_9index_set_17__invert__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31099  __pyx_wrapperbase_8PyClical_9index_set_17__invert__.doc = __pyx_doc_8PyClical_9index_set_17__invert__;
31100  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_17__invert__;
31101  }
31102  }
31103  #endif
31104  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31105  {
31106  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__xor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31107  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31108  __pyx_wrapperbase_8PyClical_9index_set_19__xor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31109  __pyx_wrapperbase_8PyClical_9index_set_19__xor__.doc = __pyx_doc_8PyClical_9index_set_19__xor__;
31110  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_19__xor__;
31111  }
31112  }
31113  #endif
31114  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31115  {
31116  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__ixor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31117  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31118  __pyx_wrapperbase_8PyClical_9index_set_21__ixor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31119  __pyx_wrapperbase_8PyClical_9index_set_21__ixor__.doc = __pyx_doc_8PyClical_9index_set_21__ixor__;
31120  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_21__ixor__;
31121  }
31122  }
31123  #endif
31124  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31125  {
31126  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__and__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31127  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31128  __pyx_wrapperbase_8PyClical_9index_set_23__and__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31129  __pyx_wrapperbase_8PyClical_9index_set_23__and__.doc = __pyx_doc_8PyClical_9index_set_23__and__;
31130  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_23__and__;
31131  }
31132  }
31133  #endif
31134  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31135  {
31136  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__iand__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31137  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31138  __pyx_wrapperbase_8PyClical_9index_set_25__iand__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31139  __pyx_wrapperbase_8PyClical_9index_set_25__iand__.doc = __pyx_doc_8PyClical_9index_set_25__iand__;
31140  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_25__iand__;
31141  }
31142  }
31143  #endif
31144  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31145  {
31146  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__or__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31147  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31148  __pyx_wrapperbase_8PyClical_9index_set_27__or__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31149  __pyx_wrapperbase_8PyClical_9index_set_27__or__.doc = __pyx_doc_8PyClical_9index_set_27__or__;
31150  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_27__or__;
31151  }
31152  }
31153  #endif
31154  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31155  {
31156  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__ior__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31157  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31158  __pyx_wrapperbase_8PyClical_9index_set_29__ior__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31159  __pyx_wrapperbase_8PyClical_9index_set_29__ior__.doc = __pyx_doc_8PyClical_9index_set_29__ior__;
31160  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_29__ior__;
31161  }
31162  }
31163  #endif
31164  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31165  {
31166  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31167  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31168  __pyx_wrapperbase_8PyClical_9index_set_47__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31169  __pyx_wrapperbase_8PyClical_9index_set_47__repr__.doc = __pyx_doc_8PyClical_9index_set_47__repr__;
31170  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_47__repr__;
31171  }
31172  }
31173  #endif
31174  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31175  {
31176  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_index_set, "__str__"); if (unlikely(!wrapper)) __PYX_ERR(0, 46, __pyx_L1_error)
31177  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31178  __pyx_wrapperbase_8PyClical_9index_set_49__str__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31179  __pyx_wrapperbase_8PyClical_9index_set_49__str__.doc = __pyx_doc_8PyClical_9index_set_49__str__;
31180  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_49__str__;
31181  }
31182  }
31183  #endif
31184  if (__Pyx_SetVtable(__pyx_ptype_8PyClical_index_set, __pyx_vtabptr_8PyClical_index_set) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
31185  #if !CYTHON_COMPILING_IN_LIMITED_API
31186  if (__Pyx_MergeVtables(__pyx_ptype_8PyClical_index_set) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
31187  #endif
31188  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_index_set, (PyObject *) __pyx_ptype_8PyClical_index_set) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
31189  #if !CYTHON_COMPILING_IN_LIMITED_API
31190  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8PyClical_index_set) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
31191  #endif
31192  __pyx_vtabptr_8PyClical_clifford = &__pyx_vtable_8PyClical_clifford;
31193  __pyx_vtable_8PyClical_clifford.wrap = (PyObject *(*)(struct __pyx_obj_8PyClical_clifford *, Clifford))__pyx_f_8PyClical_8clifford_wrap;
31194  __pyx_vtable_8PyClical_clifford.unwrap = (Clifford (*)(struct __pyx_obj_8PyClical_clifford *))__pyx_f_8PyClical_8clifford_unwrap;
31195  __pyx_vtable_8PyClical_clifford.copy = (PyObject *(*)(struct __pyx_obj_8PyClical_clifford *, int __pyx_skip_dispatch))__pyx_f_8PyClical_8clifford_copy;
31196  #if CYTHON_USE_TYPE_SPECS
31197  __pyx_ptype_8PyClical_clifford = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8PyClical_clifford_spec, NULL); if (unlikely(!__pyx_ptype_8PyClical_clifford)) __PYX_ERR(0, 537, __pyx_L1_error)
31198  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8PyClical_clifford_spec, __pyx_ptype_8PyClical_clifford) < 0) __PYX_ERR(0, 537, __pyx_L1_error)
31199  #else
31200  __pyx_ptype_8PyClical_clifford = &__pyx_type_8PyClical_clifford;
31201  #endif
31202  #if !CYTHON_COMPILING_IN_LIMITED_API
31203  #endif
31204  #if !CYTHON_USE_TYPE_SPECS
31205  if (__Pyx_PyType_Ready(__pyx_ptype_8PyClical_clifford) < 0) __PYX_ERR(0, 537, __pyx_L1_error)
31206  #endif
31207  #if PY_MAJOR_VERSION < 3
31208  __pyx_ptype_8PyClical_clifford->tp_print = 0;
31209  #endif
31210  #if !CYTHON_COMPILING_IN_LIMITED_API
31211  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8PyClical_clifford->tp_dictoffset && __pyx_ptype_8PyClical_clifford->tp_getattro == PyObject_GenericGetAttr)) {
31212  __pyx_ptype_8PyClical_clifford->tp_getattro = __Pyx_PyObject_GenericGetAttr;
31213  }
31214  #endif
31215  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31216  {
31217  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__contains__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31218  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31219  __pyx_wrapperbase_8PyClical_8clifford_6__contains__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31220  __pyx_wrapperbase_8PyClical_8clifford_6__contains__.doc = __pyx_doc_8PyClical_8clifford_6__contains__;
31221  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_6__contains__;
31222  }
31223  }
31224  #endif
31225  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31226  {
31227  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31228  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31229  __pyx_wrapperbase_8PyClical_8clifford_8__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31230  __pyx_wrapperbase_8PyClical_8clifford_8__iter__.doc = __pyx_doc_8PyClical_8clifford_8__iter__;
31231  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_8__iter__;
31232  }
31233  }
31234  #endif
31235  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31236  {
31237  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31238  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31239  __pyx_wrapperbase_8PyClical_8clifford_14__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31240  __pyx_wrapperbase_8PyClical_8clifford_14__getitem__.doc = __pyx_doc_8PyClical_8clifford_14__getitem__;
31241  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_14__getitem__;
31242  }
31243  }
31244  #endif
31245  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31246  {
31247  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__neg__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31248  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31249  __pyx_wrapperbase_8PyClical_8clifford_16__neg__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31250  __pyx_wrapperbase_8PyClical_8clifford_16__neg__.doc = __pyx_doc_8PyClical_8clifford_16__neg__;
31251  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_16__neg__;
31252  }
31253  }
31254  #endif
31255  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31256  {
31257  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__pos__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31258  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31259  __pyx_wrapperbase_8PyClical_8clifford_18__pos__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31260  __pyx_wrapperbase_8PyClical_8clifford_18__pos__.doc = __pyx_doc_8PyClical_8clifford_18__pos__;
31261  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_18__pos__;
31262  }
31263  }
31264  #endif
31265  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31266  {
31267  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__add__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31268  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31269  __pyx_wrapperbase_8PyClical_8clifford_20__add__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31270  __pyx_wrapperbase_8PyClical_8clifford_20__add__.doc = __pyx_doc_8PyClical_8clifford_20__add__;
31271  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_20__add__;
31272  }
31273  }
31274  #endif
31275  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31276  {
31277  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__radd__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31278  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31279  __pyx_wrapperbase_8PyClical_8clifford_22__radd__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31280  __pyx_wrapperbase_8PyClical_8clifford_22__radd__.doc = __pyx_doc_8PyClical_8clifford_22__radd__;
31281  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_22__radd__;
31282  }
31283  }
31284  #endif
31285  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31286  {
31287  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__iadd__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31288  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31289  __pyx_wrapperbase_8PyClical_8clifford_24__iadd__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31290  __pyx_wrapperbase_8PyClical_8clifford_24__iadd__.doc = __pyx_doc_8PyClical_8clifford_24__iadd__;
31291  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_24__iadd__;
31292  }
31293  }
31294  #endif
31295  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31296  {
31297  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__sub__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31298  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31299  __pyx_wrapperbase_8PyClical_8clifford_26__sub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31300  __pyx_wrapperbase_8PyClical_8clifford_26__sub__.doc = __pyx_doc_8PyClical_8clifford_26__sub__;
31301  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_26__sub__;
31302  }
31303  }
31304  #endif
31305  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31306  {
31307  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__rsub__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31308  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31309  __pyx_wrapperbase_8PyClical_8clifford_28__rsub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31310  __pyx_wrapperbase_8PyClical_8clifford_28__rsub__.doc = __pyx_doc_8PyClical_8clifford_28__rsub__;
31311  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_28__rsub__;
31312  }
31313  }
31314  #endif
31315  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31316  {
31317  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__isub__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31318  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31319  __pyx_wrapperbase_8PyClical_8clifford_30__isub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31320  __pyx_wrapperbase_8PyClical_8clifford_30__isub__.doc = __pyx_doc_8PyClical_8clifford_30__isub__;
31321  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_30__isub__;
31322  }
31323  }
31324  #endif
31325  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31326  {
31327  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__mul__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31328  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31329  __pyx_wrapperbase_8PyClical_8clifford_32__mul__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31330  __pyx_wrapperbase_8PyClical_8clifford_32__mul__.doc = __pyx_doc_8PyClical_8clifford_32__mul__;
31331  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_32__mul__;
31332  }
31333  }
31334  #endif
31335  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31336  {
31337  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__rmul__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31338  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31339  __pyx_wrapperbase_8PyClical_8clifford_34__rmul__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31340  __pyx_wrapperbase_8PyClical_8clifford_34__rmul__.doc = __pyx_doc_8PyClical_8clifford_34__rmul__;
31341  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_34__rmul__;
31342  }
31343  }
31344  #endif
31345  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31346  {
31347  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__imul__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31348  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31349  __pyx_wrapperbase_8PyClical_8clifford_36__imul__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31350  __pyx_wrapperbase_8PyClical_8clifford_36__imul__.doc = __pyx_doc_8PyClical_8clifford_36__imul__;
31351  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_36__imul__;
31352  }
31353  }
31354  #endif
31355  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31356  {
31357  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__mod__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31358  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31359  __pyx_wrapperbase_8PyClical_8clifford_38__mod__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31360  __pyx_wrapperbase_8PyClical_8clifford_38__mod__.doc = __pyx_doc_8PyClical_8clifford_38__mod__;
31361  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_38__mod__;
31362  }
31363  }
31364  #endif
31365  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31366  {
31367  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__rmod__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31368  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31369  __pyx_wrapperbase_8PyClical_8clifford_40__rmod__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31370  __pyx_wrapperbase_8PyClical_8clifford_40__rmod__.doc = __pyx_doc_8PyClical_8clifford_40__rmod__;
31371  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_40__rmod__;
31372  }
31373  }
31374  #endif
31375  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31376  {
31377  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__imod__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31378  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31379  __pyx_wrapperbase_8PyClical_8clifford_42__imod__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31380  __pyx_wrapperbase_8PyClical_8clifford_42__imod__.doc = __pyx_doc_8PyClical_8clifford_42__imod__;
31381  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_42__imod__;
31382  }
31383  }
31384  #endif
31385  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31386  {
31387  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__and__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31388  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31389  __pyx_wrapperbase_8PyClical_8clifford_44__and__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31390  __pyx_wrapperbase_8PyClical_8clifford_44__and__.doc = __pyx_doc_8PyClical_8clifford_44__and__;
31391  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_44__and__;
31392  }
31393  }
31394  #endif
31395  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31396  {
31397  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__rand__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31398  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31399  __pyx_wrapperbase_8PyClical_8clifford_46__rand__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31400  __pyx_wrapperbase_8PyClical_8clifford_46__rand__.doc = __pyx_doc_8PyClical_8clifford_46__rand__;
31401  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_46__rand__;
31402  }
31403  }
31404  #endif
31405  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31406  {
31407  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__iand__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31408  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31409  __pyx_wrapperbase_8PyClical_8clifford_48__iand__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31410  __pyx_wrapperbase_8PyClical_8clifford_48__iand__.doc = __pyx_doc_8PyClical_8clifford_48__iand__;
31411  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_48__iand__;
31412  }
31413  }
31414  #endif
31415  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31416  {
31417  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__xor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31418  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31419  __pyx_wrapperbase_8PyClical_8clifford_50__xor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31420  __pyx_wrapperbase_8PyClical_8clifford_50__xor__.doc = __pyx_doc_8PyClical_8clifford_50__xor__;
31421  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_50__xor__;
31422  }
31423  }
31424  #endif
31425  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31426  {
31427  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__rxor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31428  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31429  __pyx_wrapperbase_8PyClical_8clifford_52__rxor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31430  __pyx_wrapperbase_8PyClical_8clifford_52__rxor__.doc = __pyx_doc_8PyClical_8clifford_52__rxor__;
31431  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_52__rxor__;
31432  }
31433  }
31434  #endif
31435  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31436  {
31437  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__ixor__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31438  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31439  __pyx_wrapperbase_8PyClical_8clifford_54__ixor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31440  __pyx_wrapperbase_8PyClical_8clifford_54__ixor__.doc = __pyx_doc_8PyClical_8clifford_54__ixor__;
31441  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_54__ixor__;
31442  }
31443  }
31444  #endif
31445  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31446  {
31447  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__truediv__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31448  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31449  __pyx_wrapperbase_8PyClical_8clifford_56__truediv__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31450  __pyx_wrapperbase_8PyClical_8clifford_56__truediv__.doc = __pyx_doc_8PyClical_8clifford_56__truediv__;
31451  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_56__truediv__;
31452  }
31453  }
31454  #endif
31455  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31456  {
31457  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__rtruediv__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31458  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31459  __pyx_wrapperbase_8PyClical_8clifford_58__rtruediv__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31460  __pyx_wrapperbase_8PyClical_8clifford_58__rtruediv__.doc = __pyx_doc_8PyClical_8clifford_58__rtruediv__;
31461  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_58__rtruediv__;
31462  }
31463  }
31464  #endif
31465  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
31466  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31467  {
31468  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__idiv__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31469  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31470  __pyx_wrapperbase_8PyClical_8clifford_60__idiv__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31471  __pyx_wrapperbase_8PyClical_8clifford_60__idiv__.doc = __pyx_doc_8PyClical_8clifford_60__idiv__;
31472  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_60__idiv__;
31473  }
31474  }
31475  #endif
31476  #endif
31477  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31478  {
31479  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__or__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31480  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31481  __pyx_wrapperbase_8PyClical_8clifford_64__or__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31482  __pyx_wrapperbase_8PyClical_8clifford_64__or__.doc = __pyx_doc_8PyClical_8clifford_64__or__;
31483  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_64__or__;
31484  }
31485  }
31486  #endif
31487  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31488  {
31489  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__ior__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31490  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31491  __pyx_wrapperbase_8PyClical_8clifford_66__ior__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31492  __pyx_wrapperbase_8PyClical_8clifford_66__ior__.doc = __pyx_doc_8PyClical_8clifford_66__ior__;
31493  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_66__ior__;
31494  }
31495  }
31496  #endif
31497  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31498  {
31499  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__pow__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31500  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31501  __pyx_wrapperbase_8PyClical_8clifford_68__pow__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31502  __pyx_wrapperbase_8PyClical_8clifford_68__pow__.doc = __pyx_doc_8PyClical_8clifford_68__pow__;
31503  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_68__pow__;
31504  }
31505  }
31506  #endif
31507  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31508  {
31509  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31510  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31511  __pyx_wrapperbase_8PyClical_8clifford_74__call__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31512  __pyx_wrapperbase_8PyClical_8clifford_74__call__.doc = __pyx_doc_8PyClical_8clifford_74__call__;
31513  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_74__call__;
31514  }
31515  }
31516  #endif
31517  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31518  {
31519  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31520  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31521  __pyx_wrapperbase_8PyClical_8clifford_108__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31522  __pyx_wrapperbase_8PyClical_8clifford_108__repr__.doc = __pyx_doc_8PyClical_8clifford_108__repr__;
31523  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_108__repr__;
31524  }
31525  }
31526  #endif
31527  #if CYTHON_UPDATE_DESCRIPTOR_DOC
31528  {
31529  PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_8PyClical_clifford, "__str__"); if (unlikely(!wrapper)) __PYX_ERR(0, 537, __pyx_L1_error)
31530  if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
31531  __pyx_wrapperbase_8PyClical_8clifford_110__str__ = *((PyWrapperDescrObject *)wrapper)->d_base;
31532  __pyx_wrapperbase_8PyClical_8clifford_110__str__.doc = __pyx_doc_8PyClical_8clifford_110__str__;
31533  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_110__str__;
31534  }
31535  }
31536  #endif
31537  if (__Pyx_SetVtable(__pyx_ptype_8PyClical_clifford, __pyx_vtabptr_8PyClical_clifford) < 0) __PYX_ERR(0, 537, __pyx_L1_error)
31538  #if !CYTHON_COMPILING_IN_LIMITED_API
31539  if (__Pyx_MergeVtables(__pyx_ptype_8PyClical_clifford) < 0) __PYX_ERR(0, 537, __pyx_L1_error)
31540  #endif
31541  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_clifford, (PyObject *) __pyx_ptype_8PyClical_clifford) < 0) __PYX_ERR(0, 537, __pyx_L1_error)
31542  #if !CYTHON_COMPILING_IN_LIMITED_API
31543  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8PyClical_clifford) < 0) __PYX_ERR(0, 537, __pyx_L1_error)
31544  #endif
31545  #if CYTHON_USE_TYPE_SPECS
31546  __pyx_ptype_8PyClical___pyx_scope_struct____iter__ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8PyClical___pyx_scope_struct____iter___spec, NULL); if (unlikely(!__pyx_ptype_8PyClical___pyx_scope_struct____iter__)) __PYX_ERR(0, 229, __pyx_L1_error)
31547  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8PyClical___pyx_scope_struct____iter___spec, __pyx_ptype_8PyClical___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
31548  #else
31549  __pyx_ptype_8PyClical___pyx_scope_struct____iter__ = &__pyx_type_8PyClical___pyx_scope_struct____iter__;
31550  #endif
31551  #if !CYTHON_COMPILING_IN_LIMITED_API
31552  #endif
31553  #if !CYTHON_USE_TYPE_SPECS
31554  if (__Pyx_PyType_Ready(__pyx_ptype_8PyClical___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
31555  #endif
31556  #if PY_MAJOR_VERSION < 3
31557  __pyx_ptype_8PyClical___pyx_scope_struct____iter__->tp_print = 0;
31558  #endif
31559  #if !CYTHON_COMPILING_IN_LIMITED_API
31560  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8PyClical___pyx_scope_struct____iter__->tp_dictoffset && __pyx_ptype_8PyClical___pyx_scope_struct____iter__->tp_getattro == PyObject_GenericGetAttr)) {
31561  __pyx_ptype_8PyClical___pyx_scope_struct____iter__->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
31562  }
31563  #endif
31564  __Pyx_RefNannyFinishContext();
31565  return 0;
31566  __pyx_L1_error:;
31567  __Pyx_RefNannyFinishContext();
31568  return -1;
31569 }
31570 
31571 static int __Pyx_modinit_type_import_code(void) {
31572  __Pyx_RefNannyDeclarations
31573  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
31574  /*--- Type import code ---*/
31575  __Pyx_RefNannyFinishContext();
31576  return 0;
31577 }
31578 
31579 static int __Pyx_modinit_variable_import_code(void) {
31580  __Pyx_RefNannyDeclarations
31581  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
31582  /*--- Variable import code ---*/
31583  __Pyx_RefNannyFinishContext();
31584  return 0;
31585 }
31586 
31587 static int __Pyx_modinit_function_import_code(void) {
31588  __Pyx_RefNannyDeclarations
31589  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
31590  /*--- Function import code ---*/
31591  __Pyx_RefNannyFinishContext();
31592  return 0;
31593 }
31594 
31595 
31596 #if PY_MAJOR_VERSION >= 3
31597 #if CYTHON_PEP489_MULTI_PHASE_INIT
31598 static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
31599 static int __pyx_pymod_exec_PyClical(PyObject* module); /*proto*/
31600 static PyModuleDef_Slot __pyx_moduledef_slots[] = {
31601  {Py_mod_create, (void*)__pyx_pymod_create},
31602  {Py_mod_exec, (void*)__pyx_pymod_exec_PyClical},
31603  {0, NULL}
31604 };
31605 #endif
31606 
31607 #ifdef __cplusplus
31608 namespace {
31609  struct PyModuleDef __pyx_moduledef =
31610  #else
31611  static struct PyModuleDef __pyx_moduledef =
31612  #endif
31613  {
31614  PyModuleDef_HEAD_INIT,
31615  "PyClical",
31616  0, /* m_doc */
31617  #if CYTHON_PEP489_MULTI_PHASE_INIT
31618  0, /* m_size */
31619  #elif CYTHON_USE_MODULE_STATE
31620  sizeof(__pyx_mstate), /* m_size */
31621  #else
31622  -1, /* m_size */
31623  #endif
31624  __pyx_methods /* m_methods */,
31625  #if CYTHON_PEP489_MULTI_PHASE_INIT
31626  __pyx_moduledef_slots, /* m_slots */
31627  #else
31628  NULL, /* m_reload */
31629  #endif
31630  #if CYTHON_USE_MODULE_STATE
31631  __pyx_m_traverse, /* m_traverse */
31632  __pyx_m_clear, /* m_clear */
31633  NULL /* m_free */
31634  #else
31635  NULL, /* m_traverse */
31636  NULL, /* m_clear */
31637  NULL /* m_free */
31638  #endif
31639  };
31640  #ifdef __cplusplus
31641 } /* anonymous namespace */
31642 #endif
31643 #endif
31644 
31645 #ifndef CYTHON_NO_PYINIT_EXPORT
31646 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
31647 #elif PY_MAJOR_VERSION < 3
31648 #ifdef __cplusplus
31649 #define __Pyx_PyMODINIT_FUNC extern "C" void
31650 #else
31651 #define __Pyx_PyMODINIT_FUNC void
31652 #endif
31653 #else
31654 #ifdef __cplusplus
31655 #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
31656 #else
31657 #define __Pyx_PyMODINIT_FUNC PyObject *
31658 #endif
31659 #endif
31660 
31661 
31662 #if PY_MAJOR_VERSION < 3
31663 __Pyx_PyMODINIT_FUNC initPyClical(void) CYTHON_SMALL_CODE; /*proto*/
31664 __Pyx_PyMODINIT_FUNC initPyClical(void)
31665 #else
31666 __Pyx_PyMODINIT_FUNC PyInit_PyClical(void) CYTHON_SMALL_CODE; /*proto*/
31667 __Pyx_PyMODINIT_FUNC PyInit_PyClical(void)
31668 #if CYTHON_PEP489_MULTI_PHASE_INIT
31669 {
31670  return PyModuleDef_Init(&__pyx_moduledef);
31671 }
31672 static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
31673  #if PY_VERSION_HEX >= 0x030700A1
31674  static PY_INT64_T main_interpreter_id = -1;
31675  PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
31676  if (main_interpreter_id == -1) {
31677  main_interpreter_id = current_id;
31678  return (unlikely(current_id == -1)) ? -1 : 0;
31679  } else if (unlikely(main_interpreter_id != current_id))
31680  #else
31681  static PyInterpreterState *main_interpreter = NULL;
31682  PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
31683  if (!main_interpreter) {
31684  main_interpreter = current_interpreter;
31685  } else if (unlikely(main_interpreter != current_interpreter))
31686  #endif
31687  {
31688  PyErr_SetString(
31689  PyExc_ImportError,
31690  "Interpreter change detected - this module can only be loaded into one interpreter per process.");
31691  return -1;
31692  }
31693  return 0;
31694 }
31695 #if CYTHON_COMPILING_IN_LIMITED_API
31696 static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
31697 #else
31698 static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
31699 #endif
31700 {
31701  PyObject *value = PyObject_GetAttrString(spec, from_name);
31702  int result = 0;
31703  if (likely(value)) {
31704  if (allow_none || value != Py_None) {
31705 #if CYTHON_COMPILING_IN_LIMITED_API
31706  result = PyModule_AddObject(module, to_name, value);
31707 #else
31708  result = PyDict_SetItemString(moddict, to_name, value);
31709 #endif
31710  }
31711  Py_DECREF(value);
31712  } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
31713  PyErr_Clear();
31714  } else {
31715  result = -1;
31716  }
31717  return result;
31718 }
31719 static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
31720  PyObject *module = NULL, *moddict, *modname;
31721  CYTHON_UNUSED_VAR(def);
31722  if (__Pyx_check_single_interpreter())
31723  return NULL;
31724  if (__pyx_m)
31725  return __Pyx_NewRef(__pyx_m);
31726  modname = PyObject_GetAttrString(spec, "name");
31727  if (unlikely(!modname)) goto bad;
31728  module = PyModule_NewObject(modname);
31729  Py_DECREF(modname);
31730  if (unlikely(!module)) goto bad;
31731 #if CYTHON_COMPILING_IN_LIMITED_API
31732  moddict = module;
31733 #else
31734  moddict = PyModule_GetDict(module);
31735  if (unlikely(!moddict)) goto bad;
31736 #endif
31737  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
31738  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
31739  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
31740  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
31741  return module;
31742 bad:
31743  Py_XDECREF(module);
31744  return NULL;
31745 }
31746 
31747 
31748 static CYTHON_SMALL_CODE int __pyx_pymod_exec_PyClical(PyObject *__pyx_pyinit_module)
31749 #endif
31750 #endif
31751 {
31752  int stringtab_initialized = 0;
31753  #if CYTHON_USE_MODULE_STATE
31754  int pystate_addmodule_run = 0;
31755  #endif
31756  PyObject *__pyx_t_1 = NULL;
31757  PyObject *__pyx_t_2 = NULL;
31758  PyObject *__pyx_t_3 = NULL;
31759  PyObject *__pyx_t_4 = NULL;
31760  int __pyx_t_5;
31761  int __pyx_lineno = 0;
31762  const char *__pyx_filename = NULL;
31763  int __pyx_clineno = 0;
31764  __Pyx_RefNannyDeclarations
31765  #if CYTHON_PEP489_MULTI_PHASE_INIT
31766  if (__pyx_m) {
31767  if (__pyx_m == __pyx_pyinit_module) return 0;
31768  PyErr_SetString(PyExc_RuntimeError, "Module 'PyClical' has already been imported. Re-initialisation is not supported.");
31769  return -1;
31770  }
31771  #elif PY_MAJOR_VERSION >= 3
31772  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
31773  #endif
31774  /*--- Module creation code ---*/
31775  #if CYTHON_PEP489_MULTI_PHASE_INIT
31776  __pyx_m = __pyx_pyinit_module;
31777  Py_INCREF(__pyx_m);
31778  #else
31779  #if PY_MAJOR_VERSION < 3
31780  __pyx_m = Py_InitModule4("PyClical", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
31781  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
31782  #elif CYTHON_USE_MODULE_STATE
31783  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
31784  {
31785  int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
31786  __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "PyClical" pseudovariable */
31787  if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
31788  pystate_addmodule_run = 1;
31789  }
31790  #else
31791  __pyx_m = PyModule_Create(&__pyx_moduledef);
31792  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
31793  #endif
31794  #endif
31795  CYTHON_UNUSED_VAR(__pyx_t_1);
31796  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
31797  Py_INCREF(__pyx_d);
31798  __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
31799  __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
31800  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31801  #if CYTHON_REFNANNY
31802 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
31803 if (!__Pyx_RefNanny) {
31804  PyErr_Clear();
31805  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
31806  if (!__Pyx_RefNanny)
31807  Py_FatalError("failed to import 'refnanny' module");
31808 }
31809 #endif
31810  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_PyClical(void)", 0);
31811  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)
31812  #ifdef __Pxy_PyFrame_Initialize_Offsets
31813  __Pxy_PyFrame_Initialize_Offsets();
31814  #endif
31815  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
31816  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
31817  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
31818  #ifdef __Pyx_CyFunction_USED
31819  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31820  #endif
31821  #ifdef __Pyx_FusedFunction_USED
31822  if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31823  #endif
31824  #ifdef __Pyx_Coroutine_USED
31825  if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31826  #endif
31827  #ifdef __Pyx_Generator_USED
31828  if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31829  #endif
31830  #ifdef __Pyx_AsyncGen_USED
31831  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31832  #endif
31833  #ifdef __Pyx_StopAsyncIteration_USED
31834  if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31835  #endif
31836  /*--- Library function declarations ---*/
31837  /*--- Threads initialization code ---*/
31838  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
31839  PyEval_InitThreads();
31840  #endif
31841  /*--- Initialize various global constants etc. ---*/
31842  if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31843  stringtab_initialized = 1;
31844  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31845  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
31846  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31847  #endif
31848  if (__pyx_module_is_main_PyClical) {
31849  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31850  }
31851  #if PY_MAJOR_VERSION >= 3
31852  {
31853  PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
31854  if (!PyDict_GetItemString(modules, "PyClical")) {
31855  if (unlikely((PyDict_SetItemString(modules, "PyClical", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
31856  }
31857  }
31858  #endif
31859  /*--- Builtin init code ---*/
31860  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31861  /*--- Constants init code ---*/
31862  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31863  /*--- Global type/function init code ---*/
31864  (void)__Pyx_modinit_global_init_code();
31865  (void)__Pyx_modinit_variable_export_code();
31866  (void)__Pyx_modinit_function_export_code();
31867  if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
31868  (void)__Pyx_modinit_type_import_code();
31869  (void)__Pyx_modinit_variable_import_code();
31870  (void)__Pyx_modinit_function_import_code();
31871  /*--- Execution code ---*/
31872  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
31873  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
31874  #endif
31875 
31876  /* "PyClical.pyx":29
31877  * # C. Doran and A. Lasenby, "Geometric algebra for physicists", Cambridge, 2003.
31878  *
31879  * import math # <<<<<<<<<<<<<<
31880  * import numbers
31881  * import collections
31882  */
31883  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_math, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
31884  __Pyx_GOTREF(__pyx_t_2);
31885  if (PyDict_SetItem(__pyx_d, __pyx_n_s_math, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
31886  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31887 
31888  /* "PyClical.pyx":30
31889  *
31890  * import math
31891  * import numbers # <<<<<<<<<<<<<<
31892  * import collections
31893  *
31894  */
31895  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_numbers, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error)
31896  __Pyx_GOTREF(__pyx_t_2);
31897  if (PyDict_SetItem(__pyx_d, __pyx_n_s_numbers, __pyx_t_2) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
31898  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31899 
31900  /* "PyClical.pyx":31
31901  * import math
31902  * import numbers
31903  * import collections # <<<<<<<<<<<<<<
31904  *
31905  * from PyClical cimport *
31906  */
31907  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_collections, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)
31908  __Pyx_GOTREF(__pyx_t_2);
31909  if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_2) < 0) __PYX_ERR(0, 31, __pyx_L1_error)
31910  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31911 
31912  /* "PyClical.pyx":35
31913  * from PyClical cimport *
31914  *
31915  * __version__ = str(glucat_package_version,'utf-8') # <<<<<<<<<<<<<<
31916  *
31917  * # Forward reference
31918  */
31919  __pyx_t_2 = __pyx_convert_PyBytes_string_to_py_std__in_string(glucat_package_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
31920  __Pyx_GOTREF(__pyx_t_2);
31921  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error)
31922  __Pyx_GOTREF(__pyx_t_3);
31923  __Pyx_GIVEREF(__pyx_t_2);
31924  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error);
31925  __Pyx_INCREF(__pyx_kp_u_utf_8);
31926  __Pyx_GIVEREF(__pyx_kp_u_utf_8);
31927  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_u_utf_8)) __PYX_ERR(0, 35, __pyx_L1_error);
31928  __pyx_t_2 = 0;
31929  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
31930  __Pyx_GOTREF(__pyx_t_2);
31931  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
31932  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error)
31933  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31934 
31935  /* "PyClical.pyx":65
31936  * return self.instance[0]
31937  *
31938  * cpdef copy(index_set self): # <<<<<<<<<<<<<<
31939  * """
31940  * Copy this index_set object.
31941  */
31942  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_1copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_copy, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
31943  __Pyx_GOTREF(__pyx_t_2);
31944  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(0, 65, __pyx_L1_error)
31945  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31946  PyType_Modified(__pyx_ptype_8PyClical_index_set);
31947 
31948  /* "PyClical.pyx":315
31949  * return self.wrap( self.unwrap() | toIndexSet(rhs) )
31950  *
31951  * def count(self): # <<<<<<<<<<<<<<
31952  * """
31953  * Cardinality: Number of indices included in set.
31954  */
31955  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_32count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_count, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error)
31956  __Pyx_GOTREF(__pyx_t_2);
31957  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_count, __pyx_t_2) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
31958  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31959  PyType_Modified(__pyx_ptype_8PyClical_index_set);
31960 
31961  /* "PyClical.pyx":324
31962  * return self.instance.count()
31963  *
31964  * def count_neg(self): # <<<<<<<<<<<<<<
31965  * """
31966  * Number of negative indices included in set.
31967  */
31968  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_34count_neg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_count_neg, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error)
31969  __Pyx_GOTREF(__pyx_t_2);
31970  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_count_neg, __pyx_t_2) < 0) __PYX_ERR(0, 324, __pyx_L1_error)
31971  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31972  PyType_Modified(__pyx_ptype_8PyClical_index_set);
31973 
31974  /* "PyClical.pyx":333
31975  * return self.instance.count_neg()
31976  *
31977  * def count_pos(self): # <<<<<<<<<<<<<<
31978  * """
31979  * Number of positive indices included in set.
31980  */
31981  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_36count_pos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_count_pos, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error)
31982  __Pyx_GOTREF(__pyx_t_2);
31983  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_count_pos, __pyx_t_2) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
31984  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31985  PyType_Modified(__pyx_ptype_8PyClical_index_set);
31986 
31987  /* "PyClical.pyx":342
31988  * return self.instance.count_pos()
31989  *
31990  * def min(self): # <<<<<<<<<<<<<<
31991  * """
31992  * Minimum member.
31993  */
31994  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_38min, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_min, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error)
31995  __Pyx_GOTREF(__pyx_t_2);
31996  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_min, __pyx_t_2) < 0) __PYX_ERR(0, 342, __pyx_L1_error)
31997  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
31998  PyType_Modified(__pyx_ptype_8PyClical_index_set);
31999 
32000  /* "PyClical.pyx":351
32001  * return self.instance.min()
32002  *
32003  * def max(self): # <<<<<<<<<<<<<<
32004  * """
32005  * Maximum member.
32006  */
32007  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_40max, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_max, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error)
32008  __Pyx_GOTREF(__pyx_t_2);
32009  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_max, __pyx_t_2) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
32010  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32011  PyType_Modified(__pyx_ptype_8PyClical_index_set);
32012 
32013  /* "PyClical.pyx":360
32014  * return self.instance.max()
32015  *
32016  * def hash_fn(self): # <<<<<<<<<<<<<<
32017  * """
32018  * Hash function.
32019  */
32020  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_42hash_fn, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_hash_fn, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error)
32021  __Pyx_GOTREF(__pyx_t_2);
32022  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_hash_fn, __pyx_t_2) < 0) __PYX_ERR(0, 360, __pyx_L1_error)
32023  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32024  PyType_Modified(__pyx_ptype_8PyClical_index_set);
32025 
32026  /* "PyClical.pyx":366
32027  * return self.instance.hash_fn()
32028  *
32029  * def sign_of_mult(self, rhs): # <<<<<<<<<<<<<<
32030  * """
32031  * Sign of geometric product of two Clifford basis elements.
32032  */
32033  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_44sign_of_mult, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_sign_of_mult, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
32034  __Pyx_GOTREF(__pyx_t_2);
32035  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_sign_of_mult, __pyx_t_2) < 0) __PYX_ERR(0, 366, __pyx_L1_error)
32036  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32037  PyType_Modified(__pyx_ptype_8PyClical_index_set);
32038 
32039  /* "PyClical.pyx":375
32040  * return self.instance.sign_of_mult(toIndexSet(rhs))
32041  *
32042  * def sign_of_square(self): # <<<<<<<<<<<<<<
32043  * """
32044  * Sign of geometric square of a Clifford basis element.
32045  */
32046  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_46sign_of_square, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set_sign_of_square, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 375, __pyx_L1_error)
32047  __Pyx_GOTREF(__pyx_t_2);
32048  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_index_set, __pyx_n_s_sign_of_square, __pyx_t_2) < 0) __PYX_ERR(0, 375, __pyx_L1_error)
32049  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32050  PyType_Modified(__pyx_ptype_8PyClical_index_set);
32051 
32052  /* "(tree fragment)":1
32053  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
32054  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
32055  * def __setstate_cython__(self, __pyx_state):
32056  */
32057  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_52__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set___reduce_cython, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
32058  __Pyx_GOTREF(__pyx_t_2);
32059  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
32060  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32061 
32062  /* "(tree fragment)":3
32063  * def __reduce_cython__(self):
32064  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
32065  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
32066  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
32067  */
32068  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9index_set_54__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_index_set___setstate_cython, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
32069  __Pyx_GOTREF(__pyx_t_2);
32070  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
32071  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32072 
32073  /* "PyClical.pyx":406
32074  * return index_set_to_str( self.unwrap() ).decode()
32075  *
32076  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
32077  * """
32078  * Tests for functions that Doctest cannot see.
32079  */
32080  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_1index_set_hidden_doctests, 0, __pyx_n_s_index_set_hidden_doctests, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 406, __pyx_L1_error)
32081  __Pyx_GOTREF(__pyx_t_2);
32082  if (PyDict_SetItem(__pyx_d, __pyx_n_s_index_set_hidden_doctests, __pyx_t_2) < 0) __PYX_ERR(0, 406, __pyx_L1_error)
32083  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32084 
32085  /* "PyClical.pyx":492
32086  * return
32087  *
32088  * cpdef inline compare(lhs,rhs): # <<<<<<<<<<<<<<
32089  * """
32090  * "lexicographic compare" eg. {3,4,5} is less than {3,7,8};
32091  */
32092  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_3compare, 0, __pyx_n_s_compare, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 492, __pyx_L1_error)
32093  __Pyx_GOTREF(__pyx_t_2);
32094  if (PyDict_SetItem(__pyx_d, __pyx_n_s_compare, __pyx_t_2) < 0) __PYX_ERR(0, 492, __pyx_L1_error)
32095  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32096 
32097  /* "PyClical.pyx":504
32098  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) )
32099  *
32100  * cpdef inline min_neg(obj): # <<<<<<<<<<<<<<
32101  * """
32102  * Minimum negative index, or 0 if none.
32103  */
32104  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_5min_neg, 0, __pyx_n_s_min_neg, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
32105  __Pyx_GOTREF(__pyx_t_2);
32106  if (PyDict_SetItem(__pyx_d, __pyx_n_s_min_neg, __pyx_t_2) < 0) __PYX_ERR(0, 504, __pyx_L1_error)
32107  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32108 
32109  /* "PyClical.pyx":513
32110  * return glucat.min_neg( toIndexSet(obj) )
32111  *
32112  * cpdef inline max_pos(obj): # <<<<<<<<<<<<<<
32113  * """
32114  * Maximum positive index, or 0 if none.
32115  */
32116  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_7max_pos, 0, __pyx_n_s_max_pos, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 513, __pyx_L1_error)
32117  __Pyx_GOTREF(__pyx_t_2);
32118  if (PyDict_SetItem(__pyx_d, __pyx_n_s_max_pos, __pyx_t_2) < 0) __PYX_ERR(0, 513, __pyx_L1_error)
32119  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32120 
32121  /* "PyClical.pyx":556
32122  * return self.instance[0]
32123  *
32124  * cpdef copy(clifford self): # <<<<<<<<<<<<<<
32125  * """
32126  * Copy this clifford object.
32127  */
32128  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_1copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_copy, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error)
32129  __Pyx_GOTREF(__pyx_t_2);
32130  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
32131  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32132  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32133 
32134  /* "PyClical.pyx":649
32135  * raise TypeError("Not applicable.")
32136  *
32137  * def reframe(self, ixt): # <<<<<<<<<<<<<<
32138  * """
32139  * Put self into a larger frame, containing the union of self.frame() and index set ixt.
32140  */
32141  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_11reframe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_reframe, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
32142  __Pyx_GOTREF(__pyx_t_2);
32143  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_reframe, __pyx_t_2) < 0) __PYX_ERR(0, 649, __pyx_L1_error)
32144  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32145  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32146 
32147  /* "PyClical.pyx":989
32148  * return self.wrap( self.unwrap() / toClifford(rhs) )
32149  *
32150  * def inv(self): # <<<<<<<<<<<<<<
32151  * """
32152  * Geometric multiplicative inverse.
32153  */
32154  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_63inv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_inv, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error)
32155  __Pyx_GOTREF(__pyx_t_2);
32156  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_inv, __pyx_t_2) < 0) __PYX_ERR(0, 989, __pyx_L1_error)
32157  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32158  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32159 
32160  /* "PyClical.pyx":1043
32161  * return pow(self, m)
32162  *
32163  * def pow(self, m): # <<<<<<<<<<<<<<
32164  * """
32165  * Power: self to the m.
32166  */
32167  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_71pow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_pow, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1043, __pyx_L1_error)
32168  __Pyx_GOTREF(__pyx_t_2);
32169  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_pow, __pyx_t_2) < 0) __PYX_ERR(0, 1043, __pyx_L1_error)
32170  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32171  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32172 
32173  /* "PyClical.pyx":1067
32174  * return exp(m * log(self))
32175  *
32176  * def outer_pow(self, m): # <<<<<<<<<<<<<<
32177  * """
32178  * Outer product power.
32179  */
32180  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_73outer_pow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_outer_pow, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1067, __pyx_L1_error)
32181  __Pyx_GOTREF(__pyx_t_2);
32182  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_outer_pow, __pyx_t_2) < 0) __PYX_ERR(0, 1067, __pyx_L1_error)
32183  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32184  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32185 
32186  /* "PyClical.pyx":1102
32187  * return clifford().wrap( self.instance.call(grade) )
32188  *
32189  * def scalar(self): # <<<<<<<<<<<<<<
32190  * """
32191  * Scalar part.
32192  */
32193  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_77scalar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_scalar, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1102, __pyx_L1_error)
32194  __Pyx_GOTREF(__pyx_t_2);
32195  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_scalar, __pyx_t_2) < 0) __PYX_ERR(0, 1102, __pyx_L1_error)
32196  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32197  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32198 
32199  /* "PyClical.pyx":1113
32200  * return self.instance.scalar()
32201  *
32202  * def pure(self): # <<<<<<<<<<<<<<
32203  * """
32204  * Pure part.
32205  */
32206  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_79pure, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_pure, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1113, __pyx_L1_error)
32207  __Pyx_GOTREF(__pyx_t_2);
32208  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_pure, __pyx_t_2) < 0) __PYX_ERR(0, 1113, __pyx_L1_error)
32209  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32210  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32211 
32212  /* "PyClical.pyx":1124
32213  * return clifford().wrap( self.instance.pure() )
32214  *
32215  * def even(self): # <<<<<<<<<<<<<<
32216  * """
32217  * Even part of multivector, sum of even grade terms.
32218  */
32219  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_81even, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_even, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1124, __pyx_L1_error)
32220  __Pyx_GOTREF(__pyx_t_2);
32221  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_even, __pyx_t_2) < 0) __PYX_ERR(0, 1124, __pyx_L1_error)
32222  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32223  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32224 
32225  /* "PyClical.pyx":1133
32226  * return clifford().wrap( self.instance.even() )
32227  *
32228  * def odd(self): # <<<<<<<<<<<<<<
32229  * """
32230  * Odd part of multivector, sum of odd grade terms.
32231  */
32232  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_83odd, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_odd, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1133, __pyx_L1_error)
32233  __Pyx_GOTREF(__pyx_t_2);
32234  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_odd, __pyx_t_2) < 0) __PYX_ERR(0, 1133, __pyx_L1_error)
32235  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32236  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32237 
32238  /* "PyClical.pyx":1142
32239  * return clifford().wrap( self.instance.odd() )
32240  *
32241  * def vector_part(self, frm = None): # <<<<<<<<<<<<<<
32242  * """
32243  * Vector part of multivector, as a Python list, with respect to frm.
32244  */
32245  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_85vector_part, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_vector_part, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1142, __pyx_L1_error)
32246  __Pyx_GOTREF(__pyx_t_2);
32247  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32248  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_vector_part, __pyx_t_2) < 0) __PYX_ERR(0, 1142, __pyx_L1_error)
32249  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32250  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32251 
32252  /* "PyClical.pyx":1170
32253  * + str(err))
32254  *
32255  * def involute(self): # <<<<<<<<<<<<<<
32256  * """
32257  * Main involution, each {i} is replaced by -{i} in each term,
32258  */
32259  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_87involute, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_involute, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1170, __pyx_L1_error)
32260  __Pyx_GOTREF(__pyx_t_2);
32261  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_involute, __pyx_t_2) < 0) __PYX_ERR(0, 1170, __pyx_L1_error)
32262  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32263  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32264 
32265  /* "PyClical.pyx":1186
32266  * return clifford().wrap( self.instance.involute() )
32267  *
32268  * def reverse(self): # <<<<<<<<<<<<<<
32269  * """
32270  * Reversion, eg. clifford("{1}")*clifford("{2}") -> clifford("{2}")*clifford("{1}").
32271  */
32272  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_89reverse, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_reverse, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1186, __pyx_L1_error)
32273  __Pyx_GOTREF(__pyx_t_2);
32274  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_reverse, __pyx_t_2) < 0) __PYX_ERR(0, 1186, __pyx_L1_error)
32275  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32276  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32277 
32278  /* "PyClical.pyx":1201
32279  * return clifford().wrap( self.instance.reverse() )
32280  *
32281  * def conj(self): # <<<<<<<<<<<<<<
32282  * """
32283  * Conjugation, reverse o involute == involute o reverse.
32284  */
32285  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_91conj, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_conj, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1201, __pyx_L1_error)
32286  __Pyx_GOTREF(__pyx_t_2);
32287  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_conj, __pyx_t_2) < 0) __PYX_ERR(0, 1201, __pyx_L1_error)
32288  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32289  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32290 
32291  /* "PyClical.pyx":1216
32292  * return clifford().wrap( self.instance.conj() )
32293  *
32294  * def quad(self): # <<<<<<<<<<<<<<
32295  * """
32296  * Quadratic form == (rev(x)*x)(0).
32297  */
32298  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_93quad, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_quad, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L1_error)
32299  __Pyx_GOTREF(__pyx_t_2);
32300  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_quad, __pyx_t_2) < 0) __PYX_ERR(0, 1216, __pyx_L1_error)
32301  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32302  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32303 
32304  /* "PyClical.pyx":1227
32305  * return self.instance.quad()
32306  *
32307  * def norm(self): # <<<<<<<<<<<<<<
32308  * """
32309  * Norm == sum of squares of coordinates.
32310  */
32311  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_95norm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_norm, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1227, __pyx_L1_error)
32312  __Pyx_GOTREF(__pyx_t_2);
32313  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_norm, __pyx_t_2) < 0) __PYX_ERR(0, 1227, __pyx_L1_error)
32314  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32315  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32316 
32317  /* "PyClical.pyx":1238
32318  * return self.instance.norm()
32319  *
32320  * def abs(self): # <<<<<<<<<<<<<<
32321  * """
32322  * Absolute value: square root of norm.
32323  */
32324  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_97abs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_abs, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1238, __pyx_L1_error)
32325  __Pyx_GOTREF(__pyx_t_2);
32326  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_abs, __pyx_t_2) < 0) __PYX_ERR(0, 1238, __pyx_L1_error)
32327  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32328  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32329 
32330  /* "PyClical.pyx":1247
32331  * return glucat.abs( self.unwrap() )
32332  *
32333  * def max_abs(self): # <<<<<<<<<<<<<<
32334  * """
32335  * Maximum of absolute values of components of multivector: multivector infinity norm.
32336  */
32337  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_99max_abs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_max_abs, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1247, __pyx_L1_error)
32338  __Pyx_GOTREF(__pyx_t_2);
32339  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_max_abs, __pyx_t_2) < 0) __PYX_ERR(0, 1247, __pyx_L1_error)
32340  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32341  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32342 
32343  /* "PyClical.pyx":1258
32344  * return self.instance.max_abs()
32345  *
32346  * def truncated(self, limit): # <<<<<<<<<<<<<<
32347  * """
32348  * Remove all terms of self with relative size smaller than limit.
32349  */
32350  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_101truncated, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_truncated, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1258, __pyx_L1_error)
32351  __Pyx_GOTREF(__pyx_t_2);
32352  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_truncated, __pyx_t_2) < 0) __PYX_ERR(0, 1258, __pyx_L1_error)
32353  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32354  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32355 
32356  /* "PyClical.pyx":1269
32357  * return clifford().wrap( self.instance.truncated(limit) )
32358  *
32359  * def isinf(self): # <<<<<<<<<<<<<<
32360  * """
32361  * Check if a multivector contains any infinite values.
32362  */
32363  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_103isinf, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_isinf, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1269, __pyx_L1_error)
32364  __Pyx_GOTREF(__pyx_t_2);
32365  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_isinf, __pyx_t_2) < 0) __PYX_ERR(0, 1269, __pyx_L1_error)
32366  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32367  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32368 
32369  /* "PyClical.pyx":1278
32370  * return self.instance.isnan()
32371  *
32372  * def isnan(self): # <<<<<<<<<<<<<<
32373  * """
32374  * Check if a multivector contains any IEEE NaN values.
32375  */
32376  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_105isnan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_isnan, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1278, __pyx_L1_error)
32377  __Pyx_GOTREF(__pyx_t_2);
32378  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_isnan, __pyx_t_2) < 0) __PYX_ERR(0, 1278, __pyx_L1_error)
32379  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32380  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32381 
32382  /* "PyClical.pyx":1287
32383  * return self.instance.isnan()
32384  *
32385  * def frame(self): # <<<<<<<<<<<<<<
32386  * """
32387  * Subalgebra generated by all generators of terms of given multivector.
32388  */
32389  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_107frame, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford_frame, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1287, __pyx_L1_error)
32390  __Pyx_GOTREF(__pyx_t_2);
32391  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8PyClical_clifford, __pyx_n_s_frame, __pyx_t_2) < 0) __PYX_ERR(0, 1287, __pyx_L1_error)
32392  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32393  PyType_Modified(__pyx_ptype_8PyClical_clifford);
32394 
32395  /* "(tree fragment)":1
32396  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
32397  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
32398  * def __setstate_cython__(self, __pyx_state):
32399  */
32400  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_113__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford___reduce_cython, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
32401  __Pyx_GOTREF(__pyx_t_2);
32402  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
32403  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32404 
32405  /* "(tree fragment)":3
32406  * def __reduce_cython__(self):
32407  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
32408  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
32409  * raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
32410  */
32411  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_8clifford_115__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_clifford___setstate_cython, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
32412  __Pyx_GOTREF(__pyx_t_2);
32413  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
32414  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32415 
32416  /* "PyClical.pyx":1316
32417  * return clifford_to_str( self.unwrap() ).decode()
32418  *
32419  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
32420  * """
32421  * Tests for functions that Doctest cannot see.
32422  */
32423  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_9clifford_hidden_doctests, 0, __pyx_n_s_clifford_hidden_doctests, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error)
32424  __Pyx_GOTREF(__pyx_t_2);
32425  if (PyDict_SetItem(__pyx_d, __pyx_n_s_clifford_hidden_doctests, __pyx_t_2) < 0) __PYX_ERR(0, 1316, __pyx_L1_error)
32426  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32427 
32428  /* "PyClical.pyx":1400
32429  * return
32430  *
32431  * cpdef inline error_squared_tol(obj): # <<<<<<<<<<<<<<
32432  * """
32433  * Quadratic norm error tolerance relative to a specific multivector.
32434  */
32435  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_11error_squared_tol, 0, __pyx_n_s_error_squared_tol, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1400, __pyx_L1_error)
32436  __Pyx_GOTREF(__pyx_t_2);
32437  if (PyDict_SetItem(__pyx_d, __pyx_n_s_error_squared_tol, __pyx_t_2) < 0) __PYX_ERR(0, 1400, __pyx_L1_error)
32438  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32439 
32440  /* "PyClical.pyx":1409
32441  * return glucat.error_squared_tol(toClifford(obj))
32442  *
32443  * cpdef inline error_squared(lhs, rhs, threshold): # <<<<<<<<<<<<<<
32444  * """
32445  * Relative or absolute error using the quadratic norm.
32446  */
32447  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_13error_squared, 0, __pyx_n_s_error_squared, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1409, __pyx_L1_error)
32448  __Pyx_GOTREF(__pyx_t_2);
32449  if (PyDict_SetItem(__pyx_d, __pyx_n_s_error_squared, __pyx_t_2) < 0) __PYX_ERR(0, 1409, __pyx_L1_error)
32450  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32451 
32452  /* "PyClical.pyx":1422
32453  * return glucat.error_squared(toClifford(lhs), toClifford(rhs), <scalar_t>threshold)
32454  *
32455  * cpdef inline approx_equal(lhs, rhs, threshold=None, tol=None): # <<<<<<<<<<<<<<
32456  * """
32457  * Test for approximate equality of multivectors.
32458  */
32459  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_15approx_equal, 0, __pyx_n_s_approx_equal, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1422, __pyx_L1_error)
32460  __Pyx_GOTREF(__pyx_t_2);
32461  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__64);
32462  if (PyDict_SetItem(__pyx_d, __pyx_n_s_approx_equal, __pyx_t_2) < 0) __PYX_ERR(0, 1422, __pyx_L1_error)
32463  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32464 
32465  /* "PyClical.pyx":1441
32466  * return glucat.approx_equal(toClifford(lhs), toClifford(rhs), <scalar_t>threshold, <scalar_t>tol)
32467  *
32468  * cpdef inline inv(obj): # <<<<<<<<<<<<<<
32469  * """
32470  * Geometric multiplicative inverse.
32471  */
32472  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_17inv, 0, __pyx_n_s_inv, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error)
32473  __Pyx_GOTREF(__pyx_t_2);
32474  if (PyDict_SetItem(__pyx_d, __pyx_n_s_inv, __pyx_t_2) < 0) __PYX_ERR(0, 1441, __pyx_L1_error)
32475  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32476 
32477  /* "PyClical.pyx":1456
32478  * return clifford(obj).inv()
32479  *
32480  * cpdef inline scalar(obj): # <<<<<<<<<<<<<<
32481  * """
32482  * Scalar part.
32483  */
32484  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_19scalar, 0, __pyx_n_s_scalar, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error)
32485  __Pyx_GOTREF(__pyx_t_2);
32486  if (PyDict_SetItem(__pyx_d, __pyx_n_s_scalar, __pyx_t_2) < 0) __PYX_ERR(0, 1456, __pyx_L1_error)
32487  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32488 
32489  /* "PyClical.pyx":1467
32490  * return clifford(obj).scalar()
32491  *
32492  * cpdef inline real(obj): # <<<<<<<<<<<<<<
32493  * """
32494  * Real part: synonym for scalar part.
32495  */
32496  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_21real, 0, __pyx_n_s_real, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1467, __pyx_L1_error)
32497  __Pyx_GOTREF(__pyx_t_2);
32498  if (PyDict_SetItem(__pyx_d, __pyx_n_s_real, __pyx_t_2) < 0) __PYX_ERR(0, 1467, __pyx_L1_error)
32499  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32500 
32501  /* "PyClical.pyx":1478
32502  * return clifford(obj).scalar()
32503  *
32504  * cpdef inline imag(obj): # <<<<<<<<<<<<<<
32505  * """
32506  * Imaginary part: deprecated (always 0).
32507  */
32508  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_23imag, 0, __pyx_n_s_imag, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1478, __pyx_L1_error)
32509  __Pyx_GOTREF(__pyx_t_2);
32510  if (PyDict_SetItem(__pyx_d, __pyx_n_s_imag, __pyx_t_2) < 0) __PYX_ERR(0, 1478, __pyx_L1_error)
32511  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32512 
32513  /* "PyClical.pyx":1489
32514  * return 0.0
32515  *
32516  * cpdef inline pure(obj): # <<<<<<<<<<<<<<
32517  * """
32518  * Pure part
32519  */
32520  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_25pure, 0, __pyx_n_s_pure, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1489, __pyx_L1_error)
32521  __Pyx_GOTREF(__pyx_t_2);
32522  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pure, __pyx_t_2) < 0) __PYX_ERR(0, 1489, __pyx_L1_error)
32523  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32524 
32525  /* "PyClical.pyx":1500
32526  * return clifford(obj).pure()
32527  *
32528  * cpdef inline even(obj): # <<<<<<<<<<<<<<
32529  * """
32530  * Even part of multivector, sum of even grade terms.
32531  */
32532  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_27even, 0, __pyx_n_s_even, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1500, __pyx_L1_error)
32533  __Pyx_GOTREF(__pyx_t_2);
32534  if (PyDict_SetItem(__pyx_d, __pyx_n_s_even, __pyx_t_2) < 0) __PYX_ERR(0, 1500, __pyx_L1_error)
32535  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32536 
32537  /* "PyClical.pyx":1509
32538  * return clifford(obj).even()
32539  *
32540  * cpdef inline odd(obj): # <<<<<<<<<<<<<<
32541  * """
32542  * Odd part of multivector, sum of odd grade terms.
32543  */
32544  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_29odd, 0, __pyx_n_s_odd, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error)
32545  __Pyx_GOTREF(__pyx_t_2);
32546  if (PyDict_SetItem(__pyx_d, __pyx_n_s_odd, __pyx_t_2) < 0) __PYX_ERR(0, 1509, __pyx_L1_error)
32547  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32548 
32549  /* "PyClical.pyx":1518
32550  * return clifford(obj).odd()
32551  *
32552  * cpdef inline involute(obj): # <<<<<<<<<<<<<<
32553  * """
32554  * Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})
32555  */
32556  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_31involute, 0, __pyx_n_s_involute, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1518, __pyx_L1_error)
32557  __Pyx_GOTREF(__pyx_t_2);
32558  if (PyDict_SetItem(__pyx_d, __pyx_n_s_involute, __pyx_t_2) < 0) __PYX_ERR(0, 1518, __pyx_L1_error)
32559  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32560 
32561  /* "PyClical.pyx":1533
32562  * return clifford(obj).involute()
32563  *
32564  * cpdef inline reverse(obj): # <<<<<<<<<<<<<<
32565  * """
32566  * Reversion, eg. {1}*{2} -> {2}*{1}
32567  */
32568  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_33reverse, 0, __pyx_n_s_reverse, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1533, __pyx_L1_error)
32569  __Pyx_GOTREF(__pyx_t_2);
32570  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reverse, __pyx_t_2) < 0) __PYX_ERR(0, 1533, __pyx_L1_error)
32571  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32572 
32573  /* "PyClical.pyx":1548
32574  * return clifford(obj).reverse()
32575  *
32576  * cpdef inline conj(obj): # <<<<<<<<<<<<<<
32577  * """
32578  * Conjugation, reverse o involute == involute o reverse.
32579  */
32580  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_35conj, 0, __pyx_n_s_conj, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1548, __pyx_L1_error)
32581  __Pyx_GOTREF(__pyx_t_2);
32582  if (PyDict_SetItem(__pyx_d, __pyx_n_s_conj, __pyx_t_2) < 0) __PYX_ERR(0, 1548, __pyx_L1_error)
32583  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32584 
32585  /* "PyClical.pyx":1563
32586  * return clifford(obj).conj()
32587  *
32588  * cpdef inline quad(obj): # <<<<<<<<<<<<<<
32589  * """
32590  * Quadratic form == (rev(x)*x)(0).
32591  */
32592  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_37quad, 0, __pyx_n_s_quad, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __pyx_L1_error)
32593  __Pyx_GOTREF(__pyx_t_2);
32594  if (PyDict_SetItem(__pyx_d, __pyx_n_s_quad, __pyx_t_2) < 0) __PYX_ERR(0, 1563, __pyx_L1_error)
32595  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32596 
32597  /* "PyClical.pyx":1574
32598  * return clifford(obj).quad()
32599  *
32600  * cpdef inline norm(obj): # <<<<<<<<<<<<<<
32601  * """
32602  * norm == sum of squares of coordinates.
32603  */
32604  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_39norm, 0, __pyx_n_s_norm, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
32605  __Pyx_GOTREF(__pyx_t_2);
32606  if (PyDict_SetItem(__pyx_d, __pyx_n_s_norm, __pyx_t_2) < 0) __PYX_ERR(0, 1574, __pyx_L1_error)
32607  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32608 
32609  /* "PyClical.pyx":1585
32610  * return clifford(obj).norm()
32611  *
32612  * cpdef inline abs(obj): # <<<<<<<<<<<<<<
32613  * """
32614  * Absolute value of multivector: multivector 2-norm.
32615  */
32616  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_41abs, 0, __pyx_n_s_abs, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1585, __pyx_L1_error)
32617  __Pyx_GOTREF(__pyx_t_2);
32618  if (PyDict_SetItem(__pyx_d, __pyx_n_s_abs, __pyx_t_2) < 0) __PYX_ERR(0, 1585, __pyx_L1_error)
32619  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32620 
32621  /* "PyClical.pyx":1594
32622  * return glucat.abs(toClifford(obj))
32623  *
32624  * cpdef inline max_abs(obj): # <<<<<<<<<<<<<<
32625  * """
32626  * Maximum absolute value of coordinates multivector: multivector infinity-norm.
32627  */
32628  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_43max_abs, 0, __pyx_n_s_max_abs, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1594, __pyx_L1_error)
32629  __Pyx_GOTREF(__pyx_t_2);
32630  if (PyDict_SetItem(__pyx_d, __pyx_n_s_max_abs, __pyx_t_2) < 0) __PYX_ERR(0, 1594, __pyx_L1_error)
32631  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32632 
32633  /* "PyClical.pyx":1606
32634  * return glucat.max_abs(toClifford(obj))
32635  *
32636  * cpdef inline pow(obj, m): # <<<<<<<<<<<<<<
32637  * """
32638  * Integer power of multivector: obj to the m.
32639  */
32640  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_45pow, 0, __pyx_n_s_pow, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1606, __pyx_L1_error)
32641  __Pyx_GOTREF(__pyx_t_2);
32642  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pow, __pyx_t_2) < 0) __PYX_ERR(0, 1606, __pyx_L1_error)
32643  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32644 
32645  /* "PyClical.pyx":1630
32646  * return clifford(obj).pow(m)
32647  *
32648  * cpdef inline outer_pow(obj, m): # <<<<<<<<<<<<<<
32649  * """
32650  * Outer product power of multivector.
32651  */
32652  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_47outer_pow, 0, __pyx_n_s_outer_pow, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1630, __pyx_L1_error)
32653  __Pyx_GOTREF(__pyx_t_2);
32654  if (PyDict_SetItem(__pyx_d, __pyx_n_s_outer_pow, __pyx_t_2) < 0) __PYX_ERR(0, 1630, __pyx_L1_error)
32655  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32656 
32657  /* "PyClical.pyx":1639
32658  * return clifford(obj).outer_pow(m)
32659  *
32660  * cpdef inline complexifier(obj): # <<<<<<<<<<<<<<
32661  * """
32662  * Square root of -1 which commutes with all members of the frame of the given multivector.
32663  */
32664  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_49complexifier, 0, __pyx_n_s_complexifier, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error)
32665  __Pyx_GOTREF(__pyx_t_2);
32666  if (PyDict_SetItem(__pyx_d, __pyx_n_s_complexifier, __pyx_t_2) < 0) __PYX_ERR(0, 1639, __pyx_L1_error)
32667  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32668 
32669  /* "PyClical.pyx":1654
32670  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
32671  *
32672  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
32673  * """
32674  * Square root of multivector with optional complexifier.
32675  */
32676  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_51sqrt, 0, __pyx_n_s_sqrt, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1654, __pyx_L1_error)
32677  __Pyx_GOTREF(__pyx_t_2);
32678  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32679  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sqrt, __pyx_t_2) < 0) __PYX_ERR(0, 1654, __pyx_L1_error)
32680  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32681 
32682  /* "PyClical.pyx":1677
32683  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
32684  *
32685  * cpdef inline exp(obj): # <<<<<<<<<<<<<<
32686  * """
32687  * Exponential of multivector.
32688  */
32689  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_53exp, 0, __pyx_n_s_exp, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
32690  __Pyx_GOTREF(__pyx_t_2);
32691  if (PyDict_SetItem(__pyx_d, __pyx_n_s_exp, __pyx_t_2) < 0) __PYX_ERR(0, 1677, __pyx_L1_error)
32692  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32693 
32694  /* "PyClical.pyx":1691
32695  * return clifford().wrap( glucat.exp(toClifford(obj)) )
32696  *
32697  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
32698  * """
32699  * Natural logarithm of multivector with optional complexifier.
32700  */
32701  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_55log, 0, __pyx_n_s_log, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1691, __pyx_L1_error)
32702  __Pyx_GOTREF(__pyx_t_2);
32703  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32704  if (PyDict_SetItem(__pyx_d, __pyx_n_s_log, __pyx_t_2) < 0) __PYX_ERR(0, 1691, __pyx_L1_error)
32705  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32706 
32707  /* "PyClical.pyx":1714
32708  * return clifford().wrap( glucat.log(toClifford(obj)) )
32709  *
32710  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
32711  * """
32712  * Cosine of multivector with optional complexifier.
32713  */
32714  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_57cos, 0, __pyx_n_s_cos, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1714, __pyx_L1_error)
32715  __Pyx_GOTREF(__pyx_t_2);
32716  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32717  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cos, __pyx_t_2) < 0) __PYX_ERR(0, 1714, __pyx_L1_error)
32718  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32719 
32720  /* "PyClical.pyx":1731
32721  * return clifford().wrap( glucat.cos(toClifford(obj)) )
32722  *
32723  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
32724  * """
32725  * Inverse cosine of multivector with optional complexifier.
32726  */
32727  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_59acos, 0, __pyx_n_s_acos, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error)
32728  __Pyx_GOTREF(__pyx_t_2);
32729  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32730  if (PyDict_SetItem(__pyx_d, __pyx_n_s_acos, __pyx_t_2) < 0) __PYX_ERR(0, 1731, __pyx_L1_error)
32731  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32732 
32733  /* "PyClical.pyx":1752
32734  * return clifford().wrap( glucat.acos(toClifford(obj)) )
32735  *
32736  * cpdef inline cosh(obj): # <<<<<<<<<<<<<<
32737  * """
32738  * Hyperbolic cosine of multivector.
32739  */
32740  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_61cosh, 0, __pyx_n_s_cosh, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1752, __pyx_L1_error)
32741  __Pyx_GOTREF(__pyx_t_2);
32742  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cosh, __pyx_t_2) < 0) __PYX_ERR(0, 1752, __pyx_L1_error)
32743  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32744 
32745  /* "PyClical.pyx":1768
32746  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
32747  *
32748  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
32749  * """
32750  * Inverse hyperbolic cosine of multivector with optional complexifier.
32751  */
32752  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_63acosh, 0, __pyx_n_s_acosh, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1768, __pyx_L1_error)
32753  __Pyx_GOTREF(__pyx_t_2);
32754  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32755  if (PyDict_SetItem(__pyx_d, __pyx_n_s_acosh, __pyx_t_2) < 0) __PYX_ERR(0, 1768, __pyx_L1_error)
32756  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32757 
32758  /* "PyClical.pyx":1791
32759  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
32760  *
32761  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
32762  * """
32763  * Sine of multivector with optional complexifier.
32764  */
32765  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_65sin, 0, __pyx_n_s_sin, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
32766  __Pyx_GOTREF(__pyx_t_2);
32767  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32768  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sin, __pyx_t_2) < 0) __PYX_ERR(0, 1791, __pyx_L1_error)
32769  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32770 
32771  /* "PyClical.pyx":1810
32772  * return clifford().wrap( glucat.sin(toClifford(obj)) )
32773  *
32774  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
32775  * """
32776  * Inverse sine of multivector with optional complexifier.
32777  */
32778  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_67asin, 0, __pyx_n_s_asin, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1810, __pyx_L1_error)
32779  __Pyx_GOTREF(__pyx_t_2);
32780  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32781  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asin, __pyx_t_2) < 0) __PYX_ERR(0, 1810, __pyx_L1_error)
32782  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32783 
32784  /* "PyClical.pyx":1831
32785  * return clifford().wrap( glucat.asin(toClifford(obj)) )
32786  *
32787  * cpdef inline sinh(obj): # <<<<<<<<<<<<<<
32788  * """
32789  * Hyperbolic sine of multivector.
32790  */
32791  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_69sinh, 0, __pyx_n_s_sinh, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1831, __pyx_L1_error)
32792  __Pyx_GOTREF(__pyx_t_2);
32793  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sinh, __pyx_t_2) < 0) __PYX_ERR(0, 1831, __pyx_L1_error)
32794  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32795 
32796  /* "PyClical.pyx":1845
32797  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
32798  *
32799  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
32800  * """
32801  * Inverse hyperbolic sine of multivector with optional complexifier.
32802  */
32803  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_71asinh, 0, __pyx_n_s_asinh, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1845, __pyx_L1_error)
32804  __Pyx_GOTREF(__pyx_t_2);
32805  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32806  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asinh, __pyx_t_2) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
32807  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32808 
32809  /* "PyClical.pyx":1864
32810  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
32811  *
32812  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
32813  * """
32814  * Tangent of multivector with optional complexifier.
32815  */
32816  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_73tan, 0, __pyx_n_s_tan, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__95)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1864, __pyx_L1_error)
32817  __Pyx_GOTREF(__pyx_t_2);
32818  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32819  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tan, __pyx_t_2) < 0) __PYX_ERR(0, 1864, __pyx_L1_error)
32820  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32821 
32822  /* "PyClical.pyx":1881
32823  * return clifford().wrap( glucat.tan(toClifford(obj)) )
32824  *
32825  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
32826  * """
32827  * Inverse tangent of multivector with optional complexifier.
32828  */
32829  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_75atan, 0, __pyx_n_s_atan, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1881, __pyx_L1_error)
32830  __Pyx_GOTREF(__pyx_t_2);
32831  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32832  if (PyDict_SetItem(__pyx_d, __pyx_n_s_atan, __pyx_t_2) < 0) __PYX_ERR(0, 1881, __pyx_L1_error)
32833  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32834 
32835  /* "PyClical.pyx":1898
32836  * return clifford().wrap( glucat.atan(toClifford(obj)) )
32837  *
32838  * cpdef inline tanh(obj): # <<<<<<<<<<<<<<
32839  * """
32840  * Hyperbolic tangent of multivector.
32841  */
32842  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_77tanh, 0, __pyx_n_s_tanh, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1898, __pyx_L1_error)
32843  __Pyx_GOTREF(__pyx_t_2);
32844  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tanh, __pyx_t_2) < 0) __PYX_ERR(0, 1898, __pyx_L1_error)
32845  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32846 
32847  /* "PyClical.pyx":1910
32848  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
32849  *
32850  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
32851  * """
32852  * Inverse hyperbolic tangent of multivector with optional complexifier.
32853  */
32854  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_79atanh, 0, __pyx_n_s_atanh, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1910, __pyx_L1_error)
32855  __Pyx_GOTREF(__pyx_t_2);
32856  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__43);
32857  if (PyDict_SetItem(__pyx_d, __pyx_n_s_atanh, __pyx_t_2) < 0) __PYX_ERR(0, 1910, __pyx_L1_error)
32858  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32859 
32860  /* "PyClical.pyx":1927
32861  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
32862  *
32863  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
32864  * """
32865  * Random multivector within a frame.
32866  */
32867  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_81random_clifford, 0, __pyx_n_s_random_clifford, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1927, __pyx_L1_error)
32868  __Pyx_GOTREF(__pyx_t_2);
32869  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__101);
32870  if (PyDict_SetItem(__pyx_d, __pyx_n_s_random_clifford, __pyx_t_2) < 0) __PYX_ERR(0, 1927, __pyx_L1_error)
32871  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32872 
32873  /* "PyClical.pyx":1936
32874  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) )
32875  *
32876  * cpdef inline cga3(obj): # <<<<<<<<<<<<<<
32877  * """
32878  * Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.
32879  */
32880  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_83cga3, 0, __pyx_n_s_cga3, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1936, __pyx_L1_error)
32881  __Pyx_GOTREF(__pyx_t_2);
32882  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cga3, __pyx_t_2) < 0) __PYX_ERR(0, 1936, __pyx_L1_error)
32883  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32884 
32885  /* "PyClical.pyx":1945
32886  * return clifford().wrap( glucat.cga3(toClifford(obj)) )
32887  *
32888  * cpdef inline cga3std(obj): # <<<<<<<<<<<<<<
32889  * """
32890  * Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.
32891  */
32892  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_85cga3std, 0, __pyx_n_s_cga3std, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1945, __pyx_L1_error)
32893  __Pyx_GOTREF(__pyx_t_2);
32894  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cga3std, __pyx_t_2) < 0) __PYX_ERR(0, 1945, __pyx_L1_error)
32895  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32896 
32897  /* "PyClical.pyx":1956
32898  * return clifford().wrap( glucat.cga3std(toClifford(obj)) )
32899  *
32900  * cpdef inline agc3(obj): # <<<<<<<<<<<<<<
32901  * """
32902  * Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.
32903  */
32904  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_87agc3, 0, __pyx_n_s_agc3, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1956, __pyx_L1_error)
32905  __Pyx_GOTREF(__pyx_t_2);
32906  if (PyDict_SetItem(__pyx_d, __pyx_n_s_agc3, __pyx_t_2) < 0) __PYX_ERR(0, 1956, __pyx_L1_error)
32907  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32908 
32909  /* "PyClical.pyx":1968
32910  *
32911  * # Some abbreviations.
32912  * scalar_epsilon = epsilon # <<<<<<<<<<<<<<
32913  *
32914  * pi = atan(clifford(1.0)) * 4.0
32915  */
32916  __pyx_t_2 = PyFloat_FromDouble(epsilon); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1968, __pyx_L1_error)
32917  __Pyx_GOTREF(__pyx_t_2);
32918  if (PyDict_SetItem(__pyx_d, __pyx_n_s_scalar_epsilon, __pyx_t_2) < 0) __PYX_ERR(0, 1968, __pyx_L1_error)
32919  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32920 
32921  /* "PyClical.pyx":1970
32922  * scalar_epsilon = epsilon
32923  *
32924  * pi = atan(clifford(1.0)) * 4.0 # <<<<<<<<<<<<<<
32925  * tau = atan(clifford(1.0)) * 8.0
32926  *
32927  */
32928  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error)
32929  __Pyx_GOTREF(__pyx_t_2);
32930  __pyx_t_3 = __pyx_f_8PyClical_atan(__pyx_t_2, 0, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1970, __pyx_L1_error)
32931  __Pyx_GOTREF(__pyx_t_3);
32932  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32933  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_float_4_0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error)
32934  __Pyx_GOTREF(__pyx_t_2);
32935  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
32936  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pi, __pyx_t_2) < 0) __PYX_ERR(0, 1970, __pyx_L1_error)
32937  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32938 
32939  /* "PyClical.pyx":1971
32940  *
32941  * pi = atan(clifford(1.0)) * 4.0
32942  * tau = atan(clifford(1.0)) * 8.0 # <<<<<<<<<<<<<<
32943  *
32944  * cl = clifford
32945  */
32946  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1971, __pyx_L1_error)
32947  __Pyx_GOTREF(__pyx_t_2);
32948  __pyx_t_3 = __pyx_f_8PyClical_atan(__pyx_t_2, 0, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1971, __pyx_L1_error)
32949  __Pyx_GOTREF(__pyx_t_3);
32950  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32951  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_float_8_0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1971, __pyx_L1_error)
32952  __Pyx_GOTREF(__pyx_t_2);
32953  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
32954  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tau, __pyx_t_2) < 0) __PYX_ERR(0, 1971, __pyx_L1_error)
32955  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32956 
32957  /* "PyClical.pyx":1973
32958  * tau = atan(clifford(1.0)) * 8.0
32959  *
32960  * cl = clifford # <<<<<<<<<<<<<<
32961  * """
32962  * Abbreviation for clifford.
32963  */
32964  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cl, ((PyObject *)__pyx_ptype_8PyClical_clifford)) < 0) __PYX_ERR(0, 1973, __pyx_L1_error)
32965 
32966  /* "PyClical.pyx":1991
32967  * """
32968  *
32969  * ist = index_set # <<<<<<<<<<<<<<
32970  * """
32971  * Abbreviation for index_set.
32972  */
32973  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ist, ((PyObject *)__pyx_ptype_8PyClical_index_set)) < 0) __PYX_ERR(0, 1991, __pyx_L1_error)
32974 
32975  /* "PyClical.pyx":1999
32976  * """
32977  *
32978  * def e(obj): # <<<<<<<<<<<<<<
32979  * """
32980  * Abbreviation for clifford(index_set(obj)).
32981  */
32982  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_89e, 0, __pyx_n_s_e, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1999, __pyx_L1_error)
32983  __Pyx_GOTREF(__pyx_t_2);
32984  if (PyDict_SetItem(__pyx_d, __pyx_n_s_e, __pyx_t_2) < 0) __PYX_ERR(0, 1999, __pyx_L1_error)
32985  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32986 
32987  /* "PyClical.pyx":2012
32988  * return clifford(index_set(obj))
32989  *
32990  * def istpq(p, q): # <<<<<<<<<<<<<<
32991  * """
32992  * Abbreviation for index_set({-q,...p}).
32993  */
32994  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_91istpq, 0, __pyx_n_s_istpq, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2012, __pyx_L1_error)
32995  __Pyx_GOTREF(__pyx_t_2);
32996  if (PyDict_SetItem(__pyx_d, __pyx_n_s_istpq, __pyx_t_2) < 0) __PYX_ERR(0, 2012, __pyx_L1_error)
32997  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
32998 
32999  /* "PyClical.pyx":2021
33000  * return index_set(set(range(-q,p+1)))
33001  *
33002  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
33003  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL].
33004  *
33005  */
33006  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2021, __pyx_L1_error)
33007  __Pyx_GOTREF(__pyx_t_2);
33008  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2021, __pyx_L1_error)
33009  __Pyx_GOTREF(__pyx_t_3);
33010  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33011  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2021, __pyx_L1_error)
33012  __Pyx_GOTREF(__pyx_t_2);
33013  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2021, __pyx_L1_error)
33014  __Pyx_GOTREF(__pyx_t_4);
33015  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33016  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2021, __pyx_L1_error)
33017  __Pyx_GOTREF(__pyx_t_2);
33018  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33019  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
33020  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ninf3, __pyx_t_2) < 0) __PYX_ERR(0, 2021, __pyx_L1_error)
33021  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33022 
33023  /* "PyClical.pyx":2022
33024  *
33025  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL].
33026  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
33027  *
33028  * # Doctest interface.
33029  */
33030  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2022, __pyx_L1_error)
33031  __Pyx_GOTREF(__pyx_t_2);
33032  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2022, __pyx_L1_error)
33033  __Pyx_GOTREF(__pyx_t_4);
33034  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33035  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2022, __pyx_L1_error)
33036  __Pyx_GOTREF(__pyx_t_2);
33037  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2022, __pyx_L1_error)
33038  __Pyx_GOTREF(__pyx_t_3);
33039  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33040  __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2022, __pyx_L1_error)
33041  __Pyx_GOTREF(__pyx_t_2);
33042  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
33043  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33044  if (PyDict_SetItem(__pyx_d, __pyx_n_s_nbar3, __pyx_t_2) < 0) __PYX_ERR(0, 2022, __pyx_L1_error)
33045  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33046 
33047  /* "PyClical.pyx":2025
33048  *
33049  * # Doctest interface.
33050  * def _test(): # <<<<<<<<<<<<<<
33051  * import PyClical, doctest
33052  * return doctest.testmod(PyClical)
33053  */
33054  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8PyClical_93_test, 0, __pyx_n_s_test, NULL, __pyx_n_s_PyClical, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2025, __pyx_L1_error)
33055  __Pyx_GOTREF(__pyx_t_2);
33056  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 2025, __pyx_L1_error)
33057  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33058 
33059  /* "PyClical.pyx":2029
33060  * return doctest.testmod(PyClical)
33061  *
33062  * if __name__ == "__main__": # <<<<<<<<<<<<<<
33063  * _test()
33064  */
33065  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error)
33066  __Pyx_GOTREF(__pyx_t_2);
33067  __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_main, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2029, __pyx_L1_error)
33068  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33069  if (__pyx_t_5) {
33070 
33071  /* "PyClical.pyx":2030
33072  *
33073  * if __name__ == "__main__":
33074  * _test() # <<<<<<<<<<<<<<
33075  */
33076  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_test); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2030, __pyx_L1_error)
33077  __Pyx_GOTREF(__pyx_t_2);
33078  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2030, __pyx_L1_error)
33079  __Pyx_GOTREF(__pyx_t_3);
33080  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33081  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33082 
33083  /* "PyClical.pyx":2029
33084  * return doctest.testmod(PyClical)
33085  *
33086  * if __name__ == "__main__": # <<<<<<<<<<<<<<
33087  * _test()
33088  */
33089  }
33090 
33091  /* "PyClical.pyx":1
33092  * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<<
33093  * # cython: language_level=3
33094  * # distutils: language = c++
33095  */
33096  __pyx_t_3 = __Pyx_PyDict_NewPresized(118); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
33097  __Pyx_GOTREF(__pyx_t_3);
33098  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_copy_line_65, __pyx_kp_u_Copy_this_index_set_object_s_in) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33099  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___setitem___line_179, __pyx_kp_u_Set_the_value_of_an_index_set_o) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33100  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___getitem___line_191, __pyx_kp_u_Get_the_value_of_an_index_set_o) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33101  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___iter___line_229, __pyx_kp_u_Iterate_over_the_indices_of_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33102  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___invert___line_240, __pyx_kp_u_Set_complement_not_print_index) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33103  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___xor___line_249, __pyx_kp_u_Symmetric_set_difference_exclus) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33104  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___ixor___line_260, __pyx_kp_u_Symmetric_set_difference_exclus_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33105  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___and___line_271, __pyx_kp_u_Set_intersection_and_print_inde) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33106  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___iand___line_282, __pyx_kp_u_Set_intersection_and_x_index_se) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33107  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___or___line_293, __pyx_kp_u_Set_union_or_print_index_set_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33108  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___ior___line_304, __pyx_kp_u_Set_union_or_x_index_set_1_x_in) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33109  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_count_line_315, __pyx_kp_u_Cardinality_Number_of_indices_i) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33110  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_count_neg_line_324, __pyx_kp_u_Number_of_negative_indices_incl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33111  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_count_pos_line_333, __pyx_kp_u_Number_of_positive_indices_incl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33112  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_min_line_342, __pyx_kp_u_Minimum_member_index_set_1_1_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33113  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_max_line_351, __pyx_kp_u_Maximum_member_index_set_1_1_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33114  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_sign_of_mult_line_366, __pyx_kp_u_Sign_of_geometric_product_of_tw) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33115  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_sign_of_square_line_37, __pyx_kp_u_Sign_of_geometric_square_of_a_C) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33116  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___repr___line_384, __pyx_kp_u_The_official_string_representat) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33117  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set___str___line_395, __pyx_kp_u_The_informal_string_representat) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33118  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_index_set_hidden_doctests_line_4, __pyx_kp_u_Tests_for_functions_that_Doctes) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33119  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_compare_line_492, __pyx_kp_u_lexicographic_compare_eg_3_4_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33120  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_min_neg_line_504, __pyx_kp_u_Minimum_negative_index_or_0_if) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33121  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_max_pos_line_513, __pyx_kp_u_Maximum_positive_index_or_0_if) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33122  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_copy_line_556, __pyx_kp_u_Copy_this_clifford_object_x_cli) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33123  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___iter___line_638, __pyx_kp_u_Not_applicable_for_a_in_cliffor) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33124  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_reframe_line_649, __pyx_kp_u_Put_self_into_a_larger_frame_co) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33125  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___getitem___line_707, __pyx_kp_u_Subscripting_map_from_index_set) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33126  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___neg___line_722, __pyx_kp_u_Unary_print_clifford_1_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33127  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___pos___line_731, __pyx_kp_u_Unary_print_clifford_1_1_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33128  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___add___line_740, __pyx_kp_u_Geometric_sum_print_clifford_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33129  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___radd___line_751, __pyx_kp_u_Geometric_sum_print_1_clifford) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33130  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___iadd___line_760, __pyx_kp_u_Geometric_sum_x_clifford_1_x_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33131  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___sub___line_769, __pyx_kp_u_Geometric_difference_print_clif) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33132  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___rsub___line_780, __pyx_kp_u_Geometric_difference_print_1_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33133  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___isub___line_789, __pyx_kp_u_Geometric_difference_x_clifford) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33134  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___mul___line_798, __pyx_kp_u_Geometric_product_print_cliffor) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33135  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___rmul___line_811, __pyx_kp_u_Geometric_product_print_2_cliff) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33136  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___imul___line_820, __pyx_kp_u_Geometric_product_x_clifford_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33137  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___mod___line_833, __pyx_kp_u_Contraction_print_clifford_1_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33138  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___rmod___line_848, __pyx_kp_u_Contraction_print_2_clifford_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33139  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___imod___line_857, __pyx_kp_u_Contraction_x_clifford_1_x_clif) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33140  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___and___line_872, __pyx_kp_u_Inner_product_print_clifford_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33141  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___rand___line_887, __pyx_kp_u_Inner_product_print_2_clifford) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33142  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___iand___line_896, __pyx_kp_u_Inner_product_x_clifford_1_x_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33143  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___xor___line_911, __pyx_kp_u_Outer_product_print_clifford_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33144  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___rxor___line_926, __pyx_kp_u_Outer_product_print_2_clifford) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33145  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___ixor___line_935, __pyx_kp_u_Outer_product_x_clifford_1_x_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33146  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___truediv___line_950, __pyx_kp_u_Geometric_quotient_print_cliffo) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33147  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___rtruediv___line_965, __pyx_kp_u_Geometric_quotient_print_2_clif) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33148  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___idiv___line_974, __pyx_kp_u_Geometric_quotient_x_clifford_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33149  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_inv_line_989, __pyx_kp_u_Geometric_multiplicative_invers) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33150  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___or___line_1002, __pyx_kp_u_Transform_left_hand_side_using) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33151  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___ior___line_1013, __pyx_kp_u_Transform_left_hand_side_using_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33152  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___pow___line_1024, __pyx_kp_u_Power_self_to_the_m_x_clifford) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33153  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_pow_line_1043, __pyx_kp_u_Power_self_to_the_m_x_clifford_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33154  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_outer_pow_line_1067, __pyx_kp_u_Outer_product_power_x_clifford) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33155  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___call___line_1083, __pyx_kp_u_Pure_grade_vector_part_print_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33156  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_scalar_line_1102, __pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33157  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_pure_line_1113, __pyx_kp_u_Pure_part_print_clifford_1_1_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33158  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_even_line_1124, __pyx_kp_u_Even_part_of_multivector_sum_of) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33159  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_odd_line_1133, __pyx_kp_u_Odd_part_of_multivector_sum_of) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33160  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_vector_part_line_1142, __pyx_kp_u_Vector_part_of_multivector_as_a) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33161  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_involute_line_1170, __pyx_kp_u_Main_involution_each_i_is_repla) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33162  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_reverse_line_1186, __pyx_kp_u_Reversion_eg_clifford_1_cliffor) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33163  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_conj_line_1201, __pyx_kp_u_Conjugation_reverse_o_involute) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33164  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_quad_line_1216, __pyx_kp_u_Quadratic_form_rev_x_x_0_print) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33165  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_norm_line_1227, __pyx_kp_u_Norm_sum_of_squares_of_coordina) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33166  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_abs_line_1238, __pyx_kp_u_Absolute_value_square_root_of_n) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33167  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_max_abs_line_1247, __pyx_kp_u_Maximum_of_absolute_values_of_c) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33168  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_truncated_line_1258, __pyx_kp_u_Remove_all_terms_of_self_with_r) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33169  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_isinf_line_1269, __pyx_kp_u_Check_if_a_multivector_contains) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33170  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_isnan_line_1278, __pyx_kp_u_Check_if_a_multivector_contains_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33171  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_frame_line_1287, __pyx_kp_u_Subalgebra_generated_by_all_gen) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33172  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___repr___line_1298, __pyx_kp_u_The_official_string_representat_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33173  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford___str___line_1307, __pyx_kp_u_The_informal_string_representat_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33174  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_clifford_hidden_doctests_line_13, __pyx_kp_u_Tests_for_functions_that_Doctes_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33175  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_error_squared_tol_line_1400, __pyx_kp_u_Quadratic_norm_error_tolerance) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33176  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_error_squared_line_1409, __pyx_kp_u_Relative_or_absolute_error_usin) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33177  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_approx_equal_line_1422, __pyx_kp_u_Test_for_approximate_equality_o) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33178  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_inv_line_1441, __pyx_kp_u_Geometric_multiplicative_invers_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33179  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_scalar_line_1456, __pyx_kp_u_Scalar_part_scalar_clifford_1_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33180  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_real_line_1467, __pyx_kp_u_Real_part_synonym_for_scalar_pa) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33181  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_imag_line_1478, __pyx_kp_u_Imaginary_part_deprecated_alway) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33182  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_pure_line_1489, __pyx_kp_u_Pure_part_print_pure_clifford_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33183  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_even_line_1500, __pyx_kp_u_Even_part_of_multivector_sum_of_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33184  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_odd_line_1509, __pyx_kp_u_Odd_part_of_multivector_sum_of_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33185  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_involute_line_1518, __pyx_kp_u_Main_involution_each_i_is_repla_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33186  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_reverse_line_1533, __pyx_kp_u_Reversion_eg_1_2_2_1_print_reve) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33187  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_conj_line_1548, __pyx_kp_u_Conjugation_reverse_o_involute_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33188  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_quad_line_1563, __pyx_kp_u_Quadratic_form_rev_x_x_0_print_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33189  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_norm_line_1574, __pyx_kp_u_norm_sum_of_squares_of_coordina) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33190  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_abs_line_1585, __pyx_kp_u_Absolute_value_of_multivector_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33191  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_max_abs_line_1594, __pyx_kp_u_Maximum_absolute_value_of_coord) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33192  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_pow_line_1606, __pyx_kp_u_Integer_power_of_multivector_ob) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33193  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_outer_pow_line_1630, __pyx_kp_u_Outer_product_power_of_multivec) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33194  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_complexifier_line_1639, __pyx_kp_u_Square_root_of_1_which_commutes) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33195  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_sqrt_line_1654, __pyx_kp_u_Square_root_of_multivector_with) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33196  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_exp_line_1677, __pyx_kp_u_Exponential_of_multivector_x_cl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33197  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_log_line_1691, __pyx_kp_u_Natural_logarithm_of_multivecto) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33198  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_cos_line_1714, __pyx_kp_u_Cosine_of_multivector_with_opti) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33199  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_acos_line_1731, __pyx_kp_u_Inverse_cosine_of_multivector_w) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33200  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_cosh_line_1752, __pyx_kp_u_Hyperbolic_cosine_of_multivecto) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33201  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_acosh_line_1768, __pyx_kp_u_Inverse_hyperbolic_cosine_of_mu) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33202  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_sin_line_1791, __pyx_kp_u_Sine_of_multivector_with_option) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33203  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_asin_line_1810, __pyx_kp_u_Inverse_sine_of_multivector_wit) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33204  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_sinh_line_1831, __pyx_kp_u_Hyperbolic_sine_of_multivector) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33205  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_asinh_line_1845, __pyx_kp_u_Inverse_hyperbolic_sine_of_mult) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33206  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_tan_line_1864, __pyx_kp_u_Tangent_of_multivector_with_opt) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33207  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_atan_line_1881, __pyx_kp_u_Inverse_tangent_of_multivector) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33208  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_tanh_line_1898, __pyx_kp_u_Hyperbolic_tangent_of_multivect) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33209  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_atanh_line_1910, __pyx_kp_u_Inverse_hyperbolic_tangent_of_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33210  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_random_clifford_line_1927, __pyx_kp_u_Random_multivector_within_a_fra) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33211  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_cga3_line_1936, __pyx_kp_u_Convert_Euclidean_3D_multivecto) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33212  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_cga3std_line_1945, __pyx_kp_u_Convert_CGA3_null_vector_to_sta) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33213  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_agc3_line_1956, __pyx_kp_u_Convert_CGA3_null_vector_to_Euc) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33214  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_e_line_1999, __pyx_kp_u_Abbreviation_for_clifford_index) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33215  if (PyDict_SetItem(__pyx_t_3, __pyx_kp_u_istpq_line_2012, __pyx_kp_u_Abbreviation_for_index_set_q_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33216  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_2, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33217  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33218 
33219  /*--- Wrapped vars code ---*/
33220 
33221  goto __pyx_L0;
33222  __pyx_L1_error:;
33223  __Pyx_XDECREF(__pyx_t_2);
33224  __Pyx_XDECREF(__pyx_t_3);
33225  __Pyx_XDECREF(__pyx_t_4);
33226  if (__pyx_m) {
33227  if (__pyx_d && stringtab_initialized) {
33228  __Pyx_AddTraceback("init PyClical", __pyx_clineno, __pyx_lineno, __pyx_filename);
33229  }
33230  #if !CYTHON_USE_MODULE_STATE
33231  Py_CLEAR(__pyx_m);
33232  #else
33233  Py_DECREF(__pyx_m);
33234  if (pystate_addmodule_run) {
33235  PyObject *tp, *value, *tb;
33236  PyErr_Fetch(&tp, &value, &tb);
33237  PyState_RemoveModule(&__pyx_moduledef);
33238  PyErr_Restore(tp, value, tb);
33239  }
33240  #endif
33241  } else if (!PyErr_Occurred()) {
33242  PyErr_SetString(PyExc_ImportError, "init PyClical");
33243  }
33244  __pyx_L0:;
33245  __Pyx_RefNannyFinishContext();
33246  #if CYTHON_PEP489_MULTI_PHASE_INIT
33247  return (__pyx_m != NULL) ? 0 : -1;
33248  #elif PY_MAJOR_VERSION >= 3
33249  return __pyx_m;
33250  #else
33251  return;
33252  #endif
33253 }
33254 /* #### Code section: cleanup_globals ### */
33255 /* #### Code section: cleanup_module ### */
33256 /* #### Code section: main_method ### */
33257 /* #### Code section: utility_code_pragmas ### */
33258 #ifdef _MSC_VER
33259 #pragma warning( push )
33260 /* Warning 4127: conditional expression is constant
33261  * Cython uses constant conditional expressions to allow in inline functions to be optimized at
33262  * compile-time, so this warning is not useful
33263  */
33264 #pragma warning( disable : 4127 )
33265 #endif
33266 
33267 
33268 
33269 /* #### Code section: utility_code_def ### */
33270 
33271 /* --- Runtime support code --- */
33272 /* Refnanny */
33273 #if CYTHON_REFNANNY
33274 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
33275  PyObject *m = NULL, *p = NULL;
33276  void *r = NULL;
33277  m = PyImport_ImportModule(modname);
33278  if (!m) goto end;
33279  p = PyObject_GetAttrString(m, "RefNannyAPI");
33280  if (!p) goto end;
33281  r = PyLong_AsVoidPtr(p);
33282 end:
33283  Py_XDECREF(p);
33284  Py_XDECREF(m);
33285  return (__Pyx_RefNannyAPIStruct *)r;
33286 }
33287 #endif
33288 
33289 /* PyErrExceptionMatches */
33290 #if CYTHON_FAST_THREAD_STATE
33291 static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
33292  Py_ssize_t i, n;
33293  n = PyTuple_GET_SIZE(tuple);
33294 #if PY_MAJOR_VERSION >= 3
33295  for (i=0; i<n; i++) {
33296  if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
33297  }
33298 #endif
33299  for (i=0; i<n; i++) {
33300  if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
33301  }
33302  return 0;
33303 }
33304 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
33305  int result;
33306  PyObject *exc_type;
33307 #if PY_VERSION_HEX >= 0x030C00A6
33308  PyObject *current_exception = tstate->current_exception;
33309  if (unlikely(!current_exception)) return 0;
33310  exc_type = (PyObject*) Py_TYPE(current_exception);
33311  if (exc_type == err) return 1;
33312 #else
33313  exc_type = tstate->curexc_type;
33314  if (exc_type == err) return 1;
33315  if (unlikely(!exc_type)) return 0;
33316 #endif
33317  #if CYTHON_AVOID_BORROWED_REFS
33318  Py_INCREF(exc_type);
33319  #endif
33320  if (unlikely(PyTuple_Check(err))) {
33321  result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
33322  } else {
33323  result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
33324  }
33325  #if CYTHON_AVOID_BORROWED_REFS
33326  Py_DECREF(exc_type);
33327  #endif
33328  return result;
33329 }
33330 #endif
33331 
33332 /* PyErrFetchRestore */
33333 #if CYTHON_FAST_THREAD_STATE
33334 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
33335 #if PY_VERSION_HEX >= 0x030C00A6
33336  PyObject *tmp_value;
33337  assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
33338  if (value) {
33339  #if CYTHON_COMPILING_IN_CPYTHON
33340  if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
33341  #endif
33342  PyException_SetTraceback(value, tb);
33343  }
33344  tmp_value = tstate->current_exception;
33345  tstate->current_exception = value;
33346  Py_XDECREF(tmp_value);
33347  Py_XDECREF(type);
33348  Py_XDECREF(tb);
33349 #else
33350  PyObject *tmp_type, *tmp_value, *tmp_tb;
33351  tmp_type = tstate->curexc_type;
33352  tmp_value = tstate->curexc_value;
33353  tmp_tb = tstate->curexc_traceback;
33354  tstate->curexc_type = type;
33355  tstate->curexc_value = value;
33356  tstate->curexc_traceback = tb;
33357  Py_XDECREF(tmp_type);
33358  Py_XDECREF(tmp_value);
33359  Py_XDECREF(tmp_tb);
33360 #endif
33361 }
33362 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
33363 #if PY_VERSION_HEX >= 0x030C00A6
33364  PyObject* exc_value;
33365  exc_value = tstate->current_exception;
33366  tstate->current_exception = 0;
33367  *value = exc_value;
33368  *type = NULL;
33369  *tb = NULL;
33370  if (exc_value) {
33371  *type = (PyObject*) Py_TYPE(exc_value);
33372  Py_INCREF(*type);
33373  #if CYTHON_COMPILING_IN_CPYTHON
33374  *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
33375  Py_XINCREF(*tb);
33376  #else
33377  *tb = PyException_GetTraceback(exc_value);
33378  #endif
33379  }
33380 #else
33381  *type = tstate->curexc_type;
33382  *value = tstate->curexc_value;
33383  *tb = tstate->curexc_traceback;
33384  tstate->curexc_type = 0;
33385  tstate->curexc_value = 0;
33386  tstate->curexc_traceback = 0;
33387 #endif
33388 }
33389 #endif
33390 
33391 /* PyObjectGetAttrStr */
33392 #if CYTHON_USE_TYPE_SLOTS
33393 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
33394  PyTypeObject* tp = Py_TYPE(obj);
33395  if (likely(tp->tp_getattro))
33396  return tp->tp_getattro(obj, attr_name);
33397 #if PY_MAJOR_VERSION < 3
33398  if (likely(tp->tp_getattr))
33399  return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
33400 #endif
33401  return PyObject_GetAttr(obj, attr_name);
33402 }
33403 #endif
33404 
33405 /* PyObjectGetAttrStrNoError */
33406 #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
33407 static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
33408  __Pyx_PyThreadState_declare
33409  __Pyx_PyThreadState_assign
33410  if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
33411  __Pyx_PyErr_Clear();
33412 }
33413 #endif
33414 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
33415  PyObject *result;
33416 #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
33417  (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
33418  return result;
33419 #else
33420 #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
33421  PyTypeObject* tp = Py_TYPE(obj);
33422  if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
33423  return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
33424  }
33425 #endif
33426  result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
33427  if (unlikely(!result)) {
33428  __Pyx_PyObject_GetAttrStr_ClearAttributeError();
33429  }
33430  return result;
33431 #endif
33432 }
33433 
33434 /* GetBuiltinName */
33435 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
33436  PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
33437  if (unlikely(!result) && !PyErr_Occurred()) {
33438  PyErr_Format(PyExc_NameError,
33439 #if PY_MAJOR_VERSION >= 3
33440  "name '%U' is not defined", name);
33441 #else
33442  "name '%.200s' is not defined", PyString_AS_STRING(name));
33443 #endif
33444  }
33445  return result;
33446 }
33447 
33448 /* PyFunctionFastCall */
33449 #if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
33450 static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
33451  PyObject *globals) {
33452  PyFrameObject *f;
33453  PyThreadState *tstate = __Pyx_PyThreadState_Current;
33454  PyObject **fastlocals;
33455  Py_ssize_t i;
33456  PyObject *result;
33457  assert(globals != NULL);
33458  /* XXX Perhaps we should create a specialized
33459  PyFrame_New() that doesn't take locals, but does
33460  take builtins without sanity checking them.
33461  */
33462  assert(tstate != NULL);
33463  f = PyFrame_New(tstate, co, globals, NULL);
33464  if (f == NULL) {
33465  return NULL;
33466  }
33467  fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
33468  for (i = 0; i < na; i++) {
33469  Py_INCREF(*args);
33470  fastlocals[i] = *args++;
33471  }
33472  result = PyEval_EvalFrameEx(f,0);
33473  ++tstate->recursion_depth;
33474  Py_DECREF(f);
33475  --tstate->recursion_depth;
33476  return result;
33477 }
33478 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
33479  PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
33480  PyObject *globals = PyFunction_GET_GLOBALS(func);
33481  PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
33482  PyObject *closure;
33483 #if PY_MAJOR_VERSION >= 3
33484  PyObject *kwdefs;
33485 #endif
33486  PyObject *kwtuple, **k;
33487  PyObject **d;
33488  Py_ssize_t nd;
33489  Py_ssize_t nk;
33490  PyObject *result;
33491  assert(kwargs == NULL || PyDict_Check(kwargs));
33492  nk = kwargs ? PyDict_Size(kwargs) : 0;
33493  #if PY_MAJOR_VERSION < 3
33494  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
33495  return NULL;
33496  }
33497  #else
33498  if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
33499  return NULL;
33500  }
33501  #endif
33502  if (
33503 #if PY_MAJOR_VERSION >= 3
33504  co->co_kwonlyargcount == 0 &&
33505 #endif
33506  likely(kwargs == NULL || nk == 0) &&
33507  co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
33508  if (argdefs == NULL && co->co_argcount == nargs) {
33509  result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
33510  goto done;
33511  }
33512  else if (nargs == 0 && argdefs != NULL
33513  && co->co_argcount == Py_SIZE(argdefs)) {
33514  /* function called with no arguments, but all parameters have
33515  a default value: use default values as arguments .*/
33516  args = &PyTuple_GET_ITEM(argdefs, 0);
33517  result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
33518  goto done;
33519  }
33520  }
33521  if (kwargs != NULL) {
33522  Py_ssize_t pos, i;
33523  kwtuple = PyTuple_New(2 * nk);
33524  if (kwtuple == NULL) {
33525  result = NULL;
33526  goto done;
33527  }
33528  k = &PyTuple_GET_ITEM(kwtuple, 0);
33529  pos = i = 0;
33530  while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
33531  Py_INCREF(k[i]);
33532  Py_INCREF(k[i+1]);
33533  i += 2;
33534  }
33535  nk = i / 2;
33536  }
33537  else {
33538  kwtuple = NULL;
33539  k = NULL;
33540  }
33541  closure = PyFunction_GET_CLOSURE(func);
33542 #if PY_MAJOR_VERSION >= 3
33543  kwdefs = PyFunction_GET_KW_DEFAULTS(func);
33544 #endif
33545  if (argdefs != NULL) {
33546  d = &PyTuple_GET_ITEM(argdefs, 0);
33547  nd = Py_SIZE(argdefs);
33548  }
33549  else {
33550  d = NULL;
33551  nd = 0;
33552  }
33553 #if PY_MAJOR_VERSION >= 3
33554  result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
33555  args, (int)nargs,
33556  k, (int)nk,
33557  d, (int)nd, kwdefs, closure);
33558 #else
33559  result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
33560  args, (int)nargs,
33561  k, (int)nk,
33562  d, (int)nd, closure);
33563 #endif
33564  Py_XDECREF(kwtuple);
33565 done:
33566  Py_LeaveRecursiveCall();
33567  return result;
33568 }
33569 #endif
33570 
33571 /* PyObjectCall */
33572 #if CYTHON_COMPILING_IN_CPYTHON
33573 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
33574  PyObject *result;
33575  ternaryfunc call = Py_TYPE(func)->tp_call;
33576  if (unlikely(!call))
33577  return PyObject_Call(func, arg, kw);
33578  #if PY_MAJOR_VERSION < 3
33579  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
33580  return NULL;
33581  #else
33582  if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
33583  return NULL;
33584  #endif
33585  result = (*call)(func, arg, kw);
33586  Py_LeaveRecursiveCall();
33587  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
33588  PyErr_SetString(
33589  PyExc_SystemError,
33590  "NULL result without error in PyObject_Call");
33591  }
33592  return result;
33593 }
33594 #endif
33595 
33596 /* PyObjectCallMethO */
33597 #if CYTHON_COMPILING_IN_CPYTHON
33598 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
33599  PyObject *self, *result;
33600  PyCFunction cfunc;
33601  cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
33602  self = __Pyx_CyOrPyCFunction_GET_SELF(func);
33603  #if PY_MAJOR_VERSION < 3
33604  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
33605  return NULL;
33606  #else
33607  if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
33608  return NULL;
33609  #endif
33610  result = cfunc(self, arg);
33611  Py_LeaveRecursiveCall();
33612  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
33613  PyErr_SetString(
33614  PyExc_SystemError,
33615  "NULL result without error in PyObject_Call");
33616  }
33617  return result;
33618 }
33619 #endif
33620 
33621 /* PyObjectFastCall */
33622 #if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
33623 static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
33624  PyObject *argstuple;
33625  PyObject *result = 0;
33626  size_t i;
33627  argstuple = PyTuple_New((Py_ssize_t)nargs);
33628  if (unlikely(!argstuple)) return NULL;
33629  for (i = 0; i < nargs; i++) {
33630  Py_INCREF(args[i]);
33631  if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad;
33632  }
33633  result = __Pyx_PyObject_Call(func, argstuple, kwargs);
33634  bad:
33635  Py_DECREF(argstuple);
33636  return result;
33637 }
33638 #endif
33639 static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) {
33640  Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
33641 #if CYTHON_COMPILING_IN_CPYTHON
33642  if (nargs == 0 && kwargs == NULL) {
33643  if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
33644  return __Pyx_PyObject_CallMethO(func, NULL);
33645  }
33646  else if (nargs == 1 && kwargs == NULL) {
33647  if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
33648  return __Pyx_PyObject_CallMethO(func, args[0]);
33649  }
33650 #endif
33651  #if PY_VERSION_HEX < 0x030800B1
33652  #if CYTHON_FAST_PYCCALL
33653  if (PyCFunction_Check(func)) {
33654  if (kwargs) {
33655  return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
33656  } else {
33657  return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
33658  }
33659  }
33660  #if PY_VERSION_HEX >= 0x030700A1
33661  if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
33662  return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
33663  }
33664  #endif
33665  #endif
33666  #if CYTHON_FAST_PYCALL
33667  if (PyFunction_Check(func)) {
33668  return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
33669  }
33670  #endif
33671  #endif
33672  if (kwargs == NULL) {
33673  #if CYTHON_VECTORCALL
33674  #if PY_VERSION_HEX < 0x03090000
33675  vectorcallfunc f = _PyVectorcall_Function(func);
33676  #else
33677  vectorcallfunc f = PyVectorcall_Function(func);
33678  #endif
33679  if (f) {
33680  return f(func, args, (size_t)nargs, NULL);
33681  }
33682  #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
33683  if (__Pyx_CyFunction_CheckExact(func)) {
33684  __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
33685  if (f) return f(func, args, (size_t)nargs, NULL);
33686  }
33687  #endif
33688  }
33689  if (nargs == 0) {
33690  return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
33691  }
33692  #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
33693  return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
33694  #else
33695  return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
33696  #endif
33697 }
33698 
33699 /* PyObjectCallOneArg */
33700 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
33701  PyObject *args[2] = {NULL, arg};
33702  return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
33703 }
33704 
33705 /* PyDictVersioning */
33706 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
33707 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
33708  PyObject *dict = Py_TYPE(obj)->tp_dict;
33709  return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
33710 }
33711 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
33712  PyObject **dictptr = NULL;
33713  Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
33714  if (offset) {
33715 #if CYTHON_COMPILING_IN_CPYTHON
33716  dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
33717 #else
33718  dictptr = _PyObject_GetDictPtr(obj);
33719 #endif
33720  }
33721  return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
33722 }
33723 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
33724  PyObject *dict = Py_TYPE(obj)->tp_dict;
33725  if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
33726  return 0;
33727  return obj_dict_version == __Pyx_get_object_dict_version(obj);
33728 }
33729 #endif
33730 
33731 /* TupleAndListFromArray */
33732 #if CYTHON_COMPILING_IN_CPYTHON
33733 static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
33734  PyObject *v;
33735  Py_ssize_t i;
33736  for (i = 0; i < length; i++) {
33737  v = dest[i] = src[i];
33738  Py_INCREF(v);
33739  }
33740 }
33741 static CYTHON_INLINE PyObject *
33742 __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
33743 {
33744  PyObject *res;
33745  if (n <= 0) {
33746  Py_INCREF(__pyx_empty_tuple);
33747  return __pyx_empty_tuple;
33748  }
33749  res = PyTuple_New(n);
33750  if (unlikely(res == NULL)) return NULL;
33751  __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
33752  return res;
33753 }
33754 static CYTHON_INLINE PyObject *
33755 __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
33756 {
33757  PyObject *res;
33758  if (n <= 0) {
33759  return PyList_New(0);
33760  }
33761  res = PyList_New(n);
33762  if (unlikely(res == NULL)) return NULL;
33763  __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
33764  return res;
33765 }
33766 #endif
33767 
33768 /* BytesEquals */
33769 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
33770 #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
33771  return PyObject_RichCompareBool(s1, s2, equals);
33772 #else
33773  if (s1 == s2) {
33774  return (equals == Py_EQ);
33775  } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
33776  const char *ps1, *ps2;
33777  Py_ssize_t length = PyBytes_GET_SIZE(s1);
33778  if (length != PyBytes_GET_SIZE(s2))
33779  return (equals == Py_NE);
33780  ps1 = PyBytes_AS_STRING(s1);
33781  ps2 = PyBytes_AS_STRING(s2);
33782  if (ps1[0] != ps2[0]) {
33783  return (equals == Py_NE);
33784  } else if (length == 1) {
33785  return (equals == Py_EQ);
33786  } else {
33787  int result;
33788 #if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
33789  Py_hash_t hash1, hash2;
33790  hash1 = ((PyBytesObject*)s1)->ob_shash;
33791  hash2 = ((PyBytesObject*)s2)->ob_shash;
33792  if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
33793  return (equals == Py_NE);
33794  }
33795 #endif
33796  result = memcmp(ps1, ps2, (size_t)length);
33797  return (equals == Py_EQ) ? (result == 0) : (result != 0);
33798  }
33799  } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
33800  return (equals == Py_NE);
33801  } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
33802  return (equals == Py_NE);
33803  } else {
33804  int result;
33805  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
33806  if (!py_result)
33807  return -1;
33808  result = __Pyx_PyObject_IsTrue(py_result);
33809  Py_DECREF(py_result);
33810  return result;
33811  }
33812 #endif
33813 }
33814 
33815 /* UnicodeEquals */
33816 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
33817 #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
33818  return PyObject_RichCompareBool(s1, s2, equals);
33819 #else
33820 #if PY_MAJOR_VERSION < 3
33821  PyObject* owned_ref = NULL;
33822 #endif
33823  int s1_is_unicode, s2_is_unicode;
33824  if (s1 == s2) {
33825  goto return_eq;
33826  }
33827  s1_is_unicode = PyUnicode_CheckExact(s1);
33828  s2_is_unicode = PyUnicode_CheckExact(s2);
33829 #if PY_MAJOR_VERSION < 3
33830  if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
33831  owned_ref = PyUnicode_FromObject(s2);
33832  if (unlikely(!owned_ref))
33833  return -1;
33834  s2 = owned_ref;
33835  s2_is_unicode = 1;
33836  } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
33837  owned_ref = PyUnicode_FromObject(s1);
33838  if (unlikely(!owned_ref))
33839  return -1;
33840  s1 = owned_ref;
33841  s1_is_unicode = 1;
33842  } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
33843  return __Pyx_PyBytes_Equals(s1, s2, equals);
33844  }
33845 #endif
33846  if (s1_is_unicode & s2_is_unicode) {
33847  Py_ssize_t length;
33848  int kind;
33849  void *data1, *data2;
33850  if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
33851  return -1;
33852  length = __Pyx_PyUnicode_GET_LENGTH(s1);
33853  if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
33854  goto return_ne;
33855  }
33856 #if CYTHON_USE_UNICODE_INTERNALS
33857  {
33858  Py_hash_t hash1, hash2;
33859  #if CYTHON_PEP393_ENABLED
33860  hash1 = ((PyASCIIObject*)s1)->hash;
33861  hash2 = ((PyASCIIObject*)s2)->hash;
33862  #else
33863  hash1 = ((PyUnicodeObject*)s1)->hash;
33864  hash2 = ((PyUnicodeObject*)s2)->hash;
33865  #endif
33866  if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
33867  goto return_ne;
33868  }
33869  }
33870 #endif
33871  kind = __Pyx_PyUnicode_KIND(s1);
33872  if (kind != __Pyx_PyUnicode_KIND(s2)) {
33873  goto return_ne;
33874  }
33875  data1 = __Pyx_PyUnicode_DATA(s1);
33876  data2 = __Pyx_PyUnicode_DATA(s2);
33877  if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
33878  goto return_ne;
33879  } else if (length == 1) {
33880  goto return_eq;
33881  } else {
33882  int result = memcmp(data1, data2, (size_t)(length * kind));
33883  #if PY_MAJOR_VERSION < 3
33884  Py_XDECREF(owned_ref);
33885  #endif
33886  return (equals == Py_EQ) ? (result == 0) : (result != 0);
33887  }
33888  } else if ((s1 == Py_None) & s2_is_unicode) {
33889  goto return_ne;
33890  } else if ((s2 == Py_None) & s1_is_unicode) {
33891  goto return_ne;
33892  } else {
33893  int result;
33894  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
33895  #if PY_MAJOR_VERSION < 3
33896  Py_XDECREF(owned_ref);
33897  #endif
33898  if (!py_result)
33899  return -1;
33900  result = __Pyx_PyObject_IsTrue(py_result);
33901  Py_DECREF(py_result);
33902  return result;
33903  }
33904 return_eq:
33905  #if PY_MAJOR_VERSION < 3
33906  Py_XDECREF(owned_ref);
33907  #endif
33908  return (equals == Py_EQ);
33909 return_ne:
33910  #if PY_MAJOR_VERSION < 3
33911  Py_XDECREF(owned_ref);
33912  #endif
33913  return (equals == Py_NE);
33914 #endif
33915 }
33916 
33917 /* fastcall */
33918 #if CYTHON_METH_FASTCALL
33919 static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
33920 {
33921  Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
33922  for (i = 0; i < n; i++)
33923  {
33924  if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
33925  }
33926  for (i = 0; i < n; i++)
33927  {
33928  int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
33929  if (unlikely(eq != 0)) {
33930  if (unlikely(eq < 0)) return NULL;
33931  return kwvalues[i];
33932  }
33933  }
33934  return NULL;
33935 }
33936 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
33937 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
33938  Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
33939  PyObject *dict;
33940  dict = PyDict_New();
33941  if (unlikely(!dict))
33942  return NULL;
33943  for (i=0; i<nkwargs; i++) {
33944  PyObject *key = PyTuple_GET_ITEM(kwnames, i);
33945  if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
33946  goto bad;
33947  }
33948  return dict;
33949 bad:
33950  Py_DECREF(dict);
33951  return NULL;
33952 }
33953 #endif
33954 #endif
33955 
33956 /* RaiseArgTupleInvalid */
33957 static void __Pyx_RaiseArgtupleInvalid(
33958  const char* func_name,
33959  int exact,
33960  Py_ssize_t num_min,
33961  Py_ssize_t num_max,
33962  Py_ssize_t num_found)
33963 {
33964  Py_ssize_t num_expected;
33965  const char *more_or_less;
33966  if (num_found < num_min) {
33967  num_expected = num_min;
33968  more_or_less = "at least";
33969  } else {
33970  num_expected = num_max;
33971  more_or_less = "at most";
33972  }
33973  if (exact) {
33974  more_or_less = "exactly";
33975  }
33976  PyErr_Format(PyExc_TypeError,
33977  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
33978  func_name, more_or_less, num_expected,
33979  (num_expected == 1) ? "" : "s", num_found);
33980 }
33981 
33982 /* KeywordStringCheck */
33983 static int __Pyx_CheckKeywordStrings(
33984  PyObject *kw,
33985  const char* function_name,
33986  int kw_allowed)
33987 {
33988  PyObject* key = 0;
33989  Py_ssize_t pos = 0;
33990 #if CYTHON_COMPILING_IN_PYPY
33991  if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0))
33992  goto invalid_keyword;
33993  return 1;
33994 #else
33995  if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
33996  Py_ssize_t kwsize;
33997 #if CYTHON_ASSUME_SAFE_MACROS
33998  kwsize = PyTuple_GET_SIZE(kw);
33999 #else
34000  kwsize = PyTuple_Size(kw);
34001  if (kwsize < 0) return 0;
34002 #endif
34003  if (unlikely(kwsize == 0))
34004  return 1;
34005  if (!kw_allowed) {
34006 #if CYTHON_ASSUME_SAFE_MACROS
34007  key = PyTuple_GET_ITEM(kw, 0);
34008 #else
34009  key = PyTuple_GetItem(kw, pos);
34010  if (!key) return 0;
34011 #endif
34012  goto invalid_keyword;
34013  }
34014 #if PY_VERSION_HEX < 0x03090000
34015  for (pos = 0; pos < kwsize; pos++) {
34016 #if CYTHON_ASSUME_SAFE_MACROS
34017  key = PyTuple_GET_ITEM(kw, pos);
34018 #else
34019  key = PyTuple_GetItem(kw, pos);
34020  if (!key) return 0;
34021 #endif
34022  if (unlikely(!PyUnicode_Check(key)))
34023  goto invalid_keyword_type;
34024  }
34025 #endif
34026  return 1;
34027  }
34028  while (PyDict_Next(kw, &pos, &key, 0)) {
34029  #if PY_MAJOR_VERSION < 3
34030  if (unlikely(!PyString_Check(key)))
34031  #endif
34032  if (unlikely(!PyUnicode_Check(key)))
34033  goto invalid_keyword_type;
34034  }
34035  if (!kw_allowed && unlikely(key))
34036  goto invalid_keyword;
34037  return 1;
34038 invalid_keyword_type:
34039  PyErr_Format(PyExc_TypeError,
34040  "%.200s() keywords must be strings", function_name);
34041  return 0;
34042 #endif
34043 invalid_keyword:
34044  #if PY_MAJOR_VERSION < 3
34045  PyErr_Format(PyExc_TypeError,
34046  "%.200s() got an unexpected keyword argument '%.200s'",
34047  function_name, PyString_AsString(key));
34048  #else
34049  PyErr_Format(PyExc_TypeError,
34050  "%s() got an unexpected keyword argument '%U'",
34051  function_name, key);
34052  #endif
34053  return 0;
34054 }
34055 
34056 /* RaiseDoubleKeywords */
34057 static void __Pyx_RaiseDoubleKeywordsError(
34058  const char* func_name,
34059  PyObject* kw_name)
34060 {
34061  PyErr_Format(PyExc_TypeError,
34062  #if PY_MAJOR_VERSION >= 3
34063  "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
34064  #else
34065  "%s() got multiple values for keyword argument '%s'", func_name,
34066  PyString_AsString(kw_name));
34067  #endif
34068 }
34069 
34070 /* ParseKeywords */
34071 static int __Pyx_ParseOptionalKeywords(
34072  PyObject *kwds,
34073  PyObject *const *kwvalues,
34074  PyObject **argnames[],
34075  PyObject *kwds2,
34076  PyObject *values[],
34077  Py_ssize_t num_pos_args,
34078  const char* function_name)
34079 {
34080  PyObject *key = 0, *value = 0;
34081  Py_ssize_t pos = 0;
34082  PyObject*** name;
34083  PyObject*** first_kw_arg = argnames + num_pos_args;
34084  int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
34085  while (1) {
34086  Py_XDECREF(key); key = NULL;
34087  Py_XDECREF(value); value = NULL;
34088  if (kwds_is_tuple) {
34089  Py_ssize_t size;
34090 #if CYTHON_ASSUME_SAFE_MACROS
34091  size = PyTuple_GET_SIZE(kwds);
34092 #else
34093  size = PyTuple_Size(kwds);
34094  if (size < 0) goto bad;
34095 #endif
34096  if (pos >= size) break;
34097 #if CYTHON_AVOID_BORROWED_REFS
34098  key = __Pyx_PySequence_ITEM(kwds, pos);
34099  if (!key) goto bad;
34100 #elif CYTHON_ASSUME_SAFE_MACROS
34101  key = PyTuple_GET_ITEM(kwds, pos);
34102 #else
34103  key = PyTuple_GetItem(kwds, pos);
34104  if (!key) goto bad;
34105 #endif
34106  value = kwvalues[pos];
34107  pos++;
34108  }
34109  else
34110  {
34111  if (!PyDict_Next(kwds, &pos, &key, &value)) break;
34112 #if CYTHON_AVOID_BORROWED_REFS
34113  Py_INCREF(key);
34114 #endif
34115  }
34116  name = first_kw_arg;
34117  while (*name && (**name != key)) name++;
34118  if (*name) {
34119  values[name-argnames] = value;
34120 #if CYTHON_AVOID_BORROWED_REFS
34121  Py_INCREF(value);
34122  Py_DECREF(key);
34123 #endif
34124  key = NULL;
34125  value = NULL;
34126  continue;
34127  }
34128 #if !CYTHON_AVOID_BORROWED_REFS
34129  Py_INCREF(key);
34130 #endif
34131  Py_INCREF(value);
34132  name = first_kw_arg;
34133  #if PY_MAJOR_VERSION < 3
34134  if (likely(PyString_Check(key))) {
34135  while (*name) {
34136  if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
34137  && _PyString_Eq(**name, key)) {
34138  values[name-argnames] = value;
34139 #if CYTHON_AVOID_BORROWED_REFS
34140  value = NULL;
34141 #endif
34142  break;
34143  }
34144  name++;
34145  }
34146  if (*name) continue;
34147  else {
34148  PyObject*** argname = argnames;
34149  while (argname != first_kw_arg) {
34150  if ((**argname == key) || (
34151  (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
34152  && _PyString_Eq(**argname, key))) {
34153  goto arg_passed_twice;
34154  }
34155  argname++;
34156  }
34157  }
34158  } else
34159  #endif
34160  if (likely(PyUnicode_Check(key))) {
34161  while (*name) {
34162  int cmp = (
34163  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
34164  (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
34165  #endif
34166  PyUnicode_Compare(**name, key)
34167  );
34168  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
34169  if (cmp == 0) {
34170  values[name-argnames] = value;
34171 #if CYTHON_AVOID_BORROWED_REFS
34172  value = NULL;
34173 #endif
34174  break;
34175  }
34176  name++;
34177  }
34178  if (*name) continue;
34179  else {
34180  PyObject*** argname = argnames;
34181  while (argname != first_kw_arg) {
34182  int cmp = (**argname == key) ? 0 :
34183  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
34184  (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
34185  #endif
34186  PyUnicode_Compare(**argname, key);
34187  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
34188  if (cmp == 0) goto arg_passed_twice;
34189  argname++;
34190  }
34191  }
34192  } else
34193  goto invalid_keyword_type;
34194  if (kwds2) {
34195  if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
34196  } else {
34197  goto invalid_keyword;
34198  }
34199  }
34200  Py_XDECREF(key);
34201  Py_XDECREF(value);
34202  return 0;
34203 arg_passed_twice:
34204  __Pyx_RaiseDoubleKeywordsError(function_name, key);
34205  goto bad;
34206 invalid_keyword_type:
34207  PyErr_Format(PyExc_TypeError,
34208  "%.200s() keywords must be strings", function_name);
34209  goto bad;
34210 invalid_keyword:
34211  #if PY_MAJOR_VERSION < 3
34212  PyErr_Format(PyExc_TypeError,
34213  "%.200s() got an unexpected keyword argument '%.200s'",
34214  function_name, PyString_AsString(key));
34215  #else
34216  PyErr_Format(PyExc_TypeError,
34217  "%s() got an unexpected keyword argument '%U'",
34218  function_name, key);
34219  #endif
34220 bad:
34221  Py_XDECREF(key);
34222  Py_XDECREF(value);
34223  return -1;
34224 }
34225 
34226 /* GetModuleGlobalName */
34227 #if CYTHON_USE_DICT_VERSIONS
34228 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
34229 #else
34230 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
34231 #endif
34232 {
34233  PyObject *result;
34234 #if !CYTHON_AVOID_BORROWED_REFS
34235 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000
34236  result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
34237  __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
34238  if (likely(result)) {
34239  return __Pyx_NewRef(result);
34240  } else if (unlikely(PyErr_Occurred())) {
34241  return NULL;
34242  }
34243 #elif CYTHON_COMPILING_IN_LIMITED_API
34244  if (unlikely(!__pyx_m)) {
34245  return NULL;
34246  }
34247  result = PyObject_GetAttr(__pyx_m, name);
34248  if (likely(result)) {
34249  return result;
34250  }
34251 #else
34252  result = PyDict_GetItem(__pyx_d, name);
34253  __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
34254  if (likely(result)) {
34255  return __Pyx_NewRef(result);
34256  }
34257 #endif
34258 #else
34259  result = PyObject_GetItem(__pyx_d, name);
34260  __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
34261  if (likely(result)) {
34262  return __Pyx_NewRef(result);
34263  }
34264  PyErr_Clear();
34265 #endif
34266  return __Pyx_GetBuiltinName(name);
34267 }
34268 
34269 /* GetTopmostException */
34270 #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
34271 static _PyErr_StackItem *
34272 __Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
34273 {
34274  _PyErr_StackItem *exc_info = tstate->exc_info;
34275  while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
34276  exc_info->previous_item != NULL)
34277  {
34278  exc_info = exc_info->previous_item;
34279  }
34280  return exc_info;
34281 }
34282 #endif
34283 
34284 /* SaveResetException */
34285 #if CYTHON_FAST_THREAD_STATE
34286 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
34287  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
34288  _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
34289  PyObject *exc_value = exc_info->exc_value;
34290  if (exc_value == NULL || exc_value == Py_None) {
34291  *value = NULL;
34292  *type = NULL;
34293  *tb = NULL;
34294  } else {
34295  *value = exc_value;
34296  Py_INCREF(*value);
34297  *type = (PyObject*) Py_TYPE(exc_value);
34298  Py_INCREF(*type);
34299  *tb = PyException_GetTraceback(exc_value);
34300  }
34301  #elif CYTHON_USE_EXC_INFO_STACK
34302  _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
34303  *type = exc_info->exc_type;
34304  *value = exc_info->exc_value;
34305  *tb = exc_info->exc_traceback;
34306  Py_XINCREF(*type);
34307  Py_XINCREF(*value);
34308  Py_XINCREF(*tb);
34309  #else
34310  *type = tstate->exc_type;
34311  *value = tstate->exc_value;
34312  *tb = tstate->exc_traceback;
34313  Py_XINCREF(*type);
34314  Py_XINCREF(*value);
34315  Py_XINCREF(*tb);
34316  #endif
34317 }
34318 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
34319  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
34320  _PyErr_StackItem *exc_info = tstate->exc_info;
34321  PyObject *tmp_value = exc_info->exc_value;
34322  exc_info->exc_value = value;
34323  Py_XDECREF(tmp_value);
34324  Py_XDECREF(type);
34325  Py_XDECREF(tb);
34326  #else
34327  PyObject *tmp_type, *tmp_value, *tmp_tb;
34328  #if CYTHON_USE_EXC_INFO_STACK
34329  _PyErr_StackItem *exc_info = tstate->exc_info;
34330  tmp_type = exc_info->exc_type;
34331  tmp_value = exc_info->exc_value;
34332  tmp_tb = exc_info->exc_traceback;
34333  exc_info->exc_type = type;
34334  exc_info->exc_value = value;
34335  exc_info->exc_traceback = tb;
34336  #else
34337  tmp_type = tstate->exc_type;
34338  tmp_value = tstate->exc_value;
34339  tmp_tb = tstate->exc_traceback;
34340  tstate->exc_type = type;
34341  tstate->exc_value = value;
34342  tstate->exc_traceback = tb;
34343  #endif
34344  Py_XDECREF(tmp_type);
34345  Py_XDECREF(tmp_value);
34346  Py_XDECREF(tmp_tb);
34347  #endif
34348 }
34349 #endif
34350 
34351 /* GetException */
34352 #if CYTHON_FAST_THREAD_STATE
34353 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
34354 #else
34355 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
34356 #endif
34357 {
34358  PyObject *local_type = NULL, *local_value, *local_tb = NULL;
34359 #if CYTHON_FAST_THREAD_STATE
34360  PyObject *tmp_type, *tmp_value, *tmp_tb;
34361  #if PY_VERSION_HEX >= 0x030C00A6
34362  local_value = tstate->current_exception;
34363  tstate->current_exception = 0;
34364  if (likely(local_value)) {
34365  local_type = (PyObject*) Py_TYPE(local_value);
34366  Py_INCREF(local_type);
34367  local_tb = PyException_GetTraceback(local_value);
34368  }
34369  #else
34370  local_type = tstate->curexc_type;
34371  local_value = tstate->curexc_value;
34372  local_tb = tstate->curexc_traceback;
34373  tstate->curexc_type = 0;
34374  tstate->curexc_value = 0;
34375  tstate->curexc_traceback = 0;
34376  #endif
34377 #else
34378  PyErr_Fetch(&local_type, &local_value, &local_tb);
34379 #endif
34380  PyErr_NormalizeException(&local_type, &local_value, &local_tb);
34381 #if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6
34382  if (unlikely(tstate->current_exception))
34383 #elif CYTHON_FAST_THREAD_STATE
34384  if (unlikely(tstate->curexc_type))
34385 #else
34386  if (unlikely(PyErr_Occurred()))
34387 #endif
34388  goto bad;
34389  #if PY_MAJOR_VERSION >= 3
34390  if (local_tb) {
34391  if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
34392  goto bad;
34393  }
34394  #endif
34395  Py_XINCREF(local_tb);
34396  Py_XINCREF(local_type);
34397  Py_XINCREF(local_value);
34398  *type = local_type;
34399  *value = local_value;
34400  *tb = local_tb;
34401 #if CYTHON_FAST_THREAD_STATE
34402  #if CYTHON_USE_EXC_INFO_STACK
34403  {
34404  _PyErr_StackItem *exc_info = tstate->exc_info;
34405  #if PY_VERSION_HEX >= 0x030B00a4
34406  tmp_value = exc_info->exc_value;
34407  exc_info->exc_value = local_value;
34408  tmp_type = NULL;
34409  tmp_tb = NULL;
34410  Py_XDECREF(local_type);
34411  Py_XDECREF(local_tb);
34412  #else
34413  tmp_type = exc_info->exc_type;
34414  tmp_value = exc_info->exc_value;
34415  tmp_tb = exc_info->exc_traceback;
34416  exc_info->exc_type = local_type;
34417  exc_info->exc_value = local_value;
34418  exc_info->exc_traceback = local_tb;
34419  #endif
34420  }
34421  #else
34422  tmp_type = tstate->exc_type;
34423  tmp_value = tstate->exc_value;
34424  tmp_tb = tstate->exc_traceback;
34425  tstate->exc_type = local_type;
34426  tstate->exc_value = local_value;
34427  tstate->exc_traceback = local_tb;
34428  #endif
34429  Py_XDECREF(tmp_type);
34430  Py_XDECREF(tmp_value);
34431  Py_XDECREF(tmp_tb);
34432 #else
34433  PyErr_SetExcInfo(local_type, local_value, local_tb);
34434 #endif
34435  return 0;
34436 bad:
34437  *type = 0;
34438  *value = 0;
34439  *tb = 0;
34440  Py_XDECREF(local_type);
34441  Py_XDECREF(local_value);
34442  Py_XDECREF(local_tb);
34443  return -1;
34444 }
34445 
34446 /* RaiseException */
34447 #if PY_MAJOR_VERSION < 3
34448 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
34449  __Pyx_PyThreadState_declare
34450  CYTHON_UNUSED_VAR(cause);
34451  Py_XINCREF(type);
34452  if (!value || value == Py_None)
34453  value = NULL;
34454  else
34455  Py_INCREF(value);
34456  if (!tb || tb == Py_None)
34457  tb = NULL;
34458  else {
34459  Py_INCREF(tb);
34460  if (!PyTraceBack_Check(tb)) {
34461  PyErr_SetString(PyExc_TypeError,
34462  "raise: arg 3 must be a traceback or None");
34463  goto raise_error;
34464  }
34465  }
34466  if (PyType_Check(type)) {
34467 #if CYTHON_COMPILING_IN_PYPY
34468  if (!value) {
34469  Py_INCREF(Py_None);
34470  value = Py_None;
34471  }
34472 #endif
34473  PyErr_NormalizeException(&type, &value, &tb);
34474  } else {
34475  if (value) {
34476  PyErr_SetString(PyExc_TypeError,
34477  "instance exception may not have a separate value");
34478  goto raise_error;
34479  }
34480  value = type;
34481  type = (PyObject*) Py_TYPE(type);
34482  Py_INCREF(type);
34483  if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
34484  PyErr_SetString(PyExc_TypeError,
34485  "raise: exception class must be a subclass of BaseException");
34486  goto raise_error;
34487  }
34488  }
34489  __Pyx_PyThreadState_assign
34490  __Pyx_ErrRestore(type, value, tb);
34491  return;
34492 raise_error:
34493  Py_XDECREF(value);
34494  Py_XDECREF(type);
34495  Py_XDECREF(tb);
34496  return;
34497 }
34498 #else
34499 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
34500  PyObject* owned_instance = NULL;
34501  if (tb == Py_None) {
34502  tb = 0;
34503  } else if (tb && !PyTraceBack_Check(tb)) {
34504  PyErr_SetString(PyExc_TypeError,
34505  "raise: arg 3 must be a traceback or None");
34506  goto bad;
34507  }
34508  if (value == Py_None)
34509  value = 0;
34510  if (PyExceptionInstance_Check(type)) {
34511  if (value) {
34512  PyErr_SetString(PyExc_TypeError,
34513  "instance exception may not have a separate value");
34514  goto bad;
34515  }
34516  value = type;
34517  type = (PyObject*) Py_TYPE(value);
34518  } else if (PyExceptionClass_Check(type)) {
34519  PyObject *instance_class = NULL;
34520  if (value && PyExceptionInstance_Check(value)) {
34521  instance_class = (PyObject*) Py_TYPE(value);
34522  if (instance_class != type) {
34523  int is_subclass = PyObject_IsSubclass(instance_class, type);
34524  if (!is_subclass) {
34525  instance_class = NULL;
34526  } else if (unlikely(is_subclass == -1)) {
34527  goto bad;
34528  } else {
34529  type = instance_class;
34530  }
34531  }
34532  }
34533  if (!instance_class) {
34534  PyObject *args;
34535  if (!value)
34536  args = PyTuple_New(0);
34537  else if (PyTuple_Check(value)) {
34538  Py_INCREF(value);
34539  args = value;
34540  } else
34541  args = PyTuple_Pack(1, value);
34542  if (!args)
34543  goto bad;
34544  owned_instance = PyObject_Call(type, args, NULL);
34545  Py_DECREF(args);
34546  if (!owned_instance)
34547  goto bad;
34548  value = owned_instance;
34549  if (!PyExceptionInstance_Check(value)) {
34550  PyErr_Format(PyExc_TypeError,
34551  "calling %R should have returned an instance of "
34552  "BaseException, not %R",
34553  type, Py_TYPE(value));
34554  goto bad;
34555  }
34556  }
34557  } else {
34558  PyErr_SetString(PyExc_TypeError,
34559  "raise: exception class must be a subclass of BaseException");
34560  goto bad;
34561  }
34562  if (cause) {
34563  PyObject *fixed_cause;
34564  if (cause == Py_None) {
34565  fixed_cause = NULL;
34566  } else if (PyExceptionClass_Check(cause)) {
34567  fixed_cause = PyObject_CallObject(cause, NULL);
34568  if (fixed_cause == NULL)
34569  goto bad;
34570  } else if (PyExceptionInstance_Check(cause)) {
34571  fixed_cause = cause;
34572  Py_INCREF(fixed_cause);
34573  } else {
34574  PyErr_SetString(PyExc_TypeError,
34575  "exception causes must derive from "
34576  "BaseException");
34577  goto bad;
34578  }
34579  PyException_SetCause(value, fixed_cause);
34580  }
34581  PyErr_SetObject(type, value);
34582  if (tb) {
34583  #if PY_VERSION_HEX >= 0x030C00A6
34584  PyException_SetTraceback(value, tb);
34585  #elif CYTHON_FAST_THREAD_STATE
34586  PyThreadState *tstate = __Pyx_PyThreadState_Current;
34587  PyObject* tmp_tb = tstate->curexc_traceback;
34588  if (tb != tmp_tb) {
34589  Py_INCREF(tb);
34590  tstate->curexc_traceback = tb;
34591  Py_XDECREF(tmp_tb);
34592  }
34593 #else
34594  PyObject *tmp_type, *tmp_value, *tmp_tb;
34595  PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
34596  Py_INCREF(tb);
34597  PyErr_Restore(tmp_type, tmp_value, tb);
34598  Py_XDECREF(tmp_tb);
34599 #endif
34600  }
34601 bad:
34602  Py_XDECREF(owned_instance);
34603  return;
34604 }
34605 #endif
34606 
34607 /* FastTypeChecks */
34608 #if CYTHON_COMPILING_IN_CPYTHON
34609 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
34610  while (a) {
34611  a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
34612  if (a == b)
34613  return 1;
34614  }
34615  return b == &PyBaseObject_Type;
34616 }
34617 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
34618  PyObject *mro;
34619  if (a == b) return 1;
34620  mro = a->tp_mro;
34621  if (likely(mro)) {
34622  Py_ssize_t i, n;
34623  n = PyTuple_GET_SIZE(mro);
34624  for (i = 0; i < n; i++) {
34625  if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
34626  return 1;
34627  }
34628  return 0;
34629  }
34630  return __Pyx_InBases(a, b);
34631 }
34632 static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
34633  PyObject *mro;
34634  if (cls == a || cls == b) return 1;
34635  mro = cls->tp_mro;
34636  if (likely(mro)) {
34637  Py_ssize_t i, n;
34638  n = PyTuple_GET_SIZE(mro);
34639  for (i = 0; i < n; i++) {
34640  PyObject *base = PyTuple_GET_ITEM(mro, i);
34641  if (base == (PyObject *)a || base == (PyObject *)b)
34642  return 1;
34643  }
34644  return 0;
34645  }
34646  return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
34647 }
34648 #if PY_MAJOR_VERSION == 2
34649 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
34650  PyObject *exception, *value, *tb;
34651  int res;
34652  __Pyx_PyThreadState_declare
34653  __Pyx_PyThreadState_assign
34654  __Pyx_ErrFetch(&exception, &value, &tb);
34655  res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
34656  if (unlikely(res == -1)) {
34657  PyErr_WriteUnraisable(err);
34658  res = 0;
34659  }
34660  if (!res) {
34661  res = PyObject_IsSubclass(err, exc_type2);
34662  if (unlikely(res == -1)) {
34663  PyErr_WriteUnraisable(err);
34664  res = 0;
34665  }
34666  }
34667  __Pyx_ErrRestore(exception, value, tb);
34668  return res;
34669 }
34670 #else
34671 static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
34672  if (exc_type1) {
34673  return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
34674  } else {
34675  return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
34676  }
34677 }
34678 #endif
34679 static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
34680  Py_ssize_t i, n;
34681  assert(PyExceptionClass_Check(exc_type));
34682  n = PyTuple_GET_SIZE(tuple);
34683 #if PY_MAJOR_VERSION >= 3
34684  for (i=0; i<n; i++) {
34685  if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
34686  }
34687 #endif
34688  for (i=0; i<n; i++) {
34689  PyObject *t = PyTuple_GET_ITEM(tuple, i);
34690  #if PY_MAJOR_VERSION < 3
34691  if (likely(exc_type == t)) return 1;
34692  #endif
34693  if (likely(PyExceptionClass_Check(t))) {
34694  if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
34695  } else {
34696  }
34697  }
34698  return 0;
34699 }
34700 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
34701  if (likely(err == exc_type)) return 1;
34702  if (likely(PyExceptionClass_Check(err))) {
34703  if (likely(PyExceptionClass_Check(exc_type))) {
34704  return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
34705  } else if (likely(PyTuple_Check(exc_type))) {
34706  return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
34707  } else {
34708  }
34709  }
34710  return PyErr_GivenExceptionMatches(err, exc_type);
34711 }
34712 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
34713  assert(PyExceptionClass_Check(exc_type1));
34714  assert(PyExceptionClass_Check(exc_type2));
34715  if (likely(err == exc_type1 || err == exc_type2)) return 1;
34716  if (likely(PyExceptionClass_Check(err))) {
34717  return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
34718  }
34719  return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
34720 }
34721 #endif
34722 
34723 /* UnicodeConcatInPlace */
34724 # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
34725 static int
34726 __Pyx_unicode_modifiable(PyObject *unicode)
34727 {
34728  if (Py_REFCNT(unicode) != 1)
34729  return 0;
34730  if (!PyUnicode_CheckExact(unicode))
34731  return 0;
34732  if (PyUnicode_CHECK_INTERNED(unicode))
34733  return 0;
34734  return 1;
34735 }
34736 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right
34737  #if CYTHON_REFNANNY
34738  , void* __pyx_refnanny
34739  #endif
34740  ) {
34741  PyObject *left = *p_left;
34742  Py_ssize_t left_len, right_len, new_len;
34743  if (unlikely(__Pyx_PyUnicode_READY(left) == -1))
34744  return NULL;
34745  if (unlikely(__Pyx_PyUnicode_READY(right) == -1))
34746  return NULL;
34747  left_len = PyUnicode_GET_LENGTH(left);
34748  if (left_len == 0) {
34749  Py_INCREF(right);
34750  return right;
34751  }
34752  right_len = PyUnicode_GET_LENGTH(right);
34753  if (right_len == 0) {
34754  Py_INCREF(left);
34755  return left;
34756  }
34757  if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) {
34758  PyErr_SetString(PyExc_OverflowError,
34759  "strings are too large to concat");
34760  return NULL;
34761  }
34762  new_len = left_len + right_len;
34763  if (__Pyx_unicode_modifiable(left)
34764  && PyUnicode_CheckExact(right)
34765  && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
34766  && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) {
34767  int ret;
34768  __Pyx_GIVEREF(*p_left);
34769  ret = PyUnicode_Resize(p_left, new_len);
34770  __Pyx_GOTREF(*p_left);
34771  if (unlikely(ret != 0))
34772  return NULL;
34773  #if PY_VERSION_HEX >= 0x030d0000
34774  if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL;
34775  #else
34776  _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len);
34777  #endif
34778  __Pyx_INCREF(*p_left);
34779  __Pyx_GIVEREF(*p_left);
34780  return *p_left;
34781  } else {
34782  return __Pyx_PyUnicode_Concat(left, right);
34783  }
34784  }
34785 #endif
34786 
34787 /* PyIntBinop */
34788 #if !CYTHON_COMPILING_IN_PYPY
34789 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
34790  CYTHON_MAYBE_UNUSED_VAR(intval);
34791  CYTHON_MAYBE_UNUSED_VAR(inplace);
34792  CYTHON_UNUSED_VAR(zerodivision_check);
34793  #if PY_MAJOR_VERSION < 3
34794  if (likely(PyInt_CheckExact(op1))) {
34795  const long b = intval;
34796  long x;
34797  long a = PyInt_AS_LONG(op1);
34798 
34799  x = (long)((unsigned long)a + (unsigned long)b);
34800  if (likely((x^a) >= 0 || (x^b) >= 0))
34801  return PyInt_FromLong(x);
34802  return PyLong_Type.tp_as_number->nb_add(op1, op2);
34803  }
34804  #endif
34805  #if CYTHON_USE_PYLONG_INTERNALS
34806  if (likely(PyLong_CheckExact(op1))) {
34807  const long b = intval;
34808  long a, x;
34809 #ifdef HAVE_LONG_LONG
34810  const PY_LONG_LONG llb = intval;
34811  PY_LONG_LONG lla, llx;
34812 #endif
34813  if (unlikely(__Pyx_PyLong_IsZero(op1))) {
34814  return __Pyx_NewRef(op2);
34815  }
34816  if (likely(__Pyx_PyLong_IsCompact(op1))) {
34817  a = __Pyx_PyLong_CompactValue(op1);
34818  } else {
34819  const digit* digits = __Pyx_PyLong_Digits(op1);
34820  const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
34821  switch (size) {
34822  case -2:
34823  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
34824  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
34825  break;
34826  #ifdef HAVE_LONG_LONG
34827  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
34828  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
34829  goto long_long;
34830  #endif
34831  }
34832  CYTHON_FALLTHROUGH;
34833  case 2:
34834  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
34835  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
34836  break;
34837  #ifdef HAVE_LONG_LONG
34838  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
34839  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
34840  goto long_long;
34841  #endif
34842  }
34843  CYTHON_FALLTHROUGH;
34844  case -3:
34845  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
34846  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
34847  break;
34848  #ifdef HAVE_LONG_LONG
34849  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
34850  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
34851  goto long_long;
34852  #endif
34853  }
34854  CYTHON_FALLTHROUGH;
34855  case 3:
34856  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
34857  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
34858  break;
34859  #ifdef HAVE_LONG_LONG
34860  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
34861  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
34862  goto long_long;
34863  #endif
34864  }
34865  CYTHON_FALLTHROUGH;
34866  case -4:
34867  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
34868  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
34869  break;
34870  #ifdef HAVE_LONG_LONG
34871  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
34872  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
34873  goto long_long;
34874  #endif
34875  }
34876  CYTHON_FALLTHROUGH;
34877  case 4:
34878  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
34879  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
34880  break;
34881  #ifdef HAVE_LONG_LONG
34882  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
34883  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
34884  goto long_long;
34885  #endif
34886  }
34887  CYTHON_FALLTHROUGH;
34888  default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
34889  }
34890  }
34891  x = a + b;
34892  return PyLong_FromLong(x);
34893 #ifdef HAVE_LONG_LONG
34894  long_long:
34895  llx = lla + llb;
34896  return PyLong_FromLongLong(llx);
34897 #endif
34898 
34899 
34900  }
34901  #endif
34902  if (PyFloat_CheckExact(op1)) {
34903  const long b = intval;
34904 #if CYTHON_COMPILING_IN_LIMITED_API
34905  double a = __pyx_PyFloat_AsDouble(op1);
34906 #else
34907  double a = PyFloat_AS_DOUBLE(op1);
34908 #endif
34909  double result;
34910 
34911  PyFPE_START_PROTECT("add", return NULL)
34912  result = ((double)a) + (double)b;
34913  PyFPE_END_PROTECT(result)
34914  return PyFloat_FromDouble(result);
34915  }
34916  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
34917 }
34918 #endif
34919 
34920 /* pep479 */
34921 static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) {
34922  PyObject *exc, *val, *tb, *cur_exc;
34923  __Pyx_PyThreadState_declare
34924  #ifdef __Pyx_StopAsyncIteration_USED
34925  int is_async_stopiteration = 0;
34926  #endif
34927  CYTHON_MAYBE_UNUSED_VAR(in_async_gen);
34928  cur_exc = PyErr_Occurred();
34929  if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) {
34930  #ifdef __Pyx_StopAsyncIteration_USED
34931  if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) {
34932  is_async_stopiteration = 1;
34933  } else
34934  #endif
34935  return;
34936  }
34937  __Pyx_PyThreadState_assign
34938  __Pyx_GetException(&exc, &val, &tb);
34939  Py_XDECREF(exc);
34940  Py_XDECREF(val);
34941  Py_XDECREF(tb);
34942  PyErr_SetString(PyExc_RuntimeError,
34943  #ifdef __Pyx_StopAsyncIteration_USED
34944  is_async_stopiteration ? "async generator raised StopAsyncIteration" :
34945  in_async_gen ? "async generator raised StopIteration" :
34946  #endif
34947  "generator raised StopIteration");
34948 }
34949 
34950 /* PyObjectCallNoArg */
34951 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
34952  PyObject *arg[2] = {NULL, NULL};
34953  return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
34954 }
34955 
34956 /* decode_c_bytes */
34957 static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
34958  const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
34959  const char* encoding, const char* errors,
34960  PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
34961  if (unlikely((start < 0) | (stop < 0))) {
34962  if (start < 0) {
34963  start += length;
34964  if (start < 0)
34965  start = 0;
34966  }
34967  if (stop < 0)
34968  stop += length;
34969  }
34970  if (stop > length)
34971  stop = length;
34972  if (unlikely(stop <= start))
34973  return __Pyx_NewRef(__pyx_empty_unicode);
34974  length = stop - start;
34975  cstring += start;
34976  if (decode_func) {
34977  return decode_func(cstring, length, errors);
34978  } else {
34979  return PyUnicode_Decode(cstring, length, encoding, errors);
34980  }
34981 }
34982 
34983 /* SwapException */
34984 #if CYTHON_FAST_THREAD_STATE
34985 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
34986  PyObject *tmp_type, *tmp_value, *tmp_tb;
34987  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
34988  _PyErr_StackItem *exc_info = tstate->exc_info;
34989  tmp_value = exc_info->exc_value;
34990  exc_info->exc_value = *value;
34991  if (tmp_value == NULL || tmp_value == Py_None) {
34992  Py_XDECREF(tmp_value);
34993  tmp_value = NULL;
34994  tmp_type = NULL;
34995  tmp_tb = NULL;
34996  } else {
34997  tmp_type = (PyObject*) Py_TYPE(tmp_value);
34998  Py_INCREF(tmp_type);
34999  #if CYTHON_COMPILING_IN_CPYTHON
35000  tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
35001  Py_XINCREF(tmp_tb);
35002  #else
35003  tmp_tb = PyException_GetTraceback(tmp_value);
35004  #endif
35005  }
35006  #elif CYTHON_USE_EXC_INFO_STACK
35007  _PyErr_StackItem *exc_info = tstate->exc_info;
35008  tmp_type = exc_info->exc_type;
35009  tmp_value = exc_info->exc_value;
35010  tmp_tb = exc_info->exc_traceback;
35011  exc_info->exc_type = *type;
35012  exc_info->exc_value = *value;
35013  exc_info->exc_traceback = *tb;
35014  #else
35015  tmp_type = tstate->exc_type;
35016  tmp_value = tstate->exc_value;
35017  tmp_tb = tstate->exc_traceback;
35018  tstate->exc_type = *type;
35019  tstate->exc_value = *value;
35020  tstate->exc_traceback = *tb;
35021  #endif
35022  *type = tmp_type;
35023  *value = tmp_value;
35024  *tb = tmp_tb;
35025 }
35026 #else
35027 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
35028  PyObject *tmp_type, *tmp_value, *tmp_tb;
35029  PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
35030  PyErr_SetExcInfo(*type, *value, *tb);
35031  *type = tmp_type;
35032  *value = tmp_value;
35033  *tb = tmp_tb;
35034 }
35035 #endif
35036 
35037 /* SetItemInt */
35038 static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
35039  int r;
35040  if (unlikely(!j)) return -1;
35041  r = PyObject_SetItem(o, j, v);
35042  Py_DECREF(j);
35043  return r;
35044 }
35045 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
35046  CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
35047 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
35048  if (is_list || PyList_CheckExact(o)) {
35049  Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
35050  if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
35051  PyObject* old = PyList_GET_ITEM(o, n);
35052  Py_INCREF(v);
35053  PyList_SET_ITEM(o, n, v);
35054  Py_DECREF(old);
35055  return 1;
35056  }
35057  } else {
35058  PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
35059  PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
35060  if (mm && mm->mp_ass_subscript) {
35061  int r;
35062  PyObject *key = PyInt_FromSsize_t(i);
35063  if (unlikely(!key)) return -1;
35064  r = mm->mp_ass_subscript(o, key, v);
35065  Py_DECREF(key);
35066  return r;
35067  }
35068  if (likely(sm && sm->sq_ass_item)) {
35069  if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
35070  Py_ssize_t l = sm->sq_length(o);
35071  if (likely(l >= 0)) {
35072  i += l;
35073  } else {
35074  if (!PyErr_ExceptionMatches(PyExc_OverflowError))
35075  return -1;
35076  PyErr_Clear();
35077  }
35078  }
35079  return sm->sq_ass_item(o, i, v);
35080  }
35081  }
35082 #else
35083  if (is_list || !PyMapping_Check(o))
35084  {
35085  return PySequence_SetItem(o, i, v);
35086  }
35087 #endif
35088  return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
35089 }
35090 
35091 /* ArgTypeTest */
35092 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
35093 {
35094  __Pyx_TypeName type_name;
35095  __Pyx_TypeName obj_type_name;
35096  if (unlikely(!type)) {
35097  PyErr_SetString(PyExc_SystemError, "Missing type object");
35098  return 0;
35099  }
35100  else if (exact) {
35101  #if PY_MAJOR_VERSION == 2
35102  if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
35103  #endif
35104  }
35105  else {
35106  if (likely(__Pyx_TypeCheck(obj, type))) return 1;
35107  }
35108  type_name = __Pyx_PyType_GetName(type);
35109  obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
35110  PyErr_Format(PyExc_TypeError,
35111  "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
35112  ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name);
35113  __Pyx_DECREF_TypeName(type_name);
35114  __Pyx_DECREF_TypeName(obj_type_name);
35115  return 0;
35116 }
35117 
35118 /* Import */
35119 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
35120  PyObject *module = 0;
35121  PyObject *empty_dict = 0;
35122  PyObject *empty_list = 0;
35123  #if PY_MAJOR_VERSION < 3
35124  PyObject *py_import;
35125  py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
35126  if (unlikely(!py_import))
35127  goto bad;
35128  if (!from_list) {
35129  empty_list = PyList_New(0);
35130  if (unlikely(!empty_list))
35131  goto bad;
35132  from_list = empty_list;
35133  }
35134  #endif
35135  empty_dict = PyDict_New();
35136  if (unlikely(!empty_dict))
35137  goto bad;
35138  {
35139  #if PY_MAJOR_VERSION >= 3
35140  if (level == -1) {
35141  if (strchr(__Pyx_MODULE_NAME, '.') != NULL) {
35142  module = PyImport_ImportModuleLevelObject(
35143  name, __pyx_d, empty_dict, from_list, 1);
35144  if (unlikely(!module)) {
35145  if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
35146  goto bad;
35147  PyErr_Clear();
35148  }
35149  }
35150  level = 0;
35151  }
35152  #endif
35153  if (!module) {
35154  #if PY_MAJOR_VERSION < 3
35155  PyObject *py_level = PyInt_FromLong(level);
35156  if (unlikely(!py_level))
35157  goto bad;
35158  module = PyObject_CallFunctionObjArgs(py_import,
35159  name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL);
35160  Py_DECREF(py_level);
35161  #else
35162  module = PyImport_ImportModuleLevelObject(
35163  name, __pyx_d, empty_dict, from_list, level);
35164  #endif
35165  }
35166  }
35167 bad:
35168  Py_XDECREF(empty_dict);
35169  Py_XDECREF(empty_list);
35170  #if PY_MAJOR_VERSION < 3
35171  Py_XDECREF(py_import);
35172  #endif
35173  return module;
35174 }
35175 
35176 /* ImportDottedModule */
35177 #if PY_MAJOR_VERSION >= 3
35178 static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) {
35179  PyObject *partial_name = NULL, *slice = NULL, *sep = NULL;
35180  if (unlikely(PyErr_Occurred())) {
35181  PyErr_Clear();
35182  }
35183  if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) {
35184  partial_name = name;
35185  } else {
35186  slice = PySequence_GetSlice(parts_tuple, 0, count);
35187  if (unlikely(!slice))
35188  goto bad;
35189  sep = PyUnicode_FromStringAndSize(".", 1);
35190  if (unlikely(!sep))
35191  goto bad;
35192  partial_name = PyUnicode_Join(sep, slice);
35193  }
35194  PyErr_Format(
35195 #if PY_MAJOR_VERSION < 3
35196  PyExc_ImportError,
35197  "No module named '%s'", PyString_AS_STRING(partial_name));
35198 #else
35199 #if PY_VERSION_HEX >= 0x030600B1
35200  PyExc_ModuleNotFoundError,
35201 #else
35202  PyExc_ImportError,
35203 #endif
35204  "No module named '%U'", partial_name);
35205 #endif
35206 bad:
35207  Py_XDECREF(sep);
35208  Py_XDECREF(slice);
35209  Py_XDECREF(partial_name);
35210  return NULL;
35211 }
35212 #endif
35213 #if PY_MAJOR_VERSION >= 3
35214 static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) {
35215  PyObject *imported_module;
35216 #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400)
35217  PyObject *modules = PyImport_GetModuleDict();
35218  if (unlikely(!modules))
35219  return NULL;
35220  imported_module = __Pyx_PyDict_GetItemStr(modules, name);
35221  Py_XINCREF(imported_module);
35222 #else
35223  imported_module = PyImport_GetModule(name);
35224 #endif
35225  return imported_module;
35226 }
35227 #endif
35228 #if PY_MAJOR_VERSION >= 3
35229 static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) {
35230  Py_ssize_t i, nparts;
35231  nparts = PyTuple_GET_SIZE(parts_tuple);
35232  for (i=1; i < nparts && module; i++) {
35233  PyObject *part, *submodule;
35234 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
35235  part = PyTuple_GET_ITEM(parts_tuple, i);
35236 #else
35237  part = PySequence_ITEM(parts_tuple, i);
35238 #endif
35239  submodule = __Pyx_PyObject_GetAttrStrNoError(module, part);
35240 #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
35241  Py_DECREF(part);
35242 #endif
35243  Py_DECREF(module);
35244  module = submodule;
35245  }
35246  if (unlikely(!module)) {
35247  return __Pyx__ImportDottedModule_Error(name, parts_tuple, i);
35248  }
35249  return module;
35250 }
35251 #endif
35252 static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
35253 #if PY_MAJOR_VERSION < 3
35254  PyObject *module, *from_list, *star = __pyx_n_s__9;
35255  CYTHON_UNUSED_VAR(parts_tuple);
35256  from_list = PyList_New(1);
35257  if (unlikely(!from_list))
35258  return NULL;
35259  Py_INCREF(star);
35260  PyList_SET_ITEM(from_list, 0, star);
35261  module = __Pyx_Import(name, from_list, 0);
35262  Py_DECREF(from_list);
35263  return module;
35264 #else
35265  PyObject *imported_module;
35266  PyObject *module = __Pyx_Import(name, NULL, 0);
35267  if (!parts_tuple || unlikely(!module))
35268  return module;
35269  imported_module = __Pyx__ImportDottedModule_Lookup(name);
35270  if (likely(imported_module)) {
35271  Py_DECREF(module);
35272  return imported_module;
35273  }
35274  PyErr_Clear();
35275  return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
35276 #endif
35277 }
35278 static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
35279 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1
35280  PyObject *module = __Pyx__ImportDottedModule_Lookup(name);
35281  if (likely(module)) {
35282  PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec);
35283  if (likely(spec)) {
35284  PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing);
35285  if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) {
35286  Py_DECREF(spec);
35287  spec = NULL;
35288  }
35289  Py_XDECREF(unsafe);
35290  }
35291  if (likely(!spec)) {
35292  PyErr_Clear();
35293  return module;
35294  }
35295  Py_DECREF(spec);
35296  Py_DECREF(module);
35297  } else if (PyErr_Occurred()) {
35298  PyErr_Clear();
35299  }
35300 #endif
35301  return __Pyx__ImportDottedModule(name, parts_tuple);
35302 }
35303 
35304 /* FixUpExtensionType */
35305 #if CYTHON_USE_TYPE_SPECS
35306 static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
35307 #if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
35308  CYTHON_UNUSED_VAR(spec);
35309  CYTHON_UNUSED_VAR(type);
35310 #else
35311  const PyType_Slot *slot = spec->slots;
35312  while (slot && slot->slot && slot->slot != Py_tp_members)
35313  slot++;
35314  if (slot && slot->slot == Py_tp_members) {
35315  int changed = 0;
35316 #if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
35317  const
35318 #endif
35319  PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
35320  while (memb && memb->name) {
35321  if (memb->name[0] == '_' && memb->name[1] == '_') {
35322 #if PY_VERSION_HEX < 0x030900b1
35323  if (strcmp(memb->name, "__weaklistoffset__") == 0) {
35324  assert(memb->type == T_PYSSIZET);
35325  assert(memb->flags == READONLY);
35326  type->tp_weaklistoffset = memb->offset;
35327  changed = 1;
35328  }
35329  else if (strcmp(memb->name, "__dictoffset__") == 0) {
35330  assert(memb->type == T_PYSSIZET);
35331  assert(memb->flags == READONLY);
35332  type->tp_dictoffset = memb->offset;
35333  changed = 1;
35334  }
35335 #if CYTHON_METH_FASTCALL
35336  else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
35337  assert(memb->type == T_PYSSIZET);
35338  assert(memb->flags == READONLY);
35339 #if PY_VERSION_HEX >= 0x030800b4
35340  type->tp_vectorcall_offset = memb->offset;
35341 #else
35342  type->tp_print = (printfunc) memb->offset;
35343 #endif
35344  changed = 1;
35345  }
35346 #endif
35347 #else
35348  if ((0));
35349 #endif
35350 #if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
35351  else if (strcmp(memb->name, "__module__") == 0) {
35352  PyObject *descr;
35353  assert(memb->type == T_OBJECT);
35354  assert(memb->flags == 0 || memb->flags == READONLY);
35355  descr = PyDescr_NewMember(type, memb);
35356  if (unlikely(!descr))
35357  return -1;
35358  if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
35359  Py_DECREF(descr);
35360  return -1;
35361  }
35362  Py_DECREF(descr);
35363  changed = 1;
35364  }
35365 #endif
35366  }
35367  memb++;
35368  }
35369  if (changed)
35370  PyType_Modified(type);
35371  }
35372 #endif
35373  return 0;
35374 }
35375 #endif
35376 
35377 /* PyObjectGetMethod */
35378 static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
35379  PyObject *attr;
35380 #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
35381  __Pyx_TypeName type_name;
35382  PyTypeObject *tp = Py_TYPE(obj);
35383  PyObject *descr;
35384  descrgetfunc f = NULL;
35385  PyObject **dictptr, *dict;
35386  int meth_found = 0;
35387  assert (*method == NULL);
35388  if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
35389  attr = __Pyx_PyObject_GetAttrStr(obj, name);
35390  goto try_unpack;
35391  }
35392  if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
35393  return 0;
35394  }
35395  descr = _PyType_Lookup(tp, name);
35396  if (likely(descr != NULL)) {
35397  Py_INCREF(descr);
35398 #if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
35399  if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
35400 #elif PY_MAJOR_VERSION >= 3
35401  #ifdef __Pyx_CyFunction_USED
35402  if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
35403  #else
35404  if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
35405  #endif
35406 #else
35407  #ifdef __Pyx_CyFunction_USED
35408  if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
35409  #else
35410  if (likely(PyFunction_Check(descr)))
35411  #endif
35412 #endif
35413  {
35414  meth_found = 1;
35415  } else {
35416  f = Py_TYPE(descr)->tp_descr_get;
35417  if (f != NULL && PyDescr_IsData(descr)) {
35418  attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
35419  Py_DECREF(descr);
35420  goto try_unpack;
35421  }
35422  }
35423  }
35424  dictptr = _PyObject_GetDictPtr(obj);
35425  if (dictptr != NULL && (dict = *dictptr) != NULL) {
35426  Py_INCREF(dict);
35427  attr = __Pyx_PyDict_GetItemStr(dict, name);
35428  if (attr != NULL) {
35429  Py_INCREF(attr);
35430  Py_DECREF(dict);
35431  Py_XDECREF(descr);
35432  goto try_unpack;
35433  }
35434  Py_DECREF(dict);
35435  }
35436  if (meth_found) {
35437  *method = descr;
35438  return 1;
35439  }
35440  if (f != NULL) {
35441  attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
35442  Py_DECREF(descr);
35443  goto try_unpack;
35444  }
35445  if (likely(descr != NULL)) {
35446  *method = descr;
35447  return 0;
35448  }
35449  type_name = __Pyx_PyType_GetName(tp);
35450  PyErr_Format(PyExc_AttributeError,
35451 #if PY_MAJOR_VERSION >= 3
35452  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
35453  type_name, name);
35454 #else
35455  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
35456  type_name, PyString_AS_STRING(name));
35457 #endif
35458  __Pyx_DECREF_TypeName(type_name);
35459  return 0;
35460 #else
35461  attr = __Pyx_PyObject_GetAttrStr(obj, name);
35462  goto try_unpack;
35463 #endif
35464 try_unpack:
35465 #if CYTHON_UNPACK_METHODS
35466  if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
35467  PyObject *function = PyMethod_GET_FUNCTION(attr);
35468  Py_INCREF(function);
35469  Py_DECREF(attr);
35470  *method = function;
35471  return 1;
35472  }
35473 #endif
35474  *method = attr;
35475  return 0;
35476 }
35477 
35478 /* PyObjectCallMethod0 */
35479 static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
35480  PyObject *method = NULL, *result = NULL;
35481  int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
35482  if (likely(is_method)) {
35483  result = __Pyx_PyObject_CallOneArg(method, obj);
35484  Py_DECREF(method);
35485  return result;
35486  }
35487  if (unlikely(!method)) goto bad;
35488  result = __Pyx_PyObject_CallNoArg(method);
35489  Py_DECREF(method);
35490 bad:
35491  return result;
35492 }
35493 
35494 /* ValidateBasesTuple */
35495 #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
35496 static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
35497  Py_ssize_t i, n;
35498 #if CYTHON_ASSUME_SAFE_MACROS
35499  n = PyTuple_GET_SIZE(bases);
35500 #else
35501  n = PyTuple_Size(bases);
35502  if (n < 0) return -1;
35503 #endif
35504  for (i = 1; i < n; i++)
35505  {
35506 #if CYTHON_AVOID_BORROWED_REFS
35507  PyObject *b0 = PySequence_GetItem(bases, i);
35508  if (!b0) return -1;
35509 #elif CYTHON_ASSUME_SAFE_MACROS
35510  PyObject *b0 = PyTuple_GET_ITEM(bases, i);
35511 #else
35512  PyObject *b0 = PyTuple_GetItem(bases, i);
35513  if (!b0) return -1;
35514 #endif
35515  PyTypeObject *b;
35516 #if PY_MAJOR_VERSION < 3
35517  if (PyClass_Check(b0))
35518  {
35519  PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class",
35520  PyString_AS_STRING(((PyClassObject*)b0)->cl_name));
35521 #if CYTHON_AVOID_BORROWED_REFS
35522  Py_DECREF(b0);
35523 #endif
35524  return -1;
35525  }
35526 #endif
35527  b = (PyTypeObject*) b0;
35528  if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
35529  {
35530  __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
35531  PyErr_Format(PyExc_TypeError,
35532  "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
35533  __Pyx_DECREF_TypeName(b_name);
35534 #if CYTHON_AVOID_BORROWED_REFS
35535  Py_DECREF(b0);
35536 #endif
35537  return -1;
35538  }
35539  if (dictoffset == 0)
35540  {
35541  Py_ssize_t b_dictoffset = 0;
35542 #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
35543  b_dictoffset = b->tp_dictoffset;
35544 #else
35545  PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
35546  if (!py_b_dictoffset) goto dictoffset_return;
35547  b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
35548  Py_DECREF(py_b_dictoffset);
35549  if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
35550 #endif
35551  if (b_dictoffset) {
35552  {
35553  __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
35554  PyErr_Format(PyExc_TypeError,
35555  "extension type '%.200s' has no __dict__ slot, "
35556  "but base type '" __Pyx_FMT_TYPENAME "' has: "
35557  "either add 'cdef dict __dict__' to the extension type "
35558  "or add '__slots__ = [...]' to the base type",
35559  type_name, b_name);
35560  __Pyx_DECREF_TypeName(b_name);
35561  }
35562 #if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY)
35563  dictoffset_return:
35564 #endif
35565 #if CYTHON_AVOID_BORROWED_REFS
35566  Py_DECREF(b0);
35567 #endif
35568  return -1;
35569  }
35570  }
35571 #if CYTHON_AVOID_BORROWED_REFS
35572  Py_DECREF(b0);
35573 #endif
35574  }
35575  return 0;
35576 }
35577 #endif
35578 
35579 /* PyType_Ready */
35580 static int __Pyx_PyType_Ready(PyTypeObject *t) {
35581 #if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION)
35582  (void)__Pyx_PyObject_CallMethod0;
35583 #if CYTHON_USE_TYPE_SPECS
35584  (void)__Pyx_validate_bases_tuple;
35585 #endif
35586  return PyType_Ready(t);
35587 #else
35588  int r;
35589  PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
35590  if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
35591  return -1;
35592 #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
35593  {
35594  int gc_was_enabled;
35595  #if PY_VERSION_HEX >= 0x030A00b1
35596  gc_was_enabled = PyGC_Disable();
35597  (void)__Pyx_PyObject_CallMethod0;
35598  #else
35599  PyObject *ret, *py_status;
35600  PyObject *gc = NULL;
35601  #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400)
35602  gc = PyImport_GetModule(__pyx_kp_u_gc);
35603  #endif
35604  if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc);
35605  if (unlikely(!gc)) return -1;
35606  py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled);
35607  if (unlikely(!py_status)) {
35608  Py_DECREF(gc);
35609  return -1;
35610  }
35611  gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
35612  Py_DECREF(py_status);
35613  if (gc_was_enabled > 0) {
35614  ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable);
35615  if (unlikely(!ret)) {
35616  Py_DECREF(gc);
35617  return -1;
35618  }
35619  Py_DECREF(ret);
35620  } else if (unlikely(gc_was_enabled == -1)) {
35621  Py_DECREF(gc);
35622  return -1;
35623  }
35624  #endif
35625  t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
35626 #if PY_VERSION_HEX >= 0x030A0000
35627  t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
35628 #endif
35629 #else
35630  (void)__Pyx_PyObject_CallMethod0;
35631 #endif
35632  r = PyType_Ready(t);
35633 #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
35634  t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
35635  #if PY_VERSION_HEX >= 0x030A00b1
35636  if (gc_was_enabled)
35637  PyGC_Enable();
35638  #else
35639  if (gc_was_enabled) {
35640  PyObject *tp, *v, *tb;
35641  PyErr_Fetch(&tp, &v, &tb);
35642  ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable);
35643  if (likely(ret || r == -1)) {
35644  Py_XDECREF(ret);
35645  PyErr_Restore(tp, v, tb);
35646  } else {
35647  Py_XDECREF(tp);
35648  Py_XDECREF(v);
35649  Py_XDECREF(tb);
35650  r = -1;
35651  }
35652  }
35653  Py_DECREF(gc);
35654  #endif
35655  }
35656 #endif
35657  return r;
35658 #endif
35659 }
35660 
35661 /* PyObject_GenericGetAttrNoDict */
35662 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
35663 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
35664  __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp);
35665  PyErr_Format(PyExc_AttributeError,
35666 #if PY_MAJOR_VERSION >= 3
35667  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
35668  type_name, attr_name);
35669 #else
35670  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
35671  type_name, PyString_AS_STRING(attr_name));
35672 #endif
35673  __Pyx_DECREF_TypeName(type_name);
35674  return NULL;
35675 }
35676 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
35677  PyObject *descr;
35678  PyTypeObject *tp = Py_TYPE(obj);
35679  if (unlikely(!PyString_Check(attr_name))) {
35680  return PyObject_GenericGetAttr(obj, attr_name);
35681  }
35682  assert(!tp->tp_dictoffset);
35683  descr = _PyType_Lookup(tp, attr_name);
35684  if (unlikely(!descr)) {
35685  return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
35686  }
35687  Py_INCREF(descr);
35688  #if PY_MAJOR_VERSION < 3
35689  if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
35690  #endif
35691  {
35692  descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
35693  if (unlikely(f)) {
35694  PyObject *res = f(descr, obj, (PyObject *)tp);
35695  Py_DECREF(descr);
35696  return res;
35697  }
35698  }
35699  return descr;
35700 }
35701 #endif
35702 
35703 /* PyObject_GenericGetAttr */
35704 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
35705 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
35706  if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
35707  return PyObject_GenericGetAttr(obj, attr_name);
35708  }
35709  return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
35710 }
35711 #endif
35712 
35713 /* SetVTable */
35714 static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
35715  PyObject *ob = PyCapsule_New(vtable, 0, 0);
35716  if (unlikely(!ob))
35717  goto bad;
35718 #if CYTHON_COMPILING_IN_LIMITED_API
35719  if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0))
35720 #else
35721  if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0))
35722 #endif
35723  goto bad;
35724  Py_DECREF(ob);
35725  return 0;
35726 bad:
35727  Py_XDECREF(ob);
35728  return -1;
35729 }
35730 
35731 /* GetVTable */
35732 static void* __Pyx_GetVtable(PyTypeObject *type) {
35733  void* ptr;
35734 #if CYTHON_COMPILING_IN_LIMITED_API
35735  PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
35736 #else
35737  PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
35738 #endif
35739  if (!ob)
35740  goto bad;
35741  ptr = PyCapsule_GetPointer(ob, 0);
35742  if (!ptr && !PyErr_Occurred())
35743  PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
35744  Py_DECREF(ob);
35745  return ptr;
35746 bad:
35747  Py_XDECREF(ob);
35748  return NULL;
35749 }
35750 
35751 /* MergeVTables */
35752 #if !CYTHON_COMPILING_IN_LIMITED_API
35753 static int __Pyx_MergeVtables(PyTypeObject *type) {
35754  int i;
35755  void** base_vtables;
35756  __Pyx_TypeName tp_base_name;
35757  __Pyx_TypeName base_name;
35758  void* unknown = (void*)-1;
35759  PyObject* bases = type->tp_bases;
35760  int base_depth = 0;
35761  {
35762  PyTypeObject* base = type->tp_base;
35763  while (base) {
35764  base_depth += 1;
35765  base = base->tp_base;
35766  }
35767  }
35768  base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1));
35769  base_vtables[0] = unknown;
35770  for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
35771  void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i)));
35772  if (base_vtable != NULL) {
35773  int j;
35774  PyTypeObject* base = type->tp_base;
35775  for (j = 0; j < base_depth; j++) {
35776  if (base_vtables[j] == unknown) {
35777  base_vtables[j] = __Pyx_GetVtable(base);
35778  base_vtables[j + 1] = unknown;
35779  }
35780  if (base_vtables[j] == base_vtable) {
35781  break;
35782  } else if (base_vtables[j] == NULL) {
35783  goto bad;
35784  }
35785  base = base->tp_base;
35786  }
35787  }
35788  }
35789  PyErr_Clear();
35790  free(base_vtables);
35791  return 0;
35792 bad:
35793  tp_base_name = __Pyx_PyType_GetName(type->tp_base);
35794  base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i));
35795  PyErr_Format(PyExc_TypeError,
35796  "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
35797  __Pyx_DECREF_TypeName(tp_base_name);
35798  __Pyx_DECREF_TypeName(base_name);
35799  free(base_vtables);
35800  return -1;
35801 }
35802 #endif
35803 
35804 /* SetupReduce */
35805 #if !CYTHON_COMPILING_IN_LIMITED_API
35806 static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
35807  int ret;
35808  PyObject *name_attr;
35809  name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name);
35810  if (likely(name_attr)) {
35811  ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
35812  } else {
35813  ret = -1;
35814  }
35815  if (unlikely(ret < 0)) {
35816  PyErr_Clear();
35817  ret = 0;
35818  }
35819  Py_XDECREF(name_attr);
35820  return ret;
35821 }
35822 static int __Pyx_setup_reduce(PyObject* type_obj) {
35823  int ret = 0;
35824  PyObject *object_reduce = NULL;
35825  PyObject *object_getstate = NULL;
35826  PyObject *object_reduce_ex = NULL;
35827  PyObject *reduce = NULL;
35828  PyObject *reduce_ex = NULL;
35829  PyObject *reduce_cython = NULL;
35830  PyObject *setstate = NULL;
35831  PyObject *setstate_cython = NULL;
35832  PyObject *getstate = NULL;
35833 #if CYTHON_USE_PYTYPE_LOOKUP
35834  getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
35835 #else
35836  getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
35837  if (!getstate && PyErr_Occurred()) {
35838  goto __PYX_BAD;
35839  }
35840 #endif
35841  if (getstate) {
35842 #if CYTHON_USE_PYTYPE_LOOKUP
35843  object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
35844 #else
35845  object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
35846  if (!object_getstate && PyErr_Occurred()) {
35847  goto __PYX_BAD;
35848  }
35849 #endif
35850  if (object_getstate != getstate) {
35851  goto __PYX_GOOD;
35852  }
35853  }
35854 #if CYTHON_USE_PYTYPE_LOOKUP
35855  object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
35856 #else
35857  object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
35858 #endif
35859  reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
35860  if (reduce_ex == object_reduce_ex) {
35861 #if CYTHON_USE_PYTYPE_LOOKUP
35862  object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
35863 #else
35864  object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
35865 #endif
35866  reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
35867  if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
35868  reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
35869  if (likely(reduce_cython)) {
35870  ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
35871  ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
35872  } else if (reduce == object_reduce || PyErr_Occurred()) {
35873  goto __PYX_BAD;
35874  }
35875  setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate);
35876  if (!setstate) PyErr_Clear();
35877  if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
35878  setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
35879  if (likely(setstate_cython)) {
35880  ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
35881  ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
35882  } else if (!setstate || PyErr_Occurred()) {
35883  goto __PYX_BAD;
35884  }
35885  }
35886  PyType_Modified((PyTypeObject*)type_obj);
35887  }
35888  }
35889  goto __PYX_GOOD;
35890 __PYX_BAD:
35891  if (!PyErr_Occurred()) {
35892  __Pyx_TypeName type_obj_name =
35893  __Pyx_PyType_GetName((PyTypeObject*)type_obj);
35894  PyErr_Format(PyExc_RuntimeError,
35895  "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
35896  __Pyx_DECREF_TypeName(type_obj_name);
35897  }
35898  ret = -1;
35899 __PYX_GOOD:
35900 #if !CYTHON_USE_PYTYPE_LOOKUP
35901  Py_XDECREF(object_reduce);
35902  Py_XDECREF(object_reduce_ex);
35903  Py_XDECREF(object_getstate);
35904  Py_XDECREF(getstate);
35905 #endif
35906  Py_XDECREF(reduce);
35907  Py_XDECREF(reduce_ex);
35908  Py_XDECREF(reduce_cython);
35909  Py_XDECREF(setstate);
35910  Py_XDECREF(setstate_cython);
35911  return ret;
35912 }
35913 #endif
35914 
35915 /* FetchSharedCythonModule */
35916 static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
35917  return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
35918 }
35919 
35920 /* FetchCommonType */
35921 static int __Pyx_VerifyCachedType(PyObject *cached_type,
35922  const char *name,
35923  Py_ssize_t basicsize,
35924  Py_ssize_t expected_basicsize) {
35925  if (!PyType_Check(cached_type)) {
35926  PyErr_Format(PyExc_TypeError,
35927  "Shared Cython type %.200s is not a type object", name);
35928  return -1;
35929  }
35930  if (basicsize != expected_basicsize) {
35931  PyErr_Format(PyExc_TypeError,
35932  "Shared Cython type %.200s has the wrong size, try recompiling",
35933  name);
35934  return -1;
35935  }
35936  return 0;
35937 }
35938 #if !CYTHON_USE_TYPE_SPECS
35939 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
35940  PyObject* abi_module;
35941  const char* object_name;
35942  PyTypeObject *cached_type = NULL;
35943  abi_module = __Pyx_FetchSharedCythonABIModule();
35944  if (!abi_module) return NULL;
35945  object_name = strrchr(type->tp_name, '.');
35946  object_name = object_name ? object_name+1 : type->tp_name;
35947  cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
35948  if (cached_type) {
35949  if (__Pyx_VerifyCachedType(
35950  (PyObject *)cached_type,
35951  object_name,
35952  cached_type->tp_basicsize,
35953  type->tp_basicsize) < 0) {
35954  goto bad;
35955  }
35956  goto done;
35957  }
35958  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
35959  PyErr_Clear();
35960  if (PyType_Ready(type) < 0) goto bad;
35961  if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
35962  goto bad;
35963  Py_INCREF(type);
35964  cached_type = type;
35965 done:
35966  Py_DECREF(abi_module);
35967  return cached_type;
35968 bad:
35969  Py_XDECREF(cached_type);
35970  cached_type = NULL;
35971  goto done;
35972 }
35973 #else
35974 static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
35975  PyObject *abi_module, *cached_type = NULL;
35976  const char* object_name = strrchr(spec->name, '.');
35977  object_name = object_name ? object_name+1 : spec->name;
35978  abi_module = __Pyx_FetchSharedCythonABIModule();
35979  if (!abi_module) return NULL;
35980  cached_type = PyObject_GetAttrString(abi_module, object_name);
35981  if (cached_type) {
35982  Py_ssize_t basicsize;
35983 #if CYTHON_COMPILING_IN_LIMITED_API
35984  PyObject *py_basicsize;
35985  py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
35986  if (unlikely(!py_basicsize)) goto bad;
35987  basicsize = PyLong_AsSsize_t(py_basicsize);
35988  Py_DECREF(py_basicsize);
35989  py_basicsize = 0;
35990  if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
35991 #else
35992  basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
35993 #endif
35994  if (__Pyx_VerifyCachedType(
35995  cached_type,
35996  object_name,
35997  basicsize,
35998  spec->basicsize) < 0) {
35999  goto bad;
36000  }
36001  goto done;
36002  }
36003  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
36004  PyErr_Clear();
36005  CYTHON_UNUSED_VAR(module);
36006  cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
36007  if (unlikely(!cached_type)) goto bad;
36008  if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
36009  if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
36010 done:
36011  Py_DECREF(abi_module);
36012  assert(cached_type == NULL || PyType_Check(cached_type));
36013  return (PyTypeObject *) cached_type;
36014 bad:
36015  Py_XDECREF(cached_type);
36016  cached_type = NULL;
36017  goto done;
36018 }
36019 #endif
36020 
36021 /* PyVectorcallFastCallDict */
36022 #if CYTHON_METH_FASTCALL
36023 static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
36024 {
36025  PyObject *res = NULL;
36026  PyObject *kwnames;
36027  PyObject **newargs;
36028  PyObject **kwvalues;
36029  Py_ssize_t i, pos;
36030  size_t j;
36031  PyObject *key, *value;
36032  unsigned long keys_are_strings;
36033  Py_ssize_t nkw = PyDict_GET_SIZE(kw);
36034  newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
36035  if (unlikely(newargs == NULL)) {
36036  PyErr_NoMemory();
36037  return NULL;
36038  }
36039  for (j = 0; j < nargs; j++) newargs[j] = args[j];
36040  kwnames = PyTuple_New(nkw);
36041  if (unlikely(kwnames == NULL)) {
36042  PyMem_Free(newargs);
36043  return NULL;
36044  }
36045  kwvalues = newargs + nargs;
36046  pos = i = 0;
36047  keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
36048  while (PyDict_Next(kw, &pos, &key, &value)) {
36049  keys_are_strings &= Py_TYPE(key)->tp_flags;
36050  Py_INCREF(key);
36051  Py_INCREF(value);
36052  PyTuple_SET_ITEM(kwnames, i, key);
36053  kwvalues[i] = value;
36054  i++;
36055  }
36056  if (unlikely(!keys_are_strings)) {
36057  PyErr_SetString(PyExc_TypeError, "keywords must be strings");
36058  goto cleanup;
36059  }
36060  res = vc(func, newargs, nargs, kwnames);
36061 cleanup:
36062  Py_DECREF(kwnames);
36063  for (i = 0; i < nkw; i++)
36064  Py_DECREF(kwvalues[i]);
36065  PyMem_Free(newargs);
36066  return res;
36067 }
36068 static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
36069 {
36070  if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
36071  return vc(func, args, nargs, NULL);
36072  }
36073  return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
36074 }
36075 #endif
36076 
36077 /* CythonFunctionShared */
36078 #if CYTHON_COMPILING_IN_LIMITED_API
36079 static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
36080  if (__Pyx_CyFunction_Check(func)) {
36081  return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
36082  } else if (PyCFunction_Check(func)) {
36083  return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
36084  }
36085  return 0;
36086 }
36087 #else
36088 static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
36089  return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
36090 }
36091 #endif
36092 static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
36093 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
36094  __Pyx_Py_XDECREF_SET(
36095  __Pyx_CyFunction_GetClassObj(f),
36096  ((classobj) ? __Pyx_NewRef(classobj) : NULL));
36097 #else
36098  __Pyx_Py_XDECREF_SET(
36099  ((PyCMethodObject *) (f))->mm_class,
36100  (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
36101 #endif
36102 }
36103 static PyObject *
36104 __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
36105 {
36106  CYTHON_UNUSED_VAR(closure);
36107  if (unlikely(op->func_doc == NULL)) {
36108 #if CYTHON_COMPILING_IN_LIMITED_API
36109  op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
36110  if (unlikely(!op->func_doc)) return NULL;
36111 #else
36112  if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
36113 #if PY_MAJOR_VERSION >= 3
36114  op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
36115 #else
36116  op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
36117 #endif
36118  if (unlikely(op->func_doc == NULL))
36119  return NULL;
36120  } else {
36121  Py_INCREF(Py_None);
36122  return Py_None;
36123  }
36124 #endif
36125  }
36126  Py_INCREF(op->func_doc);
36127  return op->func_doc;
36128 }
36129 static int
36130 __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
36131 {
36132  CYTHON_UNUSED_VAR(context);
36133  if (value == NULL) {
36134  value = Py_None;
36135  }
36136  Py_INCREF(value);
36137  __Pyx_Py_XDECREF_SET(op->func_doc, value);
36138  return 0;
36139 }
36140 static PyObject *
36141 __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
36142 {
36143  CYTHON_UNUSED_VAR(context);
36144  if (unlikely(op->func_name == NULL)) {
36145 #if CYTHON_COMPILING_IN_LIMITED_API
36146  op->func_name = PyObject_GetAttrString(op->func, "__name__");
36147 #elif PY_MAJOR_VERSION >= 3
36148  op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
36149 #else
36150  op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
36151 #endif
36152  if (unlikely(op->func_name == NULL))
36153  return NULL;
36154  }
36155  Py_INCREF(op->func_name);
36156  return op->func_name;
36157 }
36158 static int
36159 __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
36160 {
36161  CYTHON_UNUSED_VAR(context);
36162 #if PY_MAJOR_VERSION >= 3
36163  if (unlikely(value == NULL || !PyUnicode_Check(value)))
36164 #else
36165  if (unlikely(value == NULL || !PyString_Check(value)))
36166 #endif
36167  {
36168  PyErr_SetString(PyExc_TypeError,
36169  "__name__ must be set to a string object");
36170  return -1;
36171  }
36172  Py_INCREF(value);
36173  __Pyx_Py_XDECREF_SET(op->func_name, value);
36174  return 0;
36175 }
36176 static PyObject *
36177 __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
36178 {
36179  CYTHON_UNUSED_VAR(context);
36180  Py_INCREF(op->func_qualname);
36181  return op->func_qualname;
36182 }
36183 static int
36184 __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
36185 {
36186  CYTHON_UNUSED_VAR(context);
36187 #if PY_MAJOR_VERSION >= 3
36188  if (unlikely(value == NULL || !PyUnicode_Check(value)))
36189 #else
36190  if (unlikely(value == NULL || !PyString_Check(value)))
36191 #endif
36192  {
36193  PyErr_SetString(PyExc_TypeError,
36194  "__qualname__ must be set to a string object");
36195  return -1;
36196  }
36197  Py_INCREF(value);
36198  __Pyx_Py_XDECREF_SET(op->func_qualname, value);
36199  return 0;
36200 }
36201 static PyObject *
36202 __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
36203 {
36204  CYTHON_UNUSED_VAR(context);
36205  if (unlikely(op->func_dict == NULL)) {
36206  op->func_dict = PyDict_New();
36207  if (unlikely(op->func_dict == NULL))
36208  return NULL;
36209  }
36210  Py_INCREF(op->func_dict);
36211  return op->func_dict;
36212 }
36213 static int
36214 __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
36215 {
36216  CYTHON_UNUSED_VAR(context);
36217  if (unlikely(value == NULL)) {
36218  PyErr_SetString(PyExc_TypeError,
36219  "function's dictionary may not be deleted");
36220  return -1;
36221  }
36222  if (unlikely(!PyDict_Check(value))) {
36223  PyErr_SetString(PyExc_TypeError,
36224  "setting function's dictionary to a non-dict");
36225  return -1;
36226  }
36227  Py_INCREF(value);
36228  __Pyx_Py_XDECREF_SET(op->func_dict, value);
36229  return 0;
36230 }
36231 static PyObject *
36232 __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
36233 {
36234  CYTHON_UNUSED_VAR(context);
36235  Py_INCREF(op->func_globals);
36236  return op->func_globals;
36237 }
36238 static PyObject *
36239 __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
36240 {
36241  CYTHON_UNUSED_VAR(op);
36242  CYTHON_UNUSED_VAR(context);
36243  Py_INCREF(Py_None);
36244  return Py_None;
36245 }
36246 static PyObject *
36247 __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
36248 {
36249  PyObject* result = (op->func_code) ? op->func_code : Py_None;
36250  CYTHON_UNUSED_VAR(context);
36251  Py_INCREF(result);
36252  return result;
36253 }
36254 static int
36255 __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
36256  int result = 0;
36257  PyObject *res = op->defaults_getter((PyObject *) op);
36258  if (unlikely(!res))
36259  return -1;
36260  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
36261  op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
36262  Py_INCREF(op->defaults_tuple);
36263  op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
36264  Py_INCREF(op->defaults_kwdict);
36265  #else
36266  op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
36267  if (unlikely(!op->defaults_tuple)) result = -1;
36268  else {
36269  op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
36270  if (unlikely(!op->defaults_kwdict)) result = -1;
36271  }
36272  #endif
36273  Py_DECREF(res);
36274  return result;
36275 }
36276 static int
36277 __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
36278  CYTHON_UNUSED_VAR(context);
36279  if (!value) {
36280  value = Py_None;
36281  } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
36282  PyErr_SetString(PyExc_TypeError,
36283  "__defaults__ must be set to a tuple object");
36284  return -1;
36285  }
36286  PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
36287  "currently affect the values used in function calls", 1);
36288  Py_INCREF(value);
36289  __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
36290  return 0;
36291 }
36292 static PyObject *
36293 __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
36294  PyObject* result = op->defaults_tuple;
36295  CYTHON_UNUSED_VAR(context);
36296  if (unlikely(!result)) {
36297  if (op->defaults_getter) {
36298  if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
36299  result = op->defaults_tuple;
36300  } else {
36301  result = Py_None;
36302  }
36303  }
36304  Py_INCREF(result);
36305  return result;
36306 }
36307 static int
36308 __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
36309  CYTHON_UNUSED_VAR(context);
36310  if (!value) {
36311  value = Py_None;
36312  } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
36313  PyErr_SetString(PyExc_TypeError,
36314  "__kwdefaults__ must be set to a dict object");
36315  return -1;
36316  }
36317  PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
36318  "currently affect the values used in function calls", 1);
36319  Py_INCREF(value);
36320  __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
36321  return 0;
36322 }
36323 static PyObject *
36324 __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
36325  PyObject* result = op->defaults_kwdict;
36326  CYTHON_UNUSED_VAR(context);
36327  if (unlikely(!result)) {
36328  if (op->defaults_getter) {
36329  if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
36330  result = op->defaults_kwdict;
36331  } else {
36332  result = Py_None;
36333  }
36334  }
36335  Py_INCREF(result);
36336  return result;
36337 }
36338 static int
36339 __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
36340  CYTHON_UNUSED_VAR(context);
36341  if (!value || value == Py_None) {
36342  value = NULL;
36343  } else if (unlikely(!PyDict_Check(value))) {
36344  PyErr_SetString(PyExc_TypeError,
36345  "__annotations__ must be set to a dict object");
36346  return -1;
36347  }
36348  Py_XINCREF(value);
36349  __Pyx_Py_XDECREF_SET(op->func_annotations, value);
36350  return 0;
36351 }
36352 static PyObject *
36353 __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
36354  PyObject* result = op->func_annotations;
36355  CYTHON_UNUSED_VAR(context);
36356  if (unlikely(!result)) {
36357  result = PyDict_New();
36358  if (unlikely(!result)) return NULL;
36359  op->func_annotations = result;
36360  }
36361  Py_INCREF(result);
36362  return result;
36363 }
36364 static PyObject *
36365 __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
36366  int is_coroutine;
36367  CYTHON_UNUSED_VAR(context);
36368  if (op->func_is_coroutine) {
36369  return __Pyx_NewRef(op->func_is_coroutine);
36370  }
36371  is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
36372 #if PY_VERSION_HEX >= 0x03050000
36373  if (is_coroutine) {
36374  PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
36375  fromlist = PyList_New(1);
36376  if (unlikely(!fromlist)) return NULL;
36377  Py_INCREF(marker);
36378 #if CYTHON_ASSUME_SAFE_MACROS
36379  PyList_SET_ITEM(fromlist, 0, marker);
36380 #else
36381  if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
36382  Py_DECREF(marker);
36383  Py_DECREF(fromlist);
36384  return NULL;
36385  }
36386 #endif
36387  module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
36388  Py_DECREF(fromlist);
36389  if (unlikely(!module)) goto ignore;
36390  op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
36391  Py_DECREF(module);
36392  if (likely(op->func_is_coroutine)) {
36393  return __Pyx_NewRef(op->func_is_coroutine);
36394  }
36395 ignore:
36396  PyErr_Clear();
36397  }
36398 #endif
36399  op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
36400  return __Pyx_NewRef(op->func_is_coroutine);
36401 }
36402 #if CYTHON_COMPILING_IN_LIMITED_API
36403 static PyObject *
36404 __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
36405  CYTHON_UNUSED_VAR(context);
36406  return PyObject_GetAttrString(op->func, "__module__");
36407 }
36408 static int
36409 __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
36410  CYTHON_UNUSED_VAR(context);
36411  return PyObject_SetAttrString(op->func, "__module__", value);
36412 }
36413 #endif
36414 static PyGetSetDef __pyx_CyFunction_getsets[] = {
36415  {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
36416  {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
36417  {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
36418  {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
36419  {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
36420  {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
36421  {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
36422  {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
36423  {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
36424  {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
36425  {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
36426  {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
36427  {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
36428  {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
36429  {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
36430  {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
36431  {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
36432  {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
36433 #if CYTHON_COMPILING_IN_LIMITED_API
36434  {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
36435 #endif
36436  {0, 0, 0, 0, 0}
36437 };
36438 static PyMemberDef __pyx_CyFunction_members[] = {
36439 #if !CYTHON_COMPILING_IN_LIMITED_API
36440  {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
36441 #endif
36442 #if CYTHON_USE_TYPE_SPECS
36443  {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
36444 #if CYTHON_METH_FASTCALL
36445 #if CYTHON_BACKPORT_VECTORCALL
36446  {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
36447 #else
36448 #if !CYTHON_COMPILING_IN_LIMITED_API
36449  {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
36450 #endif
36451 #endif
36452 #endif
36453 #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
36454  {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
36455 #else
36456  {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
36457 #endif
36458 #endif
36459  {0, 0, 0, 0, 0}
36460 };
36461 static PyObject *
36462 __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
36463 {
36464  CYTHON_UNUSED_VAR(args);
36465 #if PY_MAJOR_VERSION >= 3
36466  Py_INCREF(m->func_qualname);
36467  return m->func_qualname;
36468 #else
36469  return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
36470 #endif
36471 }
36472 static PyMethodDef __pyx_CyFunction_methods[] = {
36473  {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
36474  {0, 0, 0, 0}
36475 };
36476 #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
36477 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
36478 #else
36479 #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
36480 #endif
36481 static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
36482  PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
36483 #if !CYTHON_COMPILING_IN_LIMITED_API
36484  PyCFunctionObject *cf = (PyCFunctionObject*) op;
36485 #endif
36486  if (unlikely(op == NULL))
36487  return NULL;
36488 #if CYTHON_COMPILING_IN_LIMITED_API
36489  op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
36490  if (unlikely(!op->func)) return NULL;
36491 #endif
36492  op->flags = flags;
36493  __Pyx_CyFunction_weakreflist(op) = NULL;
36494 #if !CYTHON_COMPILING_IN_LIMITED_API
36495  cf->m_ml = ml;
36496  cf->m_self = (PyObject *) op;
36497 #endif
36498  Py_XINCREF(closure);
36499  op->func_closure = closure;
36500 #if !CYTHON_COMPILING_IN_LIMITED_API
36501  Py_XINCREF(module);
36502  cf->m_module = module;
36503 #endif
36504  op->func_dict = NULL;
36505  op->func_name = NULL;
36506  Py_INCREF(qualname);
36507  op->func_qualname = qualname;
36508  op->func_doc = NULL;
36509 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
36510  op->func_classobj = NULL;
36511 #else
36512  ((PyCMethodObject*)op)->mm_class = NULL;
36513 #endif
36514  op->func_globals = globals;
36515  Py_INCREF(op->func_globals);
36516  Py_XINCREF(code);
36517  op->func_code = code;
36518  op->defaults_pyobjects = 0;
36519  op->defaults_size = 0;
36520  op->defaults = NULL;
36521  op->defaults_tuple = NULL;
36522  op->defaults_kwdict = NULL;
36523  op->defaults_getter = NULL;
36524  op->func_annotations = NULL;
36525  op->func_is_coroutine = NULL;
36526 #if CYTHON_METH_FASTCALL
36527  switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
36528  case METH_NOARGS:
36529  __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
36530  break;
36531  case METH_O:
36532  __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
36533  break;
36534  case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
36535  __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
36536  break;
36537  case METH_FASTCALL | METH_KEYWORDS:
36538  __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
36539  break;
36540  case METH_VARARGS | METH_KEYWORDS:
36541  __Pyx_CyFunction_func_vectorcall(op) = NULL;
36542  break;
36543  default:
36544  PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
36545  Py_DECREF(op);
36546  return NULL;
36547  }
36548 #endif
36549  return (PyObject *) op;
36550 }
36551 static int
36552 __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
36553 {
36554  Py_CLEAR(m->func_closure);
36555 #if CYTHON_COMPILING_IN_LIMITED_API
36556  Py_CLEAR(m->func);
36557 #else
36558  Py_CLEAR(((PyCFunctionObject*)m)->m_module);
36559 #endif
36560  Py_CLEAR(m->func_dict);
36561  Py_CLEAR(m->func_name);
36562  Py_CLEAR(m->func_qualname);
36563  Py_CLEAR(m->func_doc);
36564  Py_CLEAR(m->func_globals);
36565  Py_CLEAR(m->func_code);
36566 #if !CYTHON_COMPILING_IN_LIMITED_API
36567 #if PY_VERSION_HEX < 0x030900B1
36568  Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
36569 #else
36570  {
36571  PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
36572  ((PyCMethodObject *) (m))->mm_class = NULL;
36573  Py_XDECREF(cls);
36574  }
36575 #endif
36576 #endif
36577  Py_CLEAR(m->defaults_tuple);
36578  Py_CLEAR(m->defaults_kwdict);
36579  Py_CLEAR(m->func_annotations);
36580  Py_CLEAR(m->func_is_coroutine);
36581  if (m->defaults) {
36582  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
36583  int i;
36584  for (i = 0; i < m->defaults_pyobjects; i++)
36585  Py_XDECREF(pydefaults[i]);
36586  PyObject_Free(m->defaults);
36587  m->defaults = NULL;
36588  }
36589  return 0;
36590 }
36591 static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
36592 {
36593  if (__Pyx_CyFunction_weakreflist(m) != NULL)
36594  PyObject_ClearWeakRefs((PyObject *) m);
36595  __Pyx_CyFunction_clear(m);
36596  __Pyx_PyHeapTypeObject_GC_Del(m);
36597 }
36598 static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
36599 {
36600  PyObject_GC_UnTrack(m);
36601  __Pyx__CyFunction_dealloc(m);
36602 }
36603 static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
36604 {
36605  Py_VISIT(m->func_closure);
36606 #if CYTHON_COMPILING_IN_LIMITED_API
36607  Py_VISIT(m->func);
36608 #else
36609  Py_VISIT(((PyCFunctionObject*)m)->m_module);
36610 #endif
36611  Py_VISIT(m->func_dict);
36612  Py_VISIT(m->func_name);
36613  Py_VISIT(m->func_qualname);
36614  Py_VISIT(m->func_doc);
36615  Py_VISIT(m->func_globals);
36616  Py_VISIT(m->func_code);
36617 #if !CYTHON_COMPILING_IN_LIMITED_API
36618  Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
36619 #endif
36620  Py_VISIT(m->defaults_tuple);
36621  Py_VISIT(m->defaults_kwdict);
36622  Py_VISIT(m->func_is_coroutine);
36623  if (m->defaults) {
36624  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
36625  int i;
36626  for (i = 0; i < m->defaults_pyobjects; i++)
36627  Py_VISIT(pydefaults[i]);
36628  }
36629  return 0;
36630 }
36631 static PyObject*
36632 __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
36633 {
36634 #if PY_MAJOR_VERSION >= 3
36635  return PyUnicode_FromFormat("<cyfunction %U at %p>",
36636  op->func_qualname, (void *)op);
36637 #else
36638  return PyString_FromFormat("<cyfunction %s at %p>",
36639  PyString_AsString(op->func_qualname), (void *)op);
36640 #endif
36641 }
36642 static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
36643 #if CYTHON_COMPILING_IN_LIMITED_API
36644  PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
36645  PyObject *py_name = NULL;
36646  PyCFunction meth;
36647  int flags;
36648  meth = PyCFunction_GetFunction(f);
36649  if (unlikely(!meth)) return NULL;
36650  flags = PyCFunction_GetFlags(f);
36651  if (unlikely(flags < 0)) return NULL;
36652 #else
36653  PyCFunctionObject* f = (PyCFunctionObject*)func;
36654  PyCFunction meth = f->m_ml->ml_meth;
36655  int flags = f->m_ml->ml_flags;
36656 #endif
36657  Py_ssize_t size;
36658  switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
36659  case METH_VARARGS:
36660  if (likely(kw == NULL || PyDict_Size(kw) == 0))
36661  return (*meth)(self, arg);
36662  break;
36663  case METH_VARARGS | METH_KEYWORDS:
36664  return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
36665  case METH_NOARGS:
36666  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
36667 #if CYTHON_ASSUME_SAFE_MACROS
36668  size = PyTuple_GET_SIZE(arg);
36669 #else
36670  size = PyTuple_Size(arg);
36671  if (unlikely(size < 0)) return NULL;
36672 #endif
36673  if (likely(size == 0))
36674  return (*meth)(self, NULL);
36675 #if CYTHON_COMPILING_IN_LIMITED_API
36676  py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
36677  if (!py_name) return NULL;
36678  PyErr_Format(PyExc_TypeError,
36679  "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
36680  py_name, size);
36681  Py_DECREF(py_name);
36682 #else
36683  PyErr_Format(PyExc_TypeError,
36684  "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
36685  f->m_ml->ml_name, size);
36686 #endif
36687  return NULL;
36688  }
36689  break;
36690  case METH_O:
36691  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
36692 #if CYTHON_ASSUME_SAFE_MACROS
36693  size = PyTuple_GET_SIZE(arg);
36694 #else
36695  size = PyTuple_Size(arg);
36696  if (unlikely(size < 0)) return NULL;
36697 #endif
36698  if (likely(size == 1)) {
36699  PyObject *result, *arg0;
36700  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
36701  arg0 = PyTuple_GET_ITEM(arg, 0);
36702  #else
36703  arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
36704  #endif
36705  result = (*meth)(self, arg0);
36706  #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
36707  Py_DECREF(arg0);
36708  #endif
36709  return result;
36710  }
36711 #if CYTHON_COMPILING_IN_LIMITED_API
36712  py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
36713  if (!py_name) return NULL;
36714  PyErr_Format(PyExc_TypeError,
36715  "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
36716  py_name, size);
36717  Py_DECREF(py_name);
36718 #else
36719  PyErr_Format(PyExc_TypeError,
36720  "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
36721  f->m_ml->ml_name, size);
36722 #endif
36723  return NULL;
36724  }
36725  break;
36726  default:
36727  PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
36728  return NULL;
36729  }
36730 #if CYTHON_COMPILING_IN_LIMITED_API
36731  py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
36732  if (!py_name) return NULL;
36733  PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
36734  py_name);
36735  Py_DECREF(py_name);
36736 #else
36737  PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
36738  f->m_ml->ml_name);
36739 #endif
36740  return NULL;
36741 }
36742 static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
36743  PyObject *self, *result;
36744 #if CYTHON_COMPILING_IN_LIMITED_API
36745  self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
36746  if (unlikely(!self) && PyErr_Occurred()) return NULL;
36747 #else
36748  self = ((PyCFunctionObject*)func)->m_self;
36749 #endif
36750  result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
36751  return result;
36752 }
36753 static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
36754  PyObject *result;
36755  __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
36756 #if CYTHON_METH_FASTCALL
36757  __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
36758  if (vc) {
36759 #if CYTHON_ASSUME_SAFE_MACROS
36760  return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
36761 #else
36762  (void) &__Pyx_PyVectorcall_FastCallDict;
36763  return PyVectorcall_Call(func, args, kw);
36764 #endif
36765  }
36766 #endif
36767  if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
36768  Py_ssize_t argc;
36769  PyObject *new_args;
36770  PyObject *self;
36771 #if CYTHON_ASSUME_SAFE_MACROS
36772  argc = PyTuple_GET_SIZE(args);
36773 #else
36774  argc = PyTuple_Size(args);
36775  if (unlikely(!argc) < 0) return NULL;
36776 #endif
36777  new_args = PyTuple_GetSlice(args, 1, argc);
36778  if (unlikely(!new_args))
36779  return NULL;
36780  self = PyTuple_GetItem(args, 0);
36781  if (unlikely(!self)) {
36782  Py_DECREF(new_args);
36783 #if PY_MAJOR_VERSION > 2
36784  PyErr_Format(PyExc_TypeError,
36785  "unbound method %.200S() needs an argument",
36786  cyfunc->func_qualname);
36787 #else
36788  PyErr_SetString(PyExc_TypeError,
36789  "unbound method needs an argument");
36790 #endif
36791  return NULL;
36792  }
36793  result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
36794  Py_DECREF(new_args);
36795  } else {
36796  result = __Pyx_CyFunction_Call(func, args, kw);
36797  }
36798  return result;
36799 }
36800 #if CYTHON_METH_FASTCALL
36801 static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
36802 {
36803  int ret = 0;
36804  if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
36805  if (unlikely(nargs < 1)) {
36806  PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
36807  ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
36808  return -1;
36809  }
36810  ret = 1;
36811  }
36812  if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
36813  PyErr_Format(PyExc_TypeError,
36814  "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
36815  return -1;
36816  }
36817  return ret;
36818 }
36819 static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
36820 {
36821  __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
36822  PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
36823 #if CYTHON_BACKPORT_VECTORCALL
36824  Py_ssize_t nargs = (Py_ssize_t)nargsf;
36825 #else
36826  Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
36827 #endif
36828  PyObject *self;
36829  switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
36830  case 1:
36831  self = args[0];
36832  args += 1;
36833  nargs -= 1;
36834  break;
36835  case 0:
36836  self = ((PyCFunctionObject*)cyfunc)->m_self;
36837  break;
36838  default:
36839  return NULL;
36840  }
36841  if (unlikely(nargs != 0)) {
36842  PyErr_Format(PyExc_TypeError,
36843  "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
36844  def->ml_name, nargs);
36845  return NULL;
36846  }
36847  return def->ml_meth(self, NULL);
36848 }
36849 static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
36850 {
36851  __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
36852  PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
36853 #if CYTHON_BACKPORT_VECTORCALL
36854  Py_ssize_t nargs = (Py_ssize_t)nargsf;
36855 #else
36856  Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
36857 #endif
36858  PyObject *self;
36859  switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
36860  case 1:
36861  self = args[0];
36862  args += 1;
36863  nargs -= 1;
36864  break;
36865  case 0:
36866  self = ((PyCFunctionObject*)cyfunc)->m_self;
36867  break;
36868  default:
36869  return NULL;
36870  }
36871  if (unlikely(nargs != 1)) {
36872  PyErr_Format(PyExc_TypeError,
36873  "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
36874  def->ml_name, nargs);
36875  return NULL;
36876  }
36877  return def->ml_meth(self, args[0]);
36878 }
36879 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
36880 {
36881  __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
36882  PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
36883 #if CYTHON_BACKPORT_VECTORCALL
36884  Py_ssize_t nargs = (Py_ssize_t)nargsf;
36885 #else
36886  Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
36887 #endif
36888  PyObject *self;
36889  switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
36890  case 1:
36891  self = args[0];
36892  args += 1;
36893  nargs -= 1;
36894  break;
36895  case 0:
36896  self = ((PyCFunctionObject*)cyfunc)->m_self;
36897  break;
36898  default:
36899  return NULL;
36900  }
36901  return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
36902 }
36903 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
36904 {
36905  __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
36906  PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
36907  PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
36908 #if CYTHON_BACKPORT_VECTORCALL
36909  Py_ssize_t nargs = (Py_ssize_t)nargsf;
36910 #else
36911  Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
36912 #endif
36913  PyObject *self;
36914  switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
36915  case 1:
36916  self = args[0];
36917  args += 1;
36918  nargs -= 1;
36919  break;
36920  case 0:
36921  self = ((PyCFunctionObject*)cyfunc)->m_self;
36922  break;
36923  default:
36924  return NULL;
36925  }
36926  return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
36927 }
36928 #endif
36929 #if CYTHON_USE_TYPE_SPECS
36930 static PyType_Slot __pyx_CyFunctionType_slots[] = {
36931  {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
36932  {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
36933  {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
36934  {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
36935  {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
36936  {Py_tp_methods, (void *)__pyx_CyFunction_methods},
36937  {Py_tp_members, (void *)__pyx_CyFunction_members},
36938  {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
36939  {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
36940  {0, 0},
36941 };
36942 static PyType_Spec __pyx_CyFunctionType_spec = {
36943  __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
36944  sizeof(__pyx_CyFunctionObject),
36945  0,
36946 #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
36947  Py_TPFLAGS_METHOD_DESCRIPTOR |
36948 #endif
36949 #if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
36950  _Py_TPFLAGS_HAVE_VECTORCALL |
36951 #endif
36952  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
36953  __pyx_CyFunctionType_slots
36954 };
36955 #else
36956 static PyTypeObject __pyx_CyFunctionType_type = {
36957  PyVarObject_HEAD_INIT(0, 0)
36958  __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
36959  sizeof(__pyx_CyFunctionObject),
36960  0,
36961  (destructor) __Pyx_CyFunction_dealloc,
36962 #if !CYTHON_METH_FASTCALL
36963  0,
36964 #elif CYTHON_BACKPORT_VECTORCALL
36965  (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
36966 #else
36967  offsetof(PyCFunctionObject, vectorcall),
36968 #endif
36969  0,
36970  0,
36971 #if PY_MAJOR_VERSION < 3
36972  0,
36973 #else
36974  0,
36975 #endif
36976  (reprfunc) __Pyx_CyFunction_repr,
36977  0,
36978  0,
36979  0,
36980  0,
36981  __Pyx_CyFunction_CallAsMethod,
36982  0,
36983  0,
36984  0,
36985  0,
36986 #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
36987  Py_TPFLAGS_METHOD_DESCRIPTOR |
36988 #endif
36989 #if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
36990  _Py_TPFLAGS_HAVE_VECTORCALL |
36991 #endif
36992  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
36993  0,
36994  (traverseproc) __Pyx_CyFunction_traverse,
36995  (inquiry) __Pyx_CyFunction_clear,
36996  0,
36997 #if PY_VERSION_HEX < 0x030500A0
36998  offsetof(__pyx_CyFunctionObject, func_weakreflist),
36999 #else
37000  offsetof(PyCFunctionObject, m_weakreflist),
37001 #endif
37002  0,
37003  0,
37004  __pyx_CyFunction_methods,
37005  __pyx_CyFunction_members,
37006  __pyx_CyFunction_getsets,
37007  0,
37008  0,
37009  __Pyx_PyMethod_New,
37010  0,
37011  offsetof(__pyx_CyFunctionObject, func_dict),
37012  0,
37013  0,
37014  0,
37015  0,
37016  0,
37017  0,
37018  0,
37019  0,
37020  0,
37021  0,
37022  0,
37023  0,
37024 #if PY_VERSION_HEX >= 0x030400a1
37025  0,
37026 #endif
37027 #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
37028  0,
37029 #endif
37030 #if __PYX_NEED_TP_PRINT_SLOT
37031  0,
37032 #endif
37033 #if PY_VERSION_HEX >= 0x030C0000
37034  0,
37035 #endif
37036 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
37037  0,
37038 #endif
37039 };
37040 #endif
37041 static int __pyx_CyFunction_init(PyObject *module) {
37042 #if CYTHON_USE_TYPE_SPECS
37043  __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
37044 #else
37045  CYTHON_UNUSED_VAR(module);
37046  __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
37047 #endif
37048  if (unlikely(__pyx_CyFunctionType == NULL)) {
37049  return -1;
37050  }
37051  return 0;
37052 }
37053 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
37054  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
37055  m->defaults = PyObject_Malloc(size);
37056  if (unlikely(!m->defaults))
37057  return PyErr_NoMemory();
37058  memset(m->defaults, 0, size);
37059  m->defaults_pyobjects = pyobjects;
37060  m->defaults_size = size;
37061  return m->defaults;
37062 }
37063 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
37064  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
37065  m->defaults_tuple = tuple;
37066  Py_INCREF(tuple);
37067 }
37068 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
37069  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
37070  m->defaults_kwdict = dict;
37071  Py_INCREF(dict);
37072 }
37073 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
37074  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
37075  m->func_annotations = dict;
37076  Py_INCREF(dict);
37077 }
37078 
37079 /* CythonFunction */
37080 static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
37081  PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
37082  PyObject *op = __Pyx_CyFunction_Init(
37083  PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
37084  ml, flags, qualname, closure, module, globals, code
37085  );
37086  if (likely(op)) {
37087  PyObject_GC_Track(op);
37088  }
37089  return op;
37090 }
37091 
37092 /* CLineInTraceback */
37093 #ifndef CYTHON_CLINE_IN_TRACEBACK
37094 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
37095  PyObject *use_cline;
37096  PyObject *ptype, *pvalue, *ptraceback;
37097 #if CYTHON_COMPILING_IN_CPYTHON
37098  PyObject **cython_runtime_dict;
37099 #endif
37100  CYTHON_MAYBE_UNUSED_VAR(tstate);
37101  if (unlikely(!__pyx_cython_runtime)) {
37102  return c_line;
37103  }
37104  __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
37105 #if CYTHON_COMPILING_IN_CPYTHON
37106  cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
37107  if (likely(cython_runtime_dict)) {
37108  __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
37109  use_cline, *cython_runtime_dict,
37110  __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
37111  } else
37112 #endif
37113  {
37114  PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
37115  if (use_cline_obj) {
37116  use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
37117  Py_DECREF(use_cline_obj);
37118  } else {
37119  PyErr_Clear();
37120  use_cline = NULL;
37121  }
37122  }
37123  if (!use_cline) {
37124  c_line = 0;
37125  (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
37126  }
37127  else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
37128  c_line = 0;
37129  }
37130  __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
37131  return c_line;
37132 }
37133 #endif
37134 
37135 /* CodeObjectCache */
37136 #if !CYTHON_COMPILING_IN_LIMITED_API
37137 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
37138  int start = 0, mid = 0, end = count - 1;
37139  if (end >= 0 && code_line > entries[end].code_line) {
37140  return count;
37141  }
37142  while (start < end) {
37143  mid = start + (end - start) / 2;
37144  if (code_line < entries[mid].code_line) {
37145  end = mid;
37146  } else if (code_line > entries[mid].code_line) {
37147  start = mid + 1;
37148  } else {
37149  return mid;
37150  }
37151  }
37152  if (code_line <= entries[mid].code_line) {
37153  return mid;
37154  } else {
37155  return mid + 1;
37156  }
37157 }
37158 static PyCodeObject *__pyx_find_code_object(int code_line) {
37159  PyCodeObject* code_object;
37160  int pos;
37161  if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
37162  return NULL;
37163  }
37164  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
37165  if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
37166  return NULL;
37167  }
37168  code_object = __pyx_code_cache.entries[pos].code_object;
37169  Py_INCREF(code_object);
37170  return code_object;
37171 }
37172 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
37173  int pos, i;
37174  __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
37175  if (unlikely(!code_line)) {
37176  return;
37177  }
37178  if (unlikely(!entries)) {
37179  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
37180  if (likely(entries)) {
37181  __pyx_code_cache.entries = entries;
37182  __pyx_code_cache.max_count = 64;
37183  __pyx_code_cache.count = 1;
37184  entries[0].code_line = code_line;
37185  entries[0].code_object = code_object;
37186  Py_INCREF(code_object);
37187  }
37188  return;
37189  }
37190  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
37191  if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
37192  PyCodeObject* tmp = entries[pos].code_object;
37193  entries[pos].code_object = code_object;
37194  Py_DECREF(tmp);
37195  return;
37196  }
37197  if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
37198  int new_max = __pyx_code_cache.max_count + 64;
37199  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
37200  __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
37201  if (unlikely(!entries)) {
37202  return;
37203  }
37204  __pyx_code_cache.entries = entries;
37205  __pyx_code_cache.max_count = new_max;
37206  }
37207  for (i=__pyx_code_cache.count; i>pos; i--) {
37208  entries[i] = entries[i-1];
37209  }
37210  entries[pos].code_line = code_line;
37211  entries[pos].code_object = code_object;
37212  __pyx_code_cache.count++;
37213  Py_INCREF(code_object);
37214 }
37215 #endif
37216 
37217 /* AddTraceback */
37218 #include "compile.h"
37219 #include "frameobject.h"
37220 #include "traceback.h"
37221 #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
37222  #ifndef Py_BUILD_CORE
37223  #define Py_BUILD_CORE 1
37224  #endif
37225  #include "internal/pycore_frame.h"
37226 #endif
37227 #if CYTHON_COMPILING_IN_LIMITED_API
37228 static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
37229  PyObject *firstlineno, PyObject *name) {
37230  PyObject *replace = NULL;
37231  if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
37232  if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
37233  replace = PyObject_GetAttrString(code, "replace");
37234  if (likely(replace)) {
37235  PyObject *result;
37236  result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
37237  Py_DECREF(replace);
37238  return result;
37239  }
37240  PyErr_Clear();
37241  #if __PYX_LIMITED_VERSION_HEX < 0x030780000
37242  {
37243  PyObject *compiled = NULL, *result = NULL;
37244  if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
37245  if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
37246  compiled = Py_CompileString(
37247  "out = type(code)(\n"
37248  " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
37249  " code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
37250  " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
37251  " code.co_lnotab)\n", "<dummy>", Py_file_input);
37252  if (!compiled) return NULL;
37253  result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
37254  Py_DECREF(compiled);
37255  if (!result) PyErr_Print();
37256  Py_DECREF(result);
37257  result = PyDict_GetItemString(scratch_dict, "out");
37258  if (result) Py_INCREF(result);
37259  return result;
37260  }
37261  #else
37262  return NULL;
37263  #endif
37264 }
37265 static void __Pyx_AddTraceback(const char *funcname, int c_line,
37266  int py_line, const char *filename) {
37267  PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
37268  PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
37269  PyObject *exc_type, *exc_value, *exc_traceback;
37270  int success = 0;
37271  if (c_line) {
37272  (void) __pyx_cfilenm;
37273  (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
37274  }
37275  PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
37276  code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
37277  if (unlikely(!code_object)) goto bad;
37278  py_py_line = PyLong_FromLong(py_line);
37279  if (unlikely(!py_py_line)) goto bad;
37280  py_funcname = PyUnicode_FromString(funcname);
37281  if (unlikely(!py_funcname)) goto bad;
37282  dict = PyDict_New();
37283  if (unlikely(!dict)) goto bad;
37284  {
37285  PyObject *old_code_object = code_object;
37286  code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
37287  Py_DECREF(old_code_object);
37288  }
37289  if (unlikely(!code_object)) goto bad;
37290  getframe = PySys_GetObject("_getframe");
37291  if (unlikely(!getframe)) goto bad;
37292  if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
37293  frame = PyEval_EvalCode(code_object, dict, dict);
37294  if (unlikely(!frame) || frame == Py_None) goto bad;
37295  success = 1;
37296  bad:
37297  PyErr_Restore(exc_type, exc_value, exc_traceback);
37298  Py_XDECREF(code_object);
37299  Py_XDECREF(py_py_line);
37300  Py_XDECREF(py_funcname);
37301  Py_XDECREF(dict);
37302  Py_XDECREF(replace);
37303  if (success) {
37304  PyTraceBack_Here(
37305  (struct _frame*)frame);
37306  }
37307  Py_XDECREF(frame);
37308 }
37309 #else
37310 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
37311  const char *funcname, int c_line,
37312  int py_line, const char *filename) {
37313  PyCodeObject *py_code = NULL;
37314  PyObject *py_funcname = NULL;
37315  #if PY_MAJOR_VERSION < 3
37316  PyObject *py_srcfile = NULL;
37317  py_srcfile = PyString_FromString(filename);
37318  if (!py_srcfile) goto bad;
37319  #endif
37320  if (c_line) {
37321  #if PY_MAJOR_VERSION < 3
37322  py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
37323  if (!py_funcname) goto bad;
37324  #else
37325  py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
37326  if (!py_funcname) goto bad;
37327  funcname = PyUnicode_AsUTF8(py_funcname);
37328  if (!funcname) goto bad;
37329  #endif
37330  }
37331  else {
37332  #if PY_MAJOR_VERSION < 3
37333  py_funcname = PyString_FromString(funcname);
37334  if (!py_funcname) goto bad;
37335  #endif
37336  }
37337  #if PY_MAJOR_VERSION < 3
37338  py_code = __Pyx_PyCode_New(
37339  0,
37340  0,
37341  0,
37342  0,
37343  0,
37344  0,
37345  __pyx_empty_bytes, /*PyObject *code,*/
37346  __pyx_empty_tuple, /*PyObject *consts,*/
37347  __pyx_empty_tuple, /*PyObject *names,*/
37348  __pyx_empty_tuple, /*PyObject *varnames,*/
37349  __pyx_empty_tuple, /*PyObject *freevars,*/
37350  __pyx_empty_tuple, /*PyObject *cellvars,*/
37351  py_srcfile, /*PyObject *filename,*/
37352  py_funcname, /*PyObject *name,*/
37353  py_line,
37354  __pyx_empty_bytes /*PyObject *lnotab*/
37355  );
37356  Py_DECREF(py_srcfile);
37357  #else
37358  py_code = PyCode_NewEmpty(filename, funcname, py_line);
37359  #endif
37360  Py_XDECREF(py_funcname);
37361  return py_code;
37362 bad:
37363  Py_XDECREF(py_funcname);
37364  #if PY_MAJOR_VERSION < 3
37365  Py_XDECREF(py_srcfile);
37366  #endif
37367  return NULL;
37368 }
37369 static void __Pyx_AddTraceback(const char *funcname, int c_line,
37370  int py_line, const char *filename) {
37371  PyCodeObject *py_code = 0;
37372  PyFrameObject *py_frame = 0;
37373  PyThreadState *tstate = __Pyx_PyThreadState_Current;
37374  PyObject *ptype, *pvalue, *ptraceback;
37375  if (c_line) {
37376  c_line = __Pyx_CLineForTraceback(tstate, c_line);
37377  }
37378  py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
37379  if (!py_code) {
37380  __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
37381  py_code = __Pyx_CreateCodeObjectForTraceback(
37382  funcname, c_line, py_line, filename);
37383  if (!py_code) {
37384  /* If the code object creation fails, then we should clear the
37385  fetched exception references and propagate the new exception */
37386  Py_XDECREF(ptype);
37387  Py_XDECREF(pvalue);
37388  Py_XDECREF(ptraceback);
37389  goto bad;
37390  }
37391  __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
37392  __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
37393  }
37394  py_frame = PyFrame_New(
37395  tstate, /*PyThreadState *tstate,*/
37396  py_code, /*PyCodeObject *code,*/
37397  __pyx_d, /*PyObject *globals,*/
37398  0 /*PyObject *locals*/
37399  );
37400  if (!py_frame) goto bad;
37401  __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
37402  PyTraceBack_Here(py_frame);
37403 bad:
37404  Py_XDECREF(py_code);
37405  Py_XDECREF(py_frame);
37406 }
37407 #endif
37408 
37409 /* CIntFromPyVerify */
37410 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
37411  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
37412 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
37413  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
37414 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
37415  {\
37416  func_type value = func_value;\
37417  if (sizeof(target_type) < sizeof(func_type)) {\
37418  if (unlikely(value != (func_type) (target_type) value)) {\
37419  func_type zero = 0;\
37420  if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
37421  return (target_type) -1;\
37422  if (is_unsigned && unlikely(value < zero))\
37423  goto raise_neg_overflow;\
37424  else\
37425  goto raise_overflow;\
37426  }\
37427  }\
37428  return (target_type) value;\
37429  }
37430 
37431 /* CIntFromPy */
37432 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
37433 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37434 #pragma GCC diagnostic push
37435 #pragma GCC diagnostic ignored "-Wconversion"
37436 #endif
37437  const int neg_one = (int) -1, const_zero = (int) 0;
37438 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37439 #pragma GCC diagnostic pop
37440 #endif
37441  const int is_unsigned = neg_one > const_zero;
37442 #if PY_MAJOR_VERSION < 3
37443  if (likely(PyInt_Check(x))) {
37444  if ((sizeof(int) < sizeof(long))) {
37445  __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
37446  } else {
37447  long val = PyInt_AS_LONG(x);
37448  if (is_unsigned && unlikely(val < 0)) {
37449  goto raise_neg_overflow;
37450  }
37451  return (int) val;
37452  }
37453  } else
37454 #endif
37455  if (likely(PyLong_Check(x))) {
37456  if (is_unsigned) {
37457 #if CYTHON_USE_PYLONG_INTERNALS
37458  if (unlikely(__Pyx_PyLong_IsNeg(x))) {
37459  goto raise_neg_overflow;
37460  } else if (__Pyx_PyLong_IsCompact(x)) {
37461  __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
37462  } else {
37463  const digit* digits = __Pyx_PyLong_Digits(x);
37464  assert(__Pyx_PyLong_DigitCount(x) > 1);
37465  switch (__Pyx_PyLong_DigitCount(x)) {
37466  case 2:
37467  if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
37468  if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
37469  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37470  } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
37471  return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
37472  }
37473  }
37474  break;
37475  case 3:
37476  if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
37477  if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
37478  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37479  } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
37480  return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
37481  }
37482  }
37483  break;
37484  case 4:
37485  if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
37486  if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
37487  __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])))
37488  } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
37489  return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
37490  }
37491  }
37492  break;
37493  }
37494  }
37495 #endif
37496 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
37497  if (unlikely(Py_SIZE(x) < 0)) {
37498  goto raise_neg_overflow;
37499  }
37500 #else
37501  {
37502  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37503  if (unlikely(result < 0))
37504  return (int) -1;
37505  if (unlikely(result == 1))
37506  goto raise_neg_overflow;
37507  }
37508 #endif
37509  if ((sizeof(int) <= sizeof(unsigned long))) {
37510  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
37511 #ifdef HAVE_LONG_LONG
37512  } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
37513  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37514 #endif
37515  }
37516  } else {
37517 #if CYTHON_USE_PYLONG_INTERNALS
37518  if (__Pyx_PyLong_IsCompact(x)) {
37519  __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
37520  } else {
37521  const digit* digits = __Pyx_PyLong_Digits(x);
37522  assert(__Pyx_PyLong_DigitCount(x) > 1);
37523  switch (__Pyx_PyLong_SignedDigitCount(x)) {
37524  case -2:
37525  if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
37526  if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
37527  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37528  } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
37529  return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37530  }
37531  }
37532  break;
37533  case 2:
37534  if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
37535  if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
37536  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37537  } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
37538  return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37539  }
37540  }
37541  break;
37542  case -3:
37543  if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
37544  if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
37545  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37546  } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
37547  return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37548  }
37549  }
37550  break;
37551  case 3:
37552  if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
37553  if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
37554  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37555  } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
37556  return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37557  }
37558  }
37559  break;
37560  case -4:
37561  if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
37562  if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
37563  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37564  } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
37565  return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37566  }
37567  }
37568  break;
37569  case 4:
37570  if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
37571  if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
37572  __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])))
37573  } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
37574  return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37575  }
37576  }
37577  break;
37578  }
37579  }
37580 #endif
37581  if ((sizeof(int) <= sizeof(long))) {
37582  __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
37583 #ifdef HAVE_LONG_LONG
37584  } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
37585  __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
37586 #endif
37587  }
37588  }
37589  {
37590  int val;
37591  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
37592 #if PY_MAJOR_VERSION < 3
37593  if (likely(v) && !PyLong_Check(v)) {
37594  PyObject *tmp = v;
37595  v = PyNumber_Long(tmp);
37596  Py_DECREF(tmp);
37597  }
37598 #endif
37599  if (likely(v)) {
37600  int ret = -1;
37601 #if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
37602  int one = 1; int is_little = (int)*(unsigned char *)&one;
37603  unsigned char *bytes = (unsigned char *)&val;
37604  ret = _PyLong_AsByteArray((PyLongObject *)v,
37605  bytes, sizeof(val),
37606  is_little, !is_unsigned);
37607 #else
37608  PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
37609  int bits, remaining_bits, is_negative = 0;
37610  long idigit;
37611  int chunk_size = (sizeof(long) < 8) ? 30 : 62;
37612  if (unlikely(!PyLong_CheckExact(v))) {
37613  PyObject *tmp = v;
37614  v = PyNumber_Long(v);
37615  assert(PyLong_CheckExact(v));
37616  Py_DECREF(tmp);
37617  if (unlikely(!v)) return (int) -1;
37618  }
37619 #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
37620  if (Py_SIZE(x) == 0)
37621  return (int) 0;
37622  is_negative = Py_SIZE(x) < 0;
37623 #else
37624  {
37625  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37626  if (unlikely(result < 0))
37627  return (int) -1;
37628  is_negative = result == 1;
37629  }
37630 #endif
37631  if (is_unsigned && unlikely(is_negative)) {
37632  goto raise_neg_overflow;
37633  } else if (is_negative) {
37634  stepval = PyNumber_Invert(v);
37635  if (unlikely(!stepval))
37636  return (int) -1;
37637  } else {
37638  stepval = __Pyx_NewRef(v);
37639  }
37640  val = (int) 0;
37641  mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
37642  shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
37643  for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
37644  PyObject *tmp, *digit;
37645  digit = PyNumber_And(stepval, mask);
37646  if (unlikely(!digit)) goto done;
37647  idigit = PyLong_AsLong(digit);
37648  Py_DECREF(digit);
37649  if (unlikely(idigit < 0)) goto done;
37650  tmp = PyNumber_Rshift(stepval, shift);
37651  if (unlikely(!tmp)) goto done;
37652  Py_DECREF(stepval); stepval = tmp;
37653  val |= ((int) idigit) << bits;
37654  #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
37655  if (Py_SIZE(stepval) == 0)
37656  goto unpacking_done;
37657  #endif
37658  }
37659  idigit = PyLong_AsLong(stepval);
37660  if (unlikely(idigit < 0)) goto done;
37661  remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
37662  if (unlikely(idigit >= (1L << remaining_bits)))
37663  goto raise_overflow;
37664  val |= ((int) idigit) << bits;
37665  #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
37666  unpacking_done:
37667  #endif
37668  if (!is_unsigned) {
37669  if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
37670  goto raise_overflow;
37671  if (is_negative)
37672  val = ~val;
37673  }
37674  ret = 0;
37675  done:
37676  Py_XDECREF(shift);
37677  Py_XDECREF(mask);
37678  Py_XDECREF(stepval);
37679 #endif
37680  Py_DECREF(v);
37681  if (likely(!ret))
37682  return val;
37683  }
37684  return (int) -1;
37685  }
37686  } else {
37687  int val;
37688  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
37689  if (!tmp) return (int) -1;
37690  val = __Pyx_PyInt_As_int(tmp);
37691  Py_DECREF(tmp);
37692  return val;
37693  }
37694 raise_overflow:
37695  PyErr_SetString(PyExc_OverflowError,
37696  "value too large to convert to int");
37697  return (int) -1;
37698 raise_neg_overflow:
37699  PyErr_SetString(PyExc_OverflowError,
37700  "can't convert negative value to int");
37701  return (int) -1;
37702 }
37703 
37704 /* CIntToPy */
37705 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
37706 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37707 #pragma GCC diagnostic push
37708 #pragma GCC diagnostic ignored "-Wconversion"
37709 #endif
37710  const int neg_one = (int) -1, const_zero = (int) 0;
37711 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37712 #pragma GCC diagnostic pop
37713 #endif
37714  const int is_unsigned = neg_one > const_zero;
37715  if (is_unsigned) {
37716  if (sizeof(int) < sizeof(long)) {
37717  return PyInt_FromLong((long) value);
37718  } else if (sizeof(int) <= sizeof(unsigned long)) {
37719  return PyLong_FromUnsignedLong((unsigned long) value);
37720 #ifdef HAVE_LONG_LONG
37721  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
37722  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
37723 #endif
37724  }
37725  } else {
37726  if (sizeof(int) <= sizeof(long)) {
37727  return PyInt_FromLong((long) value);
37728 #ifdef HAVE_LONG_LONG
37729  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
37730  return PyLong_FromLongLong((PY_LONG_LONG) value);
37731 #endif
37732  }
37733  }
37734  {
37735  int one = 1; int little = (int)*(unsigned char *)&one;
37736  unsigned char *bytes = (unsigned char *)&value;
37737 #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
37738  return _PyLong_FromByteArray(bytes, sizeof(int),
37739  little, !is_unsigned);
37740 #else
37741  PyObject *from_bytes, *result = NULL;
37742  PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
37743  from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
37744  if (!from_bytes) return NULL;
37745  py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
37746  if (!py_bytes) goto limited_bad;
37747  order_str = PyUnicode_FromString(little ? "little" : "big");
37748  if (!order_str) goto limited_bad;
37749  arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
37750  if (!arg_tuple) goto limited_bad;
37751  if (!is_unsigned) {
37752  kwds = PyDict_New();
37753  if (!kwds) goto limited_bad;
37754  if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
37755  }
37756  result = PyObject_Call(from_bytes, arg_tuple, kwds);
37757  limited_bad:
37758  Py_XDECREF(kwds);
37759  Py_XDECREF(arg_tuple);
37760  Py_XDECREF(order_str);
37761  Py_XDECREF(py_bytes);
37762  Py_XDECREF(from_bytes);
37763  return result;
37764 #endif
37765  }
37766 }
37767 
37768 /* FormatTypeName */
37769 #if CYTHON_COMPILING_IN_LIMITED_API
37770 static __Pyx_TypeName
37771 __Pyx_PyType_GetName(PyTypeObject* tp)
37772 {
37773  PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
37774  __pyx_n_s_name);
37775  if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
37776  PyErr_Clear();
37777  Py_XDECREF(name);
37778  name = __Pyx_NewRef(__pyx_n_s__113);
37779  }
37780  return name;
37781 }
37782 #endif
37783 
37784 /* CIntToPy */
37785 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
37786 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37787 #pragma GCC diagnostic push
37788 #pragma GCC diagnostic ignored "-Wconversion"
37789 #endif
37790  const long neg_one = (long) -1, const_zero = (long) 0;
37791 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37792 #pragma GCC diagnostic pop
37793 #endif
37794  const int is_unsigned = neg_one > const_zero;
37795  if (is_unsigned) {
37796  if (sizeof(long) < sizeof(long)) {
37797  return PyInt_FromLong((long) value);
37798  } else if (sizeof(long) <= sizeof(unsigned long)) {
37799  return PyLong_FromUnsignedLong((unsigned long) value);
37800 #ifdef HAVE_LONG_LONG
37801  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
37802  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
37803 #endif
37804  }
37805  } else {
37806  if (sizeof(long) <= sizeof(long)) {
37807  return PyInt_FromLong((long) value);
37808 #ifdef HAVE_LONG_LONG
37809  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
37810  return PyLong_FromLongLong((PY_LONG_LONG) value);
37811 #endif
37812  }
37813  }
37814  {
37815  int one = 1; int little = (int)*(unsigned char *)&one;
37816  unsigned char *bytes = (unsigned char *)&value;
37817 #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
37818  return _PyLong_FromByteArray(bytes, sizeof(long),
37819  little, !is_unsigned);
37820 #else
37821  PyObject *from_bytes, *result = NULL;
37822  PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
37823  from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
37824  if (!from_bytes) return NULL;
37825  py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
37826  if (!py_bytes) goto limited_bad;
37827  order_str = PyUnicode_FromString(little ? "little" : "big");
37828  if (!order_str) goto limited_bad;
37829  arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
37830  if (!arg_tuple) goto limited_bad;
37831  if (!is_unsigned) {
37832  kwds = PyDict_New();
37833  if (!kwds) goto limited_bad;
37834  if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
37835  }
37836  result = PyObject_Call(from_bytes, arg_tuple, kwds);
37837  limited_bad:
37838  Py_XDECREF(kwds);
37839  Py_XDECREF(arg_tuple);
37840  Py_XDECREF(order_str);
37841  Py_XDECREF(py_bytes);
37842  Py_XDECREF(from_bytes);
37843  return result;
37844 #endif
37845  }
37846 }
37847 
37848 /* CIntFromPy */
37849 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
37850 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37851 #pragma GCC diagnostic push
37852 #pragma GCC diagnostic ignored "-Wconversion"
37853 #endif
37854  const long neg_one = (long) -1, const_zero = (long) 0;
37855 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
37856 #pragma GCC diagnostic pop
37857 #endif
37858  const int is_unsigned = neg_one > const_zero;
37859 #if PY_MAJOR_VERSION < 3
37860  if (likely(PyInt_Check(x))) {
37861  if ((sizeof(long) < sizeof(long))) {
37862  __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
37863  } else {
37864  long val = PyInt_AS_LONG(x);
37865  if (is_unsigned && unlikely(val < 0)) {
37866  goto raise_neg_overflow;
37867  }
37868  return (long) val;
37869  }
37870  } else
37871 #endif
37872  if (likely(PyLong_Check(x))) {
37873  if (is_unsigned) {
37874 #if CYTHON_USE_PYLONG_INTERNALS
37875  if (unlikely(__Pyx_PyLong_IsNeg(x))) {
37876  goto raise_neg_overflow;
37877  } else if (__Pyx_PyLong_IsCompact(x)) {
37878  __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
37879  } else {
37880  const digit* digits = __Pyx_PyLong_Digits(x);
37881  assert(__Pyx_PyLong_DigitCount(x) > 1);
37882  switch (__Pyx_PyLong_DigitCount(x)) {
37883  case 2:
37884  if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
37885  if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
37886  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37887  } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
37888  return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
37889  }
37890  }
37891  break;
37892  case 3:
37893  if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
37894  if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
37895  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37896  } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
37897  return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
37898  }
37899  }
37900  break;
37901  case 4:
37902  if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
37903  if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
37904  __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])))
37905  } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
37906  return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
37907  }
37908  }
37909  break;
37910  }
37911  }
37912 #endif
37913 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
37914  if (unlikely(Py_SIZE(x) < 0)) {
37915  goto raise_neg_overflow;
37916  }
37917 #else
37918  {
37919  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37920  if (unlikely(result < 0))
37921  return (long) -1;
37922  if (unlikely(result == 1))
37923  goto raise_neg_overflow;
37924  }
37925 #endif
37926  if ((sizeof(long) <= sizeof(unsigned long))) {
37927  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
37928 #ifdef HAVE_LONG_LONG
37929  } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
37930  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37931 #endif
37932  }
37933  } else {
37934 #if CYTHON_USE_PYLONG_INTERNALS
37935  if (__Pyx_PyLong_IsCompact(x)) {
37936  __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
37937  } else {
37938  const digit* digits = __Pyx_PyLong_Digits(x);
37939  assert(__Pyx_PyLong_DigitCount(x) > 1);
37940  switch (__Pyx_PyLong_SignedDigitCount(x)) {
37941  case -2:
37942  if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
37943  if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
37944  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37945  } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
37946  return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37947  }
37948  }
37949  break;
37950  case 2:
37951  if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
37952  if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
37953  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37954  } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
37955  return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37956  }
37957  }
37958  break;
37959  case -3:
37960  if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
37961  if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
37962  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37963  } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
37964  return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37965  }
37966  }
37967  break;
37968  case 3:
37969  if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
37970  if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
37971  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37972  } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
37973  return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37974  }
37975  }
37976  break;
37977  case -4:
37978  if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
37979  if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
37980  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37981  } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
37982  return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37983  }
37984  }
37985  break;
37986  case 4:
37987  if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
37988  if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
37989  __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])))
37990  } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
37991  return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37992  }
37993  }
37994  break;
37995  }
37996  }
37997 #endif
37998  if ((sizeof(long) <= sizeof(long))) {
37999  __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
38000 #ifdef HAVE_LONG_LONG
38001  } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
38002  __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
38003 #endif
38004  }
38005  }
38006  {
38007  long val;
38008  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
38009 #if PY_MAJOR_VERSION < 3
38010  if (likely(v) && !PyLong_Check(v)) {
38011  PyObject *tmp = v;
38012  v = PyNumber_Long(tmp);
38013  Py_DECREF(tmp);
38014  }
38015 #endif
38016  if (likely(v)) {
38017  int ret = -1;
38018 #if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
38019  int one = 1; int is_little = (int)*(unsigned char *)&one;
38020  unsigned char *bytes = (unsigned char *)&val;
38021  ret = _PyLong_AsByteArray((PyLongObject *)v,
38022  bytes, sizeof(val),
38023  is_little, !is_unsigned);
38024 #else
38025  PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
38026  int bits, remaining_bits, is_negative = 0;
38027  long idigit;
38028  int chunk_size = (sizeof(long) < 8) ? 30 : 62;
38029  if (unlikely(!PyLong_CheckExact(v))) {
38030  PyObject *tmp = v;
38031  v = PyNumber_Long(v);
38032  assert(PyLong_CheckExact(v));
38033  Py_DECREF(tmp);
38034  if (unlikely(!v)) return (long) -1;
38035  }
38036 #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
38037  if (Py_SIZE(x) == 0)
38038  return (long) 0;
38039  is_negative = Py_SIZE(x) < 0;
38040 #else
38041  {
38042  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
38043  if (unlikely(result < 0))
38044  return (long) -1;
38045  is_negative = result == 1;
38046  }
38047 #endif
38048  if (is_unsigned && unlikely(is_negative)) {
38049  goto raise_neg_overflow;
38050  } else if (is_negative) {
38051  stepval = PyNumber_Invert(v);
38052  if (unlikely(!stepval))
38053  return (long) -1;
38054  } else {
38055  stepval = __Pyx_NewRef(v);
38056  }
38057  val = (long) 0;
38058  mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
38059  shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
38060  for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
38061  PyObject *tmp, *digit;
38062  digit = PyNumber_And(stepval, mask);
38063  if (unlikely(!digit)) goto done;
38064  idigit = PyLong_AsLong(digit);
38065  Py_DECREF(digit);
38066  if (unlikely(idigit < 0)) goto done;
38067  tmp = PyNumber_Rshift(stepval, shift);
38068  if (unlikely(!tmp)) goto done;
38069  Py_DECREF(stepval); stepval = tmp;
38070  val |= ((long) idigit) << bits;
38071  #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
38072  if (Py_SIZE(stepval) == 0)
38073  goto unpacking_done;
38074  #endif
38075  }
38076  idigit = PyLong_AsLong(stepval);
38077  if (unlikely(idigit < 0)) goto done;
38078  remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
38079  if (unlikely(idigit >= (1L << remaining_bits)))
38080  goto raise_overflow;
38081  val |= ((long) idigit) << bits;
38082  #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
38083  unpacking_done:
38084  #endif
38085  if (!is_unsigned) {
38086  if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
38087  goto raise_overflow;
38088  if (is_negative)
38089  val = ~val;
38090  }
38091  ret = 0;
38092  done:
38093  Py_XDECREF(shift);
38094  Py_XDECREF(mask);
38095  Py_XDECREF(stepval);
38096 #endif
38097  Py_DECREF(v);
38098  if (likely(!ret))
38099  return val;
38100  }
38101  return (long) -1;
38102  }
38103  } else {
38104  long val;
38105  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
38106  if (!tmp) return (long) -1;
38107  val = __Pyx_PyInt_As_long(tmp);
38108  Py_DECREF(tmp);
38109  return val;
38110  }
38111 raise_overflow:
38112  PyErr_SetString(PyExc_OverflowError,
38113  "value too large to convert to long");
38114  return (long) -1;
38115 raise_neg_overflow:
38116  PyErr_SetString(PyExc_OverflowError,
38117  "can't convert negative value to long");
38118  return (long) -1;
38119 }
38120 
38121 /* PyObjectCall2Args */
38122 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
38123  PyObject *args[3] = {NULL, arg1, arg2};
38124  return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
38125 }
38126 
38127 /* PyObjectCallMethod1 */
38128 #if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2)
38129 static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
38130  PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
38131  Py_DECREF(method);
38132  return result;
38133 }
38134 #endif
38135 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
38136 #if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2
38137  PyObject *args[2] = {obj, arg};
38138  (void) __Pyx_PyObject_GetMethod;
38139  (void) __Pyx_PyObject_CallOneArg;
38140  (void) __Pyx_PyObject_Call2Args;
38141  return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
38142 #else
38143  PyObject *method = NULL, *result;
38144  int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
38145  if (likely(is_method)) {
38146  result = __Pyx_PyObject_Call2Args(method, obj, arg);
38147  Py_DECREF(method);
38148  return result;
38149  }
38150  if (unlikely(!method)) return NULL;
38151  return __Pyx__PyObject_CallMethod1(method, arg);
38152 #endif
38153 }
38154 
38155 /* CoroutineBase */
38156 #include <frameobject.h>
38157 #if PY_VERSION_HEX >= 0x030b00a6
38158  #ifndef Py_BUILD_CORE
38159  #define Py_BUILD_CORE 1
38160  #endif
38161  #include "internal/pycore_frame.h"
38162 #endif
38163 #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
38164 static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) {
38165  PyObject *et, *ev, *tb;
38166  PyObject *value = NULL;
38167  CYTHON_UNUSED_VAR(__pyx_tstate);
38168  __Pyx_ErrFetch(&et, &ev, &tb);
38169  if (!et) {
38170  Py_XDECREF(tb);
38171  Py_XDECREF(ev);
38172  Py_INCREF(Py_None);
38173  *pvalue = Py_None;
38174  return 0;
38175  }
38176  if (likely(et == PyExc_StopIteration)) {
38177  if (!ev) {
38178  Py_INCREF(Py_None);
38179  value = Py_None;
38180  }
38181 #if PY_VERSION_HEX >= 0x030300A0
38182  else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) {
38183  value = ((PyStopIterationObject *)ev)->value;
38184  Py_INCREF(value);
38185  Py_DECREF(ev);
38186  }
38187 #endif
38188  else if (unlikely(PyTuple_Check(ev))) {
38189  if (PyTuple_GET_SIZE(ev) >= 1) {
38190 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38191  value = PyTuple_GET_ITEM(ev, 0);
38192  Py_INCREF(value);
38193 #else
38194  value = PySequence_ITEM(ev, 0);
38195 #endif
38196  } else {
38197  Py_INCREF(Py_None);
38198  value = Py_None;
38199  }
38200  Py_DECREF(ev);
38201  }
38202  else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
38203  value = ev;
38204  }
38205  if (likely(value)) {
38206  Py_XDECREF(tb);
38207  Py_DECREF(et);
38208  *pvalue = value;
38209  return 0;
38210  }
38211  } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
38212  __Pyx_ErrRestore(et, ev, tb);
38213  return -1;
38214  }
38215  PyErr_NormalizeException(&et, &ev, &tb);
38216  if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
38217  __Pyx_ErrRestore(et, ev, tb);
38218  return -1;
38219  }
38220  Py_XDECREF(tb);
38221  Py_DECREF(et);
38222 #if PY_VERSION_HEX >= 0x030300A0
38223  value = ((PyStopIterationObject *)ev)->value;
38224  Py_INCREF(value);
38225  Py_DECREF(ev);
38226 #else
38227  {
38228  PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
38229  Py_DECREF(ev);
38230  if (likely(args)) {
38231  value = PySequence_GetItem(args, 0);
38232  Py_DECREF(args);
38233  }
38234  if (unlikely(!value)) {
38235  __Pyx_ErrRestore(NULL, NULL, NULL);
38236  Py_INCREF(Py_None);
38237  value = Py_None;
38238  }
38239  }
38240 #endif
38241  *pvalue = value;
38242  return 0;
38243 }
38244 static CYTHON_INLINE
38245 void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
38246 #if PY_VERSION_HEX >= 0x030B00a4
38247  Py_CLEAR(exc_state->exc_value);
38248 #else
38249  PyObject *t, *v, *tb;
38250  t = exc_state->exc_type;
38251  v = exc_state->exc_value;
38252  tb = exc_state->exc_traceback;
38253  exc_state->exc_type = NULL;
38254  exc_state->exc_value = NULL;
38255  exc_state->exc_traceback = NULL;
38256  Py_XDECREF(t);
38257  Py_XDECREF(v);
38258  Py_XDECREF(tb);
38259 #endif
38260 }
38261 #define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
38262 static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) {
38263  const char *msg;
38264  CYTHON_MAYBE_UNUSED_VAR(gen);
38265  if ((0)) {
38266  #ifdef __Pyx_Coroutine_USED
38267  } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
38268  msg = "coroutine already executing";
38269  #endif
38270  #ifdef __Pyx_AsyncGen_USED
38271  } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
38272  msg = "async generator already executing";
38273  #endif
38274  } else {
38275  msg = "generator already executing";
38276  }
38277  PyErr_SetString(PyExc_ValueError, msg);
38278 }
38279 #define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
38280 static void __Pyx__Coroutine_NotStartedError(PyObject *gen) {
38281  const char *msg;
38282  CYTHON_MAYBE_UNUSED_VAR(gen);
38283  if ((0)) {
38284  #ifdef __Pyx_Coroutine_USED
38285  } else if (__Pyx_Coroutine_Check(gen)) {
38286  msg = "can't send non-None value to a just-started coroutine";
38287  #endif
38288  #ifdef __Pyx_AsyncGen_USED
38289  } else if (__Pyx_AsyncGen_CheckExact(gen)) {
38290  msg = "can't send non-None value to a just-started async generator";
38291  #endif
38292  } else {
38293  msg = "can't send non-None value to a just-started generator";
38294  }
38295  PyErr_SetString(PyExc_TypeError, msg);
38296 }
38297 #define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
38298 static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) {
38299  CYTHON_MAYBE_UNUSED_VAR(gen);
38300  CYTHON_MAYBE_UNUSED_VAR(closing);
38301  #ifdef __Pyx_Coroutine_USED
38302  if (!closing && __Pyx_Coroutine_Check(gen)) {
38303  PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
38304  } else
38305  #endif
38306  if (value) {
38307  #ifdef __Pyx_AsyncGen_USED
38308  if (__Pyx_AsyncGen_CheckExact(gen))
38309  PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
38310  else
38311  #endif
38312  PyErr_SetNone(PyExc_StopIteration);
38313  }
38314 }
38315 static
38316 PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
38317  __Pyx_PyThreadState_declare
38318  PyThreadState *tstate;
38319  __Pyx_ExcInfoStruct *exc_state;
38320  PyObject *retval;
38321  assert(!self->is_running);
38322  if (unlikely(self->resume_label == 0)) {
38323  if (unlikely(value && value != Py_None)) {
38324  return __Pyx_Coroutine_NotStartedError((PyObject*)self);
38325  }
38326  }
38327  if (unlikely(self->resume_label == -1)) {
38328  return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
38329  }
38330 #if CYTHON_FAST_THREAD_STATE
38331  __Pyx_PyThreadState_assign
38332  tstate = __pyx_tstate;
38333 #else
38334  tstate = __Pyx_PyThreadState_Current;
38335 #endif
38336  exc_state = &self->gi_exc_state;
38337  if (exc_state->exc_value) {
38338  #if CYTHON_COMPILING_IN_PYPY
38339  #else
38340  PyObject *exc_tb;
38341  #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
38342  exc_tb = PyException_GetTraceback(exc_state->exc_value);
38343  #elif PY_VERSION_HEX >= 0x030B00a4
38344  exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback;
38345  #else
38346  exc_tb = exc_state->exc_traceback;
38347  #endif
38348  if (exc_tb) {
38349  PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
38350  PyFrameObject *f = tb->tb_frame;
38351  assert(f->f_back == NULL);
38352  #if PY_VERSION_HEX >= 0x030B00A1
38353  f->f_back = PyThreadState_GetFrame(tstate);
38354  #else
38355  Py_XINCREF(tstate->frame);
38356  f->f_back = tstate->frame;
38357  #endif
38358  #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
38359  Py_DECREF(exc_tb);
38360  #endif
38361  }
38362  #endif
38363  }
38364 #if CYTHON_USE_EXC_INFO_STACK
38365  exc_state->previous_item = tstate->exc_info;
38366  tstate->exc_info = exc_state;
38367 #else
38368  if (exc_state->exc_type) {
38369  __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
38370  } else {
38371  __Pyx_Coroutine_ExceptionClear(exc_state);
38372  __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
38373  }
38374 #endif
38375  self->is_running = 1;
38376  retval = self->body(self, tstate, value);
38377  self->is_running = 0;
38378 #if CYTHON_USE_EXC_INFO_STACK
38379  exc_state = &self->gi_exc_state;
38380  tstate->exc_info = exc_state->previous_item;
38381  exc_state->previous_item = NULL;
38382  __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
38383 #endif
38384  return retval;
38385 }
38386 static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
38387 #if CYTHON_COMPILING_IN_PYPY
38388  CYTHON_UNUSED_VAR(exc_state);
38389 #else
38390  PyObject *exc_tb;
38391  #if PY_VERSION_HEX >= 0x030B00a4
38392  if (!exc_state->exc_value) return;
38393  exc_tb = PyException_GetTraceback(exc_state->exc_value);
38394  #else
38395  exc_tb = exc_state->exc_traceback;
38396  #endif
38397  if (likely(exc_tb)) {
38398  PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
38399  PyFrameObject *f = tb->tb_frame;
38400  Py_CLEAR(f->f_back);
38401  #if PY_VERSION_HEX >= 0x030B00a4
38402  Py_DECREF(exc_tb);
38403  #endif
38404  }
38405 #endif
38406 }
38407 static CYTHON_INLINE
38408 PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) {
38409  CYTHON_MAYBE_UNUSED_VAR(gen);
38410  if (unlikely(!retval)) {
38411  __Pyx_PyThreadState_declare
38412  __Pyx_PyThreadState_assign
38413  if (!__Pyx_PyErr_Occurred()) {
38414  PyObject *exc = PyExc_StopIteration;
38415  #ifdef __Pyx_AsyncGen_USED
38416  if (__Pyx_AsyncGen_CheckExact(gen))
38417  exc = __Pyx_PyExc_StopAsyncIteration;
38418  #endif
38419  __Pyx_PyErr_SetNone(exc);
38420  }
38421  }
38422  return retval;
38423 }
38424 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
38425 static CYTHON_INLINE
38426 PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
38427 #if PY_VERSION_HEX <= 0x030A00A1
38428  return _PyGen_Send(gen, arg);
38429 #else
38430  PyObject *result;
38431  if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
38432  if (PyAsyncGen_CheckExact(gen)) {
38433  assert(result == Py_None);
38434  PyErr_SetNone(PyExc_StopAsyncIteration);
38435  }
38436  else if (result == Py_None) {
38437  PyErr_SetNone(PyExc_StopIteration);
38438  }
38439  else {
38440 #if PY_VERSION_HEX < 0x030d00A1
38441  _PyGen_SetStopIterationValue(result);
38442 #else
38443  if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) {
38444  PyErr_SetObject(PyExc_StopIteration, result);
38445  } else {
38446  PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result);
38447  if (likely(exc != NULL)) {
38448  PyErr_SetObject(PyExc_StopIteration, exc);
38449  Py_DECREF(exc);
38450  }
38451  }
38452 #endif
38453  }
38454  Py_DECREF(result);
38455  result = NULL;
38456  }
38457  return result;
38458 #endif
38459 }
38460 #endif
38461 static CYTHON_INLINE
38462 PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
38463  PyObject *ret;
38464  PyObject *val = NULL;
38465  __Pyx_Coroutine_Undelegate(gen);
38466  __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
38467  ret = __Pyx_Coroutine_SendEx(gen, val, 0);
38468  Py_XDECREF(val);
38469  return ret;
38470 }
38471 static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
38472  PyObject *retval;
38473  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
38474  PyObject *yf = gen->yieldfrom;
38475  if (unlikely(gen->is_running))
38476  return __Pyx_Coroutine_AlreadyRunningError(gen);
38477  if (yf) {
38478  PyObject *ret;
38479  gen->is_running = 1;
38480  #ifdef __Pyx_Generator_USED
38481  if (__Pyx_Generator_CheckExact(yf)) {
38482  ret = __Pyx_Coroutine_Send(yf, value);
38483  } else
38484  #endif
38485  #ifdef __Pyx_Coroutine_USED
38486  if (__Pyx_Coroutine_Check(yf)) {
38487  ret = __Pyx_Coroutine_Send(yf, value);
38488  } else
38489  #endif
38490  #ifdef __Pyx_AsyncGen_USED
38491  if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
38492  ret = __Pyx_async_gen_asend_send(yf, value);
38493  } else
38494  #endif
38495  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
38496  if (PyGen_CheckExact(yf)) {
38497  ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
38498  } else
38499  #endif
38500  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
38501  if (PyCoro_CheckExact(yf)) {
38502  ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
38503  } else
38504  #endif
38505  {
38506  if (value == Py_None)
38507  ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf);
38508  else
38509  ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
38510  }
38511  gen->is_running = 0;
38512  if (likely(ret)) {
38513  return ret;
38514  }
38515  retval = __Pyx_Coroutine_FinishDelegation(gen);
38516  } else {
38517  retval = __Pyx_Coroutine_SendEx(gen, value, 0);
38518  }
38519  return __Pyx_Coroutine_MethodReturn(self, retval);
38520 }
38521 static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
38522  PyObject *retval = NULL;
38523  int err = 0;
38524  #ifdef __Pyx_Generator_USED
38525  if (__Pyx_Generator_CheckExact(yf)) {
38526  retval = __Pyx_Coroutine_Close(yf);
38527  if (!retval)
38528  return -1;
38529  } else
38530  #endif
38531  #ifdef __Pyx_Coroutine_USED
38532  if (__Pyx_Coroutine_Check(yf)) {
38533  retval = __Pyx_Coroutine_Close(yf);
38534  if (!retval)
38535  return -1;
38536  } else
38537  if (__Pyx_CoroutineAwait_CheckExact(yf)) {
38538  retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
38539  if (!retval)
38540  return -1;
38541  } else
38542  #endif
38543  #ifdef __Pyx_AsyncGen_USED
38544  if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
38545  retval = __Pyx_async_gen_asend_close(yf, NULL);
38546  } else
38547  if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
38548  retval = __Pyx_async_gen_athrow_close(yf, NULL);
38549  } else
38550  #endif
38551  {
38552  PyObject *meth;
38553  gen->is_running = 1;
38554  meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close);
38555  if (unlikely(!meth)) {
38556  if (unlikely(PyErr_Occurred())) {
38557  PyErr_WriteUnraisable(yf);
38558  }
38559  } else {
38560  retval = __Pyx_PyObject_CallNoArg(meth);
38561  Py_DECREF(meth);
38562  if (unlikely(!retval))
38563  err = -1;
38564  }
38565  gen->is_running = 0;
38566  }
38567  Py_XDECREF(retval);
38568  return err;
38569 }
38570 static PyObject *__Pyx_Generator_Next(PyObject *self) {
38571  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
38572  PyObject *yf = gen->yieldfrom;
38573  if (unlikely(gen->is_running))
38574  return __Pyx_Coroutine_AlreadyRunningError(gen);
38575  if (yf) {
38576  PyObject *ret;
38577  gen->is_running = 1;
38578  #ifdef __Pyx_Generator_USED
38579  if (__Pyx_Generator_CheckExact(yf)) {
38580  ret = __Pyx_Generator_Next(yf);
38581  } else
38582  #endif
38583  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
38584  if (PyGen_CheckExact(yf)) {
38585  ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
38586  } else
38587  #endif
38588  #ifdef __Pyx_Coroutine_USED
38589  if (__Pyx_Coroutine_Check(yf)) {
38590  ret = __Pyx_Coroutine_Send(yf, Py_None);
38591  } else
38592  #endif
38593  ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf);
38594  gen->is_running = 0;
38595  if (likely(ret)) {
38596  return ret;
38597  }
38598  return __Pyx_Coroutine_FinishDelegation(gen);
38599  }
38600  return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
38601 }
38602 static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) {
38603  CYTHON_UNUSED_VAR(arg);
38604  return __Pyx_Coroutine_Close(self);
38605 }
38606 static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
38607  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
38608  PyObject *retval, *raised_exception;
38609  PyObject *yf = gen->yieldfrom;
38610  int err = 0;
38611  if (unlikely(gen->is_running))
38612  return __Pyx_Coroutine_AlreadyRunningError(gen);
38613  if (yf) {
38614  Py_INCREF(yf);
38615  err = __Pyx_Coroutine_CloseIter(gen, yf);
38616  __Pyx_Coroutine_Undelegate(gen);
38617  Py_DECREF(yf);
38618  }
38619  if (err == 0)
38620  PyErr_SetNone(PyExc_GeneratorExit);
38621  retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
38622  if (unlikely(retval)) {
38623  const char *msg;
38624  Py_DECREF(retval);
38625  if ((0)) {
38626  #ifdef __Pyx_Coroutine_USED
38627  } else if (__Pyx_Coroutine_Check(self)) {
38628  msg = "coroutine ignored GeneratorExit";
38629  #endif
38630  #ifdef __Pyx_AsyncGen_USED
38631  } else if (__Pyx_AsyncGen_CheckExact(self)) {
38632 #if PY_VERSION_HEX < 0x03060000
38633  msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
38634 #else
38635  msg = "async generator ignored GeneratorExit";
38636 #endif
38637  #endif
38638  } else {
38639  msg = "generator ignored GeneratorExit";
38640  }
38641  PyErr_SetString(PyExc_RuntimeError, msg);
38642  return NULL;
38643  }
38644  raised_exception = PyErr_Occurred();
38645  if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
38646  if (raised_exception) PyErr_Clear();
38647  Py_INCREF(Py_None);
38648  return Py_None;
38649  }
38650  return NULL;
38651 }
38652 static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
38653  PyObject *args, int close_on_genexit) {
38654  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
38655  PyObject *yf = gen->yieldfrom;
38656  if (unlikely(gen->is_running))
38657  return __Pyx_Coroutine_AlreadyRunningError(gen);
38658  if (yf) {
38659  PyObject *ret;
38660  Py_INCREF(yf);
38661  if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
38662  int err = __Pyx_Coroutine_CloseIter(gen, yf);
38663  Py_DECREF(yf);
38664  __Pyx_Coroutine_Undelegate(gen);
38665  if (err < 0)
38666  return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
38667  goto throw_here;
38668  }
38669  gen->is_running = 1;
38670  if (0
38671  #ifdef __Pyx_Generator_USED
38672  || __Pyx_Generator_CheckExact(yf)
38673  #endif
38674  #ifdef __Pyx_Coroutine_USED
38675  || __Pyx_Coroutine_Check(yf)
38676  #endif
38677  ) {
38678  ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
38679  #ifdef __Pyx_Coroutine_USED
38680  } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
38681  ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
38682  #endif
38683  } else {
38684  PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw);
38685  if (unlikely(!meth)) {
38686  Py_DECREF(yf);
38687  if (unlikely(PyErr_Occurred())) {
38688  gen->is_running = 0;
38689  return NULL;
38690  }
38691  __Pyx_Coroutine_Undelegate(gen);
38692  gen->is_running = 0;
38693  goto throw_here;
38694  }
38695  if (likely(args)) {
38696  ret = __Pyx_PyObject_Call(meth, args, NULL);
38697  } else {
38698  PyObject *cargs[4] = {NULL, typ, val, tb};
38699  ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
38700  }
38701  Py_DECREF(meth);
38702  }
38703  gen->is_running = 0;
38704  Py_DECREF(yf);
38705  if (!ret) {
38706  ret = __Pyx_Coroutine_FinishDelegation(gen);
38707  }
38708  return __Pyx_Coroutine_MethodReturn(self, ret);
38709  }
38710 throw_here:
38711  __Pyx_Raise(typ, val, tb, NULL);
38712  return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
38713 }
38714 static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
38715  PyObject *typ;
38716  PyObject *val = NULL;
38717  PyObject *tb = NULL;
38718  if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)))
38719  return NULL;
38720  return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
38721 }
38722 static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
38723 #if PY_VERSION_HEX >= 0x030B00a4
38724  Py_VISIT(exc_state->exc_value);
38725 #else
38726  Py_VISIT(exc_state->exc_type);
38727  Py_VISIT(exc_state->exc_value);
38728  Py_VISIT(exc_state->exc_traceback);
38729 #endif
38730  return 0;
38731 }
38732 static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
38733  Py_VISIT(gen->closure);
38734  Py_VISIT(gen->classobj);
38735  Py_VISIT(gen->yieldfrom);
38736  return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
38737 }
38738 static int __Pyx_Coroutine_clear(PyObject *self) {
38739  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
38740  Py_CLEAR(gen->closure);
38741  Py_CLEAR(gen->classobj);
38742  Py_CLEAR(gen->yieldfrom);
38743  __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
38744 #ifdef __Pyx_AsyncGen_USED
38745  if (__Pyx_AsyncGen_CheckExact(self)) {
38746  Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
38747  }
38748 #endif
38749  Py_CLEAR(gen->gi_code);
38750  Py_CLEAR(gen->gi_frame);
38751  Py_CLEAR(gen->gi_name);
38752  Py_CLEAR(gen->gi_qualname);
38753  Py_CLEAR(gen->gi_modulename);
38754  return 0;
38755 }
38756 static void __Pyx_Coroutine_dealloc(PyObject *self) {
38757  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
38758  PyObject_GC_UnTrack(gen);
38759  if (gen->gi_weakreflist != NULL)
38760  PyObject_ClearWeakRefs(self);
38761  if (gen->resume_label >= 0) {
38762  PyObject_GC_Track(self);
38763 #if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
38764  if (unlikely(PyObject_CallFinalizerFromDealloc(self)))
38765 #else
38766  Py_TYPE(gen)->tp_del(self);
38767  if (unlikely(Py_REFCNT(self) > 0))
38768 #endif
38769  {
38770  return;
38771  }
38772  PyObject_GC_UnTrack(self);
38773  }
38774 #ifdef __Pyx_AsyncGen_USED
38775  if (__Pyx_AsyncGen_CheckExact(self)) {
38776  /* We have to handle this case for asynchronous generators
38777  right here, because this code has to be between UNTRACK
38778  and GC_Del. */
38779  Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
38780  }
38781 #endif
38782  __Pyx_Coroutine_clear(self);
38783  __Pyx_PyHeapTypeObject_GC_Del(gen);
38784 }
38785 static void __Pyx_Coroutine_del(PyObject *self) {
38786  PyObject *error_type, *error_value, *error_traceback;
38787  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
38788  __Pyx_PyThreadState_declare
38789  if (gen->resume_label < 0) {
38790  return;
38791  }
38792 #if !CYTHON_USE_TP_FINALIZE
38793  assert(self->ob_refcnt == 0);
38794  __Pyx_SET_REFCNT(self, 1);
38795 #endif
38796  __Pyx_PyThreadState_assign
38797  __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
38798 #ifdef __Pyx_AsyncGen_USED
38799  if (__Pyx_AsyncGen_CheckExact(self)) {
38800  __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
38801  PyObject *finalizer = agen->ag_finalizer;
38802  if (finalizer && !agen->ag_closed) {
38803  PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
38804  if (unlikely(!res)) {
38805  PyErr_WriteUnraisable(self);
38806  } else {
38807  Py_DECREF(res);
38808  }
38809  __Pyx_ErrRestore(error_type, error_value, error_traceback);
38810  return;
38811  }
38812  }
38813 #endif
38814  if (unlikely(gen->resume_label == 0 && !error_value)) {
38815 #ifdef __Pyx_Coroutine_USED
38816 #ifdef __Pyx_Generator_USED
38817  if (!__Pyx_Generator_CheckExact(self))
38818 #endif
38819  {
38820  PyObject_GC_UnTrack(self);
38821 #if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat)
38822  if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
38823  PyErr_WriteUnraisable(self);
38824 #else
38825  {PyObject *msg;
38826  char *cmsg;
38827  #if CYTHON_COMPILING_IN_PYPY
38828  msg = NULL;
38829  cmsg = (char*) "coroutine was never awaited";
38830  #else
38831  char *cname;
38832  PyObject *qualname;
38833  qualname = gen->gi_qualname;
38834  cname = PyString_AS_STRING(qualname);
38835  msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
38836  if (unlikely(!msg)) {
38837  PyErr_Clear();
38838  cmsg = (char*) "coroutine was never awaited";
38839  } else {
38840  cmsg = PyString_AS_STRING(msg);
38841  }
38842  #endif
38843  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
38844  PyErr_WriteUnraisable(self);
38845  Py_XDECREF(msg);}
38846 #endif
38847  PyObject_GC_Track(self);
38848  }
38849 #endif
38850  } else {
38851  PyObject *res = __Pyx_Coroutine_Close(self);
38852  if (unlikely(!res)) {
38853  if (PyErr_Occurred())
38854  PyErr_WriteUnraisable(self);
38855  } else {
38856  Py_DECREF(res);
38857  }
38858  }
38859  __Pyx_ErrRestore(error_type, error_value, error_traceback);
38860 #if !CYTHON_USE_TP_FINALIZE
38861  assert(Py_REFCNT(self) > 0);
38862  if (likely(--self->ob_refcnt == 0)) {
38863  return;
38864  }
38865  {
38866  Py_ssize_t refcnt = Py_REFCNT(self);
38867  _Py_NewReference(self);
38868  __Pyx_SET_REFCNT(self, refcnt);
38869  }
38870 #if CYTHON_COMPILING_IN_CPYTHON
38871  assert(PyType_IS_GC(Py_TYPE(self)) &&
38872  _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
38873  _Py_DEC_REFTOTAL;
38874 #endif
38875 #ifdef COUNT_ALLOCS
38876  --Py_TYPE(self)->tp_frees;
38877  --Py_TYPE(self)->tp_allocs;
38878 #endif
38879 #endif
38880 }
38881 static PyObject *
38882 __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context)
38883 {
38884  PyObject *name = self->gi_name;
38885  CYTHON_UNUSED_VAR(context);
38886  if (unlikely(!name)) name = Py_None;
38887  Py_INCREF(name);
38888  return name;
38889 }
38890 static int
38891 __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context)
38892 {
38893  CYTHON_UNUSED_VAR(context);
38894 #if PY_MAJOR_VERSION >= 3
38895  if (unlikely(value == NULL || !PyUnicode_Check(value)))
38896 #else
38897  if (unlikely(value == NULL || !PyString_Check(value)))
38898 #endif
38899  {
38900  PyErr_SetString(PyExc_TypeError,
38901  "__name__ must be set to a string object");
38902  return -1;
38903  }
38904  Py_INCREF(value);
38905  __Pyx_Py_XDECREF_SET(self->gi_name, value);
38906  return 0;
38907 }
38908 static PyObject *
38909 __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context)
38910 {
38911  PyObject *name = self->gi_qualname;
38912  CYTHON_UNUSED_VAR(context);
38913  if (unlikely(!name)) name = Py_None;
38914  Py_INCREF(name);
38915  return name;
38916 }
38917 static int
38918 __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context)
38919 {
38920  CYTHON_UNUSED_VAR(context);
38921 #if PY_MAJOR_VERSION >= 3
38922  if (unlikely(value == NULL || !PyUnicode_Check(value)))
38923 #else
38924  if (unlikely(value == NULL || !PyString_Check(value)))
38925 #endif
38926  {
38927  PyErr_SetString(PyExc_TypeError,
38928  "__qualname__ must be set to a string object");
38929  return -1;
38930  }
38931  Py_INCREF(value);
38932  __Pyx_Py_XDECREF_SET(self->gi_qualname, value);
38933  return 0;
38934 }
38935 static PyObject *
38936 __Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context)
38937 {
38938  PyObject *frame = self->gi_frame;
38939  CYTHON_UNUSED_VAR(context);
38940  if (!frame) {
38941  if (unlikely(!self->gi_code)) {
38942  Py_RETURN_NONE;
38943  }
38944  frame = (PyObject *) PyFrame_New(
38945  PyThreadState_Get(), /*PyThreadState *tstate,*/
38946  (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/
38947  __pyx_d, /*PyObject *globals,*/
38948  0 /*PyObject *locals*/
38949  );
38950  if (unlikely(!frame))
38951  return NULL;
38952  self->gi_frame = frame;
38953  }
38954  Py_INCREF(frame);
38955  return frame;
38956 }
38957 static __pyx_CoroutineObject *__Pyx__Coroutine_New(
38958  PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
38959  PyObject *name, PyObject *qualname, PyObject *module_name) {
38960  __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
38961  if (unlikely(!gen))
38962  return NULL;
38963  return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
38964 }
38965 static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
38966  __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
38967  PyObject *name, PyObject *qualname, PyObject *module_name) {
38968  gen->body = body;
38969  gen->closure = closure;
38970  Py_XINCREF(closure);
38971  gen->is_running = 0;
38972  gen->resume_label = 0;
38973  gen->classobj = NULL;
38974  gen->yieldfrom = NULL;
38975  #if PY_VERSION_HEX >= 0x030B00a4
38976  gen->gi_exc_state.exc_value = NULL;
38977  #else
38978  gen->gi_exc_state.exc_type = NULL;
38979  gen->gi_exc_state.exc_value = NULL;
38980  gen->gi_exc_state.exc_traceback = NULL;
38981  #endif
38982 #if CYTHON_USE_EXC_INFO_STACK
38983  gen->gi_exc_state.previous_item = NULL;
38984 #endif
38985  gen->gi_weakreflist = NULL;
38986  Py_XINCREF(qualname);
38987  gen->gi_qualname = qualname;
38988  Py_XINCREF(name);
38989  gen->gi_name = name;
38990  Py_XINCREF(module_name);
38991  gen->gi_modulename = module_name;
38992  Py_XINCREF(code);
38993  gen->gi_code = code;
38994  gen->gi_frame = NULL;
38995  PyObject_GC_Track(gen);
38996  return gen;
38997 }
38998 
38999 /* PatchModuleWithCoroutine */
39000 static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
39001 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
39002  int result;
39003  PyObject *globals, *result_obj;
39004  globals = PyDict_New(); if (unlikely(!globals)) goto ignore;
39005  result = PyDict_SetItemString(globals, "_cython_coroutine_type",
39006  #ifdef __Pyx_Coroutine_USED
39007  (PyObject*)__pyx_CoroutineType);
39008  #else
39009  Py_None);
39010  #endif
39011  if (unlikely(result < 0)) goto ignore;
39012  result = PyDict_SetItemString(globals, "_cython_generator_type",
39013  #ifdef __Pyx_Generator_USED
39014  (PyObject*)__pyx_GeneratorType);
39015  #else
39016  Py_None);
39017  #endif
39018  if (unlikely(result < 0)) goto ignore;
39019  if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
39020  if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
39021  result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
39022  if (unlikely(!result_obj)) goto ignore;
39023  Py_DECREF(result_obj);
39024  Py_DECREF(globals);
39025  return module;
39026 ignore:
39027  Py_XDECREF(globals);
39028  PyErr_WriteUnraisable(module);
39029  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
39030  Py_DECREF(module);
39031  module = NULL;
39032  }
39033 #else
39034  py_code++;
39035 #endif
39036  return module;
39037 }
39038 
39039 /* PatchGeneratorABC */
39040 #ifndef CYTHON_REGISTER_ABCS
39041 #define CYTHON_REGISTER_ABCS 1
39042 #endif
39043 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
39044 static PyObject* __Pyx_patch_abc_module(PyObject *module);
39045 static PyObject* __Pyx_patch_abc_module(PyObject *module) {
39046  module = __Pyx_Coroutine_patch_module(
39047  module, ""
39048 "if _cython_generator_type is not None:\n"
39049 " try: Generator = _module.Generator\n"
39050 " except AttributeError: pass\n"
39051 " else: Generator.register(_cython_generator_type)\n"
39052 "if _cython_coroutine_type is not None:\n"
39053 " try: Coroutine = _module.Coroutine\n"
39054 " except AttributeError: pass\n"
39055 " else: Coroutine.register(_cython_coroutine_type)\n"
39056  );
39057  return module;
39058 }
39059 #endif
39060 static int __Pyx_patch_abc(void) {
39061 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
39062  static int abc_patched = 0;
39063  if (CYTHON_REGISTER_ABCS && !abc_patched) {
39064  PyObject *module;
39065  module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
39066  if (unlikely(!module)) {
39067  PyErr_WriteUnraisable(NULL);
39068  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
39069  ((PY_MAJOR_VERSION >= 3) ?
39070  "Cython module failed to register with collections.abc module" :
39071  "Cython module failed to register with collections module"), 1) < 0)) {
39072  return -1;
39073  }
39074  } else {
39075  module = __Pyx_patch_abc_module(module);
39076  abc_patched = 1;
39077  if (unlikely(!module))
39078  return -1;
39079  Py_DECREF(module);
39080  }
39081  module = PyImport_ImportModule("backports_abc");
39082  if (module) {
39083  module = __Pyx_patch_abc_module(module);
39084  Py_XDECREF(module);
39085  }
39086  if (!module) {
39087  PyErr_Clear();
39088  }
39089  }
39090 #else
39091  if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
39092 #endif
39093  return 0;
39094 }
39095 
39096 /* Generator */
39097 static PyMethodDef __pyx_Generator_methods[] = {
39098  {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
39099  (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
39100  {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
39101  (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
39102  {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
39103  (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
39104  {0, 0, 0, 0}
39105 };
39106 static PyMemberDef __pyx_Generator_memberlist[] = {
39107  {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
39108  {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
39109  (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
39110  {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
39111  {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
39112 #if CYTHON_USE_TYPE_SPECS
39113  {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
39114 #endif
39115  {0, 0, 0, 0, 0}
39116 };
39117 static PyGetSetDef __pyx_Generator_getsets[] = {
39118  {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
39119  (char*) PyDoc_STR("name of the generator"), 0},
39120  {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
39121  (char*) PyDoc_STR("qualified name of the generator"), 0},
39122  {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
39123  (char*) PyDoc_STR("Frame of the generator"), 0},
39124  {0, 0, 0, 0, 0}
39125 };
39126 #if CYTHON_USE_TYPE_SPECS
39127 static PyType_Slot __pyx_GeneratorType_slots[] = {
39128  {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
39129  {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse},
39130  {Py_tp_iter, (void *)PyObject_SelfIter},
39131  {Py_tp_iternext, (void *)__Pyx_Generator_Next},
39132  {Py_tp_methods, (void *)__pyx_Generator_methods},
39133  {Py_tp_members, (void *)__pyx_Generator_memberlist},
39134  {Py_tp_getset, (void *)__pyx_Generator_getsets},
39135  {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict},
39136 #if CYTHON_USE_TP_FINALIZE
39137  {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
39138 #endif
39139  {0, 0},
39140 };
39141 static PyType_Spec __pyx_GeneratorType_spec = {
39142  __PYX_TYPE_MODULE_PREFIX "generator",
39143  sizeof(__pyx_CoroutineObject),
39144  0,
39145  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
39146  __pyx_GeneratorType_slots
39147 };
39148 #else
39149 static PyTypeObject __pyx_GeneratorType_type = {
39150  PyVarObject_HEAD_INIT(0, 0)
39151  __PYX_TYPE_MODULE_PREFIX "generator",
39152  sizeof(__pyx_CoroutineObject),
39153  0,
39154  (destructor) __Pyx_Coroutine_dealloc,
39155  0,
39156  0,
39157  0,
39158  0,
39159  0,
39160  0,
39161  0,
39162  0,
39163  0,
39164  0,
39165  0,
39166  0,
39167  0,
39168  0,
39169  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
39170  0,
39171  (traverseproc) __Pyx_Coroutine_traverse,
39172  0,
39173  0,
39174  offsetof(__pyx_CoroutineObject, gi_weakreflist),
39175  0,
39176  (iternextfunc) __Pyx_Generator_Next,
39177  __pyx_Generator_methods,
39178  __pyx_Generator_memberlist,
39179  __pyx_Generator_getsets,
39180  0,
39181  0,
39182  0,
39183  0,
39184  0,
39185  0,
39186  0,
39187  0,
39188  0,
39189  0,
39190  0,
39191  0,
39192  0,
39193  0,
39194  0,
39195 #if CYTHON_USE_TP_FINALIZE
39196  0,
39197 #else
39198  __Pyx_Coroutine_del,
39199 #endif
39200  0,
39201 #if CYTHON_USE_TP_FINALIZE
39202  __Pyx_Coroutine_del,
39203 #elif PY_VERSION_HEX >= 0x030400a1
39204  0,
39205 #endif
39206 #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
39207  0,
39208 #endif
39209 #if __PYX_NEED_TP_PRINT_SLOT
39210  0,
39211 #endif
39212 #if PY_VERSION_HEX >= 0x030C0000
39213  0,
39214 #endif
39215 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
39216  0,
39217 #endif
39218 };
39219 #endif
39220 static int __pyx_Generator_init(PyObject *module) {
39221 #if CYTHON_USE_TYPE_SPECS
39222  __pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_GeneratorType_spec, NULL);
39223 #else
39224  CYTHON_UNUSED_VAR(module);
39225  __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
39226  __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
39227  __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
39228 #endif
39229  if (unlikely(!__pyx_GeneratorType)) {
39230  return -1;
39231  }
39232  return 0;
39233 }
39234 
39235 /* CheckBinaryVersion */
39236 static unsigned long __Pyx_get_runtime_version(void) {
39237 #if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
39238  return Py_Version & ~0xFFUL;
39239 #else
39240  const char* rt_version = Py_GetVersion();
39241  unsigned long version = 0;
39242  unsigned long factor = 0x01000000UL;
39243  unsigned int digit = 0;
39244  int i = 0;
39245  while (factor) {
39246  while ('0' <= rt_version[i] && rt_version[i] <= '9') {
39247  digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
39248  ++i;
39249  }
39250  version += factor * digit;
39251  if (rt_version[i] != '.')
39252  break;
39253  digit = 0;
39254  factor >>= 8;
39255  ++i;
39256  }
39257  return version;
39258 #endif
39259 }
39260 static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
39261  const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
39262  if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
39263  return 0;
39264  if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
39265  return 1;
39266  {
39267  char message[200];
39268  PyOS_snprintf(message, sizeof(message),
39269  "compile time Python version %d.%d "
39270  "of module '%.100s' "
39271  "%s "
39272  "runtime version %d.%d",
39273  (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
39274  __Pyx_MODULE_NAME,
39275  (allow_newer) ? "was newer than" : "does not match",
39276  (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
39277  );
39278  return PyErr_WarnEx(NULL, message, 1);
39279  }
39280 }
39281 
39282 /* InitStrings */
39283 #if PY_MAJOR_VERSION >= 3
39284 static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
39285  if (t.is_unicode | t.is_str) {
39286  if (t.intern) {
39287  *str = PyUnicode_InternFromString(t.s);
39288  } else if (t.encoding) {
39289  *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
39290  } else {
39291  *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
39292  }
39293  } else {
39294  *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
39295  }
39296  if (!*str)
39297  return -1;
39298  if (PyObject_Hash(*str) == -1)
39299  return -1;
39300  return 0;
39301 }
39302 #endif
39303 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
39304  while (t->p) {
39305  #if PY_MAJOR_VERSION >= 3
39306  __Pyx_InitString(*t, t->p);
39307  #else
39308  if (t->is_unicode) {
39309  *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
39310  } else if (t->intern) {
39311  *t->p = PyString_InternFromString(t->s);
39312  } else {
39313  *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
39314  }
39315  if (!*t->p)
39316  return -1;
39317  if (PyObject_Hash(*t->p) == -1)
39318  return -1;
39319  #endif
39320  ++t;
39321  }
39322  return 0;
39323 }
39324 
39325 #include <string.h>
39326 static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
39327  size_t len = strlen(s);
39328  if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
39329  PyErr_SetString(PyExc_OverflowError, "byte string is too long");
39330  return -1;
39331  }
39332  return (Py_ssize_t) len;
39333 }
39334 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
39335  Py_ssize_t len = __Pyx_ssize_strlen(c_str);
39336  if (unlikely(len < 0)) return NULL;
39337  return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
39338 }
39339 static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
39340  Py_ssize_t len = __Pyx_ssize_strlen(c_str);
39341  if (unlikely(len < 0)) return NULL;
39342  return PyByteArray_FromStringAndSize(c_str, len);
39343 }
39344 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
39345  Py_ssize_t ignore;
39346  return __Pyx_PyObject_AsStringAndSize(o, &ignore);
39347 }
39348 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
39349 #if !CYTHON_PEP393_ENABLED
39350 static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
39351  char* defenc_c;
39352  PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
39353  if (!defenc) return NULL;
39354  defenc_c = PyBytes_AS_STRING(defenc);
39355 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
39356  {
39357  char* end = defenc_c + PyBytes_GET_SIZE(defenc);
39358  char* c;
39359  for (c = defenc_c; c < end; c++) {
39360  if ((unsigned char) (*c) >= 128) {
39361  PyUnicode_AsASCIIString(o);
39362  return NULL;
39363  }
39364  }
39365  }
39366 #endif
39367  *length = PyBytes_GET_SIZE(defenc);
39368  return defenc_c;
39369 }
39370 #else
39371 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
39372  if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
39373 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
39374  if (likely(PyUnicode_IS_ASCII(o))) {
39375  *length = PyUnicode_GET_LENGTH(o);
39376  return PyUnicode_AsUTF8(o);
39377  } else {
39378  PyUnicode_AsASCIIString(o);
39379  return NULL;
39380  }
39381 #else
39382  return PyUnicode_AsUTF8AndSize(o, length);
39383 #endif
39384 }
39385 #endif
39386 #endif
39387 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
39388 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
39389  if (
39390 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
39391  __Pyx_sys_getdefaultencoding_not_ascii &&
39392 #endif
39393  PyUnicode_Check(o)) {
39394  return __Pyx_PyUnicode_AsStringAndSize(o, length);
39395  } else
39396 #endif
39397 #if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
39398  if (PyByteArray_Check(o)) {
39399  *length = PyByteArray_GET_SIZE(o);
39400  return PyByteArray_AS_STRING(o);
39401  } else
39402 #endif
39403  {
39404  char* result;
39405  int r = PyBytes_AsStringAndSize(o, &result, length);
39406  if (unlikely(r < 0)) {
39407  return NULL;
39408  } else {
39409  return result;
39410  }
39411  }
39412 }
39413 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
39414  int is_true = x == Py_True;
39415  if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
39416  else return PyObject_IsTrue(x);
39417 }
39418 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
39419  int retval;
39420  if (unlikely(!x)) return -1;
39421  retval = __Pyx_PyObject_IsTrue(x);
39422  Py_DECREF(x);
39423  return retval;
39424 }
39425 static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
39426  __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
39427 #if PY_MAJOR_VERSION >= 3
39428  if (PyLong_Check(result)) {
39429  if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
39430  "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). "
39431  "The ability to return an instance of a strict subclass of int is deprecated, "
39432  "and may be removed in a future version of Python.",
39433  result_type_name)) {
39434  __Pyx_DECREF_TypeName(result_type_name);
39435  Py_DECREF(result);
39436  return NULL;
39437  }
39438  __Pyx_DECREF_TypeName(result_type_name);
39439  return result;
39440  }
39441 #endif
39442  PyErr_Format(PyExc_TypeError,
39443  "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
39444  type_name, type_name, result_type_name);
39445  __Pyx_DECREF_TypeName(result_type_name);
39446  Py_DECREF(result);
39447  return NULL;
39448 }
39449 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
39450 #if CYTHON_USE_TYPE_SLOTS
39451  PyNumberMethods *m;
39452 #endif
39453  const char *name = NULL;
39454  PyObject *res = NULL;
39455 #if PY_MAJOR_VERSION < 3
39456  if (likely(PyInt_Check(x) || PyLong_Check(x)))
39457 #else
39458  if (likely(PyLong_Check(x)))
39459 #endif
39460  return __Pyx_NewRef(x);
39461 #if CYTHON_USE_TYPE_SLOTS
39462  m = Py_TYPE(x)->tp_as_number;
39463  #if PY_MAJOR_VERSION < 3
39464  if (m && m->nb_int) {
39465  name = "int";
39466  res = m->nb_int(x);
39467  }
39468  else if (m && m->nb_long) {
39469  name = "long";
39470  res = m->nb_long(x);
39471  }
39472  #else
39473  if (likely(m && m->nb_int)) {
39474  name = "int";
39475  res = m->nb_int(x);
39476  }
39477  #endif
39478 #else
39479  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
39480  res = PyNumber_Int(x);
39481  }
39482 #endif
39483  if (likely(res)) {
39484 #if PY_MAJOR_VERSION < 3
39485  if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
39486 #else
39487  if (unlikely(!PyLong_CheckExact(res))) {
39488 #endif
39489  return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
39490  }
39491  }
39492  else if (!PyErr_Occurred()) {
39493  PyErr_SetString(PyExc_TypeError,
39494  "an integer is required");
39495  }
39496  return res;
39497 }
39498 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
39499  Py_ssize_t ival;
39500  PyObject *x;
39501 #if PY_MAJOR_VERSION < 3
39502  if (likely(PyInt_CheckExact(b))) {
39503  if (sizeof(Py_ssize_t) >= sizeof(long))
39504  return PyInt_AS_LONG(b);
39505  else
39506  return PyInt_AsSsize_t(b);
39507  }
39508 #endif
39509  if (likely(PyLong_CheckExact(b))) {
39510  #if CYTHON_USE_PYLONG_INTERNALS
39511  if (likely(__Pyx_PyLong_IsCompact(b))) {
39512  return __Pyx_PyLong_CompactValue(b);
39513  } else {
39514  const digit* digits = __Pyx_PyLong_Digits(b);
39515  const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
39516  switch (size) {
39517  case 2:
39518  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
39519  return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
39520  }
39521  break;
39522  case -2:
39523  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
39524  return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
39525  }
39526  break;
39527  case 3:
39528  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
39529  return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
39530  }
39531  break;
39532  case -3:
39533  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
39534  return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
39535  }
39536  break;
39537  case 4:
39538  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
39539  return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
39540  }
39541  break;
39542  case -4:
39543  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
39544  return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
39545  }
39546  break;
39547  }
39548  }
39549  #endif
39550  return PyLong_AsSsize_t(b);
39551  }
39552  x = PyNumber_Index(b);
39553  if (!x) return -1;
39554  ival = PyInt_AsSsize_t(x);
39555  Py_DECREF(x);
39556  return ival;
39557 }
39558 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
39559  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
39560  return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
39561 #if PY_MAJOR_VERSION < 3
39562  } else if (likely(PyInt_CheckExact(o))) {
39563  return PyInt_AS_LONG(o);
39564 #endif
39565  } else {
39566  Py_ssize_t ival;
39567  PyObject *x;
39568  x = PyNumber_Index(o);
39569  if (!x) return -1;
39570  ival = PyInt_AsLong(x);
39571  Py_DECREF(x);
39572  return ival;
39573  }
39574 }
39575 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
39576  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
39577 }
39578 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
39579  return PyInt_FromSize_t(ival);
39580 }
39581 
39582 
39583 /* #### Code section: utility_code_pragmas_end ### */
39584 #ifdef _MSC_VER
39585 #pragma warning( pop )
39586 #endif
39587 
39588 
39589 
39590 /* #### Code section: end ### */
39591 #endif /* Py_PYTHON_H */
auto atanh(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse hyperbolic tangent of multivector with specified complexifier.
String glucat_package_version
Definition: PyClical.h:53
String clifford_to_str(const Multivector_T &mv)
The "informal" string representation of Multivector_T mv.
Definition: PyClical.h:86
String index_set_to_repr(const Index_Set_T &ist)
The “official” string representation of Index_Set_T ist.
Definition: PyClical.h:57
auto exp(const framed_multi< Scalar_T, LO, HI, Tune_P > &val) -> const framed_multi< Scalar_T, LO, HI, Tune_P >
Exponential of multivector.
auto operator!=(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> bool
Test for inequality of multivectors.
auto max_pos(const index_set< LO, HI > &ist) -> index_t
Maximum positive index, or 0 if none.
double scalar_t
Definition: PyClical.h:147
auto min_neg(const index_set< LO, HI > &ist) -> index_t
Minimum negative index, or 0 if none.
auto asinh(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse hyperbolic sine of multivector with specified complexifier.
auto star(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> Scalar_T
Hestenes scalar product.
auto error_squared(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs, const Scalar_T threshold) -> Scalar_T
Relative or absolute error using the quadratic norm.
auto log(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Natural logarithm of multivector with specified complexifier.
auto complexifier(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Square root of -1 which commutes with all members of the frame of the given multivector.
const scalar_t epsilon
Definition: PyClical.h:150
auto sinh(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Hyperbolic sine of multivector.
auto approx_equal(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs, const Scalar_T threshold, const Scalar_T tolerance) -> bool
Test for approximate equality of multivectors.
A matrix_multi<Scalar_T,LO,HI,Tune_P> is a matrix approximation to a multivector. ...
Definition: framed_multi.h:59
String clifford_to_repr(const Multivector_T &mv)
The “official” string representation of Multivector_T mv.
Definition: PyClical.h:75
Multivector_T cga3(const Multivector_T &x)
Convert Euclidean 3D vector to Conformal Geometric Algebra null vector [DL (10.50)].
Definition: PyClical.h:103
auto asin(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse sine of multivector with specified complexifier.
auto tanh(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Hyperbolic tangent of multivector.
auto error_squared_tol(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Quadratic norm error tolerance relative to a specific multivector.
auto abs(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Absolute value == sqrt(norm)
auto compare(const index_set< LO, HI > &a, const index_set< LO, HI > &b) -> int
"lexicographic compare" eg. {3,4,5} is less than {3,7,8}
auto operator &(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inner product.
index_set< lo_ndx, hi_ndx > IndexSet
Definition: PyClical.h:145
auto tan(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Tangent of multivector with specified complexifier.
auto acosh(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse hyperbolic cosine of multivector with specified complexifier.
auto cos(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Cosine of multivector with specified complexifier.
auto atan(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse tangent of multivector with specified complexifier.
PyObject * PyFloat_FromDouble(Scalar_T v)
Definition: PyClical.h:45
auto sqrt(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Square root of multivector with specified complexifier.
Index set class based on std::bitset<> in Gnu standard C++ library.
Definition: index_set.h:45
String index_set_to_str(const Index_Set_T &ist)
The "informal" string representation of Index_Set_T ist.
Definition: PyClical.h:66
auto sin(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Sine of multivector with specified complexifier.
auto cosh(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Hyperbolic cosine of multivector.
auto max_abs(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Maximum of absolute values of components of multivector: multivector infinity norm.
matrix_multi< scalar_t, lo_ndx, hi_ndx, tuning_promoted > Clifford
Definition: PyClical.h:148
def e(obj)
Definition: PyClical.pyx:1999
auto acos(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse cosine of multivector with specified complexifier.
Multivector_T cga3std(const Multivector_T &X)
Convert CGA3 null vector to standard Conformal Geometric Algebra null vector [DL (10.52)].
Definition: PyClical.h:114
Multivector_T agc3(const Multivector_T &X)
Convert CGA3 null vector to Euclidean 3D vector [DL (10.50)].
Definition: PyClical.h:126