glucat  0.8.2
PyClical.cpp
Go to the documentation of this file.
1 /* Generated by Cython 0.23.4 */
2 
3 /* BEGIN: Cython Metadata
4 {
5  "distutils": {
6  "depends": [
7  "PyClical.h"
8  ],
9  "extra_compile_args": [
10  "-I.",
11  "-I..",
12  "-fno-strict-aliasing",
13  "-Wno-unused",
14  "-Wall",
15  "-std=c++11",
16  "-g",
17  "-O3",
18  "-fmessage-length=0",
19  "-grecord-gcc-switches",
20  "-O2",
21  "-Wall",
22  "-D_FORTIFY_SOURCE=2",
23  "-fstack-protector",
24  "-funwind-tables",
25  "-fasynchronous-unwind-tables",
26  "-march=native",
27  "-finline-limit=4000",
28  "--param",
29  "inline-unit-growth=200",
30  "-funroll-loops",
31  "-fvariable-expansion-in-unroller",
32  "-DNDEBUG",
33  "-DHAVE_BITS_WORDSIZE_H",
34  "-D_GLUCAT_USE_STD_UNORDERED_MAP",
35  "-D_GLUCAT_USE_DENSE_MATRICES",
36  "-D_GLUCAT_CHECK_ISNAN",
37  "-Wno-unused-local-typedefs",
38  "-Wno-misleading-indentation",
39  "-fno-check-new",
40  "-fexceptions"
41  ],
42  "include_dirs": [
43  ".",
44  ".."
45  ],
46  "language": "c++"
47  }
48 }
49 END: Cython Metadata */
50 
51 #define PY_SSIZE_T_CLEAN
52 #include "Python.h"
53 #ifndef Py_PYTHON_H
54  #error Python headers needed to compile C extensions, please install development version of Python.
55 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
56  #error Cython requires Python 2.6+ or Python 3.2+.
57 #else
58 #define CYTHON_ABI "0_23_4"
59 #include <stddef.h>
60 #ifndef offsetof
61 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
62 #endif
63 #if !defined(WIN32) && !defined(MS_WINDOWS)
64  #ifndef __stdcall
65  #define __stdcall
66  #endif
67  #ifndef __cdecl
68  #define __cdecl
69  #endif
70  #ifndef __fastcall
71  #define __fastcall
72  #endif
73 #endif
74 #ifndef DL_IMPORT
75  #define DL_IMPORT(t) t
76 #endif
77 #ifndef DL_EXPORT
78  #define DL_EXPORT(t) t
79 #endif
80 #ifndef PY_LONG_LONG
81  #define PY_LONG_LONG LONG_LONG
82 #endif
83 #ifndef Py_HUGE_VAL
84  #define Py_HUGE_VAL HUGE_VAL
85 #endif
86 #ifdef PYPY_VERSION
87 #define CYTHON_COMPILING_IN_PYPY 1
88 #define CYTHON_COMPILING_IN_CPYTHON 0
89 #else
90 #define CYTHON_COMPILING_IN_PYPY 0
91 #define CYTHON_COMPILING_IN_CPYTHON 1
92 #endif
93 #if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
94 #define CYTHON_USE_PYLONG_INTERNALS 1
95 #endif
96 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
97 #define Py_OptimizeFlag 0
98 #endif
99 #define __PYX_BUILD_PY_SSIZE_T "n"
100 #define CYTHON_FORMAT_SSIZE_T "z"
101 #if PY_MAJOR_VERSION < 3
102  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
103  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
104  PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
105  #define __Pyx_DefaultClassType PyClass_Type
106 #else
107  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
108  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
109  PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
110  #define __Pyx_DefaultClassType PyType_Type
111 #endif
112 #ifndef Py_TPFLAGS_CHECKTYPES
113  #define Py_TPFLAGS_CHECKTYPES 0
114 #endif
115 #ifndef Py_TPFLAGS_HAVE_INDEX
116  #define Py_TPFLAGS_HAVE_INDEX 0
117 #endif
118 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
119  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
120 #endif
121 #ifndef Py_TPFLAGS_HAVE_FINALIZE
122  #define Py_TPFLAGS_HAVE_FINALIZE 0
123 #endif
124 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
125  #define CYTHON_PEP393_ENABLED 1
126  #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
127  0 : _PyUnicode_Ready((PyObject *)(op)))
128  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
129  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
130  #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
131  #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
132  #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
133 #else
134  #define CYTHON_PEP393_ENABLED 0
135  #define __Pyx_PyUnicode_READY(op) (0)
136  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
137  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
138  #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
139  #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
140  #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
141 #endif
142 #if CYTHON_COMPILING_IN_PYPY
143  #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
144  #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
145 #else
146  #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
147  #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
148  PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
149 #endif
150 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
151  #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
152 #endif
153 #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
154 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
155 #if PY_MAJOR_VERSION >= 3
156  #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
157 #else
158  #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
159 #endif
160 #if PY_MAJOR_VERSION >= 3
161  #define PyBaseString_Type PyUnicode_Type
162  #define PyStringObject PyUnicodeObject
163  #define PyString_Type PyUnicode_Type
164  #define PyString_Check PyUnicode_Check
165  #define PyString_CheckExact PyUnicode_CheckExact
166 #endif
167 #if PY_MAJOR_VERSION >= 3
168  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
169  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
170 #else
171  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
172  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
173 #endif
174 #ifndef PySet_CheckExact
175  #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
176 #endif
177 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
178 #if PY_MAJOR_VERSION >= 3
179  #define PyIntObject PyLongObject
180  #define PyInt_Type PyLong_Type
181  #define PyInt_Check(op) PyLong_Check(op)
182  #define PyInt_CheckExact(op) PyLong_CheckExact(op)
183  #define PyInt_FromString PyLong_FromString
184  #define PyInt_FromUnicode PyLong_FromUnicode
185  #define PyInt_FromLong PyLong_FromLong
186  #define PyInt_FromSize_t PyLong_FromSize_t
187  #define PyInt_FromSsize_t PyLong_FromSsize_t
188  #define PyInt_AsLong PyLong_AsLong
189  #define PyInt_AS_LONG PyLong_AS_LONG
190  #define PyInt_AsSsize_t PyLong_AsSsize_t
191  #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
192  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
193  #define PyNumber_Int PyNumber_Long
194 #endif
195 #if PY_MAJOR_VERSION >= 3
196  #define PyBoolObject PyLongObject
197 #endif
198 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
199  #ifndef PyUnicode_InternFromString
200  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
201  #endif
202 #endif
203 #if PY_VERSION_HEX < 0x030200A4
204  typedef long Py_hash_t;
205  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
206  #define __Pyx_PyInt_AsHash_t PyInt_AsLong
207 #else
208  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
209  #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
210 #endif
211 #if PY_MAJOR_VERSION >= 3
212  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
213 #else
214  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
215 #endif
216 #if PY_VERSION_HEX >= 0x030500B1
217 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
218 #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
219 #elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
220 typedef struct {
221  unaryfunc am_await;
222  unaryfunc am_aiter;
223  unaryfunc am_anext;
224 } __Pyx_PyAsyncMethodsStruct;
225 #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
226 #else
227 #define __Pyx_PyType_AsAsync(obj) NULL
228 #endif
229 #ifndef CYTHON_RESTRICT
230  #if defined(__GNUC__)
231  #define CYTHON_RESTRICT __restrict__
232  #elif defined(_MSC_VER) && _MSC_VER >= 1400
233  #define CYTHON_RESTRICT __restrict
234  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
235  #define CYTHON_RESTRICT restrict
236  #else
237  #define CYTHON_RESTRICT
238  #endif
239 #endif
240 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
241 
242 #ifndef __cplusplus
243  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
244 #endif
245 #ifndef CYTHON_INLINE
246  #define CYTHON_INLINE inline
247 #endif
248 template<typename T>
249 void __Pyx_call_destructor(T& x) {
250  x.~T();
251 }
252 template<typename T>
253 class __Pyx_FakeReference {
254  public:
255  __Pyx_FakeReference() : ptr(NULL) { }
256  __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
257  T *operator->() { return ptr; }
258  operator T&() { return *ptr; }
259  private:
260  T *ptr;
261 };
262 
263 #if defined(WIN32) || defined(MS_WINDOWS)
264  #define _USE_MATH_DEFINES
265 #endif
266 #include <math.h>
267 #ifdef NAN
268 #define __PYX_NAN() ((float) NAN)
269 #else
270 static CYTHON_INLINE float __PYX_NAN() {
271  float value;
272  memset(&value, 0xFF, sizeof(value));
273  return value;
274 }
275 #endif
276 
277 
278 #if PY_MAJOR_VERSION >= 3
279  #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
280  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
281 #else
282  #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
283  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
284 #endif
285 
286 #ifndef __PYX_EXTERN_C
287  #ifdef __cplusplus
288  #define __PYX_EXTERN_C extern "C"
289  #else
290  #define __PYX_EXTERN_C extern
291  #endif
292 #endif
293 
294 #define __PYX_HAVE__PyClical
295 #define __PYX_HAVE_API__PyClical
296 #include <vector>
297 #include "ios"
298 #include "new"
299 #include "stdexcept"
300 #include "typeinfo"
301 #include "PyClical.h"
302 #ifdef _OPENMP
303 #include <omp.h>
304 #endif /* _OPENMP */
305 
306 #ifdef PYREX_WITHOUT_ASSERTIONS
307 #define CYTHON_WITHOUT_ASSERTIONS
308 #endif
309 
310 #ifndef CYTHON_UNUSED
311 # if defined(__GNUC__)
312 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
313 # define CYTHON_UNUSED __attribute__ ((__unused__))
314 # else
315 # define CYTHON_UNUSED
316 # endif
317 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
318 # define CYTHON_UNUSED __attribute__ ((__unused__))
319 # else
320 # define CYTHON_UNUSED
321 # endif
322 #endif
323 #ifndef CYTHON_NCP_UNUSED
324 # if CYTHON_COMPILING_IN_CPYTHON
325 # define CYTHON_NCP_UNUSED
326 # else
327 # define CYTHON_NCP_UNUSED CYTHON_UNUSED
328 # endif
329 #endif
330 typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
331  const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
332 
333 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
334 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
335 #define __PYX_DEFAULT_STRING_ENCODING ""
336 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
337 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
338 #define __Pyx_uchar_cast(c) ((unsigned char)c)
339 #define __Pyx_long_cast(x) ((long)x)
340 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
341  (sizeof(type) < sizeof(Py_ssize_t)) ||\
342  (sizeof(type) > sizeof(Py_ssize_t) &&\
343  likely(v < (type)PY_SSIZE_T_MAX ||\
344  v == (type)PY_SSIZE_T_MAX) &&\
345  (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
346  v == (type)PY_SSIZE_T_MIN))) ||\
347  (sizeof(type) == sizeof(Py_ssize_t) &&\
348  (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
349  v == (type)PY_SSIZE_T_MAX))) )
350 #if defined (__cplusplus) && __cplusplus >= 201103L
351  #include <cstdlib>
352  #define __Pyx_sst_abs(value) std::abs(value)
353 #elif SIZEOF_INT >= SIZEOF_SIZE_T
354  #define __Pyx_sst_abs(value) abs(value)
355 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
356  #define __Pyx_sst_abs(value) labs(value)
357 #elif defined (_MSC_VER) && defined (_M_X64)
358  #define __Pyx_sst_abs(value) _abs64(value)
359 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
360  #define __Pyx_sst_abs(value) llabs(value)
361 #elif defined (__GNUC__)
362  #define __Pyx_sst_abs(value) __builtin_llabs(value)
363 #else
364  #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
365 #endif
366 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
367 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
368 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
369 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
370 #define __Pyx_PyBytes_FromString PyBytes_FromString
371 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
372 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
373 #if PY_MAJOR_VERSION < 3
374  #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
375  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
376 #else
377  #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
378  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
379 #endif
380 #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
381 #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
382 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
383 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
384 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
385 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
386 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
387 #if PY_MAJOR_VERSION < 3
388 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
389 {
390  const Py_UNICODE *u_end = u;
391  while (*u_end++) ;
392  return (size_t)(u_end - u - 1);
393 }
394 #else
395 #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
396 #endif
397 #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
398 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
399 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
400 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
401 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
402 #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
403 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
404 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
405 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
406 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
407 #if CYTHON_COMPILING_IN_CPYTHON
408 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
409 #else
410 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
411 #endif
412 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
413 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
414 static int __Pyx_sys_getdefaultencoding_not_ascii;
415 static int __Pyx_init_sys_getdefaultencoding_params(void) {
416  PyObject* sys;
417  PyObject* default_encoding = NULL;
418  PyObject* ascii_chars_u = NULL;
419  PyObject* ascii_chars_b = NULL;
420  const char* default_encoding_c;
421  sys = PyImport_ImportModule("sys");
422  if (!sys) goto bad;
423  default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
424  Py_DECREF(sys);
425  if (!default_encoding) goto bad;
426  default_encoding_c = PyBytes_AsString(default_encoding);
427  if (!default_encoding_c) goto bad;
428  if (strcmp(default_encoding_c, "ascii") == 0) {
429  __Pyx_sys_getdefaultencoding_not_ascii = 0;
430  } else {
431  char ascii_chars[128];
432  int c;
433  for (c = 0; c < 128; c++) {
434  ascii_chars[c] = c;
435  }
436  __Pyx_sys_getdefaultencoding_not_ascii = 1;
437  ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
438  if (!ascii_chars_u) goto bad;
439  ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
440  if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
441  PyErr_Format(
442  PyExc_ValueError,
443  "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
444  default_encoding_c);
445  goto bad;
446  }
447  Py_DECREF(ascii_chars_u);
448  Py_DECREF(ascii_chars_b);
449  }
450  Py_DECREF(default_encoding);
451  return 0;
452 bad:
453  Py_XDECREF(default_encoding);
454  Py_XDECREF(ascii_chars_u);
455  Py_XDECREF(ascii_chars_b);
456  return -1;
457 }
458 #endif
459 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
460 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
461 #else
462 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
463 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
464 static char* __PYX_DEFAULT_STRING_ENCODING;
465 static int __Pyx_init_sys_getdefaultencoding_params(void) {
466  PyObject* sys;
467  PyObject* default_encoding = NULL;
468  char* default_encoding_c;
469  sys = PyImport_ImportModule("sys");
470  if (!sys) goto bad;
471  default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
472  Py_DECREF(sys);
473  if (!default_encoding) goto bad;
474  default_encoding_c = PyBytes_AsString(default_encoding);
475  if (!default_encoding_c) goto bad;
476  __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
477  if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
478  strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
479  Py_DECREF(default_encoding);
480  return 0;
481 bad:
482  Py_XDECREF(default_encoding);
483  return -1;
484 }
485 #endif
486 #endif
487 
488 
489 /* Test for GCC > 2.95 */
490 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
491  #define likely(x) __builtin_expect(!!(x), 1)
492  #define unlikely(x) __builtin_expect(!!(x), 0)
493 #else /* !__GNUC__ or GCC < 2.95 */
494  #define likely(x) (x)
495  #define unlikely(x) (x)
496 #endif /* __GNUC__ */
497 
498 static PyObject *__pyx_m;
499 static PyObject *__pyx_d;
500 static PyObject *__pyx_b;
501 static PyObject *__pyx_empty_tuple;
502 static PyObject *__pyx_empty_bytes;
503 static int __pyx_lineno;
504 static int __pyx_clineno = 0;
505 static const char * __pyx_cfilenm= __FILE__;
506 static const char *__pyx_filename;
507 
508 
509 static const char *__pyx_f[] = {
510  "PyClical.pyx",
511 };
512 
513 /*--- Type declarations ---*/
514 struct __pyx_obj_8PyClical_index_set;
515 struct __pyx_obj_8PyClical_clifford;
516 struct __pyx_obj_8PyClical___pyx_scope_struct____iter__;
517 struct __pyx_opt_args_8PyClical_sqrt;
518 struct __pyx_opt_args_8PyClical_log;
519 struct __pyx_opt_args_8PyClical_cos;
520 struct __pyx_opt_args_8PyClical_acos;
521 struct __pyx_opt_args_8PyClical_acosh;
522 struct __pyx_opt_args_8PyClical_sin;
523 struct __pyx_opt_args_8PyClical_asin;
524 struct __pyx_opt_args_8PyClical_asinh;
525 struct __pyx_opt_args_8PyClical_tan;
526 struct __pyx_opt_args_8PyClical_atan;
527 struct __pyx_opt_args_8PyClical_atanh;
528 struct __pyx_opt_args_8PyClical_random_clifford;
529 
530 /* "PyClical.pyx":1542
531  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
532  *
533  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
534  * """
535  * Square root of multivector with optional complexifier.
536  */
537 struct __pyx_opt_args_8PyClical_sqrt {
538  int __pyx_n;
539  PyObject *i;
540 };
541 
542 /* "PyClical.pyx":1579
543  * return clifford().wrap( glucat.exp(toClifford(obj)) )
544  *
545  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
546  * """
547  * Natural logarithm of multivector with optional complexifier.
548  */
549 struct __pyx_opt_args_8PyClical_log {
550  int __pyx_n;
551  PyObject *i;
552 };
553 
554 /* "PyClical.pyx":1602
555  * return clifford().wrap( glucat.log(toClifford(obj)) )
556  *
557  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
558  * """
559  * Cosine of multivector with optional complexifier.
560  */
561 struct __pyx_opt_args_8PyClical_cos {
562  int __pyx_n;
563  PyObject *i;
564 };
565 
566 /* "PyClical.pyx":1619
567  * return clifford().wrap( glucat.cos(toClifford(obj)) )
568  *
569  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
570  * """
571  * Inverse cosine of multivector with optional complexifier.
572  */
573 struct __pyx_opt_args_8PyClical_acos {
574  int __pyx_n;
575  PyObject *i;
576 };
577 
578 /* "PyClical.pyx":1656
579  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
580  *
581  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
582  * """
583  * Inverse hyperbolic cosine of multivector with optional complexifier.
584  */
585 struct __pyx_opt_args_8PyClical_acosh {
586  int __pyx_n;
587  PyObject *i;
588 };
589 
590 /* "PyClical.pyx":1679
591  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
592  *
593  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
594  * """
595  * Sine of multivector with optional complexifier.
596  */
597 struct __pyx_opt_args_8PyClical_sin {
598  int __pyx_n;
599  PyObject *i;
600 };
601 
602 /* "PyClical.pyx":1698
603  * return clifford().wrap( glucat.sin(toClifford(obj)) )
604  *
605  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
606  * """
607  * Inverse sine of multivector with optional complexifier.
608  */
609 struct __pyx_opt_args_8PyClical_asin {
610  int __pyx_n;
611  PyObject *i;
612 };
613 
614 /* "PyClical.pyx":1733
615  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
616  *
617  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
618  * """
619  * Inverse hyperbolic sine of multivector with optional complexifier.
620  */
621 struct __pyx_opt_args_8PyClical_asinh {
622  int __pyx_n;
623  PyObject *i;
624 };
625 
626 /* "PyClical.pyx":1752
627  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
628  *
629  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
630  * """
631  * Tangent of multivector with optional complexifier.
632  */
633 struct __pyx_opt_args_8PyClical_tan {
634  int __pyx_n;
635  PyObject *i;
636 };
637 
638 /* "PyClical.pyx":1769
639  * return clifford().wrap( glucat.tan(toClifford(obj)) )
640  *
641  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
642  * """
643  * Inverse tangent of multivector with optional complexifier.
644  */
645 struct __pyx_opt_args_8PyClical_atan {
646  int __pyx_n;
647  PyObject *i;
648 };
649 
650 /* "PyClical.pyx":1798
651  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
652  *
653  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
654  * """
655  * Inverse hyperbolic tangent of multivector with optional complexifier.
656  */
657 struct __pyx_opt_args_8PyClical_atanh {
658  int __pyx_n;
659  PyObject *i;
660 };
661 
662 /* "PyClical.pyx":1815
663  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
664  *
665  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
666  * """
667  * Random multivector within a frame.
668  */
669 struct __pyx_opt_args_8PyClical_random_clifford {
670  int __pyx_n;
671  PyObject *fill;
672 };
673 
674 /* "PyClical.pyx":37
675  *
676  * # Forward reference
677  * cdef class index_set # <<<<<<<<<<<<<<
678  *
679  * cdef inline IndexSet toIndexSet(obj):
680  */
681 struct __pyx_obj_8PyClical_index_set {
682  PyObject_HEAD
683  struct __pyx_vtabstruct_8PyClical_index_set *__pyx_vtab;
684  IndexSet *instance;
685 };
686 
687 
688 /* "PyClical.pyx":530
689  *
690  * # Forward reference.
691  * cdef class clifford # <<<<<<<<<<<<<<
692  *
693  * cdef inline Clifford toClifford(obj):
694  */
695 struct __pyx_obj_8PyClical_clifford {
696  PyObject_HEAD
697  struct __pyx_vtabstruct_8PyClical_clifford *__pyx_vtab;
698  Clifford *instance;
699 };
700 
701 
702 /* "PyClical.pyx":227
703  * return self.instance.getitem(idx)
704  *
705  * def __iter__(self): # <<<<<<<<<<<<<<
706  * """
707  * Iterate over the indices of an index_set.
708  */
709 struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ {
710  PyObject_HEAD
711  PyObject *__pyx_v_idx;
712  struct __pyx_obj_8PyClical_index_set *__pyx_v_self;
713  PyObject *__pyx_t_0;
714  Py_ssize_t __pyx_t_1;
715  PyObject *(*__pyx_t_2)(PyObject *);
716 };
717 
718 
719 
720 /* "PyClical.pyx":45
721  * return index_set(obj).instance[0]
722  *
723  * cdef class index_set: # <<<<<<<<<<<<<<
724  * """
725  * Python class index_set wraps C++ class IndexSet.
726  */
727 
728 struct __pyx_vtabstruct_8PyClical_index_set {
729  PyObject *(*wrap)(struct __pyx_obj_8PyClical_index_set *, IndexSet);
730  IndexSet (*unwrap)(struct __pyx_obj_8PyClical_index_set *);
731  PyObject *(*copy)(struct __pyx_obj_8PyClical_index_set *, int __pyx_skip_dispatch);
732 };
733 static struct __pyx_vtabstruct_8PyClical_index_set *__pyx_vtabptr_8PyClical_index_set;
734 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_9index_set_wrap(struct __pyx_obj_8PyClical_index_set *, IndexSet);
735 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_9index_set_unwrap(struct __pyx_obj_8PyClical_index_set *);
736 
737 
738 /* "PyClical.pyx":535
739  * return clifford(obj).instance[0]
740  *
741  * cdef class clifford: # <<<<<<<<<<<<<<
742  * """
743  * Python class clifford wraps C++ class Clifford.
744  */
745 
746 struct __pyx_vtabstruct_8PyClical_clifford {
747  PyObject *(*wrap)(struct __pyx_obj_8PyClical_clifford *, Clifford);
748  Clifford (*unwrap)(struct __pyx_obj_8PyClical_clifford *);
749  PyObject *(*copy)(struct __pyx_obj_8PyClical_clifford *, int __pyx_skip_dispatch);
750 };
751 static struct __pyx_vtabstruct_8PyClical_clifford *__pyx_vtabptr_8PyClical_clifford;
752 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_8clifford_wrap(struct __pyx_obj_8PyClical_clifford *, Clifford);
753 static CYTHON_INLINE Clifford __pyx_f_8PyClical_8clifford_unwrap(struct __pyx_obj_8PyClical_clifford *);
754 
755 /* --- Runtime support code (head) --- */
756 #ifndef CYTHON_REFNANNY
757  #define CYTHON_REFNANNY 0
758 #endif
759 #if CYTHON_REFNANNY
760  typedef struct {
761  void (*INCREF)(void*, PyObject*, int);
762  void (*DECREF)(void*, PyObject*, int);
763  void (*GOTREF)(void*, PyObject*, int);
764  void (*GIVEREF)(void*, PyObject*, int);
765  void* (*SetupContext)(const char*, int, const char*);
766  void (*FinishContext)(void**);
767  } __Pyx_RefNannyAPIStruct;
768  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
769  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
770  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
771 #ifdef WITH_THREAD
772  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
773  if (acquire_gil) {\
774  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
775  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
776  PyGILState_Release(__pyx_gilstate_save);\
777  } else {\
778  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
779  }
780 #else
781  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
782  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
783 #endif
784  #define __Pyx_RefNannyFinishContext()\
785  __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
786  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
787  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
788  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
789  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
790  #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
791  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
792  #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
793  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
794 #else
795  #define __Pyx_RefNannyDeclarations
796  #define __Pyx_RefNannySetupContext(name, acquire_gil)
797  #define __Pyx_RefNannyFinishContext()
798  #define __Pyx_INCREF(r) Py_INCREF(r)
799  #define __Pyx_DECREF(r) Py_DECREF(r)
800  #define __Pyx_GOTREF(r)
801  #define __Pyx_GIVEREF(r)
802  #define __Pyx_XINCREF(r) Py_XINCREF(r)
803  #define __Pyx_XDECREF(r) Py_XDECREF(r)
804  #define __Pyx_XGOTREF(r)
805  #define __Pyx_XGIVEREF(r)
806 #endif
807 #define __Pyx_XDECREF_SET(r, v) do {\
808  PyObject *tmp = (PyObject *) r;\
809  r = v; __Pyx_XDECREF(tmp);\
810  } while (0)
811 #define __Pyx_DECREF_SET(r, v) do {\
812  PyObject *tmp = (PyObject *) r;\
813  r = v; __Pyx_DECREF(tmp);\
814  } while (0)
815 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
816 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
817 
818 #if CYTHON_COMPILING_IN_CPYTHON
819 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
820  PyTypeObject* tp = Py_TYPE(obj);
821  if (likely(tp->tp_getattro))
822  return tp->tp_getattro(obj, attr_name);
823 #if PY_MAJOR_VERSION < 3
824  if (likely(tp->tp_getattr))
825  return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
826 #endif
827  return PyObject_GetAttr(obj, attr_name);
828 }
829 #else
830 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
831 #endif
832 
833 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
834 
835 #if CYTHON_COMPILING_IN_CPYTHON
836 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
837 #else
838 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
839 #endif
840 
841 static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb);
842 static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb);
843 
844 static void __Pyx_WriteUnraisable(const char *name, int clineno,
845  int lineno, const char *filename,
846  int full_traceback, int nogil);
847 
848 #if CYTHON_COMPILING_IN_CPYTHON
849 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
850 #endif
851 
852 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
853 
854 #if CYTHON_COMPILING_IN_CPYTHON
855 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
856 #else
857 #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
858 #endif
859 
860 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
861 
862 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
863  PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
864  const char* function_name);
865 
866 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
867  Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
868 
869 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
870 
871 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb);
872 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb);
873 
874 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
875 
876 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
877 
878 #if CYTHON_COMPILING_IN_CPYTHON
879 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
880 #else
881 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
882  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
883 #endif
884 
885 static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
886  int result = PySequence_Contains(seq, item);
887  return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
888 }
889 
890 #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
891  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
892  __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
893  (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
894  __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
895 static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
896 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
897  int is_list, int wraparound, int boundscheck);
898 
899 static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
900  const char *name, int exact);
901 
902 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
903 
904 #include <string.h>
905 
906 static int __Pyx_SetVtable(PyObject *dict, void *vtable);
907 
908 #if CYTHON_COMPILING_IN_CPYTHON
909 static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace);
910 #else
911 #define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace)\
912  ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
913  #endif
914 
915 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
916 
917 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
918 
919 #if PY_MAJOR_VERSION >= 3
920 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
921 #else
922 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
923 #endif
924 
925 typedef struct {
926  int code_line;
927  PyCodeObject* code_object;
928 } __Pyx_CodeObjectCacheEntry;
929 struct __Pyx_CodeObjectCache {
930  int count;
931  int max_count;
932  __Pyx_CodeObjectCacheEntry* entries;
933 };
934 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
935 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
936 static PyCodeObject *__pyx_find_code_object(int code_line);
937 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
938 
939 static void __Pyx_AddTraceback(const char *funcname, int c_line,
940  int py_line, const char *filename);
941 
942 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
943 
944 #ifndef __Pyx_CppExn2PyErr
945 #include <new>
946 #include <typeinfo>
947 #include <stdexcept>
948 #include <ios>
949 static void __Pyx_CppExn2PyErr() {
950  try {
951  if (PyErr_Occurred())
952  ; // let the latest Python exn pass through and ignore the current one
953  else
954  throw;
955  } catch (const std::bad_alloc& exn) {
956  PyErr_SetString(PyExc_MemoryError, exn.what());
957  } catch (const std::bad_cast& exn) {
958  PyErr_SetString(PyExc_TypeError, exn.what());
959  } catch (const std::domain_error& exn) {
960  PyErr_SetString(PyExc_ValueError, exn.what());
961  } catch (const std::invalid_argument& exn) {
962  PyErr_SetString(PyExc_ValueError, exn.what());
963  } catch (const std::ios_base::failure& exn) {
964  PyErr_SetString(PyExc_IOError, exn.what());
965  } catch (const std::out_of_range& exn) {
966  PyErr_SetString(PyExc_IndexError, exn.what());
967  } catch (const std::overflow_error& exn) {
968  PyErr_SetString(PyExc_OverflowError, exn.what());
969  } catch (const std::range_error& exn) {
970  PyErr_SetString(PyExc_ArithmeticError, exn.what());
971  } catch (const std::underflow_error& exn) {
972  PyErr_SetString(PyExc_ArithmeticError, exn.what());
973  } catch (const std::exception& exn) {
974  PyErr_SetString(PyExc_RuntimeError, exn.what());
975  }
976  catch (...)
977  {
978  PyErr_SetString(PyExc_RuntimeError, "Unknown exception");
979  }
980 }
981 #endif
982 
983 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
984 
985 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
986 
987 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
988 
989 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
990 
991 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
992 
993 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
994 
995 typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *);
996 typedef struct {
997  PyObject_HEAD
998  __pyx_coroutine_body_t body;
999  PyObject *closure;
1000  PyObject *exc_type;
1001  PyObject *exc_value;
1002  PyObject *exc_traceback;
1003  PyObject *gi_weakreflist;
1004  PyObject *classobj;
1005  PyObject *yieldfrom;
1006  PyObject *gi_name;
1007  PyObject *gi_qualname;
1008  int resume_label;
1009  char is_running;
1010 } __pyx_CoroutineObject;
1011 static __pyx_CoroutineObject *__Pyx__Coroutine_New(PyTypeObject *type, __pyx_coroutine_body_t body,
1012  PyObject *closure, PyObject *name, PyObject *qualname);
1013 static int __Pyx_Coroutine_clear(PyObject *self);
1014 #if 1 || PY_VERSION_HEX < 0x030300B0
1015 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue);
1016 #else
1017 #define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue)
1018 #endif
1019 
1020 static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
1021 
1022 static int __Pyx_patch_abc(void);
1023 
1024 #define __Pyx_Generator_USED
1025 static PyTypeObject *__pyx_GeneratorType = 0;
1026 #define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
1027 #define __Pyx_Generator_New(body, closure, name, qualname)\
1028  __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname)
1029 static PyObject *__Pyx_Generator_Next(PyObject *self);
1030 static int __pyx_Generator_init(void);
1031 
1032 static int __Pyx_check_binary_version(void);
1033 
1034 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
1035 
1036 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_9index_set_wrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, IndexSet __pyx_v_other); /* proto*/
1037 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_9index_set_unwrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto*/
1038 static PyObject *__pyx_f_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
1039 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_8clifford_wrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, Clifford __pyx_v_other); /* proto*/
1040 static CYTHON_INLINE Clifford __pyx_f_8PyClical_8clifford_unwrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto*/
1041 static PyObject *__pyx_f_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
1042 
1043 /* Module declarations from 'libcpp.vector' */
1044 
1045 /* Module declarations from 'glucat' */
1046 
1047 /* Module declarations from 'PyClical' */
1048 static PyTypeObject *__pyx_ptype_8PyClical_index_set = 0;
1049 static PyTypeObject *__pyx_ptype_8PyClical_clifford = 0;
1050 static PyTypeObject *__pyx_ptype_8PyClical___pyx_scope_struct____iter__ = 0;
1051 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_toIndexSet(PyObject *); /*proto*/
1052 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_compare(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
1053 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_min_neg(PyObject *, int __pyx_skip_dispatch); /*proto*/
1054 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_pos(PyObject *, int __pyx_skip_dispatch); /*proto*/
1055 static CYTHON_INLINE std::vector<scalar_t> __pyx_f_8PyClical_list_to_vector(PyObject *); /*proto*/
1056 static CYTHON_INLINE Clifford __pyx_f_8PyClical_toClifford(PyObject *); /*proto*/
1057 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_inv(PyObject *, int __pyx_skip_dispatch); /*proto*/
1058 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_scalar(PyObject *, int __pyx_skip_dispatch); /*proto*/
1059 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_real(PyObject *, int __pyx_skip_dispatch); /*proto*/
1060 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_imag(PyObject *, int __pyx_skip_dispatch); /*proto*/
1061 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pure(PyObject *, int __pyx_skip_dispatch); /*proto*/
1062 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_even(PyObject *, int __pyx_skip_dispatch); /*proto*/
1063 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_odd(PyObject *, int __pyx_skip_dispatch); /*proto*/
1064 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_involute(PyObject *, int __pyx_skip_dispatch); /*proto*/
1065 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_reverse(PyObject *, int __pyx_skip_dispatch); /*proto*/
1066 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_conj(PyObject *, int __pyx_skip_dispatch); /*proto*/
1067 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_quad(PyObject *, int __pyx_skip_dispatch); /*proto*/
1068 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_norm(PyObject *, int __pyx_skip_dispatch); /*proto*/
1069 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_abs(PyObject *, int __pyx_skip_dispatch); /*proto*/
1070 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_abs(PyObject *, int __pyx_skip_dispatch); /*proto*/
1071 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pow(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
1072 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_outer_pow(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
1073 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_complexifier(PyObject *, int __pyx_skip_dispatch); /*proto*/
1074 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sqrt(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_sqrt *__pyx_optional_args); /*proto*/
1075 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_exp(PyObject *, int __pyx_skip_dispatch); /*proto*/
1076 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_log(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_log *__pyx_optional_args); /*proto*/
1077 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cos(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_cos *__pyx_optional_args); /*proto*/
1078 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_acos(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_acos *__pyx_optional_args); /*proto*/
1079 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cosh(PyObject *, int __pyx_skip_dispatch); /*proto*/
1080 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_acosh(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_acosh *__pyx_optional_args); /*proto*/
1081 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sin(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_sin *__pyx_optional_args); /*proto*/
1082 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_asin(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_asin *__pyx_optional_args); /*proto*/
1083 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sinh(PyObject *, int __pyx_skip_dispatch); /*proto*/
1084 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_asinh(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_asinh *__pyx_optional_args); /*proto*/
1085 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tan(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_tan *__pyx_optional_args); /*proto*/
1086 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_atan(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_atan *__pyx_optional_args); /*proto*/
1087 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tanh(PyObject *, int __pyx_skip_dispatch); /*proto*/
1088 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_atanh(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_8PyClical_atanh *__pyx_optional_args); /*proto*/
1089 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*/
1090 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3(PyObject *, int __pyx_skip_dispatch); /*proto*/
1091 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3std(PyObject *, int __pyx_skip_dispatch); /*proto*/
1092 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_agc3(PyObject *, int __pyx_skip_dispatch); /*proto*/
1093 #define __Pyx_MODULE_NAME "PyClical"
1094 int __pyx_module_is_main_PyClical = 0;
1095 
1096 /* Implementation of 'PyClical' */
1097 static PyObject *__pyx_builtin_IndexError;
1098 static PyObject *__pyx_builtin_RuntimeError;
1099 static PyObject *__pyx_builtin_TypeError;
1100 static PyObject *__pyx_builtin_ValueError;
1101 static PyObject *__pyx_builtin_NotImplemented;
1102 static PyObject *__pyx_builtin_range;
1103 static PyObject *__pyx_builtin_xrange;
1104 static char __pyx_k_[] = ".";
1105 static char __pyx_k_e[] = "e";
1106 static char __pyx_k_i[] = "i";
1107 static char __pyx_k_m[] = "m";
1108 static char __pyx_k_p[] = "p";
1109 static char __pyx_k_q[] = "q";
1110 static char __pyx_k__2[] = " ";
1111 static char __pyx_k__3[] = ":";
1112 static char __pyx_k__4[] = "\n\t";
1113 static char __pyx_k__5[] = " (";
1114 static char __pyx_k__6[] = ", ";
1115 static char __pyx_k__7[] = ").";
1116 static char __pyx_k_cl[] = "cl";
1117 static char __pyx_k_pi[] = "pi";
1118 static char __pyx_k_cos[] = "cos";
1119 static char __pyx_k_exp[] = "exp";
1120 static char __pyx_k_frm[] = "frm";
1121 static char __pyx_k_inv[] = "inv";
1122 static char __pyx_k_ist[] = "ist";
1123 static char __pyx_k_ixt[] = "ixt";
1124 static char __pyx_k_lhs[] = "lhs";
1125 static char __pyx_k_log[] = "log";
1126 static char __pyx_k_max[] = "max";
1127 static char __pyx_k_min[] = "min";
1128 static char __pyx_k_obj[] = "obj";
1129 static char __pyx_k_odd[] = "odd";
1130 static char __pyx_k_pow[] = "pow";
1131 static char __pyx_k_rhs[] = "rhs";
1132 static char __pyx_k_sin[] = "sin";
1133 static char __pyx_k_tan[] = "tan";
1134 static char __pyx_k_tau[] = "tau";
1135 static char __pyx_k_Real[] = "Real";
1136 static char __pyx_k_acos[] = "acos";
1137 static char __pyx_k_args[] = "args";
1138 static char __pyx_k_asin[] = "asin";
1139 static char __pyx_k_atan[] = "atan";
1140 static char __pyx_k_conj[] = "conj";
1141 static char __pyx_k_copy[] = "copy";
1142 static char __pyx_k_cosh[] = "cosh";
1143 static char __pyx_k_even[] = "even";
1144 static char __pyx_k_fill[] = "fill";
1145 static char __pyx_k_from[] = " from ";
1146 static char __pyx_k_iter[] = "__iter__";
1147 static char __pyx_k_main[] = "__main__";
1148 static char __pyx_k_math[] = "math";
1149 static char __pyx_k_name[] = "__name__";
1150 static char __pyx_k_norm[] = "norm";
1151 static char __pyx_k_pure[] = "pure";
1152 static char __pyx_k_quad[] = "quad";
1153 static char __pyx_k_send[] = "send";
1154 static char __pyx_k_sinh[] = "sinh";
1155 static char __pyx_k_sqrt[] = "sqrt";
1156 static char __pyx_k_tanh[] = "tanh";
1157 static char __pyx_k_test[] = "_test";
1158 static char __pyx_k_0_8_2[] = "0.8.2";
1159 static char __pyx_k_acosh[] = "acosh";
1160 static char __pyx_k_asinh[] = "asinh";
1161 static char __pyx_k_atanh[] = "atanh";
1162 static char __pyx_k_close[] = "close";
1163 static char __pyx_k_grade[] = "grade";
1164 static char __pyx_k_istpq[] = "istpq";
1165 static char __pyx_k_nbar3[] = "nbar3";
1166 static char __pyx_k_ninf3[] = "ninf3";
1167 static char __pyx_k_other[] = "other";
1168 static char __pyx_k_range[] = "range";
1169 static char __pyx_k_throw[] = "throw";
1170 static char __pyx_k_using[] = " using (";
1171 static char __pyx_k_value[] = " value ";
1172 static char __pyx_k_import[] = "__import__";
1173 static char __pyx_k_scalar[] = "scalar";
1174 static char __pyx_k_test_2[] = "__test__";
1175 static char __pyx_k_xrange[] = "xrange";
1176 static char __pyx_k_doctest[] = "doctest";
1177 static char __pyx_k_invalid[] = " invalid ";
1178 static char __pyx_k_numbers[] = "numbers";
1179 static char __pyx_k_reverse[] = "reverse";
1180 static char __pyx_k_testmod[] = "testmod";
1181 static char __pyx_k_version[] = "__version__";
1182 static char __pyx_k_Integral[] = "Integral";
1183 static char __pyx_k_PyClical[] = "PyClical";
1184 static char __pyx_k_Sequence[] = "Sequence";
1185 static char __pyx_k_as_frame[] = " as frame:\n\t";
1186 static char __pyx_k_involute[] = "involute";
1187 static char __pyx_k_to_frame[] = " to frame ";
1188 static char __pyx_k_TypeError[] = "TypeError";
1189 static char __pyx_k_outer_pow[] = "outer_pow";
1190 static char __pyx_k_IndexError[] = "IndexError";
1191 static char __pyx_k_ValueError[] = "ValueError";
1192 static char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
1193 static char __pyx_k_collections[] = "collections";
1194 static char __pyx_k_e_line_1887[] = "e (line 1887)";
1195 static char __pyx_k_RuntimeError[] = "RuntimeError";
1196 static char __pyx_k_abs_line_1473[] = "abs (line 1473)";
1197 static char __pyx_k_cos_line_1602[] = "cos (line 1602)";
1198 static char __pyx_k_exp_line_1565[] = "exp (line 1565)";
1199 static char __pyx_k_inv_line_1329[] = "inv (line 1329)";
1200 static char __pyx_k_log_line_1579[] = "log (line 1579)";
1201 static char __pyx_k_odd_line_1397[] = "odd (line 1397)";
1202 static char __pyx_k_pow_line_1494[] = "pow (line 1494)";
1203 static char __pyx_k_sin_line_1679[] = "sin (line 1679)";
1204 static char __pyx_k_tan_line_1752[] = "tan (line 1752)";
1205 static char __pyx_k_using_invalid[] = " using invalid ";
1206 static char __pyx_k_Cannot_reframe[] = "Cannot reframe";
1207 static char __pyx_k_NotImplemented[] = "NotImplemented";
1208 static char __pyx_k_Not_applicable[] = "Not applicable.";
1209 static char __pyx_k_acos_line_1619[] = "acos (line 1619)";
1210 static char __pyx_k_agc3_line_1844[] = "agc3 (line 1844)";
1211 static char __pyx_k_asin_line_1698[] = "asin (line 1698)";
1212 static char __pyx_k_atan_line_1769[] = "atan (line 1769)";
1213 static char __pyx_k_cga3_line_1824[] = "cga3 (line 1824)";
1214 static char __pyx_k_conj_line_1436[] = "conj (line 1436)";
1215 static char __pyx_k_cosh_line_1640[] = "cosh (line 1640)";
1216 static char __pyx_k_even_line_1388[] = "even (line 1388)";
1217 static char __pyx_k_imag_line_1366[] = "imag (line 1366)";
1218 static char __pyx_k_invalid_string[] = " invalid string ";
1219 static char __pyx_k_norm_line_1462[] = "norm (line 1462)";
1220 static char __pyx_k_pure_line_1377[] = "pure (line 1377)";
1221 static char __pyx_k_quad_line_1451[] = "quad (line 1451)";
1222 static char __pyx_k_real_line_1355[] = "real (line 1355)";
1223 static char __pyx_k_sinh_line_1719[] = "sinh (line 1719)";
1224 static char __pyx_k_sqrt_line_1542[] = "sqrt (line 1542)";
1225 static char __pyx_k_tanh_line_1786[] = "tanh (line 1786)";
1226 static char __pyx_k_acosh_line_1656[] = "acosh (line 1656)";
1227 static char __pyx_k_asinh_line_1733[] = "asinh (line 1733)";
1228 static char __pyx_k_atanh_line_1798[] = "atanh (line 1798)";
1229 static char __pyx_k_istpq_line_1900[] = "istpq (line 1900)";
1230 static char __pyx_k_compare_line_490[] = "compare (line 490)";
1231 static char __pyx_k_index_set___iter[] = "index_set.__iter__";
1232 static char __pyx_k_max_pos_line_511[] = "max_pos (line 511)";
1233 static char __pyx_k_min_neg_line_502[] = "min_neg (line 502)";
1234 static char __pyx_k_scalar_line_1344[] = "scalar (line 1344)";
1235 static char __pyx_k_cga3std_line_1833[] = "cga3std (line 1833)";
1236 static char __pyx_k_max_abs_line_1482[] = "max_abs (line 1482)";
1237 static char __pyx_k_reverse_line_1421[] = "reverse (line 1421)";
1238 static char __pyx_k_involute_line_1406[] = "involute (line 1406)";
1239 static char __pyx_k_outer_pow_line_1518[] = "outer_pow (line 1518)";
1240 static char __pyx_k_clifford_inv_line_925[] = "clifford.inv (line 925)";
1241 static char __pyx_k_clifford_pow_line_979[] = "clifford.pow (line 979)";
1242 static char __pyx_k_clifford_abs_line_1174[] = "clifford.abs (line 1174)";
1243 static char __pyx_k_clifford_copy_line_554[] = "clifford.copy (line 554)";
1244 static char __pyx_k_clifford_odd_line_1069[] = "clifford.odd (line 1069)";
1245 static char __pyx_k_complexifier_line_1527[] = "complexifier (line 1527)";
1246 static char __pyx_k_index_set_copy_line_64[] = "index_set.copy (line 64)";
1247 static char __pyx_k_index_set_max_line_349[] = "index_set.max (line 349)";
1248 static char __pyx_k_index_set_min_line_340[] = "index_set.min (line 340)";
1249 static char __pyx_k_clifford_conj_line_1137[] = "clifford.conj (line 1137)";
1250 static char __pyx_k_clifford_even_line_1060[] = "clifford.even (line 1060)";
1251 static char __pyx_k_clifford_norm_line_1163[] = "clifford.norm (line 1163)";
1252 static char __pyx_k_clifford_pure_line_1049[] = "clifford.pure (line 1049)";
1253 static char __pyx_k_clifford_quad_line_1152[] = "clifford.quad (line 1152)";
1254 static char __pyx_k_Unary_print_clifford_1_1[] = "\n Unary -.\n\n >>> print -clifford(\"{1}\")\n -{1}\n ";
1255 static char __pyx_k_clifford___or___line_938[] = "clifford.__or__ (line 938)";
1256 static char __pyx_k_clifford_frame_line_1214[] = "clifford.frame (line 1214)";
1257 static char __pyx_k_clifford_hidden_doctests[] = "clifford_hidden_doctests";
1258 static char __pyx_k_clifford_isnan_line_1205[] = "clifford.isnan (line 1205)";
1259 static char __pyx_k_index_set_count_line_313[] = "index_set.count (line 313)";
1260 static char __pyx_k_clifford___add___line_739[] = "clifford.__add__ (line 739)";
1261 static char __pyx_k_clifford___and___line_835[] = "clifford.__and__ (line 835)";
1262 static char __pyx_k_clifford___div___line_895[] = "clifford.__div__ (line 895)";
1263 static char __pyx_k_clifford___ior___line_949[] = "clifford.__ior__ (line 949)";
1264 static char __pyx_k_clifford___mod___line_805[] = "clifford.__mod__ (line 805)";
1265 static char __pyx_k_clifford___mul___line_779[] = "clifford.__mul__ (line 779)";
1266 static char __pyx_k_clifford___neg___line_721[] = "clifford.__neg__ (line 721)";
1267 static char __pyx_k_clifford___pos___line_730[] = "clifford.__pos__ (line 730)";
1268 static char __pyx_k_clifford___pow___line_960[] = "clifford.__pow__ (line 960)";
1269 static char __pyx_k_clifford___sub___line_759[] = "clifford.__sub__ (line 759)";
1270 static char __pyx_k_clifford___xor___line_865[] = "clifford.__xor__ (line 865)";
1271 static char __pyx_k_clifford_reframe_line_648[] = "clifford.reframe (line 648)";
1272 static char __pyx_k_clifford_scalar_line_1038[] = "clifford.scalar (line 1038)";
1273 static char __pyx_k_index_set___or___line_291[] = "index_set.__or__ (line 291)";
1274 static char __pyx_k_index_set_hidden_doctests[] = "index_set_hidden_doctests";
1275 static char __pyx_k_random_clifford_line_1815[] = "random_clifford (line 1815)";
1276 static char __pyx_k_Cannot_take_vector_part_of[] = "Cannot take vector part of ";
1277 static char __pyx_k_Unary_print_clifford_1_1_2[] = "\n Unary +.\n\n >>> print +clifford(\"{1}\")\n {1}\n ";
1278 static char __pyx_k_clifford___iadd___line_750[] = "clifford.__iadd__ (line 750)";
1279 static char __pyx_k_clifford___iand___line_850[] = "clifford.__iand__ (line 850)";
1280 static char __pyx_k_clifford___idiv___line_910[] = "clifford.__idiv__ (line 910)";
1281 static char __pyx_k_clifford___imod___line_820[] = "clifford.__imod__ (line 820)";
1282 static char __pyx_k_clifford___imul___line_792[] = "clifford.__imul__ (line 792)";
1283 static char __pyx_k_clifford___isub___line_770[] = "clifford.__isub__ (line 770)";
1284 static char __pyx_k_clifford___iter___line_637[] = "clifford.__iter__ (line 637)";
1285 static char __pyx_k_clifford___ixor___line_880[] = "clifford.__ixor__ (line 880)";
1286 static char __pyx_k_clifford___str___line_1234[] = "clifford.__str__ (line 1234)";
1287 static char __pyx_k_clifford_max_abs_line_1183[] = "clifford.max_abs (line 1183)";
1288 static char __pyx_k_clifford_reverse_line_1122[] = "clifford.reverse (line 1122)";
1289 static char __pyx_k_index_set___and___line_269[] = "index_set.__and__ (line 269)";
1290 static char __pyx_k_index_set___ior___line_302[] = "index_set.__ior__ (line 302)";
1291 static char __pyx_k_index_set___str___line_393[] = "index_set.__str__ (line 393)";
1292 static char __pyx_k_index_set___xor___line_247[] = "index_set.__xor__ (line 247)";
1293 static char __pyx_k_clifford___call___line_1019[] = "clifford.__call__ (line 1019)";
1294 static char __pyx_k_clifford___repr___line_1225[] = "clifford.__repr__ (line 1225)";
1295 static char __pyx_k_clifford_involute_line_1106[] = "clifford.involute (line 1106)";
1296 static char __pyx_k_index_set___iand___line_280[] = "index_set.__iand__ (line 280)";
1297 static char __pyx_k_index_set___iter___line_227[] = "index_set.__iter__ (line 227)";
1298 static char __pyx_k_index_set___ixor___line_258[] = "index_set.__ixor__ (line 258)";
1299 static char __pyx_k_index_set___repr___line_382[] = "index_set.__repr__ (line 382)";
1300 static char __pyx_k_clifford_outer_pow_line_1003[] = "clifford.outer_pow (line 1003)";
1301 static char __pyx_k_clifford_truncated_line_1194[] = "clifford.truncated (line 1194)";
1302 static char __pyx_k_index_set_count_neg_line_322[] = "index_set.count_neg (line 322)";
1303 static char __pyx_k_index_set_count_pos_line_331[] = "index_set.count_pos (line 331)";
1304 static char __pyx_k_clifford___getitem___line_706[] = "clifford.__getitem__ (line 706)";
1305 static char __pyx_k_index_set___invert___line_238[] = "index_set.__invert__ (line 238)";
1306 static 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 ";
1307 static 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 ";
1308 static 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 ";
1309 static 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 ";
1310 static 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 ";
1311 static 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 ";
1312 static 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 ";
1313 static 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,\n -3 4 7\n ";
1314 static char __pyx_k_Maximum_member_index_set_1_1_2[] = "\n Maximum member.\n\n >>> index_set({-1,1,2}).max()\n 2\n ";
1315 static 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 ";
1316 static char __pyx_k_Minimum_member_index_set_1_1_2[] = "\n Minimum member.\n\n >>> index_set({-1,1,2}).min()\n -1\n ";
1317 static 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 ";
1318 static 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 ";
1319 static 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 ";
1320 static 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 ";
1321 static 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 ";
1322 static 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 ";
1323 static 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 ";
1324 static 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 ";
1325 static 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 ";
1326 static 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 ";
1327 static char __pyx_k_clifford_vector_part_line_1078[] = "clifford.vector_part (line 1078)";
1328 static char __pyx_k_index_set___getitem___line_189[] = "index_set.__getitem__ (line 189)";
1329 static char __pyx_k_index_set___setitem___line_177[] = "index_set.__setitem__ (line 177)";
1330 static 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 ";
1331 static 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 ";
1332 static 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 ";
1333 static 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 ";
1334 static 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 ";
1335 static char __pyx_k_Check_if_a_multivector_contains[] = "\n Check if a multivector contains any IEEE NaN values.\n\n >>> clifford().isnan()\n False\n ";
1336 static 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 ";
1337 static 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 ";
1338 static 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 ";
1339 static 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 ";
1340 static 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 ";
1341 static 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 ";
1342 static 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 ";
1343 static 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 ";
1344 static 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 ";
1345 static 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 ";
1346 static 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 ";
1347 static char __pyx_k_Geometric_difference_x_clifford[] = "\n Geometric difference.\n\n >>> x = clifford(1); x -= clifford(\"{2}\"); print x\n 1-{2}\n ";
1348 static 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 ";
1349 static 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 ";
1350 static 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 ";
1351 static 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 ";
1352 static 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 ";
1353 static 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 ";
1354 static 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 ";
1355 static 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 ";
1356 static 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 ";
1357 static 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 ";
1358 static 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 ";
1359 static 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 ";
1360 static 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 ";
1361 static 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 ";
1362 static 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 ";
1363 static 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 ";
1364 static 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 ";
1365 static 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 ";
1366 static 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 ";
1367 static 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 ";
1368 static 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 ";
1369 static 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,\n Traceback (most recent call last):\n ...\n TypeError: Not applicable.\n ";
1370 static 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 ";
1371 static 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 ";
1372 static 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 ";
1373 static 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 ";
1374 static 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 ";
1375 static 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 ";
1376 static 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 ";
1377 static 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 ";
1378 static 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 ";
1379 static 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 ";
1380 static 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 ";
1381 static 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 ";
1382 static 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 ";
1383 static 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 ";
1384 static 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 ";
1385 static 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 ";
1386 static 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 ";
1387 static 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 ";
1388 static 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 ";
1389 static 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 ";
1390 static 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 ";
1391 static 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 ";
1392 static 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 ";
1393 static 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 <type 'PyClical.index_set'>\n ";
1394 static 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 ";
1395 static 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 ";
1396 static 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 ";
1397 static 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 set([1, 2, 100]).\n >>> print index_set([1,2])\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize index_set object from <type '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_se""t({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 ";
1398  static 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 ";
1399  static 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 ";
1400  static char __pyx_k_This_comparison_operator_is_not[] = "This comparison operator is not implemented for ";
1401  static 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 ";
1402  static char __pyx_k_home_abuild_rpmbuild_BUILD_gluc[] = "/home/abuild/rpmbuild/BUILD/glucat-0.8.2/pyclical/PyClical.pyx";
1403  static char __pyx_k_index_set_sign_of_mult_line_364[] = "index_set.sign_of_mult (line 364)";
1404  static 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 ";
1405  static char __pyx_k_Cannot_initialize_clifford_objec[] = "Cannot initialize clifford object from";
1406  static char __pyx_k_Cannot_initialize_index_set_obje[] = "Cannot initialize index_set object from";
1407  static 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 ";
1408  static 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 ";
1409  static 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 ";
1410  static 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 ";
1411  static 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 ";
1412  static char __pyx_k_clifford_hidden_doctests_line_12[] = "clifford_hidden_doctests (line 1243)";
1413  static char __pyx_k_index_set_hidden_doctests_line_4[] = "index_set_hidden_doctests (line 404)";
1414  static char __pyx_k_index_set_sign_of_square_line_37[] = "index_set.sign_of_square (line 373)";
1415  static 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 ";
1416  static 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 ";
1417  static 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 ";
1418  static 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 ";
1419  static 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(2L)\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 <type 'list'>.\n >>> print clifford(None)\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from <type 'NoneType'>.\n >>> print clifford(None,[1,2])\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<type 'NoneType'>, <type 'list'>).\n >>> print clifford([1,2],[1,2])\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<type 'list'>, <type '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 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\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 ";
1420  static 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 ";
1421  static 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 ";
1422  static PyObject *__pyx_kp_s_;
1423  static PyObject *__pyx_kp_s_0_8_2;
1424  static PyObject *__pyx_kp_u_Abbreviation_for_clifford_index;
1425  static PyObject *__pyx_kp_u_Abbreviation_for_index_set_q_p;
1426  static PyObject *__pyx_kp_u_Absolute_value_of_multivector_m;
1427  static PyObject *__pyx_kp_u_Absolute_value_square_root_of_n;
1428  static PyObject *__pyx_kp_s_Cannot_initialize_clifford_objec;
1429  static PyObject *__pyx_kp_s_Cannot_initialize_index_set_obje;
1430  static PyObject *__pyx_kp_s_Cannot_reframe;
1431  static PyObject *__pyx_kp_s_Cannot_take_vector_part_of;
1432  static PyObject *__pyx_kp_u_Cardinality_Number_of_indices_i;
1433  static PyObject *__pyx_kp_u_Check_if_a_multivector_contains;
1434  static PyObject *__pyx_kp_u_Conjugation_reverse_o_involute;
1435  static PyObject *__pyx_kp_u_Conjugation_reverse_o_involute_2;
1436  static PyObject *__pyx_kp_u_Contraction_print_clifford_1_cl;
1437  static PyObject *__pyx_kp_u_Contraction_x_clifford_1_x_clif;
1438  static PyObject *__pyx_kp_u_Convert_CGA3_null_vector_to_Euc;
1439  static PyObject *__pyx_kp_u_Convert_CGA3_null_vector_to_sta;
1440  static PyObject *__pyx_kp_u_Convert_Euclidean_3D_multivecto;
1441  static PyObject *__pyx_kp_u_Copy_this_clifford_object_x_cli;
1442  static PyObject *__pyx_kp_u_Copy_this_index_set_object_s_in;
1443  static PyObject *__pyx_kp_u_Cosine_of_multivector_with_opti;
1444  static PyObject *__pyx_kp_u_Even_part_of_multivector_sum_of;
1445  static PyObject *__pyx_kp_u_Even_part_of_multivector_sum_of_2;
1446  static PyObject *__pyx_kp_u_Exponential_of_multivector_x_cl;
1447  static PyObject *__pyx_kp_u_Geometric_difference_print_clif;
1448  static PyObject *__pyx_kp_u_Geometric_difference_x_clifford;
1449  static PyObject *__pyx_kp_u_Geometric_multiplicative_invers;
1450  static PyObject *__pyx_kp_u_Geometric_multiplicative_invers_2;
1451  static PyObject *__pyx_kp_u_Geometric_product_print_cliffor;
1452  static PyObject *__pyx_kp_u_Geometric_product_x_clifford_2;
1453  static PyObject *__pyx_kp_u_Geometric_quotient_print_cliffo;
1454  static PyObject *__pyx_kp_u_Geometric_quotient_x_clifford_1;
1455  static PyObject *__pyx_kp_u_Geometric_sum_print_clifford_1;
1456  static PyObject *__pyx_kp_u_Geometric_sum_x_clifford_1_x_cl;
1457  static PyObject *__pyx_kp_u_Get_the_value_of_an_index_set_o;
1458  static PyObject *__pyx_kp_u_Hyperbolic_cosine_of_multivecto;
1459  static PyObject *__pyx_kp_u_Hyperbolic_sine_of_multivector;
1460  static PyObject *__pyx_kp_u_Hyperbolic_tangent_of_multivect;
1461  static PyObject *__pyx_kp_u_Imaginary_part_deprecated_alway;
1462  static PyObject *__pyx_n_s_IndexError;
1463  static PyObject *__pyx_kp_u_Inner_product_print_clifford_1;
1464  static PyObject *__pyx_kp_u_Inner_product_x_clifford_1_x_cl;
1465  static PyObject *__pyx_kp_u_Integer_power_of_multivector_ob;
1466  static PyObject *__pyx_n_s_Integral;
1467  static PyObject *__pyx_kp_u_Inverse_cosine_of_multivector_w;
1468  static PyObject *__pyx_kp_u_Inverse_hyperbolic_cosine_of_mu;
1469  static PyObject *__pyx_kp_u_Inverse_hyperbolic_sine_of_mult;
1470  static PyObject *__pyx_kp_u_Inverse_hyperbolic_tangent_of_m;
1471  static PyObject *__pyx_kp_u_Inverse_sine_of_multivector_wit;
1472  static PyObject *__pyx_kp_u_Inverse_tangent_of_multivector;
1473  static PyObject *__pyx_kp_u_Iterate_over_the_indices_of_an;
1474  static PyObject *__pyx_kp_u_Main_involution_each_i_is_repla;
1475  static PyObject *__pyx_kp_u_Main_involution_each_i_is_repla_2;
1476  static PyObject *__pyx_kp_u_Maximum_absolute_value_of_coord;
1477  static PyObject *__pyx_kp_u_Maximum_member_index_set_1_1_2;
1478  static PyObject *__pyx_kp_u_Maximum_of_absolute_values_of_c;
1479  static PyObject *__pyx_kp_u_Maximum_positive_index_or_0_if;
1480  static PyObject *__pyx_kp_u_Minimum_member_index_set_1_1_2;
1481  static PyObject *__pyx_kp_u_Minimum_negative_index_or_0_if;
1482  static PyObject *__pyx_kp_u_Natural_logarithm_of_multivecto;
1483  static PyObject *__pyx_kp_u_Norm_sum_of_squares_of_coordina;
1484  static PyObject *__pyx_n_s_NotImplemented;
1485  static PyObject *__pyx_kp_s_Not_applicable;
1486  static PyObject *__pyx_kp_u_Not_applicable_for_a_in_cliffor;
1487  static PyObject *__pyx_kp_u_Number_of_negative_indices_incl;
1488  static PyObject *__pyx_kp_u_Number_of_positive_indices_incl;
1489  static PyObject *__pyx_kp_u_Odd_part_of_multivector_sum_of;
1490  static PyObject *__pyx_kp_u_Odd_part_of_multivector_sum_of_2;
1491  static PyObject *__pyx_kp_u_Outer_product_power_of_multivec;
1492  static PyObject *__pyx_kp_u_Outer_product_power_x_clifford;
1493  static PyObject *__pyx_kp_u_Outer_product_print_clifford_1;
1494  static PyObject *__pyx_kp_u_Outer_product_x_clifford_1_x_cl;
1495  static PyObject *__pyx_kp_u_Power_self_to_the_m_x_clifford;
1496  static PyObject *__pyx_kp_u_Power_self_to_the_m_x_clifford_2;
1497  static PyObject *__pyx_kp_u_Pure_grade_vector_part_print_cl;
1498  static PyObject *__pyx_kp_u_Pure_part_print_clifford_1_1_1;
1499  static PyObject *__pyx_kp_u_Pure_part_print_pure_clifford_1;
1500  static PyObject *__pyx_kp_u_Put_self_into_a_larger_frame_co;
1501  static PyObject *__pyx_n_s_PyClical;
1502  static PyObject *__pyx_kp_u_Quadratic_form_rev_x_x_0_print;
1503  static PyObject *__pyx_kp_u_Quadratic_form_rev_x_x_0_print_2;
1504  static PyObject *__pyx_kp_u_Random_multivector_within_a_fra;
1505  static PyObject *__pyx_n_s_Real;
1506  static PyObject *__pyx_kp_u_Real_part_synonym_for_scalar_pa;
1507  static PyObject *__pyx_kp_u_Remove_all_terms_of_self_with_r;
1508  static PyObject *__pyx_kp_u_Reversion_eg_1_2_2_1_print_reve;
1509  static PyObject *__pyx_kp_u_Reversion_eg_clifford_1_cliffor;
1510  static PyObject *__pyx_n_s_RuntimeError;
1511  static PyObject *__pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc;
1512  static PyObject *__pyx_kp_u_Scalar_part_scalar_clifford_1_1;
1513  static PyObject *__pyx_n_s_Sequence;
1514  static PyObject *__pyx_kp_u_Set_complement_not_print_index;
1515  static PyObject *__pyx_kp_u_Set_intersection_and_print_inde;
1516  static PyObject *__pyx_kp_u_Set_intersection_and_x_index_se;
1517  static PyObject *__pyx_kp_u_Set_the_value_of_an_index_set_o;
1518  static PyObject *__pyx_kp_u_Set_union_or_print_index_set_1;
1519  static PyObject *__pyx_kp_u_Set_union_or_x_index_set_1_x_in;
1520  static PyObject *__pyx_kp_u_Sign_of_geometric_product_of_tw;
1521  static PyObject *__pyx_kp_u_Sign_of_geometric_square_of_a_C;
1522  static PyObject *__pyx_kp_u_Sine_of_multivector_with_option;
1523  static PyObject *__pyx_kp_u_Square_root_of_1_which_commutes;
1524  static PyObject *__pyx_kp_u_Square_root_of_multivector_with;
1525  static PyObject *__pyx_kp_u_Subalgebra_generated_by_all_gen;
1526  static PyObject *__pyx_kp_u_Subscripting_map_from_index_set;
1527  static PyObject *__pyx_kp_u_Symmetric_set_difference_exclus;
1528  static PyObject *__pyx_kp_u_Symmetric_set_difference_exclus_2;
1529  static PyObject *__pyx_kp_u_Tangent_of_multivector_with_opt;
1530  static PyObject *__pyx_kp_u_Tests_for_functions_that_Doctes;
1531  static PyObject *__pyx_kp_u_Tests_for_functions_that_Doctes_2;
1532  static PyObject *__pyx_kp_u_The_informal_string_representat;
1533  static PyObject *__pyx_kp_u_The_informal_string_representat_2;
1534  static PyObject *__pyx_kp_u_The_official_string_representat;
1535  static PyObject *__pyx_kp_u_The_official_string_representat_2;
1536  static PyObject *__pyx_kp_s_This_comparison_operator_is_not;
1537  static PyObject *__pyx_kp_u_Transform_left_hand_side_using;
1538  static PyObject *__pyx_kp_u_Transform_left_hand_side_using_2;
1539  static PyObject *__pyx_n_s_TypeError;
1540  static PyObject *__pyx_kp_u_Unary_print_clifford_1_1;
1541  static PyObject *__pyx_kp_u_Unary_print_clifford_1_1_2;
1542  static PyObject *__pyx_n_s_ValueError;
1543  static PyObject *__pyx_kp_u_Vector_part_of_multivector_as_a;
1544  static PyObject *__pyx_kp_s__2;
1545  static PyObject *__pyx_kp_s__3;
1546  static PyObject *__pyx_kp_s__4;
1547  static PyObject *__pyx_kp_s__5;
1548  static PyObject *__pyx_kp_s__6;
1549  static PyObject *__pyx_kp_s__7;
1550  static PyObject *__pyx_kp_u_abs_line_1473;
1551  static PyObject *__pyx_n_s_acos;
1552  static PyObject *__pyx_kp_u_acos_line_1619;
1553  static PyObject *__pyx_n_s_acosh;
1554  static PyObject *__pyx_kp_u_acosh_line_1656;
1555  static PyObject *__pyx_kp_u_agc3_line_1844;
1556  static PyObject *__pyx_n_s_args;
1557  static PyObject *__pyx_kp_s_as_frame;
1558  static PyObject *__pyx_n_s_asin;
1559  static PyObject *__pyx_kp_u_asin_line_1698;
1560  static PyObject *__pyx_n_s_asinh;
1561  static PyObject *__pyx_kp_u_asinh_line_1733;
1562  static PyObject *__pyx_n_s_atan;
1563  static PyObject *__pyx_kp_u_atan_line_1769;
1564  static PyObject *__pyx_n_s_atanh;
1565  static PyObject *__pyx_kp_u_atanh_line_1798;
1566  static PyObject *__pyx_kp_u_cga3_line_1824;
1567  static PyObject *__pyx_kp_u_cga3std_line_1833;
1568  static PyObject *__pyx_n_s_cl;
1569  static PyObject *__pyx_kp_u_clifford___add___line_739;
1570  static PyObject *__pyx_kp_u_clifford___and___line_835;
1571  static PyObject *__pyx_kp_u_clifford___call___line_1019;
1572  static PyObject *__pyx_kp_u_clifford___div___line_895;
1573  static PyObject *__pyx_kp_u_clifford___getitem___line_706;
1574  static PyObject *__pyx_kp_u_clifford___iadd___line_750;
1575  static PyObject *__pyx_kp_u_clifford___iand___line_850;
1576  static PyObject *__pyx_kp_u_clifford___idiv___line_910;
1577  static PyObject *__pyx_kp_u_clifford___imod___line_820;
1578  static PyObject *__pyx_kp_u_clifford___imul___line_792;
1579  static PyObject *__pyx_kp_u_clifford___ior___line_949;
1580  static PyObject *__pyx_kp_u_clifford___isub___line_770;
1581  static PyObject *__pyx_kp_u_clifford___iter___line_637;
1582  static PyObject *__pyx_kp_u_clifford___ixor___line_880;
1583  static PyObject *__pyx_kp_u_clifford___mod___line_805;
1584  static PyObject *__pyx_kp_u_clifford___mul___line_779;
1585  static PyObject *__pyx_kp_u_clifford___neg___line_721;
1586  static PyObject *__pyx_kp_u_clifford___or___line_938;
1587  static PyObject *__pyx_kp_u_clifford___pos___line_730;
1588  static PyObject *__pyx_kp_u_clifford___pow___line_960;
1589  static PyObject *__pyx_kp_u_clifford___repr___line_1225;
1590  static PyObject *__pyx_kp_u_clifford___str___line_1234;
1591  static PyObject *__pyx_kp_u_clifford___sub___line_759;
1592  static PyObject *__pyx_kp_u_clifford___xor___line_865;
1593  static PyObject *__pyx_kp_u_clifford_abs_line_1174;
1594  static PyObject *__pyx_kp_u_clifford_conj_line_1137;
1595  static PyObject *__pyx_kp_u_clifford_copy_line_554;
1596  static PyObject *__pyx_kp_u_clifford_even_line_1060;
1597  static PyObject *__pyx_kp_u_clifford_frame_line_1214;
1598  static PyObject *__pyx_n_s_clifford_hidden_doctests;
1599  static PyObject *__pyx_kp_u_clifford_hidden_doctests_line_12;
1600  static PyObject *__pyx_kp_u_clifford_inv_line_925;
1601  static PyObject *__pyx_kp_u_clifford_involute_line_1106;
1602  static PyObject *__pyx_kp_u_clifford_isnan_line_1205;
1603  static PyObject *__pyx_kp_u_clifford_max_abs_line_1183;
1604  static PyObject *__pyx_kp_u_clifford_norm_line_1163;
1605  static PyObject *__pyx_kp_u_clifford_odd_line_1069;
1606  static PyObject *__pyx_kp_u_clifford_outer_pow_line_1003;
1607  static PyObject *__pyx_kp_u_clifford_pow_line_979;
1608  static PyObject *__pyx_kp_u_clifford_pure_line_1049;
1609  static PyObject *__pyx_kp_u_clifford_quad_line_1152;
1610  static PyObject *__pyx_kp_u_clifford_reframe_line_648;
1611  static PyObject *__pyx_kp_u_clifford_reverse_line_1122;
1612  static PyObject *__pyx_kp_u_clifford_scalar_line_1038;
1613  static PyObject *__pyx_kp_u_clifford_truncated_line_1194;
1614  static PyObject *__pyx_kp_u_clifford_vector_part_line_1078;
1615  static PyObject *__pyx_n_s_close;
1616  static PyObject *__pyx_n_s_collections;
1617  static PyObject *__pyx_kp_u_compare_line_490;
1618  static PyObject *__pyx_kp_u_complexifier_line_1527;
1619  static PyObject *__pyx_n_s_conj;
1620  static PyObject *__pyx_kp_u_conj_line_1436;
1621  static PyObject *__pyx_n_s_copy;
1622  static PyObject *__pyx_n_s_cos;
1623  static PyObject *__pyx_kp_u_cos_line_1602;
1624  static PyObject *__pyx_n_s_cosh;
1625  static PyObject *__pyx_kp_u_cosh_line_1640;
1626  static PyObject *__pyx_n_s_doctest;
1627  static PyObject *__pyx_n_s_e;
1628  static PyObject *__pyx_kp_u_e_line_1887;
1629  static PyObject *__pyx_n_s_even;
1630  static PyObject *__pyx_kp_u_even_line_1388;
1631  static PyObject *__pyx_n_s_exp;
1632  static PyObject *__pyx_kp_u_exp_line_1565;
1633  static PyObject *__pyx_n_s_fill;
1634  static PyObject *__pyx_n_s_frm;
1635  static PyObject *__pyx_kp_s_from;
1636  static PyObject *__pyx_n_s_grade;
1637  static PyObject *__pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc;
1638  static PyObject *__pyx_n_s_i;
1639  static PyObject *__pyx_kp_u_imag_line_1366;
1640  static PyObject *__pyx_n_s_import;
1641  static PyObject *__pyx_kp_u_index_set___and___line_269;
1642  static PyObject *__pyx_kp_u_index_set___getitem___line_189;
1643  static PyObject *__pyx_kp_u_index_set___iand___line_280;
1644  static PyObject *__pyx_kp_u_index_set___invert___line_238;
1645  static PyObject *__pyx_kp_u_index_set___ior___line_302;
1646  static PyObject *__pyx_n_s_index_set___iter;
1647  static PyObject *__pyx_kp_u_index_set___iter___line_227;
1648  static PyObject *__pyx_kp_u_index_set___ixor___line_258;
1649  static PyObject *__pyx_kp_u_index_set___or___line_291;
1650  static PyObject *__pyx_kp_u_index_set___repr___line_382;
1651  static PyObject *__pyx_kp_u_index_set___setitem___line_177;
1652  static PyObject *__pyx_kp_u_index_set___str___line_393;
1653  static PyObject *__pyx_kp_u_index_set___xor___line_247;
1654  static PyObject *__pyx_kp_u_index_set_copy_line_64;
1655  static PyObject *__pyx_kp_u_index_set_count_line_313;
1656  static PyObject *__pyx_kp_u_index_set_count_neg_line_322;
1657  static PyObject *__pyx_kp_u_index_set_count_pos_line_331;
1658  static PyObject *__pyx_n_s_index_set_hidden_doctests;
1659  static PyObject *__pyx_kp_u_index_set_hidden_doctests_line_4;
1660  static PyObject *__pyx_kp_u_index_set_max_line_349;
1661  static PyObject *__pyx_kp_u_index_set_min_line_340;
1662  static PyObject *__pyx_kp_u_index_set_sign_of_mult_line_364;
1663  static PyObject *__pyx_kp_u_index_set_sign_of_square_line_37;
1664  static PyObject *__pyx_n_s_inv;
1665  static PyObject *__pyx_kp_u_inv_line_1329;
1666  static PyObject *__pyx_kp_s_invalid;
1667  static PyObject *__pyx_kp_s_invalid_string;
1668  static PyObject *__pyx_n_s_involute;
1669  static PyObject *__pyx_kp_u_involute_line_1406;
1670  static PyObject *__pyx_n_s_ist;
1671  static PyObject *__pyx_n_s_istpq;
1672  static PyObject *__pyx_kp_u_istpq_line_1900;
1673  static PyObject *__pyx_n_s_iter;
1674  static PyObject *__pyx_n_s_ixt;
1675  static PyObject *__pyx_kp_u_lexicographic_compare_eg_3_4_5;
1676  static PyObject *__pyx_n_s_lhs;
1677  static PyObject *__pyx_n_s_log;
1678  static PyObject *__pyx_kp_u_log_line_1579;
1679  static PyObject *__pyx_n_s_m;
1680  static PyObject *__pyx_n_s_main;
1681  static PyObject *__pyx_n_s_math;
1682  static PyObject *__pyx_n_s_max;
1683  static PyObject *__pyx_kp_u_max_abs_line_1482;
1684  static PyObject *__pyx_kp_u_max_pos_line_511;
1685  static PyObject *__pyx_n_s_min;
1686  static PyObject *__pyx_kp_u_min_neg_line_502;
1687  static PyObject *__pyx_n_s_name;
1688  static PyObject *__pyx_n_s_nbar3;
1689  static PyObject *__pyx_n_s_ninf3;
1690  static PyObject *__pyx_n_s_norm;
1691  static PyObject *__pyx_kp_u_norm_line_1462;
1692  static PyObject *__pyx_kp_u_norm_sum_of_squares_of_coordina;
1693  static PyObject *__pyx_n_s_numbers;
1694  static PyObject *__pyx_n_s_obj;
1695  static PyObject *__pyx_n_s_odd;
1696  static PyObject *__pyx_kp_u_odd_line_1397;
1697  static PyObject *__pyx_n_s_other;
1698  static PyObject *__pyx_n_s_outer_pow;
1699  static PyObject *__pyx_kp_u_outer_pow_line_1518;
1700  static PyObject *__pyx_n_s_p;
1701  static PyObject *__pyx_n_s_pi;
1702  static PyObject *__pyx_n_s_pow;
1703  static PyObject *__pyx_kp_u_pow_line_1494;
1704  static PyObject *__pyx_n_s_pure;
1705  static PyObject *__pyx_kp_u_pure_line_1377;
1706  static PyObject *__pyx_n_s_pyx_vtable;
1707  static PyObject *__pyx_n_s_q;
1708  static PyObject *__pyx_n_s_quad;
1709  static PyObject *__pyx_kp_u_quad_line_1451;
1710  static PyObject *__pyx_kp_u_random_clifford_line_1815;
1711  static PyObject *__pyx_n_s_range;
1712  static PyObject *__pyx_kp_u_real_line_1355;
1713  static PyObject *__pyx_n_s_reverse;
1714  static PyObject *__pyx_kp_u_reverse_line_1421;
1715  static PyObject *__pyx_n_s_rhs;
1716  static PyObject *__pyx_n_s_scalar;
1717  static PyObject *__pyx_kp_u_scalar_line_1344;
1718  static PyObject *__pyx_n_s_send;
1719  static PyObject *__pyx_n_s_sin;
1720  static PyObject *__pyx_kp_u_sin_line_1679;
1721  static PyObject *__pyx_n_s_sinh;
1722  static PyObject *__pyx_kp_u_sinh_line_1719;
1723  static PyObject *__pyx_n_s_sqrt;
1724  static PyObject *__pyx_kp_u_sqrt_line_1542;
1725  static PyObject *__pyx_n_s_tan;
1726  static PyObject *__pyx_kp_u_tan_line_1752;
1727  static PyObject *__pyx_n_s_tanh;
1728  static PyObject *__pyx_kp_u_tanh_line_1786;
1729  static PyObject *__pyx_n_s_tau;
1730  static PyObject *__pyx_n_s_test;
1731  static PyObject *__pyx_n_s_test_2;
1732  static PyObject *__pyx_n_s_testmod;
1733  static PyObject *__pyx_n_s_throw;
1734  static PyObject *__pyx_kp_s_to_frame;
1735  static PyObject *__pyx_kp_s_using;
1736  static PyObject *__pyx_kp_s_using_invalid;
1737  static PyObject *__pyx_kp_s_value;
1738  static PyObject *__pyx_n_s_version;
1739  static PyObject *__pyx_n_s_xrange;
1740 static PyObject *__pyx_pf_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1741 static int __pyx_pf_8PyClical_9index_set_2__cinit__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
1742 static void __pyx_pf_8PyClical_9index_set_4__dealloc__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1743 static PyObject *__pyx_pf_8PyClical_9index_set_6__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /* proto */
1744 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 */
1745 static PyObject *__pyx_pf_8PyClical_9index_set_10__getitem__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
1746 static int __pyx_pf_8PyClical_9index_set_12__contains__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
1747 static PyObject *__pyx_pf_8PyClical_9index_set_14__iter__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1748 static PyObject *__pyx_pf_8PyClical_9index_set_17__invert__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1749 static PyObject *__pyx_pf_8PyClical_9index_set_19__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1750 static PyObject *__pyx_pf_8PyClical_9index_set_21__ixor__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1751 static PyObject *__pyx_pf_8PyClical_9index_set_23__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1752 static PyObject *__pyx_pf_8PyClical_9index_set_25__iand__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1753 static PyObject *__pyx_pf_8PyClical_9index_set_27__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1754 static PyObject *__pyx_pf_8PyClical_9index_set_29__ior__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1755 static PyObject *__pyx_pf_8PyClical_9index_set_31count(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1756 static PyObject *__pyx_pf_8PyClical_9index_set_33count_neg(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1757 static PyObject *__pyx_pf_8PyClical_9index_set_35count_pos(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1758 static PyObject *__pyx_pf_8PyClical_9index_set_37min(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1759 static PyObject *__pyx_pf_8PyClical_9index_set_39max(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1760 static PyObject *__pyx_pf_8PyClical_9index_set_41hash_fn(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1761 static PyObject *__pyx_pf_8PyClical_9index_set_43sign_of_mult(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1762 static PyObject *__pyx_pf_8PyClical_9index_set_45sign_of_square(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1763 static PyObject *__pyx_pf_8PyClical_9index_set_47__repr__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1764 static PyObject *__pyx_pf_8PyClical_9index_set_49__str__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self); /* proto */
1765 static PyObject *__pyx_pf_8PyClical_index_set_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
1766 static PyObject *__pyx_pf_8PyClical_2compare(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1767 static PyObject *__pyx_pf_8PyClical_4min_neg(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1768 static PyObject *__pyx_pf_8PyClical_6max_pos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1769 static PyObject *__pyx_pf_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1770 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 */
1771 static void __pyx_pf_8PyClical_8clifford_4__dealloc__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1772 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 */
1773 static PyObject *__pyx_pf_8PyClical_8clifford_8__iter__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1774 static PyObject *__pyx_pf_8PyClical_8clifford_10reframe(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt); /* proto */
1775 static PyObject *__pyx_pf_8PyClical_8clifford_12__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /* proto */
1776 static PyObject *__pyx_pf_8PyClical_8clifford_14__getitem__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt); /* proto */
1777 static PyObject *__pyx_pf_8PyClical_8clifford_16__neg__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1778 static PyObject *__pyx_pf_8PyClical_8clifford_18__pos__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1779 static PyObject *__pyx_pf_8PyClical_8clifford_20__add__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1780 static PyObject *__pyx_pf_8PyClical_8clifford_22__iadd__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1781 static PyObject *__pyx_pf_8PyClical_8clifford_24__sub__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1782 static PyObject *__pyx_pf_8PyClical_8clifford_26__isub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1783 static PyObject *__pyx_pf_8PyClical_8clifford_28__mul__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1784 static PyObject *__pyx_pf_8PyClical_8clifford_30__imul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1785 static PyObject *__pyx_pf_8PyClical_8clifford_32__mod__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1786 static PyObject *__pyx_pf_8PyClical_8clifford_34__imod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1787 static PyObject *__pyx_pf_8PyClical_8clifford_36__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1788 static PyObject *__pyx_pf_8PyClical_8clifford_38__iand__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1789 static PyObject *__pyx_pf_8PyClical_8clifford_40__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1790 static PyObject *__pyx_pf_8PyClical_8clifford_42__ixor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1791 #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
1792 static PyObject *__pyx_pf_8PyClical_8clifford_44__div__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1793 #endif
1794 #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
1795 static PyObject *__pyx_pf_8PyClical_8clifford_46__idiv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1796 #endif
1797 static PyObject *__pyx_pf_8PyClical_8clifford_48inv(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1798 static PyObject *__pyx_pf_8PyClical_8clifford_50__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /* proto */
1799 static PyObject *__pyx_pf_8PyClical_8clifford_52__ior__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
1800 static PyObject *__pyx_pf_8PyClical_8clifford_54__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_m, CYTHON_UNUSED PyObject *__pyx_v_dummy); /* proto */
1801 static PyObject *__pyx_pf_8PyClical_8clifford_56pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m); /* proto */
1802 static PyObject *__pyx_pf_8PyClical_8clifford_58outer_pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m); /* proto */
1803 static PyObject *__pyx_pf_8PyClical_8clifford_60__call__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_grade); /* proto */
1804 static PyObject *__pyx_pf_8PyClical_8clifford_62scalar(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1805 static PyObject *__pyx_pf_8PyClical_8clifford_64pure(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1806 static PyObject *__pyx_pf_8PyClical_8clifford_66even(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1807 static PyObject *__pyx_pf_8PyClical_8clifford_68odd(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1808 static PyObject *__pyx_pf_8PyClical_8clifford_70vector_part(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_frm); /* proto */
1809 static PyObject *__pyx_pf_8PyClical_8clifford_72involute(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1810 static PyObject *__pyx_pf_8PyClical_8clifford_74reverse(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1811 static PyObject *__pyx_pf_8PyClical_8clifford_76conj(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1812 static PyObject *__pyx_pf_8PyClical_8clifford_78quad(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1813 static PyObject *__pyx_pf_8PyClical_8clifford_80norm(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1814 static PyObject *__pyx_pf_8PyClical_8clifford_82abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1815 static PyObject *__pyx_pf_8PyClical_8clifford_84max_abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1816 static PyObject *__pyx_pf_8PyClical_8clifford_86truncated(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_limit); /* proto */
1817 static PyObject *__pyx_pf_8PyClical_8clifford_88isnan(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1818 static PyObject *__pyx_pf_8PyClical_8clifford_90frame(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1819 static PyObject *__pyx_pf_8PyClical_8clifford_92__repr__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1820 static PyObject *__pyx_pf_8PyClical_8clifford_94__str__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self); /* proto */
1821 static PyObject *__pyx_pf_8PyClical_8clifford_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
1822 static PyObject *__pyx_pf_8PyClical_10inv(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1823 static PyObject *__pyx_pf_8PyClical_12scalar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1824 static PyObject *__pyx_pf_8PyClical_14real(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1825 static PyObject *__pyx_pf_8PyClical_16imag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1826 static PyObject *__pyx_pf_8PyClical_18pure(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1827 static PyObject *__pyx_pf_8PyClical_20even(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1828 static PyObject *__pyx_pf_8PyClical_22odd(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1829 static PyObject *__pyx_pf_8PyClical_24involute(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1830 static PyObject *__pyx_pf_8PyClical_26reverse(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1831 static PyObject *__pyx_pf_8PyClical_28conj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1832 static PyObject *__pyx_pf_8PyClical_30quad(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1833 static PyObject *__pyx_pf_8PyClical_32norm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1834 static PyObject *__pyx_pf_8PyClical_34abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1835 static PyObject *__pyx_pf_8PyClical_36max_abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1836 static PyObject *__pyx_pf_8PyClical_38pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m); /* proto */
1837 static PyObject *__pyx_pf_8PyClical_40outer_pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m); /* proto */
1838 static PyObject *__pyx_pf_8PyClical_42complexifier(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1839 static PyObject *__pyx_pf_8PyClical_44sqrt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1840 static PyObject *__pyx_pf_8PyClical_46exp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1841 static PyObject *__pyx_pf_8PyClical_48log(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1842 static PyObject *__pyx_pf_8PyClical_50cos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1843 static PyObject *__pyx_pf_8PyClical_52acos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1844 static PyObject *__pyx_pf_8PyClical_54cosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1845 static PyObject *__pyx_pf_8PyClical_56acosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1846 static PyObject *__pyx_pf_8PyClical_58sin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1847 static PyObject *__pyx_pf_8PyClical_60asin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1848 static PyObject *__pyx_pf_8PyClical_62sinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1849 static PyObject *__pyx_pf_8PyClical_64asinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1850 static PyObject *__pyx_pf_8PyClical_66tan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1851 static PyObject *__pyx_pf_8PyClical_68atan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1852 static PyObject *__pyx_pf_8PyClical_70tanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1853 static PyObject *__pyx_pf_8PyClical_72atanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i); /* proto */
1854 static PyObject *__pyx_pf_8PyClical_74random_clifford(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt, PyObject *__pyx_v_fill); /* proto */
1855 static PyObject *__pyx_pf_8PyClical_76cga3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1856 static PyObject *__pyx_pf_8PyClical_78cga3std(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1857 static PyObject *__pyx_pf_8PyClical_80agc3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1858 static PyObject *__pyx_pf_8PyClical_82e(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
1859 static PyObject *__pyx_pf_8PyClical_84istpq(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_p, PyObject *__pyx_v_q); /* proto */
1860 static PyObject *__pyx_pf_8PyClical_86_test(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
1861 static PyObject *__pyx_tp_new_8PyClical_index_set(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
1862 static PyObject *__pyx_tp_new_8PyClical_clifford(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
1863 static PyObject *__pyx_tp_new_8PyClical___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
1864 static PyObject *__pyx_float_0_0;
1865 static PyObject *__pyx_float_1_0;
1866 static PyObject *__pyx_float_2_0;
1867 static PyObject *__pyx_float_8_0;
1868 static PyObject *__pyx_int_0;
1869 static PyObject *__pyx_int_1;
1870 static PyObject *__pyx_int_4;
1871 static PyObject *__pyx_int_neg_1;
1872 static PyObject *__pyx_tuple__8;
1873 static PyObject *__pyx_tuple__9;
1874 static PyObject *__pyx_tuple__12;
1875 static PyObject *__pyx_tuple__13;
1876 static PyObject *__pyx_tuple__15;
1877 static PyObject *__pyx_tuple__17;
1878 static PyObject *__pyx_tuple__18;
1879 static PyObject *__pyx_tuple__19;
1880 static PyObject *__pyx_tuple__20;
1881 static PyObject *__pyx_tuple__21;
1882 static PyObject *__pyx_codeobj__10;
1883 static PyObject *__pyx_codeobj__11;
1884 static PyObject *__pyx_codeobj__14;
1885 static PyObject *__pyx_codeobj__16;
1886 static PyObject *__pyx_codeobj__22;
1887 
1888 /* "PyClical.pyx":39
1889  * cdef class index_set
1890  *
1891  * cdef inline IndexSet toIndexSet(obj): # <<<<<<<<<<<<<<
1892  * """
1893  * Return the C++ IndexSet instance wrapped by index_set(obj).
1894  */
1895 
1896 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_toIndexSet(PyObject *__pyx_v_obj) {
1897  IndexSet __pyx_r;
1898  __Pyx_RefNannyDeclarations
1899  PyObject *__pyx_t_1 = NULL;
1900  PyObject *__pyx_t_2 = NULL;
1901  int __pyx_lineno = 0;
1902  const char *__pyx_filename = NULL;
1903  int __pyx_clineno = 0;
1904  __Pyx_RefNannySetupContext("toIndexSet", 0);
1905 
1906  /* "PyClical.pyx":43
1907  * Return the C++ IndexSet instance wrapped by index_set(obj).
1908  * """
1909  * return index_set(obj).instance[0] # <<<<<<<<<<<<<<
1910  *
1911  * cdef class index_set:
1912  */
1913  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1914  __Pyx_GOTREF(__pyx_t_1);
1915  __Pyx_INCREF(__pyx_v_obj);
1916  __Pyx_GIVEREF(__pyx_v_obj);
1917  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_obj);
1918  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1919  __Pyx_GOTREF(__pyx_t_2);
1920  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1921  __pyx_r = (((struct __pyx_obj_8PyClical_index_set *)__pyx_t_2)->instance[0]);
1922  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1923  goto __pyx_L0;
1924 
1925  /* "PyClical.pyx":39
1926  * cdef class index_set
1927  *
1928  * cdef inline IndexSet toIndexSet(obj): # <<<<<<<<<<<<<<
1929  * """
1930  * Return the C++ IndexSet instance wrapped by index_set(obj).
1931  */
1932 
1933  /* function exit code */
1934  __pyx_L1_error:;
1935  __Pyx_XDECREF(__pyx_t_1);
1936  __Pyx_XDECREF(__pyx_t_2);
1937  __Pyx_WriteUnraisable("PyClical.toIndexSet", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
1938  __pyx_L0:;
1939  __Pyx_RefNannyFinishContext();
1940  return __pyx_r;
1941 }
1942 
1943 /* "PyClical.pyx":51
1944  * cdef IndexSet *instance # Wrapped instance of C++ class IndexSet.
1945  *
1946  * cdef inline wrap(index_set self, IndexSet other): # <<<<<<<<<<<<<<
1947  * """
1948  * Wrap an instance of the C++ class IndexSet.
1949  */
1950 
1951 static CYTHON_INLINE PyObject *__pyx_f_8PyClical_9index_set_wrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, IndexSet __pyx_v_other) {
1952  PyObject *__pyx_r = NULL;
1953  __Pyx_RefNannyDeclarations
1954  __Pyx_RefNannySetupContext("wrap", 0);
1955 
1956  /* "PyClical.pyx":55
1957  * Wrap an instance of the C++ class IndexSet.
1958  * """
1959  * self.instance[0] = other # <<<<<<<<<<<<<<
1960  * return self
1961  *
1962  */
1963  (__pyx_v_self->instance[0]) = __pyx_v_other;
1964 
1965  /* "PyClical.pyx":56
1966  * """
1967  * self.instance[0] = other
1968  * return self # <<<<<<<<<<<<<<
1969  *
1970  * cdef inline IndexSet unwrap(index_set self):
1971  */
1972  __Pyx_XDECREF(__pyx_r);
1973  __Pyx_INCREF(((PyObject *)__pyx_v_self));
1974  __pyx_r = ((PyObject *)__pyx_v_self);
1975  goto __pyx_L0;
1976 
1977  /* "PyClical.pyx":51
1978  * cdef IndexSet *instance # Wrapped instance of C++ class IndexSet.
1979  *
1980  * cdef inline wrap(index_set self, IndexSet other): # <<<<<<<<<<<<<<
1981  * """
1982  * Wrap an instance of the C++ class IndexSet.
1983  */
1984 
1985  /* function exit code */
1986  __pyx_L0:;
1987  __Pyx_XGIVEREF(__pyx_r);
1988  __Pyx_RefNannyFinishContext();
1989  return __pyx_r;
1990 }
1991 
1992 /* "PyClical.pyx":58
1993  * return self
1994  *
1995  * cdef inline IndexSet unwrap(index_set self): # <<<<<<<<<<<<<<
1996  * """
1997  * Return the wrapped C++ IndexSet instance.
1998  */
1999 
2000 static CYTHON_INLINE IndexSet __pyx_f_8PyClical_9index_set_unwrap(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
2001  IndexSet __pyx_r;
2002  __Pyx_RefNannyDeclarations
2003  __Pyx_RefNannySetupContext("unwrap", 0);
2004 
2005  /* "PyClical.pyx":62
2006  * Return the wrapped C++ IndexSet instance.
2007  * """
2008  * return self.instance[0] # <<<<<<<<<<<<<<
2009  *
2010  * cpdef copy(index_set self):
2011  */
2012  __pyx_r = (__pyx_v_self->instance[0]);
2013  goto __pyx_L0;
2014 
2015  /* "PyClical.pyx":58
2016  * return self
2017  *
2018  * cdef inline IndexSet unwrap(index_set self): # <<<<<<<<<<<<<<
2019  * """
2020  * Return the wrapped C++ IndexSet instance.
2021  */
2022 
2023  /* function exit code */
2024  __pyx_L0:;
2025  __Pyx_RefNannyFinishContext();
2026  return __pyx_r;
2027 }
2028 
2029 /* "PyClical.pyx":64
2030  * return self.instance[0]
2031  *
2032  * cpdef copy(index_set self): # <<<<<<<<<<<<<<
2033  * """
2034  * Copy this index_set object.
2035  */
2036 
2037 static PyObject *__pyx_pw_8PyClical_9index_set_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
2038 static PyObject *__pyx_f_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, int __pyx_skip_dispatch) {
2039  PyObject *__pyx_r = NULL;
2040  __Pyx_RefNannyDeclarations
2041  PyObject *__pyx_t_1 = NULL;
2042  PyObject *__pyx_t_2 = NULL;
2043  PyObject *__pyx_t_3 = NULL;
2044  PyObject *__pyx_t_4 = NULL;
2045  int __pyx_lineno = 0;
2046  const char *__pyx_filename = NULL;
2047  int __pyx_clineno = 0;
2048  __Pyx_RefNannySetupContext("copy", 0);
2049  /* Check if called by wrapper */
2050  if (unlikely(__pyx_skip_dispatch)) ;
2051  /* Check if overridden in Python */
2052  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
2053  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2054  __Pyx_GOTREF(__pyx_t_1);
2055  if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_8PyClical_9index_set_1copy)) {
2056  __Pyx_XDECREF(__pyx_r);
2057  __Pyx_INCREF(__pyx_t_1);
2058  __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
2059  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
2060  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
2061  if (likely(__pyx_t_4)) {
2062  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
2063  __Pyx_INCREF(__pyx_t_4);
2064  __Pyx_INCREF(function);
2065  __Pyx_DECREF_SET(__pyx_t_3, function);
2066  }
2067  }
2068  if (__pyx_t_4) {
2069  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2070  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2071  } else {
2072  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2073  }
2074  __Pyx_GOTREF(__pyx_t_2);
2075  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2076  __pyx_r = __pyx_t_2;
2077  __pyx_t_2 = 0;
2078  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2079  goto __pyx_L0;
2080  }
2081  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2082  }
2083 
2084  /* "PyClical.pyx":71
2085  * {1}
2086  * """
2087  * return index_set(self) # <<<<<<<<<<<<<<
2088  *
2089  * def __cinit__(self, other = 0):
2090  */
2091  __Pyx_XDECREF(__pyx_r);
2092  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2093  __Pyx_GOTREF(__pyx_t_1);
2094  __Pyx_INCREF(((PyObject *)__pyx_v_self));
2095  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
2096  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
2097  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2098  __Pyx_GOTREF(__pyx_t_2);
2099  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2100  __pyx_r = __pyx_t_2;
2101  __pyx_t_2 = 0;
2102  goto __pyx_L0;
2103 
2104  /* "PyClical.pyx":64
2105  * return self.instance[0]
2106  *
2107  * cpdef copy(index_set self): # <<<<<<<<<<<<<<
2108  * """
2109  * Copy this index_set object.
2110  */
2111 
2112  /* function exit code */
2113  __pyx_L1_error:;
2114  __Pyx_XDECREF(__pyx_t_1);
2115  __Pyx_XDECREF(__pyx_t_2);
2116  __Pyx_XDECREF(__pyx_t_3);
2117  __Pyx_XDECREF(__pyx_t_4);
2118  __Pyx_AddTraceback("PyClical.index_set.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
2119  __pyx_r = 0;
2120  __pyx_L0:;
2121  __Pyx_XGIVEREF(__pyx_r);
2122  __Pyx_RefNannyFinishContext();
2123  return __pyx_r;
2124 }
2125 
2126 /* Python wrapper */
2127 static PyObject *__pyx_pw_8PyClical_9index_set_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
2128 static char __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 ";
2129 static PyObject *__pyx_pw_8PyClical_9index_set_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
2130  PyObject *__pyx_r = 0;
2131  __Pyx_RefNannyDeclarations
2132  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
2133  __pyx_r = __pyx_pf_8PyClical_9index_set_copy(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
2134 
2135  /* function exit code */
2136  __Pyx_RefNannyFinishContext();
2137  return __pyx_r;
2138 }
2139 
2140 static PyObject *__pyx_pf_8PyClical_9index_set_copy(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
2141  PyObject *__pyx_r = NULL;
2142  __Pyx_RefNannyDeclarations
2143  PyObject *__pyx_t_1 = NULL;
2144  int __pyx_lineno = 0;
2145  const char *__pyx_filename = NULL;
2146  int __pyx_clineno = 0;
2147  __Pyx_RefNannySetupContext("copy", 0);
2148  __Pyx_XDECREF(__pyx_r);
2149  __pyx_t_1 = __pyx_f_8PyClical_9index_set_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2150  __Pyx_GOTREF(__pyx_t_1);
2151  __pyx_r = __pyx_t_1;
2152  __pyx_t_1 = 0;
2153  goto __pyx_L0;
2154 
2155  /* function exit code */
2156  __pyx_L1_error:;
2157  __Pyx_XDECREF(__pyx_t_1);
2158  __Pyx_AddTraceback("PyClical.index_set.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
2159  __pyx_r = NULL;
2160  __pyx_L0:;
2161  __Pyx_XGIVEREF(__pyx_r);
2162  __Pyx_RefNannyFinishContext();
2163  return __pyx_r;
2164 }
2165 
2166 /* "PyClical.pyx":73
2167  * return index_set(self)
2168  *
2169  * def __cinit__(self, other = 0): # <<<<<<<<<<<<<<
2170  * """
2171  * Construct an object of type index_set.
2172  */
2173 
2174 /* Python wrapper */
2175 static int __pyx_pw_8PyClical_9index_set_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2176 static int __pyx_pw_8PyClical_9index_set_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2177  PyObject *__pyx_v_other = 0;
2178  int __pyx_lineno = 0;
2179  const char *__pyx_filename = NULL;
2180  int __pyx_clineno = 0;
2181  int __pyx_r;
2182  __Pyx_RefNannyDeclarations
2183  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
2184  {
2185  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,0};
2186  PyObject* values[1] = {0};
2187  values[0] = ((PyObject *)__pyx_int_0);
2188  if (unlikely(__pyx_kwds)) {
2189  Py_ssize_t kw_args;
2190  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2191  switch (pos_args) {
2192  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2193  case 0: break;
2194  default: goto __pyx_L5_argtuple_error;
2195  }
2196  kw_args = PyDict_Size(__pyx_kwds);
2197  switch (pos_args) {
2198  case 0:
2199  if (kw_args > 0) {
2200  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_other);
2201  if (value) { values[0] = value; kw_args--; }
2202  }
2203  }
2204  if (unlikely(kw_args > 0)) {
2205  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2206  }
2207  } else {
2208  switch (PyTuple_GET_SIZE(__pyx_args)) {
2209  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2210  case 0: break;
2211  default: goto __pyx_L5_argtuple_error;
2212  }
2213  }
2214  __pyx_v_other = values[0];
2215  }
2216  goto __pyx_L4_argument_unpacking_done;
2217  __pyx_L5_argtuple_error:;
2218  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2219  __pyx_L3_error:;
2220  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
2221  __Pyx_RefNannyFinishContext();
2222  return -1;
2223  __pyx_L4_argument_unpacking_done:;
2224  __pyx_r = __pyx_pf_8PyClical_9index_set_2__cinit__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), __pyx_v_other);
2225 
2226  /* function exit code */
2227  __Pyx_RefNannyFinishContext();
2228  return __pyx_r;
2229 }
2230 
2231 static int __pyx_pf_8PyClical_9index_set_2__cinit__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_other) {
2232  PyObject *__pyx_v_error_msg_prefix = NULL;
2233  PyObject *__pyx_v_idx = NULL;
2234  int __pyx_r;
2235  __Pyx_RefNannyDeclarations
2236  int __pyx_t_1;
2237  int __pyx_t_2;
2238  IndexSet *__pyx_t_3;
2239  PyObject *__pyx_t_4 = NULL;
2240  PyObject *__pyx_t_5 = NULL;
2241  int __pyx_t_6;
2242  int __pyx_t_7;
2243  PyObject *__pyx_t_8 = NULL;
2244  PyObject *__pyx_t_9 = NULL;
2245  PyObject *__pyx_t_10 = NULL;
2246  Py_ssize_t __pyx_t_11;
2247  PyObject *(*__pyx_t_12)(PyObject *);
2248  PyObject *__pyx_t_13 = NULL;
2249  PyObject *__pyx_t_14 = NULL;
2250  PyObject *__pyx_t_15 = NULL;
2251  PyObject *__pyx_t_16 = NULL;
2252  char *__pyx_t_17;
2253  int __pyx_lineno = 0;
2254  const char *__pyx_filename = NULL;
2255  int __pyx_clineno = 0;
2256  __Pyx_RefNannySetupContext("__cinit__", 0);
2257 
2258  /* "PyClical.pyx":92
2259  * {}
2260  * """
2261  * error_msg_prefix = "Cannot initialize index_set object from" # <<<<<<<<<<<<<<
2262  * if isinstance(other, index_set):
2263  * self.instance = new IndexSet((<index_set>other).unwrap())
2264  */
2265  __Pyx_INCREF(__pyx_kp_s_Cannot_initialize_index_set_obje);
2266  __pyx_v_error_msg_prefix = __pyx_kp_s_Cannot_initialize_index_set_obje;
2267 
2268  /* "PyClical.pyx":93
2269  * """
2270  * error_msg_prefix = "Cannot initialize index_set object from"
2271  * if isinstance(other, index_set): # <<<<<<<<<<<<<<
2272  * self.instance = new IndexSet((<index_set>other).unwrap())
2273  * elif isinstance(other, numbers.Integral):
2274  */
2275  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_8PyClical_index_set);
2276  __pyx_t_2 = (__pyx_t_1 != 0);
2277  if (__pyx_t_2) {
2278 
2279  /* "PyClical.pyx":94
2280  * error_msg_prefix = "Cannot initialize index_set object from"
2281  * if isinstance(other, index_set):
2282  * self.instance = new IndexSet((<index_set>other).unwrap()) # <<<<<<<<<<<<<<
2283  * elif isinstance(other, numbers.Integral):
2284  * self.instance = new IndexSet(<int>other)
2285  */
2286  try {
2287  __pyx_t_3 = new IndexSet(__pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_other)));
2288  } catch(...) {
2289  __Pyx_CppExn2PyErr();
2290  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2291  }
2292  __pyx_v_self->instance = __pyx_t_3;
2293 
2294  /* "PyClical.pyx":93
2295  * """
2296  * error_msg_prefix = "Cannot initialize index_set object from"
2297  * if isinstance(other, index_set): # <<<<<<<<<<<<<<
2298  * self.instance = new IndexSet((<index_set>other).unwrap())
2299  * elif isinstance(other, numbers.Integral):
2300  */
2301  goto __pyx_L3;
2302  }
2303 
2304  /* "PyClical.pyx":95
2305  * if isinstance(other, index_set):
2306  * self.instance = new IndexSet((<index_set>other).unwrap())
2307  * elif isinstance(other, numbers.Integral): # <<<<<<<<<<<<<<
2308  * self.instance = new IndexSet(<int>other)
2309  * elif isinstance(other, (set, frozenset)):
2310  */
2311  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2312  __Pyx_GOTREF(__pyx_t_4);
2313  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Integral); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2314  __Pyx_GOTREF(__pyx_t_5);
2315  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2316  __pyx_t_2 = PyObject_IsInstance(__pyx_v_other, __pyx_t_5); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2317  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2318  __pyx_t_1 = (__pyx_t_2 != 0);
2319  if (__pyx_t_1) {
2320 
2321  /* "PyClical.pyx":96
2322  * self.instance = new IndexSet((<index_set>other).unwrap())
2323  * elif isinstance(other, numbers.Integral):
2324  * self.instance = new IndexSet(<int>other) # <<<<<<<<<<<<<<
2325  * elif isinstance(other, (set, frozenset)):
2326  * try:
2327  */
2328  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_other); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2329  try {
2330  __pyx_t_3 = new IndexSet(((int)__pyx_t_6));
2331  } catch(...) {
2332  __Pyx_CppExn2PyErr();
2333  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2334  }
2335  __pyx_v_self->instance = __pyx_t_3;
2336 
2337  /* "PyClical.pyx":95
2338  * if isinstance(other, index_set):
2339  * self.instance = new IndexSet((<index_set>other).unwrap())
2340  * elif isinstance(other, numbers.Integral): # <<<<<<<<<<<<<<
2341  * self.instance = new IndexSet(<int>other)
2342  * elif isinstance(other, (set, frozenset)):
2343  */
2344  goto __pyx_L3;
2345  }
2346 
2347  /* "PyClical.pyx":97
2348  * elif isinstance(other, numbers.Integral):
2349  * self.instance = new IndexSet(<int>other)
2350  * elif isinstance(other, (set, frozenset)): # <<<<<<<<<<<<<<
2351  * try:
2352  * self.instance = new IndexSet()
2353  */
2354  __pyx_t_2 = PySet_Check(__pyx_v_other);
2355  __pyx_t_7 = (__pyx_t_2 != 0);
2356  if (!__pyx_t_7) {
2357  } else {
2358  __pyx_t_1 = __pyx_t_7;
2359  goto __pyx_L4_bool_binop_done;
2360  }
2361  __pyx_t_7 = PyFrozenSet_Check(__pyx_v_other);
2362  __pyx_t_2 = (__pyx_t_7 != 0);
2363  __pyx_t_1 = __pyx_t_2;
2364  __pyx_L4_bool_binop_done:;
2365  __pyx_t_2 = (__pyx_t_1 != 0);
2366  if (__pyx_t_2) {
2367 
2368  /* "PyClical.pyx":98
2369  * self.instance = new IndexSet(<int>other)
2370  * elif isinstance(other, (set, frozenset)):
2371  * try: # <<<<<<<<<<<<<<
2372  * self.instance = new IndexSet()
2373  * for idx in other:
2374  */
2375  {
2376  __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
2377  __Pyx_XGOTREF(__pyx_t_8);
2378  __Pyx_XGOTREF(__pyx_t_9);
2379  __Pyx_XGOTREF(__pyx_t_10);
2380  /*try:*/ {
2381 
2382  /* "PyClical.pyx":99
2383  * elif isinstance(other, (set, frozenset)):
2384  * try:
2385  * self.instance = new IndexSet() # <<<<<<<<<<<<<<
2386  * for idx in other:
2387  * self[idx] = True
2388  */
2389  __pyx_v_self->instance = new IndexSet();
2390 
2391  /* "PyClical.pyx":100
2392  * try:
2393  * self.instance = new IndexSet()
2394  * for idx in other: # <<<<<<<<<<<<<<
2395  * self[idx] = True
2396  * except IndexError:
2397  */
2398  if (likely(PyList_CheckExact(__pyx_v_other)) || PyTuple_CheckExact(__pyx_v_other)) {
2399  __pyx_t_5 = __pyx_v_other; __Pyx_INCREF(__pyx_t_5); __pyx_t_11 = 0;
2400  __pyx_t_12 = NULL;
2401  } else {
2402  __pyx_t_11 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_other); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2403  __Pyx_GOTREF(__pyx_t_5);
2404  __pyx_t_12 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2405  }
2406  for (;;) {
2407  if (likely(!__pyx_t_12)) {
2408  if (likely(PyList_CheckExact(__pyx_t_5))) {
2409  if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_5)) break;
2410  #if CYTHON_COMPILING_IN_CPYTHON
2411  __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_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2412  #else
2413  __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2414  __Pyx_GOTREF(__pyx_t_4);
2415  #endif
2416  } else {
2417  if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
2418  #if CYTHON_COMPILING_IN_CPYTHON
2419  __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_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2420  #else
2421  __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2422  __Pyx_GOTREF(__pyx_t_4);
2423  #endif
2424  }
2425  } else {
2426  __pyx_t_4 = __pyx_t_12(__pyx_t_5);
2427  if (unlikely(!__pyx_t_4)) {
2428  PyObject* exc_type = PyErr_Occurred();
2429  if (exc_type) {
2430  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
2431  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2432  }
2433  break;
2434  }
2435  __Pyx_GOTREF(__pyx_t_4);
2436  }
2437  __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_4);
2438  __pyx_t_4 = 0;
2439 
2440  /* "PyClical.pyx":101
2441  * self.instance = new IndexSet()
2442  * for idx in other:
2443  * self[idx] = True # <<<<<<<<<<<<<<
2444  * except IndexError:
2445  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
2446  */
2447  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self), __pyx_v_idx, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
2448 
2449  /* "PyClical.pyx":100
2450  * try:
2451  * self.instance = new IndexSet()
2452  * for idx in other: # <<<<<<<<<<<<<<
2453  * self[idx] = True
2454  * except IndexError:
2455  */
2456  }
2457  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2458 
2459  /* "PyClical.pyx":98
2460  * self.instance = new IndexSet(<int>other)
2461  * elif isinstance(other, (set, frozenset)):
2462  * try: # <<<<<<<<<<<<<<
2463  * self.instance = new IndexSet()
2464  * for idx in other:
2465  */
2466  }
2467  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
2468  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
2469  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
2470  goto __pyx_L13_try_end;
2471  __pyx_L6_error:;
2472  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
2473  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
2474 
2475  /* "PyClical.pyx":102
2476  * for idx in other:
2477  * self[idx] = True
2478  * except IndexError: # <<<<<<<<<<<<<<
2479  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
2480  * except (RuntimeError, TypeError):
2481  */
2482  __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_IndexError);
2483  if (__pyx_t_6) {
2484  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
2485  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2486  __Pyx_GOTREF(__pyx_t_5);
2487  __Pyx_GOTREF(__pyx_t_4);
2488  __Pyx_GOTREF(__pyx_t_13);
2489 
2490  /* "PyClical.pyx":103
2491  * self[idx] = True
2492  * except IndexError:
2493  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".") # <<<<<<<<<<<<<<
2494  * except (RuntimeError, TypeError):
2495  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2496  */
2497  __pyx_t_14 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s_invalid); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2498  __Pyx_GOTREF(__pyx_t_14);
2499  __pyx_t_15 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2500  __Pyx_GOTREF(__pyx_t_15);
2501  __pyx_t_16 = PyNumber_Add(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2502  __Pyx_GOTREF(__pyx_t_16);
2503  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2504  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
2505  __pyx_t_15 = PyNumber_Add(__pyx_t_16, __pyx_kp_s_); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2506  __Pyx_GOTREF(__pyx_t_15);
2507  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2508  __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2509  __Pyx_GOTREF(__pyx_t_16);
2510  __Pyx_GIVEREF(__pyx_t_15);
2511  PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15);
2512  __pyx_t_15 = 0;
2513  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_16, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2514  __Pyx_GOTREF(__pyx_t_15);
2515  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2516  __Pyx_Raise(__pyx_t_15, 0, 0, 0);
2517  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
2518  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2519  }
2520 
2521  /* "PyClical.pyx":104
2522  * except IndexError:
2523  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
2524  * except (RuntimeError, TypeError): # <<<<<<<<<<<<<<
2525  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2526  * elif isinstance(other, str):
2527  */
2528  __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_RuntimeError) || PyErr_ExceptionMatches(__pyx_builtin_TypeError);
2529  if (__pyx_t_6) {
2530  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
2531  if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2532  __Pyx_GOTREF(__pyx_t_13);
2533  __Pyx_GOTREF(__pyx_t_4);
2534  __Pyx_GOTREF(__pyx_t_5);
2535 
2536  /* "PyClical.pyx":105
2537  * raise IndexError(error_msg_prefix + " invalid " + repr(other) + ".")
2538  * except (RuntimeError, TypeError):
2539  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".") # <<<<<<<<<<<<<<
2540  * elif isinstance(other, str):
2541  * try:
2542  */
2543  __pyx_t_15 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s_invalid); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2544  __Pyx_GOTREF(__pyx_t_15);
2545  __pyx_t_16 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2546  __Pyx_GOTREF(__pyx_t_16);
2547  __pyx_t_14 = PyNumber_Add(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2548  __Pyx_GOTREF(__pyx_t_14);
2549  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
2550  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2551  __pyx_t_16 = PyNumber_Add(__pyx_t_14, __pyx_kp_s_); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2552  __Pyx_GOTREF(__pyx_t_16);
2553  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2554  __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2555  __Pyx_GOTREF(__pyx_t_14);
2556  __Pyx_GIVEREF(__pyx_t_16);
2557  PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16);
2558  __pyx_t_16 = 0;
2559  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_14, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2560  __Pyx_GOTREF(__pyx_t_16);
2561  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2562  __Pyx_Raise(__pyx_t_16, 0, 0, 0);
2563  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2564  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
2565  }
2566  goto __pyx_L8_except_error;
2567  __pyx_L8_except_error:;
2568 
2569  /* "PyClical.pyx":98
2570  * self.instance = new IndexSet(<int>other)
2571  * elif isinstance(other, (set, frozenset)):
2572  * try: # <<<<<<<<<<<<<<
2573  * self.instance = new IndexSet()
2574  * for idx in other:
2575  */
2576  __Pyx_XGIVEREF(__pyx_t_8);
2577  __Pyx_XGIVEREF(__pyx_t_9);
2578  __Pyx_XGIVEREF(__pyx_t_10);
2579  __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
2580  goto __pyx_L1_error;
2581  __pyx_L13_try_end:;
2582  }
2583 
2584  /* "PyClical.pyx":97
2585  * elif isinstance(other, numbers.Integral):
2586  * self.instance = new IndexSet(<int>other)
2587  * elif isinstance(other, (set, frozenset)): # <<<<<<<<<<<<<<
2588  * try:
2589  * self.instance = new IndexSet()
2590  */
2591  goto __pyx_L3;
2592  }
2593 
2594  /* "PyClical.pyx":106
2595  * except (RuntimeError, TypeError):
2596  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2597  * elif isinstance(other, str): # <<<<<<<<<<<<<<
2598  * try:
2599  * self.instance = new IndexSet(<char *>other)
2600  */
2601  __pyx_t_2 = PyString_Check(__pyx_v_other);
2602  __pyx_t_1 = (__pyx_t_2 != 0);
2603  if (__pyx_t_1) {
2604 
2605  /* "PyClical.pyx":107
2606  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2607  * elif isinstance(other, str):
2608  * try: # <<<<<<<<<<<<<<
2609  * self.instance = new IndexSet(<char *>other)
2610  * except RuntimeError:
2611  */
2612  {
2613  __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
2614  __Pyx_XGOTREF(__pyx_t_10);
2615  __Pyx_XGOTREF(__pyx_t_9);
2616  __Pyx_XGOTREF(__pyx_t_8);
2617  /*try:*/ {
2618 
2619  /* "PyClical.pyx":108
2620  * elif isinstance(other, str):
2621  * try:
2622  * self.instance = new IndexSet(<char *>other) # <<<<<<<<<<<<<<
2623  * except RuntimeError:
2624  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
2625  */
2626  __pyx_t_17 = __Pyx_PyObject_AsString(__pyx_v_other); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
2627  try {
2628  __pyx_t_3 = new IndexSet(((char *)__pyx_t_17));
2629  } catch(...) {
2630  __Pyx_CppExn2PyErr();
2631  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
2632  }
2633  __pyx_v_self->instance = __pyx_t_3;
2634 
2635  /* "PyClical.pyx":107
2636  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2637  * elif isinstance(other, str):
2638  * try: # <<<<<<<<<<<<<<
2639  * self.instance = new IndexSet(<char *>other)
2640  * except RuntimeError:
2641  */
2642  }
2643  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
2644  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
2645  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
2646  goto __pyx_L27_try_end;
2647  __pyx_L20_error:;
2648  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
2649  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
2650  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
2651  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
2652  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
2653  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
2654 
2655  /* "PyClical.pyx":109
2656  * try:
2657  * self.instance = new IndexSet(<char *>other)
2658  * except RuntimeError: # <<<<<<<<<<<<<<
2659  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
2660  * else:
2661  */
2662  __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
2663  if (__pyx_t_6) {
2664  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
2665  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2666  __Pyx_GOTREF(__pyx_t_5);
2667  __Pyx_GOTREF(__pyx_t_4);
2668  __Pyx_GOTREF(__pyx_t_13);
2669 
2670  /* "PyClical.pyx":110
2671  * self.instance = new IndexSet(<char *>other)
2672  * except RuntimeError:
2673  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".") # <<<<<<<<<<<<<<
2674  * else:
2675  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
2676  */
2677  __pyx_t_16 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s_invalid_string); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2678  __Pyx_GOTREF(__pyx_t_16);
2679  __pyx_t_14 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2680  __Pyx_GOTREF(__pyx_t_14);
2681  __pyx_t_15 = PyNumber_Add(__pyx_t_16, __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2682  __Pyx_GOTREF(__pyx_t_15);
2683  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2684  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2685  __pyx_t_14 = PyNumber_Add(__pyx_t_15, __pyx_kp_s_); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2686  __Pyx_GOTREF(__pyx_t_14);
2687  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
2688  __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2689  __Pyx_GOTREF(__pyx_t_15);
2690  __Pyx_GIVEREF(__pyx_t_14);
2691  PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14);
2692  __pyx_t_14 = 0;
2693  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_15, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2694  __Pyx_GOTREF(__pyx_t_14);
2695  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
2696  __Pyx_Raise(__pyx_t_14, 0, 0, 0);
2697  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2698  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
2699  }
2700  goto __pyx_L22_except_error;
2701  __pyx_L22_except_error:;
2702 
2703  /* "PyClical.pyx":107
2704  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2705  * elif isinstance(other, str):
2706  * try: # <<<<<<<<<<<<<<
2707  * self.instance = new IndexSet(<char *>other)
2708  * except RuntimeError:
2709  */
2710  __Pyx_XGIVEREF(__pyx_t_10);
2711  __Pyx_XGIVEREF(__pyx_t_9);
2712  __Pyx_XGIVEREF(__pyx_t_8);
2713  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
2714  goto __pyx_L1_error;
2715  __pyx_L27_try_end:;
2716  }
2717 
2718  /* "PyClical.pyx":106
2719  * except (RuntimeError, TypeError):
2720  * raise ValueError(error_msg_prefix + " invalid " + repr(other) + ".")
2721  * elif isinstance(other, str): # <<<<<<<<<<<<<<
2722  * try:
2723  * self.instance = new IndexSet(<char *>other)
2724  */
2725  goto __pyx_L3;
2726  }
2727 
2728  /* "PyClical.pyx":112
2729  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
2730  * else:
2731  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".") # <<<<<<<<<<<<<<
2732  *
2733  * def __dealloc__(self):
2734  */
2735  /*else*/ {
2736  __pyx_t_13 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s__2); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2737  __Pyx_GOTREF(__pyx_t_13);
2738  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2739  __Pyx_GOTREF(__pyx_t_4);
2740  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_other)));
2741  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_other)));
2742  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_other)));
2743  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2744  __Pyx_GOTREF(__pyx_t_5);
2745  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2746  __pyx_t_4 = PyNumber_Add(__pyx_t_13, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2747  __Pyx_GOTREF(__pyx_t_4);
2748  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
2749  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2750  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_kp_s_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2751  __Pyx_GOTREF(__pyx_t_5);
2752  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2753  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2754  __Pyx_GOTREF(__pyx_t_4);
2755  __Pyx_GIVEREF(__pyx_t_5);
2756  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
2757  __pyx_t_5 = 0;
2758  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2759  __Pyx_GOTREF(__pyx_t_5);
2760  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2761  __Pyx_Raise(__pyx_t_5, 0, 0, 0);
2762  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2763  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2764  }
2765  __pyx_L3:;
2766 
2767  /* "PyClical.pyx":73
2768  * return index_set(self)
2769  *
2770  * def __cinit__(self, other = 0): # <<<<<<<<<<<<<<
2771  * """
2772  * Construct an object of type index_set.
2773  */
2774 
2775  /* function exit code */
2776  __pyx_r = 0;
2777  goto __pyx_L0;
2778  __pyx_L1_error:;
2779  __Pyx_XDECREF(__pyx_t_4);
2780  __Pyx_XDECREF(__pyx_t_5);
2781  __Pyx_XDECREF(__pyx_t_13);
2782  __Pyx_XDECREF(__pyx_t_14);
2783  __Pyx_XDECREF(__pyx_t_15);
2784  __Pyx_XDECREF(__pyx_t_16);
2785  __Pyx_AddTraceback("PyClical.index_set.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
2786  __pyx_r = -1;
2787  __pyx_L0:;
2788  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
2789  __Pyx_XDECREF(__pyx_v_idx);
2790  __Pyx_RefNannyFinishContext();
2791  return __pyx_r;
2792 }
2793 
2794 /* "PyClical.pyx":114
2795  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
2796  *
2797  * def __dealloc__(self): # <<<<<<<<<<<<<<
2798  * """
2799  * Clean up by deallocating the instance of C++ class IndexSet.
2800  */
2801 
2802 /* Python wrapper */
2803 static void __pyx_pw_8PyClical_9index_set_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
2804 static void __pyx_pw_8PyClical_9index_set_5__dealloc__(PyObject *__pyx_v_self) {
2805  __Pyx_RefNannyDeclarations
2806  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
2807  __pyx_pf_8PyClical_9index_set_4__dealloc__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
2808 
2809  /* function exit code */
2810  __Pyx_RefNannyFinishContext();
2811 }
2812 
2813 static void __pyx_pf_8PyClical_9index_set_4__dealloc__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
2814  __Pyx_RefNannyDeclarations
2815  __Pyx_RefNannySetupContext("__dealloc__", 0);
2816 
2817  /* "PyClical.pyx":118
2818  * Clean up by deallocating the instance of C++ class IndexSet.
2819  * """
2820  * del self.instance # <<<<<<<<<<<<<<
2821  *
2822  * def __richcmp__(lhs, rhs, int op):
2823  */
2824  delete __pyx_v_self->instance;
2825 
2826  /* "PyClical.pyx":114
2827  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
2828  *
2829  * def __dealloc__(self): # <<<<<<<<<<<<<<
2830  * """
2831  * Clean up by deallocating the instance of C++ class IndexSet.
2832  */
2833 
2834  /* function exit code */
2835  __Pyx_RefNannyFinishContext();
2836 }
2837 
2838 /* "PyClical.pyx":120
2839  * del self.instance
2840  *
2841  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
2842  * """
2843  * Compare two objects of class index_set.
2844  */
2845 
2846 /* Python wrapper */
2847 static PyObject *__pyx_pw_8PyClical_9index_set_7__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /*proto*/
2848 static PyObject *__pyx_pw_8PyClical_9index_set_7__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
2849  PyObject *__pyx_r = 0;
2850  __Pyx_RefNannyDeclarations
2851  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
2852  __pyx_r = __pyx_pf_8PyClical_9index_set_6__richcmp__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs), ((int)__pyx_v_op));
2853 
2854  /* function exit code */
2855  __Pyx_RefNannyFinishContext();
2856  return __pyx_r;
2857 }
2858 
2859 static PyObject *__pyx_pf_8PyClical_9index_set_6__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
2860  PyObject *__pyx_v_eq = NULL;
2861  PyObject *__pyx_v_lt = NULL;
2862  PyObject *__pyx_r = NULL;
2863  __Pyx_RefNannyDeclarations
2864  int __pyx_t_1;
2865  int __pyx_t_2;
2866  int __pyx_t_3;
2867  PyObject *__pyx_t_4 = NULL;
2868  int __pyx_lineno = 0;
2869  const char *__pyx_filename = NULL;
2870  int __pyx_clineno = 0;
2871  __Pyx_RefNannySetupContext("__richcmp__", 0);
2872 
2873  /* "PyClical.pyx":141
2874  * False
2875  * """
2876  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
2877  * eq = bool(lhs is rhs)
2878  * if op == 2: # ==
2879  */
2880  __pyx_t_2 = (__pyx_v_lhs == Py_None);
2881  __pyx_t_3 = (__pyx_t_2 != 0);
2882  if (!__pyx_t_3) {
2883  } else {
2884  __pyx_t_1 = __pyx_t_3;
2885  goto __pyx_L4_bool_binop_done;
2886  }
2887  __pyx_t_3 = (__pyx_v_rhs == Py_None);
2888  __pyx_t_2 = (__pyx_t_3 != 0);
2889  __pyx_t_1 = __pyx_t_2;
2890  __pyx_L4_bool_binop_done:;
2891  if (__pyx_t_1) {
2892 
2893  /* "PyClical.pyx":142
2894  * """
2895  * if (lhs is None) or (rhs is None):
2896  * eq = bool(lhs is rhs) # <<<<<<<<<<<<<<
2897  * if op == 2: # ==
2898  * return eq
2899  */
2900  __pyx_t_1 = (__pyx_v_lhs == __pyx_v_rhs);
2901  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2902  __Pyx_GOTREF(__pyx_t_4);
2903  __pyx_v_eq = __pyx_t_4;
2904  __pyx_t_4 = 0;
2905 
2906  /* "PyClical.pyx":143
2907  * if (lhs is None) or (rhs is None):
2908  * eq = bool(lhs is rhs)
2909  * if op == 2: # == # <<<<<<<<<<<<<<
2910  * return eq
2911  * elif op == 3: # !=
2912  */
2913  switch (__pyx_v_op) {
2914  case 2:
2915 
2916  /* "PyClical.pyx":144
2917  * eq = bool(lhs is rhs)
2918  * if op == 2: # ==
2919  * return eq # <<<<<<<<<<<<<<
2920  * elif op == 3: # !=
2921  * return not eq
2922  */
2923  __Pyx_XDECREF(__pyx_r);
2924  __Pyx_INCREF(__pyx_v_eq);
2925  __pyx_r = __pyx_v_eq;
2926  goto __pyx_L0;
2927 
2928  /* "PyClical.pyx":143
2929  * if (lhs is None) or (rhs is None):
2930  * eq = bool(lhs is rhs)
2931  * if op == 2: # == # <<<<<<<<<<<<<<
2932  * return eq
2933  * elif op == 3: # !=
2934  */
2935  break;
2936 
2937  /* "PyClical.pyx":145
2938  * if op == 2: # ==
2939  * return eq
2940  * elif op == 3: # != # <<<<<<<<<<<<<<
2941  * return not eq
2942  * else:
2943  */
2944  case 3:
2945 
2946  /* "PyClical.pyx":146
2947  * return eq
2948  * elif op == 3: # !=
2949  * return not eq # <<<<<<<<<<<<<<
2950  * else:
2951  * if op == 0: # <
2952  */
2953  __Pyx_XDECREF(__pyx_r);
2954  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_eq); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2955  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2956  __Pyx_GOTREF(__pyx_t_4);
2957  __pyx_r = __pyx_t_4;
2958  __pyx_t_4 = 0;
2959  goto __pyx_L0;
2960 
2961  /* "PyClical.pyx":145
2962  * if op == 2: # ==
2963  * return eq
2964  * elif op == 3: # != # <<<<<<<<<<<<<<
2965  * return not eq
2966  * else:
2967  */
2968  break;
2969  default:
2970 
2971  /* "PyClical.pyx":148
2972  * return not eq
2973  * else:
2974  * if op == 0: # < # <<<<<<<<<<<<<<
2975  * return False
2976  * elif op == 1: # <=
2977  */
2978  __pyx_t_1 = ((__pyx_v_op == 0) != 0);
2979  if (__pyx_t_1) {
2980 
2981  /* "PyClical.pyx":149
2982  * else:
2983  * if op == 0: # <
2984  * return False # <<<<<<<<<<<<<<
2985  * elif op == 1: # <=
2986  * return eq
2987  */
2988  __Pyx_XDECREF(__pyx_r);
2989  __Pyx_INCREF(Py_False);
2990  __pyx_r = Py_False;
2991  goto __pyx_L0;
2992 
2993  /* "PyClical.pyx":148
2994  * return not eq
2995  * else:
2996  * if op == 0: # < # <<<<<<<<<<<<<<
2997  * return False
2998  * elif op == 1: # <=
2999  */
3000  }
3001 
3002  /* "PyClical.pyx":150
3003  * if op == 0: # <
3004  * return False
3005  * elif op == 1: # <= # <<<<<<<<<<<<<<
3006  * return eq
3007  * elif op == 4: # >
3008  */
3009  __pyx_t_1 = ((__pyx_v_op == 1) != 0);
3010  if (__pyx_t_1) {
3011 
3012  /* "PyClical.pyx":151
3013  * return False
3014  * elif op == 1: # <=
3015  * return eq # <<<<<<<<<<<<<<
3016  * elif op == 4: # >
3017  * return False
3018  */
3019  __Pyx_XDECREF(__pyx_r);
3020  __Pyx_INCREF(__pyx_v_eq);
3021  __pyx_r = __pyx_v_eq;
3022  goto __pyx_L0;
3023 
3024  /* "PyClical.pyx":150
3025  * if op == 0: # <
3026  * return False
3027  * elif op == 1: # <= # <<<<<<<<<<<<<<
3028  * return eq
3029  * elif op == 4: # >
3030  */
3031  }
3032 
3033  /* "PyClical.pyx":152
3034  * elif op == 1: # <=
3035  * return eq
3036  * elif op == 4: # > # <<<<<<<<<<<<<<
3037  * return False
3038  * elif op == 5: # >=
3039  */
3040  __pyx_t_1 = ((__pyx_v_op == 4) != 0);
3041  if (__pyx_t_1) {
3042 
3043  /* "PyClical.pyx":153
3044  * return eq
3045  * elif op == 4: # >
3046  * return False # <<<<<<<<<<<<<<
3047  * elif op == 5: # >=
3048  * return eq
3049  */
3050  __Pyx_XDECREF(__pyx_r);
3051  __Pyx_INCREF(Py_False);
3052  __pyx_r = Py_False;
3053  goto __pyx_L0;
3054 
3055  /* "PyClical.pyx":152
3056  * elif op == 1: # <=
3057  * return eq
3058  * elif op == 4: # > # <<<<<<<<<<<<<<
3059  * return False
3060  * elif op == 5: # >=
3061  */
3062  }
3063 
3064  /* "PyClical.pyx":154
3065  * elif op == 4: # >
3066  * return False
3067  * elif op == 5: # >= # <<<<<<<<<<<<<<
3068  * return eq
3069  * else:
3070  */
3071  __pyx_t_1 = ((__pyx_v_op == 5) != 0);
3072  if (__pyx_t_1) {
3073 
3074  /* "PyClical.pyx":155
3075  * return False
3076  * elif op == 5: # >=
3077  * return eq # <<<<<<<<<<<<<<
3078  * else:
3079  * return NotImplemented
3080  */
3081  __Pyx_XDECREF(__pyx_r);
3082  __Pyx_INCREF(__pyx_v_eq);
3083  __pyx_r = __pyx_v_eq;
3084  goto __pyx_L0;
3085 
3086  /* "PyClical.pyx":154
3087  * elif op == 4: # >
3088  * return False
3089  * elif op == 5: # >= # <<<<<<<<<<<<<<
3090  * return eq
3091  * else:
3092  */
3093  }
3094 
3095  /* "PyClical.pyx":157
3096  * return eq
3097  * else:
3098  * return NotImplemented # <<<<<<<<<<<<<<
3099  * else:
3100  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
3101  */
3102  /*else*/ {
3103  __Pyx_XDECREF(__pyx_r);
3104  __Pyx_INCREF(__pyx_builtin_NotImplemented);
3105  __pyx_r = __pyx_builtin_NotImplemented;
3106  goto __pyx_L0;
3107  }
3108  break;
3109  }
3110 
3111  /* "PyClical.pyx":141
3112  * False
3113  * """
3114  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
3115  * eq = bool(lhs is rhs)
3116  * if op == 2: # ==
3117  */
3118  }
3119 
3120  /* "PyClical.pyx":159
3121  * return NotImplemented
3122  * else:
3123  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) ) # <<<<<<<<<<<<<<
3124  * if op == 2: # ==
3125  * return eq
3126  */
3127  /*else*/ {
3128  __pyx_t_1 = (__pyx_f_8PyClical_toIndexSet(__pyx_v_lhs) == __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs));
3129  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3130  __Pyx_GOTREF(__pyx_t_4);
3131  __pyx_v_eq = __pyx_t_4;
3132  __pyx_t_4 = 0;
3133 
3134  /* "PyClical.pyx":160
3135  * else:
3136  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
3137  * if op == 2: # == # <<<<<<<<<<<<<<
3138  * return eq
3139  * elif op == 3: # !=
3140  */
3141  switch (__pyx_v_op) {
3142  case 2:
3143 
3144  /* "PyClical.pyx":161
3145  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
3146  * if op == 2: # ==
3147  * return eq # <<<<<<<<<<<<<<
3148  * elif op == 3: # !=
3149  * return not eq
3150  */
3151  __Pyx_XDECREF(__pyx_r);
3152  __Pyx_INCREF(__pyx_v_eq);
3153  __pyx_r = __pyx_v_eq;
3154  goto __pyx_L0;
3155 
3156  /* "PyClical.pyx":160
3157  * else:
3158  * eq = bool( toIndexSet(lhs) == toIndexSet(rhs) )
3159  * if op == 2: # == # <<<<<<<<<<<<<<
3160  * return eq
3161  * elif op == 3: # !=
3162  */
3163  break;
3164 
3165  /* "PyClical.pyx":162
3166  * if op == 2: # ==
3167  * return eq
3168  * elif op == 3: # != # <<<<<<<<<<<<<<
3169  * return not eq
3170  * else:
3171  */
3172  case 3:
3173 
3174  /* "PyClical.pyx":163
3175  * return eq
3176  * elif op == 3: # !=
3177  * return not eq # <<<<<<<<<<<<<<
3178  * else:
3179  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
3180  */
3181  __Pyx_XDECREF(__pyx_r);
3182  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_eq); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3183  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3184  __Pyx_GOTREF(__pyx_t_4);
3185  __pyx_r = __pyx_t_4;
3186  __pyx_t_4 = 0;
3187  goto __pyx_L0;
3188 
3189  /* "PyClical.pyx":162
3190  * if op == 2: # ==
3191  * return eq
3192  * elif op == 3: # != # <<<<<<<<<<<<<<
3193  * return not eq
3194  * else:
3195  */
3196  break;
3197  default:
3198 
3199  /* "PyClical.pyx":165
3200  * return not eq
3201  * else:
3202  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) ) # <<<<<<<<<<<<<<
3203  * if op == 0: # <
3204  * return lt
3205  */
3206  __pyx_t_1 = (__pyx_f_8PyClical_toIndexSet(__pyx_v_lhs) < __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs));
3207  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3208  __Pyx_GOTREF(__pyx_t_4);
3209  __pyx_v_lt = __pyx_t_4;
3210  __pyx_t_4 = 0;
3211 
3212  /* "PyClical.pyx":166
3213  * else:
3214  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
3215  * if op == 0: # < # <<<<<<<<<<<<<<
3216  * return lt
3217  * elif op == 1: # <=
3218  */
3219  __pyx_t_1 = ((__pyx_v_op == 0) != 0);
3220  if (__pyx_t_1) {
3221 
3222  /* "PyClical.pyx":167
3223  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
3224  * if op == 0: # <
3225  * return lt # <<<<<<<<<<<<<<
3226  * elif op == 1: # <=
3227  * return lt or eq
3228  */
3229  __Pyx_XDECREF(__pyx_r);
3230  __Pyx_INCREF(__pyx_v_lt);
3231  __pyx_r = __pyx_v_lt;
3232  goto __pyx_L0;
3233 
3234  /* "PyClical.pyx":166
3235  * else:
3236  * lt = bool( toIndexSet(lhs) < toIndexSet(rhs) )
3237  * if op == 0: # < # <<<<<<<<<<<<<<
3238  * return lt
3239  * elif op == 1: # <=
3240  */
3241  }
3242 
3243  /* "PyClical.pyx":168
3244  * if op == 0: # <
3245  * return lt
3246  * elif op == 1: # <= # <<<<<<<<<<<<<<
3247  * return lt or eq
3248  * elif op == 4: # >
3249  */
3250  __pyx_t_1 = ((__pyx_v_op == 1) != 0);
3251  if (__pyx_t_1) {
3252 
3253  /* "PyClical.pyx":169
3254  * return lt
3255  * elif op == 1: # <=
3256  * return lt or eq # <<<<<<<<<<<<<<
3257  * elif op == 4: # >
3258  * return not (lt or eq)
3259  */
3260  __Pyx_XDECREF(__pyx_r);
3261  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_lt); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3262  if (!__pyx_t_1) {
3263  } else {
3264  __Pyx_INCREF(__pyx_v_lt);
3265  __pyx_t_4 = __pyx_v_lt;
3266  goto __pyx_L8_bool_binop_done;
3267  }
3268  __Pyx_INCREF(__pyx_v_eq);
3269  __pyx_t_4 = __pyx_v_eq;
3270  __pyx_L8_bool_binop_done:;
3271  __pyx_r = __pyx_t_4;
3272  __pyx_t_4 = 0;
3273  goto __pyx_L0;
3274 
3275  /* "PyClical.pyx":168
3276  * if op == 0: # <
3277  * return lt
3278  * elif op == 1: # <= # <<<<<<<<<<<<<<
3279  * return lt or eq
3280  * elif op == 4: # >
3281  */
3282  }
3283 
3284  /* "PyClical.pyx":170
3285  * elif op == 1: # <=
3286  * return lt or eq
3287  * elif op == 4: # > # <<<<<<<<<<<<<<
3288  * return not (lt or eq)
3289  * elif op == 5: # >=
3290  */
3291  __pyx_t_1 = ((__pyx_v_op == 4) != 0);
3292  if (__pyx_t_1) {
3293 
3294  /* "PyClical.pyx":171
3295  * return lt or eq
3296  * elif op == 4: # >
3297  * return not (lt or eq) # <<<<<<<<<<<<<<
3298  * elif op == 5: # >=
3299  * return not lt
3300  */
3301  __Pyx_XDECREF(__pyx_r);
3302  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_lt); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3303  if (!__pyx_t_2) {
3304  } else {
3305  __pyx_t_1 = __pyx_t_2;
3306  goto __pyx_L10_bool_binop_done;
3307  }
3308  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_eq); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3309  __pyx_t_1 = __pyx_t_2;
3310  __pyx_L10_bool_binop_done:;
3311  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3312  __Pyx_GOTREF(__pyx_t_4);
3313  __pyx_r = __pyx_t_4;
3314  __pyx_t_4 = 0;
3315  goto __pyx_L0;
3316 
3317  /* "PyClical.pyx":170
3318  * elif op == 1: # <=
3319  * return lt or eq
3320  * elif op == 4: # > # <<<<<<<<<<<<<<
3321  * return not (lt or eq)
3322  * elif op == 5: # >=
3323  */
3324  }
3325 
3326  /* "PyClical.pyx":172
3327  * elif op == 4: # >
3328  * return not (lt or eq)
3329  * elif op == 5: # >= # <<<<<<<<<<<<<<
3330  * return not lt
3331  * else:
3332  */
3333  __pyx_t_1 = ((__pyx_v_op == 5) != 0);
3334  if (__pyx_t_1) {
3335 
3336  /* "PyClical.pyx":173
3337  * return not (lt or eq)
3338  * elif op == 5: # >=
3339  * return not lt # <<<<<<<<<<<<<<
3340  * else:
3341  * return NotImplemented
3342  */
3343  __Pyx_XDECREF(__pyx_r);
3344  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_lt); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3345  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3346  __Pyx_GOTREF(__pyx_t_4);
3347  __pyx_r = __pyx_t_4;
3348  __pyx_t_4 = 0;
3349  goto __pyx_L0;
3350 
3351  /* "PyClical.pyx":172
3352  * elif op == 4: # >
3353  * return not (lt or eq)
3354  * elif op == 5: # >= # <<<<<<<<<<<<<<
3355  * return not lt
3356  * else:
3357  */
3358  }
3359 
3360  /* "PyClical.pyx":175
3361  * return not lt
3362  * else:
3363  * return NotImplemented # <<<<<<<<<<<<<<
3364  *
3365  * def __setitem__(self, idx, val):
3366  */
3367  /*else*/ {
3368  __Pyx_XDECREF(__pyx_r);
3369  __Pyx_INCREF(__pyx_builtin_NotImplemented);
3370  __pyx_r = __pyx_builtin_NotImplemented;
3371  goto __pyx_L0;
3372  }
3373  break;
3374  }
3375  }
3376 
3377  /* "PyClical.pyx":120
3378  * del self.instance
3379  *
3380  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
3381  * """
3382  * Compare two objects of class index_set.
3383  */
3384 
3385  /* function exit code */
3386  __pyx_L1_error:;
3387  __Pyx_XDECREF(__pyx_t_4);
3388  __Pyx_AddTraceback("PyClical.index_set.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3389  __pyx_r = NULL;
3390  __pyx_L0:;
3391  __Pyx_XDECREF(__pyx_v_eq);
3392  __Pyx_XDECREF(__pyx_v_lt);
3393  __Pyx_XGIVEREF(__pyx_r);
3394  __Pyx_RefNannyFinishContext();
3395  return __pyx_r;
3396 }
3397 
3398 /* "PyClical.pyx":177
3399  * return NotImplemented
3400  *
3401  * def __setitem__(self, idx, val): # <<<<<<<<<<<<<<
3402  * """
3403  * Set the value of an index_set object at index idx to value val.
3404  */
3405 
3406 /* Python wrapper */
3407 static int __pyx_pw_8PyClical_9index_set_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_val); /*proto*/
3408 static char __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 ";
3409 #if CYTHON_COMPILING_IN_CPYTHON
3410 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_8__setitem__;
3411 #endif
3412 static int __pyx_pw_8PyClical_9index_set_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_val) {
3413  int __pyx_r;
3414  __Pyx_RefNannyDeclarations
3415  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
3416  __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));
3417 
3418  /* function exit code */
3419  __Pyx_RefNannyFinishContext();
3420  return __pyx_r;
3421 }
3422 
3423 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) {
3424  int __pyx_r;
3425  __Pyx_RefNannyDeclarations
3426  int __pyx_t_1;
3427  int __pyx_t_2;
3428  int __pyx_lineno = 0;
3429  const char *__pyx_filename = NULL;
3430  int __pyx_clineno = 0;
3431  __Pyx_RefNannySetupContext("__setitem__", 0);
3432 
3433  /* "PyClical.pyx":186
3434  * {2}
3435  * """
3436  * self.instance.set(idx, val) # <<<<<<<<<<<<<<
3437  * return
3438  *
3439  */
3440  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_idx); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3441  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_val); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3442  try {
3443  __pyx_v_self->instance->set(__pyx_t_1, __pyx_t_2);
3444  } catch(...) {
3445  __Pyx_CppExn2PyErr();
3446  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3447  }
3448 
3449  /* "PyClical.pyx":187
3450  * """
3451  * self.instance.set(idx, val)
3452  * return # <<<<<<<<<<<<<<
3453  *
3454  * def __getitem__(self, idx):
3455  */
3456  __pyx_r = 0;
3457  goto __pyx_L0;
3458 
3459  /* "PyClical.pyx":177
3460  * return NotImplemented
3461  *
3462  * def __setitem__(self, idx, val): # <<<<<<<<<<<<<<
3463  * """
3464  * Set the value of an index_set object at index idx to value val.
3465  */
3466 
3467  /* function exit code */
3468  __pyx_L1_error:;
3469  __Pyx_AddTraceback("PyClical.index_set.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3470  __pyx_r = -1;
3471  __pyx_L0:;
3472  __Pyx_RefNannyFinishContext();
3473  return __pyx_r;
3474 }
3475 
3476 /* "PyClical.pyx":189
3477  * return
3478  *
3479  * def __getitem__(self, idx): # <<<<<<<<<<<<<<
3480  * """
3481  * Get the value of an index_set object at an index.
3482  */
3483 
3484 /* Python wrapper */
3485 static PyObject *__pyx_pw_8PyClical_9index_set_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx); /*proto*/
3486 static char __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 ";
3487 #if CYTHON_COMPILING_IN_CPYTHON
3488 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_10__getitem__;
3489 #endif
3490 static PyObject *__pyx_pw_8PyClical_9index_set_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx) {
3491  PyObject *__pyx_r = 0;
3492  __Pyx_RefNannyDeclarations
3493  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
3494  __pyx_r = __pyx_pf_8PyClical_9index_set_10__getitem__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_idx));
3495 
3496  /* function exit code */
3497  __Pyx_RefNannyFinishContext();
3498  return __pyx_r;
3499 }
3500 
3501 static PyObject *__pyx_pf_8PyClical_9index_set_10__getitem__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx) {
3502  PyObject *__pyx_r = NULL;
3503  __Pyx_RefNannyDeclarations
3504  int __pyx_t_1;
3505  PyObject *__pyx_t_2 = NULL;
3506  int __pyx_lineno = 0;
3507  const char *__pyx_filename = NULL;
3508  int __pyx_clineno = 0;
3509  __Pyx_RefNannySetupContext("__getitem__", 0);
3510 
3511  /* "PyClical.pyx":206
3512  * False
3513  * """
3514  * return self.instance.getitem(idx) # <<<<<<<<<<<<<<
3515  *
3516  * def __contains__(self, idx):
3517  */
3518  __Pyx_XDECREF(__pyx_r);
3519  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_idx); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3520  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->instance->operator[](__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3521  __Pyx_GOTREF(__pyx_t_2);
3522  __pyx_r = __pyx_t_2;
3523  __pyx_t_2 = 0;
3524  goto __pyx_L0;
3525 
3526  /* "PyClical.pyx":189
3527  * return
3528  *
3529  * def __getitem__(self, idx): # <<<<<<<<<<<<<<
3530  * """
3531  * Get the value of an index_set object at an index.
3532  */
3533 
3534  /* function exit code */
3535  __pyx_L1_error:;
3536  __Pyx_XDECREF(__pyx_t_2);
3537  __Pyx_AddTraceback("PyClical.index_set.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3538  __pyx_r = NULL;
3539  __pyx_L0:;
3540  __Pyx_XGIVEREF(__pyx_r);
3541  __Pyx_RefNannyFinishContext();
3542  return __pyx_r;
3543 }
3544 
3545 /* "PyClical.pyx":208
3546  * return self.instance.getitem(idx)
3547  *
3548  * def __contains__(self, idx): # <<<<<<<<<<<<<<
3549  * """
3550  * Check that an index_set object contains the index idx: idx in self.
3551  */
3552 
3553 /* Python wrapper */
3554 static int __pyx_pw_8PyClical_9index_set_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx); /*proto*/
3555 static char __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 ";
3556 #if CYTHON_COMPILING_IN_CPYTHON
3557 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_12__contains__;
3558 #endif
3559 static int __pyx_pw_8PyClical_9index_set_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_idx) {
3560  int __pyx_r;
3561  __Pyx_RefNannyDeclarations
3562  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
3563  __pyx_r = __pyx_pf_8PyClical_9index_set_12__contains__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_idx));
3564 
3565  /* function exit code */
3566  __Pyx_RefNannyFinishContext();
3567  return __pyx_r;
3568 }
3569 
3570 static int __pyx_pf_8PyClical_9index_set_12__contains__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_idx) {
3571  int __pyx_r;
3572  __Pyx_RefNannyDeclarations
3573  int __pyx_t_1;
3574  int __pyx_lineno = 0;
3575  const char *__pyx_filename = NULL;
3576  int __pyx_clineno = 0;
3577  __Pyx_RefNannySetupContext("__contains__", 0);
3578 
3579  /* "PyClical.pyx":225
3580  * False
3581  * """
3582  * return self.instance.getitem(idx) # <<<<<<<<<<<<<<
3583  *
3584  * def __iter__(self):
3585  */
3586  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_idx); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3587  __pyx_r = __pyx_v_self->instance->operator[](__pyx_t_1);
3588  goto __pyx_L0;
3589 
3590  /* "PyClical.pyx":208
3591  * return self.instance.getitem(idx)
3592  *
3593  * def __contains__(self, idx): # <<<<<<<<<<<<<<
3594  * """
3595  * Check that an index_set object contains the index idx: idx in self.
3596  */
3597 
3598  /* function exit code */
3599  __pyx_L1_error:;
3600  __Pyx_AddTraceback("PyClical.index_set.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3601  __pyx_r = -1;
3602  __pyx_L0:;
3603  __Pyx_RefNannyFinishContext();
3604  return __pyx_r;
3605 }
3606 static PyObject *__pyx_gb_8PyClical_9index_set_16generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
3607 
3608 /* "PyClical.pyx":227
3609  * return self.instance.getitem(idx)
3610  *
3611  * def __iter__(self): # <<<<<<<<<<<<<<
3612  * """
3613  * Iterate over the indices of an index_set.
3614  */
3615 
3616 /* Python wrapper */
3617 static PyObject *__pyx_pw_8PyClical_9index_set_15__iter__(PyObject *__pyx_v_self); /*proto*/
3618 static char __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,\n -3 4 7\n ";
3619 #if CYTHON_COMPILING_IN_CPYTHON
3620 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_14__iter__;
3621 #endif
3622 static PyObject *__pyx_pw_8PyClical_9index_set_15__iter__(PyObject *__pyx_v_self) {
3623  PyObject *__pyx_r = 0;
3624  __Pyx_RefNannyDeclarations
3625  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
3626  __pyx_r = __pyx_pf_8PyClical_9index_set_14__iter__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
3627 
3628  /* function exit code */
3629  __Pyx_RefNannyFinishContext();
3630  return __pyx_r;
3631 }
3632 
3633 static PyObject *__pyx_pf_8PyClical_9index_set_14__iter__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
3634  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *__pyx_cur_scope;
3635  PyObject *__pyx_r = NULL;
3636  __Pyx_RefNannyDeclarations
3637  int __pyx_lineno = 0;
3638  const char *__pyx_filename = NULL;
3639  int __pyx_clineno = 0;
3640  __Pyx_RefNannySetupContext("__iter__", 0);
3641  __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);
3642  if (unlikely(!__pyx_cur_scope)) {
3643  __Pyx_RefNannyFinishContext();
3644  return NULL;
3645  }
3646  __Pyx_GOTREF(__pyx_cur_scope);
3647  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
3648  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
3649  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
3650  {
3651  __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_8PyClical_9index_set_16generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_index_set___iter); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3652  __Pyx_DECREF(__pyx_cur_scope);
3653  __Pyx_RefNannyFinishContext();
3654  return (PyObject *) gen;
3655  }
3656 
3657  /* function exit code */
3658  __pyx_L1_error:;
3659  __Pyx_AddTraceback("PyClical.index_set.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3660  __pyx_r = NULL;
3661  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
3662  __Pyx_XGIVEREF(__pyx_r);
3663  __Pyx_RefNannyFinishContext();
3664  return __pyx_r;
3665 }
3666 
3667 static PyObject *__pyx_gb_8PyClical_9index_set_16generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
3668 {
3669  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)__pyx_generator->closure);
3670  PyObject *__pyx_r = NULL;
3671  PyObject *__pyx_t_1 = NULL;
3672  PyObject *__pyx_t_2 = NULL;
3673  PyObject *__pyx_t_3 = NULL;
3674  PyObject *__pyx_t_4 = NULL;
3675  Py_ssize_t __pyx_t_5;
3676  PyObject *(*__pyx_t_6)(PyObject *);
3677  int __pyx_t_7;
3678  int __pyx_t_8;
3679  int __pyx_lineno = 0;
3680  const char *__pyx_filename = NULL;
3681  int __pyx_clineno = 0;
3682  __Pyx_RefNannyDeclarations
3683  __Pyx_RefNannySetupContext("None", 0);
3684  switch (__pyx_generator->resume_label) {
3685  case 0: goto __pyx_L3_first_run;
3686  case 1: goto __pyx_L7_resume_from_yield;
3687  default: /* CPython raises the right error here */
3688  __Pyx_RefNannyFinishContext();
3689  return NULL;
3690  }
3691  __pyx_L3_first_run:;
3692  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3693 
3694  /* "PyClical.pyx":234
3695  * -3 4 7
3696  * """
3697  * for idx in range(self.min(), self.max()+1): # <<<<<<<<<<<<<<
3698  * if idx in self:
3699  * yield idx
3700  */
3701  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3702  __Pyx_GOTREF(__pyx_t_2);
3703  __pyx_t_3 = NULL;
3704  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
3705  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
3706  if (likely(__pyx_t_3)) {
3707  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
3708  __Pyx_INCREF(__pyx_t_3);
3709  __Pyx_INCREF(function);
3710  __Pyx_DECREF_SET(__pyx_t_2, function);
3711  }
3712  }
3713  if (__pyx_t_3) {
3714  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3715  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3716  } else {
3717  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3718  }
3719  __Pyx_GOTREF(__pyx_t_1);
3720  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3721  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_max); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3722  __Pyx_GOTREF(__pyx_t_3);
3723  __pyx_t_4 = NULL;
3724  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
3725  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
3726  if (likely(__pyx_t_4)) {
3727  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
3728  __Pyx_INCREF(__pyx_t_4);
3729  __Pyx_INCREF(function);
3730  __Pyx_DECREF_SET(__pyx_t_3, function);
3731  }
3732  }
3733  if (__pyx_t_4) {
3734  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3735  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3736  } else {
3737  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3738  }
3739  __Pyx_GOTREF(__pyx_t_2);
3740  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3741  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3742  __Pyx_GOTREF(__pyx_t_3);
3743  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3744  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3745  __Pyx_GOTREF(__pyx_t_2);
3746  __Pyx_GIVEREF(__pyx_t_1);
3747  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
3748  __Pyx_GIVEREF(__pyx_t_3);
3749  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
3750  __pyx_t_1 = 0;
3751  __pyx_t_3 = 0;
3752  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3753  __Pyx_GOTREF(__pyx_t_3);
3754  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3755  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
3756  __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
3757  __pyx_t_6 = NULL;
3758  } else {
3759  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3760  __Pyx_GOTREF(__pyx_t_2);
3761  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3762  }
3763  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3764  for (;;) {
3765  if (likely(!__pyx_t_6)) {
3766  if (likely(PyList_CheckExact(__pyx_t_2))) {
3767  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
3768  #if CYTHON_COMPILING_IN_CPYTHON
3769  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3770  #else
3771  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3772  __Pyx_GOTREF(__pyx_t_3);
3773  #endif
3774  } else {
3775  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
3776  #if CYTHON_COMPILING_IN_CPYTHON
3777  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3778  #else
3779  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3780  __Pyx_GOTREF(__pyx_t_3);
3781  #endif
3782  }
3783  } else {
3784  __pyx_t_3 = __pyx_t_6(__pyx_t_2);
3785  if (unlikely(!__pyx_t_3)) {
3786  PyObject* exc_type = PyErr_Occurred();
3787  if (exc_type) {
3788  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
3789  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3790  }
3791  break;
3792  }
3793  __Pyx_GOTREF(__pyx_t_3);
3794  }
3795  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_idx);
3796  __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_idx, __pyx_t_3);
3797  __Pyx_GIVEREF(__pyx_t_3);
3798  __pyx_t_3 = 0;
3799 
3800  /* "PyClical.pyx":235
3801  * """
3802  * for idx in range(self.min(), self.max()+1):
3803  * if idx in self: # <<<<<<<<<<<<<<
3804  * yield idx
3805  *
3806  */
3807  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_cur_scope->__pyx_v_idx, ((PyObject *)__pyx_cur_scope->__pyx_v_self), Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3808  __pyx_t_8 = (__pyx_t_7 != 0);
3809  if (__pyx_t_8) {
3810 
3811  /* "PyClical.pyx":236
3812  * for idx in range(self.min(), self.max()+1):
3813  * if idx in self:
3814  * yield idx # <<<<<<<<<<<<<<
3815  *
3816  * def __invert__(self):
3817  */
3818  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_idx);
3819  __pyx_r = __pyx_cur_scope->__pyx_v_idx;
3820  __Pyx_XGIVEREF(__pyx_t_2);
3821  __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
3822  __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
3823  __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
3824  __Pyx_XGIVEREF(__pyx_r);
3825  __Pyx_RefNannyFinishContext();
3826  /* return from generator, yielding value */
3827  __pyx_generator->resume_label = 1;
3828  return __pyx_r;
3829  __pyx_L7_resume_from_yield:;
3830  __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
3831  __pyx_cur_scope->__pyx_t_0 = 0;
3832  __Pyx_XGOTREF(__pyx_t_2);
3833  __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
3834  __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
3835  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3836 
3837  /* "PyClical.pyx":235
3838  * """
3839  * for idx in range(self.min(), self.max()+1):
3840  * if idx in self: # <<<<<<<<<<<<<<
3841  * yield idx
3842  *
3843  */
3844  }
3845 
3846  /* "PyClical.pyx":234
3847  * -3 4 7
3848  * """
3849  * for idx in range(self.min(), self.max()+1): # <<<<<<<<<<<<<<
3850  * if idx in self:
3851  * yield idx
3852  */
3853  }
3854  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3855 
3856  /* "PyClical.pyx":227
3857  * return self.instance.getitem(idx)
3858  *
3859  * def __iter__(self): # <<<<<<<<<<<<<<
3860  * """
3861  * Iterate over the indices of an index_set.
3862  */
3863 
3864  /* function exit code */
3865  PyErr_SetNone(PyExc_StopIteration);
3866  goto __pyx_L0;
3867  __pyx_L1_error:;
3868  __Pyx_XDECREF(__pyx_t_1);
3869  __Pyx_XDECREF(__pyx_t_2);
3870  __Pyx_XDECREF(__pyx_t_3);
3871  __Pyx_XDECREF(__pyx_t_4);
3872  __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3873  __pyx_L0:;
3874  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
3875  __pyx_generator->resume_label = -1;
3876  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
3877  __Pyx_RefNannyFinishContext();
3878  return __pyx_r;
3879 }
3880 
3881 /* "PyClical.pyx":238
3882  * yield idx
3883  *
3884  * def __invert__(self): # <<<<<<<<<<<<<<
3885  * """
3886  * Set complement: not.
3887  */
3888 
3889 /* Python wrapper */
3890 static PyObject *__pyx_pw_8PyClical_9index_set_18__invert__(PyObject *__pyx_v_self); /*proto*/
3891 static char __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 ";
3892 #if CYTHON_COMPILING_IN_CPYTHON
3893 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_17__invert__;
3894 #endif
3895 static PyObject *__pyx_pw_8PyClical_9index_set_18__invert__(PyObject *__pyx_v_self) {
3896  PyObject *__pyx_r = 0;
3897  __Pyx_RefNannyDeclarations
3898  __Pyx_RefNannySetupContext("__invert__ (wrapper)", 0);
3899  __pyx_r = __pyx_pf_8PyClical_9index_set_17__invert__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
3900 
3901  /* function exit code */
3902  __Pyx_RefNannyFinishContext();
3903  return __pyx_r;
3904 }
3905 
3906 static PyObject *__pyx_pf_8PyClical_9index_set_17__invert__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
3907  PyObject *__pyx_r = NULL;
3908  __Pyx_RefNannyDeclarations
3909  PyObject *__pyx_t_1 = NULL;
3910  PyObject *__pyx_t_2 = NULL;
3911  int __pyx_lineno = 0;
3912  const char *__pyx_filename = NULL;
3913  int __pyx_clineno = 0;
3914  __Pyx_RefNannySetupContext("__invert__", 0);
3915 
3916  /* "PyClical.pyx":245
3917  * {-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}
3918  * """
3919  * return index_set().wrap( self.instance.invert() ) # <<<<<<<<<<<<<<
3920  *
3921  * def __xor__(lhs, rhs):
3922  */
3923  __Pyx_XDECREF(__pyx_r);
3924  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3925  __Pyx_GOTREF(__pyx_t_1);
3926  __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_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3927  __Pyx_GOTREF(__pyx_t_2);
3928  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3929  __pyx_r = __pyx_t_2;
3930  __pyx_t_2 = 0;
3931  goto __pyx_L0;
3932 
3933  /* "PyClical.pyx":238
3934  * yield idx
3935  *
3936  * def __invert__(self): # <<<<<<<<<<<<<<
3937  * """
3938  * Set complement: not.
3939  */
3940 
3941  /* function exit code */
3942  __pyx_L1_error:;
3943  __Pyx_XDECREF(__pyx_t_1);
3944  __Pyx_XDECREF(__pyx_t_2);
3945  __Pyx_AddTraceback("PyClical.index_set.__invert__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3946  __pyx_r = NULL;
3947  __pyx_L0:;
3948  __Pyx_XGIVEREF(__pyx_r);
3949  __Pyx_RefNannyFinishContext();
3950  return __pyx_r;
3951 }
3952 
3953 /* "PyClical.pyx":247
3954  * return index_set().wrap( self.instance.invert() )
3955  *
3956  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
3957  * """
3958  * Symmetric set difference: exclusive or.
3959  */
3960 
3961 /* Python wrapper */
3962 static PyObject *__pyx_pw_8PyClical_9index_set_20__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
3963 static char __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 ";
3964 #if CYTHON_COMPILING_IN_CPYTHON
3965 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_19__xor__;
3966 #endif
3967 static PyObject *__pyx_pw_8PyClical_9index_set_20__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
3968  PyObject *__pyx_r = 0;
3969  __Pyx_RefNannyDeclarations
3970  __Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
3971  __pyx_r = __pyx_pf_8PyClical_9index_set_19__xor__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
3972 
3973  /* function exit code */
3974  __Pyx_RefNannyFinishContext();
3975  return __pyx_r;
3976 }
3977 
3978 static PyObject *__pyx_pf_8PyClical_9index_set_19__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
3979  PyObject *__pyx_r = NULL;
3980  __Pyx_RefNannyDeclarations
3981  PyObject *__pyx_t_1 = NULL;
3982  PyObject *__pyx_t_2 = NULL;
3983  int __pyx_lineno = 0;
3984  const char *__pyx_filename = NULL;
3985  int __pyx_clineno = 0;
3986  __Pyx_RefNannySetupContext("__xor__", 0);
3987 
3988  /* "PyClical.pyx":256
3989  * {1}
3990  * """
3991  * return index_set().wrap( toIndexSet(lhs) ^ toIndexSet(rhs) ) # <<<<<<<<<<<<<<
3992  *
3993  * def __ixor__(self, rhs):
3994  */
3995  __Pyx_XDECREF(__pyx_r);
3996  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3997  __Pyx_GOTREF(__pyx_t_1);
3998  __pyx_t_2 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), (__pyx_f_8PyClical_toIndexSet(__pyx_v_lhs) ^ __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3999  __Pyx_GOTREF(__pyx_t_2);
4000  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4001  __pyx_r = __pyx_t_2;
4002  __pyx_t_2 = 0;
4003  goto __pyx_L0;
4004 
4005  /* "PyClical.pyx":247
4006  * return index_set().wrap( self.instance.invert() )
4007  *
4008  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
4009  * """
4010  * Symmetric set difference: exclusive or.
4011  */
4012 
4013  /* function exit code */
4014  __pyx_L1_error:;
4015  __Pyx_XDECREF(__pyx_t_1);
4016  __Pyx_XDECREF(__pyx_t_2);
4017  __Pyx_AddTraceback("PyClical.index_set.__xor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4018  __pyx_r = NULL;
4019  __pyx_L0:;
4020  __Pyx_XGIVEREF(__pyx_r);
4021  __Pyx_RefNannyFinishContext();
4022  return __pyx_r;
4023 }
4024 
4025 /* "PyClical.pyx":258
4026  * return index_set().wrap( toIndexSet(lhs) ^ toIndexSet(rhs) )
4027  *
4028  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
4029  * """
4030  * Symmetric set difference: exclusive or.
4031  */
4032 
4033 /* Python wrapper */
4034 static PyObject *__pyx_pw_8PyClical_9index_set_22__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
4035 static char __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 ";
4036 #if CYTHON_COMPILING_IN_CPYTHON
4037 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_21__ixor__;
4038 #endif
4039 static PyObject *__pyx_pw_8PyClical_9index_set_22__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
4040  PyObject *__pyx_r = 0;
4041  __Pyx_RefNannyDeclarations
4042  __Pyx_RefNannySetupContext("__ixor__ (wrapper)", 0);
4043  __pyx_r = __pyx_pf_8PyClical_9index_set_21__ixor__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
4044 
4045  /* function exit code */
4046  __Pyx_RefNannyFinishContext();
4047  return __pyx_r;
4048 }
4049 
4050 static PyObject *__pyx_pf_8PyClical_9index_set_21__ixor__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
4051  PyObject *__pyx_r = NULL;
4052  __Pyx_RefNannyDeclarations
4053  PyObject *__pyx_t_1 = NULL;
4054  int __pyx_lineno = 0;
4055  const char *__pyx_filename = NULL;
4056  int __pyx_clineno = 0;
4057  __Pyx_RefNannySetupContext("__ixor__", 0);
4058 
4059  /* "PyClical.pyx":267
4060  * {1}
4061  * """
4062  * return self.wrap( self.unwrap() ^ toIndexSet(rhs) ) # <<<<<<<<<<<<<<
4063  *
4064  * def __and__(lhs, rhs):
4065  */
4066  __Pyx_XDECREF(__pyx_r);
4067  __pyx_t_1 = __pyx_f_8PyClical_9index_set_wrap(__pyx_v_self, (__pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self) ^ __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4068  __Pyx_GOTREF(__pyx_t_1);
4069  __pyx_r = __pyx_t_1;
4070  __pyx_t_1 = 0;
4071  goto __pyx_L0;
4072 
4073  /* "PyClical.pyx":258
4074  * return index_set().wrap( toIndexSet(lhs) ^ toIndexSet(rhs) )
4075  *
4076  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
4077  * """
4078  * Symmetric set difference: exclusive or.
4079  */
4080 
4081  /* function exit code */
4082  __pyx_L1_error:;
4083  __Pyx_XDECREF(__pyx_t_1);
4084  __Pyx_AddTraceback("PyClical.index_set.__ixor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4085  __pyx_r = NULL;
4086  __pyx_L0:;
4087  __Pyx_XGIVEREF(__pyx_r);
4088  __Pyx_RefNannyFinishContext();
4089  return __pyx_r;
4090 }
4091 
4092 /* "PyClical.pyx":269
4093  * return self.wrap( self.unwrap() ^ toIndexSet(rhs) )
4094  *
4095  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
4096  * """
4097  * Set intersection: and.
4098  */
4099 
4100 /* Python wrapper */
4101 static PyObject *__pyx_pw_8PyClical_9index_set_24__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
4102 static char __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 ";
4103 #if CYTHON_COMPILING_IN_CPYTHON
4104 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_23__and__;
4105 #endif
4106 static PyObject *__pyx_pw_8PyClical_9index_set_24__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
4107  PyObject *__pyx_r = 0;
4108  __Pyx_RefNannyDeclarations
4109  __Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
4110  __pyx_r = __pyx_pf_8PyClical_9index_set_23__and__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
4111 
4112  /* function exit code */
4113  __Pyx_RefNannyFinishContext();
4114  return __pyx_r;
4115 }
4116 
4117 static PyObject *__pyx_pf_8PyClical_9index_set_23__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
4118  PyObject *__pyx_r = NULL;
4119  __Pyx_RefNannyDeclarations
4120  PyObject *__pyx_t_1 = NULL;
4121  PyObject *__pyx_t_2 = NULL;
4122  int __pyx_lineno = 0;
4123  const char *__pyx_filename = NULL;
4124  int __pyx_clineno = 0;
4125  __Pyx_RefNannySetupContext("__and__", 0);
4126 
4127  /* "PyClical.pyx":278
4128  * {2}
4129  * """
4130  * return index_set().wrap( toIndexSet(lhs) & toIndexSet(rhs) ) # <<<<<<<<<<<<<<
4131  *
4132  * def __iand__(self, rhs):
4133  */
4134  __Pyx_XDECREF(__pyx_r);
4135  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4136  __Pyx_GOTREF(__pyx_t_1);
4137  __pyx_t_2 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), (__pyx_f_8PyClical_toIndexSet(__pyx_v_lhs) & __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4138  __Pyx_GOTREF(__pyx_t_2);
4139  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4140  __pyx_r = __pyx_t_2;
4141  __pyx_t_2 = 0;
4142  goto __pyx_L0;
4143 
4144  /* "PyClical.pyx":269
4145  * return self.wrap( self.unwrap() ^ toIndexSet(rhs) )
4146  *
4147  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
4148  * """
4149  * Set intersection: and.
4150  */
4151 
4152  /* function exit code */
4153  __pyx_L1_error:;
4154  __Pyx_XDECREF(__pyx_t_1);
4155  __Pyx_XDECREF(__pyx_t_2);
4156  __Pyx_AddTraceback("PyClical.index_set.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4157  __pyx_r = NULL;
4158  __pyx_L0:;
4159  __Pyx_XGIVEREF(__pyx_r);
4160  __Pyx_RefNannyFinishContext();
4161  return __pyx_r;
4162 }
4163 
4164 /* "PyClical.pyx":280
4165  * return index_set().wrap( toIndexSet(lhs) & toIndexSet(rhs) )
4166  *
4167  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
4168  * """
4169  * Set intersection: and.
4170  */
4171 
4172 /* Python wrapper */
4173 static PyObject *__pyx_pw_8PyClical_9index_set_26__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
4174 static char __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 ";
4175 #if CYTHON_COMPILING_IN_CPYTHON
4176 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_25__iand__;
4177 #endif
4178 static PyObject *__pyx_pw_8PyClical_9index_set_26__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
4179  PyObject *__pyx_r = 0;
4180  __Pyx_RefNannyDeclarations
4181  __Pyx_RefNannySetupContext("__iand__ (wrapper)", 0);
4182  __pyx_r = __pyx_pf_8PyClical_9index_set_25__iand__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
4183 
4184  /* function exit code */
4185  __Pyx_RefNannyFinishContext();
4186  return __pyx_r;
4187 }
4188 
4189 static PyObject *__pyx_pf_8PyClical_9index_set_25__iand__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
4190  PyObject *__pyx_r = NULL;
4191  __Pyx_RefNannyDeclarations
4192  PyObject *__pyx_t_1 = NULL;
4193  int __pyx_lineno = 0;
4194  const char *__pyx_filename = NULL;
4195  int __pyx_clineno = 0;
4196  __Pyx_RefNannySetupContext("__iand__", 0);
4197 
4198  /* "PyClical.pyx":289
4199  * {2}
4200  * """
4201  * return self.wrap( self.unwrap() & toIndexSet(rhs) ) # <<<<<<<<<<<<<<
4202  *
4203  * def __or__(lhs, rhs):
4204  */
4205  __Pyx_XDECREF(__pyx_r);
4206  __pyx_t_1 = __pyx_f_8PyClical_9index_set_wrap(__pyx_v_self, (__pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self) & __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4207  __Pyx_GOTREF(__pyx_t_1);
4208  __pyx_r = __pyx_t_1;
4209  __pyx_t_1 = 0;
4210  goto __pyx_L0;
4211 
4212  /* "PyClical.pyx":280
4213  * return index_set().wrap( toIndexSet(lhs) & toIndexSet(rhs) )
4214  *
4215  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
4216  * """
4217  * Set intersection: and.
4218  */
4219 
4220  /* function exit code */
4221  __pyx_L1_error:;
4222  __Pyx_XDECREF(__pyx_t_1);
4223  __Pyx_AddTraceback("PyClical.index_set.__iand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4224  __pyx_r = NULL;
4225  __pyx_L0:;
4226  __Pyx_XGIVEREF(__pyx_r);
4227  __Pyx_RefNannyFinishContext();
4228  return __pyx_r;
4229 }
4230 
4231 /* "PyClical.pyx":291
4232  * return self.wrap( self.unwrap() & toIndexSet(rhs) )
4233  *
4234  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
4235  * """
4236  * Set union: or.
4237  */
4238 
4239 /* Python wrapper */
4240 static PyObject *__pyx_pw_8PyClical_9index_set_28__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
4241 static char __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 ";
4242 #if CYTHON_COMPILING_IN_CPYTHON
4243 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_27__or__;
4244 #endif
4245 static PyObject *__pyx_pw_8PyClical_9index_set_28__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
4246  PyObject *__pyx_r = 0;
4247  __Pyx_RefNannyDeclarations
4248  __Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
4249  __pyx_r = __pyx_pf_8PyClical_9index_set_27__or__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
4250 
4251  /* function exit code */
4252  __Pyx_RefNannyFinishContext();
4253  return __pyx_r;
4254 }
4255 
4256 static PyObject *__pyx_pf_8PyClical_9index_set_27__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
4257  PyObject *__pyx_r = NULL;
4258  __Pyx_RefNannyDeclarations
4259  PyObject *__pyx_t_1 = NULL;
4260  PyObject *__pyx_t_2 = NULL;
4261  int __pyx_lineno = 0;
4262  const char *__pyx_filename = NULL;
4263  int __pyx_clineno = 0;
4264  __Pyx_RefNannySetupContext("__or__", 0);
4265 
4266  /* "PyClical.pyx":300
4267  * {1,2}
4268  * """
4269  * return index_set().wrap( toIndexSet(lhs) | toIndexSet(rhs) ) # <<<<<<<<<<<<<<
4270  *
4271  * def __ior__(self, rhs):
4272  */
4273  __Pyx_XDECREF(__pyx_r);
4274  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4275  __Pyx_GOTREF(__pyx_t_1);
4276  __pyx_t_2 = __pyx_f_8PyClical_9index_set_wrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_t_1), (__pyx_f_8PyClical_toIndexSet(__pyx_v_lhs) | __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4277  __Pyx_GOTREF(__pyx_t_2);
4278  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4279  __pyx_r = __pyx_t_2;
4280  __pyx_t_2 = 0;
4281  goto __pyx_L0;
4282 
4283  /* "PyClical.pyx":291
4284  * return self.wrap( self.unwrap() & toIndexSet(rhs) )
4285  *
4286  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
4287  * """
4288  * Set union: or.
4289  */
4290 
4291  /* function exit code */
4292  __pyx_L1_error:;
4293  __Pyx_XDECREF(__pyx_t_1);
4294  __Pyx_XDECREF(__pyx_t_2);
4295  __Pyx_AddTraceback("PyClical.index_set.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4296  __pyx_r = NULL;
4297  __pyx_L0:;
4298  __Pyx_XGIVEREF(__pyx_r);
4299  __Pyx_RefNannyFinishContext();
4300  return __pyx_r;
4301 }
4302 
4303 /* "PyClical.pyx":302
4304  * return index_set().wrap( toIndexSet(lhs) | toIndexSet(rhs) )
4305  *
4306  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
4307  * """
4308  * Set union: or.
4309  */
4310 
4311 /* Python wrapper */
4312 static PyObject *__pyx_pw_8PyClical_9index_set_30__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
4313 static char __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 ";
4314 #if CYTHON_COMPILING_IN_CPYTHON
4315 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_29__ior__;
4316 #endif
4317 static PyObject *__pyx_pw_8PyClical_9index_set_30__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
4318  PyObject *__pyx_r = 0;
4319  __Pyx_RefNannyDeclarations
4320  __Pyx_RefNannySetupContext("__ior__ (wrapper)", 0);
4321  __pyx_r = __pyx_pf_8PyClical_9index_set_29__ior__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
4322 
4323  /* function exit code */
4324  __Pyx_RefNannyFinishContext();
4325  return __pyx_r;
4326 }
4327 
4328 static PyObject *__pyx_pf_8PyClical_9index_set_29__ior__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
4329  PyObject *__pyx_r = NULL;
4330  __Pyx_RefNannyDeclarations
4331  PyObject *__pyx_t_1 = NULL;
4332  int __pyx_lineno = 0;
4333  const char *__pyx_filename = NULL;
4334  int __pyx_clineno = 0;
4335  __Pyx_RefNannySetupContext("__ior__", 0);
4336 
4337  /* "PyClical.pyx":311
4338  * {1,2}
4339  * """
4340  * return self.wrap( self.unwrap() | toIndexSet(rhs) ) # <<<<<<<<<<<<<<
4341  *
4342  * def count(self):
4343  */
4344  __Pyx_XDECREF(__pyx_r);
4345  __pyx_t_1 = __pyx_f_8PyClical_9index_set_wrap(__pyx_v_self, (__pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self) | __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4346  __Pyx_GOTREF(__pyx_t_1);
4347  __pyx_r = __pyx_t_1;
4348  __pyx_t_1 = 0;
4349  goto __pyx_L0;
4350 
4351  /* "PyClical.pyx":302
4352  * return index_set().wrap( toIndexSet(lhs) | toIndexSet(rhs) )
4353  *
4354  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
4355  * """
4356  * Set union: or.
4357  */
4358 
4359  /* function exit code */
4360  __pyx_L1_error:;
4361  __Pyx_XDECREF(__pyx_t_1);
4362  __Pyx_AddTraceback("PyClical.index_set.__ior__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4363  __pyx_r = NULL;
4364  __pyx_L0:;
4365  __Pyx_XGIVEREF(__pyx_r);
4366  __Pyx_RefNannyFinishContext();
4367  return __pyx_r;
4368 }
4369 
4370 /* "PyClical.pyx":313
4371  * return self.wrap( self.unwrap() | toIndexSet(rhs) )
4372  *
4373  * def count(self): # <<<<<<<<<<<<<<
4374  * """
4375  * Cardinality: Number of indices included in set.
4376  */
4377 
4378 /* Python wrapper */
4379 static PyObject *__pyx_pw_8PyClical_9index_set_32count(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4380 static char __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 ";
4381 static PyObject *__pyx_pw_8PyClical_9index_set_32count(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4382  PyObject *__pyx_r = 0;
4383  __Pyx_RefNannyDeclarations
4384  __Pyx_RefNannySetupContext("count (wrapper)", 0);
4385  __pyx_r = __pyx_pf_8PyClical_9index_set_31count(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4386 
4387  /* function exit code */
4388  __Pyx_RefNannyFinishContext();
4389  return __pyx_r;
4390 }
4391 
4392 static PyObject *__pyx_pf_8PyClical_9index_set_31count(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4393  PyObject *__pyx_r = NULL;
4394  __Pyx_RefNannyDeclarations
4395  PyObject *__pyx_t_1 = NULL;
4396  int __pyx_lineno = 0;
4397  const char *__pyx_filename = NULL;
4398  int __pyx_clineno = 0;
4399  __Pyx_RefNannySetupContext("count", 0);
4400 
4401  /* "PyClical.pyx":320
4402  * 3
4403  * """
4404  * return self.instance.count() # <<<<<<<<<<<<<<
4405  *
4406  * def count_neg(self):
4407  */
4408  __Pyx_XDECREF(__pyx_r);
4409  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->count()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4410  __Pyx_GOTREF(__pyx_t_1);
4411  __pyx_r = __pyx_t_1;
4412  __pyx_t_1 = 0;
4413  goto __pyx_L0;
4414 
4415  /* "PyClical.pyx":313
4416  * return self.wrap( self.unwrap() | toIndexSet(rhs) )
4417  *
4418  * def count(self): # <<<<<<<<<<<<<<
4419  * """
4420  * Cardinality: Number of indices included in set.
4421  */
4422 
4423  /* function exit code */
4424  __pyx_L1_error:;
4425  __Pyx_XDECREF(__pyx_t_1);
4426  __Pyx_AddTraceback("PyClical.index_set.count", __pyx_clineno, __pyx_lineno, __pyx_filename);
4427  __pyx_r = NULL;
4428  __pyx_L0:;
4429  __Pyx_XGIVEREF(__pyx_r);
4430  __Pyx_RefNannyFinishContext();
4431  return __pyx_r;
4432 }
4433 
4434 /* "PyClical.pyx":322
4435  * return self.instance.count()
4436  *
4437  * def count_neg(self): # <<<<<<<<<<<<<<
4438  * """
4439  * Number of negative indices included in set.
4440  */
4441 
4442 /* Python wrapper */
4443 static PyObject *__pyx_pw_8PyClical_9index_set_34count_neg(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4444 static char __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 ";
4445 static PyObject *__pyx_pw_8PyClical_9index_set_34count_neg(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4446  PyObject *__pyx_r = 0;
4447  __Pyx_RefNannyDeclarations
4448  __Pyx_RefNannySetupContext("count_neg (wrapper)", 0);
4449  __pyx_r = __pyx_pf_8PyClical_9index_set_33count_neg(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4450 
4451  /* function exit code */
4452  __Pyx_RefNannyFinishContext();
4453  return __pyx_r;
4454 }
4455 
4456 static PyObject *__pyx_pf_8PyClical_9index_set_33count_neg(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4457  PyObject *__pyx_r = NULL;
4458  __Pyx_RefNannyDeclarations
4459  PyObject *__pyx_t_1 = NULL;
4460  int __pyx_lineno = 0;
4461  const char *__pyx_filename = NULL;
4462  int __pyx_clineno = 0;
4463  __Pyx_RefNannySetupContext("count_neg", 0);
4464 
4465  /* "PyClical.pyx":329
4466  * 1
4467  * """
4468  * return self.instance.count_neg() # <<<<<<<<<<<<<<
4469  *
4470  * def count_pos(self):
4471  */
4472  __Pyx_XDECREF(__pyx_r);
4473  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->count_neg()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4474  __Pyx_GOTREF(__pyx_t_1);
4475  __pyx_r = __pyx_t_1;
4476  __pyx_t_1 = 0;
4477  goto __pyx_L0;
4478 
4479  /* "PyClical.pyx":322
4480  * return self.instance.count()
4481  *
4482  * def count_neg(self): # <<<<<<<<<<<<<<
4483  * """
4484  * Number of negative indices included in set.
4485  */
4486 
4487  /* function exit code */
4488  __pyx_L1_error:;
4489  __Pyx_XDECREF(__pyx_t_1);
4490  __Pyx_AddTraceback("PyClical.index_set.count_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
4491  __pyx_r = NULL;
4492  __pyx_L0:;
4493  __Pyx_XGIVEREF(__pyx_r);
4494  __Pyx_RefNannyFinishContext();
4495  return __pyx_r;
4496 }
4497 
4498 /* "PyClical.pyx":331
4499  * return self.instance.count_neg()
4500  *
4501  * def count_pos(self): # <<<<<<<<<<<<<<
4502  * """
4503  * Number of positive indices included in set.
4504  */
4505 
4506 /* Python wrapper */
4507 static PyObject *__pyx_pw_8PyClical_9index_set_36count_pos(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4508 static char __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 ";
4509 static PyObject *__pyx_pw_8PyClical_9index_set_36count_pos(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4510  PyObject *__pyx_r = 0;
4511  __Pyx_RefNannyDeclarations
4512  __Pyx_RefNannySetupContext("count_pos (wrapper)", 0);
4513  __pyx_r = __pyx_pf_8PyClical_9index_set_35count_pos(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4514 
4515  /* function exit code */
4516  __Pyx_RefNannyFinishContext();
4517  return __pyx_r;
4518 }
4519 
4520 static PyObject *__pyx_pf_8PyClical_9index_set_35count_pos(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4521  PyObject *__pyx_r = NULL;
4522  __Pyx_RefNannyDeclarations
4523  PyObject *__pyx_t_1 = NULL;
4524  int __pyx_lineno = 0;
4525  const char *__pyx_filename = NULL;
4526  int __pyx_clineno = 0;
4527  __Pyx_RefNannySetupContext("count_pos", 0);
4528 
4529  /* "PyClical.pyx":338
4530  * 2
4531  * """
4532  * return self.instance.count_pos() # <<<<<<<<<<<<<<
4533  *
4534  * def min(self):
4535  */
4536  __Pyx_XDECREF(__pyx_r);
4537  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->count_pos()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4538  __Pyx_GOTREF(__pyx_t_1);
4539  __pyx_r = __pyx_t_1;
4540  __pyx_t_1 = 0;
4541  goto __pyx_L0;
4542 
4543  /* "PyClical.pyx":331
4544  * return self.instance.count_neg()
4545  *
4546  * def count_pos(self): # <<<<<<<<<<<<<<
4547  * """
4548  * Number of positive indices included in set.
4549  */
4550 
4551  /* function exit code */
4552  __pyx_L1_error:;
4553  __Pyx_XDECREF(__pyx_t_1);
4554  __Pyx_AddTraceback("PyClical.index_set.count_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
4555  __pyx_r = NULL;
4556  __pyx_L0:;
4557  __Pyx_XGIVEREF(__pyx_r);
4558  __Pyx_RefNannyFinishContext();
4559  return __pyx_r;
4560 }
4561 
4562 /* "PyClical.pyx":340
4563  * return self.instance.count_pos()
4564  *
4565  * def min(self): # <<<<<<<<<<<<<<
4566  * """
4567  * Minimum member.
4568  */
4569 
4570 /* Python wrapper */
4571 static PyObject *__pyx_pw_8PyClical_9index_set_38min(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4572 static char __pyx_doc_8PyClical_9index_set_37min[] = "\n Minimum member.\n\n >>> index_set({-1,1,2}).min()\n -1\n ";
4573 static PyObject *__pyx_pw_8PyClical_9index_set_38min(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4574  PyObject *__pyx_r = 0;
4575  __Pyx_RefNannyDeclarations
4576  __Pyx_RefNannySetupContext("min (wrapper)", 0);
4577  __pyx_r = __pyx_pf_8PyClical_9index_set_37min(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4578 
4579  /* function exit code */
4580  __Pyx_RefNannyFinishContext();
4581  return __pyx_r;
4582 }
4583 
4584 static PyObject *__pyx_pf_8PyClical_9index_set_37min(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4585  PyObject *__pyx_r = NULL;
4586  __Pyx_RefNannyDeclarations
4587  PyObject *__pyx_t_1 = NULL;
4588  int __pyx_lineno = 0;
4589  const char *__pyx_filename = NULL;
4590  int __pyx_clineno = 0;
4591  __Pyx_RefNannySetupContext("min", 0);
4592 
4593  /* "PyClical.pyx":347
4594  * -1
4595  * """
4596  * return self.instance.min() # <<<<<<<<<<<<<<
4597  *
4598  * def max(self):
4599  */
4600  __Pyx_XDECREF(__pyx_r);
4601  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->min()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4602  __Pyx_GOTREF(__pyx_t_1);
4603  __pyx_r = __pyx_t_1;
4604  __pyx_t_1 = 0;
4605  goto __pyx_L0;
4606 
4607  /* "PyClical.pyx":340
4608  * return self.instance.count_pos()
4609  *
4610  * def min(self): # <<<<<<<<<<<<<<
4611  * """
4612  * Minimum member.
4613  */
4614 
4615  /* function exit code */
4616  __pyx_L1_error:;
4617  __Pyx_XDECREF(__pyx_t_1);
4618  __Pyx_AddTraceback("PyClical.index_set.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
4619  __pyx_r = NULL;
4620  __pyx_L0:;
4621  __Pyx_XGIVEREF(__pyx_r);
4622  __Pyx_RefNannyFinishContext();
4623  return __pyx_r;
4624 }
4625 
4626 /* "PyClical.pyx":349
4627  * return self.instance.min()
4628  *
4629  * def max(self): # <<<<<<<<<<<<<<
4630  * """
4631  * Maximum member.
4632  */
4633 
4634 /* Python wrapper */
4635 static PyObject *__pyx_pw_8PyClical_9index_set_40max(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4636 static char __pyx_doc_8PyClical_9index_set_39max[] = "\n Maximum member.\n\n >>> index_set({-1,1,2}).max()\n 2\n ";
4637 static PyObject *__pyx_pw_8PyClical_9index_set_40max(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4638  PyObject *__pyx_r = 0;
4639  __Pyx_RefNannyDeclarations
4640  __Pyx_RefNannySetupContext("max (wrapper)", 0);
4641  __pyx_r = __pyx_pf_8PyClical_9index_set_39max(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4642 
4643  /* function exit code */
4644  __Pyx_RefNannyFinishContext();
4645  return __pyx_r;
4646 }
4647 
4648 static PyObject *__pyx_pf_8PyClical_9index_set_39max(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4649  PyObject *__pyx_r = NULL;
4650  __Pyx_RefNannyDeclarations
4651  PyObject *__pyx_t_1 = NULL;
4652  int __pyx_lineno = 0;
4653  const char *__pyx_filename = NULL;
4654  int __pyx_clineno = 0;
4655  __Pyx_RefNannySetupContext("max", 0);
4656 
4657  /* "PyClical.pyx":356
4658  * 2
4659  * """
4660  * return self.instance.max() # <<<<<<<<<<<<<<
4661  *
4662  * def hash_fn(self):
4663  */
4664  __Pyx_XDECREF(__pyx_r);
4665  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->max()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4666  __Pyx_GOTREF(__pyx_t_1);
4667  __pyx_r = __pyx_t_1;
4668  __pyx_t_1 = 0;
4669  goto __pyx_L0;
4670 
4671  /* "PyClical.pyx":349
4672  * return self.instance.min()
4673  *
4674  * def max(self): # <<<<<<<<<<<<<<
4675  * """
4676  * Maximum member.
4677  */
4678 
4679  /* function exit code */
4680  __pyx_L1_error:;
4681  __Pyx_XDECREF(__pyx_t_1);
4682  __Pyx_AddTraceback("PyClical.index_set.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
4683  __pyx_r = NULL;
4684  __pyx_L0:;
4685  __Pyx_XGIVEREF(__pyx_r);
4686  __Pyx_RefNannyFinishContext();
4687  return __pyx_r;
4688 }
4689 
4690 /* "PyClical.pyx":358
4691  * return self.instance.max()
4692  *
4693  * def hash_fn(self): # <<<<<<<<<<<<<<
4694  * """
4695  * Hash function.
4696  */
4697 
4698 /* Python wrapper */
4699 static PyObject *__pyx_pw_8PyClical_9index_set_42hash_fn(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4700 static char __pyx_doc_8PyClical_9index_set_41hash_fn[] = "\n Hash function.\n ";
4701 static PyObject *__pyx_pw_8PyClical_9index_set_42hash_fn(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4702  PyObject *__pyx_r = 0;
4703  __Pyx_RefNannyDeclarations
4704  __Pyx_RefNannySetupContext("hash_fn (wrapper)", 0);
4705  __pyx_r = __pyx_pf_8PyClical_9index_set_41hash_fn(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4706 
4707  /* function exit code */
4708  __Pyx_RefNannyFinishContext();
4709  return __pyx_r;
4710 }
4711 
4712 static PyObject *__pyx_pf_8PyClical_9index_set_41hash_fn(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4713  PyObject *__pyx_r = NULL;
4714  __Pyx_RefNannyDeclarations
4715  PyObject *__pyx_t_1 = NULL;
4716  int __pyx_lineno = 0;
4717  const char *__pyx_filename = NULL;
4718  int __pyx_clineno = 0;
4719  __Pyx_RefNannySetupContext("hash_fn", 0);
4720 
4721  /* "PyClical.pyx":362
4722  * Hash function.
4723  * """
4724  * return self.instance.hash_fn() # <<<<<<<<<<<<<<
4725  *
4726  * def sign_of_mult(self, rhs):
4727  */
4728  __Pyx_XDECREF(__pyx_r);
4729  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->hash_fn()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4730  __Pyx_GOTREF(__pyx_t_1);
4731  __pyx_r = __pyx_t_1;
4732  __pyx_t_1 = 0;
4733  goto __pyx_L0;
4734 
4735  /* "PyClical.pyx":358
4736  * return self.instance.max()
4737  *
4738  * def hash_fn(self): # <<<<<<<<<<<<<<
4739  * """
4740  * Hash function.
4741  */
4742 
4743  /* function exit code */
4744  __pyx_L1_error:;
4745  __Pyx_XDECREF(__pyx_t_1);
4746  __Pyx_AddTraceback("PyClical.index_set.hash_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
4747  __pyx_r = NULL;
4748  __pyx_L0:;
4749  __Pyx_XGIVEREF(__pyx_r);
4750  __Pyx_RefNannyFinishContext();
4751  return __pyx_r;
4752 }
4753 
4754 /* "PyClical.pyx":364
4755  * return self.instance.hash_fn()
4756  *
4757  * def sign_of_mult(self, rhs): # <<<<<<<<<<<<<<
4758  * """
4759  * Sign of geometric product of two Clifford basis elements.
4760  */
4761 
4762 /* Python wrapper */
4763 static PyObject *__pyx_pw_8PyClical_9index_set_44sign_of_mult(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
4764 static char __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 ";
4765 static PyObject *__pyx_pw_8PyClical_9index_set_44sign_of_mult(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
4766  PyObject *__pyx_r = 0;
4767  __Pyx_RefNannyDeclarations
4768  __Pyx_RefNannySetupContext("sign_of_mult (wrapper)", 0);
4769  __pyx_r = __pyx_pf_8PyClical_9index_set_43sign_of_mult(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
4770 
4771  /* function exit code */
4772  __Pyx_RefNannyFinishContext();
4773  return __pyx_r;
4774 }
4775 
4776 static PyObject *__pyx_pf_8PyClical_9index_set_43sign_of_mult(struct __pyx_obj_8PyClical_index_set *__pyx_v_self, PyObject *__pyx_v_rhs) {
4777  PyObject *__pyx_r = NULL;
4778  __Pyx_RefNannyDeclarations
4779  PyObject *__pyx_t_1 = NULL;
4780  int __pyx_lineno = 0;
4781  const char *__pyx_filename = NULL;
4782  int __pyx_clineno = 0;
4783  __Pyx_RefNannySetupContext("sign_of_mult", 0);
4784 
4785  /* "PyClical.pyx":371
4786  * 1
4787  * """
4788  * return self.instance.sign_of_mult(toIndexSet(rhs)) # <<<<<<<<<<<<<<
4789  *
4790  * def sign_of_square(self):
4791  */
4792  __Pyx_XDECREF(__pyx_r);
4793  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->sign_of_mult(__pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4794  __Pyx_GOTREF(__pyx_t_1);
4795  __pyx_r = __pyx_t_1;
4796  __pyx_t_1 = 0;
4797  goto __pyx_L0;
4798 
4799  /* "PyClical.pyx":364
4800  * return self.instance.hash_fn()
4801  *
4802  * def sign_of_mult(self, rhs): # <<<<<<<<<<<<<<
4803  * """
4804  * Sign of geometric product of two Clifford basis elements.
4805  */
4806 
4807  /* function exit code */
4808  __pyx_L1_error:;
4809  __Pyx_XDECREF(__pyx_t_1);
4810  __Pyx_AddTraceback("PyClical.index_set.sign_of_mult", __pyx_clineno, __pyx_lineno, __pyx_filename);
4811  __pyx_r = NULL;
4812  __pyx_L0:;
4813  __Pyx_XGIVEREF(__pyx_r);
4814  __Pyx_RefNannyFinishContext();
4815  return __pyx_r;
4816 }
4817 
4818 /* "PyClical.pyx":373
4819  * return self.instance.sign_of_mult(toIndexSet(rhs))
4820  *
4821  * def sign_of_square(self): # <<<<<<<<<<<<<<
4822  * """
4823  * Sign of geometric square of a Clifford basis element.
4824  */
4825 
4826 /* Python wrapper */
4827 static PyObject *__pyx_pw_8PyClical_9index_set_46sign_of_square(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
4828 static char __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 ";
4829 static PyObject *__pyx_pw_8PyClical_9index_set_46sign_of_square(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
4830  PyObject *__pyx_r = 0;
4831  __Pyx_RefNannyDeclarations
4832  __Pyx_RefNannySetupContext("sign_of_square (wrapper)", 0);
4833  __pyx_r = __pyx_pf_8PyClical_9index_set_45sign_of_square(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4834 
4835  /* function exit code */
4836  __Pyx_RefNannyFinishContext();
4837  return __pyx_r;
4838 }
4839 
4840 static PyObject *__pyx_pf_8PyClical_9index_set_45sign_of_square(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4841  PyObject *__pyx_r = NULL;
4842  __Pyx_RefNannyDeclarations
4843  PyObject *__pyx_t_1 = NULL;
4844  int __pyx_lineno = 0;
4845  const char *__pyx_filename = NULL;
4846  int __pyx_clineno = 0;
4847  __Pyx_RefNannySetupContext("sign_of_square", 0);
4848 
4849  /* "PyClical.pyx":380
4850  * -1
4851  * """
4852  * return self.instance.sign_of_square() # <<<<<<<<<<<<<<
4853  *
4854  * def __repr__(self):
4855  */
4856  __Pyx_XDECREF(__pyx_r);
4857  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->instance->sign_of_square()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4858  __Pyx_GOTREF(__pyx_t_1);
4859  __pyx_r = __pyx_t_1;
4860  __pyx_t_1 = 0;
4861  goto __pyx_L0;
4862 
4863  /* "PyClical.pyx":373
4864  * return self.instance.sign_of_mult(toIndexSet(rhs))
4865  *
4866  * def sign_of_square(self): # <<<<<<<<<<<<<<
4867  * """
4868  * Sign of geometric square of a Clifford basis element.
4869  */
4870 
4871  /* function exit code */
4872  __pyx_L1_error:;
4873  __Pyx_XDECREF(__pyx_t_1);
4874  __Pyx_AddTraceback("PyClical.index_set.sign_of_square", __pyx_clineno, __pyx_lineno, __pyx_filename);
4875  __pyx_r = NULL;
4876  __pyx_L0:;
4877  __Pyx_XGIVEREF(__pyx_r);
4878  __Pyx_RefNannyFinishContext();
4879  return __pyx_r;
4880 }
4881 
4882 /* "PyClical.pyx":382
4883  * return self.instance.sign_of_square()
4884  *
4885  * def __repr__(self): # <<<<<<<<<<<<<<
4886  * """
4887  * The official string representation of self.
4888  */
4889 
4890 /* Python wrapper */
4891 static PyObject *__pyx_pw_8PyClical_9index_set_48__repr__(PyObject *__pyx_v_self); /*proto*/
4892 static char __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 ";
4893 #if CYTHON_COMPILING_IN_CPYTHON
4894 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_47__repr__;
4895 #endif
4896 static PyObject *__pyx_pw_8PyClical_9index_set_48__repr__(PyObject *__pyx_v_self) {
4897  PyObject *__pyx_r = 0;
4898  __Pyx_RefNannyDeclarations
4899  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
4900  __pyx_r = __pyx_pf_8PyClical_9index_set_47__repr__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4901 
4902  /* function exit code */
4903  __Pyx_RefNannyFinishContext();
4904  return __pyx_r;
4905 }
4906 
4907 static PyObject *__pyx_pf_8PyClical_9index_set_47__repr__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4908  PyObject *__pyx_r = NULL;
4909  __Pyx_RefNannyDeclarations
4910  PyObject *__pyx_t_1 = NULL;
4911  int __pyx_lineno = 0;
4912  const char *__pyx_filename = NULL;
4913  int __pyx_clineno = 0;
4914  __Pyx_RefNannySetupContext("__repr__", 0);
4915 
4916  /* "PyClical.pyx":391
4917  * 'index_set({1,2})'
4918  * """
4919  * return index_set_to_repr( self.unwrap() ).c_str() # <<<<<<<<<<<<<<
4920  *
4921  * def __str__(self):
4922  */
4923  __Pyx_XDECREF(__pyx_r);
4924  __pyx_t_1 = __Pyx_PyBytes_FromString(index_set_to_repr(__pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self)).c_str()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4925  __Pyx_GOTREF(__pyx_t_1);
4926  __pyx_r = __pyx_t_1;
4927  __pyx_t_1 = 0;
4928  goto __pyx_L0;
4929 
4930  /* "PyClical.pyx":382
4931  * return self.instance.sign_of_square()
4932  *
4933  * def __repr__(self): # <<<<<<<<<<<<<<
4934  * """
4935  * The official string representation of self.
4936  */
4937 
4938  /* function exit code */
4939  __pyx_L1_error:;
4940  __Pyx_XDECREF(__pyx_t_1);
4941  __Pyx_AddTraceback("PyClical.index_set.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4942  __pyx_r = NULL;
4943  __pyx_L0:;
4944  __Pyx_XGIVEREF(__pyx_r);
4945  __Pyx_RefNannyFinishContext();
4946  return __pyx_r;
4947 }
4948 
4949 /* "PyClical.pyx":393
4950  * return index_set_to_repr( self.unwrap() ).c_str()
4951  *
4952  * def __str__(self): # <<<<<<<<<<<<<<
4953  * """
4954  * The informal string representation of self.
4955  */
4956 
4957 /* Python wrapper */
4958 static PyObject *__pyx_pw_8PyClical_9index_set_50__str__(PyObject *__pyx_v_self); /*proto*/
4959 static char __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 ";
4960 #if CYTHON_COMPILING_IN_CPYTHON
4961 struct wrapperbase __pyx_wrapperbase_8PyClical_9index_set_49__str__;
4962 #endif
4963 static PyObject *__pyx_pw_8PyClical_9index_set_50__str__(PyObject *__pyx_v_self) {
4964  PyObject *__pyx_r = 0;
4965  __Pyx_RefNannyDeclarations
4966  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
4967  __pyx_r = __pyx_pf_8PyClical_9index_set_49__str__(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_self));
4968 
4969  /* function exit code */
4970  __Pyx_RefNannyFinishContext();
4971  return __pyx_r;
4972 }
4973 
4974 static PyObject *__pyx_pf_8PyClical_9index_set_49__str__(struct __pyx_obj_8PyClical_index_set *__pyx_v_self) {
4975  PyObject *__pyx_r = NULL;
4976  __Pyx_RefNannyDeclarations
4977  PyObject *__pyx_t_1 = NULL;
4978  int __pyx_lineno = 0;
4979  const char *__pyx_filename = NULL;
4980  int __pyx_clineno = 0;
4981  __Pyx_RefNannySetupContext("__str__", 0);
4982 
4983  /* "PyClical.pyx":402
4984  * '{1,2}'
4985  * """
4986  * return index_set_to_str( self.unwrap() ).c_str() # <<<<<<<<<<<<<<
4987  *
4988  * def index_set_hidden_doctests():
4989  */
4990  __Pyx_XDECREF(__pyx_r);
4991  __pyx_t_1 = __Pyx_PyBytes_FromString(index_set_to_str(__pyx_f_8PyClical_9index_set_unwrap(__pyx_v_self)).c_str()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4992  __Pyx_GOTREF(__pyx_t_1);
4993  __pyx_r = __pyx_t_1;
4994  __pyx_t_1 = 0;
4995  goto __pyx_L0;
4996 
4997  /* "PyClical.pyx":393
4998  * return index_set_to_repr( self.unwrap() ).c_str()
4999  *
5000  * def __str__(self): # <<<<<<<<<<<<<<
5001  * """
5002  * The informal string representation of self.
5003  */
5004 
5005  /* function exit code */
5006  __pyx_L1_error:;
5007  __Pyx_XDECREF(__pyx_t_1);
5008  __Pyx_AddTraceback("PyClical.index_set.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5009  __pyx_r = NULL;
5010  __pyx_L0:;
5011  __Pyx_XGIVEREF(__pyx_r);
5012  __Pyx_RefNannyFinishContext();
5013  return __pyx_r;
5014 }
5015 
5016 /* "PyClical.pyx":404
5017  * return index_set_to_str( self.unwrap() ).c_str()
5018  *
5019  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
5020  * """
5021  * Tests for functions that Doctest cannot see.
5022  */
5023 
5024 /* Python wrapper */
5025 static PyObject *__pyx_pw_8PyClical_1index_set_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
5026 static char __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 set([1, 2, 100]).\n >>> print index_set([1,2])\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize index_set object from <type '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_se""t({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 ";
5027  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};
5028  static PyObject *__pyx_pw_8PyClical_1index_set_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
5029  PyObject *__pyx_r = 0;
5030  __Pyx_RefNannyDeclarations
5031  __Pyx_RefNannySetupContext("index_set_hidden_doctests (wrapper)", 0);
5032  __pyx_r = __pyx_pf_8PyClical_index_set_hidden_doctests(__pyx_self);
5033 
5034  /* function exit code */
5035  __Pyx_RefNannyFinishContext();
5036  return __pyx_r;
5037  }
5038 
5039  static PyObject *__pyx_pf_8PyClical_index_set_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self) {
5040  PyObject *__pyx_r = NULL;
5041  __Pyx_RefNannyDeclarations
5042  __Pyx_RefNannySetupContext("index_set_hidden_doctests", 0);
5043 
5044  /* "PyClical.pyx":488
5045  * False
5046  * """
5047  * return # <<<<<<<<<<<<<<
5048  *
5049  * cpdef inline compare(lhs,rhs):
5050  */
5051  __Pyx_XDECREF(__pyx_r);
5052  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5053  goto __pyx_L0;
5054 
5055  /* "PyClical.pyx":404
5056  * return index_set_to_str( self.unwrap() ).c_str()
5057  *
5058  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
5059  * """
5060  * Tests for functions that Doctest cannot see.
5061  */
5062 
5063  /* function exit code */
5064  __pyx_L0:;
5065  __Pyx_XGIVEREF(__pyx_r);
5066  __Pyx_RefNannyFinishContext();
5067  return __pyx_r;
5068  }
5069 
5070  /* "PyClical.pyx":490
5071  * return
5072  *
5073  * cpdef inline compare(lhs,rhs): # <<<<<<<<<<<<<<
5074  * """
5075  * "lexicographic compare" eg. {3,4,5} is less than {3,7,8};
5076  */
5077 
5078  static PyObject *__pyx_pw_8PyClical_3compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5079  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_compare(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, CYTHON_UNUSED int __pyx_skip_dispatch) {
5080  PyObject *__pyx_r = NULL;
5081  __Pyx_RefNannyDeclarations
5082  PyObject *__pyx_t_1 = NULL;
5083  int __pyx_lineno = 0;
5084  const char *__pyx_filename = NULL;
5085  int __pyx_clineno = 0;
5086  __Pyx_RefNannySetupContext("compare", 0);
5087 
5088  /* "PyClical.pyx":500
5089  * 1
5090  * """
5091  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) ) # <<<<<<<<<<<<<<
5092  *
5093  * cpdef inline min_neg(obj):
5094  */
5095  __Pyx_XDECREF(__pyx_r);
5096  __pyx_t_1 = __Pyx_PyInt_From_int(compare(__pyx_f_8PyClical_toIndexSet(__pyx_v_lhs), __pyx_f_8PyClical_toIndexSet(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5097  __Pyx_GOTREF(__pyx_t_1);
5098  __pyx_r = __pyx_t_1;
5099  __pyx_t_1 = 0;
5100  goto __pyx_L0;
5101 
5102  /* "PyClical.pyx":490
5103  * return
5104  *
5105  * cpdef inline compare(lhs,rhs): # <<<<<<<<<<<<<<
5106  * """
5107  * "lexicographic compare" eg. {3,4,5} is less than {3,7,8};
5108  */
5109 
5110  /* function exit code */
5111  __pyx_L1_error:;
5112  __Pyx_XDECREF(__pyx_t_1);
5113  __Pyx_AddTraceback("PyClical.compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
5114  __pyx_r = 0;
5115  __pyx_L0:;
5116  __Pyx_XGIVEREF(__pyx_r);
5117  __Pyx_RefNannyFinishContext();
5118  return __pyx_r;
5119  }
5120 
5121  /* Python wrapper */
5122  static PyObject *__pyx_pw_8PyClical_3compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5123  static char __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 ";
5124  static PyObject *__pyx_pw_8PyClical_3compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5125  PyObject *__pyx_v_lhs = 0;
5126  PyObject *__pyx_v_rhs = 0;
5127  int __pyx_lineno = 0;
5128  const char *__pyx_filename = NULL;
5129  int __pyx_clineno = 0;
5130  PyObject *__pyx_r = 0;
5131  __Pyx_RefNannyDeclarations
5132  __Pyx_RefNannySetupContext("compare (wrapper)", 0);
5133  {
5134  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lhs,&__pyx_n_s_rhs,0};
5135  PyObject* values[2] = {0,0};
5136  if (unlikely(__pyx_kwds)) {
5137  Py_ssize_t kw_args;
5138  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5139  switch (pos_args) {
5140  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5141  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5142  case 0: break;
5143  default: goto __pyx_L5_argtuple_error;
5144  }
5145  kw_args = PyDict_Size(__pyx_kwds);
5146  switch (pos_args) {
5147  case 0:
5148  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lhs)) != 0)) kw_args--;
5149  else goto __pyx_L5_argtuple_error;
5150  case 1:
5151  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rhs)) != 0)) kw_args--;
5152  else {
5153  __Pyx_RaiseArgtupleInvalid("compare", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5154  }
5155  }
5156  if (unlikely(kw_args > 0)) {
5157  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compare") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5158  }
5159  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
5160  goto __pyx_L5_argtuple_error;
5161  } else {
5162  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5163  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5164  }
5165  __pyx_v_lhs = values[0];
5166  __pyx_v_rhs = values[1];
5167  }
5168  goto __pyx_L4_argument_unpacking_done;
5169  __pyx_L5_argtuple_error:;
5170  __Pyx_RaiseArgtupleInvalid("compare", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5171  __pyx_L3_error:;
5172  __Pyx_AddTraceback("PyClical.compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
5173  __Pyx_RefNannyFinishContext();
5174  return NULL;
5175  __pyx_L4_argument_unpacking_done:;
5176  __pyx_r = __pyx_pf_8PyClical_2compare(__pyx_self, __pyx_v_lhs, __pyx_v_rhs);
5177 
5178  /* function exit code */
5179  __Pyx_RefNannyFinishContext();
5180  return __pyx_r;
5181  }
5182 
5183  static PyObject *__pyx_pf_8PyClical_2compare(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
5184  PyObject *__pyx_r = NULL;
5185  __Pyx_RefNannyDeclarations
5186  PyObject *__pyx_t_1 = NULL;
5187  int __pyx_lineno = 0;
5188  const char *__pyx_filename = NULL;
5189  int __pyx_clineno = 0;
5190  __Pyx_RefNannySetupContext("compare", 0);
5191  __Pyx_XDECREF(__pyx_r);
5192  __pyx_t_1 = __pyx_f_8PyClical_compare(__pyx_v_lhs, __pyx_v_rhs, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5193  __Pyx_GOTREF(__pyx_t_1);
5194  __pyx_r = __pyx_t_1;
5195  __pyx_t_1 = 0;
5196  goto __pyx_L0;
5197 
5198  /* function exit code */
5199  __pyx_L1_error:;
5200  __Pyx_XDECREF(__pyx_t_1);
5201  __Pyx_AddTraceback("PyClical.compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
5202  __pyx_r = NULL;
5203  __pyx_L0:;
5204  __Pyx_XGIVEREF(__pyx_r);
5205  __Pyx_RefNannyFinishContext();
5206  return __pyx_r;
5207  }
5208 
5209  /* "PyClical.pyx":502
5210  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) )
5211  *
5212  * cpdef inline min_neg(obj): # <<<<<<<<<<<<<<
5213  * """
5214  * Minimum negative index, or 0 if none.
5215  */
5216 
5217  static PyObject *__pyx_pw_8PyClical_5min_neg(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
5218  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_min_neg(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
5219  PyObject *__pyx_r = NULL;
5220  __Pyx_RefNannyDeclarations
5221  PyObject *__pyx_t_1 = NULL;
5222  int __pyx_lineno = 0;
5223  const char *__pyx_filename = NULL;
5224  int __pyx_clineno = 0;
5225  __Pyx_RefNannySetupContext("min_neg", 0);
5226 
5227  /* "PyClical.pyx":509
5228  * 0
5229  * """
5230  * return glucat.min_neg( toIndexSet(obj) ) # <<<<<<<<<<<<<<
5231  *
5232  * cpdef inline max_pos(obj):
5233  */
5234  __Pyx_XDECREF(__pyx_r);
5235  __pyx_t_1 = __Pyx_PyInt_From_int(min_neg(__pyx_f_8PyClical_toIndexSet(__pyx_v_obj))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5236  __Pyx_GOTREF(__pyx_t_1);
5237  __pyx_r = __pyx_t_1;
5238  __pyx_t_1 = 0;
5239  goto __pyx_L0;
5240 
5241  /* "PyClical.pyx":502
5242  * return glucat.compare( toIndexSet(lhs), toIndexSet(rhs) )
5243  *
5244  * cpdef inline min_neg(obj): # <<<<<<<<<<<<<<
5245  * """
5246  * Minimum negative index, or 0 if none.
5247  */
5248 
5249  /* function exit code */
5250  __pyx_L1_error:;
5251  __Pyx_XDECREF(__pyx_t_1);
5252  __Pyx_AddTraceback("PyClical.min_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
5253  __pyx_r = 0;
5254  __pyx_L0:;
5255  __Pyx_XGIVEREF(__pyx_r);
5256  __Pyx_RefNannyFinishContext();
5257  return __pyx_r;
5258  }
5259 
5260  /* Python wrapper */
5261  static PyObject *__pyx_pw_8PyClical_5min_neg(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
5262  static char __pyx_doc_8PyClical_4min_neg[] = "\n Minimum negative index, or 0 if none.\n\n >>> min_neg(index_set({1,2}))\n 0\n ";
5263  static PyObject *__pyx_pw_8PyClical_5min_neg(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
5264  PyObject *__pyx_r = 0;
5265  __Pyx_RefNannyDeclarations
5266  __Pyx_RefNannySetupContext("min_neg (wrapper)", 0);
5267  __pyx_r = __pyx_pf_8PyClical_4min_neg(__pyx_self, ((PyObject *)__pyx_v_obj));
5268 
5269  /* function exit code */
5270  __Pyx_RefNannyFinishContext();
5271  return __pyx_r;
5272  }
5273 
5274  static PyObject *__pyx_pf_8PyClical_4min_neg(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
5275  PyObject *__pyx_r = NULL;
5276  __Pyx_RefNannyDeclarations
5277  PyObject *__pyx_t_1 = NULL;
5278  int __pyx_lineno = 0;
5279  const char *__pyx_filename = NULL;
5280  int __pyx_clineno = 0;
5281  __Pyx_RefNannySetupContext("min_neg", 0);
5282  __Pyx_XDECREF(__pyx_r);
5283  __pyx_t_1 = __pyx_f_8PyClical_min_neg(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5284  __Pyx_GOTREF(__pyx_t_1);
5285  __pyx_r = __pyx_t_1;
5286  __pyx_t_1 = 0;
5287  goto __pyx_L0;
5288 
5289  /* function exit code */
5290  __pyx_L1_error:;
5291  __Pyx_XDECREF(__pyx_t_1);
5292  __Pyx_AddTraceback("PyClical.min_neg", __pyx_clineno, __pyx_lineno, __pyx_filename);
5293  __pyx_r = NULL;
5294  __pyx_L0:;
5295  __Pyx_XGIVEREF(__pyx_r);
5296  __Pyx_RefNannyFinishContext();
5297  return __pyx_r;
5298  }
5299 
5300  /* "PyClical.pyx":511
5301  * return glucat.min_neg( toIndexSet(obj) )
5302  *
5303  * cpdef inline max_pos(obj): # <<<<<<<<<<<<<<
5304  * """
5305  * Maximum positive index, or 0 if none.
5306  */
5307 
5308  static PyObject *__pyx_pw_8PyClical_7max_pos(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
5309  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_pos(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
5310  PyObject *__pyx_r = NULL;
5311  __Pyx_RefNannyDeclarations
5312  PyObject *__pyx_t_1 = NULL;
5313  int __pyx_lineno = 0;
5314  const char *__pyx_filename = NULL;
5315  int __pyx_clineno = 0;
5316  __Pyx_RefNannySetupContext("max_pos", 0);
5317 
5318  /* "PyClical.pyx":518
5319  * 2
5320  * """
5321  * return glucat.max_pos( toIndexSet(obj) ) # <<<<<<<<<<<<<<
5322  *
5323  * cdef inline vector[scalar_t] list_to_vector(lst):
5324  */
5325  __Pyx_XDECREF(__pyx_r);
5326  __pyx_t_1 = __Pyx_PyInt_From_int(max_pos(__pyx_f_8PyClical_toIndexSet(__pyx_v_obj))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5327  __Pyx_GOTREF(__pyx_t_1);
5328  __pyx_r = __pyx_t_1;
5329  __pyx_t_1 = 0;
5330  goto __pyx_L0;
5331 
5332  /* "PyClical.pyx":511
5333  * return glucat.min_neg( toIndexSet(obj) )
5334  *
5335  * cpdef inline max_pos(obj): # <<<<<<<<<<<<<<
5336  * """
5337  * Maximum positive index, or 0 if none.
5338  */
5339 
5340  /* function exit code */
5341  __pyx_L1_error:;
5342  __Pyx_XDECREF(__pyx_t_1);
5343  __Pyx_AddTraceback("PyClical.max_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
5344  __pyx_r = 0;
5345  __pyx_L0:;
5346  __Pyx_XGIVEREF(__pyx_r);
5347  __Pyx_RefNannyFinishContext();
5348  return __pyx_r;
5349  }
5350 
5351  /* Python wrapper */
5352  static PyObject *__pyx_pw_8PyClical_7max_pos(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
5353  static char __pyx_doc_8PyClical_6max_pos[] = "\n Maximum positive index, or 0 if none.\n\n >>> max_pos(index_set({1,2}))\n 2\n ";
5354  static PyObject *__pyx_pw_8PyClical_7max_pos(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
5355  PyObject *__pyx_r = 0;
5356  __Pyx_RefNannyDeclarations
5357  __Pyx_RefNannySetupContext("max_pos (wrapper)", 0);
5358  __pyx_r = __pyx_pf_8PyClical_6max_pos(__pyx_self, ((PyObject *)__pyx_v_obj));
5359 
5360  /* function exit code */
5361  __Pyx_RefNannyFinishContext();
5362  return __pyx_r;
5363  }
5364 
5365  static PyObject *__pyx_pf_8PyClical_6max_pos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
5366  PyObject *__pyx_r = NULL;
5367  __Pyx_RefNannyDeclarations
5368  PyObject *__pyx_t_1 = NULL;
5369  int __pyx_lineno = 0;
5370  const char *__pyx_filename = NULL;
5371  int __pyx_clineno = 0;
5372  __Pyx_RefNannySetupContext("max_pos", 0);
5373  __Pyx_XDECREF(__pyx_r);
5374  __pyx_t_1 = __pyx_f_8PyClical_max_pos(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5375  __Pyx_GOTREF(__pyx_t_1);
5376  __pyx_r = __pyx_t_1;
5377  __pyx_t_1 = 0;
5378  goto __pyx_L0;
5379 
5380  /* function exit code */
5381  __pyx_L1_error:;
5382  __Pyx_XDECREF(__pyx_t_1);
5383  __Pyx_AddTraceback("PyClical.max_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
5384  __pyx_r = NULL;
5385  __pyx_L0:;
5386  __Pyx_XGIVEREF(__pyx_r);
5387  __Pyx_RefNannyFinishContext();
5388  return __pyx_r;
5389  }
5390 
5391  /* "PyClical.pyx":520
5392  * return glucat.max_pos( toIndexSet(obj) )
5393  *
5394  * cdef inline vector[scalar_t] list_to_vector(lst): # <<<<<<<<<<<<<<
5395  * """
5396  * Create a C++ std:vector[scalar_t] from an iterable Python object.
5397  */
5398 
5399  static CYTHON_INLINE std::vector<scalar_t> __pyx_f_8PyClical_list_to_vector(PyObject *__pyx_v_lst) {
5400  std::vector<scalar_t> __pyx_v_v;
5401  PyObject *__pyx_v_s = NULL;
5402  std::vector<scalar_t> __pyx_r;
5403  __Pyx_RefNannyDeclarations
5404  PyObject *__pyx_t_1 = NULL;
5405  Py_ssize_t __pyx_t_2;
5406  PyObject *(*__pyx_t_3)(PyObject *);
5407  PyObject *__pyx_t_4 = NULL;
5408  scalar_t __pyx_t_5;
5409  int __pyx_lineno = 0;
5410  const char *__pyx_filename = NULL;
5411  int __pyx_clineno = 0;
5412  __Pyx_RefNannySetupContext("list_to_vector", 0);
5413 
5414  /* "PyClical.pyx":525
5415  * """
5416  * cdef vector[scalar_t] v
5417  * for s in lst: # <<<<<<<<<<<<<<
5418  * v.push_back(<scalar_t>s)
5419  * return v
5420  */
5421  if (likely(PyList_CheckExact(__pyx_v_lst)) || PyTuple_CheckExact(__pyx_v_lst)) {
5422  __pyx_t_1 = __pyx_v_lst; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
5423  __pyx_t_3 = NULL;
5424  } else {
5425  __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_lst); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5426  __Pyx_GOTREF(__pyx_t_1);
5427  __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5428  }
5429  for (;;) {
5430  if (likely(!__pyx_t_3)) {
5431  if (likely(PyList_CheckExact(__pyx_t_1))) {
5432  if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
5433  #if CYTHON_COMPILING_IN_CPYTHON
5434  __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_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5435  #else
5436  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5437  __Pyx_GOTREF(__pyx_t_4);
5438  #endif
5439  } else {
5440  if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
5441  #if CYTHON_COMPILING_IN_CPYTHON
5442  __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_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5443  #else
5444  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5445  __Pyx_GOTREF(__pyx_t_4);
5446  #endif
5447  }
5448  } else {
5449  __pyx_t_4 = __pyx_t_3(__pyx_t_1);
5450  if (unlikely(!__pyx_t_4)) {
5451  PyObject* exc_type = PyErr_Occurred();
5452  if (exc_type) {
5453  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
5454  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5455  }
5456  break;
5457  }
5458  __Pyx_GOTREF(__pyx_t_4);
5459  }
5460  __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_4);
5461  __pyx_t_4 = 0;
5462 
5463  /* "PyClical.pyx":526
5464  * cdef vector[scalar_t] v
5465  * for s in lst:
5466  * v.push_back(<scalar_t>s) # <<<<<<<<<<<<<<
5467  * return v
5468  *
5469  */
5470  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_s); if (unlikely((__pyx_t_5 == (scalar_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5471  try {
5472  __pyx_v_v.push_back(((scalar_t)__pyx_t_5));
5473  } catch(...) {
5474  __Pyx_CppExn2PyErr();
5475  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5476  }
5477 
5478  /* "PyClical.pyx":525
5479  * """
5480  * cdef vector[scalar_t] v
5481  * for s in lst: # <<<<<<<<<<<<<<
5482  * v.push_back(<scalar_t>s)
5483  * return v
5484  */
5485  }
5486  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5487 
5488  /* "PyClical.pyx":527
5489  * for s in lst:
5490  * v.push_back(<scalar_t>s)
5491  * return v # <<<<<<<<<<<<<<
5492  *
5493  * # Forward reference.
5494  */
5495  __pyx_r = __pyx_v_v;
5496  goto __pyx_L0;
5497 
5498  /* "PyClical.pyx":520
5499  * return glucat.max_pos( toIndexSet(obj) )
5500  *
5501  * cdef inline vector[scalar_t] list_to_vector(lst): # <<<<<<<<<<<<<<
5502  * """
5503  * Create a C++ std:vector[scalar_t] from an iterable Python object.
5504  */
5505 
5506  /* function exit code */
5507  __pyx_L1_error:;
5508  __Pyx_XDECREF(__pyx_t_1);
5509  __Pyx_XDECREF(__pyx_t_4);
5510  __Pyx_WriteUnraisable("PyClical.list_to_vector", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
5511  __pyx_L0:;
5512  __Pyx_XDECREF(__pyx_v_s);
5513  __Pyx_RefNannyFinishContext();
5514  return __pyx_r;
5515  }
5516 
5517  /* "PyClical.pyx":532
5518  * cdef class clifford
5519  *
5520  * cdef inline Clifford toClifford(obj): # <<<<<<<<<<<<<<
5521  * return clifford(obj).instance[0]
5522  *
5523  */
5524 
5525  static CYTHON_INLINE Clifford __pyx_f_8PyClical_toClifford(PyObject *__pyx_v_obj) {
5526  Clifford __pyx_r;
5527  __Pyx_RefNannyDeclarations
5528  PyObject *__pyx_t_1 = NULL;
5529  PyObject *__pyx_t_2 = NULL;
5530  int __pyx_lineno = 0;
5531  const char *__pyx_filename = NULL;
5532  int __pyx_clineno = 0;
5533  __Pyx_RefNannySetupContext("toClifford", 0);
5534 
5535  /* "PyClical.pyx":533
5536  *
5537  * cdef inline Clifford toClifford(obj):
5538  * return clifford(obj).instance[0] # <<<<<<<<<<<<<<
5539  *
5540  * cdef class clifford:
5541  */
5542  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5543  __Pyx_GOTREF(__pyx_t_1);
5544  __Pyx_INCREF(__pyx_v_obj);
5545  __Pyx_GIVEREF(__pyx_v_obj);
5546  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_obj);
5547  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5548  __Pyx_GOTREF(__pyx_t_2);
5549  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5550  __pyx_r = (((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2)->instance[0]);
5551  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5552  goto __pyx_L0;
5553 
5554  /* "PyClical.pyx":532
5555  * cdef class clifford
5556  *
5557  * cdef inline Clifford toClifford(obj): # <<<<<<<<<<<<<<
5558  * return clifford(obj).instance[0]
5559  *
5560  */
5561 
5562  /* function exit code */
5563  __pyx_L1_error:;
5564  __Pyx_XDECREF(__pyx_t_1);
5565  __Pyx_XDECREF(__pyx_t_2);
5566  __Pyx_WriteUnraisable("PyClical.toClifford", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
5567  __pyx_L0:;
5568  __Pyx_RefNannyFinishContext();
5569  return __pyx_r;
5570  }
5571 
5572  /* "PyClical.pyx":541
5573  * cdef Clifford *instance # Wrapped instance of C++ class Clifford.
5574  *
5575  * cdef inline wrap(clifford self, Clifford other): # <<<<<<<<<<<<<<
5576  * """
5577  * Wrap an instance of the C++ class Clifford.
5578  */
5579 
5580  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_8clifford_wrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, Clifford __pyx_v_other) {
5581  PyObject *__pyx_r = NULL;
5582  __Pyx_RefNannyDeclarations
5583  __Pyx_RefNannySetupContext("wrap", 0);
5584 
5585  /* "PyClical.pyx":545
5586  * Wrap an instance of the C++ class Clifford.
5587  * """
5588  * self.instance[0] = other # <<<<<<<<<<<<<<
5589  * return self
5590  *
5591  */
5592  (__pyx_v_self->instance[0]) = __pyx_v_other;
5593 
5594  /* "PyClical.pyx":546
5595  * """
5596  * self.instance[0] = other
5597  * return self # <<<<<<<<<<<<<<
5598  *
5599  * cdef inline Clifford unwrap(clifford self):
5600  */
5601  __Pyx_XDECREF(__pyx_r);
5602  __Pyx_INCREF(((PyObject *)__pyx_v_self));
5603  __pyx_r = ((PyObject *)__pyx_v_self);
5604  goto __pyx_L0;
5605 
5606  /* "PyClical.pyx":541
5607  * cdef Clifford *instance # Wrapped instance of C++ class Clifford.
5608  *
5609  * cdef inline wrap(clifford self, Clifford other): # <<<<<<<<<<<<<<
5610  * """
5611  * Wrap an instance of the C++ class Clifford.
5612  */
5613 
5614  /* function exit code */
5615  __pyx_L0:;
5616  __Pyx_XGIVEREF(__pyx_r);
5617  __Pyx_RefNannyFinishContext();
5618  return __pyx_r;
5619  }
5620 
5621  /* "PyClical.pyx":548
5622  * return self
5623  *
5624  * cdef inline Clifford unwrap(clifford self): # <<<<<<<<<<<<<<
5625  * """
5626  * Return the wrapped C++ Clifford instance.
5627  */
5628 
5629  static CYTHON_INLINE Clifford __pyx_f_8PyClical_8clifford_unwrap(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
5630  Clifford __pyx_r;
5631  __Pyx_RefNannyDeclarations
5632  __Pyx_RefNannySetupContext("unwrap", 0);
5633 
5634  /* "PyClical.pyx":552
5635  * Return the wrapped C++ Clifford instance.
5636  * """
5637  * return self.instance[0] # <<<<<<<<<<<<<<
5638  *
5639  * cpdef copy(clifford self):
5640  */
5641  __pyx_r = (__pyx_v_self->instance[0]);
5642  goto __pyx_L0;
5643 
5644  /* "PyClical.pyx":548
5645  * return self
5646  *
5647  * cdef inline Clifford unwrap(clifford self): # <<<<<<<<<<<<<<
5648  * """
5649  * Return the wrapped C++ Clifford instance.
5650  */
5651 
5652  /* function exit code */
5653  __pyx_L0:;
5654  __Pyx_RefNannyFinishContext();
5655  return __pyx_r;
5656  }
5657 
5658  /* "PyClical.pyx":554
5659  * return self.instance[0]
5660  *
5661  * cpdef copy(clifford self): # <<<<<<<<<<<<<<
5662  * """
5663  * Copy this clifford object.
5664  */
5665 
5666  static PyObject *__pyx_pw_8PyClical_8clifford_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
5667  static PyObject *__pyx_f_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, int __pyx_skip_dispatch) {
5668  PyObject *__pyx_r = NULL;
5669  __Pyx_RefNannyDeclarations
5670  PyObject *__pyx_t_1 = NULL;
5671  PyObject *__pyx_t_2 = NULL;
5672  PyObject *__pyx_t_3 = NULL;
5673  PyObject *__pyx_t_4 = NULL;
5674  int __pyx_lineno = 0;
5675  const char *__pyx_filename = NULL;
5676  int __pyx_clineno = 0;
5677  __Pyx_RefNannySetupContext("copy", 0);
5678  /* Check if called by wrapper */
5679  if (unlikely(__pyx_skip_dispatch)) ;
5680  /* Check if overridden in Python */
5681  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
5682  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5683  __Pyx_GOTREF(__pyx_t_1);
5684  if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_8PyClical_8clifford_1copy)) {
5685  __Pyx_XDECREF(__pyx_r);
5686  __Pyx_INCREF(__pyx_t_1);
5687  __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
5688  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
5689  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
5690  if (likely(__pyx_t_4)) {
5691  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5692  __Pyx_INCREF(__pyx_t_4);
5693  __Pyx_INCREF(function);
5694  __Pyx_DECREF_SET(__pyx_t_3, function);
5695  }
5696  }
5697  if (__pyx_t_4) {
5698  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5699  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5700  } else {
5701  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5702  }
5703  __Pyx_GOTREF(__pyx_t_2);
5704  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5705  __pyx_r = __pyx_t_2;
5706  __pyx_t_2 = 0;
5707  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5708  goto __pyx_L0;
5709  }
5710  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5711  }
5712 
5713  /* "PyClical.pyx":561
5714  * {2}
5715  * """
5716  * return clifford(self) # <<<<<<<<<<<<<<
5717  *
5718  * def __cinit__(self, other = 0, ixt = None):
5719  */
5720  __Pyx_XDECREF(__pyx_r);
5721  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5722  __Pyx_GOTREF(__pyx_t_1);
5723  __Pyx_INCREF(((PyObject *)__pyx_v_self));
5724  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
5725  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
5726  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5727  __Pyx_GOTREF(__pyx_t_2);
5728  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5729  __pyx_r = __pyx_t_2;
5730  __pyx_t_2 = 0;
5731  goto __pyx_L0;
5732 
5733  /* "PyClical.pyx":554
5734  * return self.instance[0]
5735  *
5736  * cpdef copy(clifford self): # <<<<<<<<<<<<<<
5737  * """
5738  * Copy this clifford object.
5739  */
5740 
5741  /* function exit code */
5742  __pyx_L1_error:;
5743  __Pyx_XDECREF(__pyx_t_1);
5744  __Pyx_XDECREF(__pyx_t_2);
5745  __Pyx_XDECREF(__pyx_t_3);
5746  __Pyx_XDECREF(__pyx_t_4);
5747  __Pyx_AddTraceback("PyClical.clifford.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
5748  __pyx_r = 0;
5749  __pyx_L0:;
5750  __Pyx_XGIVEREF(__pyx_r);
5751  __Pyx_RefNannyFinishContext();
5752  return __pyx_r;
5753  }
5754 
5755  /* Python wrapper */
5756  static PyObject *__pyx_pw_8PyClical_8clifford_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
5757  static char __pyx_doc_8PyClical_8clifford_copy[] = "\n Copy this clifford object.\n\n >>> x=clifford(\"1{2}\"); y=x.copy(); print y\n {2}\n ";
5758  static PyObject *__pyx_pw_8PyClical_8clifford_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
5759  PyObject *__pyx_r = 0;
5760  __Pyx_RefNannyDeclarations
5761  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
5762  __pyx_r = __pyx_pf_8PyClical_8clifford_copy(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
5763 
5764  /* function exit code */
5765  __Pyx_RefNannyFinishContext();
5766  return __pyx_r;
5767  }
5768 
5769  static PyObject *__pyx_pf_8PyClical_8clifford_copy(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
5770  PyObject *__pyx_r = NULL;
5771  __Pyx_RefNannyDeclarations
5772  PyObject *__pyx_t_1 = NULL;
5773  int __pyx_lineno = 0;
5774  const char *__pyx_filename = NULL;
5775  int __pyx_clineno = 0;
5776  __Pyx_RefNannySetupContext("copy", 0);
5777  __Pyx_XDECREF(__pyx_r);
5778  __pyx_t_1 = __pyx_f_8PyClical_8clifford_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5779  __Pyx_GOTREF(__pyx_t_1);
5780  __pyx_r = __pyx_t_1;
5781  __pyx_t_1 = 0;
5782  goto __pyx_L0;
5783 
5784  /* function exit code */
5785  __pyx_L1_error:;
5786  __Pyx_XDECREF(__pyx_t_1);
5787  __Pyx_AddTraceback("PyClical.clifford.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
5788  __pyx_r = NULL;
5789  __pyx_L0:;
5790  __Pyx_XGIVEREF(__pyx_r);
5791  __Pyx_RefNannyFinishContext();
5792  return __pyx_r;
5793  }
5794 
5795  /* "PyClical.pyx":563
5796  * return clifford(self)
5797  *
5798  * def __cinit__(self, other = 0, ixt = None): # <<<<<<<<<<<<<<
5799  * """
5800  * Construct an object of type clifford.
5801  */
5802 
5803  /* Python wrapper */
5804  static int __pyx_pw_8PyClical_8clifford_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5805  static int __pyx_pw_8PyClical_8clifford_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5806  PyObject *__pyx_v_other = 0;
5807  PyObject *__pyx_v_ixt = 0;
5808  int __pyx_lineno = 0;
5809  const char *__pyx_filename = NULL;
5810  int __pyx_clineno = 0;
5811  int __pyx_r;
5812  __Pyx_RefNannyDeclarations
5813  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
5814  {
5815  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_ixt,0};
5816  PyObject* values[2] = {0,0};
5817  values[0] = ((PyObject *)__pyx_int_0);
5818  values[1] = ((PyObject *)Py_None);
5819  if (unlikely(__pyx_kwds)) {
5820  Py_ssize_t kw_args;
5821  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5822  switch (pos_args) {
5823  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5824  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5825  case 0: break;
5826  default: goto __pyx_L5_argtuple_error;
5827  }
5828  kw_args = PyDict_Size(__pyx_kwds);
5829  switch (pos_args) {
5830  case 0:
5831  if (kw_args > 0) {
5832  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_other);
5833  if (value) { values[0] = value; kw_args--; }
5834  }
5835  case 1:
5836  if (kw_args > 0) {
5837  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ixt);
5838  if (value) { values[1] = value; kw_args--; }
5839  }
5840  }
5841  if (unlikely(kw_args > 0)) {
5842  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5843  }
5844  } else {
5845  switch (PyTuple_GET_SIZE(__pyx_args)) {
5846  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5847  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5848  case 0: break;
5849  default: goto __pyx_L5_argtuple_error;
5850  }
5851  }
5852  __pyx_v_other = values[0];
5853  __pyx_v_ixt = values[1];
5854  }
5855  goto __pyx_L4_argument_unpacking_done;
5856  __pyx_L5_argtuple_error:;
5857  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5858  __pyx_L3_error:;
5859  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5860  __Pyx_RefNannyFinishContext();
5861  return -1;
5862  __pyx_L4_argument_unpacking_done:;
5863  __pyx_r = __pyx_pf_8PyClical_8clifford_2__cinit__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_other, __pyx_v_ixt);
5864 
5865  /* function exit code */
5866  __Pyx_RefNannyFinishContext();
5867  return __pyx_r;
5868  }
5869 
5870  static int __pyx_pf_8PyClical_8clifford_2__cinit__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_ixt) {
5871  PyObject *__pyx_v_error_msg_prefix = NULL;
5872  PyObject *__pyx_v_err = NULL;
5873  int __pyx_r;
5874  __Pyx_RefNannyDeclarations
5875  int __pyx_t_1;
5876  int __pyx_t_2;
5877  PyObject *__pyx_t_3 = NULL;
5878  PyObject *__pyx_t_4 = NULL;
5879  PyObject *__pyx_t_5 = NULL;
5880  Clifford *__pyx_t_6;
5881  PyObject *__pyx_t_7 = NULL;
5882  PyObject *__pyx_t_8 = NULL;
5883  scalar_t __pyx_t_9;
5884  PyObject *__pyx_t_10 = NULL;
5885  PyObject *__pyx_t_11 = NULL;
5886  PyObject *__pyx_t_12 = NULL;
5887  char *__pyx_t_13;
5888  int __pyx_t_14;
5889  PyObject *__pyx_t_15 = NULL;
5890  PyObject *__pyx_t_16 = NULL;
5891  PyObject *__pyx_t_17 = NULL;
5892  PyObject *__pyx_t_18 = NULL;
5893  int __pyx_lineno = 0;
5894  const char *__pyx_filename = NULL;
5895  int __pyx_clineno = 0;
5896  __Pyx_RefNannySetupContext("__cinit__", 0);
5897 
5898  /* "PyClical.pyx":588
5899  * 2{1}+3{2}
5900  * """
5901  * error_msg_prefix = "Cannot initialize clifford object from" # <<<<<<<<<<<<<<
5902  * if ixt is None:
5903  * try:
5904  */
5905  __Pyx_INCREF(__pyx_kp_s_Cannot_initialize_clifford_objec);
5906  __pyx_v_error_msg_prefix = __pyx_kp_s_Cannot_initialize_clifford_objec;
5907 
5908  /* "PyClical.pyx":589
5909  * """
5910  * error_msg_prefix = "Cannot initialize clifford object from"
5911  * if ixt is None: # <<<<<<<<<<<<<<
5912  * try:
5913  * if isinstance(other, clifford):
5914  */
5915  __pyx_t_1 = (__pyx_v_ixt == Py_None);
5916  __pyx_t_2 = (__pyx_t_1 != 0);
5917  if (__pyx_t_2) {
5918 
5919  /* "PyClical.pyx":590
5920  * error_msg_prefix = "Cannot initialize clifford object from"
5921  * if ixt is None:
5922  * try: # <<<<<<<<<<<<<<
5923  * if isinstance(other, clifford):
5924  * self.instance = new Clifford((<clifford>other).unwrap())
5925  */
5926  {
5927  __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
5928  __Pyx_XGOTREF(__pyx_t_3);
5929  __Pyx_XGOTREF(__pyx_t_4);
5930  __Pyx_XGOTREF(__pyx_t_5);
5931  /*try:*/ {
5932 
5933  /* "PyClical.pyx":591
5934  * if ixt is None:
5935  * try:
5936  * if isinstance(other, clifford): # <<<<<<<<<<<<<<
5937  * self.instance = new Clifford((<clifford>other).unwrap())
5938  * elif isinstance(other, index_set):
5939  */
5940  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_8PyClical_clifford);
5941  __pyx_t_1 = (__pyx_t_2 != 0);
5942  if (__pyx_t_1) {
5943 
5944  /* "PyClical.pyx":592
5945  * try:
5946  * if isinstance(other, clifford):
5947  * self.instance = new Clifford((<clifford>other).unwrap()) # <<<<<<<<<<<<<<
5948  * elif isinstance(other, index_set):
5949  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
5950  */
5951  try {
5952  __pyx_t_6 = new Clifford(__pyx_f_8PyClical_8clifford_unwrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_other)));
5953  } catch(...) {
5954  __Pyx_CppExn2PyErr();
5955  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
5956  }
5957  __pyx_v_self->instance = __pyx_t_6;
5958 
5959  /* "PyClical.pyx":591
5960  * if ixt is None:
5961  * try:
5962  * if isinstance(other, clifford): # <<<<<<<<<<<<<<
5963  * self.instance = new Clifford((<clifford>other).unwrap())
5964  * elif isinstance(other, index_set):
5965  */
5966  goto __pyx_L12;
5967  }
5968 
5969  /* "PyClical.pyx":593
5970  * if isinstance(other, clifford):
5971  * self.instance = new Clifford((<clifford>other).unwrap())
5972  * elif isinstance(other, index_set): # <<<<<<<<<<<<<<
5973  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
5974  * elif isinstance(other, numbers.Real):
5975  */
5976  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_8PyClical_index_set);
5977  __pyx_t_2 = (__pyx_t_1 != 0);
5978  if (__pyx_t_2) {
5979 
5980  /* "PyClical.pyx":594
5981  * self.instance = new Clifford((<clifford>other).unwrap())
5982  * elif isinstance(other, index_set):
5983  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0) # <<<<<<<<<<<<<<
5984  * elif isinstance(other, numbers.Real):
5985  * self.instance = new Clifford(<scalar_t>other)
5986  */
5987  try {
5988  __pyx_t_6 = new Clifford(__pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_other)), ((scalar_t)1.0));
5989  } catch(...) {
5990  __Pyx_CppExn2PyErr();
5991  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
5992  }
5993  __pyx_v_self->instance = __pyx_t_6;
5994 
5995  /* "PyClical.pyx":593
5996  * if isinstance(other, clifford):
5997  * self.instance = new Clifford((<clifford>other).unwrap())
5998  * elif isinstance(other, index_set): # <<<<<<<<<<<<<<
5999  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
6000  * elif isinstance(other, numbers.Real):
6001  */
6002  goto __pyx_L12;
6003  }
6004 
6005  /* "PyClical.pyx":595
6006  * elif isinstance(other, index_set):
6007  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
6008  * elif isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
6009  * self.instance = new Clifford(<scalar_t>other)
6010  * elif isinstance(other, str):
6011  */
6012  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6013  __Pyx_GOTREF(__pyx_t_7);
6014  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Real); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6015  __Pyx_GOTREF(__pyx_t_8);
6016  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6017  __pyx_t_2 = PyObject_IsInstance(__pyx_v_other, __pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6018  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6019  __pyx_t_1 = (__pyx_t_2 != 0);
6020  if (__pyx_t_1) {
6021 
6022  /* "PyClical.pyx":596
6023  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
6024  * elif isinstance(other, numbers.Real):
6025  * self.instance = new Clifford(<scalar_t>other) # <<<<<<<<<<<<<<
6026  * elif isinstance(other, str):
6027  * try:
6028  */
6029  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_other); if (unlikely((__pyx_t_9 == (scalar_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6030  try {
6031  __pyx_t_6 = new Clifford(((scalar_t)__pyx_t_9));
6032  } catch(...) {
6033  __Pyx_CppExn2PyErr();
6034  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6035  }
6036  __pyx_v_self->instance = __pyx_t_6;
6037 
6038  /* "PyClical.pyx":595
6039  * elif isinstance(other, index_set):
6040  * self.instance = new Clifford((<index_set>other).unwrap(), <scalar_t>1.0)
6041  * elif isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
6042  * self.instance = new Clifford(<scalar_t>other)
6043  * elif isinstance(other, str):
6044  */
6045  goto __pyx_L12;
6046  }
6047 
6048  /* "PyClical.pyx":597
6049  * elif isinstance(other, numbers.Real):
6050  * self.instance = new Clifford(<scalar_t>other)
6051  * elif isinstance(other, str): # <<<<<<<<<<<<<<
6052  * try:
6053  * self.instance = new Clifford(<char *>other)
6054  */
6055  __pyx_t_1 = PyString_Check(__pyx_v_other);
6056  __pyx_t_2 = (__pyx_t_1 != 0);
6057  if (__pyx_t_2) {
6058 
6059  /* "PyClical.pyx":598
6060  * self.instance = new Clifford(<scalar_t>other)
6061  * elif isinstance(other, str):
6062  * try: # <<<<<<<<<<<<<<
6063  * self.instance = new Clifford(<char *>other)
6064  * except RuntimeError:
6065  */
6066  {
6067  __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
6068  __Pyx_XGOTREF(__pyx_t_10);
6069  __Pyx_XGOTREF(__pyx_t_11);
6070  __Pyx_XGOTREF(__pyx_t_12);
6071  /*try:*/ {
6072 
6073  /* "PyClical.pyx":599
6074  * elif isinstance(other, str):
6075  * try:
6076  * self.instance = new Clifford(<char *>other) # <<<<<<<<<<<<<<
6077  * except RuntimeError:
6078  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
6079  */
6080  __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_other); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
6081  try {
6082  __pyx_t_6 = new Clifford(((char *)__pyx_t_13));
6083  } catch(...) {
6084  __Pyx_CppExn2PyErr();
6085  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
6086  }
6087  __pyx_v_self->instance = __pyx_t_6;
6088 
6089  /* "PyClical.pyx":598
6090  * self.instance = new Clifford(<scalar_t>other)
6091  * elif isinstance(other, str):
6092  * try: # <<<<<<<<<<<<<<
6093  * self.instance = new Clifford(<char *>other)
6094  * except RuntimeError:
6095  */
6096  }
6097  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
6098  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
6099  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
6100  goto __pyx_L20_try_end;
6101  __pyx_L13_error:;
6102  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
6103  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
6104 
6105  /* "PyClical.pyx":600
6106  * try:
6107  * self.instance = new Clifford(<char *>other)
6108  * except RuntimeError: # <<<<<<<<<<<<<<
6109  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
6110  * else:
6111  */
6112  __pyx_t_14 = PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
6113  if (__pyx_t_14) {
6114  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6115  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6116  __Pyx_GOTREF(__pyx_t_8);
6117  __Pyx_GOTREF(__pyx_t_7);
6118  __Pyx_GOTREF(__pyx_t_15);
6119 
6120  /* "PyClical.pyx":601
6121  * self.instance = new Clifford(<char *>other)
6122  * except RuntimeError:
6123  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".") # <<<<<<<<<<<<<<
6124  * else:
6125  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6126  */
6127  __pyx_t_16 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s_invalid_string); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6128  __Pyx_GOTREF(__pyx_t_16);
6129  __pyx_t_17 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6130  __Pyx_GOTREF(__pyx_t_17);
6131  __pyx_t_18 = PyNumber_Add(__pyx_t_16, __pyx_t_17); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6132  __Pyx_GOTREF(__pyx_t_18);
6133  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6134  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
6135  __pyx_t_17 = PyNumber_Add(__pyx_t_18, __pyx_kp_s_); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6136  __Pyx_GOTREF(__pyx_t_17);
6137  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6138  __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6139  __Pyx_GOTREF(__pyx_t_18);
6140  __Pyx_GIVEREF(__pyx_t_17);
6141  PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17);
6142  __pyx_t_17 = 0;
6143  __pyx_t_17 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_18, NULL); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6144  __Pyx_GOTREF(__pyx_t_17);
6145  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6146  __Pyx_Raise(__pyx_t_17, 0, 0, 0);
6147  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
6148  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
6149  }
6150  goto __pyx_L15_except_error;
6151  __pyx_L15_except_error:;
6152 
6153  /* "PyClical.pyx":598
6154  * self.instance = new Clifford(<scalar_t>other)
6155  * elif isinstance(other, str):
6156  * try: # <<<<<<<<<<<<<<
6157  * self.instance = new Clifford(<char *>other)
6158  * except RuntimeError:
6159  */
6160  __Pyx_XGIVEREF(__pyx_t_10);
6161  __Pyx_XGIVEREF(__pyx_t_11);
6162  __Pyx_XGIVEREF(__pyx_t_12);
6163  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
6164  goto __pyx_L4_error;
6165  __pyx_L20_try_end:;
6166  }
6167 
6168  /* "PyClical.pyx":597
6169  * elif isinstance(other, numbers.Real):
6170  * self.instance = new Clifford(<scalar_t>other)
6171  * elif isinstance(other, str): # <<<<<<<<<<<<<<
6172  * try:
6173  * self.instance = new Clifford(<char *>other)
6174  */
6175  goto __pyx_L12;
6176  }
6177 
6178  /* "PyClical.pyx":603
6179  * raise ValueError(error_msg_prefix + " invalid string " + repr(other) + ".")
6180  * else:
6181  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".") # <<<<<<<<<<<<<<
6182  * except RuntimeError as err:
6183  * raise ValueError(error_msg_prefix + " " + str(type(other))
6184  */
6185  /*else*/ {
6186  __pyx_t_15 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s__2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6187  __Pyx_GOTREF(__pyx_t_15);
6188  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6189  __Pyx_GOTREF(__pyx_t_7);
6190  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6191  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6192  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)Py_TYPE(__pyx_v_other)));
6193  __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6194  __Pyx_GOTREF(__pyx_t_8);
6195  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6196  __pyx_t_7 = PyNumber_Add(__pyx_t_15, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6197  __Pyx_GOTREF(__pyx_t_7);
6198  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6199  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6200  __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6201  __Pyx_GOTREF(__pyx_t_8);
6202  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6203  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6204  __Pyx_GOTREF(__pyx_t_7);
6205  __Pyx_GIVEREF(__pyx_t_8);
6206  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
6207  __pyx_t_8 = 0;
6208  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6209  __Pyx_GOTREF(__pyx_t_8);
6210  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6211  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
6212  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6213  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6214  }
6215  __pyx_L12:;
6216 
6217  /* "PyClical.pyx":590
6218  * error_msg_prefix = "Cannot initialize clifford object from"
6219  * if ixt is None:
6220  * try: # <<<<<<<<<<<<<<
6221  * if isinstance(other, clifford):
6222  * self.instance = new Clifford((<clifford>other).unwrap())
6223  */
6224  }
6225  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6226  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6227  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
6228  goto __pyx_L11_try_end;
6229  __pyx_L4_error:;
6230  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
6231  __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
6232  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
6233  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
6234  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
6235  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
6236 
6237  /* "PyClical.pyx":604
6238  * else:
6239  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6240  * except RuntimeError as err: # <<<<<<<<<<<<<<
6241  * raise ValueError(error_msg_prefix + " " + str(type(other))
6242  * + " value " + repr(other) + ":"
6243  */
6244  __pyx_t_14 = PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
6245  if (__pyx_t_14) {
6246  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6247  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6248  __Pyx_GOTREF(__pyx_t_8);
6249  __Pyx_GOTREF(__pyx_t_7);
6250  __Pyx_GOTREF(__pyx_t_15);
6251  __Pyx_INCREF(__pyx_t_7);
6252  __pyx_v_err = __pyx_t_7;
6253 
6254  /* "PyClical.pyx":605
6255  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6256  * except RuntimeError as err:
6257  * raise ValueError(error_msg_prefix + " " + str(type(other)) # <<<<<<<<<<<<<<
6258  * + " value " + repr(other) + ":"
6259  * + "\n\t" + str(err))
6260  */
6261  __pyx_t_17 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s__2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6262  __Pyx_GOTREF(__pyx_t_17);
6263  __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6264  __Pyx_GOTREF(__pyx_t_18);
6265  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6266  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6267  PyTuple_SET_ITEM(__pyx_t_18, 0, ((PyObject *)Py_TYPE(__pyx_v_other)));
6268  __pyx_t_16 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_18, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6269  __Pyx_GOTREF(__pyx_t_16);
6270  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6271  __pyx_t_18 = PyNumber_Add(__pyx_t_17, __pyx_t_16); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6272  __Pyx_GOTREF(__pyx_t_18);
6273  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
6274  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6275 
6276  /* "PyClical.pyx":606
6277  * except RuntimeError as err:
6278  * raise ValueError(error_msg_prefix + " " + str(type(other))
6279  * + " value " + repr(other) + ":" # <<<<<<<<<<<<<<
6280  * + "\n\t" + str(err))
6281  * elif isinstance(ixt, index_set):
6282  */
6283  __pyx_t_16 = PyNumber_Add(__pyx_t_18, __pyx_kp_s_value); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6284  __Pyx_GOTREF(__pyx_t_16);
6285  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6286  __pyx_t_18 = PyObject_Repr(__pyx_v_other); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6287  __Pyx_GOTREF(__pyx_t_18);
6288  __pyx_t_17 = PyNumber_Add(__pyx_t_16, __pyx_t_18); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6289  __Pyx_GOTREF(__pyx_t_17);
6290  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6291  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6292  __pyx_t_18 = PyNumber_Add(__pyx_t_17, __pyx_kp_s__3); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6293  __Pyx_GOTREF(__pyx_t_18);
6294  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
6295 
6296  /* "PyClical.pyx":607
6297  * raise ValueError(error_msg_prefix + " " + str(type(other))
6298  * + " value " + repr(other) + ":"
6299  * + "\n\t" + str(err)) # <<<<<<<<<<<<<<
6300  * elif isinstance(ixt, index_set):
6301  * if isinstance(other, numbers.Real):
6302  */
6303  __pyx_t_17 = PyNumber_Add(__pyx_t_18, __pyx_kp_s__4); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6304  __Pyx_GOTREF(__pyx_t_17);
6305  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6306  __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6307  __Pyx_GOTREF(__pyx_t_18);
6308  __Pyx_INCREF(__pyx_v_err);
6309  __Pyx_GIVEREF(__pyx_v_err);
6310  PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_v_err);
6311  __pyx_t_16 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_18, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6312  __Pyx_GOTREF(__pyx_t_16);
6313  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6314  __pyx_t_18 = PyNumber_Add(__pyx_t_17, __pyx_t_16); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6315  __Pyx_GOTREF(__pyx_t_18);
6316  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
6317  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6318 
6319  /* "PyClical.pyx":605
6320  * raise TypeError(error_msg_prefix + " " + str(type(other)) + ".")
6321  * except RuntimeError as err:
6322  * raise ValueError(error_msg_prefix + " " + str(type(other)) # <<<<<<<<<<<<<<
6323  * + " value " + repr(other) + ":"
6324  * + "\n\t" + str(err))
6325  */
6326  __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6327  __Pyx_GOTREF(__pyx_t_16);
6328  __Pyx_GIVEREF(__pyx_t_18);
6329  PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_18);
6330  __pyx_t_18 = 0;
6331  __pyx_t_18 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_16, NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6332  __Pyx_GOTREF(__pyx_t_18);
6333  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
6334  __Pyx_Raise(__pyx_t_18, 0, 0, 0);
6335  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6336  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6337  }
6338  goto __pyx_L6_except_error;
6339  __pyx_L6_except_error:;
6340 
6341  /* "PyClical.pyx":590
6342  * error_msg_prefix = "Cannot initialize clifford object from"
6343  * if ixt is None:
6344  * try: # <<<<<<<<<<<<<<
6345  * if isinstance(other, clifford):
6346  * self.instance = new Clifford((<clifford>other).unwrap())
6347  */
6348  __Pyx_XGIVEREF(__pyx_t_3);
6349  __Pyx_XGIVEREF(__pyx_t_4);
6350  __Pyx_XGIVEREF(__pyx_t_5);
6351  __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
6352  goto __pyx_L1_error;
6353  __pyx_L11_try_end:;
6354  }
6355 
6356  /* "PyClical.pyx":589
6357  * """
6358  * error_msg_prefix = "Cannot initialize clifford object from"
6359  * if ixt is None: # <<<<<<<<<<<<<<
6360  * try:
6361  * if isinstance(other, clifford):
6362  */
6363  goto __pyx_L3;
6364  }
6365 
6366  /* "PyClical.pyx":608
6367  * + " value " + repr(other) + ":"
6368  * + "\n\t" + str(err))
6369  * elif isinstance(ixt, index_set): # <<<<<<<<<<<<<<
6370  * if isinstance(other, numbers.Real):
6371  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6372  */
6373  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_ixt, __pyx_ptype_8PyClical_index_set);
6374  __pyx_t_1 = (__pyx_t_2 != 0);
6375  if (__pyx_t_1) {
6376 
6377  /* "PyClical.pyx":609
6378  * + "\n\t" + str(err))
6379  * elif isinstance(ixt, index_set):
6380  * if isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
6381  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6382  * elif isinstance(other, collections.Sequence):
6383  */
6384  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6385  __Pyx_GOTREF(__pyx_t_15);
6386  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_Real); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6387  __Pyx_GOTREF(__pyx_t_7);
6388  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6389  __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_7); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6390  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6391  __pyx_t_2 = (__pyx_t_1 != 0);
6392  if (__pyx_t_2) {
6393 
6394  /* "PyClical.pyx":610
6395  * elif isinstance(ixt, index_set):
6396  * if isinstance(other, numbers.Real):
6397  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other) # <<<<<<<<<<<<<<
6398  * elif isinstance(other, collections.Sequence):
6399  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
6400  */
6401  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_other); if (unlikely((__pyx_t_9 == (scalar_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6402  try {
6403  __pyx_t_6 = new Clifford(__pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_ixt)), ((scalar_t)__pyx_t_9));
6404  } catch(...) {
6405  __Pyx_CppExn2PyErr();
6406  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6407  }
6408  __pyx_v_self->instance = __pyx_t_6;
6409 
6410  /* "PyClical.pyx":609
6411  * + "\n\t" + str(err))
6412  * elif isinstance(ixt, index_set):
6413  * if isinstance(other, numbers.Real): # <<<<<<<<<<<<<<
6414  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6415  * elif isinstance(other, collections.Sequence):
6416  */
6417  goto __pyx_L25;
6418  }
6419 
6420  /* "PyClical.pyx":611
6421  * if isinstance(other, numbers.Real):
6422  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6423  * elif isinstance(other, collections.Sequence): # <<<<<<<<<<<<<<
6424  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
6425  * else:
6426  */
6427  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6428  __Pyx_GOTREF(__pyx_t_7);
6429  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6430  __Pyx_GOTREF(__pyx_t_15);
6431  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6432  __pyx_t_2 = PyObject_IsInstance(__pyx_v_other, __pyx_t_15); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6433  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6434  __pyx_t_1 = (__pyx_t_2 != 0);
6435  if (__pyx_t_1) {
6436 
6437  /* "PyClical.pyx":612
6438  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6439  * elif isinstance(other, collections.Sequence):
6440  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap()) # <<<<<<<<<<<<<<
6441  * else:
6442  * raise TypeError(error_msg_prefix + " (" + str(type(other))
6443  */
6444  try {
6445  __pyx_t_6 = new Clifford(__pyx_f_8PyClical_list_to_vector(__pyx_v_other), __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_ixt)));
6446  } catch(...) {
6447  __Pyx_CppExn2PyErr();
6448  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6449  }
6450  __pyx_v_self->instance = __pyx_t_6;
6451 
6452  /* "PyClical.pyx":611
6453  * if isinstance(other, numbers.Real):
6454  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6455  * elif isinstance(other, collections.Sequence): # <<<<<<<<<<<<<<
6456  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
6457  * else:
6458  */
6459  goto __pyx_L25;
6460  }
6461 
6462  /* "PyClical.pyx":614
6463  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
6464  * else:
6465  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
6466  * + ", " + repr(ixt) + ").")
6467  * else:
6468  */
6469  /*else*/ {
6470  __pyx_t_15 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s__5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6471  __Pyx_GOTREF(__pyx_t_15);
6472  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6473  __Pyx_GOTREF(__pyx_t_7);
6474  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6475  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6476  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)Py_TYPE(__pyx_v_other)));
6477  __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6478  __Pyx_GOTREF(__pyx_t_8);
6479  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6480  __pyx_t_7 = PyNumber_Add(__pyx_t_15, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6481  __Pyx_GOTREF(__pyx_t_7);
6482  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6483  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6484 
6485  /* "PyClical.pyx":615
6486  * else:
6487  * raise TypeError(error_msg_prefix + " (" + str(type(other))
6488  * + ", " + repr(ixt) + ").") # <<<<<<<<<<<<<<
6489  * else:
6490  * raise TypeError(error_msg_prefix + " (" + str(type(other))
6491  */
6492  __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_kp_s__6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6493  __Pyx_GOTREF(__pyx_t_8);
6494  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6495  __pyx_t_7 = PyObject_Repr(__pyx_v_ixt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6496  __Pyx_GOTREF(__pyx_t_7);
6497  __pyx_t_15 = PyNumber_Add(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6498  __Pyx_GOTREF(__pyx_t_15);
6499  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6500  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6501  __pyx_t_7 = PyNumber_Add(__pyx_t_15, __pyx_kp_s__7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6502  __Pyx_GOTREF(__pyx_t_7);
6503  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6504 
6505  /* "PyClical.pyx":614
6506  * self.instance = new Clifford(list_to_vector(other), (<index_set>ixt).unwrap())
6507  * else:
6508  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
6509  * + ", " + repr(ixt) + ").")
6510  * else:
6511  */
6512  __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6513  __Pyx_GOTREF(__pyx_t_15);
6514  __Pyx_GIVEREF(__pyx_t_7);
6515  PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_7);
6516  __pyx_t_7 = 0;
6517  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6518  __Pyx_GOTREF(__pyx_t_7);
6519  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6520  __Pyx_Raise(__pyx_t_7, 0, 0, 0);
6521  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6522  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6523  }
6524  __pyx_L25:;
6525 
6526  /* "PyClical.pyx":608
6527  * + " value " + repr(other) + ":"
6528  * + "\n\t" + str(err))
6529  * elif isinstance(ixt, index_set): # <<<<<<<<<<<<<<
6530  * if isinstance(other, numbers.Real):
6531  * self.instance = new Clifford((<index_set>ixt).unwrap(), <scalar_t>other)
6532  */
6533  goto __pyx_L3;
6534  }
6535 
6536  /* "PyClical.pyx":617
6537  * + ", " + repr(ixt) + ").")
6538  * else:
6539  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
6540  * + ", " + str(type(ixt)) + ").")
6541  *
6542  */
6543  /*else*/ {
6544  __pyx_t_7 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s__5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6545  __Pyx_GOTREF(__pyx_t_7);
6546  __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6547  __Pyx_GOTREF(__pyx_t_15);
6548  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6549  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_other)));
6550  PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)Py_TYPE(__pyx_v_other)));
6551  __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_15, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6552  __Pyx_GOTREF(__pyx_t_8);
6553  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6554  __pyx_t_15 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6555  __Pyx_GOTREF(__pyx_t_15);
6556  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6557  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6558 
6559  /* "PyClical.pyx":618
6560  * else:
6561  * raise TypeError(error_msg_prefix + " (" + str(type(other))
6562  * + ", " + str(type(ixt)) + ").") # <<<<<<<<<<<<<<
6563  *
6564  * def __dealloc__(self):
6565  */
6566  __pyx_t_8 = PyNumber_Add(__pyx_t_15, __pyx_kp_s__6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6567  __Pyx_GOTREF(__pyx_t_8);
6568  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6569  __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6570  __Pyx_GOTREF(__pyx_t_15);
6571  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_ixt)));
6572  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_ixt)));
6573  PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)Py_TYPE(__pyx_v_ixt)));
6574  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6575  __Pyx_GOTREF(__pyx_t_7);
6576  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6577  __pyx_t_15 = PyNumber_Add(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6578  __Pyx_GOTREF(__pyx_t_15);
6579  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6580  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6581  __pyx_t_7 = PyNumber_Add(__pyx_t_15, __pyx_kp_s__7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6582  __Pyx_GOTREF(__pyx_t_7);
6583  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6584 
6585  /* "PyClical.pyx":617
6586  * + ", " + repr(ixt) + ").")
6587  * else:
6588  * raise TypeError(error_msg_prefix + " (" + str(type(other)) # <<<<<<<<<<<<<<
6589  * + ", " + str(type(ixt)) + ").")
6590  *
6591  */
6592  __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6593  __Pyx_GOTREF(__pyx_t_15);
6594  __Pyx_GIVEREF(__pyx_t_7);
6595  PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_7);
6596  __pyx_t_7 = 0;
6597  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6598  __Pyx_GOTREF(__pyx_t_7);
6599  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
6600  __Pyx_Raise(__pyx_t_7, 0, 0, 0);
6601  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6602  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6603  }
6604  __pyx_L3:;
6605 
6606  /* "PyClical.pyx":563
6607  * return clifford(self)
6608  *
6609  * def __cinit__(self, other = 0, ixt = None): # <<<<<<<<<<<<<<
6610  * """
6611  * Construct an object of type clifford.
6612  */
6613 
6614  /* function exit code */
6615  __pyx_r = 0;
6616  goto __pyx_L0;
6617  __pyx_L1_error:;
6618  __Pyx_XDECREF(__pyx_t_7);
6619  __Pyx_XDECREF(__pyx_t_8);
6620  __Pyx_XDECREF(__pyx_t_15);
6621  __Pyx_XDECREF(__pyx_t_16);
6622  __Pyx_XDECREF(__pyx_t_17);
6623  __Pyx_XDECREF(__pyx_t_18);
6624  __Pyx_AddTraceback("PyClical.clifford.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6625  __pyx_r = -1;
6626  __pyx_L0:;
6627  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
6628  __Pyx_XDECREF(__pyx_v_err);
6629  __Pyx_RefNannyFinishContext();
6630  return __pyx_r;
6631  }
6632 
6633  /* "PyClical.pyx":620
6634  * + ", " + str(type(ixt)) + ").")
6635  *
6636  * def __dealloc__(self): # <<<<<<<<<<<<<<
6637  * """
6638  * Clean up by deallocating the instance of C++ class Clifford.
6639  */
6640 
6641  /* Python wrapper */
6642  static void __pyx_pw_8PyClical_8clifford_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
6643  static void __pyx_pw_8PyClical_8clifford_5__dealloc__(PyObject *__pyx_v_self) {
6644  __Pyx_RefNannyDeclarations
6645  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
6646  __pyx_pf_8PyClical_8clifford_4__dealloc__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
6647 
6648  /* function exit code */
6649  __Pyx_RefNannyFinishContext();
6650  }
6651 
6652  static void __pyx_pf_8PyClical_8clifford_4__dealloc__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
6653  __Pyx_RefNannyDeclarations
6654  __Pyx_RefNannySetupContext("__dealloc__", 0);
6655 
6656  /* "PyClical.pyx":624
6657  * Clean up by deallocating the instance of C++ class Clifford.
6658  * """
6659  * del self.instance # <<<<<<<<<<<<<<
6660  *
6661  * def __contains__(self, x):
6662  */
6663  delete __pyx_v_self->instance;
6664 
6665  /* "PyClical.pyx":620
6666  * + ", " + str(type(ixt)) + ").")
6667  *
6668  * def __dealloc__(self): # <<<<<<<<<<<<<<
6669  * """
6670  * Clean up by deallocating the instance of C++ class Clifford.
6671  */
6672 
6673  /* function exit code */
6674  __Pyx_RefNannyFinishContext();
6675  }
6676 
6677  /* "PyClical.pyx":626
6678  * del self.instance
6679  *
6680  * def __contains__(self, x): # <<<<<<<<<<<<<<
6681  * """
6682  * Not applicable.
6683  */
6684 
6685  /* Python wrapper */
6686  static int __pyx_pw_8PyClical_8clifford_7__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
6687  static char __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 ";
6688  #if CYTHON_COMPILING_IN_CPYTHON
6689  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_6__contains__;
6690  #endif
6691  static int __pyx_pw_8PyClical_8clifford_7__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
6692  int __pyx_r;
6693  __Pyx_RefNannyDeclarations
6694  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
6695  __pyx_r = __pyx_pf_8PyClical_8clifford_6__contains__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_x));
6696 
6697  /* function exit code */
6698  __Pyx_RefNannyFinishContext();
6699  return __pyx_r;
6700  }
6701 
6702  static int __pyx_pf_8PyClical_8clifford_6__contains__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x) {
6703  int __pyx_r;
6704  __Pyx_RefNannyDeclarations
6705  PyObject *__pyx_t_1 = NULL;
6706  int __pyx_lineno = 0;
6707  const char *__pyx_filename = NULL;
6708  int __pyx_clineno = 0;
6709  __Pyx_RefNannySetupContext("__contains__", 0);
6710 
6711  /* "PyClical.pyx":635
6712  * TypeError: Not applicable.
6713  * """
6714  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
6715  *
6716  * def __iter__(self):
6717  */
6718  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6719  __Pyx_GOTREF(__pyx_t_1);
6720  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
6721  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6722  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6723 
6724  /* "PyClical.pyx":626
6725  * del self.instance
6726  *
6727  * def __contains__(self, x): # <<<<<<<<<<<<<<
6728  * """
6729  * Not applicable.
6730  */
6731 
6732  /* function exit code */
6733  __pyx_L1_error:;
6734  __Pyx_XDECREF(__pyx_t_1);
6735  __Pyx_AddTraceback("PyClical.clifford.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6736  __pyx_r = -1;
6737  __Pyx_RefNannyFinishContext();
6738  return __pyx_r;
6739  }
6740 
6741  /* "PyClical.pyx":637
6742  * raise TypeError("Not applicable.")
6743  *
6744  * def __iter__(self): # <<<<<<<<<<<<<<
6745  * """
6746  * Not applicable.
6747  */
6748 
6749  /* Python wrapper */
6750  static PyObject *__pyx_pw_8PyClical_8clifford_9__iter__(PyObject *__pyx_v_self); /*proto*/
6751  static char __pyx_doc_8PyClical_8clifford_8__iter__[] = "\n Not applicable.\n\n >>> for a in clifford(index_set({-3,4,7})): print a,\n Traceback (most recent call last):\n ...\n TypeError: Not applicable.\n ";
6752  #if CYTHON_COMPILING_IN_CPYTHON
6753  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_8__iter__;
6754  #endif
6755  static PyObject *__pyx_pw_8PyClical_8clifford_9__iter__(PyObject *__pyx_v_self) {
6756  PyObject *__pyx_r = 0;
6757  __Pyx_RefNannyDeclarations
6758  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
6759  __pyx_r = __pyx_pf_8PyClical_8clifford_8__iter__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
6760 
6761  /* function exit code */
6762  __Pyx_RefNannyFinishContext();
6763  return __pyx_r;
6764  }
6765 
6766  static PyObject *__pyx_pf_8PyClical_8clifford_8__iter__(CYTHON_UNUSED struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
6767  PyObject *__pyx_r = NULL;
6768  __Pyx_RefNannyDeclarations
6769  PyObject *__pyx_t_1 = NULL;
6770  int __pyx_lineno = 0;
6771  const char *__pyx_filename = NULL;
6772  int __pyx_clineno = 0;
6773  __Pyx_RefNannySetupContext("__iter__", 0);
6774 
6775  /* "PyClical.pyx":646
6776  * TypeError: Not applicable.
6777  * """
6778  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
6779  *
6780  * def reframe(self, ixt):
6781  */
6782  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6783  __Pyx_GOTREF(__pyx_t_1);
6784  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
6785  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6786  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6787 
6788  /* "PyClical.pyx":637
6789  * raise TypeError("Not applicable.")
6790  *
6791  * def __iter__(self): # <<<<<<<<<<<<<<
6792  * """
6793  * Not applicable.
6794  */
6795 
6796  /* function exit code */
6797  __pyx_L1_error:;
6798  __Pyx_XDECREF(__pyx_t_1);
6799  __Pyx_AddTraceback("PyClical.clifford.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6800  __pyx_r = NULL;
6801  __Pyx_XGIVEREF(__pyx_r);
6802  __Pyx_RefNannyFinishContext();
6803  return __pyx_r;
6804  }
6805 
6806  /* "PyClical.pyx":648
6807  * raise TypeError("Not applicable.")
6808  *
6809  * def reframe(self, ixt): # <<<<<<<<<<<<<<
6810  * """
6811  * Put self into a larger frame, containing the union of self.frame() and index set ixt.
6812  */
6813 
6814  /* Python wrapper */
6815  static PyObject *__pyx_pw_8PyClical_8clifford_11reframe(PyObject *__pyx_v_self, PyObject *__pyx_v_ixt); /*proto*/
6816  static char __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 ";
6817  static PyObject *__pyx_pw_8PyClical_8clifford_11reframe(PyObject *__pyx_v_self, PyObject *__pyx_v_ixt) {
6818  PyObject *__pyx_r = 0;
6819  __Pyx_RefNannyDeclarations
6820  __Pyx_RefNannySetupContext("reframe (wrapper)", 0);
6821  __pyx_r = __pyx_pf_8PyClical_8clifford_10reframe(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_ixt));
6822 
6823  /* function exit code */
6824  __Pyx_RefNannyFinishContext();
6825  return __pyx_r;
6826  }
6827 
6828  static PyObject *__pyx_pf_8PyClical_8clifford_10reframe(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt) {
6829  PyObject *__pyx_v_error_msg_prefix = NULL;
6830  struct __pyx_obj_8PyClical_clifford *__pyx_v_result = NULL;
6831  PyObject *__pyx_v_err = NULL;
6832  PyObject *__pyx_r = NULL;
6833  __Pyx_RefNannyDeclarations
6834  int __pyx_t_1;
6835  int __pyx_t_2;
6836  PyObject *__pyx_t_3 = NULL;
6837  PyObject *__pyx_t_4 = NULL;
6838  PyObject *__pyx_t_5 = NULL;
6839  PyObject *__pyx_t_6 = NULL;
6840  Clifford *__pyx_t_7;
6841  int __pyx_t_8;
6842  PyObject *__pyx_t_9 = NULL;
6843  PyObject *__pyx_t_10 = NULL;
6844  PyObject *__pyx_t_11 = NULL;
6845  PyObject *__pyx_t_12 = NULL;
6846  PyObject *__pyx_t_13 = NULL;
6847  int __pyx_lineno = 0;
6848  const char *__pyx_filename = NULL;
6849  int __pyx_clineno = 0;
6850  __Pyx_RefNannySetupContext("reframe", 0);
6851 
6852  /* "PyClical.pyx":658
6853  * True
6854  * """
6855  * error_msg_prefix = "Cannot reframe" # <<<<<<<<<<<<<<
6856  * if isinstance(ixt, index_set):
6857  * try:
6858  */
6859  __Pyx_INCREF(__pyx_kp_s_Cannot_reframe);
6860  __pyx_v_error_msg_prefix = __pyx_kp_s_Cannot_reframe;
6861 
6862  /* "PyClical.pyx":659
6863  * """
6864  * error_msg_prefix = "Cannot reframe"
6865  * if isinstance(ixt, index_set): # <<<<<<<<<<<<<<
6866  * try:
6867  * result = clifford()
6868  */
6869  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ixt, __pyx_ptype_8PyClical_index_set);
6870  __pyx_t_2 = (__pyx_t_1 != 0);
6871  if (__pyx_t_2) {
6872 
6873  /* "PyClical.pyx":660
6874  * error_msg_prefix = "Cannot reframe"
6875  * if isinstance(ixt, index_set):
6876  * try: # <<<<<<<<<<<<<<
6877  * result = clifford()
6878  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
6879  */
6880  {
6881  __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
6882  __Pyx_XGOTREF(__pyx_t_3);
6883  __Pyx_XGOTREF(__pyx_t_4);
6884  __Pyx_XGOTREF(__pyx_t_5);
6885  /*try:*/ {
6886 
6887  /* "PyClical.pyx":661
6888  * if isinstance(ixt, index_set):
6889  * try:
6890  * result = clifford() # <<<<<<<<<<<<<<
6891  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
6892  * except RuntimeError as err:
6893  */
6894  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6895  __Pyx_GOTREF(__pyx_t_6);
6896  __pyx_v_result = ((struct __pyx_obj_8PyClical_clifford *)__pyx_t_6);
6897  __pyx_t_6 = 0;
6898 
6899  /* "PyClical.pyx":662
6900  * try:
6901  * result = clifford()
6902  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap()) # <<<<<<<<<<<<<<
6903  * except RuntimeError as err:
6904  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
6905  */
6906  try {
6907  __pyx_t_7 = new Clifford(__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self), __pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_ixt)));
6908  } catch(...) {
6909  __Pyx_CppExn2PyErr();
6910  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
6911  }
6912  __pyx_v_result->instance = __pyx_t_7;
6913 
6914  /* "PyClical.pyx":660
6915  * error_msg_prefix = "Cannot reframe"
6916  * if isinstance(ixt, index_set):
6917  * try: # <<<<<<<<<<<<<<
6918  * result = clifford()
6919  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
6920  */
6921  }
6922  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6923  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6924  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
6925  goto __pyx_L11_try_end;
6926  __pyx_L4_error:;
6927  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
6928 
6929  /* "PyClical.pyx":663
6930  * result = clifford()
6931  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
6932  * except RuntimeError as err: # <<<<<<<<<<<<<<
6933  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
6934  * + str(ixt) + ":"
6935  */
6936  __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
6937  if (__pyx_t_8) {
6938  __Pyx_AddTraceback("PyClical.clifford.reframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
6939  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6940  __Pyx_GOTREF(__pyx_t_6);
6941  __Pyx_GOTREF(__pyx_t_9);
6942  __Pyx_GOTREF(__pyx_t_10);
6943  __Pyx_INCREF(__pyx_t_9);
6944  __pyx_v_err = __pyx_t_9;
6945 
6946  /* "PyClical.pyx":664
6947  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
6948  * except RuntimeError as err:
6949  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame " # <<<<<<<<<<<<<<
6950  * + str(ixt) + ":"
6951  * + "\n\t" + str(err))
6952  */
6953  __pyx_t_11 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s_from); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6954  __Pyx_GOTREF(__pyx_t_11);
6955  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6956  __Pyx_GOTREF(__pyx_t_12);
6957  __Pyx_INCREF(((PyObject *)__pyx_v_self));
6958  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
6959  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_v_self));
6960  __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_12, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6961  __Pyx_GOTREF(__pyx_t_13);
6962  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
6963  __pyx_t_12 = PyNumber_Add(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6964  __Pyx_GOTREF(__pyx_t_12);
6965  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
6966  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
6967  __pyx_t_13 = PyNumber_Add(__pyx_t_12, __pyx_kp_s_to_frame); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6968  __Pyx_GOTREF(__pyx_t_13);
6969  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
6970 
6971  /* "PyClical.pyx":665
6972  * except RuntimeError as err:
6973  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
6974  * + str(ixt) + ":" # <<<<<<<<<<<<<<
6975  * + "\n\t" + str(err))
6976  * else:
6977  */
6978  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6979  __Pyx_GOTREF(__pyx_t_12);
6980  __Pyx_INCREF(__pyx_v_ixt);
6981  __Pyx_GIVEREF(__pyx_v_ixt);
6982  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_ixt);
6983  __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6984  __Pyx_GOTREF(__pyx_t_11);
6985  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
6986  __pyx_t_12 = PyNumber_Add(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6987  __Pyx_GOTREF(__pyx_t_12);
6988  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
6989  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
6990  __pyx_t_11 = PyNumber_Add(__pyx_t_12, __pyx_kp_s__3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
6991  __Pyx_GOTREF(__pyx_t_11);
6992  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
6993 
6994  /* "PyClical.pyx":666
6995  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame "
6996  * + str(ixt) + ":"
6997  * + "\n\t" + str(err)) # <<<<<<<<<<<<<<
6998  * else:
6999  * raise TypeError(error_msg_prefix + " using (" + str(type(ixt)) + ").")
7000  */
7001  __pyx_t_12 = PyNumber_Add(__pyx_t_11, __pyx_kp_s__4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7002  __Pyx_GOTREF(__pyx_t_12);
7003  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
7004  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7005  __Pyx_GOTREF(__pyx_t_11);
7006  __Pyx_INCREF(__pyx_v_err);
7007  __Pyx_GIVEREF(__pyx_v_err);
7008  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_err);
7009  __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7010  __Pyx_GOTREF(__pyx_t_13);
7011  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
7012  __pyx_t_11 = PyNumber_Add(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7013  __Pyx_GOTREF(__pyx_t_11);
7014  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
7015  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
7016 
7017  /* "PyClical.pyx":664
7018  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
7019  * except RuntimeError as err:
7020  * raise ValueError(error_msg_prefix + " from " + str(self) + " to frame " # <<<<<<<<<<<<<<
7021  * + str(ixt) + ":"
7022  * + "\n\t" + str(err))
7023  */
7024  __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7025  __Pyx_GOTREF(__pyx_t_13);
7026  __Pyx_GIVEREF(__pyx_t_11);
7027  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11);
7028  __pyx_t_11 = 0;
7029  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_13, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7030  __Pyx_GOTREF(__pyx_t_11);
7031  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
7032  __Pyx_Raise(__pyx_t_11, 0, 0, 0);
7033  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
7034  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
7035  }
7036  goto __pyx_L6_except_error;
7037  __pyx_L6_except_error:;
7038 
7039  /* "PyClical.pyx":660
7040  * error_msg_prefix = "Cannot reframe"
7041  * if isinstance(ixt, index_set):
7042  * try: # <<<<<<<<<<<<<<
7043  * result = clifford()
7044  * result.instance = new Clifford(self.unwrap(), (<index_set>ixt).unwrap())
7045  */
7046  __Pyx_XGIVEREF(__pyx_t_3);
7047  __Pyx_XGIVEREF(__pyx_t_4);
7048  __Pyx_XGIVEREF(__pyx_t_5);
7049  __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
7050  goto __pyx_L1_error;
7051  __pyx_L11_try_end:;
7052  }
7053 
7054  /* "PyClical.pyx":659
7055  * """
7056  * error_msg_prefix = "Cannot reframe"
7057  * if isinstance(ixt, index_set): # <<<<<<<<<<<<<<
7058  * try:
7059  * result = clifford()
7060  */
7061  goto __pyx_L3;
7062  }
7063 
7064  /* "PyClical.pyx":668
7065  * + "\n\t" + str(err))
7066  * else:
7067  * raise TypeError(error_msg_prefix + " using (" + str(type(ixt)) + ").") # <<<<<<<<<<<<<<
7068  * return result
7069  *
7070  */
7071  /*else*/ {
7072  __pyx_t_10 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_kp_s_using); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7073  __Pyx_GOTREF(__pyx_t_10);
7074  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7075  __Pyx_GOTREF(__pyx_t_9);
7076  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_ixt)));
7077  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_ixt)));
7078  PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)Py_TYPE(__pyx_v_ixt)));
7079  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7080  __Pyx_GOTREF(__pyx_t_6);
7081  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
7082  __pyx_t_9 = PyNumber_Add(__pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7083  __Pyx_GOTREF(__pyx_t_9);
7084  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
7085  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7086  __pyx_t_6 = PyNumber_Add(__pyx_t_9, __pyx_kp_s__7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7087  __Pyx_GOTREF(__pyx_t_6);
7088  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
7089  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7090  __Pyx_GOTREF(__pyx_t_9);
7091  __Pyx_GIVEREF(__pyx_t_6);
7092  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6);
7093  __pyx_t_6 = 0;
7094  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7095  __Pyx_GOTREF(__pyx_t_6);
7096  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
7097  __Pyx_Raise(__pyx_t_6, 0, 0, 0);
7098  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7099  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7100  }
7101  __pyx_L3:;
7102 
7103  /* "PyClical.pyx":669
7104  * else:
7105  * raise TypeError(error_msg_prefix + " using (" + str(type(ixt)) + ").")
7106  * return result # <<<<<<<<<<<<<<
7107  *
7108  * def __richcmp__(lhs, rhs, int op):
7109  */
7110  __Pyx_XDECREF(__pyx_r);
7111  __Pyx_INCREF(((PyObject *)__pyx_v_result));
7112  __pyx_r = ((PyObject *)__pyx_v_result);
7113  goto __pyx_L0;
7114 
7115  /* "PyClical.pyx":648
7116  * raise TypeError("Not applicable.")
7117  *
7118  * def reframe(self, ixt): # <<<<<<<<<<<<<<
7119  * """
7120  * Put self into a larger frame, containing the union of self.frame() and index set ixt.
7121  */
7122 
7123  /* function exit code */
7124  __pyx_L1_error:;
7125  __Pyx_XDECREF(__pyx_t_6);
7126  __Pyx_XDECREF(__pyx_t_9);
7127  __Pyx_XDECREF(__pyx_t_10);
7128  __Pyx_XDECREF(__pyx_t_11);
7129  __Pyx_XDECREF(__pyx_t_12);
7130  __Pyx_XDECREF(__pyx_t_13);
7131  __Pyx_AddTraceback("PyClical.clifford.reframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
7132  __pyx_r = NULL;
7133  __pyx_L0:;
7134  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
7135  __Pyx_XDECREF((PyObject *)__pyx_v_result);
7136  __Pyx_XDECREF(__pyx_v_err);
7137  __Pyx_XGIVEREF(__pyx_r);
7138  __Pyx_RefNannyFinishContext();
7139  return __pyx_r;
7140  }
7141 
7142  /* "PyClical.pyx":671
7143  * return result
7144  *
7145  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
7146  * """
7147  * Compare objects of type clifford.
7148  */
7149 
7150  /* Python wrapper */
7151  static PyObject *__pyx_pw_8PyClical_8clifford_13__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op); /*proto*/
7152  static PyObject *__pyx_pw_8PyClical_8clifford_13__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
7153  PyObject *__pyx_r = 0;
7154  __Pyx_RefNannyDeclarations
7155  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
7156  __pyx_r = __pyx_pf_8PyClical_8clifford_12__richcmp__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs), ((int)__pyx_v_op));
7157 
7158  /* function exit code */
7159  __Pyx_RefNannyFinishContext();
7160  return __pyx_r;
7161  }
7162 
7163  static PyObject *__pyx_pf_8PyClical_8clifford_12__richcmp__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs, int __pyx_v_op) {
7164  PyObject *__pyx_r = NULL;
7165  __Pyx_RefNannyDeclarations
7166  int __pyx_t_1;
7167  int __pyx_t_2;
7168  int __pyx_t_3;
7169  PyObject *__pyx_t_4 = NULL;
7170  PyObject *__pyx_t_5 = NULL;
7171  PyObject *__pyx_t_6 = NULL;
7172  int __pyx_lineno = 0;
7173  const char *__pyx_filename = NULL;
7174  int __pyx_clineno = 0;
7175  __Pyx_RefNannySetupContext("__richcmp__", 0);
7176 
7177  /* "PyClical.pyx":690
7178  * True
7179  * """
7180  * if op == 2: # == # <<<<<<<<<<<<<<
7181  * if (lhs is None) or (rhs is None):
7182  * return bool(lhs is rhs)
7183  */
7184  __pyx_t_1 = ((__pyx_v_op == 2) != 0);
7185  if (__pyx_t_1) {
7186 
7187  /* "PyClical.pyx":691
7188  * """
7189  * if op == 2: # ==
7190  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
7191  * return bool(lhs is rhs)
7192  * else:
7193  */
7194  __pyx_t_2 = (__pyx_v_lhs == Py_None);
7195  __pyx_t_3 = (__pyx_t_2 != 0);
7196  if (!__pyx_t_3) {
7197  } else {
7198  __pyx_t_1 = __pyx_t_3;
7199  goto __pyx_L5_bool_binop_done;
7200  }
7201  __pyx_t_3 = (__pyx_v_rhs == Py_None);
7202  __pyx_t_2 = (__pyx_t_3 != 0);
7203  __pyx_t_1 = __pyx_t_2;
7204  __pyx_L5_bool_binop_done:;
7205  if (__pyx_t_1) {
7206 
7207  /* "PyClical.pyx":692
7208  * if op == 2: # ==
7209  * if (lhs is None) or (rhs is None):
7210  * return bool(lhs is rhs) # <<<<<<<<<<<<<<
7211  * else:
7212  * return bool( toClifford(lhs) == toClifford(rhs) )
7213  */
7214  __Pyx_XDECREF(__pyx_r);
7215  __pyx_t_1 = (__pyx_v_lhs == __pyx_v_rhs);
7216  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7217  __Pyx_GOTREF(__pyx_t_4);
7218  __pyx_r = __pyx_t_4;
7219  __pyx_t_4 = 0;
7220  goto __pyx_L0;
7221 
7222  /* "PyClical.pyx":691
7223  * """
7224  * if op == 2: # ==
7225  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
7226  * return bool(lhs is rhs)
7227  * else:
7228  */
7229  }
7230 
7231  /* "PyClical.pyx":694
7232  * return bool(lhs is rhs)
7233  * else:
7234  * return bool( toClifford(lhs) == toClifford(rhs) ) # <<<<<<<<<<<<<<
7235  * elif op == 3: # !=
7236  * if (lhs is None) or (rhs is None):
7237  */
7238  /*else*/ {
7239  __Pyx_XDECREF(__pyx_r);
7240  __pyx_t_1 = (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) == __pyx_f_8PyClical_toClifford(__pyx_v_rhs));
7241  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7242  __Pyx_GOTREF(__pyx_t_4);
7243  __pyx_r = __pyx_t_4;
7244  __pyx_t_4 = 0;
7245  goto __pyx_L0;
7246  }
7247 
7248  /* "PyClical.pyx":690
7249  * True
7250  * """
7251  * if op == 2: # == # <<<<<<<<<<<<<<
7252  * if (lhs is None) or (rhs is None):
7253  * return bool(lhs is rhs)
7254  */
7255  }
7256 
7257  /* "PyClical.pyx":695
7258  * else:
7259  * return bool( toClifford(lhs) == toClifford(rhs) )
7260  * elif op == 3: # != # <<<<<<<<<<<<<<
7261  * if (lhs is None) or (rhs is None):
7262  * return not bool(lhs is rhs)
7263  */
7264  __pyx_t_1 = ((__pyx_v_op == 3) != 0);
7265  if (__pyx_t_1) {
7266 
7267  /* "PyClical.pyx":696
7268  * return bool( toClifford(lhs) == toClifford(rhs) )
7269  * elif op == 3: # !=
7270  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
7271  * return not bool(lhs is rhs)
7272  * else:
7273  */
7274  __pyx_t_2 = (__pyx_v_lhs == Py_None);
7275  __pyx_t_3 = (__pyx_t_2 != 0);
7276  if (!__pyx_t_3) {
7277  } else {
7278  __pyx_t_1 = __pyx_t_3;
7279  goto __pyx_L8_bool_binop_done;
7280  }
7281  __pyx_t_3 = (__pyx_v_rhs == Py_None);
7282  __pyx_t_2 = (__pyx_t_3 != 0);
7283  __pyx_t_1 = __pyx_t_2;
7284  __pyx_L8_bool_binop_done:;
7285  if (__pyx_t_1) {
7286 
7287  /* "PyClical.pyx":697
7288  * elif op == 3: # !=
7289  * if (lhs is None) or (rhs is None):
7290  * return not bool(lhs is rhs) # <<<<<<<<<<<<<<
7291  * else:
7292  * return bool( toClifford(lhs) != toClifford(rhs) )
7293  */
7294  __Pyx_XDECREF(__pyx_r);
7295  __pyx_t_1 = (__pyx_v_lhs == __pyx_v_rhs);
7296  __pyx_t_4 = __Pyx_PyBool_FromLong((!((!(!__pyx_t_1)) != 0))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7297  __Pyx_GOTREF(__pyx_t_4);
7298  __pyx_r = __pyx_t_4;
7299  __pyx_t_4 = 0;
7300  goto __pyx_L0;
7301 
7302  /* "PyClical.pyx":696
7303  * return bool( toClifford(lhs) == toClifford(rhs) )
7304  * elif op == 3: # !=
7305  * if (lhs is None) or (rhs is None): # <<<<<<<<<<<<<<
7306  * return not bool(lhs is rhs)
7307  * else:
7308  */
7309  }
7310 
7311  /* "PyClical.pyx":699
7312  * return not bool(lhs is rhs)
7313  * else:
7314  * return bool( toClifford(lhs) != toClifford(rhs) ) # <<<<<<<<<<<<<<
7315  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford):
7316  * raise TypeError("This comparison operator is not implemented for "
7317  */
7318  /*else*/ {
7319  __Pyx_XDECREF(__pyx_r);
7320  __pyx_t_1 = (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) != __pyx_f_8PyClical_toClifford(__pyx_v_rhs));
7321  __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7322  __Pyx_GOTREF(__pyx_t_4);
7323  __pyx_r = __pyx_t_4;
7324  __pyx_t_4 = 0;
7325  goto __pyx_L0;
7326  }
7327 
7328  /* "PyClical.pyx":695
7329  * else:
7330  * return bool( toClifford(lhs) == toClifford(rhs) )
7331  * elif op == 3: # != # <<<<<<<<<<<<<<
7332  * if (lhs is None) or (rhs is None):
7333  * return not bool(lhs is rhs)
7334  */
7335  }
7336 
7337  /* "PyClical.pyx":700
7338  * else:
7339  * return bool( toClifford(lhs) != toClifford(rhs) )
7340  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford): # <<<<<<<<<<<<<<
7341  * raise TypeError("This comparison operator is not implemented for "
7342  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
7343  */
7344  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_lhs, __pyx_ptype_8PyClical_clifford);
7345  __pyx_t_3 = (__pyx_t_2 != 0);
7346  if (!__pyx_t_3) {
7347  } else {
7348  __pyx_t_1 = __pyx_t_3;
7349  goto __pyx_L10_bool_binop_done;
7350  }
7351  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_rhs, __pyx_ptype_8PyClical_clifford);
7352  __pyx_t_2 = (__pyx_t_3 != 0);
7353  __pyx_t_1 = __pyx_t_2;
7354  __pyx_L10_bool_binop_done:;
7355  if (__pyx_t_1) {
7356 
7357  /* "PyClical.pyx":702
7358  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford):
7359  * raise TypeError("This comparison operator is not implemented for "
7360  * + str(type(lhs)) + ", " + str(type(rhs)) + ".") # <<<<<<<<<<<<<<
7361  * else:
7362  * return NotImplemented
7363  */
7364  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7365  __Pyx_GOTREF(__pyx_t_4);
7366  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_lhs)));
7367  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_lhs)));
7368  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_lhs)));
7369  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7370  __Pyx_GOTREF(__pyx_t_5);
7371  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7372  __pyx_t_4 = PyNumber_Add(__pyx_kp_s_This_comparison_operator_is_not, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7373  __Pyx_GOTREF(__pyx_t_4);
7374  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7375  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_kp_s__6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7376  __Pyx_GOTREF(__pyx_t_5);
7377  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7378  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7379  __Pyx_GOTREF(__pyx_t_4);
7380  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_rhs)));
7381  __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_rhs)));
7382  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_rhs)));
7383  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7384  __Pyx_GOTREF(__pyx_t_6);
7385  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7386  __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7387  __Pyx_GOTREF(__pyx_t_4);
7388  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7389  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7390  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_kp_s_); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7391  __Pyx_GOTREF(__pyx_t_6);
7392  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7393 
7394  /* "PyClical.pyx":701
7395  * return bool( toClifford(lhs) != toClifford(rhs) )
7396  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford):
7397  * raise TypeError("This comparison operator is not implemented for " # <<<<<<<<<<<<<<
7398  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
7399  * else:
7400  */
7401  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7402  __Pyx_GOTREF(__pyx_t_4);
7403  __Pyx_GIVEREF(__pyx_t_6);
7404  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
7405  __pyx_t_6 = 0;
7406  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7407  __Pyx_GOTREF(__pyx_t_6);
7408  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7409  __Pyx_Raise(__pyx_t_6, 0, 0, 0);
7410  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7411  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7412 
7413  /* "PyClical.pyx":700
7414  * else:
7415  * return bool( toClifford(lhs) != toClifford(rhs) )
7416  * elif isinstance(lhs, clifford) or isinstance(rhs, clifford): # <<<<<<<<<<<<<<
7417  * raise TypeError("This comparison operator is not implemented for "
7418  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
7419  */
7420  }
7421 
7422  /* "PyClical.pyx":704
7423  * + str(type(lhs)) + ", " + str(type(rhs)) + ".")
7424  * else:
7425  * return NotImplemented # <<<<<<<<<<<<<<
7426  *
7427  * def __getitem__(self, ixt):
7428  */
7429  /*else*/ {
7430  __Pyx_XDECREF(__pyx_r);
7431  __Pyx_INCREF(__pyx_builtin_NotImplemented);
7432  __pyx_r = __pyx_builtin_NotImplemented;
7433  goto __pyx_L0;
7434  }
7435 
7436  /* "PyClical.pyx":671
7437  * return result
7438  *
7439  * def __richcmp__(lhs, rhs, int op): # <<<<<<<<<<<<<<
7440  * """
7441  * Compare objects of type clifford.
7442  */
7443 
7444  /* function exit code */
7445  __pyx_L1_error:;
7446  __Pyx_XDECREF(__pyx_t_4);
7447  __Pyx_XDECREF(__pyx_t_5);
7448  __Pyx_XDECREF(__pyx_t_6);
7449  __Pyx_AddTraceback("PyClical.clifford.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7450  __pyx_r = NULL;
7451  __pyx_L0:;
7452  __Pyx_XGIVEREF(__pyx_r);
7453  __Pyx_RefNannyFinishContext();
7454  return __pyx_r;
7455  }
7456 
7457  /* "PyClical.pyx":706
7458  * return NotImplemented
7459  *
7460  * def __getitem__(self, ixt): # <<<<<<<<<<<<<<
7461  * """
7462  * Subscripting: map from index set to scalar coordinate.
7463  */
7464 
7465  /* Python wrapper */
7466  static PyObject *__pyx_pw_8PyClical_8clifford_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_ixt); /*proto*/
7467  static char __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 ";
7468  #if CYTHON_COMPILING_IN_CPYTHON
7469  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_14__getitem__;
7470  #endif
7471  static PyObject *__pyx_pw_8PyClical_8clifford_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_ixt) {
7472  PyObject *__pyx_r = 0;
7473  __Pyx_RefNannyDeclarations
7474  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
7475  __pyx_r = __pyx_pf_8PyClical_8clifford_14__getitem__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_ixt));
7476 
7477  /* function exit code */
7478  __Pyx_RefNannyFinishContext();
7479  return __pyx_r;
7480  }
7481 
7482  static PyObject *__pyx_pf_8PyClical_8clifford_14__getitem__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_ixt) {
7483  PyObject *__pyx_r = NULL;
7484  __Pyx_RefNannyDeclarations
7485  PyObject *__pyx_t_1 = NULL;
7486  int __pyx_lineno = 0;
7487  const char *__pyx_filename = NULL;
7488  int __pyx_clineno = 0;
7489  __Pyx_RefNannySetupContext("__getitem__", 0);
7490 
7491  /* "PyClical.pyx":719
7492  * 2.0
7493  * """
7494  * return self.instance.getitem(toIndexSet(ixt)) # <<<<<<<<<<<<<<
7495  *
7496  * def __neg__(self):
7497  */
7498  __Pyx_XDECREF(__pyx_r);
7499  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->operator[](__pyx_f_8PyClical_toIndexSet(__pyx_v_ixt))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7500  __Pyx_GOTREF(__pyx_t_1);
7501  __pyx_r = __pyx_t_1;
7502  __pyx_t_1 = 0;
7503  goto __pyx_L0;
7504 
7505  /* "PyClical.pyx":706
7506  * return NotImplemented
7507  *
7508  * def __getitem__(self, ixt): # <<<<<<<<<<<<<<
7509  * """
7510  * Subscripting: map from index set to scalar coordinate.
7511  */
7512 
7513  /* function exit code */
7514  __pyx_L1_error:;
7515  __Pyx_XDECREF(__pyx_t_1);
7516  __Pyx_AddTraceback("PyClical.clifford.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7517  __pyx_r = NULL;
7518  __pyx_L0:;
7519  __Pyx_XGIVEREF(__pyx_r);
7520  __Pyx_RefNannyFinishContext();
7521  return __pyx_r;
7522  }
7523 
7524  /* "PyClical.pyx":721
7525  * return self.instance.getitem(toIndexSet(ixt))
7526  *
7527  * def __neg__(self): # <<<<<<<<<<<<<<
7528  * """
7529  * Unary -.
7530  */
7531 
7532  /* Python wrapper */
7533  static PyObject *__pyx_pw_8PyClical_8clifford_17__neg__(PyObject *__pyx_v_self); /*proto*/
7534  static char __pyx_doc_8PyClical_8clifford_16__neg__[] = "\n Unary -.\n\n >>> print -clifford(\"{1}\")\n -{1}\n ";
7535  #if CYTHON_COMPILING_IN_CPYTHON
7536  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_16__neg__;
7537  #endif
7538  static PyObject *__pyx_pw_8PyClical_8clifford_17__neg__(PyObject *__pyx_v_self) {
7539  PyObject *__pyx_r = 0;
7540  __Pyx_RefNannyDeclarations
7541  __Pyx_RefNannySetupContext("__neg__ (wrapper)", 0);
7542  __pyx_r = __pyx_pf_8PyClical_8clifford_16__neg__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
7543 
7544  /* function exit code */
7545  __Pyx_RefNannyFinishContext();
7546  return __pyx_r;
7547  }
7548 
7549  static PyObject *__pyx_pf_8PyClical_8clifford_16__neg__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
7550  PyObject *__pyx_r = NULL;
7551  __Pyx_RefNannyDeclarations
7552  PyObject *__pyx_t_1 = NULL;
7553  PyObject *__pyx_t_2 = NULL;
7554  int __pyx_lineno = 0;
7555  const char *__pyx_filename = NULL;
7556  int __pyx_clineno = 0;
7557  __Pyx_RefNannySetupContext("__neg__", 0);
7558 
7559  /* "PyClical.pyx":728
7560  * -{1}
7561  * """
7562  * return clifford().wrap( self.instance.neg() ) # <<<<<<<<<<<<<<
7563  *
7564  * def __pos__(self):
7565  */
7566  __Pyx_XDECREF(__pyx_r);
7567  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7568  __Pyx_GOTREF(__pyx_t_1);
7569  __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_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7570  __Pyx_GOTREF(__pyx_t_2);
7571  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7572  __pyx_r = __pyx_t_2;
7573  __pyx_t_2 = 0;
7574  goto __pyx_L0;
7575 
7576  /* "PyClical.pyx":721
7577  * return self.instance.getitem(toIndexSet(ixt))
7578  *
7579  * def __neg__(self): # <<<<<<<<<<<<<<
7580  * """
7581  * Unary -.
7582  */
7583 
7584  /* function exit code */
7585  __pyx_L1_error:;
7586  __Pyx_XDECREF(__pyx_t_1);
7587  __Pyx_XDECREF(__pyx_t_2);
7588  __Pyx_AddTraceback("PyClical.clifford.__neg__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7589  __pyx_r = NULL;
7590  __pyx_L0:;
7591  __Pyx_XGIVEREF(__pyx_r);
7592  __Pyx_RefNannyFinishContext();
7593  return __pyx_r;
7594  }
7595 
7596  /* "PyClical.pyx":730
7597  * return clifford().wrap( self.instance.neg() )
7598  *
7599  * def __pos__(self): # <<<<<<<<<<<<<<
7600  * """
7601  * Unary +.
7602  */
7603 
7604  /* Python wrapper */
7605  static PyObject *__pyx_pw_8PyClical_8clifford_19__pos__(PyObject *__pyx_v_self); /*proto*/
7606  static char __pyx_doc_8PyClical_8clifford_18__pos__[] = "\n Unary +.\n\n >>> print +clifford(\"{1}\")\n {1}\n ";
7607  #if CYTHON_COMPILING_IN_CPYTHON
7608  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_18__pos__;
7609  #endif
7610  static PyObject *__pyx_pw_8PyClical_8clifford_19__pos__(PyObject *__pyx_v_self) {
7611  PyObject *__pyx_r = 0;
7612  __Pyx_RefNannyDeclarations
7613  __Pyx_RefNannySetupContext("__pos__ (wrapper)", 0);
7614  __pyx_r = __pyx_pf_8PyClical_8clifford_18__pos__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
7615 
7616  /* function exit code */
7617  __Pyx_RefNannyFinishContext();
7618  return __pyx_r;
7619  }
7620 
7621  static PyObject *__pyx_pf_8PyClical_8clifford_18__pos__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
7622  PyObject *__pyx_r = NULL;
7623  __Pyx_RefNannyDeclarations
7624  PyObject *__pyx_t_1 = NULL;
7625  PyObject *__pyx_t_2 = NULL;
7626  int __pyx_lineno = 0;
7627  const char *__pyx_filename = NULL;
7628  int __pyx_clineno = 0;
7629  __Pyx_RefNannySetupContext("__pos__", 0);
7630 
7631  /* "PyClical.pyx":737
7632  * {1}
7633  * """
7634  * return clifford(self) # <<<<<<<<<<<<<<
7635  *
7636  * def __add__(lhs, rhs):
7637  */
7638  __Pyx_XDECREF(__pyx_r);
7639  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7640  __Pyx_GOTREF(__pyx_t_1);
7641  __Pyx_INCREF(((PyObject *)__pyx_v_self));
7642  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
7643  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
7644  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7645  __Pyx_GOTREF(__pyx_t_2);
7646  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7647  __pyx_r = __pyx_t_2;
7648  __pyx_t_2 = 0;
7649  goto __pyx_L0;
7650 
7651  /* "PyClical.pyx":730
7652  * return clifford().wrap( self.instance.neg() )
7653  *
7654  * def __pos__(self): # <<<<<<<<<<<<<<
7655  * """
7656  * Unary +.
7657  */
7658 
7659  /* function exit code */
7660  __pyx_L1_error:;
7661  __Pyx_XDECREF(__pyx_t_1);
7662  __Pyx_XDECREF(__pyx_t_2);
7663  __Pyx_AddTraceback("PyClical.clifford.__pos__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7664  __pyx_r = NULL;
7665  __pyx_L0:;
7666  __Pyx_XGIVEREF(__pyx_r);
7667  __Pyx_RefNannyFinishContext();
7668  return __pyx_r;
7669  }
7670 
7671  /* "PyClical.pyx":739
7672  * return clifford(self)
7673  *
7674  * def __add__(lhs, rhs): # <<<<<<<<<<<<<<
7675  * """
7676  * Geometric sum.
7677  */
7678 
7679  /* Python wrapper */
7680  static PyObject *__pyx_pw_8PyClical_8clifford_21__add__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
7681  static char __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 ";
7682  #if CYTHON_COMPILING_IN_CPYTHON
7683  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_20__add__;
7684  #endif
7685  static PyObject *__pyx_pw_8PyClical_8clifford_21__add__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
7686  PyObject *__pyx_r = 0;
7687  __Pyx_RefNannyDeclarations
7688  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
7689  __pyx_r = __pyx_pf_8PyClical_8clifford_20__add__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
7690 
7691  /* function exit code */
7692  __Pyx_RefNannyFinishContext();
7693  return __pyx_r;
7694  }
7695 
7696  static PyObject *__pyx_pf_8PyClical_8clifford_20__add__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
7697  PyObject *__pyx_r = NULL;
7698  __Pyx_RefNannyDeclarations
7699  PyObject *__pyx_t_1 = NULL;
7700  PyObject *__pyx_t_2 = NULL;
7701  int __pyx_lineno = 0;
7702  const char *__pyx_filename = NULL;
7703  int __pyx_clineno = 0;
7704  __Pyx_RefNannySetupContext("__add__", 0);
7705 
7706  /* "PyClical.pyx":748
7707  * {1}+{2}
7708  * """
7709  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) ) # <<<<<<<<<<<<<<
7710  *
7711  * def __iadd__(self, rhs):
7712  */
7713  __Pyx_XDECREF(__pyx_r);
7714  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7715  __Pyx_GOTREF(__pyx_t_1);
7716  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) + __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7717  __Pyx_GOTREF(__pyx_t_2);
7718  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7719  __pyx_r = __pyx_t_2;
7720  __pyx_t_2 = 0;
7721  goto __pyx_L0;
7722 
7723  /* "PyClical.pyx":739
7724  * return clifford(self)
7725  *
7726  * def __add__(lhs, rhs): # <<<<<<<<<<<<<<
7727  * """
7728  * Geometric sum.
7729  */
7730 
7731  /* function exit code */
7732  __pyx_L1_error:;
7733  __Pyx_XDECREF(__pyx_t_1);
7734  __Pyx_XDECREF(__pyx_t_2);
7735  __Pyx_AddTraceback("PyClical.clifford.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7736  __pyx_r = NULL;
7737  __pyx_L0:;
7738  __Pyx_XGIVEREF(__pyx_r);
7739  __Pyx_RefNannyFinishContext();
7740  return __pyx_r;
7741  }
7742 
7743  /* "PyClical.pyx":750
7744  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) )
7745  *
7746  * def __iadd__(self, rhs): # <<<<<<<<<<<<<<
7747  * """
7748  * Geometric sum.
7749  */
7750 
7751  /* Python wrapper */
7752  static PyObject *__pyx_pw_8PyClical_8clifford_23__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
7753  static char __pyx_doc_8PyClical_8clifford_22__iadd__[] = "\n Geometric sum.\n\n >>> x = clifford(1); x += clifford(\"{2}\"); print x\n 1+{2}\n ";
7754  #if CYTHON_COMPILING_IN_CPYTHON
7755  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_22__iadd__;
7756  #endif
7757  static PyObject *__pyx_pw_8PyClical_8clifford_23__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
7758  PyObject *__pyx_r = 0;
7759  __Pyx_RefNannyDeclarations
7760  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
7761  __pyx_r = __pyx_pf_8PyClical_8clifford_22__iadd__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
7762 
7763  /* function exit code */
7764  __Pyx_RefNannyFinishContext();
7765  return __pyx_r;
7766  }
7767 
7768  static PyObject *__pyx_pf_8PyClical_8clifford_22__iadd__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
7769  PyObject *__pyx_r = NULL;
7770  __Pyx_RefNannyDeclarations
7771  PyObject *__pyx_t_1 = NULL;
7772  int __pyx_lineno = 0;
7773  const char *__pyx_filename = NULL;
7774  int __pyx_clineno = 0;
7775  __Pyx_RefNannySetupContext("__iadd__", 0);
7776 
7777  /* "PyClical.pyx":757
7778  * 1+{2}
7779  * """
7780  * return self.wrap( self.unwrap() + toClifford(rhs) ) # <<<<<<<<<<<<<<
7781  *
7782  * def __sub__(lhs, rhs):
7783  */
7784  __Pyx_XDECREF(__pyx_r);
7785  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) + __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7786  __Pyx_GOTREF(__pyx_t_1);
7787  __pyx_r = __pyx_t_1;
7788  __pyx_t_1 = 0;
7789  goto __pyx_L0;
7790 
7791  /* "PyClical.pyx":750
7792  * return clifford().wrap( toClifford(lhs) + toClifford(rhs) )
7793  *
7794  * def __iadd__(self, rhs): # <<<<<<<<<<<<<<
7795  * """
7796  * Geometric sum.
7797  */
7798 
7799  /* function exit code */
7800  __pyx_L1_error:;
7801  __Pyx_XDECREF(__pyx_t_1);
7802  __Pyx_AddTraceback("PyClical.clifford.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7803  __pyx_r = NULL;
7804  __pyx_L0:;
7805  __Pyx_XGIVEREF(__pyx_r);
7806  __Pyx_RefNannyFinishContext();
7807  return __pyx_r;
7808  }
7809 
7810  /* "PyClical.pyx":759
7811  * return self.wrap( self.unwrap() + toClifford(rhs) )
7812  *
7813  * def __sub__(lhs, rhs): # <<<<<<<<<<<<<<
7814  * """
7815  * Geometric difference.
7816  */
7817 
7818  /* Python wrapper */
7819  static PyObject *__pyx_pw_8PyClical_8clifford_25__sub__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
7820  static char __pyx_doc_8PyClical_8clifford_24__sub__[] = "\n Geometric difference.\n\n >>> print clifford(1) - clifford(\"{2}\")\n 1-{2}\n >>> print clifford(\"{1}\") - clifford(\"{2}\")\n {1}-{2}\n ";
7821  #if CYTHON_COMPILING_IN_CPYTHON
7822  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_24__sub__;
7823  #endif
7824  static PyObject *__pyx_pw_8PyClical_8clifford_25__sub__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
7825  PyObject *__pyx_r = 0;
7826  __Pyx_RefNannyDeclarations
7827  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
7828  __pyx_r = __pyx_pf_8PyClical_8clifford_24__sub__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
7829 
7830  /* function exit code */
7831  __Pyx_RefNannyFinishContext();
7832  return __pyx_r;
7833  }
7834 
7835  static PyObject *__pyx_pf_8PyClical_8clifford_24__sub__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
7836  PyObject *__pyx_r = NULL;
7837  __Pyx_RefNannyDeclarations
7838  PyObject *__pyx_t_1 = NULL;
7839  PyObject *__pyx_t_2 = NULL;
7840  int __pyx_lineno = 0;
7841  const char *__pyx_filename = NULL;
7842  int __pyx_clineno = 0;
7843  __Pyx_RefNannySetupContext("__sub__", 0);
7844 
7845  /* "PyClical.pyx":768
7846  * {1}-{2}
7847  * """
7848  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) ) # <<<<<<<<<<<<<<
7849  *
7850  * def __isub__(self, rhs):
7851  */
7852  __Pyx_XDECREF(__pyx_r);
7853  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7854  __Pyx_GOTREF(__pyx_t_1);
7855  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) - __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7856  __Pyx_GOTREF(__pyx_t_2);
7857  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7858  __pyx_r = __pyx_t_2;
7859  __pyx_t_2 = 0;
7860  goto __pyx_L0;
7861 
7862  /* "PyClical.pyx":759
7863  * return self.wrap( self.unwrap() + toClifford(rhs) )
7864  *
7865  * def __sub__(lhs, rhs): # <<<<<<<<<<<<<<
7866  * """
7867  * Geometric difference.
7868  */
7869 
7870  /* function exit code */
7871  __pyx_L1_error:;
7872  __Pyx_XDECREF(__pyx_t_1);
7873  __Pyx_XDECREF(__pyx_t_2);
7874  __Pyx_AddTraceback("PyClical.clifford.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7875  __pyx_r = NULL;
7876  __pyx_L0:;
7877  __Pyx_XGIVEREF(__pyx_r);
7878  __Pyx_RefNannyFinishContext();
7879  return __pyx_r;
7880  }
7881 
7882  /* "PyClical.pyx":770
7883  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) )
7884  *
7885  * def __isub__(self, rhs): # <<<<<<<<<<<<<<
7886  * """
7887  * Geometric difference.
7888  */
7889 
7890  /* Python wrapper */
7891  static PyObject *__pyx_pw_8PyClical_8clifford_27__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
7892  static char __pyx_doc_8PyClical_8clifford_26__isub__[] = "\n Geometric difference.\n\n >>> x = clifford(1); x -= clifford(\"{2}\"); print x\n 1-{2}\n ";
7893  #if CYTHON_COMPILING_IN_CPYTHON
7894  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_26__isub__;
7895  #endif
7896  static PyObject *__pyx_pw_8PyClical_8clifford_27__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
7897  PyObject *__pyx_r = 0;
7898  __Pyx_RefNannyDeclarations
7899  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
7900  __pyx_r = __pyx_pf_8PyClical_8clifford_26__isub__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
7901 
7902  /* function exit code */
7903  __Pyx_RefNannyFinishContext();
7904  return __pyx_r;
7905  }
7906 
7907  static PyObject *__pyx_pf_8PyClical_8clifford_26__isub__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
7908  PyObject *__pyx_r = NULL;
7909  __Pyx_RefNannyDeclarations
7910  PyObject *__pyx_t_1 = NULL;
7911  int __pyx_lineno = 0;
7912  const char *__pyx_filename = NULL;
7913  int __pyx_clineno = 0;
7914  __Pyx_RefNannySetupContext("__isub__", 0);
7915 
7916  /* "PyClical.pyx":777
7917  * 1-{2}
7918  * """
7919  * return self.wrap( self.unwrap() - toClifford(rhs) ) # <<<<<<<<<<<<<<
7920  *
7921  * def __mul__(lhs, rhs):
7922  */
7923  __Pyx_XDECREF(__pyx_r);
7924  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) - __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7925  __Pyx_GOTREF(__pyx_t_1);
7926  __pyx_r = __pyx_t_1;
7927  __pyx_t_1 = 0;
7928  goto __pyx_L0;
7929 
7930  /* "PyClical.pyx":770
7931  * return clifford().wrap( toClifford(lhs) - toClifford(rhs) )
7932  *
7933  * def __isub__(self, rhs): # <<<<<<<<<<<<<<
7934  * """
7935  * Geometric difference.
7936  */
7937 
7938  /* function exit code */
7939  __pyx_L1_error:;
7940  __Pyx_XDECREF(__pyx_t_1);
7941  __Pyx_AddTraceback("PyClical.clifford.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7942  __pyx_r = NULL;
7943  __pyx_L0:;
7944  __Pyx_XGIVEREF(__pyx_r);
7945  __Pyx_RefNannyFinishContext();
7946  return __pyx_r;
7947  }
7948 
7949  /* "PyClical.pyx":779
7950  * return self.wrap( self.unwrap() - toClifford(rhs) )
7951  *
7952  * def __mul__(lhs, rhs): # <<<<<<<<<<<<<<
7953  * """
7954  * Geometric product.
7955  */
7956 
7957  /* Python wrapper */
7958  static PyObject *__pyx_pw_8PyClical_8clifford_29__mul__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
7959  static char __pyx_doc_8PyClical_8clifford_28__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 ";
7960  #if CYTHON_COMPILING_IN_CPYTHON
7961  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_28__mul__;
7962  #endif
7963  static PyObject *__pyx_pw_8PyClical_8clifford_29__mul__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
7964  PyObject *__pyx_r = 0;
7965  __Pyx_RefNannyDeclarations
7966  __Pyx_RefNannySetupContext("__mul__ (wrapper)", 0);
7967  __pyx_r = __pyx_pf_8PyClical_8clifford_28__mul__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
7968 
7969  /* function exit code */
7970  __Pyx_RefNannyFinishContext();
7971  return __pyx_r;
7972  }
7973 
7974  static PyObject *__pyx_pf_8PyClical_8clifford_28__mul__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
7975  PyObject *__pyx_r = NULL;
7976  __Pyx_RefNannyDeclarations
7977  PyObject *__pyx_t_1 = NULL;
7978  PyObject *__pyx_t_2 = NULL;
7979  int __pyx_lineno = 0;
7980  const char *__pyx_filename = NULL;
7981  int __pyx_clineno = 0;
7982  __Pyx_RefNannySetupContext("__mul__", 0);
7983 
7984  /* "PyClical.pyx":790
7985  * {2}
7986  * """
7987  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) ) # <<<<<<<<<<<<<<
7988  *
7989  * def __imul__(self, rhs):
7990  */
7991  __Pyx_XDECREF(__pyx_r);
7992  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7993  __Pyx_GOTREF(__pyx_t_1);
7994  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) * __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7995  __Pyx_GOTREF(__pyx_t_2);
7996  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7997  __pyx_r = __pyx_t_2;
7998  __pyx_t_2 = 0;
7999  goto __pyx_L0;
8000 
8001  /* "PyClical.pyx":779
8002  * return self.wrap( self.unwrap() - toClifford(rhs) )
8003  *
8004  * def __mul__(lhs, rhs): # <<<<<<<<<<<<<<
8005  * """
8006  * Geometric product.
8007  */
8008 
8009  /* function exit code */
8010  __pyx_L1_error:;
8011  __Pyx_XDECREF(__pyx_t_1);
8012  __Pyx_XDECREF(__pyx_t_2);
8013  __Pyx_AddTraceback("PyClical.clifford.__mul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8014  __pyx_r = NULL;
8015  __pyx_L0:;
8016  __Pyx_XGIVEREF(__pyx_r);
8017  __Pyx_RefNannyFinishContext();
8018  return __pyx_r;
8019  }
8020 
8021  /* "PyClical.pyx":792
8022  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) )
8023  *
8024  * def __imul__(self, rhs): # <<<<<<<<<<<<<<
8025  * """
8026  * Geometric product.
8027  */
8028 
8029  /* Python wrapper */
8030  static PyObject *__pyx_pw_8PyClical_8clifford_31__imul__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8031  static char __pyx_doc_8PyClical_8clifford_30__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 ";
8032  #if CYTHON_COMPILING_IN_CPYTHON
8033  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_30__imul__;
8034  #endif
8035  static PyObject *__pyx_pw_8PyClical_8clifford_31__imul__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8036  PyObject *__pyx_r = 0;
8037  __Pyx_RefNannyDeclarations
8038  __Pyx_RefNannySetupContext("__imul__ (wrapper)", 0);
8039  __pyx_r = __pyx_pf_8PyClical_8clifford_30__imul__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8040 
8041  /* function exit code */
8042  __Pyx_RefNannyFinishContext();
8043  return __pyx_r;
8044  }
8045 
8046  static PyObject *__pyx_pf_8PyClical_8clifford_30__imul__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
8047  PyObject *__pyx_r = NULL;
8048  __Pyx_RefNannyDeclarations
8049  PyObject *__pyx_t_1 = NULL;
8050  int __pyx_lineno = 0;
8051  const char *__pyx_filename = NULL;
8052  int __pyx_clineno = 0;
8053  __Pyx_RefNannySetupContext("__imul__", 0);
8054 
8055  /* "PyClical.pyx":803
8056  * {2}
8057  * """
8058  * return self.wrap( self.unwrap() * toClifford(rhs) ) # <<<<<<<<<<<<<<
8059  *
8060  * def __mod__(lhs, rhs):
8061  */
8062  __Pyx_XDECREF(__pyx_r);
8063  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) * __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8064  __Pyx_GOTREF(__pyx_t_1);
8065  __pyx_r = __pyx_t_1;
8066  __pyx_t_1 = 0;
8067  goto __pyx_L0;
8068 
8069  /* "PyClical.pyx":792
8070  * return clifford().wrap( toClifford(lhs) * toClifford(rhs) )
8071  *
8072  * def __imul__(self, rhs): # <<<<<<<<<<<<<<
8073  * """
8074  * Geometric product.
8075  */
8076 
8077  /* function exit code */
8078  __pyx_L1_error:;
8079  __Pyx_XDECREF(__pyx_t_1);
8080  __Pyx_AddTraceback("PyClical.clifford.__imul__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8081  __pyx_r = NULL;
8082  __pyx_L0:;
8083  __Pyx_XGIVEREF(__pyx_r);
8084  __Pyx_RefNannyFinishContext();
8085  return __pyx_r;
8086  }
8087 
8088  /* "PyClical.pyx":805
8089  * return self.wrap( self.unwrap() * toClifford(rhs) )
8090  *
8091  * def __mod__(lhs, rhs): # <<<<<<<<<<<<<<
8092  * """
8093  * Contraction.
8094  */
8095 
8096  /* Python wrapper */
8097  static PyObject *__pyx_pw_8PyClical_8clifford_33__mod__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8098  static char __pyx_doc_8PyClical_8clifford_32__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 ";
8099  #if CYTHON_COMPILING_IN_CPYTHON
8100  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_32__mod__;
8101  #endif
8102  static PyObject *__pyx_pw_8PyClical_8clifford_33__mod__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8103  PyObject *__pyx_r = 0;
8104  __Pyx_RefNannyDeclarations
8105  __Pyx_RefNannySetupContext("__mod__ (wrapper)", 0);
8106  __pyx_r = __pyx_pf_8PyClical_8clifford_32__mod__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8107 
8108  /* function exit code */
8109  __Pyx_RefNannyFinishContext();
8110  return __pyx_r;
8111  }
8112 
8113  static PyObject *__pyx_pf_8PyClical_8clifford_32__mod__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8114  PyObject *__pyx_r = NULL;
8115  __Pyx_RefNannyDeclarations
8116  PyObject *__pyx_t_1 = NULL;
8117  PyObject *__pyx_t_2 = NULL;
8118  int __pyx_lineno = 0;
8119  const char *__pyx_filename = NULL;
8120  int __pyx_clineno = 0;
8121  __Pyx_RefNannySetupContext("__mod__", 0);
8122 
8123  /* "PyClical.pyx":818
8124  * {2}
8125  * """
8126  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) ) # <<<<<<<<<<<<<<
8127  *
8128  * def __imod__(self, rhs):
8129  */
8130  __Pyx_XDECREF(__pyx_r);
8131  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8132  __Pyx_GOTREF(__pyx_t_1);
8133  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) % __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8134  __Pyx_GOTREF(__pyx_t_2);
8135  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8136  __pyx_r = __pyx_t_2;
8137  __pyx_t_2 = 0;
8138  goto __pyx_L0;
8139 
8140  /* "PyClical.pyx":805
8141  * return self.wrap( self.unwrap() * toClifford(rhs) )
8142  *
8143  * def __mod__(lhs, rhs): # <<<<<<<<<<<<<<
8144  * """
8145  * Contraction.
8146  */
8147 
8148  /* function exit code */
8149  __pyx_L1_error:;
8150  __Pyx_XDECREF(__pyx_t_1);
8151  __Pyx_XDECREF(__pyx_t_2);
8152  __Pyx_AddTraceback("PyClical.clifford.__mod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8153  __pyx_r = NULL;
8154  __pyx_L0:;
8155  __Pyx_XGIVEREF(__pyx_r);
8156  __Pyx_RefNannyFinishContext();
8157  return __pyx_r;
8158  }
8159 
8160  /* "PyClical.pyx":820
8161  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) )
8162  *
8163  * def __imod__(self, rhs): # <<<<<<<<<<<<<<
8164  * """
8165  * Contraction.
8166  */
8167 
8168  /* Python wrapper */
8169  static PyObject *__pyx_pw_8PyClical_8clifford_35__imod__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8170  static char __pyx_doc_8PyClical_8clifford_34__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 ";
8171  #if CYTHON_COMPILING_IN_CPYTHON
8172  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_34__imod__;
8173  #endif
8174  static PyObject *__pyx_pw_8PyClical_8clifford_35__imod__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8175  PyObject *__pyx_r = 0;
8176  __Pyx_RefNannyDeclarations
8177  __Pyx_RefNannySetupContext("__imod__ (wrapper)", 0);
8178  __pyx_r = __pyx_pf_8PyClical_8clifford_34__imod__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8179 
8180  /* function exit code */
8181  __Pyx_RefNannyFinishContext();
8182  return __pyx_r;
8183  }
8184 
8185  static PyObject *__pyx_pf_8PyClical_8clifford_34__imod__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
8186  PyObject *__pyx_r = NULL;
8187  __Pyx_RefNannyDeclarations
8188  PyObject *__pyx_t_1 = NULL;
8189  int __pyx_lineno = 0;
8190  const char *__pyx_filename = NULL;
8191  int __pyx_clineno = 0;
8192  __Pyx_RefNannySetupContext("__imod__", 0);
8193 
8194  /* "PyClical.pyx":833
8195  * {2}
8196  * """
8197  * return self.wrap( self.unwrap() % toClifford(rhs) ) # <<<<<<<<<<<<<<
8198  *
8199  * def __and__(lhs, rhs):
8200  */
8201  __Pyx_XDECREF(__pyx_r);
8202  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) % __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8203  __Pyx_GOTREF(__pyx_t_1);
8204  __pyx_r = __pyx_t_1;
8205  __pyx_t_1 = 0;
8206  goto __pyx_L0;
8207 
8208  /* "PyClical.pyx":820
8209  * return clifford().wrap( toClifford(lhs) % toClifford(rhs) )
8210  *
8211  * def __imod__(self, rhs): # <<<<<<<<<<<<<<
8212  * """
8213  * Contraction.
8214  */
8215 
8216  /* function exit code */
8217  __pyx_L1_error:;
8218  __Pyx_XDECREF(__pyx_t_1);
8219  __Pyx_AddTraceback("PyClical.clifford.__imod__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8220  __pyx_r = NULL;
8221  __pyx_L0:;
8222  __Pyx_XGIVEREF(__pyx_r);
8223  __Pyx_RefNannyFinishContext();
8224  return __pyx_r;
8225  }
8226 
8227  /* "PyClical.pyx":835
8228  * return self.wrap( self.unwrap() % toClifford(rhs) )
8229  *
8230  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
8231  * """
8232  * Inner product.
8233  */
8234 
8235  /* Python wrapper */
8236  static PyObject *__pyx_pw_8PyClical_8clifford_37__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8237  static char __pyx_doc_8PyClical_8clifford_36__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 ";
8238  #if CYTHON_COMPILING_IN_CPYTHON
8239  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_36__and__;
8240  #endif
8241  static PyObject *__pyx_pw_8PyClical_8clifford_37__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8242  PyObject *__pyx_r = 0;
8243  __Pyx_RefNannyDeclarations
8244  __Pyx_RefNannySetupContext("__and__ (wrapper)", 0);
8245  __pyx_r = __pyx_pf_8PyClical_8clifford_36__and__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8246 
8247  /* function exit code */
8248  __Pyx_RefNannyFinishContext();
8249  return __pyx_r;
8250  }
8251 
8252  static PyObject *__pyx_pf_8PyClical_8clifford_36__and__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8253  PyObject *__pyx_r = NULL;
8254  __Pyx_RefNannyDeclarations
8255  PyObject *__pyx_t_1 = NULL;
8256  PyObject *__pyx_t_2 = NULL;
8257  int __pyx_lineno = 0;
8258  const char *__pyx_filename = NULL;
8259  int __pyx_clineno = 0;
8260  __Pyx_RefNannySetupContext("__and__", 0);
8261 
8262  /* "PyClical.pyx":848
8263  * {2}
8264  * """
8265  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) ) # <<<<<<<<<<<<<<
8266  *
8267  * def __iand__(self, rhs):
8268  */
8269  __Pyx_XDECREF(__pyx_r);
8270  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8271  __Pyx_GOTREF(__pyx_t_1);
8272  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) & __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8273  __Pyx_GOTREF(__pyx_t_2);
8274  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8275  __pyx_r = __pyx_t_2;
8276  __pyx_t_2 = 0;
8277  goto __pyx_L0;
8278 
8279  /* "PyClical.pyx":835
8280  * return self.wrap( self.unwrap() % toClifford(rhs) )
8281  *
8282  * def __and__(lhs, rhs): # <<<<<<<<<<<<<<
8283  * """
8284  * Inner product.
8285  */
8286 
8287  /* function exit code */
8288  __pyx_L1_error:;
8289  __Pyx_XDECREF(__pyx_t_1);
8290  __Pyx_XDECREF(__pyx_t_2);
8291  __Pyx_AddTraceback("PyClical.clifford.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8292  __pyx_r = NULL;
8293  __pyx_L0:;
8294  __Pyx_XGIVEREF(__pyx_r);
8295  __Pyx_RefNannyFinishContext();
8296  return __pyx_r;
8297  }
8298 
8299  /* "PyClical.pyx":850
8300  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) )
8301  *
8302  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
8303  * """
8304  * Inner product.
8305  */
8306 
8307  /* Python wrapper */
8308  static PyObject *__pyx_pw_8PyClical_8clifford_39__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8309  static char __pyx_doc_8PyClical_8clifford_38__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 ";
8310  #if CYTHON_COMPILING_IN_CPYTHON
8311  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_38__iand__;
8312  #endif
8313  static PyObject *__pyx_pw_8PyClical_8clifford_39__iand__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8314  PyObject *__pyx_r = 0;
8315  __Pyx_RefNannyDeclarations
8316  __Pyx_RefNannySetupContext("__iand__ (wrapper)", 0);
8317  __pyx_r = __pyx_pf_8PyClical_8clifford_38__iand__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8318 
8319  /* function exit code */
8320  __Pyx_RefNannyFinishContext();
8321  return __pyx_r;
8322  }
8323 
8324  static PyObject *__pyx_pf_8PyClical_8clifford_38__iand__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
8325  PyObject *__pyx_r = NULL;
8326  __Pyx_RefNannyDeclarations
8327  PyObject *__pyx_t_1 = NULL;
8328  int __pyx_lineno = 0;
8329  const char *__pyx_filename = NULL;
8330  int __pyx_clineno = 0;
8331  __Pyx_RefNannySetupContext("__iand__", 0);
8332 
8333  /* "PyClical.pyx":863
8334  * {2}
8335  * """
8336  * return self.wrap( self.unwrap() & toClifford(rhs) ) # <<<<<<<<<<<<<<
8337  *
8338  * def __xor__(lhs, rhs):
8339  */
8340  __Pyx_XDECREF(__pyx_r);
8341  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) & __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8342  __Pyx_GOTREF(__pyx_t_1);
8343  __pyx_r = __pyx_t_1;
8344  __pyx_t_1 = 0;
8345  goto __pyx_L0;
8346 
8347  /* "PyClical.pyx":850
8348  * return clifford().wrap( toClifford(lhs) & toClifford(rhs) )
8349  *
8350  * def __iand__(self, rhs): # <<<<<<<<<<<<<<
8351  * """
8352  * Inner product.
8353  */
8354 
8355  /* function exit code */
8356  __pyx_L1_error:;
8357  __Pyx_XDECREF(__pyx_t_1);
8358  __Pyx_AddTraceback("PyClical.clifford.__iand__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8359  __pyx_r = NULL;
8360  __pyx_L0:;
8361  __Pyx_XGIVEREF(__pyx_r);
8362  __Pyx_RefNannyFinishContext();
8363  return __pyx_r;
8364  }
8365 
8366  /* "PyClical.pyx":865
8367  * return self.wrap( self.unwrap() & toClifford(rhs) )
8368  *
8369  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
8370  * """
8371  * Outer product.
8372  */
8373 
8374  /* Python wrapper */
8375  static PyObject *__pyx_pw_8PyClical_8clifford_41__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8376  static char __pyx_doc_8PyClical_8clifford_40__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 ";
8377  #if CYTHON_COMPILING_IN_CPYTHON
8378  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_40__xor__;
8379  #endif
8380  static PyObject *__pyx_pw_8PyClical_8clifford_41__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8381  PyObject *__pyx_r = 0;
8382  __Pyx_RefNannyDeclarations
8383  __Pyx_RefNannySetupContext("__xor__ (wrapper)", 0);
8384  __pyx_r = __pyx_pf_8PyClical_8clifford_40__xor__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8385 
8386  /* function exit code */
8387  __Pyx_RefNannyFinishContext();
8388  return __pyx_r;
8389  }
8390 
8391  static PyObject *__pyx_pf_8PyClical_8clifford_40__xor__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8392  PyObject *__pyx_r = NULL;
8393  __Pyx_RefNannyDeclarations
8394  PyObject *__pyx_t_1 = NULL;
8395  PyObject *__pyx_t_2 = NULL;
8396  int __pyx_lineno = 0;
8397  const char *__pyx_filename = NULL;
8398  int __pyx_clineno = 0;
8399  __Pyx_RefNannySetupContext("__xor__", 0);
8400 
8401  /* "PyClical.pyx":878
8402  * 0
8403  * """
8404  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) ) # <<<<<<<<<<<<<<
8405  *
8406  * def __ixor__(self, rhs):
8407  */
8408  __Pyx_XDECREF(__pyx_r);
8409  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8410  __Pyx_GOTREF(__pyx_t_1);
8411  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) ^ __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8412  __Pyx_GOTREF(__pyx_t_2);
8413  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8414  __pyx_r = __pyx_t_2;
8415  __pyx_t_2 = 0;
8416  goto __pyx_L0;
8417 
8418  /* "PyClical.pyx":865
8419  * return self.wrap( self.unwrap() & toClifford(rhs) )
8420  *
8421  * def __xor__(lhs, rhs): # <<<<<<<<<<<<<<
8422  * """
8423  * Outer product.
8424  */
8425 
8426  /* function exit code */
8427  __pyx_L1_error:;
8428  __Pyx_XDECREF(__pyx_t_1);
8429  __Pyx_XDECREF(__pyx_t_2);
8430  __Pyx_AddTraceback("PyClical.clifford.__xor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8431  __pyx_r = NULL;
8432  __pyx_L0:;
8433  __Pyx_XGIVEREF(__pyx_r);
8434  __Pyx_RefNannyFinishContext();
8435  return __pyx_r;
8436  }
8437 
8438  /* "PyClical.pyx":880
8439  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) )
8440  *
8441  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
8442  * """
8443  * Outer product.
8444  */
8445 
8446  /* Python wrapper */
8447  static PyObject *__pyx_pw_8PyClical_8clifford_43__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8448  static char __pyx_doc_8PyClical_8clifford_42__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 ";
8449  #if CYTHON_COMPILING_IN_CPYTHON
8450  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_42__ixor__;
8451  #endif
8452  static PyObject *__pyx_pw_8PyClical_8clifford_43__ixor__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8453  PyObject *__pyx_r = 0;
8454  __Pyx_RefNannyDeclarations
8455  __Pyx_RefNannySetupContext("__ixor__ (wrapper)", 0);
8456  __pyx_r = __pyx_pf_8PyClical_8clifford_42__ixor__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8457 
8458  /* function exit code */
8459  __Pyx_RefNannyFinishContext();
8460  return __pyx_r;
8461  }
8462 
8463  static PyObject *__pyx_pf_8PyClical_8clifford_42__ixor__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
8464  PyObject *__pyx_r = NULL;
8465  __Pyx_RefNannyDeclarations
8466  PyObject *__pyx_t_1 = NULL;
8467  int __pyx_lineno = 0;
8468  const char *__pyx_filename = NULL;
8469  int __pyx_clineno = 0;
8470  __Pyx_RefNannySetupContext("__ixor__", 0);
8471 
8472  /* "PyClical.pyx":893
8473  * 0
8474  * """
8475  * return self.wrap( self.unwrap() ^ toClifford(rhs) ) # <<<<<<<<<<<<<<
8476  *
8477  * def __div__(lhs, rhs):
8478  */
8479  __Pyx_XDECREF(__pyx_r);
8480  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) ^ __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8481  __Pyx_GOTREF(__pyx_t_1);
8482  __pyx_r = __pyx_t_1;
8483  __pyx_t_1 = 0;
8484  goto __pyx_L0;
8485 
8486  /* "PyClical.pyx":880
8487  * return clifford().wrap( toClifford(lhs) ^ toClifford(rhs) )
8488  *
8489  * def __ixor__(self, rhs): # <<<<<<<<<<<<<<
8490  * """
8491  * Outer product.
8492  */
8493 
8494  /* function exit code */
8495  __pyx_L1_error:;
8496  __Pyx_XDECREF(__pyx_t_1);
8497  __Pyx_AddTraceback("PyClical.clifford.__ixor__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8498  __pyx_r = NULL;
8499  __pyx_L0:;
8500  __Pyx_XGIVEREF(__pyx_r);
8501  __Pyx_RefNannyFinishContext();
8502  return __pyx_r;
8503  }
8504 
8505  /* "PyClical.pyx":895
8506  * return self.wrap( self.unwrap() ^ toClifford(rhs) )
8507  *
8508  * def __div__(lhs, rhs): # <<<<<<<<<<<<<<
8509  * """
8510  * Geometric quotient.
8511  */
8512 
8513  /* Python wrapper */
8514  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
8515  static PyObject *__pyx_pw_8PyClical_8clifford_45__div__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8516  static char __pyx_doc_8PyClical_8clifford_44__div__[] = "\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 ";
8517  #if CYTHON_COMPILING_IN_CPYTHON
8518  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_44__div__;
8519  #endif
8520  static PyObject *__pyx_pw_8PyClical_8clifford_45__div__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8521  PyObject *__pyx_r = 0;
8522  __Pyx_RefNannyDeclarations
8523  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
8524  __pyx_r = __pyx_pf_8PyClical_8clifford_44__div__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8525 
8526  /* function exit code */
8527  __Pyx_RefNannyFinishContext();
8528  return __pyx_r;
8529  }
8530  #endif
8532  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
8533  static PyObject *__pyx_pf_8PyClical_8clifford_44__div__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8534  PyObject *__pyx_r = NULL;
8535  __Pyx_RefNannyDeclarations
8536  PyObject *__pyx_t_1 = NULL;
8537  PyObject *__pyx_t_2 = NULL;
8538  int __pyx_lineno = 0;
8539  const char *__pyx_filename = NULL;
8540  int __pyx_clineno = 0;
8541  __Pyx_RefNannySetupContext("__div__", 0);
8542 
8543  /* "PyClical.pyx":908
8544  * -{2}
8545  * """
8546  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) ) # <<<<<<<<<<<<<<
8547  *
8548  * def __idiv__(self, rhs):
8549  */
8550  __Pyx_XDECREF(__pyx_r);
8551  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8552  __Pyx_GOTREF(__pyx_t_1);
8553  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) / __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8554  __Pyx_GOTREF(__pyx_t_2);
8555  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8556  __pyx_r = __pyx_t_2;
8557  __pyx_t_2 = 0;
8558  goto __pyx_L0;
8559 
8560  /* "PyClical.pyx":895
8561  * return self.wrap( self.unwrap() ^ toClifford(rhs) )
8562  *
8563  * def __div__(lhs, rhs): # <<<<<<<<<<<<<<
8564  * """
8565  * Geometric quotient.
8566  */
8567 
8568  /* function exit code */
8569  __pyx_L1_error:;
8570  __Pyx_XDECREF(__pyx_t_1);
8571  __Pyx_XDECREF(__pyx_t_2);
8572  __Pyx_AddTraceback("PyClical.clifford.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8573  __pyx_r = NULL;
8574  __pyx_L0:;
8575  __Pyx_XGIVEREF(__pyx_r);
8576  __Pyx_RefNannyFinishContext();
8577  return __pyx_r;
8578  }
8579  #endif
8581  /* "PyClical.pyx":910
8582  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) )
8583  *
8584  * def __idiv__(self, rhs): # <<<<<<<<<<<<<<
8585  * """
8586  * Geometric quotient.
8587  */
8588 
8589  /* Python wrapper */
8590  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
8591  static PyObject *__pyx_pw_8PyClical_8clifford_47__idiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8592  static char __pyx_doc_8PyClical_8clifford_46__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 ";
8593  #if CYTHON_COMPILING_IN_CPYTHON
8594  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_46__idiv__;
8595  #endif
8596  static PyObject *__pyx_pw_8PyClical_8clifford_47__idiv__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8597  PyObject *__pyx_r = 0;
8598  __Pyx_RefNannyDeclarations
8599  __Pyx_RefNannySetupContext("__idiv__ (wrapper)", 0);
8600  __pyx_r = __pyx_pf_8PyClical_8clifford_46__idiv__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8601 
8602  /* function exit code */
8603  __Pyx_RefNannyFinishContext();
8604  return __pyx_r;
8605  }
8606  #endif
8608  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
8609  static PyObject *__pyx_pf_8PyClical_8clifford_46__idiv__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
8610  PyObject *__pyx_r = NULL;
8611  __Pyx_RefNannyDeclarations
8612  PyObject *__pyx_t_1 = NULL;
8613  int __pyx_lineno = 0;
8614  const char *__pyx_filename = NULL;
8615  int __pyx_clineno = 0;
8616  __Pyx_RefNannySetupContext("__idiv__", 0);
8617 
8618  /* "PyClical.pyx":923
8619  * -{2}
8620  * """
8621  * return self.wrap( self.unwrap() / toClifford(rhs) ) # <<<<<<<<<<<<<<
8622  *
8623  * def inv(self):
8624  */
8625  __Pyx_XDECREF(__pyx_r);
8626  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) / __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8627  __Pyx_GOTREF(__pyx_t_1);
8628  __pyx_r = __pyx_t_1;
8629  __pyx_t_1 = 0;
8630  goto __pyx_L0;
8631 
8632  /* "PyClical.pyx":910
8633  * return clifford().wrap( toClifford(lhs) / toClifford(rhs) )
8634  *
8635  * def __idiv__(self, rhs): # <<<<<<<<<<<<<<
8636  * """
8637  * Geometric quotient.
8638  */
8639 
8640  /* function exit code */
8641  __pyx_L1_error:;
8642  __Pyx_XDECREF(__pyx_t_1);
8643  __Pyx_AddTraceback("PyClical.clifford.__idiv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8644  __pyx_r = NULL;
8645  __pyx_L0:;
8646  __Pyx_XGIVEREF(__pyx_r);
8647  __Pyx_RefNannyFinishContext();
8648  return __pyx_r;
8649  }
8650  #endif
8652  /* "PyClical.pyx":925
8653  * return self.wrap( self.unwrap() / toClifford(rhs) )
8654  *
8655  * def inv(self): # <<<<<<<<<<<<<<
8656  * """
8657  * Geometric multiplicative inverse.
8658  */
8659 
8660  /* Python wrapper */
8661  static PyObject *__pyx_pw_8PyClical_8clifford_49inv(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
8662  static char __pyx_doc_8PyClical_8clifford_48inv[] = "\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 ";
8663  static PyObject *__pyx_pw_8PyClical_8clifford_49inv(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
8664  PyObject *__pyx_r = 0;
8665  __Pyx_RefNannyDeclarations
8666  __Pyx_RefNannySetupContext("inv (wrapper)", 0);
8667  __pyx_r = __pyx_pf_8PyClical_8clifford_48inv(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
8668 
8669  /* function exit code */
8670  __Pyx_RefNannyFinishContext();
8671  return __pyx_r;
8672  }
8673 
8674  static PyObject *__pyx_pf_8PyClical_8clifford_48inv(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
8675  PyObject *__pyx_r = NULL;
8676  __Pyx_RefNannyDeclarations
8677  PyObject *__pyx_t_1 = NULL;
8678  PyObject *__pyx_t_2 = NULL;
8679  int __pyx_lineno = 0;
8680  const char *__pyx_filename = NULL;
8681  int __pyx_clineno = 0;
8682  __Pyx_RefNannySetupContext("inv", 0);
8683 
8684  /* "PyClical.pyx":936
8685  * -{1,2}
8686  * """
8687  * return clifford().wrap( self.instance.inv() ) # <<<<<<<<<<<<<<
8688  *
8689  * def __or__(lhs, rhs):
8690  */
8691  __Pyx_XDECREF(__pyx_r);
8692  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8693  __Pyx_GOTREF(__pyx_t_1);
8694  __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_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8695  __Pyx_GOTREF(__pyx_t_2);
8696  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8697  __pyx_r = __pyx_t_2;
8698  __pyx_t_2 = 0;
8699  goto __pyx_L0;
8700 
8701  /* "PyClical.pyx":925
8702  * return self.wrap( self.unwrap() / toClifford(rhs) )
8703  *
8704  * def inv(self): # <<<<<<<<<<<<<<
8705  * """
8706  * Geometric multiplicative inverse.
8707  */
8708 
8709  /* function exit code */
8710  __pyx_L1_error:;
8711  __Pyx_XDECREF(__pyx_t_1);
8712  __Pyx_XDECREF(__pyx_t_2);
8713  __Pyx_AddTraceback("PyClical.clifford.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
8714  __pyx_r = NULL;
8715  __pyx_L0:;
8716  __Pyx_XGIVEREF(__pyx_r);
8717  __Pyx_RefNannyFinishContext();
8718  return __pyx_r;
8719  }
8720 
8721  /* "PyClical.pyx":938
8722  * return clifford().wrap( self.instance.inv() )
8723  *
8724  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
8725  * """
8726  * Transform left hand side, using right hand side as a transformation.
8727  */
8728 
8729  /* Python wrapper */
8730  static PyObject *__pyx_pw_8PyClical_8clifford_51__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs); /*proto*/
8731  static char __pyx_doc_8PyClical_8clifford_50__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 ";
8732  #if CYTHON_COMPILING_IN_CPYTHON
8733  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_50__or__;
8734  #endif
8735  static PyObject *__pyx_pw_8PyClical_8clifford_51__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8736  PyObject *__pyx_r = 0;
8737  __Pyx_RefNannyDeclarations
8738  __Pyx_RefNannySetupContext("__or__ (wrapper)", 0);
8739  __pyx_r = __pyx_pf_8PyClical_8clifford_50__or__(((PyObject *)__pyx_v_lhs), ((PyObject *)__pyx_v_rhs));
8740 
8741  /* function exit code */
8742  __Pyx_RefNannyFinishContext();
8743  return __pyx_r;
8744  }
8745 
8746  static PyObject *__pyx_pf_8PyClical_8clifford_50__or__(PyObject *__pyx_v_lhs, PyObject *__pyx_v_rhs) {
8747  PyObject *__pyx_r = NULL;
8748  __Pyx_RefNannyDeclarations
8749  PyObject *__pyx_t_1 = NULL;
8750  PyObject *__pyx_t_2 = NULL;
8751  int __pyx_lineno = 0;
8752  const char *__pyx_filename = NULL;
8753  int __pyx_clineno = 0;
8754  __Pyx_RefNannySetupContext("__or__", 0);
8755 
8756  /* "PyClical.pyx":947
8757  * -{1}
8758  * """
8759  * return clifford().wrap( toClifford(lhs) | toClifford(rhs) ) # <<<<<<<<<<<<<<
8760  *
8761  * def __ior__(self, rhs):
8762  */
8763  __Pyx_XDECREF(__pyx_r);
8764  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8765  __Pyx_GOTREF(__pyx_t_1);
8766  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), (__pyx_f_8PyClical_toClifford(__pyx_v_lhs) | __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8767  __Pyx_GOTREF(__pyx_t_2);
8768  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8769  __pyx_r = __pyx_t_2;
8770  __pyx_t_2 = 0;
8771  goto __pyx_L0;
8772 
8773  /* "PyClical.pyx":938
8774  * return clifford().wrap( self.instance.inv() )
8775  *
8776  * def __or__(lhs, rhs): # <<<<<<<<<<<<<<
8777  * """
8778  * Transform left hand side, using right hand side as a transformation.
8779  */
8780 
8781  /* function exit code */
8782  __pyx_L1_error:;
8783  __Pyx_XDECREF(__pyx_t_1);
8784  __Pyx_XDECREF(__pyx_t_2);
8785  __Pyx_AddTraceback("PyClical.clifford.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8786  __pyx_r = NULL;
8787  __pyx_L0:;
8788  __Pyx_XGIVEREF(__pyx_r);
8789  __Pyx_RefNannyFinishContext();
8790  return __pyx_r;
8791  }
8792 
8793  /* "PyClical.pyx":949
8794  * return clifford().wrap( toClifford(lhs) | toClifford(rhs) )
8795  *
8796  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
8797  * """
8798  * Transform left hand side, using right hand side as a transformation.
8799  */
8800 
8801  /* Python wrapper */
8802  static PyObject *__pyx_pw_8PyClical_8clifford_53__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
8803  static char __pyx_doc_8PyClical_8clifford_52__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 ";
8804  #if CYTHON_COMPILING_IN_CPYTHON
8805  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_52__ior__;
8806  #endif
8807  static PyObject *__pyx_pw_8PyClical_8clifford_53__ior__(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
8808  PyObject *__pyx_r = 0;
8809  __Pyx_RefNannyDeclarations
8810  __Pyx_RefNannySetupContext("__ior__ (wrapper)", 0);
8811  __pyx_r = __pyx_pf_8PyClical_8clifford_52__ior__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_rhs));
8812 
8813  /* function exit code */
8814  __Pyx_RefNannyFinishContext();
8815  return __pyx_r;
8816  }
8817 
8818  static PyObject *__pyx_pf_8PyClical_8clifford_52__ior__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_rhs) {
8819  PyObject *__pyx_r = NULL;
8820  __Pyx_RefNannyDeclarations
8821  PyObject *__pyx_t_1 = NULL;
8822  int __pyx_lineno = 0;
8823  const char *__pyx_filename = NULL;
8824  int __pyx_clineno = 0;
8825  __Pyx_RefNannySetupContext("__ior__", 0);
8826 
8827  /* "PyClical.pyx":958
8828  * -{1}
8829  * """
8830  * return self.wrap( self.unwrap() | toClifford(rhs) ) # <<<<<<<<<<<<<<
8831  *
8832  * def __pow__(self, m, dummy):
8833  */
8834  __Pyx_XDECREF(__pyx_r);
8835  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(__pyx_v_self, (__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self) | __pyx_f_8PyClical_toClifford(__pyx_v_rhs))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8836  __Pyx_GOTREF(__pyx_t_1);
8837  __pyx_r = __pyx_t_1;
8838  __pyx_t_1 = 0;
8839  goto __pyx_L0;
8840 
8841  /* "PyClical.pyx":949
8842  * return clifford().wrap( toClifford(lhs) | toClifford(rhs) )
8843  *
8844  * def __ior__(self, rhs): # <<<<<<<<<<<<<<
8845  * """
8846  * Transform left hand side, using right hand side as a transformation.
8847  */
8848 
8849  /* function exit code */
8850  __pyx_L1_error:;
8851  __Pyx_XDECREF(__pyx_t_1);
8852  __Pyx_AddTraceback("PyClical.clifford.__ior__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8853  __pyx_r = NULL;
8854  __pyx_L0:;
8855  __Pyx_XGIVEREF(__pyx_r);
8856  __Pyx_RefNannyFinishContext();
8857  return __pyx_r;
8858  }
8859 
8860  /* "PyClical.pyx":960
8861  * return self.wrap( self.unwrap() | toClifford(rhs) )
8862  *
8863  * def __pow__(self, m, dummy): # <<<<<<<<<<<<<<
8864  * """
8865  * Power: self to the m.
8866  */
8867 
8868  /* Python wrapper */
8869  static PyObject *__pyx_pw_8PyClical_8clifford_55__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_m, PyObject *__pyx_v_dummy); /*proto*/
8870  static char __pyx_doc_8PyClical_8clifford_54__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 ";
8871  #if CYTHON_COMPILING_IN_CPYTHON
8872  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_54__pow__;
8873  #endif
8874  static PyObject *__pyx_pw_8PyClical_8clifford_55__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_m, PyObject *__pyx_v_dummy) {
8875  PyObject *__pyx_r = 0;
8876  __Pyx_RefNannyDeclarations
8877  __Pyx_RefNannySetupContext("__pow__ (wrapper)", 0);
8878  __pyx_r = __pyx_pf_8PyClical_8clifford_54__pow__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_m), ((PyObject *)__pyx_v_dummy));
8879 
8880  /* function exit code */
8881  __Pyx_RefNannyFinishContext();
8882  return __pyx_r;
8883  }
8884 
8885  static PyObject *__pyx_pf_8PyClical_8clifford_54__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_m, CYTHON_UNUSED PyObject *__pyx_v_dummy) {
8886  PyObject *__pyx_r = NULL;
8887  __Pyx_RefNannyDeclarations
8888  PyObject *__pyx_t_1 = NULL;
8889  int __pyx_lineno = 0;
8890  const char *__pyx_filename = NULL;
8891  int __pyx_clineno = 0;
8892  __Pyx_RefNannySetupContext("__pow__", 0);
8893 
8894  /* "PyClical.pyx":977
8895  * 1
8896  * """
8897  * return pow(self, m) # <<<<<<<<<<<<<<
8898  *
8899  * def pow(self, m):
8900  */
8901  __Pyx_XDECREF(__pyx_r);
8902  __pyx_t_1 = __pyx_f_8PyClical_pow(__pyx_v_self, __pyx_v_m, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8903  __Pyx_GOTREF(__pyx_t_1);
8904  __pyx_r = __pyx_t_1;
8905  __pyx_t_1 = 0;
8906  goto __pyx_L0;
8907 
8908  /* "PyClical.pyx":960
8909  * return self.wrap( self.unwrap() | toClifford(rhs) )
8910  *
8911  * def __pow__(self, m, dummy): # <<<<<<<<<<<<<<
8912  * """
8913  * Power: self to the m.
8914  */
8915 
8916  /* function exit code */
8917  __pyx_L1_error:;
8918  __Pyx_XDECREF(__pyx_t_1);
8919  __Pyx_AddTraceback("PyClical.clifford.__pow__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8920  __pyx_r = NULL;
8921  __pyx_L0:;
8922  __Pyx_XGIVEREF(__pyx_r);
8923  __Pyx_RefNannyFinishContext();
8924  return __pyx_r;
8925  }
8926 
8927  /* "PyClical.pyx":979
8928  * return pow(self, m)
8929  *
8930  * def pow(self, m): # <<<<<<<<<<<<<<
8931  * """
8932  * Power: self to the m.
8933  */
8934 
8935  /* Python wrapper */
8936  static PyObject *__pyx_pw_8PyClical_8clifford_57pow(PyObject *__pyx_v_self, PyObject *__pyx_v_m); /*proto*/
8937  static char __pyx_doc_8PyClical_8clifford_56pow[] = "\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 ";
8938  static PyObject *__pyx_pw_8PyClical_8clifford_57pow(PyObject *__pyx_v_self, PyObject *__pyx_v_m) {
8939  PyObject *__pyx_r = 0;
8940  __Pyx_RefNannyDeclarations
8941  __Pyx_RefNannySetupContext("pow (wrapper)", 0);
8942  __pyx_r = __pyx_pf_8PyClical_8clifford_56pow(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_m));
8943 
8944  /* function exit code */
8945  __Pyx_RefNannyFinishContext();
8946  return __pyx_r;
8947  }
8948 
8949  static PyObject *__pyx_pf_8PyClical_8clifford_56pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m) {
8950  PyObject *__pyx_r = NULL;
8951  __Pyx_RefNannyDeclarations
8952  PyObject *__pyx_t_1 = NULL;
8953  PyObject *__pyx_t_2 = NULL;
8954  int __pyx_t_3;
8955  int __pyx_t_4;
8956  int __pyx_t_5;
8957  int __pyx_lineno = 0;
8958  const char *__pyx_filename = NULL;
8959  int __pyx_clineno = 0;
8960  __Pyx_RefNannySetupContext("pow", 0);
8961 
8962  /* "PyClical.pyx":998
8963  * 1
8964  * """
8965  * if isinstance(m, numbers.Integral): # <<<<<<<<<<<<<<
8966  * return clifford().wrap( self.instance.pow(m) )
8967  * else:
8968  */
8969  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8970  __Pyx_GOTREF(__pyx_t_1);
8971  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Integral); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8972  __Pyx_GOTREF(__pyx_t_2);
8973  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8974  __pyx_t_3 = PyObject_IsInstance(__pyx_v_m, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8975  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8976  __pyx_t_4 = (__pyx_t_3 != 0);
8977  if (__pyx_t_4) {
8978 
8979  /* "PyClical.pyx":999
8980  * """
8981  * if isinstance(m, numbers.Integral):
8982  * return clifford().wrap( self.instance.pow(m) ) # <<<<<<<<<<<<<<
8983  * else:
8984  * return exp(m * log(self))
8985  */
8986  __Pyx_XDECREF(__pyx_r);
8987  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8988  __Pyx_GOTREF(__pyx_t_2);
8989  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_m); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8990  __pyx_t_1 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2), __pyx_v_self->instance->pow(__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8991  __Pyx_GOTREF(__pyx_t_1);
8992  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8993  __pyx_r = __pyx_t_1;
8994  __pyx_t_1 = 0;
8995  goto __pyx_L0;
8996 
8997  /* "PyClical.pyx":998
8998  * 1
8999  * """
9000  * if isinstance(m, numbers.Integral): # <<<<<<<<<<<<<<
9001  * return clifford().wrap( self.instance.pow(m) )
9002  * else:
9003  */
9004  }
9005 
9006  /* "PyClical.pyx":1001
9007  * return clifford().wrap( self.instance.pow(m) )
9008  * else:
9009  * return exp(m * log(self)) # <<<<<<<<<<<<<<
9010  *
9011  * def outer_pow(self, m):
9012  */
9013  /*else*/ {
9014  __Pyx_XDECREF(__pyx_r);
9015  __pyx_t_1 = __pyx_f_8PyClical_log(((PyObject *)__pyx_v_self), 0, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9016  __Pyx_GOTREF(__pyx_t_1);
9017  __pyx_t_2 = PyNumber_Multiply(__pyx_v_m, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9018  __Pyx_GOTREF(__pyx_t_2);
9019  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9020  __pyx_t_1 = __pyx_f_8PyClical_exp(__pyx_t_2, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9021  __Pyx_GOTREF(__pyx_t_1);
9022  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9023  __pyx_r = __pyx_t_1;
9024  __pyx_t_1 = 0;
9025  goto __pyx_L0;
9026  }
9027 
9028  /* "PyClical.pyx":979
9029  * return pow(self, m)
9030  *
9031  * def pow(self, m): # <<<<<<<<<<<<<<
9032  * """
9033  * Power: self to the m.
9034  */
9035 
9036  /* function exit code */
9037  __pyx_L1_error:;
9038  __Pyx_XDECREF(__pyx_t_1);
9039  __Pyx_XDECREF(__pyx_t_2);
9040  __Pyx_AddTraceback("PyClical.clifford.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
9041  __pyx_r = NULL;
9042  __pyx_L0:;
9043  __Pyx_XGIVEREF(__pyx_r);
9044  __Pyx_RefNannyFinishContext();
9045  return __pyx_r;
9046  }
9047 
9048  /* "PyClical.pyx":1003
9049  * return exp(m * log(self))
9050  *
9051  * def outer_pow(self, m): # <<<<<<<<<<<<<<
9052  * """
9053  * Outer product power.
9054  */
9055 
9056  /* Python wrapper */
9057  static PyObject *__pyx_pw_8PyClical_8clifford_59outer_pow(PyObject *__pyx_v_self, PyObject *__pyx_v_m); /*proto*/
9058  static char __pyx_doc_8PyClical_8clifford_58outer_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 ";
9059  static PyObject *__pyx_pw_8PyClical_8clifford_59outer_pow(PyObject *__pyx_v_self, PyObject *__pyx_v_m) {
9060  PyObject *__pyx_r = 0;
9061  __Pyx_RefNannyDeclarations
9062  __Pyx_RefNannySetupContext("outer_pow (wrapper)", 0);
9063  __pyx_r = __pyx_pf_8PyClical_8clifford_58outer_pow(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_m));
9064 
9065  /* function exit code */
9066  __Pyx_RefNannyFinishContext();
9067  return __pyx_r;
9068  }
9069 
9070  static PyObject *__pyx_pf_8PyClical_8clifford_58outer_pow(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_m) {
9071  PyObject *__pyx_r = NULL;
9072  __Pyx_RefNannyDeclarations
9073  PyObject *__pyx_t_1 = NULL;
9074  int __pyx_t_2;
9075  PyObject *__pyx_t_3 = NULL;
9076  int __pyx_lineno = 0;
9077  const char *__pyx_filename = NULL;
9078  int __pyx_clineno = 0;
9079  __Pyx_RefNannySetupContext("outer_pow", 0);
9080 
9081  /* "PyClical.pyx":1017
9082  *
9083  * """
9084  * return clifford().wrap( self.instance.outer_pow(m) ) # <<<<<<<<<<<<<<
9085  *
9086  * def __call__(self, grade):
9087  */
9088  __Pyx_XDECREF(__pyx_r);
9089  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9090  __Pyx_GOTREF(__pyx_t_1);
9091  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_m); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9092  __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_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9093  __Pyx_GOTREF(__pyx_t_3);
9094  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9095  __pyx_r = __pyx_t_3;
9096  __pyx_t_3 = 0;
9097  goto __pyx_L0;
9098 
9099  /* "PyClical.pyx":1003
9100  * return exp(m * log(self))
9101  *
9102  * def outer_pow(self, m): # <<<<<<<<<<<<<<
9103  * """
9104  * Outer product power.
9105  */
9106 
9107  /* function exit code */
9108  __pyx_L1_error:;
9109  __Pyx_XDECREF(__pyx_t_1);
9110  __Pyx_XDECREF(__pyx_t_3);
9111  __Pyx_AddTraceback("PyClical.clifford.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
9112  __pyx_r = NULL;
9113  __pyx_L0:;
9114  __Pyx_XGIVEREF(__pyx_r);
9115  __Pyx_RefNannyFinishContext();
9116  return __pyx_r;
9117  }
9118 
9119  /* "PyClical.pyx":1019
9120  * return clifford().wrap( self.instance.outer_pow(m) )
9121  *
9122  * def __call__(self, grade): # <<<<<<<<<<<<<<
9123  * """
9124  * Pure grade-vector part.
9125  */
9126 
9127  /* Python wrapper */
9128  static PyObject *__pyx_pw_8PyClical_8clifford_61__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9129  static char __pyx_doc_8PyClical_8clifford_60__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 ";
9130  #if CYTHON_COMPILING_IN_CPYTHON
9131  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_60__call__;
9132  #endif
9133  static PyObject *__pyx_pw_8PyClical_8clifford_61__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9134  PyObject *__pyx_v_grade = 0;
9135  int __pyx_lineno = 0;
9136  const char *__pyx_filename = NULL;
9137  int __pyx_clineno = 0;
9138  PyObject *__pyx_r = 0;
9139  __Pyx_RefNannyDeclarations
9140  __Pyx_RefNannySetupContext("__call__ (wrapper)", 0);
9141  {
9142  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grade,0};
9143  PyObject* values[1] = {0};
9144  if (unlikely(__pyx_kwds)) {
9145  Py_ssize_t kw_args;
9146  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9147  switch (pos_args) {
9148  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9149  case 0: break;
9150  default: goto __pyx_L5_argtuple_error;
9151  }
9152  kw_args = PyDict_Size(__pyx_kwds);
9153  switch (pos_args) {
9154  case 0:
9155  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grade)) != 0)) kw_args--;
9156  else goto __pyx_L5_argtuple_error;
9157  }
9158  if (unlikely(kw_args > 0)) {
9159  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9160  }
9161  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
9162  goto __pyx_L5_argtuple_error;
9163  } else {
9164  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9165  }
9166  __pyx_v_grade = values[0];
9167  }
9168  goto __pyx_L4_argument_unpacking_done;
9169  __pyx_L5_argtuple_error:;
9170  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9171  __pyx_L3_error:;
9172  __Pyx_AddTraceback("PyClical.clifford.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9173  __Pyx_RefNannyFinishContext();
9174  return NULL;
9175  __pyx_L4_argument_unpacking_done:;
9176  __pyx_r = __pyx_pf_8PyClical_8clifford_60__call__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_grade);
9177 
9178  /* function exit code */
9179  __Pyx_RefNannyFinishContext();
9180  return __pyx_r;
9181  }
9182 
9183  static PyObject *__pyx_pf_8PyClical_8clifford_60__call__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_grade) {
9184  PyObject *__pyx_r = NULL;
9185  __Pyx_RefNannyDeclarations
9186  PyObject *__pyx_t_1 = NULL;
9187  int __pyx_t_2;
9188  PyObject *__pyx_t_3 = NULL;
9189  int __pyx_lineno = 0;
9190  const char *__pyx_filename = NULL;
9191  int __pyx_clineno = 0;
9192  __Pyx_RefNannySetupContext("__call__", 0);
9193 
9194  /* "PyClical.pyx":1036
9195  * 0
9196  * """
9197  * return clifford().wrap( self.instance.call(grade) ) # <<<<<<<<<<<<<<
9198  *
9199  * def scalar(self):
9200  */
9201  __Pyx_XDECREF(__pyx_r);
9202  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9203  __Pyx_GOTREF(__pyx_t_1);
9204  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_grade); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9205  __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_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9206  __Pyx_GOTREF(__pyx_t_3);
9207  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9208  __pyx_r = __pyx_t_3;
9209  __pyx_t_3 = 0;
9210  goto __pyx_L0;
9211 
9212  /* "PyClical.pyx":1019
9213  * return clifford().wrap( self.instance.outer_pow(m) )
9214  *
9215  * def __call__(self, grade): # <<<<<<<<<<<<<<
9216  * """
9217  * Pure grade-vector part.
9218  */
9219 
9220  /* function exit code */
9221  __pyx_L1_error:;
9222  __Pyx_XDECREF(__pyx_t_1);
9223  __Pyx_XDECREF(__pyx_t_3);
9224  __Pyx_AddTraceback("PyClical.clifford.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9225  __pyx_r = NULL;
9226  __pyx_L0:;
9227  __Pyx_XGIVEREF(__pyx_r);
9228  __Pyx_RefNannyFinishContext();
9229  return __pyx_r;
9230  }
9231 
9232  /* "PyClical.pyx":1038
9233  * return clifford().wrap( self.instance.call(grade) )
9234  *
9235  * def scalar(self): # <<<<<<<<<<<<<<
9236  * """
9237  * Scalar part.
9238  */
9239 
9240  /* Python wrapper */
9241  static PyObject *__pyx_pw_8PyClical_8clifford_63scalar(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9242  static char __pyx_doc_8PyClical_8clifford_62scalar[] = "\n Scalar part.\n\n >>> clifford(\"1+{1}+{1,2}\").scalar()\n 1.0\n >>> clifford(\"{1,2}\").scalar()\n 0.0\n ";
9243  static PyObject *__pyx_pw_8PyClical_8clifford_63scalar(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9244  PyObject *__pyx_r = 0;
9245  __Pyx_RefNannyDeclarations
9246  __Pyx_RefNannySetupContext("scalar (wrapper)", 0);
9247  __pyx_r = __pyx_pf_8PyClical_8clifford_62scalar(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
9248 
9249  /* function exit code */
9250  __Pyx_RefNannyFinishContext();
9251  return __pyx_r;
9252  }
9253 
9254  static PyObject *__pyx_pf_8PyClical_8clifford_62scalar(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
9255  PyObject *__pyx_r = NULL;
9256  __Pyx_RefNannyDeclarations
9257  PyObject *__pyx_t_1 = NULL;
9258  int __pyx_lineno = 0;
9259  const char *__pyx_filename = NULL;
9260  int __pyx_clineno = 0;
9261  __Pyx_RefNannySetupContext("scalar", 0);
9262 
9263  /* "PyClical.pyx":1047
9264  * 0.0
9265  * """
9266  * return self.instance.scalar() # <<<<<<<<<<<<<<
9267  *
9268  * def pure(self):
9269  */
9270  __Pyx_XDECREF(__pyx_r);
9271  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->scalar()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9272  __Pyx_GOTREF(__pyx_t_1);
9273  __pyx_r = __pyx_t_1;
9274  __pyx_t_1 = 0;
9275  goto __pyx_L0;
9276 
9277  /* "PyClical.pyx":1038
9278  * return clifford().wrap( self.instance.call(grade) )
9279  *
9280  * def scalar(self): # <<<<<<<<<<<<<<
9281  * """
9282  * Scalar part.
9283  */
9284 
9285  /* function exit code */
9286  __pyx_L1_error:;
9287  __Pyx_XDECREF(__pyx_t_1);
9288  __Pyx_AddTraceback("PyClical.clifford.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
9289  __pyx_r = NULL;
9290  __pyx_L0:;
9291  __Pyx_XGIVEREF(__pyx_r);
9292  __Pyx_RefNannyFinishContext();
9293  return __pyx_r;
9294  }
9295 
9296  /* "PyClical.pyx":1049
9297  * return self.instance.scalar()
9298  *
9299  * def pure(self): # <<<<<<<<<<<<<<
9300  * """
9301  * Pure part.
9302  */
9303 
9304  /* Python wrapper */
9305  static PyObject *__pyx_pw_8PyClical_8clifford_65pure(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9306  static char __pyx_doc_8PyClical_8clifford_64pure[] = "\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 ";
9307  static PyObject *__pyx_pw_8PyClical_8clifford_65pure(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9308  PyObject *__pyx_r = 0;
9309  __Pyx_RefNannyDeclarations
9310  __Pyx_RefNannySetupContext("pure (wrapper)", 0);
9311  __pyx_r = __pyx_pf_8PyClical_8clifford_64pure(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
9312 
9313  /* function exit code */
9314  __Pyx_RefNannyFinishContext();
9315  return __pyx_r;
9316  }
9317 
9318  static PyObject *__pyx_pf_8PyClical_8clifford_64pure(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
9319  PyObject *__pyx_r = NULL;
9320  __Pyx_RefNannyDeclarations
9321  PyObject *__pyx_t_1 = NULL;
9322  PyObject *__pyx_t_2 = NULL;
9323  int __pyx_lineno = 0;
9324  const char *__pyx_filename = NULL;
9325  int __pyx_clineno = 0;
9326  __Pyx_RefNannySetupContext("pure", 0);
9327 
9328  /* "PyClical.pyx":1058
9329  * {1,2}
9330  * """
9331  * return clifford().wrap( self.instance.pure() ) # <<<<<<<<<<<<<<
9332  *
9333  * def even(self):
9334  */
9335  __Pyx_XDECREF(__pyx_r);
9336  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9337  __Pyx_GOTREF(__pyx_t_1);
9338  __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_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9339  __Pyx_GOTREF(__pyx_t_2);
9340  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9341  __pyx_r = __pyx_t_2;
9342  __pyx_t_2 = 0;
9343  goto __pyx_L0;
9344 
9345  /* "PyClical.pyx":1049
9346  * return self.instance.scalar()
9347  *
9348  * def pure(self): # <<<<<<<<<<<<<<
9349  * """
9350  * Pure part.
9351  */
9352 
9353  /* function exit code */
9354  __pyx_L1_error:;
9355  __Pyx_XDECREF(__pyx_t_1);
9356  __Pyx_XDECREF(__pyx_t_2);
9357  __Pyx_AddTraceback("PyClical.clifford.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
9358  __pyx_r = NULL;
9359  __pyx_L0:;
9360  __Pyx_XGIVEREF(__pyx_r);
9361  __Pyx_RefNannyFinishContext();
9362  return __pyx_r;
9363  }
9364 
9365  /* "PyClical.pyx":1060
9366  * return clifford().wrap( self.instance.pure() )
9367  *
9368  * def even(self): # <<<<<<<<<<<<<<
9369  * """
9370  * Even part of multivector, sum of even grade terms.
9371  */
9372 
9373  /* Python wrapper */
9374  static PyObject *__pyx_pw_8PyClical_8clifford_67even(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9375  static char __pyx_doc_8PyClical_8clifford_66even[] = "\n Even part of multivector, sum of even grade terms.\n\n >>> print clifford(\"1+{1}+{1,2}\").even()\n 1+{1,2}\n ";
9376  static PyObject *__pyx_pw_8PyClical_8clifford_67even(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9377  PyObject *__pyx_r = 0;
9378  __Pyx_RefNannyDeclarations
9379  __Pyx_RefNannySetupContext("even (wrapper)", 0);
9380  __pyx_r = __pyx_pf_8PyClical_8clifford_66even(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
9381 
9382  /* function exit code */
9383  __Pyx_RefNannyFinishContext();
9384  return __pyx_r;
9385  }
9386 
9387  static PyObject *__pyx_pf_8PyClical_8clifford_66even(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
9388  PyObject *__pyx_r = NULL;
9389  __Pyx_RefNannyDeclarations
9390  PyObject *__pyx_t_1 = NULL;
9391  PyObject *__pyx_t_2 = NULL;
9392  int __pyx_lineno = 0;
9393  const char *__pyx_filename = NULL;
9394  int __pyx_clineno = 0;
9395  __Pyx_RefNannySetupContext("even", 0);
9396 
9397  /* "PyClical.pyx":1067
9398  * 1+{1,2}
9399  * """
9400  * return clifford().wrap( self.instance.even() ) # <<<<<<<<<<<<<<
9401  *
9402  * def odd(self):
9403  */
9404  __Pyx_XDECREF(__pyx_r);
9405  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9406  __Pyx_GOTREF(__pyx_t_1);
9407  __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_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9408  __Pyx_GOTREF(__pyx_t_2);
9409  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9410  __pyx_r = __pyx_t_2;
9411  __pyx_t_2 = 0;
9412  goto __pyx_L0;
9413 
9414  /* "PyClical.pyx":1060
9415  * return clifford().wrap( self.instance.pure() )
9416  *
9417  * def even(self): # <<<<<<<<<<<<<<
9418  * """
9419  * Even part of multivector, sum of even grade terms.
9420  */
9421 
9422  /* function exit code */
9423  __pyx_L1_error:;
9424  __Pyx_XDECREF(__pyx_t_1);
9425  __Pyx_XDECREF(__pyx_t_2);
9426  __Pyx_AddTraceback("PyClical.clifford.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
9427  __pyx_r = NULL;
9428  __pyx_L0:;
9429  __Pyx_XGIVEREF(__pyx_r);
9430  __Pyx_RefNannyFinishContext();
9431  return __pyx_r;
9432  }
9433 
9434  /* "PyClical.pyx":1069
9435  * return clifford().wrap( self.instance.even() )
9436  *
9437  * def odd(self): # <<<<<<<<<<<<<<
9438  * """
9439  * Odd part of multivector, sum of odd grade terms.
9440  */
9441 
9442  /* Python wrapper */
9443  static PyObject *__pyx_pw_8PyClical_8clifford_69odd(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9444  static char __pyx_doc_8PyClical_8clifford_68odd[] = "\n Odd part of multivector, sum of odd grade terms.\n\n >>> print clifford(\"1+{1}+{1,2}\").odd()\n {1}\n ";
9445  static PyObject *__pyx_pw_8PyClical_8clifford_69odd(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9446  PyObject *__pyx_r = 0;
9447  __Pyx_RefNannyDeclarations
9448  __Pyx_RefNannySetupContext("odd (wrapper)", 0);
9449  __pyx_r = __pyx_pf_8PyClical_8clifford_68odd(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
9450 
9451  /* function exit code */
9452  __Pyx_RefNannyFinishContext();
9453  return __pyx_r;
9454  }
9455 
9456  static PyObject *__pyx_pf_8PyClical_8clifford_68odd(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
9457  PyObject *__pyx_r = NULL;
9458  __Pyx_RefNannyDeclarations
9459  PyObject *__pyx_t_1 = NULL;
9460  PyObject *__pyx_t_2 = NULL;
9461  int __pyx_lineno = 0;
9462  const char *__pyx_filename = NULL;
9463  int __pyx_clineno = 0;
9464  __Pyx_RefNannySetupContext("odd", 0);
9465 
9466  /* "PyClical.pyx":1076
9467  * {1}
9468  * """
9469  * return clifford().wrap( self.instance.odd() ) # <<<<<<<<<<<<<<
9470  *
9471  * def vector_part(self, frm = None):
9472  */
9473  __Pyx_XDECREF(__pyx_r);
9474  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9475  __Pyx_GOTREF(__pyx_t_1);
9476  __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_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9477  __Pyx_GOTREF(__pyx_t_2);
9478  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9479  __pyx_r = __pyx_t_2;
9480  __pyx_t_2 = 0;
9481  goto __pyx_L0;
9482 
9483  /* "PyClical.pyx":1069
9484  * return clifford().wrap( self.instance.even() )
9485  *
9486  * def odd(self): # <<<<<<<<<<<<<<
9487  * """
9488  * Odd part of multivector, sum of odd grade terms.
9489  */
9490 
9491  /* function exit code */
9492  __pyx_L1_error:;
9493  __Pyx_XDECREF(__pyx_t_1);
9494  __Pyx_XDECREF(__pyx_t_2);
9495  __Pyx_AddTraceback("PyClical.clifford.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
9496  __pyx_r = NULL;
9497  __pyx_L0:;
9498  __Pyx_XGIVEREF(__pyx_r);
9499  __Pyx_RefNannyFinishContext();
9500  return __pyx_r;
9501  }
9502 
9503  /* "PyClical.pyx":1078
9504  * return clifford().wrap( self.instance.odd() )
9505  *
9506  * def vector_part(self, frm = None): # <<<<<<<<<<<<<<
9507  * """
9508  * Vector part of multivector, as a Python list, with respect to frm.
9509  */
9510 
9511  /* Python wrapper */
9512  static PyObject *__pyx_pw_8PyClical_8clifford_71vector_part(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9513  static char __pyx_doc_8PyClical_8clifford_70vector_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 ";
9514  static PyObject *__pyx_pw_8PyClical_8clifford_71vector_part(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9515  PyObject *__pyx_v_frm = 0;
9516  int __pyx_lineno = 0;
9517  const char *__pyx_filename = NULL;
9518  int __pyx_clineno = 0;
9519  PyObject *__pyx_r = 0;
9520  __Pyx_RefNannyDeclarations
9521  __Pyx_RefNannySetupContext("vector_part (wrapper)", 0);
9522  {
9523  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frm,0};
9524  PyObject* values[1] = {0};
9525  values[0] = ((PyObject *)Py_None);
9526  if (unlikely(__pyx_kwds)) {
9527  Py_ssize_t kw_args;
9528  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9529  switch (pos_args) {
9530  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9531  case 0: break;
9532  default: goto __pyx_L5_argtuple_error;
9533  }
9534  kw_args = PyDict_Size(__pyx_kwds);
9535  switch (pos_args) {
9536  case 0:
9537  if (kw_args > 0) {
9538  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_frm);
9539  if (value) { values[0] = value; kw_args--; }
9540  }
9541  }
9542  if (unlikely(kw_args > 0)) {
9543  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vector_part") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9544  }
9545  } else {
9546  switch (PyTuple_GET_SIZE(__pyx_args)) {
9547  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9548  case 0: break;
9549  default: goto __pyx_L5_argtuple_error;
9550  }
9551  }
9552  __pyx_v_frm = values[0];
9553  }
9554  goto __pyx_L4_argument_unpacking_done;
9555  __pyx_L5_argtuple_error:;
9556  __Pyx_RaiseArgtupleInvalid("vector_part", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9557  __pyx_L3_error:;
9558  __Pyx_AddTraceback("PyClical.clifford.vector_part", __pyx_clineno, __pyx_lineno, __pyx_filename);
9559  __Pyx_RefNannyFinishContext();
9560  return NULL;
9561  __pyx_L4_argument_unpacking_done:;
9562  __pyx_r = __pyx_pf_8PyClical_8clifford_70vector_part(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), __pyx_v_frm);
9563 
9564  /* function exit code */
9565  __Pyx_RefNannyFinishContext();
9566  return __pyx_r;
9567  }
9568 
9569  static PyObject *__pyx_pf_8PyClical_8clifford_70vector_part(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_frm) {
9570  PyObject *__pyx_v_error_msg_prefix = NULL;
9571  std::vector<scalar_t> __pyx_v_vec;
9572  int __pyx_v_n;
9573  int __pyx_v_i;
9574  PyObject *__pyx_v_lst = NULL;
9575  PyObject *__pyx_v_err = NULL;
9576  PyObject *__pyx_r = NULL;
9577  __Pyx_RefNannyDeclarations
9578  PyObject *__pyx_t_1 = NULL;
9579  PyObject *__pyx_t_2 = NULL;
9580  PyObject *__pyx_t_3 = NULL;
9581  int __pyx_t_4;
9582  int __pyx_t_5;
9583  std::vector<scalar_t> __pyx_t_6;
9584  PyObject *__pyx_t_7 = NULL;
9585  int __pyx_t_8;
9586  int __pyx_t_9;
9587  PyObject *__pyx_t_10 = NULL;
9588  PyObject *__pyx_t_11 = NULL;
9589  PyObject *__pyx_t_12 = NULL;
9590  PyObject *__pyx_t_13 = NULL;
9591  PyObject *__pyx_t_14 = NULL;
9592  int __pyx_lineno = 0;
9593  const char *__pyx_filename = NULL;
9594  int __pyx_clineno = 0;
9595  __Pyx_RefNannySetupContext("vector_part", 0);
9596 
9597  /* "PyClical.pyx":1087
9598  * [0.0, 2.0, 3.0]
9599  * """
9600  * error_msg_prefix = "Cannot take vector part of " # <<<<<<<<<<<<<<
9601  * cdef vector[scalar_t] vec
9602  * cdef int n
9603  */
9604  __Pyx_INCREF(__pyx_kp_s_Cannot_take_vector_part_of);
9605  __pyx_v_error_msg_prefix = __pyx_kp_s_Cannot_take_vector_part_of;
9606 
9607  /* "PyClical.pyx":1091
9608  * cdef int n
9609  * cdef int i
9610  * try: # <<<<<<<<<<<<<<
9611  * if frm is None:
9612  * vec = self.instance.vector_part()
9613  */
9614  {
9615  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
9616  __Pyx_XGOTREF(__pyx_t_1);
9617  __Pyx_XGOTREF(__pyx_t_2);
9618  __Pyx_XGOTREF(__pyx_t_3);
9619  /*try:*/ {
9620 
9621  /* "PyClical.pyx":1092
9622  * cdef int i
9623  * try:
9624  * if frm is None: # <<<<<<<<<<<<<<
9625  * vec = self.instance.vector_part()
9626  * else:
9627  */
9628  __pyx_t_4 = (__pyx_v_frm == Py_None);
9629  __pyx_t_5 = (__pyx_t_4 != 0);
9630  if (__pyx_t_5) {
9631 
9632  /* "PyClical.pyx":1093
9633  * try:
9634  * if frm is None:
9635  * vec = self.instance.vector_part() # <<<<<<<<<<<<<<
9636  * else:
9637  * vec = self.instance.vector_part((<index_set>frm).unwrap())
9638  */
9639  __pyx_v_vec = __pyx_v_self->instance->vector_part();
9640 
9641  /* "PyClical.pyx":1092
9642  * cdef int i
9643  * try:
9644  * if frm is None: # <<<<<<<<<<<<<<
9645  * vec = self.instance.vector_part()
9646  * else:
9647  */
9648  goto __pyx_L11;
9649  }
9650 
9651  /* "PyClical.pyx":1095
9652  * vec = self.instance.vector_part()
9653  * else:
9654  * vec = self.instance.vector_part((<index_set>frm).unwrap()) # <<<<<<<<<<<<<<
9655  * n = vec.size()
9656  * lst = [0.0]*n
9657  */
9658  /*else*/ {
9659  try {
9660  __pyx_t_6 = __pyx_v_self->instance->vector_part(__pyx_f_8PyClical_9index_set_unwrap(((struct __pyx_obj_8PyClical_index_set *)__pyx_v_frm)));
9661  } catch(...) {
9662  __Pyx_CppExn2PyErr();
9663  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9664  }
9665  __pyx_v_vec = __pyx_t_6;
9666  }
9667  __pyx_L11:;
9668 
9669  /* "PyClical.pyx":1096
9670  * else:
9671  * vec = self.instance.vector_part((<index_set>frm).unwrap())
9672  * n = vec.size() # <<<<<<<<<<<<<<
9673  * lst = [0.0]*n
9674  * for i in xrange(n):
9675  */
9676  __pyx_v_n = __pyx_v_vec.size();
9677 
9678  /* "PyClical.pyx":1097
9679  * vec = self.instance.vector_part((<index_set>frm).unwrap())
9680  * n = vec.size()
9681  * lst = [0.0]*n # <<<<<<<<<<<<<<
9682  * for i in xrange(n):
9683  * lst[i] = vec[i]
9684  */
9685  __pyx_t_7 = PyList_New(1 * ((__pyx_v_n<0) ? 0:__pyx_v_n)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9686  __Pyx_GOTREF(__pyx_t_7);
9687  { Py_ssize_t __pyx_temp;
9688  for (__pyx_temp=0; __pyx_temp < __pyx_v_n; __pyx_temp++) {
9689  __Pyx_INCREF(__pyx_float_0_0);
9690  __Pyx_GIVEREF(__pyx_float_0_0);
9691  PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_float_0_0);
9692  }
9693  }
9694  __pyx_v_lst = ((PyObject*)__pyx_t_7);
9695  __pyx_t_7 = 0;
9696 
9697  /* "PyClical.pyx":1098
9698  * n = vec.size()
9699  * lst = [0.0]*n
9700  * for i in xrange(n): # <<<<<<<<<<<<<<
9701  * lst[i] = vec[i]
9702  * return lst
9703  */
9704  __pyx_t_8 = __pyx_v_n;
9705  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
9706  __pyx_v_i = __pyx_t_9;
9707 
9708  /* "PyClical.pyx":1099
9709  * lst = [0.0]*n
9710  * for i in xrange(n):
9711  * lst[i] = vec[i] # <<<<<<<<<<<<<<
9712  * return lst
9713  * except RuntimeError as err:
9714  */
9715  __pyx_t_7 = PyFloat_FromDouble((__pyx_v_vec[__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9716  __Pyx_GOTREF(__pyx_t_7);
9717  if (unlikely(__Pyx_SetItemInt(__pyx_v_lst, __pyx_v_i, __pyx_t_7, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9718  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9719  }
9720 
9721  /* "PyClical.pyx":1100
9722  * for i in xrange(n):
9723  * lst[i] = vec[i]
9724  * return lst # <<<<<<<<<<<<<<
9725  * except RuntimeError as err:
9726  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
9727  */
9728  __Pyx_XDECREF(__pyx_r);
9729  __Pyx_INCREF(__pyx_v_lst);
9730  __pyx_r = __pyx_v_lst;
9731  goto __pyx_L7_try_return;
9732 
9733  /* "PyClical.pyx":1091
9734  * cdef int n
9735  * cdef int i
9736  * try: # <<<<<<<<<<<<<<
9737  * if frm is None:
9738  * vec = self.instance.vector_part()
9739  */
9740  }
9741  __pyx_L3_error:;
9742  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9743 
9744  /* "PyClical.pyx":1101
9745  * lst[i] = vec[i]
9746  * return lst
9747  * except RuntimeError as err: # <<<<<<<<<<<<<<
9748  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
9749  * + repr(frm) + " as frame:\n\t"
9750  */
9751  __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
9752  if (__pyx_t_8) {
9753  __Pyx_AddTraceback("PyClical.clifford.vector_part", __pyx_clineno, __pyx_lineno, __pyx_filename);
9754  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_10, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9755  __Pyx_GOTREF(__pyx_t_7);
9756  __Pyx_GOTREF(__pyx_t_10);
9757  __Pyx_GOTREF(__pyx_t_11);
9758  __Pyx_INCREF(__pyx_t_10);
9759  __pyx_v_err = __pyx_t_10;
9760 
9761  /* "PyClical.pyx":1102
9762  * return lst
9763  * except RuntimeError as err:
9764  * raise ValueError(error_msg_prefix + str(self) + " using invalid " # <<<<<<<<<<<<<<
9765  * + repr(frm) + " as frame:\n\t"
9766  * + str(err))
9767  */
9768  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9769  __Pyx_GOTREF(__pyx_t_12);
9770  __Pyx_INCREF(((PyObject *)__pyx_v_self));
9771  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
9772  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_v_self));
9773  __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_12, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9774  __Pyx_GOTREF(__pyx_t_13);
9775  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9776  __pyx_t_12 = PyNumber_Add(__pyx_v_error_msg_prefix, __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9777  __Pyx_GOTREF(__pyx_t_12);
9778  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9779  __pyx_t_13 = PyNumber_Add(__pyx_t_12, __pyx_kp_s_using_invalid); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9780  __Pyx_GOTREF(__pyx_t_13);
9781  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9782 
9783  /* "PyClical.pyx":1103
9784  * except RuntimeError as err:
9785  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
9786  * + repr(frm) + " as frame:\n\t" # <<<<<<<<<<<<<<
9787  * + str(err))
9788  *
9789  */
9790  __pyx_t_12 = PyObject_Repr(__pyx_v_frm); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9791  __Pyx_GOTREF(__pyx_t_12);
9792  __pyx_t_14 = PyNumber_Add(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9793  __Pyx_GOTREF(__pyx_t_14);
9794  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9795  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9796  __pyx_t_12 = PyNumber_Add(__pyx_t_14, __pyx_kp_s_as_frame); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9797  __Pyx_GOTREF(__pyx_t_12);
9798  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
9799 
9800  /* "PyClical.pyx":1104
9801  * raise ValueError(error_msg_prefix + str(self) + " using invalid "
9802  * + repr(frm) + " as frame:\n\t"
9803  * + str(err)) # <<<<<<<<<<<<<<
9804  *
9805  * def involute(self):
9806  */
9807  __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9808  __Pyx_GOTREF(__pyx_t_14);
9809  __Pyx_INCREF(__pyx_v_err);
9810  __Pyx_GIVEREF(__pyx_v_err);
9811  PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_err);
9812  __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_14, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9813  __Pyx_GOTREF(__pyx_t_13);
9814  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
9815  __pyx_t_14 = PyNumber_Add(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9816  __Pyx_GOTREF(__pyx_t_14);
9817  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9818  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9819 
9820  /* "PyClical.pyx":1102
9821  * return lst
9822  * except RuntimeError as err:
9823  * raise ValueError(error_msg_prefix + str(self) + " using invalid " # <<<<<<<<<<<<<<
9824  * + repr(frm) + " as frame:\n\t"
9825  * + str(err))
9826  */
9827  __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9828  __Pyx_GOTREF(__pyx_t_13);
9829  __Pyx_GIVEREF(__pyx_t_14);
9830  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_14);
9831  __pyx_t_14 = 0;
9832  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_13, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9833  __Pyx_GOTREF(__pyx_t_14);
9834  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9835  __Pyx_Raise(__pyx_t_14, 0, 0, 0);
9836  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
9837  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
9838  }
9839  goto __pyx_L5_except_error;
9840  __pyx_L5_except_error:;
9841 
9842  /* "PyClical.pyx":1091
9843  * cdef int n
9844  * cdef int i
9845  * try: # <<<<<<<<<<<<<<
9846  * if frm is None:
9847  * vec = self.instance.vector_part()
9848  */
9849  __Pyx_XGIVEREF(__pyx_t_1);
9850  __Pyx_XGIVEREF(__pyx_t_2);
9851  __Pyx_XGIVEREF(__pyx_t_3);
9852  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
9853  goto __pyx_L1_error;
9854  __pyx_L7_try_return:;
9855  __Pyx_XGIVEREF(__pyx_t_1);
9856  __Pyx_XGIVEREF(__pyx_t_2);
9857  __Pyx_XGIVEREF(__pyx_t_3);
9858  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
9859  goto __pyx_L0;
9860  }
9861 
9862  /* "PyClical.pyx":1078
9863  * return clifford().wrap( self.instance.odd() )
9864  *
9865  * def vector_part(self, frm = None): # <<<<<<<<<<<<<<
9866  * """
9867  * Vector part of multivector, as a Python list, with respect to frm.
9868  */
9869 
9870  /* function exit code */
9871  __pyx_L1_error:;
9872  __Pyx_XDECREF(__pyx_t_7);
9873  __Pyx_XDECREF(__pyx_t_10);
9874  __Pyx_XDECREF(__pyx_t_11);
9875  __Pyx_XDECREF(__pyx_t_12);
9876  __Pyx_XDECREF(__pyx_t_13);
9877  __Pyx_XDECREF(__pyx_t_14);
9878  __Pyx_AddTraceback("PyClical.clifford.vector_part", __pyx_clineno, __pyx_lineno, __pyx_filename);
9879  __pyx_r = NULL;
9880  __pyx_L0:;
9881  __Pyx_XDECREF(__pyx_v_error_msg_prefix);
9882  __Pyx_XDECREF(__pyx_v_lst);
9883  __Pyx_XDECREF(__pyx_v_err);
9884  __Pyx_XGIVEREF(__pyx_r);
9885  __Pyx_RefNannyFinishContext();
9886  return __pyx_r;
9887  }
9888 
9889  /* "PyClical.pyx":1106
9890  * + str(err))
9891  *
9892  * def involute(self): # <<<<<<<<<<<<<<
9893  * """
9894  * Main involution, each {i} is replaced by -{i} in each term,
9895  */
9896 
9897  /* Python wrapper */
9898  static PyObject *__pyx_pw_8PyClical_8clifford_73involute(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9899  static char __pyx_doc_8PyClical_8clifford_72involute[] = "\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 ";
9900  static PyObject *__pyx_pw_8PyClical_8clifford_73involute(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9901  PyObject *__pyx_r = 0;
9902  __Pyx_RefNannyDeclarations
9903  __Pyx_RefNannySetupContext("involute (wrapper)", 0);
9904  __pyx_r = __pyx_pf_8PyClical_8clifford_72involute(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
9905 
9906  /* function exit code */
9907  __Pyx_RefNannyFinishContext();
9908  return __pyx_r;
9909  }
9910 
9911  static PyObject *__pyx_pf_8PyClical_8clifford_72involute(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
9912  PyObject *__pyx_r = NULL;
9913  __Pyx_RefNannyDeclarations
9914  PyObject *__pyx_t_1 = NULL;
9915  PyObject *__pyx_t_2 = NULL;
9916  int __pyx_lineno = 0;
9917  const char *__pyx_filename = NULL;
9918  int __pyx_clineno = 0;
9919  __Pyx_RefNannySetupContext("involute", 0);
9920 
9921  /* "PyClical.pyx":1120
9922  * 1-{1}+{1,2}
9923  * """
9924  * return clifford().wrap( self.instance.involute() ) # <<<<<<<<<<<<<<
9925  *
9926  * def reverse(self):
9927  */
9928  __Pyx_XDECREF(__pyx_r);
9929  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9930  __Pyx_GOTREF(__pyx_t_1);
9931  __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_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9932  __Pyx_GOTREF(__pyx_t_2);
9933  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9934  __pyx_r = __pyx_t_2;
9935  __pyx_t_2 = 0;
9936  goto __pyx_L0;
9937 
9938  /* "PyClical.pyx":1106
9939  * + str(err))
9940  *
9941  * def involute(self): # <<<<<<<<<<<<<<
9942  * """
9943  * Main involution, each {i} is replaced by -{i} in each term,
9944  */
9945 
9946  /* function exit code */
9947  __pyx_L1_error:;
9948  __Pyx_XDECREF(__pyx_t_1);
9949  __Pyx_XDECREF(__pyx_t_2);
9950  __Pyx_AddTraceback("PyClical.clifford.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
9951  __pyx_r = NULL;
9952  __pyx_L0:;
9953  __Pyx_XGIVEREF(__pyx_r);
9954  __Pyx_RefNannyFinishContext();
9955  return __pyx_r;
9956  }
9957 
9958  /* "PyClical.pyx":1122
9959  * return clifford().wrap( self.instance.involute() )
9960  *
9961  * def reverse(self): # <<<<<<<<<<<<<<
9962  * """
9963  * Reversion, eg. clifford("{1}")*clifford("{2}") -> clifford("{2}")*clifford("{1}").
9964  */
9965 
9966  /* Python wrapper */
9967  static PyObject *__pyx_pw_8PyClical_8clifford_75reverse(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9968  static char __pyx_doc_8PyClical_8clifford_74reverse[] = "\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 ";
9969  static PyObject *__pyx_pw_8PyClical_8clifford_75reverse(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9970  PyObject *__pyx_r = 0;
9971  __Pyx_RefNannyDeclarations
9972  __Pyx_RefNannySetupContext("reverse (wrapper)", 0);
9973  __pyx_r = __pyx_pf_8PyClical_8clifford_74reverse(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
9974 
9975  /* function exit code */
9976  __Pyx_RefNannyFinishContext();
9977  return __pyx_r;
9978  }
9979 
9980  static PyObject *__pyx_pf_8PyClical_8clifford_74reverse(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
9981  PyObject *__pyx_r = NULL;
9982  __Pyx_RefNannyDeclarations
9983  PyObject *__pyx_t_1 = NULL;
9984  PyObject *__pyx_t_2 = NULL;
9985  int __pyx_lineno = 0;
9986  const char *__pyx_filename = NULL;
9987  int __pyx_clineno = 0;
9988  __Pyx_RefNannySetupContext("reverse", 0);
9989 
9990  /* "PyClical.pyx":1135
9991  * 1+{1}-{1,2}
9992  * """
9993  * return clifford().wrap( self.instance.reverse() ) # <<<<<<<<<<<<<<
9994  *
9995  * def conj(self):
9996  */
9997  __Pyx_XDECREF(__pyx_r);
9998  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9999  __Pyx_GOTREF(__pyx_t_1);
10000  __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_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10001  __Pyx_GOTREF(__pyx_t_2);
10002  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10003  __pyx_r = __pyx_t_2;
10004  __pyx_t_2 = 0;
10005  goto __pyx_L0;
10006 
10007  /* "PyClical.pyx":1122
10008  * return clifford().wrap( self.instance.involute() )
10009  *
10010  * def reverse(self): # <<<<<<<<<<<<<<
10011  * """
10012  * Reversion, eg. clifford("{1}")*clifford("{2}") -> clifford("{2}")*clifford("{1}").
10013  */
10014 
10015  /* function exit code */
10016  __pyx_L1_error:;
10017  __Pyx_XDECREF(__pyx_t_1);
10018  __Pyx_XDECREF(__pyx_t_2);
10019  __Pyx_AddTraceback("PyClical.clifford.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
10020  __pyx_r = NULL;
10021  __pyx_L0:;
10022  __Pyx_XGIVEREF(__pyx_r);
10023  __Pyx_RefNannyFinishContext();
10024  return __pyx_r;
10025  }
10026 
10027  /* "PyClical.pyx":1137
10028  * return clifford().wrap( self.instance.reverse() )
10029  *
10030  * def conj(self): # <<<<<<<<<<<<<<
10031  * """
10032  * Conjugation, reverse o involute == involute o reverse.
10033  */
10034 
10035  /* Python wrapper */
10036  static PyObject *__pyx_pw_8PyClical_8clifford_77conj(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10037  static char __pyx_doc_8PyClical_8clifford_76conj[] = "\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 ";
10038  static PyObject *__pyx_pw_8PyClical_8clifford_77conj(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10039  PyObject *__pyx_r = 0;
10040  __Pyx_RefNannyDeclarations
10041  __Pyx_RefNannySetupContext("conj (wrapper)", 0);
10042  __pyx_r = __pyx_pf_8PyClical_8clifford_76conj(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10043 
10044  /* function exit code */
10045  __Pyx_RefNannyFinishContext();
10046  return __pyx_r;
10047  }
10048 
10049  static PyObject *__pyx_pf_8PyClical_8clifford_76conj(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10050  PyObject *__pyx_r = NULL;
10051  __Pyx_RefNannyDeclarations
10052  PyObject *__pyx_t_1 = NULL;
10053  PyObject *__pyx_t_2 = NULL;
10054  int __pyx_lineno = 0;
10055  const char *__pyx_filename = NULL;
10056  int __pyx_clineno = 0;
10057  __Pyx_RefNannySetupContext("conj", 0);
10058 
10059  /* "PyClical.pyx":1150
10060  * 1-{1}-{1,2}
10061  * """
10062  * return clifford().wrap( self.instance.conj() ) # <<<<<<<<<<<<<<
10063  *
10064  * def quad(self):
10065  */
10066  __Pyx_XDECREF(__pyx_r);
10067  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10068  __Pyx_GOTREF(__pyx_t_1);
10069  __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_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10070  __Pyx_GOTREF(__pyx_t_2);
10071  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10072  __pyx_r = __pyx_t_2;
10073  __pyx_t_2 = 0;
10074  goto __pyx_L0;
10075 
10076  /* "PyClical.pyx":1137
10077  * return clifford().wrap( self.instance.reverse() )
10078  *
10079  * def conj(self): # <<<<<<<<<<<<<<
10080  * """
10081  * Conjugation, reverse o involute == involute o reverse.
10082  */
10083 
10084  /* function exit code */
10085  __pyx_L1_error:;
10086  __Pyx_XDECREF(__pyx_t_1);
10087  __Pyx_XDECREF(__pyx_t_2);
10088  __Pyx_AddTraceback("PyClical.clifford.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
10089  __pyx_r = NULL;
10090  __pyx_L0:;
10091  __Pyx_XGIVEREF(__pyx_r);
10092  __Pyx_RefNannyFinishContext();
10093  return __pyx_r;
10094  }
10095 
10096  /* "PyClical.pyx":1152
10097  * return clifford().wrap( self.instance.conj() )
10098  *
10099  * def quad(self): # <<<<<<<<<<<<<<
10100  * """
10101  * Quadratic form == (rev(x)*x)(0).
10102  */
10103 
10104  /* Python wrapper */
10105  static PyObject *__pyx_pw_8PyClical_8clifford_79quad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10106  static char __pyx_doc_8PyClical_8clifford_78quad[] = "\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 ";
10107  static PyObject *__pyx_pw_8PyClical_8clifford_79quad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10108  PyObject *__pyx_r = 0;
10109  __Pyx_RefNannyDeclarations
10110  __Pyx_RefNannySetupContext("quad (wrapper)", 0);
10111  __pyx_r = __pyx_pf_8PyClical_8clifford_78quad(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10112 
10113  /* function exit code */
10114  __Pyx_RefNannyFinishContext();
10115  return __pyx_r;
10116  }
10117 
10118  static PyObject *__pyx_pf_8PyClical_8clifford_78quad(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10119  PyObject *__pyx_r = NULL;
10120  __Pyx_RefNannyDeclarations
10121  PyObject *__pyx_t_1 = NULL;
10122  int __pyx_lineno = 0;
10123  const char *__pyx_filename = NULL;
10124  int __pyx_clineno = 0;
10125  __Pyx_RefNannySetupContext("quad", 0);
10126 
10127  /* "PyClical.pyx":1161
10128  * 2.0
10129  * """
10130  * return self.instance.quad() # <<<<<<<<<<<<<<
10131  *
10132  * def norm(self):
10133  */
10134  __Pyx_XDECREF(__pyx_r);
10135  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->quad()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10136  __Pyx_GOTREF(__pyx_t_1);
10137  __pyx_r = __pyx_t_1;
10138  __pyx_t_1 = 0;
10139  goto __pyx_L0;
10140 
10141  /* "PyClical.pyx":1152
10142  * return clifford().wrap( self.instance.conj() )
10143  *
10144  * def quad(self): # <<<<<<<<<<<<<<
10145  * """
10146  * Quadratic form == (rev(x)*x)(0).
10147  */
10148 
10149  /* function exit code */
10150  __pyx_L1_error:;
10151  __Pyx_XDECREF(__pyx_t_1);
10152  __Pyx_AddTraceback("PyClical.clifford.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
10153  __pyx_r = NULL;
10154  __pyx_L0:;
10155  __Pyx_XGIVEREF(__pyx_r);
10156  __Pyx_RefNannyFinishContext();
10157  return __pyx_r;
10158  }
10159 
10160  /* "PyClical.pyx":1163
10161  * return self.instance.quad()
10162  *
10163  * def norm(self): # <<<<<<<<<<<<<<
10164  * """
10165  * Norm == sum of squares of coordinates.
10166  */
10167 
10168  /* Python wrapper */
10169  static PyObject *__pyx_pw_8PyClical_8clifford_81norm(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10170  static char __pyx_doc_8PyClical_8clifford_80norm[] = "\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 ";
10171  static PyObject *__pyx_pw_8PyClical_8clifford_81norm(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10172  PyObject *__pyx_r = 0;
10173  __Pyx_RefNannyDeclarations
10174  __Pyx_RefNannySetupContext("norm (wrapper)", 0);
10175  __pyx_r = __pyx_pf_8PyClical_8clifford_80norm(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10176 
10177  /* function exit code */
10178  __Pyx_RefNannyFinishContext();
10179  return __pyx_r;
10180  }
10181 
10182  static PyObject *__pyx_pf_8PyClical_8clifford_80norm(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10183  PyObject *__pyx_r = NULL;
10184  __Pyx_RefNannyDeclarations
10185  PyObject *__pyx_t_1 = NULL;
10186  int __pyx_lineno = 0;
10187  const char *__pyx_filename = NULL;
10188  int __pyx_clineno = 0;
10189  __Pyx_RefNannySetupContext("norm", 0);
10190 
10191  /* "PyClical.pyx":1172
10192  * 4.0
10193  * """
10194  * return self.instance.norm() # <<<<<<<<<<<<<<
10195  *
10196  * def abs(self):
10197  */
10198  __Pyx_XDECREF(__pyx_r);
10199  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->norm()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10200  __Pyx_GOTREF(__pyx_t_1);
10201  __pyx_r = __pyx_t_1;
10202  __pyx_t_1 = 0;
10203  goto __pyx_L0;
10204 
10205  /* "PyClical.pyx":1163
10206  * return self.instance.quad()
10207  *
10208  * def norm(self): # <<<<<<<<<<<<<<
10209  * """
10210  * Norm == sum of squares of coordinates.
10211  */
10212 
10213  /* function exit code */
10214  __pyx_L1_error:;
10215  __Pyx_XDECREF(__pyx_t_1);
10216  __Pyx_AddTraceback("PyClical.clifford.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
10217  __pyx_r = NULL;
10218  __pyx_L0:;
10219  __Pyx_XGIVEREF(__pyx_r);
10220  __Pyx_RefNannyFinishContext();
10221  return __pyx_r;
10222  }
10223 
10224  /* "PyClical.pyx":1174
10225  * return self.instance.norm()
10226  *
10227  * def abs(self): # <<<<<<<<<<<<<<
10228  * """
10229  * Absolute value: square root of norm.
10230  */
10231 
10232  /* Python wrapper */
10233  static PyObject *__pyx_pw_8PyClical_8clifford_83abs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10234  static char __pyx_doc_8PyClical_8clifford_82abs[] = "\n Absolute value: square root of norm.\n\n >>> clifford(\"1+{-1}+{1,2}+{1,2,3}\").abs()\n 2.0\n ";
10235  static PyObject *__pyx_pw_8PyClical_8clifford_83abs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10236  PyObject *__pyx_r = 0;
10237  __Pyx_RefNannyDeclarations
10238  __Pyx_RefNannySetupContext("abs (wrapper)", 0);
10239  __pyx_r = __pyx_pf_8PyClical_8clifford_82abs(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10240 
10241  /* function exit code */
10242  __Pyx_RefNannyFinishContext();
10243  return __pyx_r;
10244  }
10245 
10246  static PyObject *__pyx_pf_8PyClical_8clifford_82abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10247  PyObject *__pyx_r = NULL;
10248  __Pyx_RefNannyDeclarations
10249  PyObject *__pyx_t_1 = NULL;
10250  int __pyx_lineno = 0;
10251  const char *__pyx_filename = NULL;
10252  int __pyx_clineno = 0;
10253  __Pyx_RefNannySetupContext("abs", 0);
10254 
10255  /* "PyClical.pyx":1181
10256  * 2.0
10257  * """
10258  * return glucat.abs( self.unwrap() ) # <<<<<<<<<<<<<<
10259  *
10260  * def max_abs(self):
10261  */
10262  __Pyx_XDECREF(__pyx_r);
10263  __pyx_t_1 = PyFloat_FromDouble(abs(__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10264  __Pyx_GOTREF(__pyx_t_1);
10265  __pyx_r = __pyx_t_1;
10266  __pyx_t_1 = 0;
10267  goto __pyx_L0;
10268 
10269  /* "PyClical.pyx":1174
10270  * return self.instance.norm()
10271  *
10272  * def abs(self): # <<<<<<<<<<<<<<
10273  * """
10274  * Absolute value: square root of norm.
10275  */
10276 
10277  /* function exit code */
10278  __pyx_L1_error:;
10279  __Pyx_XDECREF(__pyx_t_1);
10280  __Pyx_AddTraceback("PyClical.clifford.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
10281  __pyx_r = NULL;
10282  __pyx_L0:;
10283  __Pyx_XGIVEREF(__pyx_r);
10284  __Pyx_RefNannyFinishContext();
10285  return __pyx_r;
10286  }
10287 
10288  /* "PyClical.pyx":1183
10289  * return glucat.abs( self.unwrap() )
10290  *
10291  * def max_abs(self): # <<<<<<<<<<<<<<
10292  * """
10293  * Maximum of absolute values of components of multivector: multivector infinity norm.
10294  */
10295 
10296  /* Python wrapper */
10297  static PyObject *__pyx_pw_8PyClical_8clifford_85max_abs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10298  static char __pyx_doc_8PyClical_8clifford_84max_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 ";
10299  static PyObject *__pyx_pw_8PyClical_8clifford_85max_abs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10300  PyObject *__pyx_r = 0;
10301  __Pyx_RefNannyDeclarations
10302  __Pyx_RefNannySetupContext("max_abs (wrapper)", 0);
10303  __pyx_r = __pyx_pf_8PyClical_8clifford_84max_abs(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10304 
10305  /* function exit code */
10306  __Pyx_RefNannyFinishContext();
10307  return __pyx_r;
10308  }
10309 
10310  static PyObject *__pyx_pf_8PyClical_8clifford_84max_abs(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10311  PyObject *__pyx_r = NULL;
10312  __Pyx_RefNannyDeclarations
10313  PyObject *__pyx_t_1 = NULL;
10314  int __pyx_lineno = 0;
10315  const char *__pyx_filename = NULL;
10316  int __pyx_clineno = 0;
10317  __Pyx_RefNannySetupContext("max_abs", 0);
10318 
10319  /* "PyClical.pyx":1192
10320  * 3.0
10321  * """
10322  * return self.instance.max_abs() # <<<<<<<<<<<<<<
10323  *
10324  * def truncated(self, limit):
10325  */
10326  __Pyx_XDECREF(__pyx_r);
10327  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->instance->max_abs()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10328  __Pyx_GOTREF(__pyx_t_1);
10329  __pyx_r = __pyx_t_1;
10330  __pyx_t_1 = 0;
10331  goto __pyx_L0;
10332 
10333  /* "PyClical.pyx":1183
10334  * return glucat.abs( self.unwrap() )
10335  *
10336  * def max_abs(self): # <<<<<<<<<<<<<<
10337  * """
10338  * Maximum of absolute values of components of multivector: multivector infinity norm.
10339  */
10340 
10341  /* function exit code */
10342  __pyx_L1_error:;
10343  __Pyx_XDECREF(__pyx_t_1);
10344  __Pyx_AddTraceback("PyClical.clifford.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
10345  __pyx_r = NULL;
10346  __pyx_L0:;
10347  __Pyx_XGIVEREF(__pyx_r);
10348  __Pyx_RefNannyFinishContext();
10349  return __pyx_r;
10350  }
10351 
10352  /* "PyClical.pyx":1194
10353  * return self.instance.max_abs()
10354  *
10355  * def truncated(self, limit): # <<<<<<<<<<<<<<
10356  * """
10357  * Remove all terms of self with relative size smaller than limit.
10358  */
10359 
10360  /* Python wrapper */
10361  static PyObject *__pyx_pw_8PyClical_8clifford_87truncated(PyObject *__pyx_v_self, PyObject *__pyx_v_limit); /*proto*/
10362  static char __pyx_doc_8PyClical_8clifford_86truncated[] = "\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 ";
10363  static PyObject *__pyx_pw_8PyClical_8clifford_87truncated(PyObject *__pyx_v_self, PyObject *__pyx_v_limit) {
10364  PyObject *__pyx_r = 0;
10365  __Pyx_RefNannyDeclarations
10366  __Pyx_RefNannySetupContext("truncated (wrapper)", 0);
10367  __pyx_r = __pyx_pf_8PyClical_8clifford_86truncated(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self), ((PyObject *)__pyx_v_limit));
10368 
10369  /* function exit code */
10370  __Pyx_RefNannyFinishContext();
10371  return __pyx_r;
10372  }
10373 
10374  static PyObject *__pyx_pf_8PyClical_8clifford_86truncated(struct __pyx_obj_8PyClical_clifford *__pyx_v_self, PyObject *__pyx_v_limit) {
10375  PyObject *__pyx_r = NULL;
10376  __Pyx_RefNannyDeclarations
10377  PyObject *__pyx_t_1 = NULL;
10378  scalar_t __pyx_t_2;
10379  PyObject *__pyx_t_3 = NULL;
10380  int __pyx_lineno = 0;
10381  const char *__pyx_filename = NULL;
10382  int __pyx_clineno = 0;
10383  __Pyx_RefNannySetupContext("truncated", 0);
10384 
10385  /* "PyClical.pyx":1203
10386  * clifford("10000+{1}")
10387  * """
10388  * return clifford().wrap( self.instance.truncated(limit) ) # <<<<<<<<<<<<<<
10389  *
10390  * def isnan(self):
10391  */
10392  __Pyx_XDECREF(__pyx_r);
10393  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10394  __Pyx_GOTREF(__pyx_t_1);
10395  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_limit); if (unlikely((__pyx_t_2 == (scalar_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10396  __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_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10397  __Pyx_GOTREF(__pyx_t_3);
10398  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10399  __pyx_r = __pyx_t_3;
10400  __pyx_t_3 = 0;
10401  goto __pyx_L0;
10402 
10403  /* "PyClical.pyx":1194
10404  * return self.instance.max_abs()
10405  *
10406  * def truncated(self, limit): # <<<<<<<<<<<<<<
10407  * """
10408  * Remove all terms of self with relative size smaller than limit.
10409  */
10410 
10411  /* function exit code */
10412  __pyx_L1_error:;
10413  __Pyx_XDECREF(__pyx_t_1);
10414  __Pyx_XDECREF(__pyx_t_3);
10415  __Pyx_AddTraceback("PyClical.clifford.truncated", __pyx_clineno, __pyx_lineno, __pyx_filename);
10416  __pyx_r = NULL;
10417  __pyx_L0:;
10418  __Pyx_XGIVEREF(__pyx_r);
10419  __Pyx_RefNannyFinishContext();
10420  return __pyx_r;
10421  }
10422 
10423  /* "PyClical.pyx":1205
10424  * return clifford().wrap( self.instance.truncated(limit) )
10425  *
10426  * def isnan(self): # <<<<<<<<<<<<<<
10427  * """
10428  * Check if a multivector contains any IEEE NaN values.
10429  */
10430 
10431  /* Python wrapper */
10432  static PyObject *__pyx_pw_8PyClical_8clifford_89isnan(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10433  static char __pyx_doc_8PyClical_8clifford_88isnan[] = "\n Check if a multivector contains any IEEE NaN values.\n\n >>> clifford().isnan()\n False\n ";
10434  static PyObject *__pyx_pw_8PyClical_8clifford_89isnan(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10435  PyObject *__pyx_r = 0;
10436  __Pyx_RefNannyDeclarations
10437  __Pyx_RefNannySetupContext("isnan (wrapper)", 0);
10438  __pyx_r = __pyx_pf_8PyClical_8clifford_88isnan(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10439 
10440  /* function exit code */
10441  __Pyx_RefNannyFinishContext();
10442  return __pyx_r;
10443  }
10444 
10445  static PyObject *__pyx_pf_8PyClical_8clifford_88isnan(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10446  PyObject *__pyx_r = NULL;
10447  __Pyx_RefNannyDeclarations
10448  PyObject *__pyx_t_1 = NULL;
10449  int __pyx_lineno = 0;
10450  const char *__pyx_filename = NULL;
10451  int __pyx_clineno = 0;
10452  __Pyx_RefNannySetupContext("isnan", 0);
10453 
10454  /* "PyClical.pyx":1212
10455  * False
10456  * """
10457  * return self.instance.isnan() # <<<<<<<<<<<<<<
10458  *
10459  * def frame(self):
10460  */
10461  __Pyx_XDECREF(__pyx_r);
10462  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->instance->isnan()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10463  __Pyx_GOTREF(__pyx_t_1);
10464  __pyx_r = __pyx_t_1;
10465  __pyx_t_1 = 0;
10466  goto __pyx_L0;
10467 
10468  /* "PyClical.pyx":1205
10469  * return clifford().wrap( self.instance.truncated(limit) )
10470  *
10471  * def isnan(self): # <<<<<<<<<<<<<<
10472  * """
10473  * Check if a multivector contains any IEEE NaN values.
10474  */
10475 
10476  /* function exit code */
10477  __pyx_L1_error:;
10478  __Pyx_XDECREF(__pyx_t_1);
10479  __Pyx_AddTraceback("PyClical.clifford.isnan", __pyx_clineno, __pyx_lineno, __pyx_filename);
10480  __pyx_r = NULL;
10481  __pyx_L0:;
10482  __Pyx_XGIVEREF(__pyx_r);
10483  __Pyx_RefNannyFinishContext();
10484  return __pyx_r;
10485  }
10486 
10487  /* "PyClical.pyx":1214
10488  * return self.instance.isnan()
10489  *
10490  * def frame(self): # <<<<<<<<<<<<<<
10491  * """
10492  * Subalgebra generated by all generators of terms of given multivector.
10493  */
10494 
10495  /* Python wrapper */
10496  static PyObject *__pyx_pw_8PyClical_8clifford_91frame(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10497  static char __pyx_doc_8PyClical_8clifford_90frame[] = "\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 <type 'PyClical.index_set'>\n ";
10498  static PyObject *__pyx_pw_8PyClical_8clifford_91frame(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10499  PyObject *__pyx_r = 0;
10500  __Pyx_RefNannyDeclarations
10501  __Pyx_RefNannySetupContext("frame (wrapper)", 0);
10502  __pyx_r = __pyx_pf_8PyClical_8clifford_90frame(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10503 
10504  /* function exit code */
10505  __Pyx_RefNannyFinishContext();
10506  return __pyx_r;
10507  }
10508 
10509  static PyObject *__pyx_pf_8PyClical_8clifford_90frame(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10510  PyObject *__pyx_r = NULL;
10511  __Pyx_RefNannyDeclarations
10512  PyObject *__pyx_t_1 = NULL;
10513  PyObject *__pyx_t_2 = NULL;
10514  int __pyx_lineno = 0;
10515  const char *__pyx_filename = NULL;
10516  int __pyx_clineno = 0;
10517  __Pyx_RefNannySetupContext("frame", 0);
10518 
10519  /* "PyClical.pyx":1223
10520  * <type 'PyClical.index_set'>
10521  * """
10522  * return index_set().wrap( self.instance.frame() ) # <<<<<<<<<<<<<<
10523  *
10524  * def __repr__(self):
10525  */
10526  __Pyx_XDECREF(__pyx_r);
10527  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10528  __Pyx_GOTREF(__pyx_t_1);
10529  __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_filename = __pyx_f[0]; __pyx_lineno = 1223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10530  __Pyx_GOTREF(__pyx_t_2);
10531  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10532  __pyx_r = __pyx_t_2;
10533  __pyx_t_2 = 0;
10534  goto __pyx_L0;
10535 
10536  /* "PyClical.pyx":1214
10537  * return self.instance.isnan()
10538  *
10539  * def frame(self): # <<<<<<<<<<<<<<
10540  * """
10541  * Subalgebra generated by all generators of terms of given multivector.
10542  */
10543 
10544  /* function exit code */
10545  __pyx_L1_error:;
10546  __Pyx_XDECREF(__pyx_t_1);
10547  __Pyx_XDECREF(__pyx_t_2);
10548  __Pyx_AddTraceback("PyClical.clifford.frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
10549  __pyx_r = NULL;
10550  __pyx_L0:;
10551  __Pyx_XGIVEREF(__pyx_r);
10552  __Pyx_RefNannyFinishContext();
10553  return __pyx_r;
10554  }
10555 
10556  /* "PyClical.pyx":1225
10557  * return index_set().wrap( self.instance.frame() )
10558  *
10559  * def __repr__(self): # <<<<<<<<<<<<<<
10560  * """
10561  * The official string representation of self.
10562  */
10563 
10564  /* Python wrapper */
10565  static PyObject *__pyx_pw_8PyClical_8clifford_93__repr__(PyObject *__pyx_v_self); /*proto*/
10566  static char __pyx_doc_8PyClical_8clifford_92__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 ";
10567  #if CYTHON_COMPILING_IN_CPYTHON
10568  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_92__repr__;
10569  #endif
10570  static PyObject *__pyx_pw_8PyClical_8clifford_93__repr__(PyObject *__pyx_v_self) {
10571  PyObject *__pyx_r = 0;
10572  __Pyx_RefNannyDeclarations
10573  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
10574  __pyx_r = __pyx_pf_8PyClical_8clifford_92__repr__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10575 
10576  /* function exit code */
10577  __Pyx_RefNannyFinishContext();
10578  return __pyx_r;
10579  }
10580 
10581  static PyObject *__pyx_pf_8PyClical_8clifford_92__repr__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10582  PyObject *__pyx_r = NULL;
10583  __Pyx_RefNannyDeclarations
10584  PyObject *__pyx_t_1 = NULL;
10585  int __pyx_lineno = 0;
10586  const char *__pyx_filename = NULL;
10587  int __pyx_clineno = 0;
10588  __Pyx_RefNannySetupContext("__repr__", 0);
10589 
10590  /* "PyClical.pyx":1232
10591  * 'clifford("1+3{-1}+2{1,2}+4{-2,7}")'
10592  * """
10593  * return clifford_to_repr( self.unwrap() ).c_str() # <<<<<<<<<<<<<<
10594  *
10595  * def __str__(self):
10596  */
10597  __Pyx_XDECREF(__pyx_r);
10598  __pyx_t_1 = __Pyx_PyBytes_FromString(clifford_to_repr(__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self)).c_str()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10599  __Pyx_GOTREF(__pyx_t_1);
10600  __pyx_r = __pyx_t_1;
10601  __pyx_t_1 = 0;
10602  goto __pyx_L0;
10603 
10604  /* "PyClical.pyx":1225
10605  * return index_set().wrap( self.instance.frame() )
10606  *
10607  * def __repr__(self): # <<<<<<<<<<<<<<
10608  * """
10609  * The official string representation of self.
10610  */
10611 
10612  /* function exit code */
10613  __pyx_L1_error:;
10614  __Pyx_XDECREF(__pyx_t_1);
10615  __Pyx_AddTraceback("PyClical.clifford.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10616  __pyx_r = NULL;
10617  __pyx_L0:;
10618  __Pyx_XGIVEREF(__pyx_r);
10619  __Pyx_RefNannyFinishContext();
10620  return __pyx_r;
10621  }
10622 
10623  /* "PyClical.pyx":1234
10624  * return clifford_to_repr( self.unwrap() ).c_str()
10625  *
10626  * def __str__(self): # <<<<<<<<<<<<<<
10627  * """
10628  * The informal string representation of self.
10629  */
10630 
10631  /* Python wrapper */
10632  static PyObject *__pyx_pw_8PyClical_8clifford_95__str__(PyObject *__pyx_v_self); /*proto*/
10633  static char __pyx_doc_8PyClical_8clifford_94__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 ";
10634  #if CYTHON_COMPILING_IN_CPYTHON
10635  struct wrapperbase __pyx_wrapperbase_8PyClical_8clifford_94__str__;
10636  #endif
10637  static PyObject *__pyx_pw_8PyClical_8clifford_95__str__(PyObject *__pyx_v_self) {
10638  PyObject *__pyx_r = 0;
10639  __Pyx_RefNannyDeclarations
10640  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
10641  __pyx_r = __pyx_pf_8PyClical_8clifford_94__str__(((struct __pyx_obj_8PyClical_clifford *)__pyx_v_self));
10642 
10643  /* function exit code */
10644  __Pyx_RefNannyFinishContext();
10645  return __pyx_r;
10646  }
10647 
10648  static PyObject *__pyx_pf_8PyClical_8clifford_94__str__(struct __pyx_obj_8PyClical_clifford *__pyx_v_self) {
10649  PyObject *__pyx_r = NULL;
10650  __Pyx_RefNannyDeclarations
10651  PyObject *__pyx_t_1 = NULL;
10652  int __pyx_lineno = 0;
10653  const char *__pyx_filename = NULL;
10654  int __pyx_clineno = 0;
10655  __Pyx_RefNannySetupContext("__str__", 0);
10656 
10657  /* "PyClical.pyx":1241
10658  * '1+3{-1}+2{1,2}+4{-2,7}'
10659  * """
10660  * return clifford_to_str( self.unwrap() ).c_str() # <<<<<<<<<<<<<<
10661  *
10662  * def clifford_hidden_doctests():
10663  */
10664  __Pyx_XDECREF(__pyx_r);
10665  __pyx_t_1 = __Pyx_PyBytes_FromString(clifford_to_str(__pyx_f_8PyClical_8clifford_unwrap(__pyx_v_self)).c_str()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10666  __Pyx_GOTREF(__pyx_t_1);
10667  __pyx_r = __pyx_t_1;
10668  __pyx_t_1 = 0;
10669  goto __pyx_L0;
10670 
10671  /* "PyClical.pyx":1234
10672  * return clifford_to_repr( self.unwrap() ).c_str()
10673  *
10674  * def __str__(self): # <<<<<<<<<<<<<<
10675  * """
10676  * The informal string representation of self.
10677  */
10678 
10679  /* function exit code */
10680  __pyx_L1_error:;
10681  __Pyx_XDECREF(__pyx_t_1);
10682  __Pyx_AddTraceback("PyClical.clifford.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10683  __pyx_r = NULL;
10684  __pyx_L0:;
10685  __Pyx_XGIVEREF(__pyx_r);
10686  __Pyx_RefNannyFinishContext();
10687  return __pyx_r;
10688  }
10689 
10690  /* "PyClical.pyx":1243
10691  * return clifford_to_str( self.unwrap() ).c_str()
10692  *
10693  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
10694  * """
10695  * Tests for functions that Doctest cannot see.
10696  */
10697 
10698  /* Python wrapper */
10699  static PyObject *__pyx_pw_8PyClical_9clifford_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10700  static char __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(2L)\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 <type 'list'>.\n >>> print clifford(None)\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from <type 'NoneType'>.\n >>> print clifford(None,[1,2])\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<type 'NoneType'>, <type 'list'>).\n >>> print clifford([1,2],[1,2])\n Traceback (most recent call last):\n ...\n TypeError: Cannot initialize clifford object from (<type 'list'>, <type '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 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\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 ";
10701  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};
10702  static PyObject *__pyx_pw_8PyClical_9clifford_hidden_doctests(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
10703  PyObject *__pyx_r = 0;
10704  __Pyx_RefNannyDeclarations
10705  __Pyx_RefNannySetupContext("clifford_hidden_doctests (wrapper)", 0);
10706  __pyx_r = __pyx_pf_8PyClical_8clifford_hidden_doctests(__pyx_self);
10707 
10708  /* function exit code */
10709  __Pyx_RefNannyFinishContext();
10710  return __pyx_r;
10711  }
10712 
10713  static PyObject *__pyx_pf_8PyClical_8clifford_hidden_doctests(CYTHON_UNUSED PyObject *__pyx_self) {
10714  PyObject *__pyx_r = NULL;
10715  __Pyx_RefNannyDeclarations
10716  __Pyx_RefNannySetupContext("clifford_hidden_doctests", 0);
10717 
10718  /* "PyClical.pyx":1327
10719  * True
10720  * """
10721  * return # <<<<<<<<<<<<<<
10722  *
10723  * cpdef inline inv(obj):
10724  */
10725  __Pyx_XDECREF(__pyx_r);
10726  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
10727  goto __pyx_L0;
10728 
10729  /* "PyClical.pyx":1243
10730  * return clifford_to_str( self.unwrap() ).c_str()
10731  *
10732  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
10733  * """
10734  * Tests for functions that Doctest cannot see.
10735  */
10736 
10737  /* function exit code */
10738  __pyx_L0:;
10739  __Pyx_XGIVEREF(__pyx_r);
10740  __Pyx_RefNannyFinishContext();
10741  return __pyx_r;
10742  }
10743 
10744  /* "PyClical.pyx":1329
10745  * return
10746  *
10747  * cpdef inline inv(obj): # <<<<<<<<<<<<<<
10748  * """
10749  * Geometric multiplicative inverse.
10750  */
10751 
10752  static PyObject *__pyx_pw_8PyClical_11inv(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
10753  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_inv(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
10754  PyObject *__pyx_r = NULL;
10755  __Pyx_RefNannyDeclarations
10756  PyObject *__pyx_t_1 = NULL;
10757  PyObject *__pyx_t_2 = NULL;
10758  PyObject *__pyx_t_3 = NULL;
10759  int __pyx_lineno = 0;
10760  const char *__pyx_filename = NULL;
10761  int __pyx_clineno = 0;
10762  __Pyx_RefNannySetupContext("inv", 0);
10763 
10764  /* "PyClical.pyx":1342
10765  * nan
10766  * """
10767  * return clifford(obj).inv() # <<<<<<<<<<<<<<
10768  *
10769  * cpdef inline scalar(obj):
10770  */
10771  __Pyx_XDECREF(__pyx_r);
10772  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10773  __Pyx_GOTREF(__pyx_t_2);
10774  __Pyx_INCREF(__pyx_v_obj);
10775  __Pyx_GIVEREF(__pyx_v_obj);
10776  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
10777  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10778  __Pyx_GOTREF(__pyx_t_3);
10779  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10780  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inv); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10781  __Pyx_GOTREF(__pyx_t_2);
10782  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10783  __pyx_t_3 = NULL;
10784  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
10785  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
10786  if (likely(__pyx_t_3)) {
10787  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10788  __Pyx_INCREF(__pyx_t_3);
10789  __Pyx_INCREF(function);
10790  __Pyx_DECREF_SET(__pyx_t_2, function);
10791  }
10792  }
10793  if (__pyx_t_3) {
10794  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10795  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10796  } else {
10797  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10798  }
10799  __Pyx_GOTREF(__pyx_t_1);
10800  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10801  __pyx_r = __pyx_t_1;
10802  __pyx_t_1 = 0;
10803  goto __pyx_L0;
10804 
10805  /* "PyClical.pyx":1329
10806  * return
10807  *
10808  * cpdef inline inv(obj): # <<<<<<<<<<<<<<
10809  * """
10810  * Geometric multiplicative inverse.
10811  */
10812 
10813  /* function exit code */
10814  __pyx_L1_error:;
10815  __Pyx_XDECREF(__pyx_t_1);
10816  __Pyx_XDECREF(__pyx_t_2);
10817  __Pyx_XDECREF(__pyx_t_3);
10818  __Pyx_AddTraceback("PyClical.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
10819  __pyx_r = 0;
10820  __pyx_L0:;
10821  __Pyx_XGIVEREF(__pyx_r);
10822  __Pyx_RefNannyFinishContext();
10823  return __pyx_r;
10824  }
10825 
10826  /* Python wrapper */
10827  static PyObject *__pyx_pw_8PyClical_11inv(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
10828  static char __pyx_doc_8PyClical_10inv[] = "\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 ";
10829  static PyObject *__pyx_pw_8PyClical_11inv(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
10830  PyObject *__pyx_r = 0;
10831  __Pyx_RefNannyDeclarations
10832  __Pyx_RefNannySetupContext("inv (wrapper)", 0);
10833  __pyx_r = __pyx_pf_8PyClical_10inv(__pyx_self, ((PyObject *)__pyx_v_obj));
10834 
10835  /* function exit code */
10836  __Pyx_RefNannyFinishContext();
10837  return __pyx_r;
10838  }
10839 
10840  static PyObject *__pyx_pf_8PyClical_10inv(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
10841  PyObject *__pyx_r = NULL;
10842  __Pyx_RefNannyDeclarations
10843  PyObject *__pyx_t_1 = NULL;
10844  int __pyx_lineno = 0;
10845  const char *__pyx_filename = NULL;
10846  int __pyx_clineno = 0;
10847  __Pyx_RefNannySetupContext("inv", 0);
10848  __Pyx_XDECREF(__pyx_r);
10849  __pyx_t_1 = __pyx_f_8PyClical_inv(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10850  __Pyx_GOTREF(__pyx_t_1);
10851  __pyx_r = __pyx_t_1;
10852  __pyx_t_1 = 0;
10853  goto __pyx_L0;
10854 
10855  /* function exit code */
10856  __pyx_L1_error:;
10857  __Pyx_XDECREF(__pyx_t_1);
10858  __Pyx_AddTraceback("PyClical.inv", __pyx_clineno, __pyx_lineno, __pyx_filename);
10859  __pyx_r = NULL;
10860  __pyx_L0:;
10861  __Pyx_XGIVEREF(__pyx_r);
10862  __Pyx_RefNannyFinishContext();
10863  return __pyx_r;
10864  }
10865 
10866  /* "PyClical.pyx":1344
10867  * return clifford(obj).inv()
10868  *
10869  * cpdef inline scalar(obj): # <<<<<<<<<<<<<<
10870  * """
10871  * Scalar part.
10872  */
10873 
10874  static PyObject *__pyx_pw_8PyClical_13scalar(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
10875  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_scalar(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
10876  PyObject *__pyx_r = NULL;
10877  __Pyx_RefNannyDeclarations
10878  PyObject *__pyx_t_1 = NULL;
10879  PyObject *__pyx_t_2 = NULL;
10880  PyObject *__pyx_t_3 = NULL;
10881  int __pyx_lineno = 0;
10882  const char *__pyx_filename = NULL;
10883  int __pyx_clineno = 0;
10884  __Pyx_RefNannySetupContext("scalar", 0);
10885 
10886  /* "PyClical.pyx":1353
10887  * 0.0
10888  * """
10889  * return clifford(obj).scalar() # <<<<<<<<<<<<<<
10890  *
10891  * cpdef inline real(obj):
10892  */
10893  __Pyx_XDECREF(__pyx_r);
10894  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10895  __Pyx_GOTREF(__pyx_t_2);
10896  __Pyx_INCREF(__pyx_v_obj);
10897  __Pyx_GIVEREF(__pyx_v_obj);
10898  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
10899  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10900  __Pyx_GOTREF(__pyx_t_3);
10901  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10902  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_scalar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10903  __Pyx_GOTREF(__pyx_t_2);
10904  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10905  __pyx_t_3 = NULL;
10906  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
10907  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
10908  if (likely(__pyx_t_3)) {
10909  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10910  __Pyx_INCREF(__pyx_t_3);
10911  __Pyx_INCREF(function);
10912  __Pyx_DECREF_SET(__pyx_t_2, function);
10913  }
10914  }
10915  if (__pyx_t_3) {
10916  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10917  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10918  } else {
10919  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10920  }
10921  __Pyx_GOTREF(__pyx_t_1);
10922  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10923  __pyx_r = __pyx_t_1;
10924  __pyx_t_1 = 0;
10925  goto __pyx_L0;
10926 
10927  /* "PyClical.pyx":1344
10928  * return clifford(obj).inv()
10929  *
10930  * cpdef inline scalar(obj): # <<<<<<<<<<<<<<
10931  * """
10932  * Scalar part.
10933  */
10934 
10935  /* function exit code */
10936  __pyx_L1_error:;
10937  __Pyx_XDECREF(__pyx_t_1);
10938  __Pyx_XDECREF(__pyx_t_2);
10939  __Pyx_XDECREF(__pyx_t_3);
10940  __Pyx_AddTraceback("PyClical.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
10941  __pyx_r = 0;
10942  __pyx_L0:;
10943  __Pyx_XGIVEREF(__pyx_r);
10944  __Pyx_RefNannyFinishContext();
10945  return __pyx_r;
10946  }
10947 
10948  /* Python wrapper */
10949  static PyObject *__pyx_pw_8PyClical_13scalar(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
10950  static char __pyx_doc_8PyClical_12scalar[] = "\n Scalar part.\n\n >>> scalar(clifford(\"1+{1}+{1,2}\"))\n 1.0\n >>> scalar(clifford(\"{1,2}\"))\n 0.0\n ";
10951  static PyObject *__pyx_pw_8PyClical_13scalar(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
10952  PyObject *__pyx_r = 0;
10953  __Pyx_RefNannyDeclarations
10954  __Pyx_RefNannySetupContext("scalar (wrapper)", 0);
10955  __pyx_r = __pyx_pf_8PyClical_12scalar(__pyx_self, ((PyObject *)__pyx_v_obj));
10956 
10957  /* function exit code */
10958  __Pyx_RefNannyFinishContext();
10959  return __pyx_r;
10960  }
10961 
10962  static PyObject *__pyx_pf_8PyClical_12scalar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
10963  PyObject *__pyx_r = NULL;
10964  __Pyx_RefNannyDeclarations
10965  PyObject *__pyx_t_1 = NULL;
10966  int __pyx_lineno = 0;
10967  const char *__pyx_filename = NULL;
10968  int __pyx_clineno = 0;
10969  __Pyx_RefNannySetupContext("scalar", 0);
10970  __Pyx_XDECREF(__pyx_r);
10971  __pyx_t_1 = __pyx_f_8PyClical_scalar(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10972  __Pyx_GOTREF(__pyx_t_1);
10973  __pyx_r = __pyx_t_1;
10974  __pyx_t_1 = 0;
10975  goto __pyx_L0;
10976 
10977  /* function exit code */
10978  __pyx_L1_error:;
10979  __Pyx_XDECREF(__pyx_t_1);
10980  __Pyx_AddTraceback("PyClical.scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
10981  __pyx_r = NULL;
10982  __pyx_L0:;
10983  __Pyx_XGIVEREF(__pyx_r);
10984  __Pyx_RefNannyFinishContext();
10985  return __pyx_r;
10986  }
10987 
10988  /* "PyClical.pyx":1355
10989  * return clifford(obj).scalar()
10990  *
10991  * cpdef inline real(obj): # <<<<<<<<<<<<<<
10992  * """
10993  * Real part: synonym for scalar part.
10994  */
10995 
10996  static PyObject *__pyx_pw_8PyClical_15real(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
10997  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_real(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
10998  PyObject *__pyx_r = NULL;
10999  __Pyx_RefNannyDeclarations
11000  PyObject *__pyx_t_1 = NULL;
11001  PyObject *__pyx_t_2 = NULL;
11002  PyObject *__pyx_t_3 = NULL;
11003  int __pyx_lineno = 0;
11004  const char *__pyx_filename = NULL;
11005  int __pyx_clineno = 0;
11006  __Pyx_RefNannySetupContext("real", 0);
11007 
11008  /* "PyClical.pyx":1364
11009  * 0.0
11010  * """
11011  * return clifford(obj).scalar() # <<<<<<<<<<<<<<
11012  *
11013  * cpdef inline imag(obj):
11014  */
11015  __Pyx_XDECREF(__pyx_r);
11016  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11017  __Pyx_GOTREF(__pyx_t_2);
11018  __Pyx_INCREF(__pyx_v_obj);
11019  __Pyx_GIVEREF(__pyx_v_obj);
11020  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11021  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11022  __Pyx_GOTREF(__pyx_t_3);
11023  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11024  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_scalar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11025  __Pyx_GOTREF(__pyx_t_2);
11026  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11027  __pyx_t_3 = NULL;
11028  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11029  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11030  if (likely(__pyx_t_3)) {
11031  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11032  __Pyx_INCREF(__pyx_t_3);
11033  __Pyx_INCREF(function);
11034  __Pyx_DECREF_SET(__pyx_t_2, function);
11035  }
11036  }
11037  if (__pyx_t_3) {
11038  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11039  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11040  } else {
11041  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11042  }
11043  __Pyx_GOTREF(__pyx_t_1);
11044  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11045  __pyx_r = __pyx_t_1;
11046  __pyx_t_1 = 0;
11047  goto __pyx_L0;
11048 
11049  /* "PyClical.pyx":1355
11050  * return clifford(obj).scalar()
11051  *
11052  * cpdef inline real(obj): # <<<<<<<<<<<<<<
11053  * """
11054  * Real part: synonym for scalar part.
11055  */
11056 
11057  /* function exit code */
11058  __pyx_L1_error:;
11059  __Pyx_XDECREF(__pyx_t_1);
11060  __Pyx_XDECREF(__pyx_t_2);
11061  __Pyx_XDECREF(__pyx_t_3);
11062  __Pyx_AddTraceback("PyClical.real", __pyx_clineno, __pyx_lineno, __pyx_filename);
11063  __pyx_r = 0;
11064  __pyx_L0:;
11065  __Pyx_XGIVEREF(__pyx_r);
11066  __Pyx_RefNannyFinishContext();
11067  return __pyx_r;
11068  }
11069 
11070  /* Python wrapper */
11071  static PyObject *__pyx_pw_8PyClical_15real(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11072  static char __pyx_doc_8PyClical_14real[] = "\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 ";
11073  static PyObject *__pyx_pw_8PyClical_15real(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11074  PyObject *__pyx_r = 0;
11075  __Pyx_RefNannyDeclarations
11076  __Pyx_RefNannySetupContext("real (wrapper)", 0);
11077  __pyx_r = __pyx_pf_8PyClical_14real(__pyx_self, ((PyObject *)__pyx_v_obj));
11078 
11079  /* function exit code */
11080  __Pyx_RefNannyFinishContext();
11081  return __pyx_r;
11082  }
11083 
11084  static PyObject *__pyx_pf_8PyClical_14real(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11085  PyObject *__pyx_r = NULL;
11086  __Pyx_RefNannyDeclarations
11087  PyObject *__pyx_t_1 = NULL;
11088  int __pyx_lineno = 0;
11089  const char *__pyx_filename = NULL;
11090  int __pyx_clineno = 0;
11091  __Pyx_RefNannySetupContext("real", 0);
11092  __Pyx_XDECREF(__pyx_r);
11093  __pyx_t_1 = __pyx_f_8PyClical_real(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11094  __Pyx_GOTREF(__pyx_t_1);
11095  __pyx_r = __pyx_t_1;
11096  __pyx_t_1 = 0;
11097  goto __pyx_L0;
11098 
11099  /* function exit code */
11100  __pyx_L1_error:;
11101  __Pyx_XDECREF(__pyx_t_1);
11102  __Pyx_AddTraceback("PyClical.real", __pyx_clineno, __pyx_lineno, __pyx_filename);
11103  __pyx_r = NULL;
11104  __pyx_L0:;
11105  __Pyx_XGIVEREF(__pyx_r);
11106  __Pyx_RefNannyFinishContext();
11107  return __pyx_r;
11108  }
11109 
11110  /* "PyClical.pyx":1366
11111  * return clifford(obj).scalar()
11112  *
11113  * cpdef inline imag(obj): # <<<<<<<<<<<<<<
11114  * """
11115  * Imaginary part: deprecated (always 0).
11116  */
11117 
11118  static PyObject *__pyx_pw_8PyClical_17imag(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11119  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_imag(CYTHON_UNUSED PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11120  PyObject *__pyx_r = NULL;
11121  __Pyx_RefNannyDeclarations
11122  __Pyx_RefNannySetupContext("imag", 0);
11123 
11124  /* "PyClical.pyx":1375
11125  * 0.0
11126  * """
11127  * return 0.0 # <<<<<<<<<<<<<<
11128  *
11129  * cpdef inline pure(obj):
11130  */
11131  __Pyx_XDECREF(__pyx_r);
11132  __Pyx_INCREF(__pyx_float_0_0);
11133  __pyx_r = __pyx_float_0_0;
11134  goto __pyx_L0;
11135 
11136  /* "PyClical.pyx":1366
11137  * return clifford(obj).scalar()
11138  *
11139  * cpdef inline imag(obj): # <<<<<<<<<<<<<<
11140  * """
11141  * Imaginary part: deprecated (always 0).
11142  */
11143 
11144  /* function exit code */
11145  __pyx_L0:;
11146  __Pyx_XGIVEREF(__pyx_r);
11147  __Pyx_RefNannyFinishContext();
11148  return __pyx_r;
11149  }
11150 
11151  /* Python wrapper */
11152  static PyObject *__pyx_pw_8PyClical_17imag(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11153  static char __pyx_doc_8PyClical_16imag[] = "\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 ";
11154  static PyObject *__pyx_pw_8PyClical_17imag(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11155  PyObject *__pyx_r = 0;
11156  __Pyx_RefNannyDeclarations
11157  __Pyx_RefNannySetupContext("imag (wrapper)", 0);
11158  __pyx_r = __pyx_pf_8PyClical_16imag(__pyx_self, ((PyObject *)__pyx_v_obj));
11159 
11160  /* function exit code */
11161  __Pyx_RefNannyFinishContext();
11162  return __pyx_r;
11163  }
11164 
11165  static PyObject *__pyx_pf_8PyClical_16imag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11166  PyObject *__pyx_r = NULL;
11167  __Pyx_RefNannyDeclarations
11168  PyObject *__pyx_t_1 = NULL;
11169  int __pyx_lineno = 0;
11170  const char *__pyx_filename = NULL;
11171  int __pyx_clineno = 0;
11172  __Pyx_RefNannySetupContext("imag", 0);
11173  __Pyx_XDECREF(__pyx_r);
11174  __pyx_t_1 = __pyx_f_8PyClical_imag(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11175  __Pyx_GOTREF(__pyx_t_1);
11176  __pyx_r = __pyx_t_1;
11177  __pyx_t_1 = 0;
11178  goto __pyx_L0;
11179 
11180  /* function exit code */
11181  __pyx_L1_error:;
11182  __Pyx_XDECREF(__pyx_t_1);
11183  __Pyx_AddTraceback("PyClical.imag", __pyx_clineno, __pyx_lineno, __pyx_filename);
11184  __pyx_r = NULL;
11185  __pyx_L0:;
11186  __Pyx_XGIVEREF(__pyx_r);
11187  __Pyx_RefNannyFinishContext();
11188  return __pyx_r;
11189  }
11190 
11191  /* "PyClical.pyx":1377
11192  * return 0.0
11193  *
11194  * cpdef inline pure(obj): # <<<<<<<<<<<<<<
11195  * """
11196  * Pure part
11197  */
11198 
11199  static PyObject *__pyx_pw_8PyClical_19pure(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11200  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pure(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11201  PyObject *__pyx_r = NULL;
11202  __Pyx_RefNannyDeclarations
11203  PyObject *__pyx_t_1 = NULL;
11204  PyObject *__pyx_t_2 = NULL;
11205  PyObject *__pyx_t_3 = NULL;
11206  int __pyx_lineno = 0;
11207  const char *__pyx_filename = NULL;
11208  int __pyx_clineno = 0;
11209  __Pyx_RefNannySetupContext("pure", 0);
11210 
11211  /* "PyClical.pyx":1386
11212  * {1,2}
11213  * """
11214  * return clifford(obj).pure() # <<<<<<<<<<<<<<
11215  *
11216  * cpdef inline even(obj):
11217  */
11218  __Pyx_XDECREF(__pyx_r);
11219  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11220  __Pyx_GOTREF(__pyx_t_2);
11221  __Pyx_INCREF(__pyx_v_obj);
11222  __Pyx_GIVEREF(__pyx_v_obj);
11223  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11224  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11225  __Pyx_GOTREF(__pyx_t_3);
11226  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11227  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pure); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11228  __Pyx_GOTREF(__pyx_t_2);
11229  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11230  __pyx_t_3 = NULL;
11231  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11232  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11233  if (likely(__pyx_t_3)) {
11234  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11235  __Pyx_INCREF(__pyx_t_3);
11236  __Pyx_INCREF(function);
11237  __Pyx_DECREF_SET(__pyx_t_2, function);
11238  }
11239  }
11240  if (__pyx_t_3) {
11241  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11242  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11243  } else {
11244  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11245  }
11246  __Pyx_GOTREF(__pyx_t_1);
11247  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11248  __pyx_r = __pyx_t_1;
11249  __pyx_t_1 = 0;
11250  goto __pyx_L0;
11251 
11252  /* "PyClical.pyx":1377
11253  * return 0.0
11254  *
11255  * cpdef inline pure(obj): # <<<<<<<<<<<<<<
11256  * """
11257  * Pure part
11258  */
11259 
11260  /* function exit code */
11261  __pyx_L1_error:;
11262  __Pyx_XDECREF(__pyx_t_1);
11263  __Pyx_XDECREF(__pyx_t_2);
11264  __Pyx_XDECREF(__pyx_t_3);
11265  __Pyx_AddTraceback("PyClical.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
11266  __pyx_r = 0;
11267  __pyx_L0:;
11268  __Pyx_XGIVEREF(__pyx_r);
11269  __Pyx_RefNannyFinishContext();
11270  return __pyx_r;
11271  }
11272 
11273  /* Python wrapper */
11274  static PyObject *__pyx_pw_8PyClical_19pure(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11275  static char __pyx_doc_8PyClical_18pure[] = "\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 ";
11276  static PyObject *__pyx_pw_8PyClical_19pure(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11277  PyObject *__pyx_r = 0;
11278  __Pyx_RefNannyDeclarations
11279  __Pyx_RefNannySetupContext("pure (wrapper)", 0);
11280  __pyx_r = __pyx_pf_8PyClical_18pure(__pyx_self, ((PyObject *)__pyx_v_obj));
11281 
11282  /* function exit code */
11283  __Pyx_RefNannyFinishContext();
11284  return __pyx_r;
11285  }
11286 
11287  static PyObject *__pyx_pf_8PyClical_18pure(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11288  PyObject *__pyx_r = NULL;
11289  __Pyx_RefNannyDeclarations
11290  PyObject *__pyx_t_1 = NULL;
11291  int __pyx_lineno = 0;
11292  const char *__pyx_filename = NULL;
11293  int __pyx_clineno = 0;
11294  __Pyx_RefNannySetupContext("pure", 0);
11295  __Pyx_XDECREF(__pyx_r);
11296  __pyx_t_1 = __pyx_f_8PyClical_pure(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11297  __Pyx_GOTREF(__pyx_t_1);
11298  __pyx_r = __pyx_t_1;
11299  __pyx_t_1 = 0;
11300  goto __pyx_L0;
11301 
11302  /* function exit code */
11303  __pyx_L1_error:;
11304  __Pyx_XDECREF(__pyx_t_1);
11305  __Pyx_AddTraceback("PyClical.pure", __pyx_clineno, __pyx_lineno, __pyx_filename);
11306  __pyx_r = NULL;
11307  __pyx_L0:;
11308  __Pyx_XGIVEREF(__pyx_r);
11309  __Pyx_RefNannyFinishContext();
11310  return __pyx_r;
11311  }
11312 
11313  /* "PyClical.pyx":1388
11314  * return clifford(obj).pure()
11315  *
11316  * cpdef inline even(obj): # <<<<<<<<<<<<<<
11317  * """
11318  * Even part of multivector, sum of even grade terms.
11319  */
11320 
11321  static PyObject *__pyx_pw_8PyClical_21even(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11322  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_even(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11323  PyObject *__pyx_r = NULL;
11324  __Pyx_RefNannyDeclarations
11325  PyObject *__pyx_t_1 = NULL;
11326  PyObject *__pyx_t_2 = NULL;
11327  PyObject *__pyx_t_3 = NULL;
11328  int __pyx_lineno = 0;
11329  const char *__pyx_filename = NULL;
11330  int __pyx_clineno = 0;
11331  __Pyx_RefNannySetupContext("even", 0);
11332 
11333  /* "PyClical.pyx":1395
11334  * 1+{1,2}
11335  * """
11336  * return clifford(obj).even() # <<<<<<<<<<<<<<
11337  *
11338  * cpdef inline odd(obj):
11339  */
11340  __Pyx_XDECREF(__pyx_r);
11341  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11342  __Pyx_GOTREF(__pyx_t_2);
11343  __Pyx_INCREF(__pyx_v_obj);
11344  __Pyx_GIVEREF(__pyx_v_obj);
11345  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11346  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11347  __Pyx_GOTREF(__pyx_t_3);
11348  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11349  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_even); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11350  __Pyx_GOTREF(__pyx_t_2);
11351  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11352  __pyx_t_3 = NULL;
11353  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11354  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11355  if (likely(__pyx_t_3)) {
11356  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11357  __Pyx_INCREF(__pyx_t_3);
11358  __Pyx_INCREF(function);
11359  __Pyx_DECREF_SET(__pyx_t_2, function);
11360  }
11361  }
11362  if (__pyx_t_3) {
11363  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11364  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11365  } else {
11366  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11367  }
11368  __Pyx_GOTREF(__pyx_t_1);
11369  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11370  __pyx_r = __pyx_t_1;
11371  __pyx_t_1 = 0;
11372  goto __pyx_L0;
11373 
11374  /* "PyClical.pyx":1388
11375  * return clifford(obj).pure()
11376  *
11377  * cpdef inline even(obj): # <<<<<<<<<<<<<<
11378  * """
11379  * Even part of multivector, sum of even grade terms.
11380  */
11381 
11382  /* function exit code */
11383  __pyx_L1_error:;
11384  __Pyx_XDECREF(__pyx_t_1);
11385  __Pyx_XDECREF(__pyx_t_2);
11386  __Pyx_XDECREF(__pyx_t_3);
11387  __Pyx_AddTraceback("PyClical.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
11388  __pyx_r = 0;
11389  __pyx_L0:;
11390  __Pyx_XGIVEREF(__pyx_r);
11391  __Pyx_RefNannyFinishContext();
11392  return __pyx_r;
11393  }
11394 
11395  /* Python wrapper */
11396  static PyObject *__pyx_pw_8PyClical_21even(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11397  static char __pyx_doc_8PyClical_20even[] = "\n Even part of multivector, sum of even grade terms.\n\n >>> print even(clifford(\"1+{1}+{1,2}\"))\n 1+{1,2}\n ";
11398  static PyObject *__pyx_pw_8PyClical_21even(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11399  PyObject *__pyx_r = 0;
11400  __Pyx_RefNannyDeclarations
11401  __Pyx_RefNannySetupContext("even (wrapper)", 0);
11402  __pyx_r = __pyx_pf_8PyClical_20even(__pyx_self, ((PyObject *)__pyx_v_obj));
11403 
11404  /* function exit code */
11405  __Pyx_RefNannyFinishContext();
11406  return __pyx_r;
11407  }
11408 
11409  static PyObject *__pyx_pf_8PyClical_20even(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11410  PyObject *__pyx_r = NULL;
11411  __Pyx_RefNannyDeclarations
11412  PyObject *__pyx_t_1 = NULL;
11413  int __pyx_lineno = 0;
11414  const char *__pyx_filename = NULL;
11415  int __pyx_clineno = 0;
11416  __Pyx_RefNannySetupContext("even", 0);
11417  __Pyx_XDECREF(__pyx_r);
11418  __pyx_t_1 = __pyx_f_8PyClical_even(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11419  __Pyx_GOTREF(__pyx_t_1);
11420  __pyx_r = __pyx_t_1;
11421  __pyx_t_1 = 0;
11422  goto __pyx_L0;
11423 
11424  /* function exit code */
11425  __pyx_L1_error:;
11426  __Pyx_XDECREF(__pyx_t_1);
11427  __Pyx_AddTraceback("PyClical.even", __pyx_clineno, __pyx_lineno, __pyx_filename);
11428  __pyx_r = NULL;
11429  __pyx_L0:;
11430  __Pyx_XGIVEREF(__pyx_r);
11431  __Pyx_RefNannyFinishContext();
11432  return __pyx_r;
11433  }
11434 
11435  /* "PyClical.pyx":1397
11436  * return clifford(obj).even()
11437  *
11438  * cpdef inline odd(obj): # <<<<<<<<<<<<<<
11439  * """
11440  * Odd part of multivector, sum of odd grade terms.
11441  */
11442 
11443  static PyObject *__pyx_pw_8PyClical_23odd(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11444  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_odd(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11445  PyObject *__pyx_r = NULL;
11446  __Pyx_RefNannyDeclarations
11447  PyObject *__pyx_t_1 = NULL;
11448  PyObject *__pyx_t_2 = NULL;
11449  PyObject *__pyx_t_3 = NULL;
11450  int __pyx_lineno = 0;
11451  const char *__pyx_filename = NULL;
11452  int __pyx_clineno = 0;
11453  __Pyx_RefNannySetupContext("odd", 0);
11454 
11455  /* "PyClical.pyx":1404
11456  * {1}
11457  * """
11458  * return clifford(obj).odd() # <<<<<<<<<<<<<<
11459  *
11460  * cpdef inline involute(obj):
11461  */
11462  __Pyx_XDECREF(__pyx_r);
11463  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11464  __Pyx_GOTREF(__pyx_t_2);
11465  __Pyx_INCREF(__pyx_v_obj);
11466  __Pyx_GIVEREF(__pyx_v_obj);
11467  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11468  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11469  __Pyx_GOTREF(__pyx_t_3);
11470  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11471  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_odd); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11472  __Pyx_GOTREF(__pyx_t_2);
11473  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11474  __pyx_t_3 = NULL;
11475  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11476  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11477  if (likely(__pyx_t_3)) {
11478  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11479  __Pyx_INCREF(__pyx_t_3);
11480  __Pyx_INCREF(function);
11481  __Pyx_DECREF_SET(__pyx_t_2, function);
11482  }
11483  }
11484  if (__pyx_t_3) {
11485  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11486  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11487  } else {
11488  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11489  }
11490  __Pyx_GOTREF(__pyx_t_1);
11491  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11492  __pyx_r = __pyx_t_1;
11493  __pyx_t_1 = 0;
11494  goto __pyx_L0;
11495 
11496  /* "PyClical.pyx":1397
11497  * return clifford(obj).even()
11498  *
11499  * cpdef inline odd(obj): # <<<<<<<<<<<<<<
11500  * """
11501  * Odd part of multivector, sum of odd grade terms.
11502  */
11503 
11504  /* function exit code */
11505  __pyx_L1_error:;
11506  __Pyx_XDECREF(__pyx_t_1);
11507  __Pyx_XDECREF(__pyx_t_2);
11508  __Pyx_XDECREF(__pyx_t_3);
11509  __Pyx_AddTraceback("PyClical.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
11510  __pyx_r = 0;
11511  __pyx_L0:;
11512  __Pyx_XGIVEREF(__pyx_r);
11513  __Pyx_RefNannyFinishContext();
11514  return __pyx_r;
11515  }
11516 
11517  /* Python wrapper */
11518  static PyObject *__pyx_pw_8PyClical_23odd(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11519  static char __pyx_doc_8PyClical_22odd[] = "\n Odd part of multivector, sum of odd grade terms.\n\n >>> print odd(clifford(\"1+{1}+{1,2}\"))\n {1}\n ";
11520  static PyObject *__pyx_pw_8PyClical_23odd(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11521  PyObject *__pyx_r = 0;
11522  __Pyx_RefNannyDeclarations
11523  __Pyx_RefNannySetupContext("odd (wrapper)", 0);
11524  __pyx_r = __pyx_pf_8PyClical_22odd(__pyx_self, ((PyObject *)__pyx_v_obj));
11525 
11526  /* function exit code */
11527  __Pyx_RefNannyFinishContext();
11528  return __pyx_r;
11529  }
11530 
11531  static PyObject *__pyx_pf_8PyClical_22odd(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11532  PyObject *__pyx_r = NULL;
11533  __Pyx_RefNannyDeclarations
11534  PyObject *__pyx_t_1 = NULL;
11535  int __pyx_lineno = 0;
11536  const char *__pyx_filename = NULL;
11537  int __pyx_clineno = 0;
11538  __Pyx_RefNannySetupContext("odd", 0);
11539  __Pyx_XDECREF(__pyx_r);
11540  __pyx_t_1 = __pyx_f_8PyClical_odd(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11541  __Pyx_GOTREF(__pyx_t_1);
11542  __pyx_r = __pyx_t_1;
11543  __pyx_t_1 = 0;
11544  goto __pyx_L0;
11545 
11546  /* function exit code */
11547  __pyx_L1_error:;
11548  __Pyx_XDECREF(__pyx_t_1);
11549  __Pyx_AddTraceback("PyClical.odd", __pyx_clineno, __pyx_lineno, __pyx_filename);
11550  __pyx_r = NULL;
11551  __pyx_L0:;
11552  __Pyx_XGIVEREF(__pyx_r);
11553  __Pyx_RefNannyFinishContext();
11554  return __pyx_r;
11555  }
11556 
11557  /* "PyClical.pyx":1406
11558  * return clifford(obj).odd()
11559  *
11560  * cpdef inline involute(obj): # <<<<<<<<<<<<<<
11561  * """
11562  * Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})
11563  */
11564 
11565  static PyObject *__pyx_pw_8PyClical_25involute(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11566  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_involute(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11567  PyObject *__pyx_r = NULL;
11568  __Pyx_RefNannyDeclarations
11569  PyObject *__pyx_t_1 = NULL;
11570  PyObject *__pyx_t_2 = NULL;
11571  PyObject *__pyx_t_3 = NULL;
11572  int __pyx_lineno = 0;
11573  const char *__pyx_filename = NULL;
11574  int __pyx_clineno = 0;
11575  __Pyx_RefNannySetupContext("involute", 0);
11576 
11577  /* "PyClical.pyx":1419
11578  * 1-{1}+{1,2}
11579  * """
11580  * return clifford(obj).involute() # <<<<<<<<<<<<<<
11581  *
11582  * cpdef inline reverse(obj):
11583  */
11584  __Pyx_XDECREF(__pyx_r);
11585  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11586  __Pyx_GOTREF(__pyx_t_2);
11587  __Pyx_INCREF(__pyx_v_obj);
11588  __Pyx_GIVEREF(__pyx_v_obj);
11589  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11590  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11591  __Pyx_GOTREF(__pyx_t_3);
11592  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11593  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_involute); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11594  __Pyx_GOTREF(__pyx_t_2);
11595  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11596  __pyx_t_3 = NULL;
11597  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11598  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11599  if (likely(__pyx_t_3)) {
11600  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11601  __Pyx_INCREF(__pyx_t_3);
11602  __Pyx_INCREF(function);
11603  __Pyx_DECREF_SET(__pyx_t_2, function);
11604  }
11605  }
11606  if (__pyx_t_3) {
11607  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11608  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11609  } else {
11610  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11611  }
11612  __Pyx_GOTREF(__pyx_t_1);
11613  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11614  __pyx_r = __pyx_t_1;
11615  __pyx_t_1 = 0;
11616  goto __pyx_L0;
11617 
11618  /* "PyClical.pyx":1406
11619  * return clifford(obj).odd()
11620  *
11621  * cpdef inline involute(obj): # <<<<<<<<<<<<<<
11622  * """
11623  * Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})
11624  */
11625 
11626  /* function exit code */
11627  __pyx_L1_error:;
11628  __Pyx_XDECREF(__pyx_t_1);
11629  __Pyx_XDECREF(__pyx_t_2);
11630  __Pyx_XDECREF(__pyx_t_3);
11631  __Pyx_AddTraceback("PyClical.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
11632  __pyx_r = 0;
11633  __pyx_L0:;
11634  __Pyx_XGIVEREF(__pyx_r);
11635  __Pyx_RefNannyFinishContext();
11636  return __pyx_r;
11637  }
11638 
11639  /* Python wrapper */
11640  static PyObject *__pyx_pw_8PyClical_25involute(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11641  static char __pyx_doc_8PyClical_24involute[] = "\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 ";
11642  static PyObject *__pyx_pw_8PyClical_25involute(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11643  PyObject *__pyx_r = 0;
11644  __Pyx_RefNannyDeclarations
11645  __Pyx_RefNannySetupContext("involute (wrapper)", 0);
11646  __pyx_r = __pyx_pf_8PyClical_24involute(__pyx_self, ((PyObject *)__pyx_v_obj));
11647 
11648  /* function exit code */
11649  __Pyx_RefNannyFinishContext();
11650  return __pyx_r;
11651  }
11652 
11653  static PyObject *__pyx_pf_8PyClical_24involute(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11654  PyObject *__pyx_r = NULL;
11655  __Pyx_RefNannyDeclarations
11656  PyObject *__pyx_t_1 = NULL;
11657  int __pyx_lineno = 0;
11658  const char *__pyx_filename = NULL;
11659  int __pyx_clineno = 0;
11660  __Pyx_RefNannySetupContext("involute", 0);
11661  __Pyx_XDECREF(__pyx_r);
11662  __pyx_t_1 = __pyx_f_8PyClical_involute(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11663  __Pyx_GOTREF(__pyx_t_1);
11664  __pyx_r = __pyx_t_1;
11665  __pyx_t_1 = 0;
11666  goto __pyx_L0;
11667 
11668  /* function exit code */
11669  __pyx_L1_error:;
11670  __Pyx_XDECREF(__pyx_t_1);
11671  __Pyx_AddTraceback("PyClical.involute", __pyx_clineno, __pyx_lineno, __pyx_filename);
11672  __pyx_r = NULL;
11673  __pyx_L0:;
11674  __Pyx_XGIVEREF(__pyx_r);
11675  __Pyx_RefNannyFinishContext();
11676  return __pyx_r;
11677  }
11678 
11679  /* "PyClical.pyx":1421
11680  * return clifford(obj).involute()
11681  *
11682  * cpdef inline reverse(obj): # <<<<<<<<<<<<<<
11683  * """
11684  * Reversion, eg. {1}*{2} -> {2}*{1}
11685  */
11686 
11687  static PyObject *__pyx_pw_8PyClical_27reverse(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11688  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_reverse(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11689  PyObject *__pyx_r = NULL;
11690  __Pyx_RefNannyDeclarations
11691  PyObject *__pyx_t_1 = NULL;
11692  PyObject *__pyx_t_2 = NULL;
11693  PyObject *__pyx_t_3 = NULL;
11694  int __pyx_lineno = 0;
11695  const char *__pyx_filename = NULL;
11696  int __pyx_clineno = 0;
11697  __Pyx_RefNannySetupContext("reverse", 0);
11698 
11699  /* "PyClical.pyx":1434
11700  * 1+{1}-{1,2}
11701  * """
11702  * return clifford(obj).reverse() # <<<<<<<<<<<<<<
11703  *
11704  * cpdef inline conj(obj):
11705  */
11706  __Pyx_XDECREF(__pyx_r);
11707  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11708  __Pyx_GOTREF(__pyx_t_2);
11709  __Pyx_INCREF(__pyx_v_obj);
11710  __Pyx_GIVEREF(__pyx_v_obj);
11711  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11712  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11713  __Pyx_GOTREF(__pyx_t_3);
11714  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11715  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reverse); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11716  __Pyx_GOTREF(__pyx_t_2);
11717  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11718  __pyx_t_3 = NULL;
11719  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11720  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11721  if (likely(__pyx_t_3)) {
11722  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11723  __Pyx_INCREF(__pyx_t_3);
11724  __Pyx_INCREF(function);
11725  __Pyx_DECREF_SET(__pyx_t_2, function);
11726  }
11727  }
11728  if (__pyx_t_3) {
11729  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11730  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11731  } else {
11732  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11733  }
11734  __Pyx_GOTREF(__pyx_t_1);
11735  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11736  __pyx_r = __pyx_t_1;
11737  __pyx_t_1 = 0;
11738  goto __pyx_L0;
11739 
11740  /* "PyClical.pyx":1421
11741  * return clifford(obj).involute()
11742  *
11743  * cpdef inline reverse(obj): # <<<<<<<<<<<<<<
11744  * """
11745  * Reversion, eg. {1}*{2} -> {2}*{1}
11746  */
11747 
11748  /* function exit code */
11749  __pyx_L1_error:;
11750  __Pyx_XDECREF(__pyx_t_1);
11751  __Pyx_XDECREF(__pyx_t_2);
11752  __Pyx_XDECREF(__pyx_t_3);
11753  __Pyx_AddTraceback("PyClical.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
11754  __pyx_r = 0;
11755  __pyx_L0:;
11756  __Pyx_XGIVEREF(__pyx_r);
11757  __Pyx_RefNannyFinishContext();
11758  return __pyx_r;
11759  }
11760 
11761  /* Python wrapper */
11762  static PyObject *__pyx_pw_8PyClical_27reverse(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11763  static char __pyx_doc_8PyClical_26reverse[] = "\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 ";
11764  static PyObject *__pyx_pw_8PyClical_27reverse(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11765  PyObject *__pyx_r = 0;
11766  __Pyx_RefNannyDeclarations
11767  __Pyx_RefNannySetupContext("reverse (wrapper)", 0);
11768  __pyx_r = __pyx_pf_8PyClical_26reverse(__pyx_self, ((PyObject *)__pyx_v_obj));
11769 
11770  /* function exit code */
11771  __Pyx_RefNannyFinishContext();
11772  return __pyx_r;
11773  }
11774 
11775  static PyObject *__pyx_pf_8PyClical_26reverse(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11776  PyObject *__pyx_r = NULL;
11777  __Pyx_RefNannyDeclarations
11778  PyObject *__pyx_t_1 = NULL;
11779  int __pyx_lineno = 0;
11780  const char *__pyx_filename = NULL;
11781  int __pyx_clineno = 0;
11782  __Pyx_RefNannySetupContext("reverse", 0);
11783  __Pyx_XDECREF(__pyx_r);
11784  __pyx_t_1 = __pyx_f_8PyClical_reverse(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11785  __Pyx_GOTREF(__pyx_t_1);
11786  __pyx_r = __pyx_t_1;
11787  __pyx_t_1 = 0;
11788  goto __pyx_L0;
11789 
11790  /* function exit code */
11791  __pyx_L1_error:;
11792  __Pyx_XDECREF(__pyx_t_1);
11793  __Pyx_AddTraceback("PyClical.reverse", __pyx_clineno, __pyx_lineno, __pyx_filename);
11794  __pyx_r = NULL;
11795  __pyx_L0:;
11796  __Pyx_XGIVEREF(__pyx_r);
11797  __Pyx_RefNannyFinishContext();
11798  return __pyx_r;
11799  }
11800 
11801  /* "PyClical.pyx":1436
11802  * return clifford(obj).reverse()
11803  *
11804  * cpdef inline conj(obj): # <<<<<<<<<<<<<<
11805  * """
11806  * Conjugation, reverse o involute == involute o reverse.
11807  */
11808 
11809  static PyObject *__pyx_pw_8PyClical_29conj(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11810  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_conj(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11811  PyObject *__pyx_r = NULL;
11812  __Pyx_RefNannyDeclarations
11813  PyObject *__pyx_t_1 = NULL;
11814  PyObject *__pyx_t_2 = NULL;
11815  PyObject *__pyx_t_3 = NULL;
11816  int __pyx_lineno = 0;
11817  const char *__pyx_filename = NULL;
11818  int __pyx_clineno = 0;
11819  __Pyx_RefNannySetupContext("conj", 0);
11820 
11821  /* "PyClical.pyx":1449
11822  * 1-{1}-{1,2}
11823  * """
11824  * return clifford(obj).conj() # <<<<<<<<<<<<<<
11825  *
11826  * cpdef inline quad(obj):
11827  */
11828  __Pyx_XDECREF(__pyx_r);
11829  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11830  __Pyx_GOTREF(__pyx_t_2);
11831  __Pyx_INCREF(__pyx_v_obj);
11832  __Pyx_GIVEREF(__pyx_v_obj);
11833  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11834  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11835  __Pyx_GOTREF(__pyx_t_3);
11836  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11837  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_conj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11838  __Pyx_GOTREF(__pyx_t_2);
11839  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11840  __pyx_t_3 = NULL;
11841  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11842  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11843  if (likely(__pyx_t_3)) {
11844  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11845  __Pyx_INCREF(__pyx_t_3);
11846  __Pyx_INCREF(function);
11847  __Pyx_DECREF_SET(__pyx_t_2, function);
11848  }
11849  }
11850  if (__pyx_t_3) {
11851  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11852  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11853  } else {
11854  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11855  }
11856  __Pyx_GOTREF(__pyx_t_1);
11857  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11858  __pyx_r = __pyx_t_1;
11859  __pyx_t_1 = 0;
11860  goto __pyx_L0;
11861 
11862  /* "PyClical.pyx":1436
11863  * return clifford(obj).reverse()
11864  *
11865  * cpdef inline conj(obj): # <<<<<<<<<<<<<<
11866  * """
11867  * Conjugation, reverse o involute == involute o reverse.
11868  */
11869 
11870  /* function exit code */
11871  __pyx_L1_error:;
11872  __Pyx_XDECREF(__pyx_t_1);
11873  __Pyx_XDECREF(__pyx_t_2);
11874  __Pyx_XDECREF(__pyx_t_3);
11875  __Pyx_AddTraceback("PyClical.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
11876  __pyx_r = 0;
11877  __pyx_L0:;
11878  __Pyx_XGIVEREF(__pyx_r);
11879  __Pyx_RefNannyFinishContext();
11880  return __pyx_r;
11881  }
11882 
11883  /* Python wrapper */
11884  static PyObject *__pyx_pw_8PyClical_29conj(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11885  static char __pyx_doc_8PyClical_28conj[] = "\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 ";
11886  static PyObject *__pyx_pw_8PyClical_29conj(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11887  PyObject *__pyx_r = 0;
11888  __Pyx_RefNannyDeclarations
11889  __Pyx_RefNannySetupContext("conj (wrapper)", 0);
11890  __pyx_r = __pyx_pf_8PyClical_28conj(__pyx_self, ((PyObject *)__pyx_v_obj));
11891 
11892  /* function exit code */
11893  __Pyx_RefNannyFinishContext();
11894  return __pyx_r;
11895  }
11896 
11897  static PyObject *__pyx_pf_8PyClical_28conj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
11898  PyObject *__pyx_r = NULL;
11899  __Pyx_RefNannyDeclarations
11900  PyObject *__pyx_t_1 = NULL;
11901  int __pyx_lineno = 0;
11902  const char *__pyx_filename = NULL;
11903  int __pyx_clineno = 0;
11904  __Pyx_RefNannySetupContext("conj", 0);
11905  __Pyx_XDECREF(__pyx_r);
11906  __pyx_t_1 = __pyx_f_8PyClical_conj(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11907  __Pyx_GOTREF(__pyx_t_1);
11908  __pyx_r = __pyx_t_1;
11909  __pyx_t_1 = 0;
11910  goto __pyx_L0;
11911 
11912  /* function exit code */
11913  __pyx_L1_error:;
11914  __Pyx_XDECREF(__pyx_t_1);
11915  __Pyx_AddTraceback("PyClical.conj", __pyx_clineno, __pyx_lineno, __pyx_filename);
11916  __pyx_r = NULL;
11917  __pyx_L0:;
11918  __Pyx_XGIVEREF(__pyx_r);
11919  __Pyx_RefNannyFinishContext();
11920  return __pyx_r;
11921  }
11922 
11923  /* "PyClical.pyx":1451
11924  * return clifford(obj).conj()
11925  *
11926  * cpdef inline quad(obj): # <<<<<<<<<<<<<<
11927  * """
11928  * Quadratic form == (rev(x)*x)(0).
11929  */
11930 
11931  static PyObject *__pyx_pw_8PyClical_31quad(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
11932  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_quad(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
11933  PyObject *__pyx_r = NULL;
11934  __Pyx_RefNannyDeclarations
11935  PyObject *__pyx_t_1 = NULL;
11936  PyObject *__pyx_t_2 = NULL;
11937  PyObject *__pyx_t_3 = NULL;
11938  int __pyx_lineno = 0;
11939  const char *__pyx_filename = NULL;
11940  int __pyx_clineno = 0;
11941  __Pyx_RefNannySetupContext("quad", 0);
11942 
11943  /* "PyClical.pyx":1460
11944  * 2.0
11945  * """
11946  * return clifford(obj).quad() # <<<<<<<<<<<<<<
11947  *
11948  * cpdef inline norm(obj):
11949  */
11950  __Pyx_XDECREF(__pyx_r);
11951  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11952  __Pyx_GOTREF(__pyx_t_2);
11953  __Pyx_INCREF(__pyx_v_obj);
11954  __Pyx_GIVEREF(__pyx_v_obj);
11955  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
11956  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11957  __Pyx_GOTREF(__pyx_t_3);
11958  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11959  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_quad); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11960  __Pyx_GOTREF(__pyx_t_2);
11961  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11962  __pyx_t_3 = NULL;
11963  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
11964  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11965  if (likely(__pyx_t_3)) {
11966  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11967  __Pyx_INCREF(__pyx_t_3);
11968  __Pyx_INCREF(function);
11969  __Pyx_DECREF_SET(__pyx_t_2, function);
11970  }
11971  }
11972  if (__pyx_t_3) {
11973  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11974  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11975  } else {
11976  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11977  }
11978  __Pyx_GOTREF(__pyx_t_1);
11979  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11980  __pyx_r = __pyx_t_1;
11981  __pyx_t_1 = 0;
11982  goto __pyx_L0;
11983 
11984  /* "PyClical.pyx":1451
11985  * return clifford(obj).conj()
11986  *
11987  * cpdef inline quad(obj): # <<<<<<<<<<<<<<
11988  * """
11989  * Quadratic form == (rev(x)*x)(0).
11990  */
11991 
11992  /* function exit code */
11993  __pyx_L1_error:;
11994  __Pyx_XDECREF(__pyx_t_1);
11995  __Pyx_XDECREF(__pyx_t_2);
11996  __Pyx_XDECREF(__pyx_t_3);
11997  __Pyx_AddTraceback("PyClical.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
11998  __pyx_r = 0;
11999  __pyx_L0:;
12000  __Pyx_XGIVEREF(__pyx_r);
12001  __Pyx_RefNannyFinishContext();
12002  return __pyx_r;
12003  }
12004 
12005  /* Python wrapper */
12006  static PyObject *__pyx_pw_8PyClical_31quad(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12007  static char __pyx_doc_8PyClical_30quad[] = "\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 ";
12008  static PyObject *__pyx_pw_8PyClical_31quad(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12009  PyObject *__pyx_r = 0;
12010  __Pyx_RefNannyDeclarations
12011  __Pyx_RefNannySetupContext("quad (wrapper)", 0);
12012  __pyx_r = __pyx_pf_8PyClical_30quad(__pyx_self, ((PyObject *)__pyx_v_obj));
12013 
12014  /* function exit code */
12015  __Pyx_RefNannyFinishContext();
12016  return __pyx_r;
12017  }
12018 
12019  static PyObject *__pyx_pf_8PyClical_30quad(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12020  PyObject *__pyx_r = NULL;
12021  __Pyx_RefNannyDeclarations
12022  PyObject *__pyx_t_1 = NULL;
12023  int __pyx_lineno = 0;
12024  const char *__pyx_filename = NULL;
12025  int __pyx_clineno = 0;
12026  __Pyx_RefNannySetupContext("quad", 0);
12027  __Pyx_XDECREF(__pyx_r);
12028  __pyx_t_1 = __pyx_f_8PyClical_quad(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12029  __Pyx_GOTREF(__pyx_t_1);
12030  __pyx_r = __pyx_t_1;
12031  __pyx_t_1 = 0;
12032  goto __pyx_L0;
12033 
12034  /* function exit code */
12035  __pyx_L1_error:;
12036  __Pyx_XDECREF(__pyx_t_1);
12037  __Pyx_AddTraceback("PyClical.quad", __pyx_clineno, __pyx_lineno, __pyx_filename);
12038  __pyx_r = NULL;
12039  __pyx_L0:;
12040  __Pyx_XGIVEREF(__pyx_r);
12041  __Pyx_RefNannyFinishContext();
12042  return __pyx_r;
12043  }
12044 
12045  /* "PyClical.pyx":1462
12046  * return clifford(obj).quad()
12047  *
12048  * cpdef inline norm(obj): # <<<<<<<<<<<<<<
12049  * """
12050  * norm == sum of squares of coordinates.
12051  */
12052 
12053  static PyObject *__pyx_pw_8PyClical_33norm(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12054  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_norm(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
12055  PyObject *__pyx_r = NULL;
12056  __Pyx_RefNannyDeclarations
12057  PyObject *__pyx_t_1 = NULL;
12058  PyObject *__pyx_t_2 = NULL;
12059  PyObject *__pyx_t_3 = NULL;
12060  int __pyx_lineno = 0;
12061  const char *__pyx_filename = NULL;
12062  int __pyx_clineno = 0;
12063  __Pyx_RefNannySetupContext("norm", 0);
12064 
12065  /* "PyClical.pyx":1471
12066  * 4.0
12067  * """
12068  * return clifford(obj).norm() # <<<<<<<<<<<<<<
12069  *
12070  * cpdef inline abs(obj):
12071  */
12072  __Pyx_XDECREF(__pyx_r);
12073  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12074  __Pyx_GOTREF(__pyx_t_2);
12075  __Pyx_INCREF(__pyx_v_obj);
12076  __Pyx_GIVEREF(__pyx_v_obj);
12077  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
12078  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12079  __Pyx_GOTREF(__pyx_t_3);
12080  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12081  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_norm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12082  __Pyx_GOTREF(__pyx_t_2);
12083  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12084  __pyx_t_3 = NULL;
12085  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
12086  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
12087  if (likely(__pyx_t_3)) {
12088  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12089  __Pyx_INCREF(__pyx_t_3);
12090  __Pyx_INCREF(function);
12091  __Pyx_DECREF_SET(__pyx_t_2, function);
12092  }
12093  }
12094  if (__pyx_t_3) {
12095  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12096  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12097  } else {
12098  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12099  }
12100  __Pyx_GOTREF(__pyx_t_1);
12101  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12102  __pyx_r = __pyx_t_1;
12103  __pyx_t_1 = 0;
12104  goto __pyx_L0;
12105 
12106  /* "PyClical.pyx":1462
12107  * return clifford(obj).quad()
12108  *
12109  * cpdef inline norm(obj): # <<<<<<<<<<<<<<
12110  * """
12111  * norm == sum of squares of coordinates.
12112  */
12113 
12114  /* function exit code */
12115  __pyx_L1_error:;
12116  __Pyx_XDECREF(__pyx_t_1);
12117  __Pyx_XDECREF(__pyx_t_2);
12118  __Pyx_XDECREF(__pyx_t_3);
12119  __Pyx_AddTraceback("PyClical.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
12120  __pyx_r = 0;
12121  __pyx_L0:;
12122  __Pyx_XGIVEREF(__pyx_r);
12123  __Pyx_RefNannyFinishContext();
12124  return __pyx_r;
12125  }
12126 
12127  /* Python wrapper */
12128  static PyObject *__pyx_pw_8PyClical_33norm(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12129  static char __pyx_doc_8PyClical_32norm[] = "\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 ";
12130  static PyObject *__pyx_pw_8PyClical_33norm(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12131  PyObject *__pyx_r = 0;
12132  __Pyx_RefNannyDeclarations
12133  __Pyx_RefNannySetupContext("norm (wrapper)", 0);
12134  __pyx_r = __pyx_pf_8PyClical_32norm(__pyx_self, ((PyObject *)__pyx_v_obj));
12135 
12136  /* function exit code */
12137  __Pyx_RefNannyFinishContext();
12138  return __pyx_r;
12139  }
12140 
12141  static PyObject *__pyx_pf_8PyClical_32norm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12142  PyObject *__pyx_r = NULL;
12143  __Pyx_RefNannyDeclarations
12144  PyObject *__pyx_t_1 = NULL;
12145  int __pyx_lineno = 0;
12146  const char *__pyx_filename = NULL;
12147  int __pyx_clineno = 0;
12148  __Pyx_RefNannySetupContext("norm", 0);
12149  __Pyx_XDECREF(__pyx_r);
12150  __pyx_t_1 = __pyx_f_8PyClical_norm(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12151  __Pyx_GOTREF(__pyx_t_1);
12152  __pyx_r = __pyx_t_1;
12153  __pyx_t_1 = 0;
12154  goto __pyx_L0;
12155 
12156  /* function exit code */
12157  __pyx_L1_error:;
12158  __Pyx_XDECREF(__pyx_t_1);
12159  __Pyx_AddTraceback("PyClical.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
12160  __pyx_r = NULL;
12161  __pyx_L0:;
12162  __Pyx_XGIVEREF(__pyx_r);
12163  __Pyx_RefNannyFinishContext();
12164  return __pyx_r;
12165  }
12166 
12167  /* "PyClical.pyx":1473
12168  * return clifford(obj).norm()
12169  *
12170  * cpdef inline abs(obj): # <<<<<<<<<<<<<<
12171  * """
12172  * Absolute value of multivector: multivector 2-norm.
12173  */
12174 
12175  static PyObject *__pyx_pw_8PyClical_35abs(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12176  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_abs(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
12177  PyObject *__pyx_r = NULL;
12178  __Pyx_RefNannyDeclarations
12179  PyObject *__pyx_t_1 = NULL;
12180  int __pyx_lineno = 0;
12181  const char *__pyx_filename = NULL;
12182  int __pyx_clineno = 0;
12183  __Pyx_RefNannySetupContext("abs", 0);
12184 
12185  /* "PyClical.pyx":1480
12186  * 2.0
12187  * """
12188  * return glucat.abs(toClifford(obj)) # <<<<<<<<<<<<<<
12189  *
12190  * cpdef inline max_abs(obj):
12191  */
12192  __Pyx_XDECREF(__pyx_r);
12193  __pyx_t_1 = PyFloat_FromDouble(abs(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12194  __Pyx_GOTREF(__pyx_t_1);
12195  __pyx_r = __pyx_t_1;
12196  __pyx_t_1 = 0;
12197  goto __pyx_L0;
12198 
12199  /* "PyClical.pyx":1473
12200  * return clifford(obj).norm()
12201  *
12202  * cpdef inline abs(obj): # <<<<<<<<<<<<<<
12203  * """
12204  * Absolute value of multivector: multivector 2-norm.
12205  */
12206 
12207  /* function exit code */
12208  __pyx_L1_error:;
12209  __Pyx_XDECREF(__pyx_t_1);
12210  __Pyx_AddTraceback("PyClical.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
12211  __pyx_r = 0;
12212  __pyx_L0:;
12213  __Pyx_XGIVEREF(__pyx_r);
12214  __Pyx_RefNannyFinishContext();
12215  return __pyx_r;
12216  }
12217 
12218  /* Python wrapper */
12219  static PyObject *__pyx_pw_8PyClical_35abs(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12220  static char __pyx_doc_8PyClical_34abs[] = "\n Absolute value of multivector: multivector 2-norm.\n\n >>> abs(clifford(\"1+{-1}+{1,2}+{1,2,3}\"))\n 2.0\n ";
12221  static PyObject *__pyx_pw_8PyClical_35abs(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12222  PyObject *__pyx_r = 0;
12223  __Pyx_RefNannyDeclarations
12224  __Pyx_RefNannySetupContext("abs (wrapper)", 0);
12225  __pyx_r = __pyx_pf_8PyClical_34abs(__pyx_self, ((PyObject *)__pyx_v_obj));
12226 
12227  /* function exit code */
12228  __Pyx_RefNannyFinishContext();
12229  return __pyx_r;
12230  }
12231 
12232  static PyObject *__pyx_pf_8PyClical_34abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12233  PyObject *__pyx_r = NULL;
12234  __Pyx_RefNannyDeclarations
12235  PyObject *__pyx_t_1 = NULL;
12236  int __pyx_lineno = 0;
12237  const char *__pyx_filename = NULL;
12238  int __pyx_clineno = 0;
12239  __Pyx_RefNannySetupContext("abs", 0);
12240  __Pyx_XDECREF(__pyx_r);
12241  __pyx_t_1 = __pyx_f_8PyClical_abs(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12242  __Pyx_GOTREF(__pyx_t_1);
12243  __pyx_r = __pyx_t_1;
12244  __pyx_t_1 = 0;
12245  goto __pyx_L0;
12246 
12247  /* function exit code */
12248  __pyx_L1_error:;
12249  __Pyx_XDECREF(__pyx_t_1);
12250  __Pyx_AddTraceback("PyClical.abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
12251  __pyx_r = NULL;
12252  __pyx_L0:;
12253  __Pyx_XGIVEREF(__pyx_r);
12254  __Pyx_RefNannyFinishContext();
12255  return __pyx_r;
12256  }
12257 
12258  /* "PyClical.pyx":1482
12259  * return glucat.abs(toClifford(obj))
12260  *
12261  * cpdef inline max_abs(obj): # <<<<<<<<<<<<<<
12262  * """
12263  * Maximum absolute value of coordinates multivector: multivector infinity-norm.
12264  */
12265 
12266  static PyObject *__pyx_pw_8PyClical_37max_abs(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12267  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_max_abs(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
12268  PyObject *__pyx_r = NULL;
12269  __Pyx_RefNannyDeclarations
12270  PyObject *__pyx_t_1 = NULL;
12271  int __pyx_lineno = 0;
12272  const char *__pyx_filename = NULL;
12273  int __pyx_clineno = 0;
12274  __Pyx_RefNannySetupContext("max_abs", 0);
12275 
12276  /* "PyClical.pyx":1492
12277  *
12278  * """
12279  * return glucat.max_abs(toClifford(obj)) # <<<<<<<<<<<<<<
12280  *
12281  * cpdef inline pow(obj, m):
12282  */
12283  __Pyx_XDECREF(__pyx_r);
12284  __pyx_t_1 = PyFloat_FromDouble(max_abs(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12285  __Pyx_GOTREF(__pyx_t_1);
12286  __pyx_r = __pyx_t_1;
12287  __pyx_t_1 = 0;
12288  goto __pyx_L0;
12289 
12290  /* "PyClical.pyx":1482
12291  * return glucat.abs(toClifford(obj))
12292  *
12293  * cpdef inline max_abs(obj): # <<<<<<<<<<<<<<
12294  * """
12295  * Maximum absolute value of coordinates multivector: multivector infinity-norm.
12296  */
12297 
12298  /* function exit code */
12299  __pyx_L1_error:;
12300  __Pyx_XDECREF(__pyx_t_1);
12301  __Pyx_AddTraceback("PyClical.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
12302  __pyx_r = 0;
12303  __pyx_L0:;
12304  __Pyx_XGIVEREF(__pyx_r);
12305  __Pyx_RefNannyFinishContext();
12306  return __pyx_r;
12307  }
12308 
12309  /* Python wrapper */
12310  static PyObject *__pyx_pw_8PyClical_37max_abs(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12311  static char __pyx_doc_8PyClical_36max_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 ";
12312  static PyObject *__pyx_pw_8PyClical_37max_abs(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12313  PyObject *__pyx_r = 0;
12314  __Pyx_RefNannyDeclarations
12315  __Pyx_RefNannySetupContext("max_abs (wrapper)", 0);
12316  __pyx_r = __pyx_pf_8PyClical_36max_abs(__pyx_self, ((PyObject *)__pyx_v_obj));
12317 
12318  /* function exit code */
12319  __Pyx_RefNannyFinishContext();
12320  return __pyx_r;
12321  }
12322 
12323  static PyObject *__pyx_pf_8PyClical_36max_abs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12324  PyObject *__pyx_r = NULL;
12325  __Pyx_RefNannyDeclarations
12326  PyObject *__pyx_t_1 = NULL;
12327  int __pyx_lineno = 0;
12328  const char *__pyx_filename = NULL;
12329  int __pyx_clineno = 0;
12330  __Pyx_RefNannySetupContext("max_abs", 0);
12331  __Pyx_XDECREF(__pyx_r);
12332  __pyx_t_1 = __pyx_f_8PyClical_max_abs(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12333  __Pyx_GOTREF(__pyx_t_1);
12334  __pyx_r = __pyx_t_1;
12335  __pyx_t_1 = 0;
12336  goto __pyx_L0;
12337 
12338  /* function exit code */
12339  __pyx_L1_error:;
12340  __Pyx_XDECREF(__pyx_t_1);
12341  __Pyx_AddTraceback("PyClical.max_abs", __pyx_clineno, __pyx_lineno, __pyx_filename);
12342  __pyx_r = NULL;
12343  __pyx_L0:;
12344  __Pyx_XGIVEREF(__pyx_r);
12345  __Pyx_RefNannyFinishContext();
12346  return __pyx_r;
12347  }
12348 
12349  /* "PyClical.pyx":1494
12350  * return glucat.max_abs(toClifford(obj))
12351  *
12352  * cpdef inline pow(obj, m): # <<<<<<<<<<<<<<
12353  * """
12354  * Integer power of multivector: obj to the m.
12355  */
12356 
12357  static PyObject *__pyx_pw_8PyClical_39pow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12358  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_pow(PyObject *__pyx_v_obj, PyObject *__pyx_v_m, CYTHON_UNUSED int __pyx_skip_dispatch) {
12359  PyObject *__pyx_r = NULL;
12360  __Pyx_RefNannyDeclarations
12361  PyObject *__pyx_t_1 = NULL;
12362  PyObject *__pyx_t_2 = NULL;
12363  PyObject *__pyx_t_3 = NULL;
12364  PyObject *__pyx_t_4 = NULL;
12365  PyObject *__pyx_t_5 = NULL;
12366  PyObject *__pyx_t_6 = NULL;
12367  Py_ssize_t __pyx_t_7;
12368  PyObject *__pyx_t_8 = NULL;
12369  PyObject *__pyx_t_9 = NULL;
12370  PyObject *__pyx_t_10 = NULL;
12371  PyObject *__pyx_t_11 = NULL;
12372  int __pyx_lineno = 0;
12373  const char *__pyx_filename = NULL;
12374  int __pyx_clineno = 0;
12375  __Pyx_RefNannySetupContext("pow", 0);
12376 
12377  /* "PyClical.pyx":1513
12378  * 1
12379  * """
12380  * try: # <<<<<<<<<<<<<<
12381  * math.pow(obj, m)
12382  * except:
12383  */
12384  {
12385  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
12386  __Pyx_XGOTREF(__pyx_t_1);
12387  __Pyx_XGOTREF(__pyx_t_2);
12388  __Pyx_XGOTREF(__pyx_t_3);
12389  /*try:*/ {
12390 
12391  /* "PyClical.pyx":1514
12392  * """
12393  * try:
12394  * math.pow(obj, m) # <<<<<<<<<<<<<<
12395  * except:
12396  * return clifford(obj).pow(m)
12397  */
12398  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12399  __Pyx_GOTREF(__pyx_t_5);
12400  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pow); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12401  __Pyx_GOTREF(__pyx_t_6);
12402  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12403  __pyx_t_5 = NULL;
12404  __pyx_t_7 = 0;
12405  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
12406  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
12407  if (likely(__pyx_t_5)) {
12408  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12409  __Pyx_INCREF(__pyx_t_5);
12410  __Pyx_INCREF(function);
12411  __Pyx_DECREF_SET(__pyx_t_6, function);
12412  __pyx_t_7 = 1;
12413  }
12414  }
12415  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12416  __Pyx_GOTREF(__pyx_t_8);
12417  if (__pyx_t_5) {
12418  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
12419  }
12420  __Pyx_INCREF(__pyx_v_obj);
12421  __Pyx_GIVEREF(__pyx_v_obj);
12422  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_obj);
12423  __Pyx_INCREF(__pyx_v_m);
12424  __Pyx_GIVEREF(__pyx_v_m);
12425  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_m);
12426  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12427  __Pyx_GOTREF(__pyx_t_4);
12428  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
12429  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12430  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12431 
12432  /* "PyClical.pyx":1513
12433  * 1
12434  * """
12435  * try: # <<<<<<<<<<<<<<
12436  * math.pow(obj, m)
12437  * except:
12438  */
12439  }
12440  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
12441  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
12442  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12443  goto __pyx_L10_try_end;
12444  __pyx_L3_error:;
12445  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
12446  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
12447  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12448  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
12449 
12450  /* "PyClical.pyx":1515
12451  * try:
12452  * math.pow(obj, m)
12453  * except: # <<<<<<<<<<<<<<
12454  * return clifford(obj).pow(m)
12455  *
12456  */
12457  /*except:*/ {
12458  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12459  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1515; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12460  __Pyx_GOTREF(__pyx_t_4);
12461  __Pyx_GOTREF(__pyx_t_6);
12462  __Pyx_GOTREF(__pyx_t_8);
12463 
12464  /* "PyClical.pyx":1516
12465  * math.pow(obj, m)
12466  * except:
12467  * return clifford(obj).pow(m) # <<<<<<<<<<<<<<
12468  *
12469  * cpdef inline outer_pow(obj, m):
12470  */
12471  __Pyx_XDECREF(__pyx_r);
12472  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12473  __Pyx_GOTREF(__pyx_t_9);
12474  __Pyx_INCREF(__pyx_v_obj);
12475  __Pyx_GIVEREF(__pyx_v_obj);
12476  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_obj);
12477  __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12478  __Pyx_GOTREF(__pyx_t_10);
12479  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12480  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_pow); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12481  __Pyx_GOTREF(__pyx_t_9);
12482  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12483  __pyx_t_10 = NULL;
12484  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
12485  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
12486  if (likely(__pyx_t_10)) {
12487  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
12488  __Pyx_INCREF(__pyx_t_10);
12489  __Pyx_INCREF(function);
12490  __Pyx_DECREF_SET(__pyx_t_9, function);
12491  }
12492  }
12493  if (!__pyx_t_10) {
12494  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_m); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12495  __Pyx_GOTREF(__pyx_t_5);
12496  } else {
12497  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12498  __Pyx_GOTREF(__pyx_t_11);
12499  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
12500  __Pyx_INCREF(__pyx_v_m);
12501  __Pyx_GIVEREF(__pyx_v_m);
12502  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_m);
12503  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12504  __Pyx_GOTREF(__pyx_t_5);
12505  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12506  }
12507  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12508  __pyx_r = __pyx_t_5;
12509  __pyx_t_5 = 0;
12510  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12511  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12512  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
12513  goto __pyx_L6_except_return;
12514  }
12515  __pyx_L5_except_error:;
12516 
12517  /* "PyClical.pyx":1513
12518  * 1
12519  * """
12520  * try: # <<<<<<<<<<<<<<
12521  * math.pow(obj, m)
12522  * except:
12523  */
12524  __Pyx_XGIVEREF(__pyx_t_1);
12525  __Pyx_XGIVEREF(__pyx_t_2);
12526  __Pyx_XGIVEREF(__pyx_t_3);
12527  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
12528  goto __pyx_L1_error;
12529  __pyx_L6_except_return:;
12530  __Pyx_XGIVEREF(__pyx_t_1);
12531  __Pyx_XGIVEREF(__pyx_t_2);
12532  __Pyx_XGIVEREF(__pyx_t_3);
12533  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
12534  goto __pyx_L0;
12535  __pyx_L10_try_end:;
12536  }
12537 
12538  /* "PyClical.pyx":1494
12539  * return glucat.max_abs(toClifford(obj))
12540  *
12541  * cpdef inline pow(obj, m): # <<<<<<<<<<<<<<
12542  * """
12543  * Integer power of multivector: obj to the m.
12544  */
12545 
12546  /* function exit code */
12547  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
12548  goto __pyx_L0;
12549  __pyx_L1_error:;
12550  __Pyx_XDECREF(__pyx_t_4);
12551  __Pyx_XDECREF(__pyx_t_5);
12552  __Pyx_XDECREF(__pyx_t_6);
12553  __Pyx_XDECREF(__pyx_t_8);
12554  __Pyx_XDECREF(__pyx_t_9);
12555  __Pyx_XDECREF(__pyx_t_10);
12556  __Pyx_XDECREF(__pyx_t_11);
12557  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12558  __pyx_r = 0;
12559  __pyx_L0:;
12560  __Pyx_XGIVEREF(__pyx_r);
12561  __Pyx_RefNannyFinishContext();
12562  return __pyx_r;
12563  }
12564 
12565  /* Python wrapper */
12566  static PyObject *__pyx_pw_8PyClical_39pow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12567  static char __pyx_doc_8PyClical_38pow[] = "\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 ";
12568  static PyObject *__pyx_pw_8PyClical_39pow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
12569  PyObject *__pyx_v_obj = 0;
12570  PyObject *__pyx_v_m = 0;
12571  int __pyx_lineno = 0;
12572  const char *__pyx_filename = NULL;
12573  int __pyx_clineno = 0;
12574  PyObject *__pyx_r = 0;
12575  __Pyx_RefNannyDeclarations
12576  __Pyx_RefNannySetupContext("pow (wrapper)", 0);
12577  {
12578  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_m,0};
12579  PyObject* values[2] = {0,0};
12580  if (unlikely(__pyx_kwds)) {
12581  Py_ssize_t kw_args;
12582  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
12583  switch (pos_args) {
12584  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12585  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12586  case 0: break;
12587  default: goto __pyx_L5_argtuple_error;
12588  }
12589  kw_args = PyDict_Size(__pyx_kwds);
12590  switch (pos_args) {
12591  case 0:
12592  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
12593  else goto __pyx_L5_argtuple_error;
12594  case 1:
12595  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
12596  else {
12597  __Pyx_RaiseArgtupleInvalid("pow", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12598  }
12599  }
12600  if (unlikely(kw_args > 0)) {
12601  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12602  }
12603  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
12604  goto __pyx_L5_argtuple_error;
12605  } else {
12606  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12607  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12608  }
12609  __pyx_v_obj = values[0];
12610  __pyx_v_m = values[1];
12611  }
12612  goto __pyx_L4_argument_unpacking_done;
12613  __pyx_L5_argtuple_error:;
12614  __Pyx_RaiseArgtupleInvalid("pow", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12615  __pyx_L3_error:;
12616  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12617  __Pyx_RefNannyFinishContext();
12618  return NULL;
12619  __pyx_L4_argument_unpacking_done:;
12620  __pyx_r = __pyx_pf_8PyClical_38pow(__pyx_self, __pyx_v_obj, __pyx_v_m);
12621 
12622  /* function exit code */
12623  __Pyx_RefNannyFinishContext();
12624  return __pyx_r;
12625  }
12626 
12627  static PyObject *__pyx_pf_8PyClical_38pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m) {
12628  PyObject *__pyx_r = NULL;
12629  __Pyx_RefNannyDeclarations
12630  PyObject *__pyx_t_1 = NULL;
12631  int __pyx_lineno = 0;
12632  const char *__pyx_filename = NULL;
12633  int __pyx_clineno = 0;
12634  __Pyx_RefNannySetupContext("pow", 0);
12635  __Pyx_XDECREF(__pyx_r);
12636  __pyx_t_1 = __pyx_f_8PyClical_pow(__pyx_v_obj, __pyx_v_m, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12637  __Pyx_GOTREF(__pyx_t_1);
12638  __pyx_r = __pyx_t_1;
12639  __pyx_t_1 = 0;
12640  goto __pyx_L0;
12641 
12642  /* function exit code */
12643  __pyx_L1_error:;
12644  __Pyx_XDECREF(__pyx_t_1);
12645  __Pyx_AddTraceback("PyClical.pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12646  __pyx_r = NULL;
12647  __pyx_L0:;
12648  __Pyx_XGIVEREF(__pyx_r);
12649  __Pyx_RefNannyFinishContext();
12650  return __pyx_r;
12651  }
12652 
12653  /* "PyClical.pyx":1518
12654  * return clifford(obj).pow(m)
12655  *
12656  * cpdef inline outer_pow(obj, m): # <<<<<<<<<<<<<<
12657  * """
12658  * Outer product power of multivector.
12659  */
12660 
12661  static PyObject *__pyx_pw_8PyClical_41outer_pow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12662  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_outer_pow(PyObject *__pyx_v_obj, PyObject *__pyx_v_m, CYTHON_UNUSED int __pyx_skip_dispatch) {
12663  PyObject *__pyx_r = NULL;
12664  __Pyx_RefNannyDeclarations
12665  PyObject *__pyx_t_1 = NULL;
12666  PyObject *__pyx_t_2 = NULL;
12667  PyObject *__pyx_t_3 = NULL;
12668  PyObject *__pyx_t_4 = NULL;
12669  int __pyx_lineno = 0;
12670  const char *__pyx_filename = NULL;
12671  int __pyx_clineno = 0;
12672  __Pyx_RefNannySetupContext("outer_pow", 0);
12673 
12674  /* "PyClical.pyx":1525
12675  * 1+3{1}+3{1,2}
12676  * """
12677  * return clifford(obj).outer_pow(m) # <<<<<<<<<<<<<<
12678  *
12679  * cpdef inline complexifier(obj):
12680  */
12681  __Pyx_XDECREF(__pyx_r);
12682  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12683  __Pyx_GOTREF(__pyx_t_2);
12684  __Pyx_INCREF(__pyx_v_obj);
12685  __Pyx_GIVEREF(__pyx_v_obj);
12686  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
12687  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12688  __Pyx_GOTREF(__pyx_t_3);
12689  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12690  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_outer_pow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12691  __Pyx_GOTREF(__pyx_t_2);
12692  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12693  __pyx_t_3 = NULL;
12694  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
12695  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
12696  if (likely(__pyx_t_3)) {
12697  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12698  __Pyx_INCREF(__pyx_t_3);
12699  __Pyx_INCREF(function);
12700  __Pyx_DECREF_SET(__pyx_t_2, function);
12701  }
12702  }
12703  if (!__pyx_t_3) {
12704  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_m); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12705  __Pyx_GOTREF(__pyx_t_1);
12706  } else {
12707  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12708  __Pyx_GOTREF(__pyx_t_4);
12709  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
12710  __Pyx_INCREF(__pyx_v_m);
12711  __Pyx_GIVEREF(__pyx_v_m);
12712  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_m);
12713  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12714  __Pyx_GOTREF(__pyx_t_1);
12715  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12716  }
12717  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12718  __pyx_r = __pyx_t_1;
12719  __pyx_t_1 = 0;
12720  goto __pyx_L0;
12721 
12722  /* "PyClical.pyx":1518
12723  * return clifford(obj).pow(m)
12724  *
12725  * cpdef inline outer_pow(obj, m): # <<<<<<<<<<<<<<
12726  * """
12727  * Outer product power of multivector.
12728  */
12729 
12730  /* function exit code */
12731  __pyx_L1_error:;
12732  __Pyx_XDECREF(__pyx_t_1);
12733  __Pyx_XDECREF(__pyx_t_2);
12734  __Pyx_XDECREF(__pyx_t_3);
12735  __Pyx_XDECREF(__pyx_t_4);
12736  __Pyx_AddTraceback("PyClical.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12737  __pyx_r = 0;
12738  __pyx_L0:;
12739  __Pyx_XGIVEREF(__pyx_r);
12740  __Pyx_RefNannyFinishContext();
12741  return __pyx_r;
12742  }
12743 
12744  /* Python wrapper */
12745  static PyObject *__pyx_pw_8PyClical_41outer_pow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12746  static char __pyx_doc_8PyClical_40outer_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 ";
12747  static PyObject *__pyx_pw_8PyClical_41outer_pow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
12748  PyObject *__pyx_v_obj = 0;
12749  PyObject *__pyx_v_m = 0;
12750  int __pyx_lineno = 0;
12751  const char *__pyx_filename = NULL;
12752  int __pyx_clineno = 0;
12753  PyObject *__pyx_r = 0;
12754  __Pyx_RefNannyDeclarations
12755  __Pyx_RefNannySetupContext("outer_pow (wrapper)", 0);
12756  {
12757  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_m,0};
12758  PyObject* values[2] = {0,0};
12759  if (unlikely(__pyx_kwds)) {
12760  Py_ssize_t kw_args;
12761  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
12762  switch (pos_args) {
12763  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12764  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12765  case 0: break;
12766  default: goto __pyx_L5_argtuple_error;
12767  }
12768  kw_args = PyDict_Size(__pyx_kwds);
12769  switch (pos_args) {
12770  case 0:
12771  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
12772  else goto __pyx_L5_argtuple_error;
12773  case 1:
12774  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
12775  else {
12776  __Pyx_RaiseArgtupleInvalid("outer_pow", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12777  }
12778  }
12779  if (unlikely(kw_args > 0)) {
12780  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "outer_pow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12781  }
12782  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
12783  goto __pyx_L5_argtuple_error;
12784  } else {
12785  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12786  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12787  }
12788  __pyx_v_obj = values[0];
12789  __pyx_v_m = values[1];
12790  }
12791  goto __pyx_L4_argument_unpacking_done;
12792  __pyx_L5_argtuple_error:;
12793  __Pyx_RaiseArgtupleInvalid("outer_pow", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12794  __pyx_L3_error:;
12795  __Pyx_AddTraceback("PyClical.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12796  __Pyx_RefNannyFinishContext();
12797  return NULL;
12798  __pyx_L4_argument_unpacking_done:;
12799  __pyx_r = __pyx_pf_8PyClical_40outer_pow(__pyx_self, __pyx_v_obj, __pyx_v_m);
12800 
12801  /* function exit code */
12802  __Pyx_RefNannyFinishContext();
12803  return __pyx_r;
12804  }
12805 
12806  static PyObject *__pyx_pf_8PyClical_40outer_pow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_m) {
12807  PyObject *__pyx_r = NULL;
12808  __Pyx_RefNannyDeclarations
12809  PyObject *__pyx_t_1 = NULL;
12810  int __pyx_lineno = 0;
12811  const char *__pyx_filename = NULL;
12812  int __pyx_clineno = 0;
12813  __Pyx_RefNannySetupContext("outer_pow", 0);
12814  __Pyx_XDECREF(__pyx_r);
12815  __pyx_t_1 = __pyx_f_8PyClical_outer_pow(__pyx_v_obj, __pyx_v_m, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12816  __Pyx_GOTREF(__pyx_t_1);
12817  __pyx_r = __pyx_t_1;
12818  __pyx_t_1 = 0;
12819  goto __pyx_L0;
12820 
12821  /* function exit code */
12822  __pyx_L1_error:;
12823  __Pyx_XDECREF(__pyx_t_1);
12824  __Pyx_AddTraceback("PyClical.outer_pow", __pyx_clineno, __pyx_lineno, __pyx_filename);
12825  __pyx_r = NULL;
12826  __pyx_L0:;
12827  __Pyx_XGIVEREF(__pyx_r);
12828  __Pyx_RefNannyFinishContext();
12829  return __pyx_r;
12830  }
12831 
12832  /* "PyClical.pyx":1527
12833  * return clifford(obj).outer_pow(m)
12834  *
12835  * cpdef inline complexifier(obj): # <<<<<<<<<<<<<<
12836  * """
12837  * Square root of -1 which commutes with all members of the frame of the given multivector.
12838  */
12839 
12840  static PyObject *__pyx_pw_8PyClical_43complexifier(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12841  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_complexifier(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
12842  PyObject *__pyx_r = NULL;
12843  __Pyx_RefNannyDeclarations
12844  PyObject *__pyx_t_1 = NULL;
12845  PyObject *__pyx_t_2 = NULL;
12846  int __pyx_lineno = 0;
12847  const char *__pyx_filename = NULL;
12848  int __pyx_clineno = 0;
12849  __Pyx_RefNannySetupContext("complexifier", 0);
12850 
12851  /* "PyClical.pyx":1540
12852  * {-1}
12853  * """
12854  * return clifford().wrap( glucat.complexifier(toClifford(obj)) ) # <<<<<<<<<<<<<<
12855  *
12856  * cpdef inline sqrt(obj, i = None):
12857  */
12858  __Pyx_XDECREF(__pyx_r);
12859  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12860  __Pyx_GOTREF(__pyx_t_1);
12861  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), complexifier(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12862  __Pyx_GOTREF(__pyx_t_2);
12863  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12864  __pyx_r = __pyx_t_2;
12865  __pyx_t_2 = 0;
12866  goto __pyx_L0;
12867 
12868  /* "PyClical.pyx":1527
12869  * return clifford(obj).outer_pow(m)
12870  *
12871  * cpdef inline complexifier(obj): # <<<<<<<<<<<<<<
12872  * """
12873  * Square root of -1 which commutes with all members of the frame of the given multivector.
12874  */
12875 
12876  /* function exit code */
12877  __pyx_L1_error:;
12878  __Pyx_XDECREF(__pyx_t_1);
12879  __Pyx_XDECREF(__pyx_t_2);
12880  __Pyx_AddTraceback("PyClical.complexifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
12881  __pyx_r = 0;
12882  __pyx_L0:;
12883  __Pyx_XGIVEREF(__pyx_r);
12884  __Pyx_RefNannyFinishContext();
12885  return __pyx_r;
12886  }
12887 
12888  /* Python wrapper */
12889  static PyObject *__pyx_pw_8PyClical_43complexifier(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
12890  static char __pyx_doc_8PyClical_42complexifier[] = "\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 ";
12891  static PyObject *__pyx_pw_8PyClical_43complexifier(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12892  PyObject *__pyx_r = 0;
12893  __Pyx_RefNannyDeclarations
12894  __Pyx_RefNannySetupContext("complexifier (wrapper)", 0);
12895  __pyx_r = __pyx_pf_8PyClical_42complexifier(__pyx_self, ((PyObject *)__pyx_v_obj));
12896 
12897  /* function exit code */
12898  __Pyx_RefNannyFinishContext();
12899  return __pyx_r;
12900  }
12901 
12902  static PyObject *__pyx_pf_8PyClical_42complexifier(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
12903  PyObject *__pyx_r = NULL;
12904  __Pyx_RefNannyDeclarations
12905  PyObject *__pyx_t_1 = NULL;
12906  int __pyx_lineno = 0;
12907  const char *__pyx_filename = NULL;
12908  int __pyx_clineno = 0;
12909  __Pyx_RefNannySetupContext("complexifier", 0);
12910  __Pyx_XDECREF(__pyx_r);
12911  __pyx_t_1 = __pyx_f_8PyClical_complexifier(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12912  __Pyx_GOTREF(__pyx_t_1);
12913  __pyx_r = __pyx_t_1;
12914  __pyx_t_1 = 0;
12915  goto __pyx_L0;
12916 
12917  /* function exit code */
12918  __pyx_L1_error:;
12919  __Pyx_XDECREF(__pyx_t_1);
12920  __Pyx_AddTraceback("PyClical.complexifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
12921  __pyx_r = NULL;
12922  __pyx_L0:;
12923  __Pyx_XGIVEREF(__pyx_r);
12924  __Pyx_RefNannyFinishContext();
12925  return __pyx_r;
12926  }
12927 
12928  /* "PyClical.pyx":1542
12929  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
12930  *
12931  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
12932  * """
12933  * Square root of multivector with optional complexifier.
12934  */
12935 
12936  static PyObject *__pyx_pw_8PyClical_45sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12937  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) {
12938  PyObject *__pyx_v_i = ((PyObject *)Py_None);
12939  PyObject *__pyx_r = NULL;
12940  __Pyx_RefNannyDeclarations
12941  int __pyx_t_1;
12942  int __pyx_t_2;
12943  PyObject *__pyx_t_3 = NULL;
12944  Clifford __pyx_t_4;
12945  PyObject *__pyx_t_5 = NULL;
12946  PyObject *__pyx_t_6 = NULL;
12947  PyObject *__pyx_t_7 = NULL;
12948  PyObject *__pyx_t_8 = NULL;
12949  PyObject *__pyx_t_9 = NULL;
12950  PyObject *__pyx_t_10 = NULL;
12951  PyObject *__pyx_t_11 = NULL;
12952  int __pyx_lineno = 0;
12953  const char *__pyx_filename = NULL;
12954  int __pyx_clineno = 0;
12955  __Pyx_RefNannySetupContext("sqrt", 0);
12956  if (__pyx_optional_args) {
12957  if (__pyx_optional_args->__pyx_n > 0) {
12958  __pyx_v_i = __pyx_optional_args->i;
12959  }
12960  }
12961 
12962  /* "PyClical.pyx":1557
12963  * -1
12964  * """
12965  * if not (i is None): # <<<<<<<<<<<<<<
12966  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
12967  * else:
12968  */
12969  __pyx_t_1 = (__pyx_v_i != Py_None);
12970  __pyx_t_2 = (__pyx_t_1 != 0);
12971  if (__pyx_t_2) {
12972 
12973  /* "PyClical.pyx":1558
12974  * """
12975  * if not (i is None):
12976  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
12977  * else:
12978  * try:
12979  */
12980  __Pyx_XDECREF(__pyx_r);
12981  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12982  __Pyx_GOTREF(__pyx_t_3);
12983  try {
12984  __pyx_t_4 = sqrt(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
12985  } catch(...) {
12986  __Pyx_CppExn2PyErr();
12987  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12988  }
12989  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12990  __Pyx_GOTREF(__pyx_t_5);
12991  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12992  __pyx_r = __pyx_t_5;
12993  __pyx_t_5 = 0;
12994  goto __pyx_L0;
12995 
12996  /* "PyClical.pyx":1557
12997  * -1
12998  * """
12999  * if not (i is None): # <<<<<<<<<<<<<<
13000  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
13001  * else:
13002  */
13003  }
13004 
13005  /* "PyClical.pyx":1560
13006  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
13007  * else:
13008  * try: # <<<<<<<<<<<<<<
13009  * return math.sqrt(obj)
13010  * except:
13011  */
13012  /*else*/ {
13013  {
13014  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
13015  __Pyx_XGOTREF(__pyx_t_6);
13016  __Pyx_XGOTREF(__pyx_t_7);
13017  __Pyx_XGOTREF(__pyx_t_8);
13018  /*try:*/ {
13019 
13020  /* "PyClical.pyx":1561
13021  * else:
13022  * try:
13023  * return math.sqrt(obj) # <<<<<<<<<<<<<<
13024  * except:
13025  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
13026  */
13027  __Pyx_XDECREF(__pyx_r);
13028  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13029  __Pyx_GOTREF(__pyx_t_3);
13030  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13031  __Pyx_GOTREF(__pyx_t_9);
13032  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13033  __pyx_t_3 = NULL;
13034  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
13035  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
13036  if (likely(__pyx_t_3)) {
13037  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
13038  __Pyx_INCREF(__pyx_t_3);
13039  __Pyx_INCREF(function);
13040  __Pyx_DECREF_SET(__pyx_t_9, function);
13041  }
13042  }
13043  if (!__pyx_t_3) {
13044  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13045  __Pyx_GOTREF(__pyx_t_5);
13046  } else {
13047  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13048  __Pyx_GOTREF(__pyx_t_10);
13049  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
13050  __Pyx_INCREF(__pyx_v_obj);
13051  __Pyx_GIVEREF(__pyx_v_obj);
13052  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
13053  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13054  __Pyx_GOTREF(__pyx_t_5);
13055  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13056  }
13057  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13058  __pyx_r = __pyx_t_5;
13059  __pyx_t_5 = 0;
13060  goto __pyx_L8_try_return;
13061 
13062  /* "PyClical.pyx":1560
13063  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
13064  * else:
13065  * try: # <<<<<<<<<<<<<<
13066  * return math.sqrt(obj)
13067  * except:
13068  */
13069  }
13070  __pyx_L4_error:;
13071  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13072  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
13073  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
13074  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
13075 
13076  /* "PyClical.pyx":1562
13077  * try:
13078  * return math.sqrt(obj)
13079  * except: # <<<<<<<<<<<<<<
13080  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
13081  *
13082  */
13083  /*except:*/ {
13084  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
13085  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13086  __Pyx_GOTREF(__pyx_t_5);
13087  __Pyx_GOTREF(__pyx_t_9);
13088  __Pyx_GOTREF(__pyx_t_10);
13089 
13090  /* "PyClical.pyx":1563
13091  * return math.sqrt(obj)
13092  * except:
13093  * return clifford().wrap( glucat.sqrt(toClifford(obj)) ) # <<<<<<<<<<<<<<
13094  *
13095  * cpdef inline exp(obj):
13096  */
13097  __Pyx_XDECREF(__pyx_r);
13098  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13099  __Pyx_GOTREF(__pyx_t_3);
13100  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), sqrt(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13101  __Pyx_GOTREF(__pyx_t_11);
13102  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13103  __pyx_r = __pyx_t_11;
13104  __pyx_t_11 = 0;
13105  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13106  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13107  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13108  goto __pyx_L7_except_return;
13109  }
13110  __pyx_L6_except_error:;
13111 
13112  /* "PyClical.pyx":1560
13113  * return clifford().wrap( glucat.sqrt(toClifford(obj), toClifford(i)) )
13114  * else:
13115  * try: # <<<<<<<<<<<<<<
13116  * return math.sqrt(obj)
13117  * except:
13118  */
13119  __Pyx_XGIVEREF(__pyx_t_6);
13120  __Pyx_XGIVEREF(__pyx_t_7);
13121  __Pyx_XGIVEREF(__pyx_t_8);
13122  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13123  goto __pyx_L1_error;
13124  __pyx_L8_try_return:;
13125  __Pyx_XGIVEREF(__pyx_t_6);
13126  __Pyx_XGIVEREF(__pyx_t_7);
13127  __Pyx_XGIVEREF(__pyx_t_8);
13128  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13129  goto __pyx_L0;
13130  __pyx_L7_except_return:;
13131  __Pyx_XGIVEREF(__pyx_t_6);
13132  __Pyx_XGIVEREF(__pyx_t_7);
13133  __Pyx_XGIVEREF(__pyx_t_8);
13134  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13135  goto __pyx_L0;
13136  }
13137  }
13138 
13139  /* "PyClical.pyx":1542
13140  * return clifford().wrap( glucat.complexifier(toClifford(obj)) )
13141  *
13142  * cpdef inline sqrt(obj, i = None): # <<<<<<<<<<<<<<
13143  * """
13144  * Square root of multivector with optional complexifier.
13145  */
13146 
13147  /* function exit code */
13148  __pyx_L1_error:;
13149  __Pyx_XDECREF(__pyx_t_3);
13150  __Pyx_XDECREF(__pyx_t_5);
13151  __Pyx_XDECREF(__pyx_t_9);
13152  __Pyx_XDECREF(__pyx_t_10);
13153  __Pyx_XDECREF(__pyx_t_11);
13154  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
13155  __pyx_r = 0;
13156  __pyx_L0:;
13157  __Pyx_XGIVEREF(__pyx_r);
13158  __Pyx_RefNannyFinishContext();
13159  return __pyx_r;
13160  }
13161 
13162  /* Python wrapper */
13163  static PyObject *__pyx_pw_8PyClical_45sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13164  static char __pyx_doc_8PyClical_44sqrt[] = "\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 ";
13165  static PyObject *__pyx_pw_8PyClical_45sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13166  PyObject *__pyx_v_obj = 0;
13167  PyObject *__pyx_v_i = 0;
13168  int __pyx_lineno = 0;
13169  const char *__pyx_filename = NULL;
13170  int __pyx_clineno = 0;
13171  PyObject *__pyx_r = 0;
13172  __Pyx_RefNannyDeclarations
13173  __Pyx_RefNannySetupContext("sqrt (wrapper)", 0);
13174  {
13175  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
13176  PyObject* values[2] = {0,0};
13177  values[1] = ((PyObject *)Py_None);
13178  if (unlikely(__pyx_kwds)) {
13179  Py_ssize_t kw_args;
13180  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13181  switch (pos_args) {
13182  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13183  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13184  case 0: break;
13185  default: goto __pyx_L5_argtuple_error;
13186  }
13187  kw_args = PyDict_Size(__pyx_kwds);
13188  switch (pos_args) {
13189  case 0:
13190  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
13191  else goto __pyx_L5_argtuple_error;
13192  case 1:
13193  if (kw_args > 0) {
13194  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
13195  if (value) { values[1] = value; kw_args--; }
13196  }
13197  }
13198  if (unlikely(kw_args > 0)) {
13199  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sqrt") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13200  }
13201  } else {
13202  switch (PyTuple_GET_SIZE(__pyx_args)) {
13203  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13204  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13205  break;
13206  default: goto __pyx_L5_argtuple_error;
13207  }
13208  }
13209  __pyx_v_obj = values[0];
13210  __pyx_v_i = values[1];
13211  }
13212  goto __pyx_L4_argument_unpacking_done;
13213  __pyx_L5_argtuple_error:;
13214  __Pyx_RaiseArgtupleInvalid("sqrt", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13215  __pyx_L3_error:;
13216  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
13217  __Pyx_RefNannyFinishContext();
13218  return NULL;
13219  __pyx_L4_argument_unpacking_done:;
13220  __pyx_r = __pyx_pf_8PyClical_44sqrt(__pyx_self, __pyx_v_obj, __pyx_v_i);
13221 
13222  /* function exit code */
13223  __Pyx_RefNannyFinishContext();
13224  return __pyx_r;
13225  }
13226 
13227  static PyObject *__pyx_pf_8PyClical_44sqrt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
13228  PyObject *__pyx_r = NULL;
13229  __Pyx_RefNannyDeclarations
13230  PyObject *__pyx_t_1 = NULL;
13231  struct __pyx_opt_args_8PyClical_sqrt __pyx_t_2;
13232  int __pyx_lineno = 0;
13233  const char *__pyx_filename = NULL;
13234  int __pyx_clineno = 0;
13235  __Pyx_RefNannySetupContext("sqrt", 0);
13236  __Pyx_XDECREF(__pyx_r);
13237  __pyx_t_2.__pyx_n = 1;
13238  __pyx_t_2.i = __pyx_v_i;
13239  __pyx_t_1 = __pyx_f_8PyClical_sqrt(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13240  __Pyx_GOTREF(__pyx_t_1);
13241  __pyx_r = __pyx_t_1;
13242  __pyx_t_1 = 0;
13243  goto __pyx_L0;
13244 
13245  /* function exit code */
13246  __pyx_L1_error:;
13247  __Pyx_XDECREF(__pyx_t_1);
13248  __Pyx_AddTraceback("PyClical.sqrt", __pyx_clineno, __pyx_lineno, __pyx_filename);
13249  __pyx_r = NULL;
13250  __pyx_L0:;
13251  __Pyx_XGIVEREF(__pyx_r);
13252  __Pyx_RefNannyFinishContext();
13253  return __pyx_r;
13254  }
13255 
13256  /* "PyClical.pyx":1565
13257  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
13258  *
13259  * cpdef inline exp(obj): # <<<<<<<<<<<<<<
13260  * """
13261  * Exponential of multivector.
13262  */
13263 
13264  static PyObject *__pyx_pw_8PyClical_47exp(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
13265  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_exp(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
13266  PyObject *__pyx_r = NULL;
13267  __Pyx_RefNannyDeclarations
13268  PyObject *__pyx_t_1 = NULL;
13269  PyObject *__pyx_t_2 = NULL;
13270  PyObject *__pyx_t_3 = NULL;
13271  PyObject *__pyx_t_4 = NULL;
13272  PyObject *__pyx_t_5 = NULL;
13273  PyObject *__pyx_t_6 = NULL;
13274  PyObject *__pyx_t_7 = NULL;
13275  PyObject *__pyx_t_8 = NULL;
13276  int __pyx_lineno = 0;
13277  const char *__pyx_filename = NULL;
13278  int __pyx_clineno = 0;
13279  __Pyx_RefNannySetupContext("exp", 0);
13280 
13281  /* "PyClical.pyx":1574
13282  * {1,2}
13283  * """
13284  * try: # <<<<<<<<<<<<<<
13285  * return math.exp(obj)
13286  * except:
13287  */
13288  {
13289  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
13290  __Pyx_XGOTREF(__pyx_t_1);
13291  __Pyx_XGOTREF(__pyx_t_2);
13292  __Pyx_XGOTREF(__pyx_t_3);
13293  /*try:*/ {
13294 
13295  /* "PyClical.pyx":1575
13296  * """
13297  * try:
13298  * return math.exp(obj) # <<<<<<<<<<<<<<
13299  * except:
13300  * return clifford().wrap( glucat.exp(toClifford(obj)) )
13301  */
13302  __Pyx_XDECREF(__pyx_r);
13303  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13304  __Pyx_GOTREF(__pyx_t_5);
13305  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13306  __Pyx_GOTREF(__pyx_t_6);
13307  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13308  __pyx_t_5 = NULL;
13309  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
13310  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
13311  if (likely(__pyx_t_5)) {
13312  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
13313  __Pyx_INCREF(__pyx_t_5);
13314  __Pyx_INCREF(function);
13315  __Pyx_DECREF_SET(__pyx_t_6, function);
13316  }
13317  }
13318  if (!__pyx_t_5) {
13319  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13320  __Pyx_GOTREF(__pyx_t_4);
13321  } else {
13322  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13323  __Pyx_GOTREF(__pyx_t_7);
13324  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
13325  __Pyx_INCREF(__pyx_v_obj);
13326  __Pyx_GIVEREF(__pyx_v_obj);
13327  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_obj);
13328  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13329  __Pyx_GOTREF(__pyx_t_4);
13330  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
13331  }
13332  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13333  __pyx_r = __pyx_t_4;
13334  __pyx_t_4 = 0;
13335  goto __pyx_L7_try_return;
13336 
13337  /* "PyClical.pyx":1574
13338  * {1,2}
13339  * """
13340  * try: # <<<<<<<<<<<<<<
13341  * return math.exp(obj)
13342  * except:
13343  */
13344  }
13345  __pyx_L3_error:;
13346  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
13347  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
13348  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
13349  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
13350 
13351  /* "PyClical.pyx":1576
13352  * try:
13353  * return math.exp(obj)
13354  * except: # <<<<<<<<<<<<<<
13355  * return clifford().wrap( glucat.exp(toClifford(obj)) )
13356  *
13357  */
13358  /*except:*/ {
13359  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
13360  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1576; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
13361  __Pyx_GOTREF(__pyx_t_4);
13362  __Pyx_GOTREF(__pyx_t_6);
13363  __Pyx_GOTREF(__pyx_t_7);
13364 
13365  /* "PyClical.pyx":1577
13366  * return math.exp(obj)
13367  * except:
13368  * return clifford().wrap( glucat.exp(toClifford(obj)) ) # <<<<<<<<<<<<<<
13369  *
13370  * cpdef inline log(obj,i = None):
13371  */
13372  __Pyx_XDECREF(__pyx_r);
13373  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1577; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
13374  __Pyx_GOTREF(__pyx_t_5);
13375  __pyx_t_8 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_5), exp(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1577; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
13376  __Pyx_GOTREF(__pyx_t_8);
13377  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13378  __pyx_r = __pyx_t_8;
13379  __pyx_t_8 = 0;
13380  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
13381  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13382  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
13383  goto __pyx_L6_except_return;
13384  }
13385  __pyx_L5_except_error:;
13386 
13387  /* "PyClical.pyx":1574
13388  * {1,2}
13389  * """
13390  * try: # <<<<<<<<<<<<<<
13391  * return math.exp(obj)
13392  * except:
13393  */
13394  __Pyx_XGIVEREF(__pyx_t_1);
13395  __Pyx_XGIVEREF(__pyx_t_2);
13396  __Pyx_XGIVEREF(__pyx_t_3);
13397  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
13398  goto __pyx_L1_error;
13399  __pyx_L7_try_return:;
13400  __Pyx_XGIVEREF(__pyx_t_1);
13401  __Pyx_XGIVEREF(__pyx_t_2);
13402  __Pyx_XGIVEREF(__pyx_t_3);
13403  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
13404  goto __pyx_L0;
13405  __pyx_L6_except_return:;
13406  __Pyx_XGIVEREF(__pyx_t_1);
13407  __Pyx_XGIVEREF(__pyx_t_2);
13408  __Pyx_XGIVEREF(__pyx_t_3);
13409  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
13410  goto __pyx_L0;
13411  }
13412 
13413  /* "PyClical.pyx":1565
13414  * return clifford().wrap( glucat.sqrt(toClifford(obj)) )
13415  *
13416  * cpdef inline exp(obj): # <<<<<<<<<<<<<<
13417  * """
13418  * Exponential of multivector.
13419  */
13420 
13421  /* function exit code */
13422  __pyx_L1_error:;
13423  __Pyx_XDECREF(__pyx_t_4);
13424  __Pyx_XDECREF(__pyx_t_5);
13425  __Pyx_XDECREF(__pyx_t_6);
13426  __Pyx_XDECREF(__pyx_t_7);
13427  __Pyx_XDECREF(__pyx_t_8);
13428  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
13429  __pyx_r = 0;
13430  __pyx_L0:;
13431  __Pyx_XGIVEREF(__pyx_r);
13432  __Pyx_RefNannyFinishContext();
13433  return __pyx_r;
13434  }
13435 
13436  /* Python wrapper */
13437  static PyObject *__pyx_pw_8PyClical_47exp(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
13438  static char __pyx_doc_8PyClical_46exp[] = "\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 ";
13439  static PyObject *__pyx_pw_8PyClical_47exp(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
13440  PyObject *__pyx_r = 0;
13441  __Pyx_RefNannyDeclarations
13442  __Pyx_RefNannySetupContext("exp (wrapper)", 0);
13443  __pyx_r = __pyx_pf_8PyClical_46exp(__pyx_self, ((PyObject *)__pyx_v_obj));
13444 
13445  /* function exit code */
13446  __Pyx_RefNannyFinishContext();
13447  return __pyx_r;
13448  }
13449 
13450  static PyObject *__pyx_pf_8PyClical_46exp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
13451  PyObject *__pyx_r = NULL;
13452  __Pyx_RefNannyDeclarations
13453  PyObject *__pyx_t_1 = NULL;
13454  int __pyx_lineno = 0;
13455  const char *__pyx_filename = NULL;
13456  int __pyx_clineno = 0;
13457  __Pyx_RefNannySetupContext("exp", 0);
13458  __Pyx_XDECREF(__pyx_r);
13459  __pyx_t_1 = __pyx_f_8PyClical_exp(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13460  __Pyx_GOTREF(__pyx_t_1);
13461  __pyx_r = __pyx_t_1;
13462  __pyx_t_1 = 0;
13463  goto __pyx_L0;
13464 
13465  /* function exit code */
13466  __pyx_L1_error:;
13467  __Pyx_XDECREF(__pyx_t_1);
13468  __Pyx_AddTraceback("PyClical.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
13469  __pyx_r = NULL;
13470  __pyx_L0:;
13471  __Pyx_XGIVEREF(__pyx_r);
13472  __Pyx_RefNannyFinishContext();
13473  return __pyx_r;
13474  }
13475 
13476  /* "PyClical.pyx":1579
13477  * return clifford().wrap( glucat.exp(toClifford(obj)) )
13478  *
13479  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
13480  * """
13481  * Natural logarithm of multivector with optional complexifier.
13482  */
13483 
13484  static PyObject *__pyx_pw_8PyClical_49log(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13485  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) {
13486  PyObject *__pyx_v_i = ((PyObject *)Py_None);
13487  PyObject *__pyx_r = NULL;
13488  __Pyx_RefNannyDeclarations
13489  int __pyx_t_1;
13490  int __pyx_t_2;
13491  PyObject *__pyx_t_3 = NULL;
13492  Clifford __pyx_t_4;
13493  PyObject *__pyx_t_5 = NULL;
13494  PyObject *__pyx_t_6 = NULL;
13495  PyObject *__pyx_t_7 = NULL;
13496  PyObject *__pyx_t_8 = NULL;
13497  PyObject *__pyx_t_9 = NULL;
13498  PyObject *__pyx_t_10 = NULL;
13499  PyObject *__pyx_t_11 = NULL;
13500  int __pyx_lineno = 0;
13501  const char *__pyx_filename = NULL;
13502  int __pyx_clineno = 0;
13503  __Pyx_RefNannySetupContext("log", 0);
13504  if (__pyx_optional_args) {
13505  if (__pyx_optional_args->__pyx_n > 0) {
13506  __pyx_v_i = __pyx_optional_args->i;
13507  }
13508  }
13509 
13510  /* "PyClical.pyx":1594
13511  * RuntimeError: check_complex(val, i): i is not a valid complexifier for val
13512  * """
13513  * if not (i is None): # <<<<<<<<<<<<<<
13514  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
13515  * else:
13516  */
13517  __pyx_t_1 = (__pyx_v_i != Py_None);
13518  __pyx_t_2 = (__pyx_t_1 != 0);
13519  if (__pyx_t_2) {
13520 
13521  /* "PyClical.pyx":1595
13522  * """
13523  * if not (i is None):
13524  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
13525  * else:
13526  * try:
13527  */
13528  __Pyx_XDECREF(__pyx_r);
13529  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13530  __Pyx_GOTREF(__pyx_t_3);
13531  try {
13532  __pyx_t_4 = log(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
13533  } catch(...) {
13534  __Pyx_CppExn2PyErr();
13535  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13536  }
13537  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13538  __Pyx_GOTREF(__pyx_t_5);
13539  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13540  __pyx_r = __pyx_t_5;
13541  __pyx_t_5 = 0;
13542  goto __pyx_L0;
13543 
13544  /* "PyClical.pyx":1594
13545  * RuntimeError: check_complex(val, i): i is not a valid complexifier for val
13546  * """
13547  * if not (i is None): # <<<<<<<<<<<<<<
13548  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
13549  * else:
13550  */
13551  }
13552 
13553  /* "PyClical.pyx":1597
13554  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
13555  * else:
13556  * try: # <<<<<<<<<<<<<<
13557  * return math.log(obj)
13558  * except:
13559  */
13560  /*else*/ {
13561  {
13562  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
13563  __Pyx_XGOTREF(__pyx_t_6);
13564  __Pyx_XGOTREF(__pyx_t_7);
13565  __Pyx_XGOTREF(__pyx_t_8);
13566  /*try:*/ {
13567 
13568  /* "PyClical.pyx":1598
13569  * else:
13570  * try:
13571  * return math.log(obj) # <<<<<<<<<<<<<<
13572  * except:
13573  * return clifford().wrap( glucat.log(toClifford(obj)) )
13574  */
13575  __Pyx_XDECREF(__pyx_r);
13576  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13577  __Pyx_GOTREF(__pyx_t_3);
13578  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13579  __Pyx_GOTREF(__pyx_t_9);
13580  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13581  __pyx_t_3 = NULL;
13582  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
13583  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
13584  if (likely(__pyx_t_3)) {
13585  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
13586  __Pyx_INCREF(__pyx_t_3);
13587  __Pyx_INCREF(function);
13588  __Pyx_DECREF_SET(__pyx_t_9, function);
13589  }
13590  }
13591  if (!__pyx_t_3) {
13592  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13593  __Pyx_GOTREF(__pyx_t_5);
13594  } else {
13595  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13596  __Pyx_GOTREF(__pyx_t_10);
13597  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
13598  __Pyx_INCREF(__pyx_v_obj);
13599  __Pyx_GIVEREF(__pyx_v_obj);
13600  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
13601  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13602  __Pyx_GOTREF(__pyx_t_5);
13603  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13604  }
13605  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13606  __pyx_r = __pyx_t_5;
13607  __pyx_t_5 = 0;
13608  goto __pyx_L8_try_return;
13609 
13610  /* "PyClical.pyx":1597
13611  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
13612  * else:
13613  * try: # <<<<<<<<<<<<<<
13614  * return math.log(obj)
13615  * except:
13616  */
13617  }
13618  __pyx_L4_error:;
13619  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13620  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
13621  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
13622  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
13623 
13624  /* "PyClical.pyx":1599
13625  * try:
13626  * return math.log(obj)
13627  * except: # <<<<<<<<<<<<<<
13628  * return clifford().wrap( glucat.log(toClifford(obj)) )
13629  *
13630  */
13631  /*except:*/ {
13632  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
13633  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1599; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13634  __Pyx_GOTREF(__pyx_t_5);
13635  __Pyx_GOTREF(__pyx_t_9);
13636  __Pyx_GOTREF(__pyx_t_10);
13637 
13638  /* "PyClical.pyx":1600
13639  * return math.log(obj)
13640  * except:
13641  * return clifford().wrap( glucat.log(toClifford(obj)) ) # <<<<<<<<<<<<<<
13642  *
13643  * cpdef inline cos(obj,i = None):
13644  */
13645  __Pyx_XDECREF(__pyx_r);
13646  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13647  __Pyx_GOTREF(__pyx_t_3);
13648  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), log(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13649  __Pyx_GOTREF(__pyx_t_11);
13650  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13651  __pyx_r = __pyx_t_11;
13652  __pyx_t_11 = 0;
13653  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13654  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13655  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13656  goto __pyx_L7_except_return;
13657  }
13658  __pyx_L6_except_error:;
13659 
13660  /* "PyClical.pyx":1597
13661  * return clifford().wrap( glucat.log(toClifford(obj), toClifford(i)) )
13662  * else:
13663  * try: # <<<<<<<<<<<<<<
13664  * return math.log(obj)
13665  * except:
13666  */
13667  __Pyx_XGIVEREF(__pyx_t_6);
13668  __Pyx_XGIVEREF(__pyx_t_7);
13669  __Pyx_XGIVEREF(__pyx_t_8);
13670  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13671  goto __pyx_L1_error;
13672  __pyx_L8_try_return:;
13673  __Pyx_XGIVEREF(__pyx_t_6);
13674  __Pyx_XGIVEREF(__pyx_t_7);
13675  __Pyx_XGIVEREF(__pyx_t_8);
13676  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13677  goto __pyx_L0;
13678  __pyx_L7_except_return:;
13679  __Pyx_XGIVEREF(__pyx_t_6);
13680  __Pyx_XGIVEREF(__pyx_t_7);
13681  __Pyx_XGIVEREF(__pyx_t_8);
13682  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13683  goto __pyx_L0;
13684  }
13685  }
13686 
13687  /* "PyClical.pyx":1579
13688  * return clifford().wrap( glucat.exp(toClifford(obj)) )
13689  *
13690  * cpdef inline log(obj,i = None): # <<<<<<<<<<<<<<
13691  * """
13692  * Natural logarithm of multivector with optional complexifier.
13693  */
13694 
13695  /* function exit code */
13696  __pyx_L1_error:;
13697  __Pyx_XDECREF(__pyx_t_3);
13698  __Pyx_XDECREF(__pyx_t_5);
13699  __Pyx_XDECREF(__pyx_t_9);
13700  __Pyx_XDECREF(__pyx_t_10);
13701  __Pyx_XDECREF(__pyx_t_11);
13702  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
13703  __pyx_r = 0;
13704  __pyx_L0:;
13705  __Pyx_XGIVEREF(__pyx_r);
13706  __Pyx_RefNannyFinishContext();
13707  return __pyx_r;
13708  }
13709 
13710  /* Python wrapper */
13711  static PyObject *__pyx_pw_8PyClical_49log(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13712  static char __pyx_doc_8PyClical_48log[] = "\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 ";
13713  static PyObject *__pyx_pw_8PyClical_49log(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13714  PyObject *__pyx_v_obj = 0;
13715  PyObject *__pyx_v_i = 0;
13716  int __pyx_lineno = 0;
13717  const char *__pyx_filename = NULL;
13718  int __pyx_clineno = 0;
13719  PyObject *__pyx_r = 0;
13720  __Pyx_RefNannyDeclarations
13721  __Pyx_RefNannySetupContext("log (wrapper)", 0);
13722  {
13723  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
13724  PyObject* values[2] = {0,0};
13725  values[1] = ((PyObject *)Py_None);
13726  if (unlikely(__pyx_kwds)) {
13727  Py_ssize_t kw_args;
13728  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13729  switch (pos_args) {
13730  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13731  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13732  case 0: break;
13733  default: goto __pyx_L5_argtuple_error;
13734  }
13735  kw_args = PyDict_Size(__pyx_kwds);
13736  switch (pos_args) {
13737  case 0:
13738  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
13739  else goto __pyx_L5_argtuple_error;
13740  case 1:
13741  if (kw_args > 0) {
13742  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
13743  if (value) { values[1] = value; kw_args--; }
13744  }
13745  }
13746  if (unlikely(kw_args > 0)) {
13747  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13748  }
13749  } else {
13750  switch (PyTuple_GET_SIZE(__pyx_args)) {
13751  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13752  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13753  break;
13754  default: goto __pyx_L5_argtuple_error;
13755  }
13756  }
13757  __pyx_v_obj = values[0];
13758  __pyx_v_i = values[1];
13759  }
13760  goto __pyx_L4_argument_unpacking_done;
13761  __pyx_L5_argtuple_error:;
13762  __Pyx_RaiseArgtupleInvalid("log", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13763  __pyx_L3_error:;
13764  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
13765  __Pyx_RefNannyFinishContext();
13766  return NULL;
13767  __pyx_L4_argument_unpacking_done:;
13768  __pyx_r = __pyx_pf_8PyClical_48log(__pyx_self, __pyx_v_obj, __pyx_v_i);
13769 
13770  /* function exit code */
13771  __Pyx_RefNannyFinishContext();
13772  return __pyx_r;
13773  }
13774 
13775  static PyObject *__pyx_pf_8PyClical_48log(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
13776  PyObject *__pyx_r = NULL;
13777  __Pyx_RefNannyDeclarations
13778  PyObject *__pyx_t_1 = NULL;
13779  struct __pyx_opt_args_8PyClical_log __pyx_t_2;
13780  int __pyx_lineno = 0;
13781  const char *__pyx_filename = NULL;
13782  int __pyx_clineno = 0;
13783  __Pyx_RefNannySetupContext("log", 0);
13784  __Pyx_XDECREF(__pyx_r);
13785  __pyx_t_2.__pyx_n = 1;
13786  __pyx_t_2.i = __pyx_v_i;
13787  __pyx_t_1 = __pyx_f_8PyClical_log(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13788  __Pyx_GOTREF(__pyx_t_1);
13789  __pyx_r = __pyx_t_1;
13790  __pyx_t_1 = 0;
13791  goto __pyx_L0;
13792 
13793  /* function exit code */
13794  __pyx_L1_error:;
13795  __Pyx_XDECREF(__pyx_t_1);
13796  __Pyx_AddTraceback("PyClical.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
13797  __pyx_r = NULL;
13798  __pyx_L0:;
13799  __Pyx_XGIVEREF(__pyx_r);
13800  __Pyx_RefNannyFinishContext();
13801  return __pyx_r;
13802  }
13803 
13804  /* "PyClical.pyx":1602
13805  * return clifford().wrap( glucat.log(toClifford(obj)) )
13806  *
13807  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
13808  * """
13809  * Cosine of multivector with optional complexifier.
13810  */
13811 
13812  static PyObject *__pyx_pw_8PyClical_51cos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13813  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) {
13814  PyObject *__pyx_v_i = ((PyObject *)Py_None);
13815  PyObject *__pyx_r = NULL;
13816  __Pyx_RefNannyDeclarations
13817  int __pyx_t_1;
13818  int __pyx_t_2;
13819  PyObject *__pyx_t_3 = NULL;
13820  Clifford __pyx_t_4;
13821  PyObject *__pyx_t_5 = NULL;
13822  PyObject *__pyx_t_6 = NULL;
13823  PyObject *__pyx_t_7 = NULL;
13824  PyObject *__pyx_t_8 = NULL;
13825  PyObject *__pyx_t_9 = NULL;
13826  PyObject *__pyx_t_10 = NULL;
13827  PyObject *__pyx_t_11 = NULL;
13828  int __pyx_lineno = 0;
13829  const char *__pyx_filename = NULL;
13830  int __pyx_clineno = 0;
13831  __Pyx_RefNannySetupContext("cos", 0);
13832  if (__pyx_optional_args) {
13833  if (__pyx_optional_args->__pyx_n > 0) {
13834  __pyx_v_i = __pyx_optional_args->i;
13835  }
13836  }
13837 
13838  /* "PyClical.pyx":1611
13839  * {1,2}
13840  * """
13841  * if not (i is None): # <<<<<<<<<<<<<<
13842  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
13843  * else:
13844  */
13845  __pyx_t_1 = (__pyx_v_i != Py_None);
13846  __pyx_t_2 = (__pyx_t_1 != 0);
13847  if (__pyx_t_2) {
13848 
13849  /* "PyClical.pyx":1612
13850  * """
13851  * if not (i is None):
13852  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
13853  * else:
13854  * try:
13855  */
13856  __Pyx_XDECREF(__pyx_r);
13857  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13858  __Pyx_GOTREF(__pyx_t_3);
13859  try {
13860  __pyx_t_4 = cos(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
13861  } catch(...) {
13862  __Pyx_CppExn2PyErr();
13863  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13864  }
13865  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13866  __Pyx_GOTREF(__pyx_t_5);
13867  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13868  __pyx_r = __pyx_t_5;
13869  __pyx_t_5 = 0;
13870  goto __pyx_L0;
13871 
13872  /* "PyClical.pyx":1611
13873  * {1,2}
13874  * """
13875  * if not (i is None): # <<<<<<<<<<<<<<
13876  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
13877  * else:
13878  */
13879  }
13880 
13881  /* "PyClical.pyx":1614
13882  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
13883  * else:
13884  * try: # <<<<<<<<<<<<<<
13885  * return math.cos(obj)
13886  * except:
13887  */
13888  /*else*/ {
13889  {
13890  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
13891  __Pyx_XGOTREF(__pyx_t_6);
13892  __Pyx_XGOTREF(__pyx_t_7);
13893  __Pyx_XGOTREF(__pyx_t_8);
13894  /*try:*/ {
13895 
13896  /* "PyClical.pyx":1615
13897  * else:
13898  * try:
13899  * return math.cos(obj) # <<<<<<<<<<<<<<
13900  * except:
13901  * return clifford().wrap( glucat.cos(toClifford(obj)) )
13902  */
13903  __Pyx_XDECREF(__pyx_r);
13904  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13905  __Pyx_GOTREF(__pyx_t_3);
13906  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_cos); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13907  __Pyx_GOTREF(__pyx_t_9);
13908  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13909  __pyx_t_3 = NULL;
13910  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
13911  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
13912  if (likely(__pyx_t_3)) {
13913  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
13914  __Pyx_INCREF(__pyx_t_3);
13915  __Pyx_INCREF(function);
13916  __Pyx_DECREF_SET(__pyx_t_9, function);
13917  }
13918  }
13919  if (!__pyx_t_3) {
13920  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13921  __Pyx_GOTREF(__pyx_t_5);
13922  } else {
13923  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13924  __Pyx_GOTREF(__pyx_t_10);
13925  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
13926  __Pyx_INCREF(__pyx_v_obj);
13927  __Pyx_GIVEREF(__pyx_v_obj);
13928  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
13929  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1615; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
13930  __Pyx_GOTREF(__pyx_t_5);
13931  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13932  }
13933  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13934  __pyx_r = __pyx_t_5;
13935  __pyx_t_5 = 0;
13936  goto __pyx_L8_try_return;
13937 
13938  /* "PyClical.pyx":1614
13939  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
13940  * else:
13941  * try: # <<<<<<<<<<<<<<
13942  * return math.cos(obj)
13943  * except:
13944  */
13945  }
13946  __pyx_L4_error:;
13947  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13948  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
13949  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
13950  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
13951 
13952  /* "PyClical.pyx":1616
13953  * try:
13954  * return math.cos(obj)
13955  * except: # <<<<<<<<<<<<<<
13956  * return clifford().wrap( glucat.cos(toClifford(obj)) )
13957  *
13958  */
13959  /*except:*/ {
13960  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
13961  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13962  __Pyx_GOTREF(__pyx_t_5);
13963  __Pyx_GOTREF(__pyx_t_9);
13964  __Pyx_GOTREF(__pyx_t_10);
13965 
13966  /* "PyClical.pyx":1617
13967  * return math.cos(obj)
13968  * except:
13969  * return clifford().wrap( glucat.cos(toClifford(obj)) ) # <<<<<<<<<<<<<<
13970  *
13971  * cpdef inline acos(obj,i = None):
13972  */
13973  __Pyx_XDECREF(__pyx_r);
13974  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13975  __Pyx_GOTREF(__pyx_t_3);
13976  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), cos(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
13977  __Pyx_GOTREF(__pyx_t_11);
13978  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13979  __pyx_r = __pyx_t_11;
13980  __pyx_t_11 = 0;
13981  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13982  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13983  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13984  goto __pyx_L7_except_return;
13985  }
13986  __pyx_L6_except_error:;
13987 
13988  /* "PyClical.pyx":1614
13989  * return clifford().wrap( glucat.cos(toClifford(obj), toClifford(i)) )
13990  * else:
13991  * try: # <<<<<<<<<<<<<<
13992  * return math.cos(obj)
13993  * except:
13994  */
13995  __Pyx_XGIVEREF(__pyx_t_6);
13996  __Pyx_XGIVEREF(__pyx_t_7);
13997  __Pyx_XGIVEREF(__pyx_t_8);
13998  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
13999  goto __pyx_L1_error;
14000  __pyx_L8_try_return:;
14001  __Pyx_XGIVEREF(__pyx_t_6);
14002  __Pyx_XGIVEREF(__pyx_t_7);
14003  __Pyx_XGIVEREF(__pyx_t_8);
14004  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14005  goto __pyx_L0;
14006  __pyx_L7_except_return:;
14007  __Pyx_XGIVEREF(__pyx_t_6);
14008  __Pyx_XGIVEREF(__pyx_t_7);
14009  __Pyx_XGIVEREF(__pyx_t_8);
14010  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14011  goto __pyx_L0;
14012  }
14013  }
14014 
14015  /* "PyClical.pyx":1602
14016  * return clifford().wrap( glucat.log(toClifford(obj)) )
14017  *
14018  * cpdef inline cos(obj,i = None): # <<<<<<<<<<<<<<
14019  * """
14020  * Cosine of multivector with optional complexifier.
14021  */
14022 
14023  /* function exit code */
14024  __pyx_L1_error:;
14025  __Pyx_XDECREF(__pyx_t_3);
14026  __Pyx_XDECREF(__pyx_t_5);
14027  __Pyx_XDECREF(__pyx_t_9);
14028  __Pyx_XDECREF(__pyx_t_10);
14029  __Pyx_XDECREF(__pyx_t_11);
14030  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14031  __pyx_r = 0;
14032  __pyx_L0:;
14033  __Pyx_XGIVEREF(__pyx_r);
14034  __Pyx_RefNannyFinishContext();
14035  return __pyx_r;
14036  }
14037 
14038  /* Python wrapper */
14039  static PyObject *__pyx_pw_8PyClical_51cos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14040  static char __pyx_doc_8PyClical_50cos[] = "\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 ";
14041  static PyObject *__pyx_pw_8PyClical_51cos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
14042  PyObject *__pyx_v_obj = 0;
14043  PyObject *__pyx_v_i = 0;
14044  int __pyx_lineno = 0;
14045  const char *__pyx_filename = NULL;
14046  int __pyx_clineno = 0;
14047  PyObject *__pyx_r = 0;
14048  __Pyx_RefNannyDeclarations
14049  __Pyx_RefNannySetupContext("cos (wrapper)", 0);
14050  {
14051  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
14052  PyObject* values[2] = {0,0};
14053  values[1] = ((PyObject *)Py_None);
14054  if (unlikely(__pyx_kwds)) {
14055  Py_ssize_t kw_args;
14056  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14057  switch (pos_args) {
14058  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14059  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14060  case 0: break;
14061  default: goto __pyx_L5_argtuple_error;
14062  }
14063  kw_args = PyDict_Size(__pyx_kwds);
14064  switch (pos_args) {
14065  case 0:
14066  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
14067  else goto __pyx_L5_argtuple_error;
14068  case 1:
14069  if (kw_args > 0) {
14070  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
14071  if (value) { values[1] = value; kw_args--; }
14072  }
14073  }
14074  if (unlikely(kw_args > 0)) {
14075  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cos") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14076  }
14077  } else {
14078  switch (PyTuple_GET_SIZE(__pyx_args)) {
14079  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14080  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14081  break;
14082  default: goto __pyx_L5_argtuple_error;
14083  }
14084  }
14085  __pyx_v_obj = values[0];
14086  __pyx_v_i = values[1];
14087  }
14088  goto __pyx_L4_argument_unpacking_done;
14089  __pyx_L5_argtuple_error:;
14090  __Pyx_RaiseArgtupleInvalid("cos", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14091  __pyx_L3_error:;
14092  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14093  __Pyx_RefNannyFinishContext();
14094  return NULL;
14095  __pyx_L4_argument_unpacking_done:;
14096  __pyx_r = __pyx_pf_8PyClical_50cos(__pyx_self, __pyx_v_obj, __pyx_v_i);
14097 
14098  /* function exit code */
14099  __Pyx_RefNannyFinishContext();
14100  return __pyx_r;
14101  }
14102 
14103  static PyObject *__pyx_pf_8PyClical_50cos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
14104  PyObject *__pyx_r = NULL;
14105  __Pyx_RefNannyDeclarations
14106  PyObject *__pyx_t_1 = NULL;
14107  struct __pyx_opt_args_8PyClical_cos __pyx_t_2;
14108  int __pyx_lineno = 0;
14109  const char *__pyx_filename = NULL;
14110  int __pyx_clineno = 0;
14111  __Pyx_RefNannySetupContext("cos", 0);
14112  __Pyx_XDECREF(__pyx_r);
14113  __pyx_t_2.__pyx_n = 1;
14114  __pyx_t_2.i = __pyx_v_i;
14115  __pyx_t_1 = __pyx_f_8PyClical_cos(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14116  __Pyx_GOTREF(__pyx_t_1);
14117  __pyx_r = __pyx_t_1;
14118  __pyx_t_1 = 0;
14119  goto __pyx_L0;
14120 
14121  /* function exit code */
14122  __pyx_L1_error:;
14123  __Pyx_XDECREF(__pyx_t_1);
14124  __Pyx_AddTraceback("PyClical.cos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14125  __pyx_r = NULL;
14126  __pyx_L0:;
14127  __Pyx_XGIVEREF(__pyx_r);
14128  __Pyx_RefNannyFinishContext();
14129  return __pyx_r;
14130  }
14131 
14132  /* "PyClical.pyx":1619
14133  * return clifford().wrap( glucat.cos(toClifford(obj)) )
14134  *
14135  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
14136  * """
14137  * Inverse cosine of multivector with optional complexifier.
14138  */
14139 
14140  static PyObject *__pyx_pw_8PyClical_53acos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14141  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) {
14142  PyObject *__pyx_v_i = ((PyObject *)Py_None);
14143  PyObject *__pyx_r = NULL;
14144  __Pyx_RefNannyDeclarations
14145  int __pyx_t_1;
14146  int __pyx_t_2;
14147  PyObject *__pyx_t_3 = NULL;
14148  Clifford __pyx_t_4;
14149  PyObject *__pyx_t_5 = NULL;
14150  PyObject *__pyx_t_6 = NULL;
14151  PyObject *__pyx_t_7 = NULL;
14152  PyObject *__pyx_t_8 = NULL;
14153  PyObject *__pyx_t_9 = NULL;
14154  PyObject *__pyx_t_10 = NULL;
14155  PyObject *__pyx_t_11 = NULL;
14156  int __pyx_lineno = 0;
14157  const char *__pyx_filename = NULL;
14158  int __pyx_clineno = 0;
14159  __Pyx_RefNannySetupContext("acos", 0);
14160  if (__pyx_optional_args) {
14161  if (__pyx_optional_args->__pyx_n > 0) {
14162  __pyx_v_i = __pyx_optional_args->i;
14163  }
14164  }
14165 
14166  /* "PyClical.pyx":1632
14167  * {1,2}
14168  * """
14169  * if not (i is None): # <<<<<<<<<<<<<<
14170  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
14171  * else:
14172  */
14173  __pyx_t_1 = (__pyx_v_i != Py_None);
14174  __pyx_t_2 = (__pyx_t_1 != 0);
14175  if (__pyx_t_2) {
14176 
14177  /* "PyClical.pyx":1633
14178  * """
14179  * if not (i is None):
14180  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
14181  * else:
14182  * try:
14183  */
14184  __Pyx_XDECREF(__pyx_r);
14185  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14186  __Pyx_GOTREF(__pyx_t_3);
14187  try {
14188  __pyx_t_4 = acos(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
14189  } catch(...) {
14190  __Pyx_CppExn2PyErr();
14191  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14192  }
14193  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14194  __Pyx_GOTREF(__pyx_t_5);
14195  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14196  __pyx_r = __pyx_t_5;
14197  __pyx_t_5 = 0;
14198  goto __pyx_L0;
14199 
14200  /* "PyClical.pyx":1632
14201  * {1,2}
14202  * """
14203  * if not (i is None): # <<<<<<<<<<<<<<
14204  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
14205  * else:
14206  */
14207  }
14208 
14209  /* "PyClical.pyx":1635
14210  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
14211  * else:
14212  * try: # <<<<<<<<<<<<<<
14213  * return math.acos(obj)
14214  * except:
14215  */
14216  /*else*/ {
14217  {
14218  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
14219  __Pyx_XGOTREF(__pyx_t_6);
14220  __Pyx_XGOTREF(__pyx_t_7);
14221  __Pyx_XGOTREF(__pyx_t_8);
14222  /*try:*/ {
14223 
14224  /* "PyClical.pyx":1636
14225  * else:
14226  * try:
14227  * return math.acos(obj) # <<<<<<<<<<<<<<
14228  * except:
14229  * return clifford().wrap( glucat.acos(toClifford(obj)) )
14230  */
14231  __Pyx_XDECREF(__pyx_r);
14232  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14233  __Pyx_GOTREF(__pyx_t_3);
14234  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acos); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14235  __Pyx_GOTREF(__pyx_t_9);
14236  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14237  __pyx_t_3 = NULL;
14238  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
14239  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
14240  if (likely(__pyx_t_3)) {
14241  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
14242  __Pyx_INCREF(__pyx_t_3);
14243  __Pyx_INCREF(function);
14244  __Pyx_DECREF_SET(__pyx_t_9, function);
14245  }
14246  }
14247  if (!__pyx_t_3) {
14248  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14249  __Pyx_GOTREF(__pyx_t_5);
14250  } else {
14251  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14252  __Pyx_GOTREF(__pyx_t_10);
14253  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
14254  __Pyx_INCREF(__pyx_v_obj);
14255  __Pyx_GIVEREF(__pyx_v_obj);
14256  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
14257  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14258  __Pyx_GOTREF(__pyx_t_5);
14259  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14260  }
14261  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
14262  __pyx_r = __pyx_t_5;
14263  __pyx_t_5 = 0;
14264  goto __pyx_L8_try_return;
14265 
14266  /* "PyClical.pyx":1635
14267  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
14268  * else:
14269  * try: # <<<<<<<<<<<<<<
14270  * return math.acos(obj)
14271  * except:
14272  */
14273  }
14274  __pyx_L4_error:;
14275  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
14276  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
14277  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
14278  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
14279 
14280  /* "PyClical.pyx":1637
14281  * try:
14282  * return math.acos(obj)
14283  * except: # <<<<<<<<<<<<<<
14284  * return clifford().wrap( glucat.acos(toClifford(obj)) )
14285  *
14286  */
14287  /*except:*/ {
14288  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14289  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1637; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
14290  __Pyx_GOTREF(__pyx_t_5);
14291  __Pyx_GOTREF(__pyx_t_9);
14292  __Pyx_GOTREF(__pyx_t_10);
14293 
14294  /* "PyClical.pyx":1638
14295  * return math.acos(obj)
14296  * except:
14297  * return clifford().wrap( glucat.acos(toClifford(obj)) ) # <<<<<<<<<<<<<<
14298  *
14299  * cpdef inline cosh(obj):
14300  */
14301  __Pyx_XDECREF(__pyx_r);
14302  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1638; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
14303  __Pyx_GOTREF(__pyx_t_3);
14304  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), acos(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1638; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
14305  __Pyx_GOTREF(__pyx_t_11);
14306  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14307  __pyx_r = __pyx_t_11;
14308  __pyx_t_11 = 0;
14309  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14310  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
14311  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14312  goto __pyx_L7_except_return;
14313  }
14314  __pyx_L6_except_error:;
14315 
14316  /* "PyClical.pyx":1635
14317  * return clifford().wrap( glucat.acos(toClifford(obj), toClifford(i)) )
14318  * else:
14319  * try: # <<<<<<<<<<<<<<
14320  * return math.acos(obj)
14321  * except:
14322  */
14323  __Pyx_XGIVEREF(__pyx_t_6);
14324  __Pyx_XGIVEREF(__pyx_t_7);
14325  __Pyx_XGIVEREF(__pyx_t_8);
14326  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14327  goto __pyx_L1_error;
14328  __pyx_L8_try_return:;
14329  __Pyx_XGIVEREF(__pyx_t_6);
14330  __Pyx_XGIVEREF(__pyx_t_7);
14331  __Pyx_XGIVEREF(__pyx_t_8);
14332  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14333  goto __pyx_L0;
14334  __pyx_L7_except_return:;
14335  __Pyx_XGIVEREF(__pyx_t_6);
14336  __Pyx_XGIVEREF(__pyx_t_7);
14337  __Pyx_XGIVEREF(__pyx_t_8);
14338  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14339  goto __pyx_L0;
14340  }
14341  }
14342 
14343  /* "PyClical.pyx":1619
14344  * return clifford().wrap( glucat.cos(toClifford(obj)) )
14345  *
14346  * cpdef inline acos(obj,i = None): # <<<<<<<<<<<<<<
14347  * """
14348  * Inverse cosine of multivector with optional complexifier.
14349  */
14350 
14351  /* function exit code */
14352  __pyx_L1_error:;
14353  __Pyx_XDECREF(__pyx_t_3);
14354  __Pyx_XDECREF(__pyx_t_5);
14355  __Pyx_XDECREF(__pyx_t_9);
14356  __Pyx_XDECREF(__pyx_t_10);
14357  __Pyx_XDECREF(__pyx_t_11);
14358  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14359  __pyx_r = 0;
14360  __pyx_L0:;
14361  __Pyx_XGIVEREF(__pyx_r);
14362  __Pyx_RefNannyFinishContext();
14363  return __pyx_r;
14364  }
14365 
14366  /* Python wrapper */
14367  static PyObject *__pyx_pw_8PyClical_53acos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14368  static char __pyx_doc_8PyClical_52acos[] = "\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 ";
14369  static PyObject *__pyx_pw_8PyClical_53acos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
14370  PyObject *__pyx_v_obj = 0;
14371  PyObject *__pyx_v_i = 0;
14372  int __pyx_lineno = 0;
14373  const char *__pyx_filename = NULL;
14374  int __pyx_clineno = 0;
14375  PyObject *__pyx_r = 0;
14376  __Pyx_RefNannyDeclarations
14377  __Pyx_RefNannySetupContext("acos (wrapper)", 0);
14378  {
14379  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
14380  PyObject* values[2] = {0,0};
14381  values[1] = ((PyObject *)Py_None);
14382  if (unlikely(__pyx_kwds)) {
14383  Py_ssize_t kw_args;
14384  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14385  switch (pos_args) {
14386  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14387  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14388  case 0: break;
14389  default: goto __pyx_L5_argtuple_error;
14390  }
14391  kw_args = PyDict_Size(__pyx_kwds);
14392  switch (pos_args) {
14393  case 0:
14394  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
14395  else goto __pyx_L5_argtuple_error;
14396  case 1:
14397  if (kw_args > 0) {
14398  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
14399  if (value) { values[1] = value; kw_args--; }
14400  }
14401  }
14402  if (unlikely(kw_args > 0)) {
14403  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "acos") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14404  }
14405  } else {
14406  switch (PyTuple_GET_SIZE(__pyx_args)) {
14407  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14408  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14409  break;
14410  default: goto __pyx_L5_argtuple_error;
14411  }
14412  }
14413  __pyx_v_obj = values[0];
14414  __pyx_v_i = values[1];
14415  }
14416  goto __pyx_L4_argument_unpacking_done;
14417  __pyx_L5_argtuple_error:;
14418  __Pyx_RaiseArgtupleInvalid("acos", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14419  __pyx_L3_error:;
14420  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14421  __Pyx_RefNannyFinishContext();
14422  return NULL;
14423  __pyx_L4_argument_unpacking_done:;
14424  __pyx_r = __pyx_pf_8PyClical_52acos(__pyx_self, __pyx_v_obj, __pyx_v_i);
14425 
14426  /* function exit code */
14427  __Pyx_RefNannyFinishContext();
14428  return __pyx_r;
14429  }
14430 
14431  static PyObject *__pyx_pf_8PyClical_52acos(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
14432  PyObject *__pyx_r = NULL;
14433  __Pyx_RefNannyDeclarations
14434  PyObject *__pyx_t_1 = NULL;
14435  struct __pyx_opt_args_8PyClical_acos __pyx_t_2;
14436  int __pyx_lineno = 0;
14437  const char *__pyx_filename = NULL;
14438  int __pyx_clineno = 0;
14439  __Pyx_RefNannySetupContext("acos", 0);
14440  __Pyx_XDECREF(__pyx_r);
14441  __pyx_t_2.__pyx_n = 1;
14442  __pyx_t_2.i = __pyx_v_i;
14443  __pyx_t_1 = __pyx_f_8PyClical_acos(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14444  __Pyx_GOTREF(__pyx_t_1);
14445  __pyx_r = __pyx_t_1;
14446  __pyx_t_1 = 0;
14447  goto __pyx_L0;
14448 
14449  /* function exit code */
14450  __pyx_L1_error:;
14451  __Pyx_XDECREF(__pyx_t_1);
14452  __Pyx_AddTraceback("PyClical.acos", __pyx_clineno, __pyx_lineno, __pyx_filename);
14453  __pyx_r = NULL;
14454  __pyx_L0:;
14455  __Pyx_XGIVEREF(__pyx_r);
14456  __Pyx_RefNannyFinishContext();
14457  return __pyx_r;
14458  }
14459 
14460  /* "PyClical.pyx":1640
14461  * return clifford().wrap( glucat.acos(toClifford(obj)) )
14462  *
14463  * cpdef inline cosh(obj): # <<<<<<<<<<<<<<
14464  * """
14465  * Hyperbolic cosine of multivector.
14466  */
14467 
14468  static PyObject *__pyx_pw_8PyClical_55cosh(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
14469  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cosh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
14470  PyObject *__pyx_r = NULL;
14471  __Pyx_RefNannyDeclarations
14472  PyObject *__pyx_t_1 = NULL;
14473  PyObject *__pyx_t_2 = NULL;
14474  PyObject *__pyx_t_3 = NULL;
14475  PyObject *__pyx_t_4 = NULL;
14476  PyObject *__pyx_t_5 = NULL;
14477  PyObject *__pyx_t_6 = NULL;
14478  PyObject *__pyx_t_7 = NULL;
14479  PyObject *__pyx_t_8 = NULL;
14480  int __pyx_lineno = 0;
14481  const char *__pyx_filename = NULL;
14482  int __pyx_clineno = 0;
14483  __Pyx_RefNannySetupContext("cosh", 0);
14484 
14485  /* "PyClical.pyx":1651
14486  * {1,2}
14487  * """
14488  * try: # <<<<<<<<<<<<<<
14489  * return math.cosh(obj)
14490  * except:
14491  */
14492  {
14493  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
14494  __Pyx_XGOTREF(__pyx_t_1);
14495  __Pyx_XGOTREF(__pyx_t_2);
14496  __Pyx_XGOTREF(__pyx_t_3);
14497  /*try:*/ {
14498 
14499  /* "PyClical.pyx":1652
14500  * """
14501  * try:
14502  * return math.cosh(obj) # <<<<<<<<<<<<<<
14503  * except:
14504  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
14505  */
14506  __Pyx_XDECREF(__pyx_r);
14507  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14508  __Pyx_GOTREF(__pyx_t_5);
14509  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_cosh); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14510  __Pyx_GOTREF(__pyx_t_6);
14511  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14512  __pyx_t_5 = NULL;
14513  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
14514  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
14515  if (likely(__pyx_t_5)) {
14516  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
14517  __Pyx_INCREF(__pyx_t_5);
14518  __Pyx_INCREF(function);
14519  __Pyx_DECREF_SET(__pyx_t_6, function);
14520  }
14521  }
14522  if (!__pyx_t_5) {
14523  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14524  __Pyx_GOTREF(__pyx_t_4);
14525  } else {
14526  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14527  __Pyx_GOTREF(__pyx_t_7);
14528  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
14529  __Pyx_INCREF(__pyx_v_obj);
14530  __Pyx_GIVEREF(__pyx_v_obj);
14531  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_obj);
14532  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14533  __Pyx_GOTREF(__pyx_t_4);
14534  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14535  }
14536  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14537  __pyx_r = __pyx_t_4;
14538  __pyx_t_4 = 0;
14539  goto __pyx_L7_try_return;
14540 
14541  /* "PyClical.pyx":1651
14542  * {1,2}
14543  * """
14544  * try: # <<<<<<<<<<<<<<
14545  * return math.cosh(obj)
14546  * except:
14547  */
14548  }
14549  __pyx_L3_error:;
14550  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
14551  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
14552  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
14553  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
14554 
14555  /* "PyClical.pyx":1653
14556  * try:
14557  * return math.cosh(obj)
14558  * except: # <<<<<<<<<<<<<<
14559  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
14560  *
14561  */
14562  /*except:*/ {
14563  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
14564  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
14565  __Pyx_GOTREF(__pyx_t_4);
14566  __Pyx_GOTREF(__pyx_t_6);
14567  __Pyx_GOTREF(__pyx_t_7);
14568 
14569  /* "PyClical.pyx":1654
14570  * return math.cosh(obj)
14571  * except:
14572  * return clifford().wrap( glucat.cosh(toClifford(obj)) ) # <<<<<<<<<<<<<<
14573  *
14574  * cpdef inline acosh(obj,i = None):
14575  */
14576  __Pyx_XDECREF(__pyx_r);
14577  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1654; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
14578  __Pyx_GOTREF(__pyx_t_5);
14579  __pyx_t_8 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_5), cosh(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1654; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
14580  __Pyx_GOTREF(__pyx_t_8);
14581  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14582  __pyx_r = __pyx_t_8;
14583  __pyx_t_8 = 0;
14584  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14585  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14586  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14587  goto __pyx_L6_except_return;
14588  }
14589  __pyx_L5_except_error:;
14590 
14591  /* "PyClical.pyx":1651
14592  * {1,2}
14593  * """
14594  * try: # <<<<<<<<<<<<<<
14595  * return math.cosh(obj)
14596  * except:
14597  */
14598  __Pyx_XGIVEREF(__pyx_t_1);
14599  __Pyx_XGIVEREF(__pyx_t_2);
14600  __Pyx_XGIVEREF(__pyx_t_3);
14601  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
14602  goto __pyx_L1_error;
14603  __pyx_L7_try_return:;
14604  __Pyx_XGIVEREF(__pyx_t_1);
14605  __Pyx_XGIVEREF(__pyx_t_2);
14606  __Pyx_XGIVEREF(__pyx_t_3);
14607  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
14608  goto __pyx_L0;
14609  __pyx_L6_except_return:;
14610  __Pyx_XGIVEREF(__pyx_t_1);
14611  __Pyx_XGIVEREF(__pyx_t_2);
14612  __Pyx_XGIVEREF(__pyx_t_3);
14613  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
14614  goto __pyx_L0;
14615  }
14616 
14617  /* "PyClical.pyx":1640
14618  * return clifford().wrap( glucat.acos(toClifford(obj)) )
14619  *
14620  * cpdef inline cosh(obj): # <<<<<<<<<<<<<<
14621  * """
14622  * Hyperbolic cosine of multivector.
14623  */
14624 
14625  /* function exit code */
14626  __pyx_L1_error:;
14627  __Pyx_XDECREF(__pyx_t_4);
14628  __Pyx_XDECREF(__pyx_t_5);
14629  __Pyx_XDECREF(__pyx_t_6);
14630  __Pyx_XDECREF(__pyx_t_7);
14631  __Pyx_XDECREF(__pyx_t_8);
14632  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
14633  __pyx_r = 0;
14634  __pyx_L0:;
14635  __Pyx_XGIVEREF(__pyx_r);
14636  __Pyx_RefNannyFinishContext();
14637  return __pyx_r;
14638  }
14639 
14640  /* Python wrapper */
14641  static PyObject *__pyx_pw_8PyClical_55cosh(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
14642  static char __pyx_doc_8PyClical_54cosh[] = "\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 ";
14643  static PyObject *__pyx_pw_8PyClical_55cosh(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
14644  PyObject *__pyx_r = 0;
14645  __Pyx_RefNannyDeclarations
14646  __Pyx_RefNannySetupContext("cosh (wrapper)", 0);
14647  __pyx_r = __pyx_pf_8PyClical_54cosh(__pyx_self, ((PyObject *)__pyx_v_obj));
14648 
14649  /* function exit code */
14650  __Pyx_RefNannyFinishContext();
14651  return __pyx_r;
14652  }
14653 
14654  static PyObject *__pyx_pf_8PyClical_54cosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
14655  PyObject *__pyx_r = NULL;
14656  __Pyx_RefNannyDeclarations
14657  PyObject *__pyx_t_1 = NULL;
14658  int __pyx_lineno = 0;
14659  const char *__pyx_filename = NULL;
14660  int __pyx_clineno = 0;
14661  __Pyx_RefNannySetupContext("cosh", 0);
14662  __Pyx_XDECREF(__pyx_r);
14663  __pyx_t_1 = __pyx_f_8PyClical_cosh(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14664  __Pyx_GOTREF(__pyx_t_1);
14665  __pyx_r = __pyx_t_1;
14666  __pyx_t_1 = 0;
14667  goto __pyx_L0;
14668 
14669  /* function exit code */
14670  __pyx_L1_error:;
14671  __Pyx_XDECREF(__pyx_t_1);
14672  __Pyx_AddTraceback("PyClical.cosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
14673  __pyx_r = NULL;
14674  __pyx_L0:;
14675  __Pyx_XGIVEREF(__pyx_r);
14676  __Pyx_RefNannyFinishContext();
14677  return __pyx_r;
14678  }
14679 
14680  /* "PyClical.pyx":1656
14681  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
14682  *
14683  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
14684  * """
14685  * Inverse hyperbolic cosine of multivector with optional complexifier.
14686  */
14687 
14688  static PyObject *__pyx_pw_8PyClical_57acosh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14689  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) {
14690  PyObject *__pyx_v_i = ((PyObject *)Py_None);
14691  PyObject *__pyx_r = NULL;
14692  __Pyx_RefNannyDeclarations
14693  int __pyx_t_1;
14694  int __pyx_t_2;
14695  PyObject *__pyx_t_3 = NULL;
14696  Clifford __pyx_t_4;
14697  PyObject *__pyx_t_5 = NULL;
14698  PyObject *__pyx_t_6 = NULL;
14699  PyObject *__pyx_t_7 = NULL;
14700  PyObject *__pyx_t_8 = NULL;
14701  PyObject *__pyx_t_9 = NULL;
14702  PyObject *__pyx_t_10 = NULL;
14703  PyObject *__pyx_t_11 = NULL;
14704  int __pyx_lineno = 0;
14705  const char *__pyx_filename = NULL;
14706  int __pyx_clineno = 0;
14707  __Pyx_RefNannySetupContext("acosh", 0);
14708  if (__pyx_optional_args) {
14709  if (__pyx_optional_args->__pyx_n > 0) {
14710  __pyx_v_i = __pyx_optional_args->i;
14711  }
14712  }
14713 
14714  /* "PyClical.pyx":1671
14715  * {1,2}
14716  * """
14717  * if not (i is None): # <<<<<<<<<<<<<<
14718  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
14719  * else:
14720  */
14721  __pyx_t_1 = (__pyx_v_i != Py_None);
14722  __pyx_t_2 = (__pyx_t_1 != 0);
14723  if (__pyx_t_2) {
14724 
14725  /* "PyClical.pyx":1672
14726  * """
14727  * if not (i is None):
14728  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
14729  * else:
14730  * try:
14731  */
14732  __Pyx_XDECREF(__pyx_r);
14733  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14734  __Pyx_GOTREF(__pyx_t_3);
14735  try {
14736  __pyx_t_4 = acosh(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
14737  } catch(...) {
14738  __Pyx_CppExn2PyErr();
14739  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14740  }
14741  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14742  __Pyx_GOTREF(__pyx_t_5);
14743  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14744  __pyx_r = __pyx_t_5;
14745  __pyx_t_5 = 0;
14746  goto __pyx_L0;
14747 
14748  /* "PyClical.pyx":1671
14749  * {1,2}
14750  * """
14751  * if not (i is None): # <<<<<<<<<<<<<<
14752  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
14753  * else:
14754  */
14755  }
14756 
14757  /* "PyClical.pyx":1674
14758  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
14759  * else:
14760  * try: # <<<<<<<<<<<<<<
14761  * return math.acosh(obj)
14762  * except:
14763  */
14764  /*else*/ {
14765  {
14766  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
14767  __Pyx_XGOTREF(__pyx_t_6);
14768  __Pyx_XGOTREF(__pyx_t_7);
14769  __Pyx_XGOTREF(__pyx_t_8);
14770  /*try:*/ {
14771 
14772  /* "PyClical.pyx":1675
14773  * else:
14774  * try:
14775  * return math.acosh(obj) # <<<<<<<<<<<<<<
14776  * except:
14777  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
14778  */
14779  __Pyx_XDECREF(__pyx_r);
14780  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14781  __Pyx_GOTREF(__pyx_t_3);
14782  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acosh); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14783  __Pyx_GOTREF(__pyx_t_9);
14784  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14785  __pyx_t_3 = NULL;
14786  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
14787  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
14788  if (likely(__pyx_t_3)) {
14789  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
14790  __Pyx_INCREF(__pyx_t_3);
14791  __Pyx_INCREF(function);
14792  __Pyx_DECREF_SET(__pyx_t_9, function);
14793  }
14794  }
14795  if (!__pyx_t_3) {
14796  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14797  __Pyx_GOTREF(__pyx_t_5);
14798  } else {
14799  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14800  __Pyx_GOTREF(__pyx_t_10);
14801  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
14802  __Pyx_INCREF(__pyx_v_obj);
14803  __Pyx_GIVEREF(__pyx_v_obj);
14804  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
14805  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
14806  __Pyx_GOTREF(__pyx_t_5);
14807  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14808  }
14809  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
14810  __pyx_r = __pyx_t_5;
14811  __pyx_t_5 = 0;
14812  goto __pyx_L8_try_return;
14813 
14814  /* "PyClical.pyx":1674
14815  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
14816  * else:
14817  * try: # <<<<<<<<<<<<<<
14818  * return math.acosh(obj)
14819  * except:
14820  */
14821  }
14822  __pyx_L4_error:;
14823  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
14824  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
14825  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
14826  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
14827 
14828  /* "PyClical.pyx":1676
14829  * try:
14830  * return math.acosh(obj)
14831  * except: # <<<<<<<<<<<<<<
14832  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
14833  *
14834  */
14835  /*except:*/ {
14836  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
14837  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
14838  __Pyx_GOTREF(__pyx_t_5);
14839  __Pyx_GOTREF(__pyx_t_9);
14840  __Pyx_GOTREF(__pyx_t_10);
14841 
14842  /* "PyClical.pyx":1677
14843  * return math.acosh(obj)
14844  * except:
14845  * return clifford().wrap( glucat.acosh(toClifford(obj)) ) # <<<<<<<<<<<<<<
14846  *
14847  * cpdef inline sin(obj,i = None):
14848  */
14849  __Pyx_XDECREF(__pyx_r);
14850  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
14851  __Pyx_GOTREF(__pyx_t_3);
14852  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), acosh(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
14853  __Pyx_GOTREF(__pyx_t_11);
14854  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14855  __pyx_r = __pyx_t_11;
14856  __pyx_t_11 = 0;
14857  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14858  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
14859  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14860  goto __pyx_L7_except_return;
14861  }
14862  __pyx_L6_except_error:;
14863 
14864  /* "PyClical.pyx":1674
14865  * return clifford().wrap( glucat.acosh(toClifford(obj), toClifford(i)) )
14866  * else:
14867  * try: # <<<<<<<<<<<<<<
14868  * return math.acosh(obj)
14869  * except:
14870  */
14871  __Pyx_XGIVEREF(__pyx_t_6);
14872  __Pyx_XGIVEREF(__pyx_t_7);
14873  __Pyx_XGIVEREF(__pyx_t_8);
14874  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14875  goto __pyx_L1_error;
14876  __pyx_L8_try_return:;
14877  __Pyx_XGIVEREF(__pyx_t_6);
14878  __Pyx_XGIVEREF(__pyx_t_7);
14879  __Pyx_XGIVEREF(__pyx_t_8);
14880  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14881  goto __pyx_L0;
14882  __pyx_L7_except_return:;
14883  __Pyx_XGIVEREF(__pyx_t_6);
14884  __Pyx_XGIVEREF(__pyx_t_7);
14885  __Pyx_XGIVEREF(__pyx_t_8);
14886  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
14887  goto __pyx_L0;
14888  }
14889  }
14890 
14891  /* "PyClical.pyx":1656
14892  * return clifford().wrap( glucat.cosh(toClifford(obj)) )
14893  *
14894  * cpdef inline acosh(obj,i = None): # <<<<<<<<<<<<<<
14895  * """
14896  * Inverse hyperbolic cosine of multivector with optional complexifier.
14897  */
14898 
14899  /* function exit code */
14900  __pyx_L1_error:;
14901  __Pyx_XDECREF(__pyx_t_3);
14902  __Pyx_XDECREF(__pyx_t_5);
14903  __Pyx_XDECREF(__pyx_t_9);
14904  __Pyx_XDECREF(__pyx_t_10);
14905  __Pyx_XDECREF(__pyx_t_11);
14906  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
14907  __pyx_r = 0;
14908  __pyx_L0:;
14909  __Pyx_XGIVEREF(__pyx_r);
14910  __Pyx_RefNannyFinishContext();
14911  return __pyx_r;
14912  }
14913 
14914  /* Python wrapper */
14915  static PyObject *__pyx_pw_8PyClical_57acosh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14916  static char __pyx_doc_8PyClical_56acosh[] = "\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 ";
14917  static PyObject *__pyx_pw_8PyClical_57acosh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
14918  PyObject *__pyx_v_obj = 0;
14919  PyObject *__pyx_v_i = 0;
14920  int __pyx_lineno = 0;
14921  const char *__pyx_filename = NULL;
14922  int __pyx_clineno = 0;
14923  PyObject *__pyx_r = 0;
14924  __Pyx_RefNannyDeclarations
14925  __Pyx_RefNannySetupContext("acosh (wrapper)", 0);
14926  {
14927  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
14928  PyObject* values[2] = {0,0};
14929  values[1] = ((PyObject *)Py_None);
14930  if (unlikely(__pyx_kwds)) {
14931  Py_ssize_t kw_args;
14932  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14933  switch (pos_args) {
14934  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14935  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14936  case 0: break;
14937  default: goto __pyx_L5_argtuple_error;
14938  }
14939  kw_args = PyDict_Size(__pyx_kwds);
14940  switch (pos_args) {
14941  case 0:
14942  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
14943  else goto __pyx_L5_argtuple_error;
14944  case 1:
14945  if (kw_args > 0) {
14946  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
14947  if (value) { values[1] = value; kw_args--; }
14948  }
14949  }
14950  if (unlikely(kw_args > 0)) {
14951  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "acosh") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14952  }
14953  } else {
14954  switch (PyTuple_GET_SIZE(__pyx_args)) {
14955  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14956  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14957  break;
14958  default: goto __pyx_L5_argtuple_error;
14959  }
14960  }
14961  __pyx_v_obj = values[0];
14962  __pyx_v_i = values[1];
14963  }
14964  goto __pyx_L4_argument_unpacking_done;
14965  __pyx_L5_argtuple_error:;
14966  __Pyx_RaiseArgtupleInvalid("acosh", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14967  __pyx_L3_error:;
14968  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
14969  __Pyx_RefNannyFinishContext();
14970  return NULL;
14971  __pyx_L4_argument_unpacking_done:;
14972  __pyx_r = __pyx_pf_8PyClical_56acosh(__pyx_self, __pyx_v_obj, __pyx_v_i);
14973 
14974  /* function exit code */
14975  __Pyx_RefNannyFinishContext();
14976  return __pyx_r;
14977  }
14978 
14979  static PyObject *__pyx_pf_8PyClical_56acosh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
14980  PyObject *__pyx_r = NULL;
14981  __Pyx_RefNannyDeclarations
14982  PyObject *__pyx_t_1 = NULL;
14983  struct __pyx_opt_args_8PyClical_acosh __pyx_t_2;
14984  int __pyx_lineno = 0;
14985  const char *__pyx_filename = NULL;
14986  int __pyx_clineno = 0;
14987  __Pyx_RefNannySetupContext("acosh", 0);
14988  __Pyx_XDECREF(__pyx_r);
14989  __pyx_t_2.__pyx_n = 1;
14990  __pyx_t_2.i = __pyx_v_i;
14991  __pyx_t_1 = __pyx_f_8PyClical_acosh(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14992  __Pyx_GOTREF(__pyx_t_1);
14993  __pyx_r = __pyx_t_1;
14994  __pyx_t_1 = 0;
14995  goto __pyx_L0;
14996 
14997  /* function exit code */
14998  __pyx_L1_error:;
14999  __Pyx_XDECREF(__pyx_t_1);
15000  __Pyx_AddTraceback("PyClical.acosh", __pyx_clineno, __pyx_lineno, __pyx_filename);
15001  __pyx_r = NULL;
15002  __pyx_L0:;
15003  __Pyx_XGIVEREF(__pyx_r);
15004  __Pyx_RefNannyFinishContext();
15005  return __pyx_r;
15006  }
15007 
15008  /* "PyClical.pyx":1679
15009  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
15010  *
15011  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
15012  * """
15013  * Sine of multivector with optional complexifier.
15014  */
15015 
15016  static PyObject *__pyx_pw_8PyClical_59sin(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15017  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) {
15018  PyObject *__pyx_v_i = ((PyObject *)Py_None);
15019  PyObject *__pyx_r = NULL;
15020  __Pyx_RefNannyDeclarations
15021  int __pyx_t_1;
15022  int __pyx_t_2;
15023  PyObject *__pyx_t_3 = NULL;
15024  Clifford __pyx_t_4;
15025  PyObject *__pyx_t_5 = NULL;
15026  PyObject *__pyx_t_6 = NULL;
15027  PyObject *__pyx_t_7 = NULL;
15028  PyObject *__pyx_t_8 = NULL;
15029  PyObject *__pyx_t_9 = NULL;
15030  PyObject *__pyx_t_10 = NULL;
15031  PyObject *__pyx_t_11 = NULL;
15032  int __pyx_lineno = 0;
15033  const char *__pyx_filename = NULL;
15034  int __pyx_clineno = 0;
15035  __Pyx_RefNannySetupContext("sin", 0);
15036  if (__pyx_optional_args) {
15037  if (__pyx_optional_args->__pyx_n > 0) {
15038  __pyx_v_i = __pyx_optional_args->i;
15039  }
15040  }
15041 
15042  /* "PyClical.pyx":1690
15043  * {1,2,3}
15044  * """
15045  * if not (i is None): # <<<<<<<<<<<<<<
15046  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
15047  * else:
15048  */
15049  __pyx_t_1 = (__pyx_v_i != Py_None);
15050  __pyx_t_2 = (__pyx_t_1 != 0);
15051  if (__pyx_t_2) {
15052 
15053  /* "PyClical.pyx":1691
15054  * """
15055  * if not (i is None):
15056  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
15057  * else:
15058  * try:
15059  */
15060  __Pyx_XDECREF(__pyx_r);
15061  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15062  __Pyx_GOTREF(__pyx_t_3);
15063  try {
15064  __pyx_t_4 = sin(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
15065  } catch(...) {
15066  __Pyx_CppExn2PyErr();
15067  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15068  }
15069  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15070  __Pyx_GOTREF(__pyx_t_5);
15071  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15072  __pyx_r = __pyx_t_5;
15073  __pyx_t_5 = 0;
15074  goto __pyx_L0;
15075 
15076  /* "PyClical.pyx":1690
15077  * {1,2,3}
15078  * """
15079  * if not (i is None): # <<<<<<<<<<<<<<
15080  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
15081  * else:
15082  */
15083  }
15084 
15085  /* "PyClical.pyx":1693
15086  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
15087  * else:
15088  * try: # <<<<<<<<<<<<<<
15089  * return math.sin(obj)
15090  * except:
15091  */
15092  /*else*/ {
15093  {
15094  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
15095  __Pyx_XGOTREF(__pyx_t_6);
15096  __Pyx_XGOTREF(__pyx_t_7);
15097  __Pyx_XGOTREF(__pyx_t_8);
15098  /*try:*/ {
15099 
15100  /* "PyClical.pyx":1694
15101  * else:
15102  * try:
15103  * return math.sin(obj) # <<<<<<<<<<<<<<
15104  * except:
15105  * return clifford().wrap( glucat.sin(toClifford(obj)) )
15106  */
15107  __Pyx_XDECREF(__pyx_r);
15108  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15109  __Pyx_GOTREF(__pyx_t_3);
15110  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sin); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15111  __Pyx_GOTREF(__pyx_t_9);
15112  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15113  __pyx_t_3 = NULL;
15114  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
15115  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
15116  if (likely(__pyx_t_3)) {
15117  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
15118  __Pyx_INCREF(__pyx_t_3);
15119  __Pyx_INCREF(function);
15120  __Pyx_DECREF_SET(__pyx_t_9, function);
15121  }
15122  }
15123  if (!__pyx_t_3) {
15124  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15125  __Pyx_GOTREF(__pyx_t_5);
15126  } else {
15127  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15128  __Pyx_GOTREF(__pyx_t_10);
15129  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
15130  __Pyx_INCREF(__pyx_v_obj);
15131  __Pyx_GIVEREF(__pyx_v_obj);
15132  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
15133  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1694; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15134  __Pyx_GOTREF(__pyx_t_5);
15135  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
15136  }
15137  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15138  __pyx_r = __pyx_t_5;
15139  __pyx_t_5 = 0;
15140  goto __pyx_L8_try_return;
15141 
15142  /* "PyClical.pyx":1693
15143  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
15144  * else:
15145  * try: # <<<<<<<<<<<<<<
15146  * return math.sin(obj)
15147  * except:
15148  */
15149  }
15150  __pyx_L4_error:;
15151  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
15152  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
15153  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
15154  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
15155 
15156  /* "PyClical.pyx":1695
15157  * try:
15158  * return math.sin(obj)
15159  * except: # <<<<<<<<<<<<<<
15160  * return clifford().wrap( glucat.sin(toClifford(obj)) )
15161  *
15162  */
15163  /*except:*/ {
15164  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15165  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
15166  __Pyx_GOTREF(__pyx_t_5);
15167  __Pyx_GOTREF(__pyx_t_9);
15168  __Pyx_GOTREF(__pyx_t_10);
15169 
15170  /* "PyClical.pyx":1696
15171  * return math.sin(obj)
15172  * except:
15173  * return clifford().wrap( glucat.sin(toClifford(obj)) ) # <<<<<<<<<<<<<<
15174  *
15175  * cpdef inline asin(obj,i = None):
15176  */
15177  __Pyx_XDECREF(__pyx_r);
15178  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
15179  __Pyx_GOTREF(__pyx_t_3);
15180  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), sin(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
15181  __Pyx_GOTREF(__pyx_t_11);
15182  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15183  __pyx_r = __pyx_t_11;
15184  __pyx_t_11 = 0;
15185  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15186  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15187  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
15188  goto __pyx_L7_except_return;
15189  }
15190  __pyx_L6_except_error:;
15191 
15192  /* "PyClical.pyx":1693
15193  * return clifford().wrap( glucat.sin(toClifford(obj), toClifford(i)) )
15194  * else:
15195  * try: # <<<<<<<<<<<<<<
15196  * return math.sin(obj)
15197  * except:
15198  */
15199  __Pyx_XGIVEREF(__pyx_t_6);
15200  __Pyx_XGIVEREF(__pyx_t_7);
15201  __Pyx_XGIVEREF(__pyx_t_8);
15202  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
15203  goto __pyx_L1_error;
15204  __pyx_L8_try_return:;
15205  __Pyx_XGIVEREF(__pyx_t_6);
15206  __Pyx_XGIVEREF(__pyx_t_7);
15207  __Pyx_XGIVEREF(__pyx_t_8);
15208  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
15209  goto __pyx_L0;
15210  __pyx_L7_except_return:;
15211  __Pyx_XGIVEREF(__pyx_t_6);
15212  __Pyx_XGIVEREF(__pyx_t_7);
15213  __Pyx_XGIVEREF(__pyx_t_8);
15214  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
15215  goto __pyx_L0;
15216  }
15217  }
15218 
15219  /* "PyClical.pyx":1679
15220  * return clifford().wrap( glucat.acosh(toClifford(obj)) )
15221  *
15222  * cpdef inline sin(obj,i = None): # <<<<<<<<<<<<<<
15223  * """
15224  * Sine of multivector with optional complexifier.
15225  */
15226 
15227  /* function exit code */
15228  __pyx_L1_error:;
15229  __Pyx_XDECREF(__pyx_t_3);
15230  __Pyx_XDECREF(__pyx_t_5);
15231  __Pyx_XDECREF(__pyx_t_9);
15232  __Pyx_XDECREF(__pyx_t_10);
15233  __Pyx_XDECREF(__pyx_t_11);
15234  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15235  __pyx_r = 0;
15236  __pyx_L0:;
15237  __Pyx_XGIVEREF(__pyx_r);
15238  __Pyx_RefNannyFinishContext();
15239  return __pyx_r;
15240  }
15241 
15242  /* Python wrapper */
15243  static PyObject *__pyx_pw_8PyClical_59sin(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15244  static char __pyx_doc_8PyClical_58sin[] = "\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 ";
15245  static PyObject *__pyx_pw_8PyClical_59sin(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15246  PyObject *__pyx_v_obj = 0;
15247  PyObject *__pyx_v_i = 0;
15248  int __pyx_lineno = 0;
15249  const char *__pyx_filename = NULL;
15250  int __pyx_clineno = 0;
15251  PyObject *__pyx_r = 0;
15252  __Pyx_RefNannyDeclarations
15253  __Pyx_RefNannySetupContext("sin (wrapper)", 0);
15254  {
15255  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
15256  PyObject* values[2] = {0,0};
15257  values[1] = ((PyObject *)Py_None);
15258  if (unlikely(__pyx_kwds)) {
15259  Py_ssize_t kw_args;
15260  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
15261  switch (pos_args) {
15262  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15263  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15264  case 0: break;
15265  default: goto __pyx_L5_argtuple_error;
15266  }
15267  kw_args = PyDict_Size(__pyx_kwds);
15268  switch (pos_args) {
15269  case 0:
15270  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
15271  else goto __pyx_L5_argtuple_error;
15272  case 1:
15273  if (kw_args > 0) {
15274  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
15275  if (value) { values[1] = value; kw_args--; }
15276  }
15277  }
15278  if (unlikely(kw_args > 0)) {
15279  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sin") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15280  }
15281  } else {
15282  switch (PyTuple_GET_SIZE(__pyx_args)) {
15283  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15284  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15285  break;
15286  default: goto __pyx_L5_argtuple_error;
15287  }
15288  }
15289  __pyx_v_obj = values[0];
15290  __pyx_v_i = values[1];
15291  }
15292  goto __pyx_L4_argument_unpacking_done;
15293  __pyx_L5_argtuple_error:;
15294  __Pyx_RaiseArgtupleInvalid("sin", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15295  __pyx_L3_error:;
15296  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15297  __Pyx_RefNannyFinishContext();
15298  return NULL;
15299  __pyx_L4_argument_unpacking_done:;
15300  __pyx_r = __pyx_pf_8PyClical_58sin(__pyx_self, __pyx_v_obj, __pyx_v_i);
15301 
15302  /* function exit code */
15303  __Pyx_RefNannyFinishContext();
15304  return __pyx_r;
15305  }
15306 
15307  static PyObject *__pyx_pf_8PyClical_58sin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
15308  PyObject *__pyx_r = NULL;
15309  __Pyx_RefNannyDeclarations
15310  PyObject *__pyx_t_1 = NULL;
15311  struct __pyx_opt_args_8PyClical_sin __pyx_t_2;
15312  int __pyx_lineno = 0;
15313  const char *__pyx_filename = NULL;
15314  int __pyx_clineno = 0;
15315  __Pyx_RefNannySetupContext("sin", 0);
15316  __Pyx_XDECREF(__pyx_r);
15317  __pyx_t_2.__pyx_n = 1;
15318  __pyx_t_2.i = __pyx_v_i;
15319  __pyx_t_1 = __pyx_f_8PyClical_sin(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15320  __Pyx_GOTREF(__pyx_t_1);
15321  __pyx_r = __pyx_t_1;
15322  __pyx_t_1 = 0;
15323  goto __pyx_L0;
15324 
15325  /* function exit code */
15326  __pyx_L1_error:;
15327  __Pyx_XDECREF(__pyx_t_1);
15328  __Pyx_AddTraceback("PyClical.sin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15329  __pyx_r = NULL;
15330  __pyx_L0:;
15331  __Pyx_XGIVEREF(__pyx_r);
15332  __Pyx_RefNannyFinishContext();
15333  return __pyx_r;
15334  }
15335 
15336  /* "PyClical.pyx":1698
15337  * return clifford().wrap( glucat.sin(toClifford(obj)) )
15338  *
15339  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
15340  * """
15341  * Inverse sine of multivector with optional complexifier.
15342  */
15343 
15344  static PyObject *__pyx_pw_8PyClical_61asin(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15345  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) {
15346  PyObject *__pyx_v_i = ((PyObject *)Py_None);
15347  PyObject *__pyx_r = NULL;
15348  __Pyx_RefNannyDeclarations
15349  int __pyx_t_1;
15350  int __pyx_t_2;
15351  PyObject *__pyx_t_3 = NULL;
15352  Clifford __pyx_t_4;
15353  PyObject *__pyx_t_5 = NULL;
15354  PyObject *__pyx_t_6 = NULL;
15355  PyObject *__pyx_t_7 = NULL;
15356  PyObject *__pyx_t_8 = NULL;
15357  PyObject *__pyx_t_9 = NULL;
15358  PyObject *__pyx_t_10 = NULL;
15359  PyObject *__pyx_t_11 = NULL;
15360  int __pyx_lineno = 0;
15361  const char *__pyx_filename = NULL;
15362  int __pyx_clineno = 0;
15363  __Pyx_RefNannySetupContext("asin", 0);
15364  if (__pyx_optional_args) {
15365  if (__pyx_optional_args->__pyx_n > 0) {
15366  __pyx_v_i = __pyx_optional_args->i;
15367  }
15368  }
15369 
15370  /* "PyClical.pyx":1711
15371  * {1,2,3}
15372  * """
15373  * if not (i is None): # <<<<<<<<<<<<<<
15374  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
15375  * else:
15376  */
15377  __pyx_t_1 = (__pyx_v_i != Py_None);
15378  __pyx_t_2 = (__pyx_t_1 != 0);
15379  if (__pyx_t_2) {
15380 
15381  /* "PyClical.pyx":1712
15382  * """
15383  * if not (i is None):
15384  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
15385  * else:
15386  * try:
15387  */
15388  __Pyx_XDECREF(__pyx_r);
15389  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15390  __Pyx_GOTREF(__pyx_t_3);
15391  try {
15392  __pyx_t_4 = asin(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
15393  } catch(...) {
15394  __Pyx_CppExn2PyErr();
15395  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15396  }
15397  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15398  __Pyx_GOTREF(__pyx_t_5);
15399  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15400  __pyx_r = __pyx_t_5;
15401  __pyx_t_5 = 0;
15402  goto __pyx_L0;
15403 
15404  /* "PyClical.pyx":1711
15405  * {1,2,3}
15406  * """
15407  * if not (i is None): # <<<<<<<<<<<<<<
15408  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
15409  * else:
15410  */
15411  }
15412 
15413  /* "PyClical.pyx":1714
15414  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
15415  * else:
15416  * try: # <<<<<<<<<<<<<<
15417  * return math.asin(obj)
15418  * except:
15419  */
15420  /*else*/ {
15421  {
15422  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
15423  __Pyx_XGOTREF(__pyx_t_6);
15424  __Pyx_XGOTREF(__pyx_t_7);
15425  __Pyx_XGOTREF(__pyx_t_8);
15426  /*try:*/ {
15427 
15428  /* "PyClical.pyx":1715
15429  * else:
15430  * try:
15431  * return math.asin(obj) # <<<<<<<<<<<<<<
15432  * except:
15433  * return clifford().wrap( glucat.asin(toClifford(obj)) )
15434  */
15435  __Pyx_XDECREF(__pyx_r);
15436  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15437  __Pyx_GOTREF(__pyx_t_3);
15438  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asin); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15439  __Pyx_GOTREF(__pyx_t_9);
15440  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15441  __pyx_t_3 = NULL;
15442  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
15443  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
15444  if (likely(__pyx_t_3)) {
15445  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
15446  __Pyx_INCREF(__pyx_t_3);
15447  __Pyx_INCREF(function);
15448  __Pyx_DECREF_SET(__pyx_t_9, function);
15449  }
15450  }
15451  if (!__pyx_t_3) {
15452  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15453  __Pyx_GOTREF(__pyx_t_5);
15454  } else {
15455  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15456  __Pyx_GOTREF(__pyx_t_10);
15457  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
15458  __Pyx_INCREF(__pyx_v_obj);
15459  __Pyx_GIVEREF(__pyx_v_obj);
15460  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
15461  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15462  __Pyx_GOTREF(__pyx_t_5);
15463  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
15464  }
15465  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15466  __pyx_r = __pyx_t_5;
15467  __pyx_t_5 = 0;
15468  goto __pyx_L8_try_return;
15469 
15470  /* "PyClical.pyx":1714
15471  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
15472  * else:
15473  * try: # <<<<<<<<<<<<<<
15474  * return math.asin(obj)
15475  * except:
15476  */
15477  }
15478  __pyx_L4_error:;
15479  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
15480  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
15481  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
15482  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
15483 
15484  /* "PyClical.pyx":1716
15485  * try:
15486  * return math.asin(obj)
15487  * except: # <<<<<<<<<<<<<<
15488  * return clifford().wrap( glucat.asin(toClifford(obj)) )
15489  *
15490  */
15491  /*except:*/ {
15492  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15493  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
15494  __Pyx_GOTREF(__pyx_t_5);
15495  __Pyx_GOTREF(__pyx_t_9);
15496  __Pyx_GOTREF(__pyx_t_10);
15497 
15498  /* "PyClical.pyx":1717
15499  * return math.asin(obj)
15500  * except:
15501  * return clifford().wrap( glucat.asin(toClifford(obj)) ) # <<<<<<<<<<<<<<
15502  *
15503  * cpdef inline sinh(obj):
15504  */
15505  __Pyx_XDECREF(__pyx_r);
15506  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
15507  __Pyx_GOTREF(__pyx_t_3);
15508  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), asin(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
15509  __Pyx_GOTREF(__pyx_t_11);
15510  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15511  __pyx_r = __pyx_t_11;
15512  __pyx_t_11 = 0;
15513  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15514  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15515  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
15516  goto __pyx_L7_except_return;
15517  }
15518  __pyx_L6_except_error:;
15519 
15520  /* "PyClical.pyx":1714
15521  * return clifford().wrap( glucat.asin(toClifford(obj), toClifford(i)) )
15522  * else:
15523  * try: # <<<<<<<<<<<<<<
15524  * return math.asin(obj)
15525  * except:
15526  */
15527  __Pyx_XGIVEREF(__pyx_t_6);
15528  __Pyx_XGIVEREF(__pyx_t_7);
15529  __Pyx_XGIVEREF(__pyx_t_8);
15530  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
15531  goto __pyx_L1_error;
15532  __pyx_L8_try_return:;
15533  __Pyx_XGIVEREF(__pyx_t_6);
15534  __Pyx_XGIVEREF(__pyx_t_7);
15535  __Pyx_XGIVEREF(__pyx_t_8);
15536  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
15537  goto __pyx_L0;
15538  __pyx_L7_except_return:;
15539  __Pyx_XGIVEREF(__pyx_t_6);
15540  __Pyx_XGIVEREF(__pyx_t_7);
15541  __Pyx_XGIVEREF(__pyx_t_8);
15542  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
15543  goto __pyx_L0;
15544  }
15545  }
15546 
15547  /* "PyClical.pyx":1698
15548  * return clifford().wrap( glucat.sin(toClifford(obj)) )
15549  *
15550  * cpdef inline asin(obj,i = None): # <<<<<<<<<<<<<<
15551  * """
15552  * Inverse sine of multivector with optional complexifier.
15553  */
15554 
15555  /* function exit code */
15556  __pyx_L1_error:;
15557  __Pyx_XDECREF(__pyx_t_3);
15558  __Pyx_XDECREF(__pyx_t_5);
15559  __Pyx_XDECREF(__pyx_t_9);
15560  __Pyx_XDECREF(__pyx_t_10);
15561  __Pyx_XDECREF(__pyx_t_11);
15562  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15563  __pyx_r = 0;
15564  __pyx_L0:;
15565  __Pyx_XGIVEREF(__pyx_r);
15566  __Pyx_RefNannyFinishContext();
15567  return __pyx_r;
15568  }
15569 
15570  /* Python wrapper */
15571  static PyObject *__pyx_pw_8PyClical_61asin(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15572  static char __pyx_doc_8PyClical_60asin[] = "\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 ";
15573  static PyObject *__pyx_pw_8PyClical_61asin(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15574  PyObject *__pyx_v_obj = 0;
15575  PyObject *__pyx_v_i = 0;
15576  int __pyx_lineno = 0;
15577  const char *__pyx_filename = NULL;
15578  int __pyx_clineno = 0;
15579  PyObject *__pyx_r = 0;
15580  __Pyx_RefNannyDeclarations
15581  __Pyx_RefNannySetupContext("asin (wrapper)", 0);
15582  {
15583  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
15584  PyObject* values[2] = {0,0};
15585  values[1] = ((PyObject *)Py_None);
15586  if (unlikely(__pyx_kwds)) {
15587  Py_ssize_t kw_args;
15588  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
15589  switch (pos_args) {
15590  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15591  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15592  case 0: break;
15593  default: goto __pyx_L5_argtuple_error;
15594  }
15595  kw_args = PyDict_Size(__pyx_kwds);
15596  switch (pos_args) {
15597  case 0:
15598  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
15599  else goto __pyx_L5_argtuple_error;
15600  case 1:
15601  if (kw_args > 0) {
15602  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
15603  if (value) { values[1] = value; kw_args--; }
15604  }
15605  }
15606  if (unlikely(kw_args > 0)) {
15607  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "asin") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15608  }
15609  } else {
15610  switch (PyTuple_GET_SIZE(__pyx_args)) {
15611  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15612  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15613  break;
15614  default: goto __pyx_L5_argtuple_error;
15615  }
15616  }
15617  __pyx_v_obj = values[0];
15618  __pyx_v_i = values[1];
15619  }
15620  goto __pyx_L4_argument_unpacking_done;
15621  __pyx_L5_argtuple_error:;
15622  __Pyx_RaiseArgtupleInvalid("asin", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15623  __pyx_L3_error:;
15624  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15625  __Pyx_RefNannyFinishContext();
15626  return NULL;
15627  __pyx_L4_argument_unpacking_done:;
15628  __pyx_r = __pyx_pf_8PyClical_60asin(__pyx_self, __pyx_v_obj, __pyx_v_i);
15629 
15630  /* function exit code */
15631  __Pyx_RefNannyFinishContext();
15632  return __pyx_r;
15633  }
15634 
15635  static PyObject *__pyx_pf_8PyClical_60asin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
15636  PyObject *__pyx_r = NULL;
15637  __Pyx_RefNannyDeclarations
15638  PyObject *__pyx_t_1 = NULL;
15639  struct __pyx_opt_args_8PyClical_asin __pyx_t_2;
15640  int __pyx_lineno = 0;
15641  const char *__pyx_filename = NULL;
15642  int __pyx_clineno = 0;
15643  __Pyx_RefNannySetupContext("asin", 0);
15644  __Pyx_XDECREF(__pyx_r);
15645  __pyx_t_2.__pyx_n = 1;
15646  __pyx_t_2.i = __pyx_v_i;
15647  __pyx_t_1 = __pyx_f_8PyClical_asin(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15648  __Pyx_GOTREF(__pyx_t_1);
15649  __pyx_r = __pyx_t_1;
15650  __pyx_t_1 = 0;
15651  goto __pyx_L0;
15652 
15653  /* function exit code */
15654  __pyx_L1_error:;
15655  __Pyx_XDECREF(__pyx_t_1);
15656  __Pyx_AddTraceback("PyClical.asin", __pyx_clineno, __pyx_lineno, __pyx_filename);
15657  __pyx_r = NULL;
15658  __pyx_L0:;
15659  __Pyx_XGIVEREF(__pyx_r);
15660  __Pyx_RefNannyFinishContext();
15661  return __pyx_r;
15662  }
15663 
15664  /* "PyClical.pyx":1719
15665  * return clifford().wrap( glucat.asin(toClifford(obj)) )
15666  *
15667  * cpdef inline sinh(obj): # <<<<<<<<<<<<<<
15668  * """
15669  * Hyperbolic sine of multivector.
15670  */
15671 
15672  static PyObject *__pyx_pw_8PyClical_63sinh(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
15673  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_sinh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
15674  PyObject *__pyx_r = NULL;
15675  __Pyx_RefNannyDeclarations
15676  PyObject *__pyx_t_1 = NULL;
15677  PyObject *__pyx_t_2 = NULL;
15678  PyObject *__pyx_t_3 = NULL;
15679  PyObject *__pyx_t_4 = NULL;
15680  PyObject *__pyx_t_5 = NULL;
15681  PyObject *__pyx_t_6 = NULL;
15682  PyObject *__pyx_t_7 = NULL;
15683  PyObject *__pyx_t_8 = NULL;
15684  int __pyx_lineno = 0;
15685  const char *__pyx_filename = NULL;
15686  int __pyx_clineno = 0;
15687  __Pyx_RefNannySetupContext("sinh", 0);
15688 
15689  /* "PyClical.pyx":1728
15690  * 0.5{1,2}
15691  * """
15692  * try: # <<<<<<<<<<<<<<
15693  * return math.sinh(obj)
15694  * except:
15695  */
15696  {
15697  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
15698  __Pyx_XGOTREF(__pyx_t_1);
15699  __Pyx_XGOTREF(__pyx_t_2);
15700  __Pyx_XGOTREF(__pyx_t_3);
15701  /*try:*/ {
15702 
15703  /* "PyClical.pyx":1729
15704  * """
15705  * try:
15706  * return math.sinh(obj) # <<<<<<<<<<<<<<
15707  * except:
15708  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
15709  */
15710  __Pyx_XDECREF(__pyx_r);
15711  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15712  __Pyx_GOTREF(__pyx_t_5);
15713  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sinh); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15714  __Pyx_GOTREF(__pyx_t_6);
15715  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15716  __pyx_t_5 = NULL;
15717  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
15718  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
15719  if (likely(__pyx_t_5)) {
15720  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
15721  __Pyx_INCREF(__pyx_t_5);
15722  __Pyx_INCREF(function);
15723  __Pyx_DECREF_SET(__pyx_t_6, function);
15724  }
15725  }
15726  if (!__pyx_t_5) {
15727  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15728  __Pyx_GOTREF(__pyx_t_4);
15729  } else {
15730  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15731  __Pyx_GOTREF(__pyx_t_7);
15732  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
15733  __Pyx_INCREF(__pyx_v_obj);
15734  __Pyx_GIVEREF(__pyx_v_obj);
15735  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_obj);
15736  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15737  __Pyx_GOTREF(__pyx_t_4);
15738  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15739  }
15740  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15741  __pyx_r = __pyx_t_4;
15742  __pyx_t_4 = 0;
15743  goto __pyx_L7_try_return;
15744 
15745  /* "PyClical.pyx":1728
15746  * 0.5{1,2}
15747  * """
15748  * try: # <<<<<<<<<<<<<<
15749  * return math.sinh(obj)
15750  * except:
15751  */
15752  }
15753  __pyx_L3_error:;
15754  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
15755  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
15756  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15757  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
15758 
15759  /* "PyClical.pyx":1730
15760  * try:
15761  * return math.sinh(obj)
15762  * except: # <<<<<<<<<<<<<<
15763  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
15764  *
15765  */
15766  /*except:*/ {
15767  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
15768  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
15769  __Pyx_GOTREF(__pyx_t_4);
15770  __Pyx_GOTREF(__pyx_t_6);
15771  __Pyx_GOTREF(__pyx_t_7);
15772 
15773  /* "PyClical.pyx":1731
15774  * return math.sinh(obj)
15775  * except:
15776  * return clifford().wrap( glucat.sinh(toClifford(obj)) ) # <<<<<<<<<<<<<<
15777  *
15778  * cpdef inline asinh(obj,i = None):
15779  */
15780  __Pyx_XDECREF(__pyx_r);
15781  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
15782  __Pyx_GOTREF(__pyx_t_5);
15783  __pyx_t_8 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_5), sinh(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
15784  __Pyx_GOTREF(__pyx_t_8);
15785  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15786  __pyx_r = __pyx_t_8;
15787  __pyx_t_8 = 0;
15788  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15789  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15790  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15791  goto __pyx_L6_except_return;
15792  }
15793  __pyx_L5_except_error:;
15794 
15795  /* "PyClical.pyx":1728
15796  * 0.5{1,2}
15797  * """
15798  * try: # <<<<<<<<<<<<<<
15799  * return math.sinh(obj)
15800  * except:
15801  */
15802  __Pyx_XGIVEREF(__pyx_t_1);
15803  __Pyx_XGIVEREF(__pyx_t_2);
15804  __Pyx_XGIVEREF(__pyx_t_3);
15805  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
15806  goto __pyx_L1_error;
15807  __pyx_L7_try_return:;
15808  __Pyx_XGIVEREF(__pyx_t_1);
15809  __Pyx_XGIVEREF(__pyx_t_2);
15810  __Pyx_XGIVEREF(__pyx_t_3);
15811  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
15812  goto __pyx_L0;
15813  __pyx_L6_except_return:;
15814  __Pyx_XGIVEREF(__pyx_t_1);
15815  __Pyx_XGIVEREF(__pyx_t_2);
15816  __Pyx_XGIVEREF(__pyx_t_3);
15817  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
15818  goto __pyx_L0;
15819  }
15820 
15821  /* "PyClical.pyx":1719
15822  * return clifford().wrap( glucat.asin(toClifford(obj)) )
15823  *
15824  * cpdef inline sinh(obj): # <<<<<<<<<<<<<<
15825  * """
15826  * Hyperbolic sine of multivector.
15827  */
15828 
15829  /* function exit code */
15830  __pyx_L1_error:;
15831  __Pyx_XDECREF(__pyx_t_4);
15832  __Pyx_XDECREF(__pyx_t_5);
15833  __Pyx_XDECREF(__pyx_t_6);
15834  __Pyx_XDECREF(__pyx_t_7);
15835  __Pyx_XDECREF(__pyx_t_8);
15836  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
15837  __pyx_r = 0;
15838  __pyx_L0:;
15839  __Pyx_XGIVEREF(__pyx_r);
15840  __Pyx_RefNannyFinishContext();
15841  return __pyx_r;
15842  }
15843 
15844  /* Python wrapper */
15845  static PyObject *__pyx_pw_8PyClical_63sinh(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
15846  static char __pyx_doc_8PyClical_62sinh[] = "\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 ";
15847  static PyObject *__pyx_pw_8PyClical_63sinh(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
15848  PyObject *__pyx_r = 0;
15849  __Pyx_RefNannyDeclarations
15850  __Pyx_RefNannySetupContext("sinh (wrapper)", 0);
15851  __pyx_r = __pyx_pf_8PyClical_62sinh(__pyx_self, ((PyObject *)__pyx_v_obj));
15852 
15853  /* function exit code */
15854  __Pyx_RefNannyFinishContext();
15855  return __pyx_r;
15856  }
15857 
15858  static PyObject *__pyx_pf_8PyClical_62sinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
15859  PyObject *__pyx_r = NULL;
15860  __Pyx_RefNannyDeclarations
15861  PyObject *__pyx_t_1 = NULL;
15862  int __pyx_lineno = 0;
15863  const char *__pyx_filename = NULL;
15864  int __pyx_clineno = 0;
15865  __Pyx_RefNannySetupContext("sinh", 0);
15866  __Pyx_XDECREF(__pyx_r);
15867  __pyx_t_1 = __pyx_f_8PyClical_sinh(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15868  __Pyx_GOTREF(__pyx_t_1);
15869  __pyx_r = __pyx_t_1;
15870  __pyx_t_1 = 0;
15871  goto __pyx_L0;
15872 
15873  /* function exit code */
15874  __pyx_L1_error:;
15875  __Pyx_XDECREF(__pyx_t_1);
15876  __Pyx_AddTraceback("PyClical.sinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
15877  __pyx_r = NULL;
15878  __pyx_L0:;
15879  __Pyx_XGIVEREF(__pyx_r);
15880  __Pyx_RefNannyFinishContext();
15881  return __pyx_r;
15882  }
15883 
15884  /* "PyClical.pyx":1733
15885  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
15886  *
15887  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
15888  * """
15889  * Inverse hyperbolic sine of multivector with optional complexifier.
15890  */
15891 
15892  static PyObject *__pyx_pw_8PyClical_65asinh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15893  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) {
15894  PyObject *__pyx_v_i = ((PyObject *)Py_None);
15895  PyObject *__pyx_r = NULL;
15896  __Pyx_RefNannyDeclarations
15897  int __pyx_t_1;
15898  int __pyx_t_2;
15899  PyObject *__pyx_t_3 = NULL;
15900  Clifford __pyx_t_4;
15901  PyObject *__pyx_t_5 = NULL;
15902  PyObject *__pyx_t_6 = NULL;
15903  PyObject *__pyx_t_7 = NULL;
15904  PyObject *__pyx_t_8 = NULL;
15905  PyObject *__pyx_t_9 = NULL;
15906  PyObject *__pyx_t_10 = NULL;
15907  PyObject *__pyx_t_11 = NULL;
15908  int __pyx_lineno = 0;
15909  const char *__pyx_filename = NULL;
15910  int __pyx_clineno = 0;
15911  __Pyx_RefNannySetupContext("asinh", 0);
15912  if (__pyx_optional_args) {
15913  if (__pyx_optional_args->__pyx_n > 0) {
15914  __pyx_v_i = __pyx_optional_args->i;
15915  }
15916  }
15917 
15918  /* "PyClical.pyx":1744
15919  * {1,2}
15920  * """
15921  * if not (i is None): # <<<<<<<<<<<<<<
15922  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
15923  * else:
15924  */
15925  __pyx_t_1 = (__pyx_v_i != Py_None);
15926  __pyx_t_2 = (__pyx_t_1 != 0);
15927  if (__pyx_t_2) {
15928 
15929  /* "PyClical.pyx":1745
15930  * """
15931  * if not (i is None):
15932  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
15933  * else:
15934  * try:
15935  */
15936  __Pyx_XDECREF(__pyx_r);
15937  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15938  __Pyx_GOTREF(__pyx_t_3);
15939  try {
15940  __pyx_t_4 = asinh(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
15941  } catch(...) {
15942  __Pyx_CppExn2PyErr();
15943  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15944  }
15945  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15946  __Pyx_GOTREF(__pyx_t_5);
15947  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15948  __pyx_r = __pyx_t_5;
15949  __pyx_t_5 = 0;
15950  goto __pyx_L0;
15951 
15952  /* "PyClical.pyx":1744
15953  * {1,2}
15954  * """
15955  * if not (i is None): # <<<<<<<<<<<<<<
15956  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
15957  * else:
15958  */
15959  }
15960 
15961  /* "PyClical.pyx":1747
15962  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
15963  * else:
15964  * try: # <<<<<<<<<<<<<<
15965  * return math.asinh(obj)
15966  * except:
15967  */
15968  /*else*/ {
15969  {
15970  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
15971  __Pyx_XGOTREF(__pyx_t_6);
15972  __Pyx_XGOTREF(__pyx_t_7);
15973  __Pyx_XGOTREF(__pyx_t_8);
15974  /*try:*/ {
15975 
15976  /* "PyClical.pyx":1748
15977  * else:
15978  * try:
15979  * return math.asinh(obj) # <<<<<<<<<<<<<<
15980  * except:
15981  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
15982  */
15983  __Pyx_XDECREF(__pyx_r);
15984  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1748; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15985  __Pyx_GOTREF(__pyx_t_3);
15986  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asinh); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1748; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
15987  __Pyx_GOTREF(__pyx_t_9);
15988  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15989  __pyx_t_3 = NULL;
15990  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
15991  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
15992  if (likely(__pyx_t_3)) {
15993  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
15994  __Pyx_INCREF(__pyx_t_3);
15995  __Pyx_INCREF(function);
15996  __Pyx_DECREF_SET(__pyx_t_9, function);
15997  }
15998  }
15999  if (!__pyx_t_3) {
16000  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1748; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16001  __Pyx_GOTREF(__pyx_t_5);
16002  } else {
16003  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1748; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16004  __Pyx_GOTREF(__pyx_t_10);
16005  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
16006  __Pyx_INCREF(__pyx_v_obj);
16007  __Pyx_GIVEREF(__pyx_v_obj);
16008  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
16009  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1748; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16010  __Pyx_GOTREF(__pyx_t_5);
16011  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16012  }
16013  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16014  __pyx_r = __pyx_t_5;
16015  __pyx_t_5 = 0;
16016  goto __pyx_L8_try_return;
16017 
16018  /* "PyClical.pyx":1747
16019  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
16020  * else:
16021  * try: # <<<<<<<<<<<<<<
16022  * return math.asinh(obj)
16023  * except:
16024  */
16025  }
16026  __pyx_L4_error:;
16027  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16028  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
16029  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
16030  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
16031 
16032  /* "PyClical.pyx":1749
16033  * try:
16034  * return math.asinh(obj)
16035  * except: # <<<<<<<<<<<<<<
16036  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
16037  *
16038  */
16039  /*except:*/ {
16040  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
16041  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16042  __Pyx_GOTREF(__pyx_t_5);
16043  __Pyx_GOTREF(__pyx_t_9);
16044  __Pyx_GOTREF(__pyx_t_10);
16045 
16046  /* "PyClical.pyx":1750
16047  * return math.asinh(obj)
16048  * except:
16049  * return clifford().wrap( glucat.asinh(toClifford(obj)) ) # <<<<<<<<<<<<<<
16050  *
16051  * cpdef inline tan(obj,i = None):
16052  */
16053  __Pyx_XDECREF(__pyx_r);
16054  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1750; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16055  __Pyx_GOTREF(__pyx_t_3);
16056  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), asinh(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1750; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16057  __Pyx_GOTREF(__pyx_t_11);
16058  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16059  __pyx_r = __pyx_t_11;
16060  __pyx_t_11 = 0;
16061  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16062  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16063  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16064  goto __pyx_L7_except_return;
16065  }
16066  __pyx_L6_except_error:;
16067 
16068  /* "PyClical.pyx":1747
16069  * return clifford().wrap( glucat.asinh(toClifford(obj), toClifford(i)) )
16070  * else:
16071  * try: # <<<<<<<<<<<<<<
16072  * return math.asinh(obj)
16073  * except:
16074  */
16075  __Pyx_XGIVEREF(__pyx_t_6);
16076  __Pyx_XGIVEREF(__pyx_t_7);
16077  __Pyx_XGIVEREF(__pyx_t_8);
16078  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16079  goto __pyx_L1_error;
16080  __pyx_L8_try_return:;
16081  __Pyx_XGIVEREF(__pyx_t_6);
16082  __Pyx_XGIVEREF(__pyx_t_7);
16083  __Pyx_XGIVEREF(__pyx_t_8);
16084  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16085  goto __pyx_L0;
16086  __pyx_L7_except_return:;
16087  __Pyx_XGIVEREF(__pyx_t_6);
16088  __Pyx_XGIVEREF(__pyx_t_7);
16089  __Pyx_XGIVEREF(__pyx_t_8);
16090  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16091  goto __pyx_L0;
16092  }
16093  }
16094 
16095  /* "PyClical.pyx":1733
16096  * return clifford().wrap( glucat.sinh(toClifford(obj)) )
16097  *
16098  * cpdef inline asinh(obj,i = None): # <<<<<<<<<<<<<<
16099  * """
16100  * Inverse hyperbolic sine of multivector with optional complexifier.
16101  */
16102 
16103  /* function exit code */
16104  __pyx_L1_error:;
16105  __Pyx_XDECREF(__pyx_t_3);
16106  __Pyx_XDECREF(__pyx_t_5);
16107  __Pyx_XDECREF(__pyx_t_9);
16108  __Pyx_XDECREF(__pyx_t_10);
16109  __Pyx_XDECREF(__pyx_t_11);
16110  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
16111  __pyx_r = 0;
16112  __pyx_L0:;
16113  __Pyx_XGIVEREF(__pyx_r);
16114  __Pyx_RefNannyFinishContext();
16115  return __pyx_r;
16116  }
16117 
16118  /* Python wrapper */
16119  static PyObject *__pyx_pw_8PyClical_65asinh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16120  static char __pyx_doc_8PyClical_64asinh[] = "\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 ";
16121  static PyObject *__pyx_pw_8PyClical_65asinh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16122  PyObject *__pyx_v_obj = 0;
16123  PyObject *__pyx_v_i = 0;
16124  int __pyx_lineno = 0;
16125  const char *__pyx_filename = NULL;
16126  int __pyx_clineno = 0;
16127  PyObject *__pyx_r = 0;
16128  __Pyx_RefNannyDeclarations
16129  __Pyx_RefNannySetupContext("asinh (wrapper)", 0);
16130  {
16131  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
16132  PyObject* values[2] = {0,0};
16133  values[1] = ((PyObject *)Py_None);
16134  if (unlikely(__pyx_kwds)) {
16135  Py_ssize_t kw_args;
16136  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16137  switch (pos_args) {
16138  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16139  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16140  case 0: break;
16141  default: goto __pyx_L5_argtuple_error;
16142  }
16143  kw_args = PyDict_Size(__pyx_kwds);
16144  switch (pos_args) {
16145  case 0:
16146  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
16147  else goto __pyx_L5_argtuple_error;
16148  case 1:
16149  if (kw_args > 0) {
16150  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
16151  if (value) { values[1] = value; kw_args--; }
16152  }
16153  }
16154  if (unlikely(kw_args > 0)) {
16155  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "asinh") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16156  }
16157  } else {
16158  switch (PyTuple_GET_SIZE(__pyx_args)) {
16159  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16160  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16161  break;
16162  default: goto __pyx_L5_argtuple_error;
16163  }
16164  }
16165  __pyx_v_obj = values[0];
16166  __pyx_v_i = values[1];
16167  }
16168  goto __pyx_L4_argument_unpacking_done;
16169  __pyx_L5_argtuple_error:;
16170  __Pyx_RaiseArgtupleInvalid("asinh", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16171  __pyx_L3_error:;
16172  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
16173  __Pyx_RefNannyFinishContext();
16174  return NULL;
16175  __pyx_L4_argument_unpacking_done:;
16176  __pyx_r = __pyx_pf_8PyClical_64asinh(__pyx_self, __pyx_v_obj, __pyx_v_i);
16177 
16178  /* function exit code */
16179  __Pyx_RefNannyFinishContext();
16180  return __pyx_r;
16181  }
16182 
16183  static PyObject *__pyx_pf_8PyClical_64asinh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
16184  PyObject *__pyx_r = NULL;
16185  __Pyx_RefNannyDeclarations
16186  PyObject *__pyx_t_1 = NULL;
16187  struct __pyx_opt_args_8PyClical_asinh __pyx_t_2;
16188  int __pyx_lineno = 0;
16189  const char *__pyx_filename = NULL;
16190  int __pyx_clineno = 0;
16191  __Pyx_RefNannySetupContext("asinh", 0);
16192  __Pyx_XDECREF(__pyx_r);
16193  __pyx_t_2.__pyx_n = 1;
16194  __pyx_t_2.i = __pyx_v_i;
16195  __pyx_t_1 = __pyx_f_8PyClical_asinh(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16196  __Pyx_GOTREF(__pyx_t_1);
16197  __pyx_r = __pyx_t_1;
16198  __pyx_t_1 = 0;
16199  goto __pyx_L0;
16200 
16201  /* function exit code */
16202  __pyx_L1_error:;
16203  __Pyx_XDECREF(__pyx_t_1);
16204  __Pyx_AddTraceback("PyClical.asinh", __pyx_clineno, __pyx_lineno, __pyx_filename);
16205  __pyx_r = NULL;
16206  __pyx_L0:;
16207  __Pyx_XGIVEREF(__pyx_r);
16208  __Pyx_RefNannyFinishContext();
16209  return __pyx_r;
16210  }
16211 
16212  /* "PyClical.pyx":1752
16213  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
16214  *
16215  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
16216  * """
16217  * Tangent of multivector with optional complexifier.
16218  */
16219 
16220  static PyObject *__pyx_pw_8PyClical_67tan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16221  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) {
16222  PyObject *__pyx_v_i = ((PyObject *)Py_None);
16223  PyObject *__pyx_r = NULL;
16224  __Pyx_RefNannyDeclarations
16225  int __pyx_t_1;
16226  int __pyx_t_2;
16227  PyObject *__pyx_t_3 = NULL;
16228  Clifford __pyx_t_4;
16229  PyObject *__pyx_t_5 = NULL;
16230  PyObject *__pyx_t_6 = NULL;
16231  PyObject *__pyx_t_7 = NULL;
16232  PyObject *__pyx_t_8 = NULL;
16233  PyObject *__pyx_t_9 = NULL;
16234  PyObject *__pyx_t_10 = NULL;
16235  PyObject *__pyx_t_11 = NULL;
16236  int __pyx_lineno = 0;
16237  const char *__pyx_filename = NULL;
16238  int __pyx_clineno = 0;
16239  __Pyx_RefNannySetupContext("tan", 0);
16240  if (__pyx_optional_args) {
16241  if (__pyx_optional_args->__pyx_n > 0) {
16242  __pyx_v_i = __pyx_optional_args->i;
16243  }
16244  }
16245 
16246  /* "PyClical.pyx":1761
16247  * 0.7616{1,2}
16248  * """
16249  * if not (i is None): # <<<<<<<<<<<<<<
16250  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
16251  * else:
16252  */
16253  __pyx_t_1 = (__pyx_v_i != Py_None);
16254  __pyx_t_2 = (__pyx_t_1 != 0);
16255  if (__pyx_t_2) {
16256 
16257  /* "PyClical.pyx":1762
16258  * """
16259  * if not (i is None):
16260  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
16261  * else:
16262  * try:
16263  */
16264  __Pyx_XDECREF(__pyx_r);
16265  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16266  __Pyx_GOTREF(__pyx_t_3);
16267  try {
16268  __pyx_t_4 = tan(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
16269  } catch(...) {
16270  __Pyx_CppExn2PyErr();
16271  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16272  }
16273  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16274  __Pyx_GOTREF(__pyx_t_5);
16275  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16276  __pyx_r = __pyx_t_5;
16277  __pyx_t_5 = 0;
16278  goto __pyx_L0;
16279 
16280  /* "PyClical.pyx":1761
16281  * 0.7616{1,2}
16282  * """
16283  * if not (i is None): # <<<<<<<<<<<<<<
16284  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
16285  * else:
16286  */
16287  }
16288 
16289  /* "PyClical.pyx":1764
16290  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
16291  * else:
16292  * try: # <<<<<<<<<<<<<<
16293  * return math.tan(obj)
16294  * except:
16295  */
16296  /*else*/ {
16297  {
16298  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
16299  __Pyx_XGOTREF(__pyx_t_6);
16300  __Pyx_XGOTREF(__pyx_t_7);
16301  __Pyx_XGOTREF(__pyx_t_8);
16302  /*try:*/ {
16303 
16304  /* "PyClical.pyx":1765
16305  * else:
16306  * try:
16307  * return math.tan(obj) # <<<<<<<<<<<<<<
16308  * except:
16309  * return clifford().wrap( glucat.tan(toClifford(obj)) )
16310  */
16311  __Pyx_XDECREF(__pyx_r);
16312  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16313  __Pyx_GOTREF(__pyx_t_3);
16314  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tan); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16315  __Pyx_GOTREF(__pyx_t_9);
16316  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16317  __pyx_t_3 = NULL;
16318  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
16319  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
16320  if (likely(__pyx_t_3)) {
16321  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
16322  __Pyx_INCREF(__pyx_t_3);
16323  __Pyx_INCREF(function);
16324  __Pyx_DECREF_SET(__pyx_t_9, function);
16325  }
16326  }
16327  if (!__pyx_t_3) {
16328  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16329  __Pyx_GOTREF(__pyx_t_5);
16330  } else {
16331  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16332  __Pyx_GOTREF(__pyx_t_10);
16333  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
16334  __Pyx_INCREF(__pyx_v_obj);
16335  __Pyx_GIVEREF(__pyx_v_obj);
16336  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
16337  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16338  __Pyx_GOTREF(__pyx_t_5);
16339  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16340  }
16341  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16342  __pyx_r = __pyx_t_5;
16343  __pyx_t_5 = 0;
16344  goto __pyx_L8_try_return;
16345 
16346  /* "PyClical.pyx":1764
16347  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
16348  * else:
16349  * try: # <<<<<<<<<<<<<<
16350  * return math.tan(obj)
16351  * except:
16352  */
16353  }
16354  __pyx_L4_error:;
16355  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16356  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
16357  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
16358  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
16359 
16360  /* "PyClical.pyx":1766
16361  * try:
16362  * return math.tan(obj)
16363  * except: # <<<<<<<<<<<<<<
16364  * return clifford().wrap( glucat.tan(toClifford(obj)) )
16365  *
16366  */
16367  /*except:*/ {
16368  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16369  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16370  __Pyx_GOTREF(__pyx_t_5);
16371  __Pyx_GOTREF(__pyx_t_9);
16372  __Pyx_GOTREF(__pyx_t_10);
16373 
16374  /* "PyClical.pyx":1767
16375  * return math.tan(obj)
16376  * except:
16377  * return clifford().wrap( glucat.tan(toClifford(obj)) ) # <<<<<<<<<<<<<<
16378  *
16379  * cpdef inline atan(obj,i = None):
16380  */
16381  __Pyx_XDECREF(__pyx_r);
16382  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1767; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16383  __Pyx_GOTREF(__pyx_t_3);
16384  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), tan(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1767; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16385  __Pyx_GOTREF(__pyx_t_11);
16386  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16387  __pyx_r = __pyx_t_11;
16388  __pyx_t_11 = 0;
16389  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16390  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16391  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16392  goto __pyx_L7_except_return;
16393  }
16394  __pyx_L6_except_error:;
16395 
16396  /* "PyClical.pyx":1764
16397  * return clifford().wrap( glucat.tan(toClifford(obj), toClifford(i)) )
16398  * else:
16399  * try: # <<<<<<<<<<<<<<
16400  * return math.tan(obj)
16401  * except:
16402  */
16403  __Pyx_XGIVEREF(__pyx_t_6);
16404  __Pyx_XGIVEREF(__pyx_t_7);
16405  __Pyx_XGIVEREF(__pyx_t_8);
16406  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16407  goto __pyx_L1_error;
16408  __pyx_L8_try_return:;
16409  __Pyx_XGIVEREF(__pyx_t_6);
16410  __Pyx_XGIVEREF(__pyx_t_7);
16411  __Pyx_XGIVEREF(__pyx_t_8);
16412  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16413  goto __pyx_L0;
16414  __pyx_L7_except_return:;
16415  __Pyx_XGIVEREF(__pyx_t_6);
16416  __Pyx_XGIVEREF(__pyx_t_7);
16417  __Pyx_XGIVEREF(__pyx_t_8);
16418  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16419  goto __pyx_L0;
16420  }
16421  }
16422 
16423  /* "PyClical.pyx":1752
16424  * return clifford().wrap( glucat.asinh(toClifford(obj)) )
16425  *
16426  * cpdef inline tan(obj,i = None): # <<<<<<<<<<<<<<
16427  * """
16428  * Tangent of multivector with optional complexifier.
16429  */
16430 
16431  /* function exit code */
16432  __pyx_L1_error:;
16433  __Pyx_XDECREF(__pyx_t_3);
16434  __Pyx_XDECREF(__pyx_t_5);
16435  __Pyx_XDECREF(__pyx_t_9);
16436  __Pyx_XDECREF(__pyx_t_10);
16437  __Pyx_XDECREF(__pyx_t_11);
16438  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16439  __pyx_r = 0;
16440  __pyx_L0:;
16441  __Pyx_XGIVEREF(__pyx_r);
16442  __Pyx_RefNannyFinishContext();
16443  return __pyx_r;
16444  }
16445 
16446  /* Python wrapper */
16447  static PyObject *__pyx_pw_8PyClical_67tan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16448  static char __pyx_doc_8PyClical_66tan[] = "\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 ";
16449  static PyObject *__pyx_pw_8PyClical_67tan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16450  PyObject *__pyx_v_obj = 0;
16451  PyObject *__pyx_v_i = 0;
16452  int __pyx_lineno = 0;
16453  const char *__pyx_filename = NULL;
16454  int __pyx_clineno = 0;
16455  PyObject *__pyx_r = 0;
16456  __Pyx_RefNannyDeclarations
16457  __Pyx_RefNannySetupContext("tan (wrapper)", 0);
16458  {
16459  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
16460  PyObject* values[2] = {0,0};
16461  values[1] = ((PyObject *)Py_None);
16462  if (unlikely(__pyx_kwds)) {
16463  Py_ssize_t kw_args;
16464  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16465  switch (pos_args) {
16466  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16467  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16468  case 0: break;
16469  default: goto __pyx_L5_argtuple_error;
16470  }
16471  kw_args = PyDict_Size(__pyx_kwds);
16472  switch (pos_args) {
16473  case 0:
16474  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
16475  else goto __pyx_L5_argtuple_error;
16476  case 1:
16477  if (kw_args > 0) {
16478  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
16479  if (value) { values[1] = value; kw_args--; }
16480  }
16481  }
16482  if (unlikely(kw_args > 0)) {
16483  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tan") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16484  }
16485  } else {
16486  switch (PyTuple_GET_SIZE(__pyx_args)) {
16487  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16488  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16489  break;
16490  default: goto __pyx_L5_argtuple_error;
16491  }
16492  }
16493  __pyx_v_obj = values[0];
16494  __pyx_v_i = values[1];
16495  }
16496  goto __pyx_L4_argument_unpacking_done;
16497  __pyx_L5_argtuple_error:;
16498  __Pyx_RaiseArgtupleInvalid("tan", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16499  __pyx_L3_error:;
16500  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16501  __Pyx_RefNannyFinishContext();
16502  return NULL;
16503  __pyx_L4_argument_unpacking_done:;
16504  __pyx_r = __pyx_pf_8PyClical_66tan(__pyx_self, __pyx_v_obj, __pyx_v_i);
16505 
16506  /* function exit code */
16507  __Pyx_RefNannyFinishContext();
16508  return __pyx_r;
16509  }
16510 
16511  static PyObject *__pyx_pf_8PyClical_66tan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
16512  PyObject *__pyx_r = NULL;
16513  __Pyx_RefNannyDeclarations
16514  PyObject *__pyx_t_1 = NULL;
16515  struct __pyx_opt_args_8PyClical_tan __pyx_t_2;
16516  int __pyx_lineno = 0;
16517  const char *__pyx_filename = NULL;
16518  int __pyx_clineno = 0;
16519  __Pyx_RefNannySetupContext("tan", 0);
16520  __Pyx_XDECREF(__pyx_r);
16521  __pyx_t_2.__pyx_n = 1;
16522  __pyx_t_2.i = __pyx_v_i;
16523  __pyx_t_1 = __pyx_f_8PyClical_tan(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16524  __Pyx_GOTREF(__pyx_t_1);
16525  __pyx_r = __pyx_t_1;
16526  __pyx_t_1 = 0;
16527  goto __pyx_L0;
16528 
16529  /* function exit code */
16530  __pyx_L1_error:;
16531  __Pyx_XDECREF(__pyx_t_1);
16532  __Pyx_AddTraceback("PyClical.tan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16533  __pyx_r = NULL;
16534  __pyx_L0:;
16535  __Pyx_XGIVEREF(__pyx_r);
16536  __Pyx_RefNannyFinishContext();
16537  return __pyx_r;
16538  }
16539 
16540  /* "PyClical.pyx":1769
16541  * return clifford().wrap( glucat.tan(toClifford(obj)) )
16542  *
16543  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
16544  * """
16545  * Inverse tangent of multivector with optional complexifier.
16546  */
16547 
16548  static PyObject *__pyx_pw_8PyClical_69atan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16549  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) {
16550  PyObject *__pyx_v_i = ((PyObject *)Py_None);
16551  PyObject *__pyx_r = NULL;
16552  __Pyx_RefNannyDeclarations
16553  int __pyx_t_1;
16554  int __pyx_t_2;
16555  PyObject *__pyx_t_3 = NULL;
16556  Clifford __pyx_t_4;
16557  PyObject *__pyx_t_5 = NULL;
16558  PyObject *__pyx_t_6 = NULL;
16559  PyObject *__pyx_t_7 = NULL;
16560  PyObject *__pyx_t_8 = NULL;
16561  PyObject *__pyx_t_9 = NULL;
16562  PyObject *__pyx_t_10 = NULL;
16563  PyObject *__pyx_t_11 = NULL;
16564  int __pyx_lineno = 0;
16565  const char *__pyx_filename = NULL;
16566  int __pyx_clineno = 0;
16567  __Pyx_RefNannySetupContext("atan", 0);
16568  if (__pyx_optional_args) {
16569  if (__pyx_optional_args->__pyx_n > 0) {
16570  __pyx_v_i = __pyx_optional_args->i;
16571  }
16572  }
16573 
16574  /* "PyClical.pyx":1778
16575  * {1}
16576  * """
16577  * if not (i is None): # <<<<<<<<<<<<<<
16578  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
16579  * else:
16580  */
16581  __pyx_t_1 = (__pyx_v_i != Py_None);
16582  __pyx_t_2 = (__pyx_t_1 != 0);
16583  if (__pyx_t_2) {
16584 
16585  /* "PyClical.pyx":1779
16586  * """
16587  * if not (i is None):
16588  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
16589  * else:
16590  * try:
16591  */
16592  __Pyx_XDECREF(__pyx_r);
16593  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16594  __Pyx_GOTREF(__pyx_t_3);
16595  try {
16596  __pyx_t_4 = atan(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
16597  } catch(...) {
16598  __Pyx_CppExn2PyErr();
16599  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16600  }
16601  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16602  __Pyx_GOTREF(__pyx_t_5);
16603  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16604  __pyx_r = __pyx_t_5;
16605  __pyx_t_5 = 0;
16606  goto __pyx_L0;
16607 
16608  /* "PyClical.pyx":1778
16609  * {1}
16610  * """
16611  * if not (i is None): # <<<<<<<<<<<<<<
16612  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
16613  * else:
16614  */
16615  }
16616 
16617  /* "PyClical.pyx":1781
16618  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
16619  * else:
16620  * try: # <<<<<<<<<<<<<<
16621  * return math.atan(obj)
16622  * except:
16623  */
16624  /*else*/ {
16625  {
16626  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
16627  __Pyx_XGOTREF(__pyx_t_6);
16628  __Pyx_XGOTREF(__pyx_t_7);
16629  __Pyx_XGOTREF(__pyx_t_8);
16630  /*try:*/ {
16631 
16632  /* "PyClical.pyx":1782
16633  * else:
16634  * try:
16635  * return math.atan(obj) # <<<<<<<<<<<<<<
16636  * except:
16637  * return clifford().wrap( glucat.atan(toClifford(obj)) )
16638  */
16639  __Pyx_XDECREF(__pyx_r);
16640  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16641  __Pyx_GOTREF(__pyx_t_3);
16642  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_atan); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16643  __Pyx_GOTREF(__pyx_t_9);
16644  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16645  __pyx_t_3 = NULL;
16646  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
16647  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
16648  if (likely(__pyx_t_3)) {
16649  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
16650  __Pyx_INCREF(__pyx_t_3);
16651  __Pyx_INCREF(function);
16652  __Pyx_DECREF_SET(__pyx_t_9, function);
16653  }
16654  }
16655  if (!__pyx_t_3) {
16656  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16657  __Pyx_GOTREF(__pyx_t_5);
16658  } else {
16659  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16660  __Pyx_GOTREF(__pyx_t_10);
16661  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
16662  __Pyx_INCREF(__pyx_v_obj);
16663  __Pyx_GIVEREF(__pyx_v_obj);
16664  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
16665  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
16666  __Pyx_GOTREF(__pyx_t_5);
16667  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16668  }
16669  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16670  __pyx_r = __pyx_t_5;
16671  __pyx_t_5 = 0;
16672  goto __pyx_L8_try_return;
16673 
16674  /* "PyClical.pyx":1781
16675  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
16676  * else:
16677  * try: # <<<<<<<<<<<<<<
16678  * return math.atan(obj)
16679  * except:
16680  */
16681  }
16682  __pyx_L4_error:;
16683  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16684  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
16685  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
16686  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
16687 
16688  /* "PyClical.pyx":1783
16689  * try:
16690  * return math.atan(obj)
16691  * except: # <<<<<<<<<<<<<<
16692  * return clifford().wrap( glucat.atan(toClifford(obj)) )
16693  *
16694  */
16695  /*except:*/ {
16696  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16697  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1783; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16698  __Pyx_GOTREF(__pyx_t_5);
16699  __Pyx_GOTREF(__pyx_t_9);
16700  __Pyx_GOTREF(__pyx_t_10);
16701 
16702  /* "PyClical.pyx":1784
16703  * return math.atan(obj)
16704  * except:
16705  * return clifford().wrap( glucat.atan(toClifford(obj)) ) # <<<<<<<<<<<<<<
16706  *
16707  * cpdef inline tanh(obj):
16708  */
16709  __Pyx_XDECREF(__pyx_r);
16710  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16711  __Pyx_GOTREF(__pyx_t_3);
16712  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), atan(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
16713  __Pyx_GOTREF(__pyx_t_11);
16714  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16715  __pyx_r = __pyx_t_11;
16716  __pyx_t_11 = 0;
16717  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16718  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16719  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16720  goto __pyx_L7_except_return;
16721  }
16722  __pyx_L6_except_error:;
16723 
16724  /* "PyClical.pyx":1781
16725  * return clifford().wrap( glucat.atan(toClifford(obj), toClifford(i)) )
16726  * else:
16727  * try: # <<<<<<<<<<<<<<
16728  * return math.atan(obj)
16729  * except:
16730  */
16731  __Pyx_XGIVEREF(__pyx_t_6);
16732  __Pyx_XGIVEREF(__pyx_t_7);
16733  __Pyx_XGIVEREF(__pyx_t_8);
16734  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16735  goto __pyx_L1_error;
16736  __pyx_L8_try_return:;
16737  __Pyx_XGIVEREF(__pyx_t_6);
16738  __Pyx_XGIVEREF(__pyx_t_7);
16739  __Pyx_XGIVEREF(__pyx_t_8);
16740  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16741  goto __pyx_L0;
16742  __pyx_L7_except_return:;
16743  __Pyx_XGIVEREF(__pyx_t_6);
16744  __Pyx_XGIVEREF(__pyx_t_7);
16745  __Pyx_XGIVEREF(__pyx_t_8);
16746  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
16747  goto __pyx_L0;
16748  }
16749  }
16750 
16751  /* "PyClical.pyx":1769
16752  * return clifford().wrap( glucat.tan(toClifford(obj)) )
16753  *
16754  * cpdef inline atan(obj,i = None): # <<<<<<<<<<<<<<
16755  * """
16756  * Inverse tangent of multivector with optional complexifier.
16757  */
16758 
16759  /* function exit code */
16760  __pyx_L1_error:;
16761  __Pyx_XDECREF(__pyx_t_3);
16762  __Pyx_XDECREF(__pyx_t_5);
16763  __Pyx_XDECREF(__pyx_t_9);
16764  __Pyx_XDECREF(__pyx_t_10);
16765  __Pyx_XDECREF(__pyx_t_11);
16766  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16767  __pyx_r = 0;
16768  __pyx_L0:;
16769  __Pyx_XGIVEREF(__pyx_r);
16770  __Pyx_RefNannyFinishContext();
16771  return __pyx_r;
16772  }
16773 
16774  /* Python wrapper */
16775  static PyObject *__pyx_pw_8PyClical_69atan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16776  static char __pyx_doc_8PyClical_68atan[] = "\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 ";
16777  static PyObject *__pyx_pw_8PyClical_69atan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16778  PyObject *__pyx_v_obj = 0;
16779  PyObject *__pyx_v_i = 0;
16780  int __pyx_lineno = 0;
16781  const char *__pyx_filename = NULL;
16782  int __pyx_clineno = 0;
16783  PyObject *__pyx_r = 0;
16784  __Pyx_RefNannyDeclarations
16785  __Pyx_RefNannySetupContext("atan (wrapper)", 0);
16786  {
16787  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
16788  PyObject* values[2] = {0,0};
16789  values[1] = ((PyObject *)Py_None);
16790  if (unlikely(__pyx_kwds)) {
16791  Py_ssize_t kw_args;
16792  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16793  switch (pos_args) {
16794  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16795  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16796  case 0: break;
16797  default: goto __pyx_L5_argtuple_error;
16798  }
16799  kw_args = PyDict_Size(__pyx_kwds);
16800  switch (pos_args) {
16801  case 0:
16802  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
16803  else goto __pyx_L5_argtuple_error;
16804  case 1:
16805  if (kw_args > 0) {
16806  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
16807  if (value) { values[1] = value; kw_args--; }
16808  }
16809  }
16810  if (unlikely(kw_args > 0)) {
16811  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "atan") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16812  }
16813  } else {
16814  switch (PyTuple_GET_SIZE(__pyx_args)) {
16815  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16816  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16817  break;
16818  default: goto __pyx_L5_argtuple_error;
16819  }
16820  }
16821  __pyx_v_obj = values[0];
16822  __pyx_v_i = values[1];
16823  }
16824  goto __pyx_L4_argument_unpacking_done;
16825  __pyx_L5_argtuple_error:;
16826  __Pyx_RaiseArgtupleInvalid("atan", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16827  __pyx_L3_error:;
16828  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16829  __Pyx_RefNannyFinishContext();
16830  return NULL;
16831  __pyx_L4_argument_unpacking_done:;
16832  __pyx_r = __pyx_pf_8PyClical_68atan(__pyx_self, __pyx_v_obj, __pyx_v_i);
16833 
16834  /* function exit code */
16835  __Pyx_RefNannyFinishContext();
16836  return __pyx_r;
16837  }
16838 
16839  static PyObject *__pyx_pf_8PyClical_68atan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
16840  PyObject *__pyx_r = NULL;
16841  __Pyx_RefNannyDeclarations
16842  PyObject *__pyx_t_1 = NULL;
16843  struct __pyx_opt_args_8PyClical_atan __pyx_t_2;
16844  int __pyx_lineno = 0;
16845  const char *__pyx_filename = NULL;
16846  int __pyx_clineno = 0;
16847  __Pyx_RefNannySetupContext("atan", 0);
16848  __Pyx_XDECREF(__pyx_r);
16849  __pyx_t_2.__pyx_n = 1;
16850  __pyx_t_2.i = __pyx_v_i;
16851  __pyx_t_1 = __pyx_f_8PyClical_atan(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16852  __Pyx_GOTREF(__pyx_t_1);
16853  __pyx_r = __pyx_t_1;
16854  __pyx_t_1 = 0;
16855  goto __pyx_L0;
16856 
16857  /* function exit code */
16858  __pyx_L1_error:;
16859  __Pyx_XDECREF(__pyx_t_1);
16860  __Pyx_AddTraceback("PyClical.atan", __pyx_clineno, __pyx_lineno, __pyx_filename);
16861  __pyx_r = NULL;
16862  __pyx_L0:;
16863  __Pyx_XGIVEREF(__pyx_r);
16864  __Pyx_RefNannyFinishContext();
16865  return __pyx_r;
16866  }
16867 
16868  /* "PyClical.pyx":1786
16869  * return clifford().wrap( glucat.atan(toClifford(obj)) )
16870  *
16871  * cpdef inline tanh(obj): # <<<<<<<<<<<<<<
16872  * """
16873  * Hyperbolic tangent of multivector.
16874  */
16875 
16876  static PyObject *__pyx_pw_8PyClical_71tanh(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
16877  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_tanh(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
16878  PyObject *__pyx_r = NULL;
16879  __Pyx_RefNannyDeclarations
16880  PyObject *__pyx_t_1 = NULL;
16881  PyObject *__pyx_t_2 = NULL;
16882  PyObject *__pyx_t_3 = NULL;
16883  PyObject *__pyx_t_4 = NULL;
16884  PyObject *__pyx_t_5 = NULL;
16885  PyObject *__pyx_t_6 = NULL;
16886  PyObject *__pyx_t_7 = NULL;
16887  PyObject *__pyx_t_8 = NULL;
16888  int __pyx_lineno = 0;
16889  const char *__pyx_filename = NULL;
16890  int __pyx_clineno = 0;
16891  __Pyx_RefNannySetupContext("tanh", 0);
16892 
16893  /* "PyClical.pyx":1793
16894  * {1,2}
16895  * """
16896  * try: # <<<<<<<<<<<<<<
16897  * return math.tanh(obj)
16898  * except:
16899  */
16900  {
16901  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
16902  __Pyx_XGOTREF(__pyx_t_1);
16903  __Pyx_XGOTREF(__pyx_t_2);
16904  __Pyx_XGOTREF(__pyx_t_3);
16905  /*try:*/ {
16906 
16907  /* "PyClical.pyx":1794
16908  * """
16909  * try:
16910  * return math.tanh(obj) # <<<<<<<<<<<<<<
16911  * except:
16912  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
16913  */
16914  __Pyx_XDECREF(__pyx_r);
16915  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16916  __Pyx_GOTREF(__pyx_t_5);
16917  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tanh); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16918  __Pyx_GOTREF(__pyx_t_6);
16919  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16920  __pyx_t_5 = NULL;
16921  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
16922  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
16923  if (likely(__pyx_t_5)) {
16924  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
16925  __Pyx_INCREF(__pyx_t_5);
16926  __Pyx_INCREF(function);
16927  __Pyx_DECREF_SET(__pyx_t_6, function);
16928  }
16929  }
16930  if (!__pyx_t_5) {
16931  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16932  __Pyx_GOTREF(__pyx_t_4);
16933  } else {
16934  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16935  __Pyx_GOTREF(__pyx_t_7);
16936  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
16937  __Pyx_INCREF(__pyx_v_obj);
16938  __Pyx_GIVEREF(__pyx_v_obj);
16939  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_obj);
16940  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16941  __Pyx_GOTREF(__pyx_t_4);
16942  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16943  }
16944  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
16945  __pyx_r = __pyx_t_4;
16946  __pyx_t_4 = 0;
16947  goto __pyx_L7_try_return;
16948 
16949  /* "PyClical.pyx":1793
16950  * {1,2}
16951  * """
16952  * try: # <<<<<<<<<<<<<<
16953  * return math.tanh(obj)
16954  * except:
16955  */
16956  }
16957  __pyx_L3_error:;
16958  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
16959  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
16960  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
16961  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
16962 
16963  /* "PyClical.pyx":1795
16964  * try:
16965  * return math.tanh(obj)
16966  * except: # <<<<<<<<<<<<<<
16967  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
16968  *
16969  */
16970  /*except:*/ {
16971  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
16972  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1795; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
16973  __Pyx_GOTREF(__pyx_t_4);
16974  __Pyx_GOTREF(__pyx_t_6);
16975  __Pyx_GOTREF(__pyx_t_7);
16976 
16977  /* "PyClical.pyx":1796
16978  * return math.tanh(obj)
16979  * except:
16980  * return clifford().wrap( glucat.tanh(toClifford(obj)) ) # <<<<<<<<<<<<<<
16981  *
16982  * cpdef inline atanh(obj,i = None):
16983  */
16984  __Pyx_XDECREF(__pyx_r);
16985  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
16986  __Pyx_GOTREF(__pyx_t_5);
16987  __pyx_t_8 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_5), tanh(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
16988  __Pyx_GOTREF(__pyx_t_8);
16989  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16990  __pyx_r = __pyx_t_8;
16991  __pyx_t_8 = 0;
16992  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16993  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
16994  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16995  goto __pyx_L6_except_return;
16996  }
16997  __pyx_L5_except_error:;
16998 
16999  /* "PyClical.pyx":1793
17000  * {1,2}
17001  * """
17002  * try: # <<<<<<<<<<<<<<
17003  * return math.tanh(obj)
17004  * except:
17005  */
17006  __Pyx_XGIVEREF(__pyx_t_1);
17007  __Pyx_XGIVEREF(__pyx_t_2);
17008  __Pyx_XGIVEREF(__pyx_t_3);
17009  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
17010  goto __pyx_L1_error;
17011  __pyx_L7_try_return:;
17012  __Pyx_XGIVEREF(__pyx_t_1);
17013  __Pyx_XGIVEREF(__pyx_t_2);
17014  __Pyx_XGIVEREF(__pyx_t_3);
17015  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
17016  goto __pyx_L0;
17017  __pyx_L6_except_return:;
17018  __Pyx_XGIVEREF(__pyx_t_1);
17019  __Pyx_XGIVEREF(__pyx_t_2);
17020  __Pyx_XGIVEREF(__pyx_t_3);
17021  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
17022  goto __pyx_L0;
17023  }
17024 
17025  /* "PyClical.pyx":1786
17026  * return clifford().wrap( glucat.atan(toClifford(obj)) )
17027  *
17028  * cpdef inline tanh(obj): # <<<<<<<<<<<<<<
17029  * """
17030  * Hyperbolic tangent of multivector.
17031  */
17032 
17033  /* function exit code */
17034  __pyx_L1_error:;
17035  __Pyx_XDECREF(__pyx_t_4);
17036  __Pyx_XDECREF(__pyx_t_5);
17037  __Pyx_XDECREF(__pyx_t_6);
17038  __Pyx_XDECREF(__pyx_t_7);
17039  __Pyx_XDECREF(__pyx_t_8);
17040  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
17041  __pyx_r = 0;
17042  __pyx_L0:;
17043  __Pyx_XGIVEREF(__pyx_r);
17044  __Pyx_RefNannyFinishContext();
17045  return __pyx_r;
17046  }
17047 
17048  /* Python wrapper */
17049  static PyObject *__pyx_pw_8PyClical_71tanh(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17050  static char __pyx_doc_8PyClical_70tanh[] = "\n Hyperbolic tangent of multivector.\n\n >>> x=clifford(\"{1,2}\") * pi/4; print tanh(x)\n {1,2}\n ";
17051  static PyObject *__pyx_pw_8PyClical_71tanh(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17052  PyObject *__pyx_r = 0;
17053  __Pyx_RefNannyDeclarations
17054  __Pyx_RefNannySetupContext("tanh (wrapper)", 0);
17055  __pyx_r = __pyx_pf_8PyClical_70tanh(__pyx_self, ((PyObject *)__pyx_v_obj));
17056 
17057  /* function exit code */
17058  __Pyx_RefNannyFinishContext();
17059  return __pyx_r;
17060  }
17061 
17062  static PyObject *__pyx_pf_8PyClical_70tanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17063  PyObject *__pyx_r = NULL;
17064  __Pyx_RefNannyDeclarations
17065  PyObject *__pyx_t_1 = NULL;
17066  int __pyx_lineno = 0;
17067  const char *__pyx_filename = NULL;
17068  int __pyx_clineno = 0;
17069  __Pyx_RefNannySetupContext("tanh", 0);
17070  __Pyx_XDECREF(__pyx_r);
17071  __pyx_t_1 = __pyx_f_8PyClical_tanh(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17072  __Pyx_GOTREF(__pyx_t_1);
17073  __pyx_r = __pyx_t_1;
17074  __pyx_t_1 = 0;
17075  goto __pyx_L0;
17076 
17077  /* function exit code */
17078  __pyx_L1_error:;
17079  __Pyx_XDECREF(__pyx_t_1);
17080  __Pyx_AddTraceback("PyClical.tanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
17081  __pyx_r = NULL;
17082  __pyx_L0:;
17083  __Pyx_XGIVEREF(__pyx_r);
17084  __Pyx_RefNannyFinishContext();
17085  return __pyx_r;
17086  }
17087 
17088  /* "PyClical.pyx":1798
17089  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
17090  *
17091  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
17092  * """
17093  * Inverse hyperbolic tangent of multivector with optional complexifier.
17094  */
17095 
17096  static PyObject *__pyx_pw_8PyClical_73atanh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
17097  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) {
17098  PyObject *__pyx_v_i = ((PyObject *)Py_None);
17099  PyObject *__pyx_r = NULL;
17100  __Pyx_RefNannyDeclarations
17101  int __pyx_t_1;
17102  int __pyx_t_2;
17103  PyObject *__pyx_t_3 = NULL;
17104  Clifford __pyx_t_4;
17105  PyObject *__pyx_t_5 = NULL;
17106  PyObject *__pyx_t_6 = NULL;
17107  PyObject *__pyx_t_7 = NULL;
17108  PyObject *__pyx_t_8 = NULL;
17109  PyObject *__pyx_t_9 = NULL;
17110  PyObject *__pyx_t_10 = NULL;
17111  PyObject *__pyx_t_11 = NULL;
17112  int __pyx_lineno = 0;
17113  const char *__pyx_filename = NULL;
17114  int __pyx_clineno = 0;
17115  __Pyx_RefNannySetupContext("atanh", 0);
17116  if (__pyx_optional_args) {
17117  if (__pyx_optional_args->__pyx_n > 0) {
17118  __pyx_v_i = __pyx_optional_args->i;
17119  }
17120  }
17121 
17122  /* "PyClical.pyx":1807
17123  * {1,2}
17124  * """
17125  * if not (i is None): # <<<<<<<<<<<<<<
17126  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
17127  * else:
17128  */
17129  __pyx_t_1 = (__pyx_v_i != Py_None);
17130  __pyx_t_2 = (__pyx_t_1 != 0);
17131  if (__pyx_t_2) {
17132 
17133  /* "PyClical.pyx":1808
17134  * """
17135  * if not (i is None):
17136  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) ) # <<<<<<<<<<<<<<
17137  * else:
17138  * try:
17139  */
17140  __Pyx_XDECREF(__pyx_r);
17141  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17142  __Pyx_GOTREF(__pyx_t_3);
17143  try {
17144  __pyx_t_4 = atanh(__pyx_f_8PyClical_toClifford(__pyx_v_obj), __pyx_f_8PyClical_toClifford(__pyx_v_i));
17145  } catch(...) {
17146  __Pyx_CppExn2PyErr();
17147  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17148  }
17149  __pyx_t_5 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17150  __Pyx_GOTREF(__pyx_t_5);
17151  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17152  __pyx_r = __pyx_t_5;
17153  __pyx_t_5 = 0;
17154  goto __pyx_L0;
17155 
17156  /* "PyClical.pyx":1807
17157  * {1,2}
17158  * """
17159  * if not (i is None): # <<<<<<<<<<<<<<
17160  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
17161  * else:
17162  */
17163  }
17164 
17165  /* "PyClical.pyx":1810
17166  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
17167  * else:
17168  * try: # <<<<<<<<<<<<<<
17169  * return math.atanh(obj)
17170  * except:
17171  */
17172  /*else*/ {
17173  {
17174  __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
17175  __Pyx_XGOTREF(__pyx_t_6);
17176  __Pyx_XGOTREF(__pyx_t_7);
17177  __Pyx_XGOTREF(__pyx_t_8);
17178  /*try:*/ {
17179 
17180  /* "PyClical.pyx":1811
17181  * else:
17182  * try:
17183  * return math.atanh(obj) # <<<<<<<<<<<<<<
17184  * except:
17185  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
17186  */
17187  __Pyx_XDECREF(__pyx_r);
17188  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
17189  __Pyx_GOTREF(__pyx_t_3);
17190  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_atanh); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
17191  __Pyx_GOTREF(__pyx_t_9);
17192  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17193  __pyx_t_3 = NULL;
17194  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
17195  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
17196  if (likely(__pyx_t_3)) {
17197  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
17198  __Pyx_INCREF(__pyx_t_3);
17199  __Pyx_INCREF(function);
17200  __Pyx_DECREF_SET(__pyx_t_9, function);
17201  }
17202  }
17203  if (!__pyx_t_3) {
17204  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
17205  __Pyx_GOTREF(__pyx_t_5);
17206  } else {
17207  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
17208  __Pyx_GOTREF(__pyx_t_10);
17209  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
17210  __Pyx_INCREF(__pyx_v_obj);
17211  __Pyx_GIVEREF(__pyx_v_obj);
17212  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_obj);
17213  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
17214  __Pyx_GOTREF(__pyx_t_5);
17215  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
17216  }
17217  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
17218  __pyx_r = __pyx_t_5;
17219  __pyx_t_5 = 0;
17220  goto __pyx_L8_try_return;
17221 
17222  /* "PyClical.pyx":1810
17223  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
17224  * else:
17225  * try: # <<<<<<<<<<<<<<
17226  * return math.atanh(obj)
17227  * except:
17228  */
17229  }
17230  __pyx_L4_error:;
17231  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17232  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
17233  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
17234  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17235 
17236  /* "PyClical.pyx":1812
17237  * try:
17238  * return math.atanh(obj)
17239  * except: # <<<<<<<<<<<<<<
17240  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
17241  *
17242  */
17243  /*except:*/ {
17244  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
17245  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1812; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
17246  __Pyx_GOTREF(__pyx_t_5);
17247  __Pyx_GOTREF(__pyx_t_9);
17248  __Pyx_GOTREF(__pyx_t_10);
17249 
17250  /* "PyClical.pyx":1813
17251  * return math.atanh(obj)
17252  * except:
17253  * return clifford().wrap( glucat.atanh(toClifford(obj)) ) # <<<<<<<<<<<<<<
17254  *
17255  * cpdef inline random_clifford(index_set ixt, fill = 1.0):
17256  */
17257  __Pyx_XDECREF(__pyx_r);
17258  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1813; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
17259  __Pyx_GOTREF(__pyx_t_3);
17260  __pyx_t_11 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_3), atanh(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1813; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
17261  __Pyx_GOTREF(__pyx_t_11);
17262  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17263  __pyx_r = __pyx_t_11;
17264  __pyx_t_11 = 0;
17265  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17266  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
17267  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
17268  goto __pyx_L7_except_return;
17269  }
17270  __pyx_L6_except_error:;
17271 
17272  /* "PyClical.pyx":1810
17273  * return clifford().wrap( glucat.atanh(toClifford(obj), toClifford(i)) )
17274  * else:
17275  * try: # <<<<<<<<<<<<<<
17276  * return math.atanh(obj)
17277  * except:
17278  */
17279  __Pyx_XGIVEREF(__pyx_t_6);
17280  __Pyx_XGIVEREF(__pyx_t_7);
17281  __Pyx_XGIVEREF(__pyx_t_8);
17282  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
17283  goto __pyx_L1_error;
17284  __pyx_L8_try_return:;
17285  __Pyx_XGIVEREF(__pyx_t_6);
17286  __Pyx_XGIVEREF(__pyx_t_7);
17287  __Pyx_XGIVEREF(__pyx_t_8);
17288  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
17289  goto __pyx_L0;
17290  __pyx_L7_except_return:;
17291  __Pyx_XGIVEREF(__pyx_t_6);
17292  __Pyx_XGIVEREF(__pyx_t_7);
17293  __Pyx_XGIVEREF(__pyx_t_8);
17294  __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
17295  goto __pyx_L0;
17296  }
17297  }
17298 
17299  /* "PyClical.pyx":1798
17300  * return clifford().wrap( glucat.tanh(toClifford(obj)) )
17301  *
17302  * cpdef inline atanh(obj,i = None): # <<<<<<<<<<<<<<
17303  * """
17304  * Inverse hyperbolic tangent of multivector with optional complexifier.
17305  */
17306 
17307  /* function exit code */
17308  __pyx_L1_error:;
17309  __Pyx_XDECREF(__pyx_t_3);
17310  __Pyx_XDECREF(__pyx_t_5);
17311  __Pyx_XDECREF(__pyx_t_9);
17312  __Pyx_XDECREF(__pyx_t_10);
17313  __Pyx_XDECREF(__pyx_t_11);
17314  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
17315  __pyx_r = 0;
17316  __pyx_L0:;
17317  __Pyx_XGIVEREF(__pyx_r);
17318  __Pyx_RefNannyFinishContext();
17319  return __pyx_r;
17320  }
17321 
17322  /* Python wrapper */
17323  static PyObject *__pyx_pw_8PyClical_73atanh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
17324  static char __pyx_doc_8PyClical_72atanh[] = "\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 ";
17325  static PyObject *__pyx_pw_8PyClical_73atanh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
17326  PyObject *__pyx_v_obj = 0;
17327  PyObject *__pyx_v_i = 0;
17328  int __pyx_lineno = 0;
17329  const char *__pyx_filename = NULL;
17330  int __pyx_clineno = 0;
17331  PyObject *__pyx_r = 0;
17332  __Pyx_RefNannyDeclarations
17333  __Pyx_RefNannySetupContext("atanh (wrapper)", 0);
17334  {
17335  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_i,0};
17336  PyObject* values[2] = {0,0};
17337  values[1] = ((PyObject *)Py_None);
17338  if (unlikely(__pyx_kwds)) {
17339  Py_ssize_t kw_args;
17340  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
17341  switch (pos_args) {
17342  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
17343  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
17344  case 0: break;
17345  default: goto __pyx_L5_argtuple_error;
17346  }
17347  kw_args = PyDict_Size(__pyx_kwds);
17348  switch (pos_args) {
17349  case 0:
17350  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
17351  else goto __pyx_L5_argtuple_error;
17352  case 1:
17353  if (kw_args > 0) {
17354  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i);
17355  if (value) { values[1] = value; kw_args--; }
17356  }
17357  }
17358  if (unlikely(kw_args > 0)) {
17359  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "atanh") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
17360  }
17361  } else {
17362  switch (PyTuple_GET_SIZE(__pyx_args)) {
17363  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
17364  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
17365  break;
17366  default: goto __pyx_L5_argtuple_error;
17367  }
17368  }
17369  __pyx_v_obj = values[0];
17370  __pyx_v_i = values[1];
17371  }
17372  goto __pyx_L4_argument_unpacking_done;
17373  __pyx_L5_argtuple_error:;
17374  __Pyx_RaiseArgtupleInvalid("atanh", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
17375  __pyx_L3_error:;
17376  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
17377  __Pyx_RefNannyFinishContext();
17378  return NULL;
17379  __pyx_L4_argument_unpacking_done:;
17380  __pyx_r = __pyx_pf_8PyClical_72atanh(__pyx_self, __pyx_v_obj, __pyx_v_i);
17381 
17382  /* function exit code */
17383  __Pyx_RefNannyFinishContext();
17384  return __pyx_r;
17385  }
17386 
17387  static PyObject *__pyx_pf_8PyClical_72atanh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_i) {
17388  PyObject *__pyx_r = NULL;
17389  __Pyx_RefNannyDeclarations
17390  PyObject *__pyx_t_1 = NULL;
17391  struct __pyx_opt_args_8PyClical_atanh __pyx_t_2;
17392  int __pyx_lineno = 0;
17393  const char *__pyx_filename = NULL;
17394  int __pyx_clineno = 0;
17395  __Pyx_RefNannySetupContext("atanh", 0);
17396  __Pyx_XDECREF(__pyx_r);
17397  __pyx_t_2.__pyx_n = 1;
17398  __pyx_t_2.i = __pyx_v_i;
17399  __pyx_t_1 = __pyx_f_8PyClical_atanh(__pyx_v_obj, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17400  __Pyx_GOTREF(__pyx_t_1);
17401  __pyx_r = __pyx_t_1;
17402  __pyx_t_1 = 0;
17403  goto __pyx_L0;
17404 
17405  /* function exit code */
17406  __pyx_L1_error:;
17407  __Pyx_XDECREF(__pyx_t_1);
17408  __Pyx_AddTraceback("PyClical.atanh", __pyx_clineno, __pyx_lineno, __pyx_filename);
17409  __pyx_r = NULL;
17410  __pyx_L0:;
17411  __Pyx_XGIVEREF(__pyx_r);
17412  __Pyx_RefNannyFinishContext();
17413  return __pyx_r;
17414  }
17415 
17416  /* "PyClical.pyx":1815
17417  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
17418  *
17419  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
17420  * """
17421  * Random multivector within a frame.
17422  */
17423 
17424  static PyObject *__pyx_pw_8PyClical_75random_clifford(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
17425  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) {
17426  PyObject *__pyx_v_fill = ((PyObject *)__pyx_float_1_0);
17427  PyObject *__pyx_r = NULL;
17428  __Pyx_RefNannyDeclarations
17429  PyObject *__pyx_t_1 = NULL;
17430  PyObject *__pyx_t_2 = NULL;
17431  scalar_t __pyx_t_3;
17432  PyObject *__pyx_t_4 = NULL;
17433  int __pyx_lineno = 0;
17434  const char *__pyx_filename = NULL;
17435  int __pyx_clineno = 0;
17436  __Pyx_RefNannySetupContext("random_clifford", 0);
17437  if (__pyx_optional_args) {
17438  if (__pyx_optional_args->__pyx_n > 0) {
17439  __pyx_v_fill = __pyx_optional_args->fill;
17440  }
17441  }
17442 
17443  /* "PyClical.pyx":1822
17444  * {-3,-1,2}
17445  * """
17446  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) ) # <<<<<<<<<<<<<<
17447  *
17448  * cpdef inline cga3(obj):
17449  */
17450  __Pyx_XDECREF(__pyx_r);
17451  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17452  __Pyx_GOTREF(__pyx_t_1);
17453  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17454  __Pyx_GOTREF(__pyx_t_2);
17455  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fill); if (unlikely((__pyx_t_3 == (scalar_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17456  __pyx_t_4 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), ((struct __pyx_obj_8PyClical_clifford *)__pyx_t_2)->instance->random(__pyx_f_8PyClical_9index_set_unwrap(__pyx_v_ixt), ((scalar_t)__pyx_t_3))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17457  __Pyx_GOTREF(__pyx_t_4);
17458  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17459  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17460  __pyx_r = __pyx_t_4;
17461  __pyx_t_4 = 0;
17462  goto __pyx_L0;
17463 
17464  /* "PyClical.pyx":1815
17465  * return clifford().wrap( glucat.atanh(toClifford(obj)) )
17466  *
17467  * cpdef inline random_clifford(index_set ixt, fill = 1.0): # <<<<<<<<<<<<<<
17468  * """
17469  * Random multivector within a frame.
17470  */
17471 
17472  /* function exit code */
17473  __pyx_L1_error:;
17474  __Pyx_XDECREF(__pyx_t_1);
17475  __Pyx_XDECREF(__pyx_t_2);
17476  __Pyx_XDECREF(__pyx_t_4);
17477  __Pyx_AddTraceback("PyClical.random_clifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
17478  __pyx_r = 0;
17479  __pyx_L0:;
17480  __Pyx_XGIVEREF(__pyx_r);
17481  __Pyx_RefNannyFinishContext();
17482  return __pyx_r;
17483  }
17484 
17485  /* Python wrapper */
17486  static PyObject *__pyx_pw_8PyClical_75random_clifford(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
17487  static char __pyx_doc_8PyClical_74random_clifford[] = "\n Random multivector within a frame.\n\n >>> print random_clifford(index_set({-3,-1,2})).frame()\n {-3,-1,2}\n ";
17488  static PyObject *__pyx_pw_8PyClical_75random_clifford(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
17489  struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt = 0;
17490  PyObject *__pyx_v_fill = 0;
17491  int __pyx_lineno = 0;
17492  const char *__pyx_filename = NULL;
17493  int __pyx_clineno = 0;
17494  PyObject *__pyx_r = 0;
17495  __Pyx_RefNannyDeclarations
17496  __Pyx_RefNannySetupContext("random_clifford (wrapper)", 0);
17497  {
17498  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ixt,&__pyx_n_s_fill,0};
17499  PyObject* values[2] = {0,0};
17500  values[1] = ((PyObject *)__pyx_float_1_0);
17501  if (unlikely(__pyx_kwds)) {
17502  Py_ssize_t kw_args;
17503  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
17504  switch (pos_args) {
17505  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
17506  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
17507  case 0: break;
17508  default: goto __pyx_L5_argtuple_error;
17509  }
17510  kw_args = PyDict_Size(__pyx_kwds);
17511  switch (pos_args) {
17512  case 0:
17513  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ixt)) != 0)) kw_args--;
17514  else goto __pyx_L5_argtuple_error;
17515  case 1:
17516  if (kw_args > 0) {
17517  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
17518  if (value) { values[1] = value; kw_args--; }
17519  }
17520  }
17521  if (unlikely(kw_args > 0)) {
17522  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "random_clifford") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
17523  }
17524  } else {
17525  switch (PyTuple_GET_SIZE(__pyx_args)) {
17526  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
17527  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
17528  break;
17529  default: goto __pyx_L5_argtuple_error;
17530  }
17531  }
17532  __pyx_v_ixt = ((struct __pyx_obj_8PyClical_index_set *)values[0]);
17533  __pyx_v_fill = values[1];
17534  }
17535  goto __pyx_L4_argument_unpacking_done;
17536  __pyx_L5_argtuple_error:;
17537  __Pyx_RaiseArgtupleInvalid("random_clifford", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
17538  __pyx_L3_error:;
17539  __Pyx_AddTraceback("PyClical.random_clifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
17540  __Pyx_RefNannyFinishContext();
17541  return NULL;
17542  __pyx_L4_argument_unpacking_done:;
17543  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ixt), __pyx_ptype_8PyClical_index_set, 1, "ixt", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17544  __pyx_r = __pyx_pf_8PyClical_74random_clifford(__pyx_self, __pyx_v_ixt, __pyx_v_fill);
17545 
17546  /* function exit code */
17547  goto __pyx_L0;
17548  __pyx_L1_error:;
17549  __pyx_r = NULL;
17550  __pyx_L0:;
17551  __Pyx_RefNannyFinishContext();
17552  return __pyx_r;
17553  }
17554 
17555  static PyObject *__pyx_pf_8PyClical_74random_clifford(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8PyClical_index_set *__pyx_v_ixt, PyObject *__pyx_v_fill) {
17556  PyObject *__pyx_r = NULL;
17557  __Pyx_RefNannyDeclarations
17558  PyObject *__pyx_t_1 = NULL;
17559  struct __pyx_opt_args_8PyClical_random_clifford __pyx_t_2;
17560  int __pyx_lineno = 0;
17561  const char *__pyx_filename = NULL;
17562  int __pyx_clineno = 0;
17563  __Pyx_RefNannySetupContext("random_clifford", 0);
17564  __Pyx_XDECREF(__pyx_r);
17565  __pyx_t_2.__pyx_n = 1;
17566  __pyx_t_2.fill = __pyx_v_fill;
17567  __pyx_t_1 = __pyx_f_8PyClical_random_clifford(__pyx_v_ixt, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17568  __Pyx_GOTREF(__pyx_t_1);
17569  __pyx_r = __pyx_t_1;
17570  __pyx_t_1 = 0;
17571  goto __pyx_L0;
17572 
17573  /* function exit code */
17574  __pyx_L1_error:;
17575  __Pyx_XDECREF(__pyx_t_1);
17576  __Pyx_AddTraceback("PyClical.random_clifford", __pyx_clineno, __pyx_lineno, __pyx_filename);
17577  __pyx_r = NULL;
17578  __pyx_L0:;
17579  __Pyx_XGIVEREF(__pyx_r);
17580  __Pyx_RefNannyFinishContext();
17581  return __pyx_r;
17582  }
17583 
17584  /* "PyClical.pyx":1824
17585  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) )
17586  *
17587  * cpdef inline cga3(obj): # <<<<<<<<<<<<<<
17588  * """
17589  * Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.
17590  */
17591 
17592  static PyObject *__pyx_pw_8PyClical_77cga3(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17593  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
17594  PyObject *__pyx_r = NULL;
17595  __Pyx_RefNannyDeclarations
17596  PyObject *__pyx_t_1 = NULL;
17597  PyObject *__pyx_t_2 = NULL;
17598  int __pyx_lineno = 0;
17599  const char *__pyx_filename = NULL;
17600  int __pyx_clineno = 0;
17601  __Pyx_RefNannySetupContext("cga3", 0);
17602 
17603  /* "PyClical.pyx":1831
17604  * 87{-1}+4{1}+18{2}+2{3}+85{4}
17605  * """
17606  * return clifford().wrap( glucat.cga3(toClifford(obj)) ) # <<<<<<<<<<<<<<
17607  *
17608  * cpdef inline cga3std(obj):
17609  */
17610  __Pyx_XDECREF(__pyx_r);
17611  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17612  __Pyx_GOTREF(__pyx_t_1);
17613  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), cga3::cga3(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17614  __Pyx_GOTREF(__pyx_t_2);
17615  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17616  __pyx_r = __pyx_t_2;
17617  __pyx_t_2 = 0;
17618  goto __pyx_L0;
17619 
17620  /* "PyClical.pyx":1824
17621  * return clifford().wrap( clifford().instance.random(ixt.unwrap(), <scalar_t>fill) )
17622  *
17623  * cpdef inline cga3(obj): # <<<<<<<<<<<<<<
17624  * """
17625  * Convert Euclidean 3D multivector to Conformal Geometric Algebra using Doran and Lasenby definition.
17626  */
17627 
17628  /* function exit code */
17629  __pyx_L1_error:;
17630  __Pyx_XDECREF(__pyx_t_1);
17631  __Pyx_XDECREF(__pyx_t_2);
17632  __Pyx_AddTraceback("PyClical.cga3", __pyx_clineno, __pyx_lineno, __pyx_filename);
17633  __pyx_r = 0;
17634  __pyx_L0:;
17635  __Pyx_XGIVEREF(__pyx_r);
17636  __Pyx_RefNannyFinishContext();
17637  return __pyx_r;
17638  }
17639 
17640  /* Python wrapper */
17641  static PyObject *__pyx_pw_8PyClical_77cga3(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17642  static char __pyx_doc_8PyClical_76cga3[] = "\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 ";
17643  static PyObject *__pyx_pw_8PyClical_77cga3(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17644  PyObject *__pyx_r = 0;
17645  __Pyx_RefNannyDeclarations
17646  __Pyx_RefNannySetupContext("cga3 (wrapper)", 0);
17647  __pyx_r = __pyx_pf_8PyClical_76cga3(__pyx_self, ((PyObject *)__pyx_v_obj));
17648 
17649  /* function exit code */
17650  __Pyx_RefNannyFinishContext();
17651  return __pyx_r;
17652  }
17653 
17654  static PyObject *__pyx_pf_8PyClical_76cga3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17655  PyObject *__pyx_r = NULL;
17656  __Pyx_RefNannyDeclarations
17657  PyObject *__pyx_t_1 = NULL;
17658  int __pyx_lineno = 0;
17659  const char *__pyx_filename = NULL;
17660  int __pyx_clineno = 0;
17661  __Pyx_RefNannySetupContext("cga3", 0);
17662  __Pyx_XDECREF(__pyx_r);
17663  __pyx_t_1 = __pyx_f_8PyClical_cga3(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17664  __Pyx_GOTREF(__pyx_t_1);
17665  __pyx_r = __pyx_t_1;
17666  __pyx_t_1 = 0;
17667  goto __pyx_L0;
17668 
17669  /* function exit code */
17670  __pyx_L1_error:;
17671  __Pyx_XDECREF(__pyx_t_1);
17672  __Pyx_AddTraceback("PyClical.cga3", __pyx_clineno, __pyx_lineno, __pyx_filename);
17673  __pyx_r = NULL;
17674  __pyx_L0:;
17675  __Pyx_XGIVEREF(__pyx_r);
17676  __Pyx_RefNannyFinishContext();
17677  return __pyx_r;
17678  }
17679 
17680  /* "PyClical.pyx":1833
17681  * return clifford().wrap( glucat.cga3(toClifford(obj)) )
17682  *
17683  * cpdef inline cga3std(obj): # <<<<<<<<<<<<<<
17684  * """
17685  * Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.
17686  */
17687 
17688  static PyObject *__pyx_pw_8PyClical_79cga3std(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17689  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_cga3std(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
17690  PyObject *__pyx_r = NULL;
17691  __Pyx_RefNannyDeclarations
17692  PyObject *__pyx_t_1 = NULL;
17693  PyObject *__pyx_t_2 = NULL;
17694  int __pyx_lineno = 0;
17695  const char *__pyx_filename = NULL;
17696  int __pyx_clineno = 0;
17697  __Pyx_RefNannySetupContext("cga3std", 0);
17698 
17699  /* "PyClical.pyx":1842
17700  * 0
17701  * """
17702  * return clifford().wrap( glucat.cga3std(toClifford(obj)) ) # <<<<<<<<<<<<<<
17703  *
17704  * cpdef inline agc3(obj):
17705  */
17706  __Pyx_XDECREF(__pyx_r);
17707  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17708  __Pyx_GOTREF(__pyx_t_1);
17709  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), cga3::cga3std(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17710  __Pyx_GOTREF(__pyx_t_2);
17711  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17712  __pyx_r = __pyx_t_2;
17713  __pyx_t_2 = 0;
17714  goto __pyx_L0;
17715 
17716  /* "PyClical.pyx":1833
17717  * return clifford().wrap( glucat.cga3(toClifford(obj)) )
17718  *
17719  * cpdef inline cga3std(obj): # <<<<<<<<<<<<<<
17720  * """
17721  * Convert CGA3 null vector to standard conformal null vector using Doran and Lasenby definition.
17722  */
17723 
17724  /* function exit code */
17725  __pyx_L1_error:;
17726  __Pyx_XDECREF(__pyx_t_1);
17727  __Pyx_XDECREF(__pyx_t_2);
17728  __Pyx_AddTraceback("PyClical.cga3std", __pyx_clineno, __pyx_lineno, __pyx_filename);
17729  __pyx_r = 0;
17730  __pyx_L0:;
17731  __Pyx_XGIVEREF(__pyx_r);
17732  __Pyx_RefNannyFinishContext();
17733  return __pyx_r;
17734  }
17735 
17736  /* Python wrapper */
17737  static PyObject *__pyx_pw_8PyClical_79cga3std(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17738  static char __pyx_doc_8PyClical_78cga3std[] = "\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 ";
17739  static PyObject *__pyx_pw_8PyClical_79cga3std(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17740  PyObject *__pyx_r = 0;
17741  __Pyx_RefNannyDeclarations
17742  __Pyx_RefNannySetupContext("cga3std (wrapper)", 0);
17743  __pyx_r = __pyx_pf_8PyClical_78cga3std(__pyx_self, ((PyObject *)__pyx_v_obj));
17744 
17745  /* function exit code */
17746  __Pyx_RefNannyFinishContext();
17747  return __pyx_r;
17748  }
17749 
17750  static PyObject *__pyx_pf_8PyClical_78cga3std(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17751  PyObject *__pyx_r = NULL;
17752  __Pyx_RefNannyDeclarations
17753  PyObject *__pyx_t_1 = NULL;
17754  int __pyx_lineno = 0;
17755  const char *__pyx_filename = NULL;
17756  int __pyx_clineno = 0;
17757  __Pyx_RefNannySetupContext("cga3std", 0);
17758  __Pyx_XDECREF(__pyx_r);
17759  __pyx_t_1 = __pyx_f_8PyClical_cga3std(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17760  __Pyx_GOTREF(__pyx_t_1);
17761  __pyx_r = __pyx_t_1;
17762  __pyx_t_1 = 0;
17763  goto __pyx_L0;
17764 
17765  /* function exit code */
17766  __pyx_L1_error:;
17767  __Pyx_XDECREF(__pyx_t_1);
17768  __Pyx_AddTraceback("PyClical.cga3std", __pyx_clineno, __pyx_lineno, __pyx_filename);
17769  __pyx_r = NULL;
17770  __pyx_L0:;
17771  __Pyx_XGIVEREF(__pyx_r);
17772  __Pyx_RefNannyFinishContext();
17773  return __pyx_r;
17774  }
17775 
17776  /* "PyClical.pyx":1844
17777  * return clifford().wrap( glucat.cga3std(toClifford(obj)) )
17778  *
17779  * cpdef inline agc3(obj): # <<<<<<<<<<<<<<
17780  * """
17781  * Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.
17782  */
17783 
17784  static PyObject *__pyx_pw_8PyClical_81agc3(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17785  static CYTHON_INLINE PyObject *__pyx_f_8PyClical_agc3(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
17786  PyObject *__pyx_r = NULL;
17787  __Pyx_RefNannyDeclarations
17788  PyObject *__pyx_t_1 = NULL;
17789  PyObject *__pyx_t_2 = NULL;
17790  int __pyx_lineno = 0;
17791  const char *__pyx_filename = NULL;
17792  int __pyx_clineno = 0;
17793  __Pyx_RefNannySetupContext("agc3", 0);
17794 
17795  /* "PyClical.pyx":1853
17796  * 0
17797  * """
17798  * return clifford().wrap( glucat.agc3(toClifford(obj)) ) # <<<<<<<<<<<<<<
17799  *
17800  * # Some abbreviations.
17801  */
17802  __Pyx_XDECREF(__pyx_r);
17803  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17804  __Pyx_GOTREF(__pyx_t_1);
17805  __pyx_t_2 = __pyx_f_8PyClical_8clifford_wrap(((struct __pyx_obj_8PyClical_clifford *)__pyx_t_1), cga3::agc3(__pyx_f_8PyClical_toClifford(__pyx_v_obj))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17806  __Pyx_GOTREF(__pyx_t_2);
17807  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17808  __pyx_r = __pyx_t_2;
17809  __pyx_t_2 = 0;
17810  goto __pyx_L0;
17811 
17812  /* "PyClical.pyx":1844
17813  * return clifford().wrap( glucat.cga3std(toClifford(obj)) )
17814  *
17815  * cpdef inline agc3(obj): # <<<<<<<<<<<<<<
17816  * """
17817  * Convert CGA3 null vector to Euclidean 3D vector using Doran and Lasenby definition.
17818  */
17819 
17820  /* function exit code */
17821  __pyx_L1_error:;
17822  __Pyx_XDECREF(__pyx_t_1);
17823  __Pyx_XDECREF(__pyx_t_2);
17824  __Pyx_AddTraceback("PyClical.agc3", __pyx_clineno, __pyx_lineno, __pyx_filename);
17825  __pyx_r = 0;
17826  __pyx_L0:;
17827  __Pyx_XGIVEREF(__pyx_r);
17828  __Pyx_RefNannyFinishContext();
17829  return __pyx_r;
17830  }
17831 
17832  /* Python wrapper */
17833  static PyObject *__pyx_pw_8PyClical_81agc3(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17834  static char __pyx_doc_8PyClical_80agc3[] = "\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 ";
17835  static PyObject *__pyx_pw_8PyClical_81agc3(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17836  PyObject *__pyx_r = 0;
17837  __Pyx_RefNannyDeclarations
17838  __Pyx_RefNannySetupContext("agc3 (wrapper)", 0);
17839  __pyx_r = __pyx_pf_8PyClical_80agc3(__pyx_self, ((PyObject *)__pyx_v_obj));
17840 
17841  /* function exit code */
17842  __Pyx_RefNannyFinishContext();
17843  return __pyx_r;
17844  }
17845 
17846  static PyObject *__pyx_pf_8PyClical_80agc3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17847  PyObject *__pyx_r = NULL;
17848  __Pyx_RefNannyDeclarations
17849  PyObject *__pyx_t_1 = NULL;
17850  int __pyx_lineno = 0;
17851  const char *__pyx_filename = NULL;
17852  int __pyx_clineno = 0;
17853  __Pyx_RefNannySetupContext("agc3", 0);
17854  __Pyx_XDECREF(__pyx_r);
17855  __pyx_t_1 = __pyx_f_8PyClical_agc3(__pyx_v_obj, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17856  __Pyx_GOTREF(__pyx_t_1);
17857  __pyx_r = __pyx_t_1;
17858  __pyx_t_1 = 0;
17859  goto __pyx_L0;
17860 
17861  /* function exit code */
17862  __pyx_L1_error:;
17863  __Pyx_XDECREF(__pyx_t_1);
17864  __Pyx_AddTraceback("PyClical.agc3", __pyx_clineno, __pyx_lineno, __pyx_filename);
17865  __pyx_r = NULL;
17866  __pyx_L0:;
17867  __Pyx_XGIVEREF(__pyx_r);
17868  __Pyx_RefNannyFinishContext();
17869  return __pyx_r;
17870  }
17871 
17872  /* "PyClical.pyx":1887
17873  * """
17874  *
17875  * def e(obj): # <<<<<<<<<<<<<<
17876  * """
17877  * Abbreviation for clifford(index_set(obj)).
17878  */
17879 
17880  /* Python wrapper */
17881  static PyObject *__pyx_pw_8PyClical_83e(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
17882  static char __pyx_doc_8PyClical_82e[] = "\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 ";
17883  static PyMethodDef __pyx_mdef_8PyClical_83e = {"e", (PyCFunction)__pyx_pw_8PyClical_83e, METH_O, __pyx_doc_8PyClical_82e};
17884  static PyObject *__pyx_pw_8PyClical_83e(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17885  PyObject *__pyx_r = 0;
17886  __Pyx_RefNannyDeclarations
17887  __Pyx_RefNannySetupContext("e (wrapper)", 0);
17888  __pyx_r = __pyx_pf_8PyClical_82e(__pyx_self, ((PyObject *)__pyx_v_obj));
17889 
17890  /* function exit code */
17891  __Pyx_RefNannyFinishContext();
17892  return __pyx_r;
17893  }
17894 
17895  static PyObject *__pyx_pf_8PyClical_82e(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
17896  PyObject *__pyx_r = NULL;
17897  __Pyx_RefNannyDeclarations
17898  PyObject *__pyx_t_1 = NULL;
17899  PyObject *__pyx_t_2 = NULL;
17900  int __pyx_lineno = 0;
17901  const char *__pyx_filename = NULL;
17902  int __pyx_clineno = 0;
17903  __Pyx_RefNannySetupContext("e", 0);
17904 
17905  /* "PyClical.pyx":1898
17906  * 1
17907  * """
17908  * return clifford(index_set(obj)) # <<<<<<<<<<<<<<
17909  *
17910  * def istpq(p, q):
17911  */
17912  __Pyx_XDECREF(__pyx_r);
17913  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17914  __Pyx_GOTREF(__pyx_t_1);
17915  __Pyx_INCREF(__pyx_v_obj);
17916  __Pyx_GIVEREF(__pyx_v_obj);
17917  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_obj);
17918  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17919  __Pyx_GOTREF(__pyx_t_2);
17920  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17921  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17922  __Pyx_GOTREF(__pyx_t_1);
17923  __Pyx_GIVEREF(__pyx_t_2);
17924  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
17925  __pyx_t_2 = 0;
17926  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17927  __Pyx_GOTREF(__pyx_t_2);
17928  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17929  __pyx_r = __pyx_t_2;
17930  __pyx_t_2 = 0;
17931  goto __pyx_L0;
17932 
17933  /* "PyClical.pyx":1887
17934  * """
17935  *
17936  * def e(obj): # <<<<<<<<<<<<<<
17937  * """
17938  * Abbreviation for clifford(index_set(obj)).
17939  */
17940 
17941  /* function exit code */
17942  __pyx_L1_error:;
17943  __Pyx_XDECREF(__pyx_t_1);
17944  __Pyx_XDECREF(__pyx_t_2);
17945  __Pyx_AddTraceback("PyClical.e", __pyx_clineno, __pyx_lineno, __pyx_filename);
17946  __pyx_r = NULL;
17947  __pyx_L0:;
17948  __Pyx_XGIVEREF(__pyx_r);
17949  __Pyx_RefNannyFinishContext();
17950  return __pyx_r;
17951  }
17952 
17953  /* "PyClical.pyx":1900
17954  * return clifford(index_set(obj))
17955  *
17956  * def istpq(p, q): # <<<<<<<<<<<<<<
17957  * """
17958  * Abbreviation for index_set({-q,...p}).
17959  */
17960 
17961  /* Python wrapper */
17962  static PyObject *__pyx_pw_8PyClical_85istpq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
17963  static char __pyx_doc_8PyClical_84istpq[] = "\n Abbreviation for index_set({-q,...p}).\n\n >>> print istpq(2,3)\n {-3,-2,-1,1,2}\n ";
17964  static PyMethodDef __pyx_mdef_8PyClical_85istpq = {"istpq", (PyCFunction)__pyx_pw_8PyClical_85istpq, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_84istpq};
17965  static PyObject *__pyx_pw_8PyClical_85istpq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
17966  PyObject *__pyx_v_p = 0;
17967  PyObject *__pyx_v_q = 0;
17968  int __pyx_lineno = 0;
17969  const char *__pyx_filename = NULL;
17970  int __pyx_clineno = 0;
17971  PyObject *__pyx_r = 0;
17972  __Pyx_RefNannyDeclarations
17973  __Pyx_RefNannySetupContext("istpq (wrapper)", 0);
17974  {
17975  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_q,0};
17976  PyObject* values[2] = {0,0};
17977  if (unlikely(__pyx_kwds)) {
17978  Py_ssize_t kw_args;
17979  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
17980  switch (pos_args) {
17981  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
17982  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
17983  case 0: break;
17984  default: goto __pyx_L5_argtuple_error;
17985  }
17986  kw_args = PyDict_Size(__pyx_kwds);
17987  switch (pos_args) {
17988  case 0:
17989  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_p)) != 0)) kw_args--;
17990  else goto __pyx_L5_argtuple_error;
17991  case 1:
17992  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_q)) != 0)) kw_args--;
17993  else {
17994  __Pyx_RaiseArgtupleInvalid("istpq", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
17995  }
17996  }
17997  if (unlikely(kw_args > 0)) {
17998  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "istpq") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
17999  }
18000  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
18001  goto __pyx_L5_argtuple_error;
18002  } else {
18003  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
18004  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
18005  }
18006  __pyx_v_p = values[0];
18007  __pyx_v_q = values[1];
18008  }
18009  goto __pyx_L4_argument_unpacking_done;
18010  __pyx_L5_argtuple_error:;
18011  __Pyx_RaiseArgtupleInvalid("istpq", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
18012  __pyx_L3_error:;
18013  __Pyx_AddTraceback("PyClical.istpq", __pyx_clineno, __pyx_lineno, __pyx_filename);
18014  __Pyx_RefNannyFinishContext();
18015  return NULL;
18016  __pyx_L4_argument_unpacking_done:;
18017  __pyx_r = __pyx_pf_8PyClical_84istpq(__pyx_self, __pyx_v_p, __pyx_v_q);
18018 
18019  /* function exit code */
18020  __Pyx_RefNannyFinishContext();
18021  return __pyx_r;
18022  }
18023 
18024  static PyObject *__pyx_pf_8PyClical_84istpq(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_p, PyObject *__pyx_v_q) {
18025  PyObject *__pyx_r = NULL;
18026  __Pyx_RefNannyDeclarations
18027  PyObject *__pyx_t_1 = NULL;
18028  PyObject *__pyx_t_2 = NULL;
18029  PyObject *__pyx_t_3 = NULL;
18030  int __pyx_lineno = 0;
18031  const char *__pyx_filename = NULL;
18032  int __pyx_clineno = 0;
18033  __Pyx_RefNannySetupContext("istpq", 0);
18034 
18035  /* "PyClical.pyx":1907
18036  * {-3,-2,-1,1,2}
18037  * """
18038  * return index_set(set(range(-q,p+1))) # <<<<<<<<<<<<<<
18039  *
18040  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL].
18041  */
18042  __Pyx_XDECREF(__pyx_r);
18043  __pyx_t_1 = PyNumber_Negative(__pyx_v_q); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18044  __Pyx_GOTREF(__pyx_t_1);
18045  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_p, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18046  __Pyx_GOTREF(__pyx_t_2);
18047  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18048  __Pyx_GOTREF(__pyx_t_3);
18049  __Pyx_GIVEREF(__pyx_t_1);
18050  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
18051  __Pyx_GIVEREF(__pyx_t_2);
18052  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
18053  __pyx_t_1 = 0;
18054  __pyx_t_2 = 0;
18055  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18056  __Pyx_GOTREF(__pyx_t_2);
18057  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18058  __pyx_t_3 = PySet_New(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18059  __Pyx_GOTREF(__pyx_t_3);
18060  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18061  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18062  __Pyx_GOTREF(__pyx_t_2);
18063  __Pyx_GIVEREF(__pyx_t_3);
18064  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
18065  __pyx_t_3 = 0;
18066  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_index_set), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18067  __Pyx_GOTREF(__pyx_t_3);
18068  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18069  __pyx_r = __pyx_t_3;
18070  __pyx_t_3 = 0;
18071  goto __pyx_L0;
18072 
18073  /* "PyClical.pyx":1900
18074  * return clifford(index_set(obj))
18075  *
18076  * def istpq(p, q): # <<<<<<<<<<<<<<
18077  * """
18078  * Abbreviation for index_set({-q,...p}).
18079  */
18080 
18081  /* function exit code */
18082  __pyx_L1_error:;
18083  __Pyx_XDECREF(__pyx_t_1);
18084  __Pyx_XDECREF(__pyx_t_2);
18085  __Pyx_XDECREF(__pyx_t_3);
18086  __Pyx_AddTraceback("PyClical.istpq", __pyx_clineno, __pyx_lineno, __pyx_filename);
18087  __pyx_r = NULL;
18088  __pyx_L0:;
18089  __Pyx_XGIVEREF(__pyx_r);
18090  __Pyx_RefNannyFinishContext();
18091  return __pyx_r;
18092  }
18093 
18094  /* "PyClical.pyx":1913
18095  *
18096  * # Doctest interface.
18097  * def _test(): # <<<<<<<<<<<<<<
18098  * import PyClical, doctest
18099  * return doctest.testmod(PyClical)
18100  */
18101 
18102  /* Python wrapper */
18103  static PyObject *__pyx_pw_8PyClical_87_test(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
18104  static PyMethodDef __pyx_mdef_8PyClical_87_test = {"_test", (PyCFunction)__pyx_pw_8PyClical_87_test, METH_NOARGS, 0};
18105  static PyObject *__pyx_pw_8PyClical_87_test(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
18106  PyObject *__pyx_r = 0;
18107  __Pyx_RefNannyDeclarations
18108  __Pyx_RefNannySetupContext("_test (wrapper)", 0);
18109  __pyx_r = __pyx_pf_8PyClical_86_test(__pyx_self);
18110 
18111  /* function exit code */
18112  __Pyx_RefNannyFinishContext();
18113  return __pyx_r;
18114  }
18115 
18116  static PyObject *__pyx_pf_8PyClical_86_test(CYTHON_UNUSED PyObject *__pyx_self) {
18117  PyObject *__pyx_v_PyClical = NULL;
18118  PyObject *__pyx_v_doctest = NULL;
18119  PyObject *__pyx_r = NULL;
18120  __Pyx_RefNannyDeclarations
18121  PyObject *__pyx_t_1 = NULL;
18122  PyObject *__pyx_t_2 = NULL;
18123  PyObject *__pyx_t_3 = NULL;
18124  PyObject *__pyx_t_4 = NULL;
18125  int __pyx_lineno = 0;
18126  const char *__pyx_filename = NULL;
18127  int __pyx_clineno = 0;
18128  __Pyx_RefNannySetupContext("_test", 0);
18129 
18130  /* "PyClical.pyx":1914
18131  * # Doctest interface.
18132  * def _test():
18133  * import PyClical, doctest # <<<<<<<<<<<<<<
18134  * return doctest.testmod(PyClical)
18135  *
18136  */
18137  __pyx_t_1 = __Pyx_Import(__pyx_n_s_PyClical, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18138  __Pyx_GOTREF(__pyx_t_1);
18139  __pyx_v_PyClical = __pyx_t_1;
18140  __pyx_t_1 = 0;
18141  __pyx_t_1 = __Pyx_Import(__pyx_n_s_doctest, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18142  __Pyx_GOTREF(__pyx_t_1);
18143  __pyx_v_doctest = __pyx_t_1;
18144  __pyx_t_1 = 0;
18145 
18146  /* "PyClical.pyx":1915
18147  * def _test():
18148  * import PyClical, doctest
18149  * return doctest.testmod(PyClical) # <<<<<<<<<<<<<<
18150  *
18151  * if __name__ == "__main__":
18152  */
18153  __Pyx_XDECREF(__pyx_r);
18154  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_doctest, __pyx_n_s_testmod); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18155  __Pyx_GOTREF(__pyx_t_2);
18156  __pyx_t_3 = NULL;
18157  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
18158  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
18159  if (likely(__pyx_t_3)) {
18160  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
18161  __Pyx_INCREF(__pyx_t_3);
18162  __Pyx_INCREF(function);
18163  __Pyx_DECREF_SET(__pyx_t_2, function);
18164  }
18165  }
18166  if (!__pyx_t_3) {
18167  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_PyClical); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18168  __Pyx_GOTREF(__pyx_t_1);
18169  } else {
18170  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18171  __Pyx_GOTREF(__pyx_t_4);
18172  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
18173  __Pyx_INCREF(__pyx_v_PyClical);
18174  __Pyx_GIVEREF(__pyx_v_PyClical);
18175  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_PyClical);
18176  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18177  __Pyx_GOTREF(__pyx_t_1);
18178  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18179  }
18180  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18181  __pyx_r = __pyx_t_1;
18182  __pyx_t_1 = 0;
18183  goto __pyx_L0;
18184 
18185  /* "PyClical.pyx":1913
18186  *
18187  * # Doctest interface.
18188  * def _test(): # <<<<<<<<<<<<<<
18189  * import PyClical, doctest
18190  * return doctest.testmod(PyClical)
18191  */
18192 
18193  /* function exit code */
18194  __pyx_L1_error:;
18195  __Pyx_XDECREF(__pyx_t_1);
18196  __Pyx_XDECREF(__pyx_t_2);
18197  __Pyx_XDECREF(__pyx_t_3);
18198  __Pyx_XDECREF(__pyx_t_4);
18199  __Pyx_AddTraceback("PyClical._test", __pyx_clineno, __pyx_lineno, __pyx_filename);
18200  __pyx_r = NULL;
18201  __pyx_L0:;
18202  __Pyx_XDECREF(__pyx_v_PyClical);
18203  __Pyx_XDECREF(__pyx_v_doctest);
18204  __Pyx_XGIVEREF(__pyx_r);
18205  __Pyx_RefNannyFinishContext();
18206  return __pyx_r;
18207  }
18208  static struct __pyx_vtabstruct_8PyClical_index_set __pyx_vtable_8PyClical_index_set;
18209 
18210  static PyObject *__pyx_tp_new_8PyClical_index_set(PyTypeObject *t, PyObject *a, PyObject *k) {
18211  struct __pyx_obj_8PyClical_index_set *p;
18212  PyObject *o;
18213  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
18214  o = (*t->tp_alloc)(t, 0);
18215  } else {
18216  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
18217  }
18218  if (unlikely(!o)) return 0;
18219  p = ((struct __pyx_obj_8PyClical_index_set *)o);
18220  p->__pyx_vtab = __pyx_vtabptr_8PyClical_index_set;
18221  if (unlikely(__pyx_pw_8PyClical_9index_set_3__cinit__(o, a, k) < 0)) {
18222  Py_DECREF(o); o = 0;
18223  }
18224  return o;
18225  }
18226 
18227  static void __pyx_tp_dealloc_8PyClical_index_set(PyObject *o) {
18228  #if PY_VERSION_HEX >= 0x030400a1
18229  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
18230  if (PyObject_CallFinalizerFromDealloc(o)) return;
18231  }
18232  #endif
18233  {
18234  PyObject *etype, *eval, *etb;
18235  PyErr_Fetch(&etype, &eval, &etb);
18236  ++Py_REFCNT(o);
18237  __pyx_pw_8PyClical_9index_set_5__dealloc__(o);
18238  --Py_REFCNT(o);
18239  PyErr_Restore(etype, eval, etb);
18240  }
18241  (*Py_TYPE(o)->tp_free)(o);
18242  }
18243  static PyObject *__pyx_sq_item_8PyClical_index_set(PyObject *o, Py_ssize_t i) {
18244  PyObject *r;
18245  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
18246  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
18247  Py_DECREF(x);
18248  return r;
18249  }
18250 
18251  static int __pyx_mp_ass_subscript_8PyClical_index_set(PyObject *o, PyObject *i, PyObject *v) {
18252  if (v) {
18253  return __pyx_pw_8PyClical_9index_set_9__setitem__(o, i, v);
18254  }
18255  else {
18256  PyErr_Format(PyExc_NotImplementedError,
18257  "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
18258  return -1;
18259  }
18260  }
18261 
18262  static PyMethodDef __pyx_methods_8PyClical_index_set[] = {
18263  {"copy", (PyCFunction)__pyx_pw_8PyClical_9index_set_1copy, METH_NOARGS, __pyx_doc_8PyClical_9index_set_copy},
18264  {"count", (PyCFunction)__pyx_pw_8PyClical_9index_set_32count, METH_NOARGS, __pyx_doc_8PyClical_9index_set_31count},
18265  {"count_neg", (PyCFunction)__pyx_pw_8PyClical_9index_set_34count_neg, METH_NOARGS, __pyx_doc_8PyClical_9index_set_33count_neg},
18266  {"count_pos", (PyCFunction)__pyx_pw_8PyClical_9index_set_36count_pos, METH_NOARGS, __pyx_doc_8PyClical_9index_set_35count_pos},
18267  {"min", (PyCFunction)__pyx_pw_8PyClical_9index_set_38min, METH_NOARGS, __pyx_doc_8PyClical_9index_set_37min},
18268  {"max", (PyCFunction)__pyx_pw_8PyClical_9index_set_40max, METH_NOARGS, __pyx_doc_8PyClical_9index_set_39max},
18269  {"hash_fn", (PyCFunction)__pyx_pw_8PyClical_9index_set_42hash_fn, METH_NOARGS, __pyx_doc_8PyClical_9index_set_41hash_fn},
18270  {"sign_of_mult", (PyCFunction)__pyx_pw_8PyClical_9index_set_44sign_of_mult, METH_O, __pyx_doc_8PyClical_9index_set_43sign_of_mult},
18271  {"sign_of_square", (PyCFunction)__pyx_pw_8PyClical_9index_set_46sign_of_square, METH_NOARGS, __pyx_doc_8PyClical_9index_set_45sign_of_square},
18272  {0, 0, 0, 0}
18273  };
18274 
18275  static PyNumberMethods __pyx_tp_as_number_index_set = {
18276  0, /*nb_add*/
18277  0, /*nb_subtract*/
18278  0, /*nb_multiply*/
18279  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18280  0, /*nb_divide*/
18281  #endif
18282  0, /*nb_remainder*/
18283  0, /*nb_divmod*/
18284  0, /*nb_power*/
18285  0, /*nb_negative*/
18286  0, /*nb_positive*/
18287  0, /*nb_absolute*/
18288  0, /*nb_nonzero*/
18289  __pyx_pw_8PyClical_9index_set_18__invert__, /*nb_invert*/
18290  0, /*nb_lshift*/
18291  0, /*nb_rshift*/
18292  __pyx_pw_8PyClical_9index_set_24__and__, /*nb_and*/
18293  __pyx_pw_8PyClical_9index_set_20__xor__, /*nb_xor*/
18294  __pyx_pw_8PyClical_9index_set_28__or__, /*nb_or*/
18295  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18296  0, /*nb_coerce*/
18297  #endif
18298  0, /*nb_int*/
18299  #if PY_MAJOR_VERSION < 3
18300  0, /*nb_long*/
18301  #else
18302  0, /*reserved*/
18303  #endif
18304  0, /*nb_float*/
18305  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18306  0, /*nb_oct*/
18307  #endif
18308  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18309  0, /*nb_hex*/
18310  #endif
18311  0, /*nb_inplace_add*/
18312  0, /*nb_inplace_subtract*/
18313  0, /*nb_inplace_multiply*/
18314  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18315  0, /*nb_inplace_divide*/
18316  #endif
18317  0, /*nb_inplace_remainder*/
18318  0, /*nb_inplace_power*/
18319  0, /*nb_inplace_lshift*/
18320  0, /*nb_inplace_rshift*/
18321  __pyx_pw_8PyClical_9index_set_26__iand__, /*nb_inplace_and*/
18322  __pyx_pw_8PyClical_9index_set_22__ixor__, /*nb_inplace_xor*/
18323  __pyx_pw_8PyClical_9index_set_30__ior__, /*nb_inplace_or*/
18324  0, /*nb_floor_divide*/
18325  0, /*nb_true_divide*/
18326  0, /*nb_inplace_floor_divide*/
18327  0, /*nb_inplace_true_divide*/
18328  0, /*nb_index*/
18329  #if PY_VERSION_HEX >= 0x03050000
18330  0, /*nb_matrix_multiply*/
18331  #endif
18332  #if PY_VERSION_HEX >= 0x03050000
18333  0, /*nb_inplace_matrix_multiply*/
18334  #endif
18335  };
18336 
18337  static PySequenceMethods __pyx_tp_as_sequence_index_set = {
18338  0, /*sq_length*/
18339  0, /*sq_concat*/
18340  0, /*sq_repeat*/
18341  __pyx_sq_item_8PyClical_index_set, /*sq_item*/
18342  0, /*sq_slice*/
18343  0, /*sq_ass_item*/
18344  0, /*sq_ass_slice*/
18345  __pyx_pw_8PyClical_9index_set_13__contains__, /*sq_contains*/
18346  0, /*sq_inplace_concat*/
18347  0, /*sq_inplace_repeat*/
18348  };
18349 
18350  static PyMappingMethods __pyx_tp_as_mapping_index_set = {
18351  0, /*mp_length*/
18352  __pyx_pw_8PyClical_9index_set_11__getitem__, /*mp_subscript*/
18353  __pyx_mp_ass_subscript_8PyClical_index_set, /*mp_ass_subscript*/
18354  };
18355 
18356  static PyTypeObject __pyx_type_8PyClical_index_set = {
18357  PyVarObject_HEAD_INIT(0, 0)
18358  "PyClical.index_set", /*tp_name*/
18359  sizeof(struct __pyx_obj_8PyClical_index_set), /*tp_basicsize*/
18360  0, /*tp_itemsize*/
18361  __pyx_tp_dealloc_8PyClical_index_set, /*tp_dealloc*/
18362  0, /*tp_print*/
18363  0, /*tp_getattr*/
18364  0, /*tp_setattr*/
18365  #if PY_MAJOR_VERSION < 3
18366  0, /*tp_compare*/
18367  #endif
18368  #if PY_MAJOR_VERSION >= 3
18369  0, /*tp_as_async*/
18370  #endif
18371  __pyx_pw_8PyClical_9index_set_48__repr__, /*tp_repr*/
18372  &__pyx_tp_as_number_index_set, /*tp_as_number*/
18373  &__pyx_tp_as_sequence_index_set, /*tp_as_sequence*/
18374  &__pyx_tp_as_mapping_index_set, /*tp_as_mapping*/
18375  0, /*tp_hash*/
18376  0, /*tp_call*/
18377  __pyx_pw_8PyClical_9index_set_50__str__, /*tp_str*/
18378  0, /*tp_getattro*/
18379  0, /*tp_setattro*/
18380  0, /*tp_as_buffer*/
18381  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
18382  "\n Python class index_set wraps C++ class IndexSet.\n ", /*tp_doc*/
18383  0, /*tp_traverse*/
18384  0, /*tp_clear*/
18385  __pyx_pw_8PyClical_9index_set_7__richcmp__, /*tp_richcompare*/
18386  0, /*tp_weaklistoffset*/
18387  __pyx_pw_8PyClical_9index_set_15__iter__, /*tp_iter*/
18388  0, /*tp_iternext*/
18389  __pyx_methods_8PyClical_index_set, /*tp_methods*/
18390  0, /*tp_members*/
18391  0, /*tp_getset*/
18392  0, /*tp_base*/
18393  0, /*tp_dict*/
18394  0, /*tp_descr_get*/
18395  0, /*tp_descr_set*/
18396  0, /*tp_dictoffset*/
18397  0, /*tp_init*/
18398  0, /*tp_alloc*/
18399  __pyx_tp_new_8PyClical_index_set, /*tp_new*/
18400  0, /*tp_free*/
18401  0, /*tp_is_gc*/
18402  0, /*tp_bases*/
18403  0, /*tp_mro*/
18404  0, /*tp_cache*/
18405  0, /*tp_subclasses*/
18406  0, /*tp_weaklist*/
18407  0, /*tp_del*/
18408  0, /*tp_version_tag*/
18409  #if PY_VERSION_HEX >= 0x030400a1
18410  0, /*tp_finalize*/
18411  #endif
18412  };
18413  static struct __pyx_vtabstruct_8PyClical_clifford __pyx_vtable_8PyClical_clifford;
18414 
18415  static PyObject *__pyx_tp_new_8PyClical_clifford(PyTypeObject *t, PyObject *a, PyObject *k) {
18416  struct __pyx_obj_8PyClical_clifford *p;
18417  PyObject *o;
18418  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
18419  o = (*t->tp_alloc)(t, 0);
18420  } else {
18421  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
18422  }
18423  if (unlikely(!o)) return 0;
18424  p = ((struct __pyx_obj_8PyClical_clifford *)o);
18425  p->__pyx_vtab = __pyx_vtabptr_8PyClical_clifford;
18426  if (unlikely(__pyx_pw_8PyClical_8clifford_3__cinit__(o, a, k) < 0)) {
18427  Py_DECREF(o); o = 0;
18428  }
18429  return o;
18430  }
18431 
18432  static void __pyx_tp_dealloc_8PyClical_clifford(PyObject *o) {
18433  #if PY_VERSION_HEX >= 0x030400a1
18434  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
18435  if (PyObject_CallFinalizerFromDealloc(o)) return;
18436  }
18437  #endif
18438  {
18439  PyObject *etype, *eval, *etb;
18440  PyErr_Fetch(&etype, &eval, &etb);
18441  ++Py_REFCNT(o);
18442  __pyx_pw_8PyClical_8clifford_5__dealloc__(o);
18443  --Py_REFCNT(o);
18444  PyErr_Restore(etype, eval, etb);
18445  }
18446  (*Py_TYPE(o)->tp_free)(o);
18447  }
18448  static PyObject *__pyx_sq_item_8PyClical_clifford(PyObject *o, Py_ssize_t i) {
18449  PyObject *r;
18450  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
18451  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
18452  Py_DECREF(x);
18453  return r;
18454  }
18455 
18456  static PyMethodDef __pyx_methods_8PyClical_clifford[] = {
18457  {"copy", (PyCFunction)__pyx_pw_8PyClical_8clifford_1copy, METH_NOARGS, __pyx_doc_8PyClical_8clifford_copy},
18458  {"reframe", (PyCFunction)__pyx_pw_8PyClical_8clifford_11reframe, METH_O, __pyx_doc_8PyClical_8clifford_10reframe},
18459  {"inv", (PyCFunction)__pyx_pw_8PyClical_8clifford_49inv, METH_NOARGS, __pyx_doc_8PyClical_8clifford_48inv},
18460  {"pow", (PyCFunction)__pyx_pw_8PyClical_8clifford_57pow, METH_O, __pyx_doc_8PyClical_8clifford_56pow},
18461  {"outer_pow", (PyCFunction)__pyx_pw_8PyClical_8clifford_59outer_pow, METH_O, __pyx_doc_8PyClical_8clifford_58outer_pow},
18462  {"scalar", (PyCFunction)__pyx_pw_8PyClical_8clifford_63scalar, METH_NOARGS, __pyx_doc_8PyClical_8clifford_62scalar},
18463  {"pure", (PyCFunction)__pyx_pw_8PyClical_8clifford_65pure, METH_NOARGS, __pyx_doc_8PyClical_8clifford_64pure},
18464  {"even", (PyCFunction)__pyx_pw_8PyClical_8clifford_67even, METH_NOARGS, __pyx_doc_8PyClical_8clifford_66even},
18465  {"odd", (PyCFunction)__pyx_pw_8PyClical_8clifford_69odd, METH_NOARGS, __pyx_doc_8PyClical_8clifford_68odd},
18466  {"vector_part", (PyCFunction)__pyx_pw_8PyClical_8clifford_71vector_part, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_8clifford_70vector_part},
18467  {"involute", (PyCFunction)__pyx_pw_8PyClical_8clifford_73involute, METH_NOARGS, __pyx_doc_8PyClical_8clifford_72involute},
18468  {"reverse", (PyCFunction)__pyx_pw_8PyClical_8clifford_75reverse, METH_NOARGS, __pyx_doc_8PyClical_8clifford_74reverse},
18469  {"conj", (PyCFunction)__pyx_pw_8PyClical_8clifford_77conj, METH_NOARGS, __pyx_doc_8PyClical_8clifford_76conj},
18470  {"quad", (PyCFunction)__pyx_pw_8PyClical_8clifford_79quad, METH_NOARGS, __pyx_doc_8PyClical_8clifford_78quad},
18471  {"norm", (PyCFunction)__pyx_pw_8PyClical_8clifford_81norm, METH_NOARGS, __pyx_doc_8PyClical_8clifford_80norm},
18472  {"abs", (PyCFunction)__pyx_pw_8PyClical_8clifford_83abs, METH_NOARGS, __pyx_doc_8PyClical_8clifford_82abs},
18473  {"max_abs", (PyCFunction)__pyx_pw_8PyClical_8clifford_85max_abs, METH_NOARGS, __pyx_doc_8PyClical_8clifford_84max_abs},
18474  {"truncated", (PyCFunction)__pyx_pw_8PyClical_8clifford_87truncated, METH_O, __pyx_doc_8PyClical_8clifford_86truncated},
18475  {"isnan", (PyCFunction)__pyx_pw_8PyClical_8clifford_89isnan, METH_NOARGS, __pyx_doc_8PyClical_8clifford_88isnan},
18476  {"frame", (PyCFunction)__pyx_pw_8PyClical_8clifford_91frame, METH_NOARGS, __pyx_doc_8PyClical_8clifford_90frame},
18477  {0, 0, 0, 0}
18478  };
18479 
18480  static PyNumberMethods __pyx_tp_as_number_clifford = {
18481  __pyx_pw_8PyClical_8clifford_21__add__, /*nb_add*/
18482  __pyx_pw_8PyClical_8clifford_25__sub__, /*nb_subtract*/
18483  __pyx_pw_8PyClical_8clifford_29__mul__, /*nb_multiply*/
18484  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18485  __pyx_pw_8PyClical_8clifford_45__div__, /*nb_divide*/
18486  #endif
18487  __pyx_pw_8PyClical_8clifford_33__mod__, /*nb_remainder*/
18488  0, /*nb_divmod*/
18489  __pyx_pw_8PyClical_8clifford_55__pow__, /*nb_power*/
18490  __pyx_pw_8PyClical_8clifford_17__neg__, /*nb_negative*/
18491  __pyx_pw_8PyClical_8clifford_19__pos__, /*nb_positive*/
18492  0, /*nb_absolute*/
18493  0, /*nb_nonzero*/
18494  0, /*nb_invert*/
18495  0, /*nb_lshift*/
18496  0, /*nb_rshift*/
18497  __pyx_pw_8PyClical_8clifford_37__and__, /*nb_and*/
18498  __pyx_pw_8PyClical_8clifford_41__xor__, /*nb_xor*/
18499  __pyx_pw_8PyClical_8clifford_51__or__, /*nb_or*/
18500  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18501  0, /*nb_coerce*/
18502  #endif
18503  0, /*nb_int*/
18504  #if PY_MAJOR_VERSION < 3
18505  0, /*nb_long*/
18506  #else
18507  0, /*reserved*/
18508  #endif
18509  0, /*nb_float*/
18510  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18511  0, /*nb_oct*/
18512  #endif
18513  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18514  0, /*nb_hex*/
18515  #endif
18516  __pyx_pw_8PyClical_8clifford_23__iadd__, /*nb_inplace_add*/
18517  __pyx_pw_8PyClical_8clifford_27__isub__, /*nb_inplace_subtract*/
18518  __pyx_pw_8PyClical_8clifford_31__imul__, /*nb_inplace_multiply*/
18519  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
18520  __pyx_pw_8PyClical_8clifford_47__idiv__, /*nb_inplace_divide*/
18521  #endif
18522  __pyx_pw_8PyClical_8clifford_35__imod__, /*nb_inplace_remainder*/
18523  0, /*nb_inplace_power*/
18524  0, /*nb_inplace_lshift*/
18525  0, /*nb_inplace_rshift*/
18526  __pyx_pw_8PyClical_8clifford_39__iand__, /*nb_inplace_and*/
18527  __pyx_pw_8PyClical_8clifford_43__ixor__, /*nb_inplace_xor*/
18528  __pyx_pw_8PyClical_8clifford_53__ior__, /*nb_inplace_or*/
18529  0, /*nb_floor_divide*/
18530  0, /*nb_true_divide*/
18531  0, /*nb_inplace_floor_divide*/
18532  0, /*nb_inplace_true_divide*/
18533  0, /*nb_index*/
18534  #if PY_VERSION_HEX >= 0x03050000
18535  0, /*nb_matrix_multiply*/
18536  #endif
18537  #if PY_VERSION_HEX >= 0x03050000
18538  0, /*nb_inplace_matrix_multiply*/
18539  #endif
18540  };
18541 
18542  static PySequenceMethods __pyx_tp_as_sequence_clifford = {
18543  0, /*sq_length*/
18544  0, /*sq_concat*/
18545  0, /*sq_repeat*/
18546  __pyx_sq_item_8PyClical_clifford, /*sq_item*/
18547  0, /*sq_slice*/
18548  0, /*sq_ass_item*/
18549  0, /*sq_ass_slice*/
18550  __pyx_pw_8PyClical_8clifford_7__contains__, /*sq_contains*/
18551  0, /*sq_inplace_concat*/
18552  0, /*sq_inplace_repeat*/
18553  };
18554 
18555  static PyMappingMethods __pyx_tp_as_mapping_clifford = {
18556  0, /*mp_length*/
18557  __pyx_pw_8PyClical_8clifford_15__getitem__, /*mp_subscript*/
18558  0, /*mp_ass_subscript*/
18559  };
18560 
18561  static PyTypeObject __pyx_type_8PyClical_clifford = {
18562  PyVarObject_HEAD_INIT(0, 0)
18563  "PyClical.clifford", /*tp_name*/
18564  sizeof(struct __pyx_obj_8PyClical_clifford), /*tp_basicsize*/
18565  0, /*tp_itemsize*/
18566  __pyx_tp_dealloc_8PyClical_clifford, /*tp_dealloc*/
18567  0, /*tp_print*/
18568  0, /*tp_getattr*/
18569  0, /*tp_setattr*/
18570  #if PY_MAJOR_VERSION < 3
18571  0, /*tp_compare*/
18572  #endif
18573  #if PY_MAJOR_VERSION >= 3
18574  0, /*tp_as_async*/
18575  #endif
18576  __pyx_pw_8PyClical_8clifford_93__repr__, /*tp_repr*/
18577  &__pyx_tp_as_number_clifford, /*tp_as_number*/
18578  &__pyx_tp_as_sequence_clifford, /*tp_as_sequence*/
18579  &__pyx_tp_as_mapping_clifford, /*tp_as_mapping*/
18580  0, /*tp_hash*/
18581  __pyx_pw_8PyClical_8clifford_61__call__, /*tp_call*/
18582  __pyx_pw_8PyClical_8clifford_95__str__, /*tp_str*/
18583  0, /*tp_getattro*/
18584  0, /*tp_setattro*/
18585  0, /*tp_as_buffer*/
18586  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
18587  "\n Python class clifford wraps C++ class Clifford.\n ", /*tp_doc*/
18588  0, /*tp_traverse*/
18589  0, /*tp_clear*/
18590  __pyx_pw_8PyClical_8clifford_13__richcmp__, /*tp_richcompare*/
18591  0, /*tp_weaklistoffset*/
18592  __pyx_pw_8PyClical_8clifford_9__iter__, /*tp_iter*/
18593  0, /*tp_iternext*/
18594  __pyx_methods_8PyClical_clifford, /*tp_methods*/
18595  0, /*tp_members*/
18596  0, /*tp_getset*/
18597  0, /*tp_base*/
18598  0, /*tp_dict*/
18599  0, /*tp_descr_get*/
18600  0, /*tp_descr_set*/
18601  0, /*tp_dictoffset*/
18602  0, /*tp_init*/
18603  0, /*tp_alloc*/
18604  __pyx_tp_new_8PyClical_clifford, /*tp_new*/
18605  0, /*tp_free*/
18606  0, /*tp_is_gc*/
18607  0, /*tp_bases*/
18608  0, /*tp_mro*/
18609  0, /*tp_cache*/
18610  0, /*tp_subclasses*/
18611  0, /*tp_weaklist*/
18612  0, /*tp_del*/
18613  0, /*tp_version_tag*/
18614  #if PY_VERSION_HEX >= 0x030400a1
18615  0, /*tp_finalize*/
18616  #endif
18617  };
18618 
18619  static struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *__pyx_freelist_8PyClical___pyx_scope_struct____iter__[8];
18620  static int __pyx_freecount_8PyClical___pyx_scope_struct____iter__ = 0;
18621 
18622  static PyObject *__pyx_tp_new_8PyClical___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
18623  PyObject *o;
18624  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8PyClical___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__)))) {
18625  o = (PyObject*)__pyx_freelist_8PyClical___pyx_scope_struct____iter__[--__pyx_freecount_8PyClical___pyx_scope_struct____iter__];
18626  memset(o, 0, sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__));
18627  (void) PyObject_INIT(o, t);
18628  PyObject_GC_Track(o);
18629  } else {
18630  o = (*t->tp_alloc)(t, 0);
18631  if (unlikely(!o)) return 0;
18632  }
18633  return o;
18634  }
18635 
18636  static void __pyx_tp_dealloc_8PyClical___pyx_scope_struct____iter__(PyObject *o) {
18637  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *p = (struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o;
18638  PyObject_GC_UnTrack(o);
18639  Py_CLEAR(p->__pyx_v_idx);
18640  Py_CLEAR(p->__pyx_v_self);
18641  Py_CLEAR(p->__pyx_t_0);
18642  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8PyClical___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__)))) {
18643  __pyx_freelist_8PyClical___pyx_scope_struct____iter__[__pyx_freecount_8PyClical___pyx_scope_struct____iter__++] = ((struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o);
18644  } else {
18645  (*Py_TYPE(o)->tp_free)(o);
18646  }
18647  }
18648 
18649  static int __pyx_tp_traverse_8PyClical___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) {
18650  int e;
18651  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *p = (struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o;
18652  if (p->__pyx_v_idx) {
18653  e = (*v)(p->__pyx_v_idx, a); if (e) return e;
18654  }
18655  if (p->__pyx_v_self) {
18656  e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;
18657  }
18658  if (p->__pyx_t_0) {
18659  e = (*v)(p->__pyx_t_0, a); if (e) return e;
18660  }
18661  return 0;
18662  }
18663 
18664  static int __pyx_tp_clear_8PyClical___pyx_scope_struct____iter__(PyObject *o) {
18665  PyObject* tmp;
18666  struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *p = (struct __pyx_obj_8PyClical___pyx_scope_struct____iter__ *)o;
18667  tmp = ((PyObject*)p->__pyx_v_idx);
18668  p->__pyx_v_idx = Py_None; Py_INCREF(Py_None);
18669  Py_XDECREF(tmp);
18670  tmp = ((PyObject*)p->__pyx_v_self);
18671  p->__pyx_v_self = ((struct __pyx_obj_8PyClical_index_set *)Py_None); Py_INCREF(Py_None);
18672  Py_XDECREF(tmp);
18673  tmp = ((PyObject*)p->__pyx_t_0);
18674  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
18675  Py_XDECREF(tmp);
18676  return 0;
18677  }
18678 
18679  static PyTypeObject __pyx_type_8PyClical___pyx_scope_struct____iter__ = {
18680  PyVarObject_HEAD_INIT(0, 0)
18681  "PyClical.__pyx_scope_struct____iter__", /*tp_name*/
18682  sizeof(struct __pyx_obj_8PyClical___pyx_scope_struct____iter__), /*tp_basicsize*/
18683  0, /*tp_itemsize*/
18684  __pyx_tp_dealloc_8PyClical___pyx_scope_struct____iter__, /*tp_dealloc*/
18685  0, /*tp_print*/
18686  0, /*tp_getattr*/
18687  0, /*tp_setattr*/
18688  #if PY_MAJOR_VERSION < 3
18689  0, /*tp_compare*/
18690  #endif
18691  #if PY_MAJOR_VERSION >= 3
18692  0, /*tp_as_async*/
18693  #endif
18694  0, /*tp_repr*/
18695  0, /*tp_as_number*/
18696  0, /*tp_as_sequence*/
18697  0, /*tp_as_mapping*/
18698  0, /*tp_hash*/
18699  0, /*tp_call*/
18700  0, /*tp_str*/
18701  0, /*tp_getattro*/
18702  0, /*tp_setattro*/
18703  0, /*tp_as_buffer*/
18704  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
18705  0, /*tp_doc*/
18706  __pyx_tp_traverse_8PyClical___pyx_scope_struct____iter__, /*tp_traverse*/
18707  __pyx_tp_clear_8PyClical___pyx_scope_struct____iter__, /*tp_clear*/
18708  0, /*tp_richcompare*/
18709  0, /*tp_weaklistoffset*/
18710  0, /*tp_iter*/
18711  0, /*tp_iternext*/
18712  0, /*tp_methods*/
18713  0, /*tp_members*/
18714  0, /*tp_getset*/
18715  0, /*tp_base*/
18716  0, /*tp_dict*/
18717  0, /*tp_descr_get*/
18718  0, /*tp_descr_set*/
18719  0, /*tp_dictoffset*/
18720  0, /*tp_init*/
18721  0, /*tp_alloc*/
18722  __pyx_tp_new_8PyClical___pyx_scope_struct____iter__, /*tp_new*/
18723  0, /*tp_free*/
18724  0, /*tp_is_gc*/
18725  0, /*tp_bases*/
18726  0, /*tp_mro*/
18727  0, /*tp_cache*/
18728  0, /*tp_subclasses*/
18729  0, /*tp_weaklist*/
18730  0, /*tp_del*/
18731  0, /*tp_version_tag*/
18732  #if PY_VERSION_HEX >= 0x030400a1
18733  0, /*tp_finalize*/
18734  #endif
18735  };
18736 
18737  static PyMethodDef __pyx_methods[] = {
18738  {"compare", (PyCFunction)__pyx_pw_8PyClical_3compare, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_2compare},
18739  {"min_neg", (PyCFunction)__pyx_pw_8PyClical_5min_neg, METH_O, __pyx_doc_8PyClical_4min_neg},
18740  {"max_pos", (PyCFunction)__pyx_pw_8PyClical_7max_pos, METH_O, __pyx_doc_8PyClical_6max_pos},
18741  {"inv", (PyCFunction)__pyx_pw_8PyClical_11inv, METH_O, __pyx_doc_8PyClical_10inv},
18742  {"scalar", (PyCFunction)__pyx_pw_8PyClical_13scalar, METH_O, __pyx_doc_8PyClical_12scalar},
18743  {"real", (PyCFunction)__pyx_pw_8PyClical_15real, METH_O, __pyx_doc_8PyClical_14real},
18744  {"imag", (PyCFunction)__pyx_pw_8PyClical_17imag, METH_O, __pyx_doc_8PyClical_16imag},
18745  {"pure", (PyCFunction)__pyx_pw_8PyClical_19pure, METH_O, __pyx_doc_8PyClical_18pure},
18746  {"even", (PyCFunction)__pyx_pw_8PyClical_21even, METH_O, __pyx_doc_8PyClical_20even},
18747  {"odd", (PyCFunction)__pyx_pw_8PyClical_23odd, METH_O, __pyx_doc_8PyClical_22odd},
18748  {"involute", (PyCFunction)__pyx_pw_8PyClical_25involute, METH_O, __pyx_doc_8PyClical_24involute},
18749  {"reverse", (PyCFunction)__pyx_pw_8PyClical_27reverse, METH_O, __pyx_doc_8PyClical_26reverse},
18750  {"conj", (PyCFunction)__pyx_pw_8PyClical_29conj, METH_O, __pyx_doc_8PyClical_28conj},
18751  {"quad", (PyCFunction)__pyx_pw_8PyClical_31quad, METH_O, __pyx_doc_8PyClical_30quad},
18752  {"norm", (PyCFunction)__pyx_pw_8PyClical_33norm, METH_O, __pyx_doc_8PyClical_32norm},
18753  {"abs", (PyCFunction)__pyx_pw_8PyClical_35abs, METH_O, __pyx_doc_8PyClical_34abs},
18754  {"max_abs", (PyCFunction)__pyx_pw_8PyClical_37max_abs, METH_O, __pyx_doc_8PyClical_36max_abs},
18755  {"pow", (PyCFunction)__pyx_pw_8PyClical_39pow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_38pow},
18756  {"outer_pow", (PyCFunction)__pyx_pw_8PyClical_41outer_pow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_40outer_pow},
18757  {"complexifier", (PyCFunction)__pyx_pw_8PyClical_43complexifier, METH_O, __pyx_doc_8PyClical_42complexifier},
18758  {"sqrt", (PyCFunction)__pyx_pw_8PyClical_45sqrt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_44sqrt},
18759  {"exp", (PyCFunction)__pyx_pw_8PyClical_47exp, METH_O, __pyx_doc_8PyClical_46exp},
18760  {"log", (PyCFunction)__pyx_pw_8PyClical_49log, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_48log},
18761  {"cos", (PyCFunction)__pyx_pw_8PyClical_51cos, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_50cos},
18762  {"acos", (PyCFunction)__pyx_pw_8PyClical_53acos, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_52acos},
18763  {"cosh", (PyCFunction)__pyx_pw_8PyClical_55cosh, METH_O, __pyx_doc_8PyClical_54cosh},
18764  {"acosh", (PyCFunction)__pyx_pw_8PyClical_57acosh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_56acosh},
18765  {"sin", (PyCFunction)__pyx_pw_8PyClical_59sin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_58sin},
18766  {"asin", (PyCFunction)__pyx_pw_8PyClical_61asin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_60asin},
18767  {"sinh", (PyCFunction)__pyx_pw_8PyClical_63sinh, METH_O, __pyx_doc_8PyClical_62sinh},
18768  {"asinh", (PyCFunction)__pyx_pw_8PyClical_65asinh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_64asinh},
18769  {"tan", (PyCFunction)__pyx_pw_8PyClical_67tan, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_66tan},
18770  {"atan", (PyCFunction)__pyx_pw_8PyClical_69atan, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_68atan},
18771  {"tanh", (PyCFunction)__pyx_pw_8PyClical_71tanh, METH_O, __pyx_doc_8PyClical_70tanh},
18772  {"atanh", (PyCFunction)__pyx_pw_8PyClical_73atanh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_72atanh},
18773  {"random_clifford", (PyCFunction)__pyx_pw_8PyClical_75random_clifford, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8PyClical_74random_clifford},
18774  {"cga3", (PyCFunction)__pyx_pw_8PyClical_77cga3, METH_O, __pyx_doc_8PyClical_76cga3},
18775  {"cga3std", (PyCFunction)__pyx_pw_8PyClical_79cga3std, METH_O, __pyx_doc_8PyClical_78cga3std},
18776  {"agc3", (PyCFunction)__pyx_pw_8PyClical_81agc3, METH_O, __pyx_doc_8PyClical_80agc3},
18777  {0, 0, 0, 0}
18778  };
18779 
18780  #if PY_MAJOR_VERSION >= 3
18781  static struct PyModuleDef __pyx_moduledef = {
18782  #if PY_VERSION_HEX < 0x03020000
18783  { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
18784  #else
18785  PyModuleDef_HEAD_INIT,
18786  #endif
18787  "PyClical",
18788  0, /* m_doc */
18789  -1, /* m_size */
18790  __pyx_methods /* m_methods */,
18791  NULL, /* m_reload */
18792  NULL, /* m_traverse */
18793  NULL, /* m_clear */
18794  NULL /* m_free */
18795  };
18796  #endif
18797 
18798 static __Pyx_StringTabEntry __pyx_string_tab[] = {
18799  {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
18800  {&__pyx_kp_s_0_8_2, __pyx_k_0_8_2, sizeof(__pyx_k_0_8_2), 0, 0, 1, 0},
18801  {&__pyx_kp_u_Abbreviation_for_clifford_index, __pyx_k_Abbreviation_for_clifford_index, sizeof(__pyx_k_Abbreviation_for_clifford_index), 0, 1, 0, 0},
18802  {&__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},
18803  {&__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},
18804  {&__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},
18805  {&__pyx_kp_s_Cannot_initialize_clifford_objec, __pyx_k_Cannot_initialize_clifford_objec, sizeof(__pyx_k_Cannot_initialize_clifford_objec), 0, 0, 1, 0},
18806  {&__pyx_kp_s_Cannot_initialize_index_set_obje, __pyx_k_Cannot_initialize_index_set_obje, sizeof(__pyx_k_Cannot_initialize_index_set_obje), 0, 0, 1, 0},
18807  {&__pyx_kp_s_Cannot_reframe, __pyx_k_Cannot_reframe, sizeof(__pyx_k_Cannot_reframe), 0, 0, 1, 0},
18808  {&__pyx_kp_s_Cannot_take_vector_part_of, __pyx_k_Cannot_take_vector_part_of, sizeof(__pyx_k_Cannot_take_vector_part_of), 0, 0, 1, 0},
18809  {&__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},
18810  {&__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},
18811  {&__pyx_kp_u_Conjugation_reverse_o_involute, __pyx_k_Conjugation_reverse_o_involute, sizeof(__pyx_k_Conjugation_reverse_o_involute), 0, 1, 0, 0},
18812  {&__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},
18813  {&__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},
18814  {&__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},
18815  {&__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},
18816  {&__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},
18817  {&__pyx_kp_u_Convert_Euclidean_3D_multivecto, __pyx_k_Convert_Euclidean_3D_multivecto, sizeof(__pyx_k_Convert_Euclidean_3D_multivecto), 0, 1, 0, 0},
18818  {&__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},
18819  {&__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},
18820  {&__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},
18821  {&__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},
18822  {&__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},
18823  {&__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},
18824  {&__pyx_kp_u_Geometric_difference_print_clif, __pyx_k_Geometric_difference_print_clif, sizeof(__pyx_k_Geometric_difference_print_clif), 0, 1, 0, 0},
18825  {&__pyx_kp_u_Geometric_difference_x_clifford, __pyx_k_Geometric_difference_x_clifford, sizeof(__pyx_k_Geometric_difference_x_clifford), 0, 1, 0, 0},
18826  {&__pyx_kp_u_Geometric_multiplicative_invers, __pyx_k_Geometric_multiplicative_invers, sizeof(__pyx_k_Geometric_multiplicative_invers), 0, 1, 0, 0},
18827  {&__pyx_kp_u_Geometric_multiplicative_invers_2, __pyx_k_Geometric_multiplicative_invers_2, sizeof(__pyx_k_Geometric_multiplicative_invers_2), 0, 1, 0, 0},
18828  {&__pyx_kp_u_Geometric_product_print_cliffor, __pyx_k_Geometric_product_print_cliffor, sizeof(__pyx_k_Geometric_product_print_cliffor), 0, 1, 0, 0},
18829  {&__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},
18830  {&__pyx_kp_u_Geometric_quotient_print_cliffo, __pyx_k_Geometric_quotient_print_cliffo, sizeof(__pyx_k_Geometric_quotient_print_cliffo), 0, 1, 0, 0},
18831  {&__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},
18832  {&__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},
18833  {&__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},
18834  {&__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},
18835  {&__pyx_kp_u_Hyperbolic_cosine_of_multivecto, __pyx_k_Hyperbolic_cosine_of_multivecto, sizeof(__pyx_k_Hyperbolic_cosine_of_multivecto), 0, 1, 0, 0},
18836  {&__pyx_kp_u_Hyperbolic_sine_of_multivector, __pyx_k_Hyperbolic_sine_of_multivector, sizeof(__pyx_k_Hyperbolic_sine_of_multivector), 0, 1, 0, 0},
18837  {&__pyx_kp_u_Hyperbolic_tangent_of_multivect, __pyx_k_Hyperbolic_tangent_of_multivect, sizeof(__pyx_k_Hyperbolic_tangent_of_multivect), 0, 1, 0, 0},
18838  {&__pyx_kp_u_Imaginary_part_deprecated_alway, __pyx_k_Imaginary_part_deprecated_alway, sizeof(__pyx_k_Imaginary_part_deprecated_alway), 0, 1, 0, 0},
18839  {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
18840  {&__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},
18841  {&__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},
18842  {&__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},
18843  {&__pyx_n_s_Integral, __pyx_k_Integral, sizeof(__pyx_k_Integral), 0, 0, 1, 1},
18844  {&__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},
18845  {&__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},
18846  {&__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},
18847  {&__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},
18848  {&__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},
18849  {&__pyx_kp_u_Inverse_tangent_of_multivector, __pyx_k_Inverse_tangent_of_multivector, sizeof(__pyx_k_Inverse_tangent_of_multivector), 0, 1, 0, 0},
18850  {&__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},
18851  {&__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},
18852  {&__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},
18853  {&__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},
18854  {&__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},
18855  {&__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},
18856  {&__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},
18857  {&__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},
18858  {&__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},
18859  {&__pyx_kp_u_Natural_logarithm_of_multivecto, __pyx_k_Natural_logarithm_of_multivecto, sizeof(__pyx_k_Natural_logarithm_of_multivecto), 0, 1, 0, 0},
18860  {&__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},
18861  {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1},
18862  {&__pyx_kp_s_Not_applicable, __pyx_k_Not_applicable, sizeof(__pyx_k_Not_applicable), 0, 0, 1, 0},
18863  {&__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},
18864  {&__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},
18865  {&__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},
18866  {&__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},
18867  {&__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},
18868  {&__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},
18869  {&__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},
18870  {&__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},
18871  {&__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},
18872  {&__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},
18873  {&__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},
18874  {&__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},
18875  {&__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},
18876  {&__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},
18877  {&__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},
18878  {&__pyx_n_s_PyClical, __pyx_k_PyClical, sizeof(__pyx_k_PyClical), 0, 0, 1, 1},
18879  {&__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},
18880  {&__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},
18881  {&__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},
18882  {&__pyx_n_s_Real, __pyx_k_Real, sizeof(__pyx_k_Real), 0, 0, 1, 1},
18883  {&__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},
18884  {&__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},
18885  {&__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},
18886  {&__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},
18887  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
18888  {&__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},
18889  {&__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},
18890  {&__pyx_n_s_Sequence, __pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 0, 1, 1},
18891  {&__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},
18892  {&__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},
18893  {&__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},
18894  {&__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},
18895  {&__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},
18896  {&__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},
18897  {&__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},
18898  {&__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},
18899  {&__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},
18900  {&__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},
18901  {&__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},
18902  {&__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},
18903  {&__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},
18904  {&__pyx_kp_u_Symmetric_set_difference_exclus, __pyx_k_Symmetric_set_difference_exclus, sizeof(__pyx_k_Symmetric_set_difference_exclus), 0, 1, 0, 0},
18905  {&__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},
18906  {&__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},
18907  {&__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},
18908  {&__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},
18909  {&__pyx_kp_u_The_informal_string_representat, __pyx_k_The_informal_string_representat, sizeof(__pyx_k_The_informal_string_representat), 0, 1, 0, 0},
18910  {&__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},
18911  {&__pyx_kp_u_The_official_string_representat, __pyx_k_The_official_string_representat, sizeof(__pyx_k_The_official_string_representat), 0, 1, 0, 0},
18912  {&__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},
18913  {&__pyx_kp_s_This_comparison_operator_is_not, __pyx_k_This_comparison_operator_is_not, sizeof(__pyx_k_This_comparison_operator_is_not), 0, 0, 1, 0},
18914  {&__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},
18915  {&__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},
18916  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
18917  {&__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},
18918  {&__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},
18919  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
18920  {&__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},
18921  {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
18922  {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
18923  {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},
18924  {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
18925  {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0},
18926  {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
18927  {&__pyx_kp_u_abs_line_1473, __pyx_k_abs_line_1473, sizeof(__pyx_k_abs_line_1473), 0, 1, 0, 0},
18928  {&__pyx_n_s_acos, __pyx_k_acos, sizeof(__pyx_k_acos), 0, 0, 1, 1},
18929  {&__pyx_kp_u_acos_line_1619, __pyx_k_acos_line_1619, sizeof(__pyx_k_acos_line_1619), 0, 1, 0, 0},
18930  {&__pyx_n_s_acosh, __pyx_k_acosh, sizeof(__pyx_k_acosh), 0, 0, 1, 1},
18931  {&__pyx_kp_u_acosh_line_1656, __pyx_k_acosh_line_1656, sizeof(__pyx_k_acosh_line_1656), 0, 1, 0, 0},
18932  {&__pyx_kp_u_agc3_line_1844, __pyx_k_agc3_line_1844, sizeof(__pyx_k_agc3_line_1844), 0, 1, 0, 0},
18933  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
18934  {&__pyx_kp_s_as_frame, __pyx_k_as_frame, sizeof(__pyx_k_as_frame), 0, 0, 1, 0},
18935  {&__pyx_n_s_asin, __pyx_k_asin, sizeof(__pyx_k_asin), 0, 0, 1, 1},
18936  {&__pyx_kp_u_asin_line_1698, __pyx_k_asin_line_1698, sizeof(__pyx_k_asin_line_1698), 0, 1, 0, 0},
18937  {&__pyx_n_s_asinh, __pyx_k_asinh, sizeof(__pyx_k_asinh), 0, 0, 1, 1},
18938  {&__pyx_kp_u_asinh_line_1733, __pyx_k_asinh_line_1733, sizeof(__pyx_k_asinh_line_1733), 0, 1, 0, 0},
18939  {&__pyx_n_s_atan, __pyx_k_atan, sizeof(__pyx_k_atan), 0, 0, 1, 1},
18940  {&__pyx_kp_u_atan_line_1769, __pyx_k_atan_line_1769, sizeof(__pyx_k_atan_line_1769), 0, 1, 0, 0},
18941  {&__pyx_n_s_atanh, __pyx_k_atanh, sizeof(__pyx_k_atanh), 0, 0, 1, 1},
18942  {&__pyx_kp_u_atanh_line_1798, __pyx_k_atanh_line_1798, sizeof(__pyx_k_atanh_line_1798), 0, 1, 0, 0},
18943  {&__pyx_kp_u_cga3_line_1824, __pyx_k_cga3_line_1824, sizeof(__pyx_k_cga3_line_1824), 0, 1, 0, 0},
18944  {&__pyx_kp_u_cga3std_line_1833, __pyx_k_cga3std_line_1833, sizeof(__pyx_k_cga3std_line_1833), 0, 1, 0, 0},
18945  {&__pyx_n_s_cl, __pyx_k_cl, sizeof(__pyx_k_cl), 0, 0, 1, 1},
18946  {&__pyx_kp_u_clifford___add___line_739, __pyx_k_clifford___add___line_739, sizeof(__pyx_k_clifford___add___line_739), 0, 1, 0, 0},
18947  {&__pyx_kp_u_clifford___and___line_835, __pyx_k_clifford___and___line_835, sizeof(__pyx_k_clifford___and___line_835), 0, 1, 0, 0},
18948  {&__pyx_kp_u_clifford___call___line_1019, __pyx_k_clifford___call___line_1019, sizeof(__pyx_k_clifford___call___line_1019), 0, 1, 0, 0},
18949  {&__pyx_kp_u_clifford___div___line_895, __pyx_k_clifford___div___line_895, sizeof(__pyx_k_clifford___div___line_895), 0, 1, 0, 0},
18950  {&__pyx_kp_u_clifford___getitem___line_706, __pyx_k_clifford___getitem___line_706, sizeof(__pyx_k_clifford___getitem___line_706), 0, 1, 0, 0},
18951  {&__pyx_kp_u_clifford___iadd___line_750, __pyx_k_clifford___iadd___line_750, sizeof(__pyx_k_clifford___iadd___line_750), 0, 1, 0, 0},
18952  {&__pyx_kp_u_clifford___iand___line_850, __pyx_k_clifford___iand___line_850, sizeof(__pyx_k_clifford___iand___line_850), 0, 1, 0, 0},
18953  {&__pyx_kp_u_clifford___idiv___line_910, __pyx_k_clifford___idiv___line_910, sizeof(__pyx_k_clifford___idiv___line_910), 0, 1, 0, 0},
18954  {&__pyx_kp_u_clifford___imod___line_820, __pyx_k_clifford___imod___line_820, sizeof(__pyx_k_clifford___imod___line_820), 0, 1, 0, 0},
18955  {&__pyx_kp_u_clifford___imul___line_792, __pyx_k_clifford___imul___line_792, sizeof(__pyx_k_clifford___imul___line_792), 0, 1, 0, 0},
18956  {&__pyx_kp_u_clifford___ior___line_949, __pyx_k_clifford___ior___line_949, sizeof(__pyx_k_clifford___ior___line_949), 0, 1, 0, 0},
18957  {&__pyx_kp_u_clifford___isub___line_770, __pyx_k_clifford___isub___line_770, sizeof(__pyx_k_clifford___isub___line_770), 0, 1, 0, 0},
18958  {&__pyx_kp_u_clifford___iter___line_637, __pyx_k_clifford___iter___line_637, sizeof(__pyx_k_clifford___iter___line_637), 0, 1, 0, 0},
18959  {&__pyx_kp_u_clifford___ixor___line_880, __pyx_k_clifford___ixor___line_880, sizeof(__pyx_k_clifford___ixor___line_880), 0, 1, 0, 0},
18960  {&__pyx_kp_u_clifford___mod___line_805, __pyx_k_clifford___mod___line_805, sizeof(__pyx_k_clifford___mod___line_805), 0, 1, 0, 0},
18961  {&__pyx_kp_u_clifford___mul___line_779, __pyx_k_clifford___mul___line_779, sizeof(__pyx_k_clifford___mul___line_779), 0, 1, 0, 0},
18962  {&__pyx_kp_u_clifford___neg___line_721, __pyx_k_clifford___neg___line_721, sizeof(__pyx_k_clifford___neg___line_721), 0, 1, 0, 0},
18963  {&__pyx_kp_u_clifford___or___line_938, __pyx_k_clifford___or___line_938, sizeof(__pyx_k_clifford___or___line_938), 0, 1, 0, 0},
18964  {&__pyx_kp_u_clifford___pos___line_730, __pyx_k_clifford___pos___line_730, sizeof(__pyx_k_clifford___pos___line_730), 0, 1, 0, 0},
18965  {&__pyx_kp_u_clifford___pow___line_960, __pyx_k_clifford___pow___line_960, sizeof(__pyx_k_clifford___pow___line_960), 0, 1, 0, 0},
18966  {&__pyx_kp_u_clifford___repr___line_1225, __pyx_k_clifford___repr___line_1225, sizeof(__pyx_k_clifford___repr___line_1225), 0, 1, 0, 0},
18967  {&__pyx_kp_u_clifford___str___line_1234, __pyx_k_clifford___str___line_1234, sizeof(__pyx_k_clifford___str___line_1234), 0, 1, 0, 0},
18968  {&__pyx_kp_u_clifford___sub___line_759, __pyx_k_clifford___sub___line_759, sizeof(__pyx_k_clifford___sub___line_759), 0, 1, 0, 0},
18969  {&__pyx_kp_u_clifford___xor___line_865, __pyx_k_clifford___xor___line_865, sizeof(__pyx_k_clifford___xor___line_865), 0, 1, 0, 0},
18970  {&__pyx_kp_u_clifford_abs_line_1174, __pyx_k_clifford_abs_line_1174, sizeof(__pyx_k_clifford_abs_line_1174), 0, 1, 0, 0},
18971  {&__pyx_kp_u_clifford_conj_line_1137, __pyx_k_clifford_conj_line_1137, sizeof(__pyx_k_clifford_conj_line_1137), 0, 1, 0, 0},
18972  {&__pyx_kp_u_clifford_copy_line_554, __pyx_k_clifford_copy_line_554, sizeof(__pyx_k_clifford_copy_line_554), 0, 1, 0, 0},
18973  {&__pyx_kp_u_clifford_even_line_1060, __pyx_k_clifford_even_line_1060, sizeof(__pyx_k_clifford_even_line_1060), 0, 1, 0, 0},
18974  {&__pyx_kp_u_clifford_frame_line_1214, __pyx_k_clifford_frame_line_1214, sizeof(__pyx_k_clifford_frame_line_1214), 0, 1, 0, 0},
18975  {&__pyx_n_s_clifford_hidden_doctests, __pyx_k_clifford_hidden_doctests, sizeof(__pyx_k_clifford_hidden_doctests), 0, 0, 1, 1},
18976  {&__pyx_kp_u_clifford_hidden_doctests_line_12, __pyx_k_clifford_hidden_doctests_line_12, sizeof(__pyx_k_clifford_hidden_doctests_line_12), 0, 1, 0, 0},
18977  {&__pyx_kp_u_clifford_inv_line_925, __pyx_k_clifford_inv_line_925, sizeof(__pyx_k_clifford_inv_line_925), 0, 1, 0, 0},
18978  {&__pyx_kp_u_clifford_involute_line_1106, __pyx_k_clifford_involute_line_1106, sizeof(__pyx_k_clifford_involute_line_1106), 0, 1, 0, 0},
18979  {&__pyx_kp_u_clifford_isnan_line_1205, __pyx_k_clifford_isnan_line_1205, sizeof(__pyx_k_clifford_isnan_line_1205), 0, 1, 0, 0},
18980  {&__pyx_kp_u_clifford_max_abs_line_1183, __pyx_k_clifford_max_abs_line_1183, sizeof(__pyx_k_clifford_max_abs_line_1183), 0, 1, 0, 0},
18981  {&__pyx_kp_u_clifford_norm_line_1163, __pyx_k_clifford_norm_line_1163, sizeof(__pyx_k_clifford_norm_line_1163), 0, 1, 0, 0},
18982  {&__pyx_kp_u_clifford_odd_line_1069, __pyx_k_clifford_odd_line_1069, sizeof(__pyx_k_clifford_odd_line_1069), 0, 1, 0, 0},
18983  {&__pyx_kp_u_clifford_outer_pow_line_1003, __pyx_k_clifford_outer_pow_line_1003, sizeof(__pyx_k_clifford_outer_pow_line_1003), 0, 1, 0, 0},
18984  {&__pyx_kp_u_clifford_pow_line_979, __pyx_k_clifford_pow_line_979, sizeof(__pyx_k_clifford_pow_line_979), 0, 1, 0, 0},
18985  {&__pyx_kp_u_clifford_pure_line_1049, __pyx_k_clifford_pure_line_1049, sizeof(__pyx_k_clifford_pure_line_1049), 0, 1, 0, 0},
18986  {&__pyx_kp_u_clifford_quad_line_1152, __pyx_k_clifford_quad_line_1152, sizeof(__pyx_k_clifford_quad_line_1152), 0, 1, 0, 0},
18987  {&__pyx_kp_u_clifford_reframe_line_648, __pyx_k_clifford_reframe_line_648, sizeof(__pyx_k_clifford_reframe_line_648), 0, 1, 0, 0},
18988  {&__pyx_kp_u_clifford_reverse_line_1122, __pyx_k_clifford_reverse_line_1122, sizeof(__pyx_k_clifford_reverse_line_1122), 0, 1, 0, 0},
18989  {&__pyx_kp_u_clifford_scalar_line_1038, __pyx_k_clifford_scalar_line_1038, sizeof(__pyx_k_clifford_scalar_line_1038), 0, 1, 0, 0},
18990  {&__pyx_kp_u_clifford_truncated_line_1194, __pyx_k_clifford_truncated_line_1194, sizeof(__pyx_k_clifford_truncated_line_1194), 0, 1, 0, 0},
18991  {&__pyx_kp_u_clifford_vector_part_line_1078, __pyx_k_clifford_vector_part_line_1078, sizeof(__pyx_k_clifford_vector_part_line_1078), 0, 1, 0, 0},
18992  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
18993  {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
18994  {&__pyx_kp_u_compare_line_490, __pyx_k_compare_line_490, sizeof(__pyx_k_compare_line_490), 0, 1, 0, 0},
18995  {&__pyx_kp_u_complexifier_line_1527, __pyx_k_complexifier_line_1527, sizeof(__pyx_k_complexifier_line_1527), 0, 1, 0, 0},
18996  {&__pyx_n_s_conj, __pyx_k_conj, sizeof(__pyx_k_conj), 0, 0, 1, 1},
18997  {&__pyx_kp_u_conj_line_1436, __pyx_k_conj_line_1436, sizeof(__pyx_k_conj_line_1436), 0, 1, 0, 0},
18998  {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
18999  {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1},
19000  {&__pyx_kp_u_cos_line_1602, __pyx_k_cos_line_1602, sizeof(__pyx_k_cos_line_1602), 0, 1, 0, 0},
19001  {&__pyx_n_s_cosh, __pyx_k_cosh, sizeof(__pyx_k_cosh), 0, 0, 1, 1},
19002  {&__pyx_kp_u_cosh_line_1640, __pyx_k_cosh_line_1640, sizeof(__pyx_k_cosh_line_1640), 0, 1, 0, 0},
19003  {&__pyx_n_s_doctest, __pyx_k_doctest, sizeof(__pyx_k_doctest), 0, 0, 1, 1},
19004  {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1},
19005  {&__pyx_kp_u_e_line_1887, __pyx_k_e_line_1887, sizeof(__pyx_k_e_line_1887), 0, 1, 0, 0},
19006  {&__pyx_n_s_even, __pyx_k_even, sizeof(__pyx_k_even), 0, 0, 1, 1},
19007  {&__pyx_kp_u_even_line_1388, __pyx_k_even_line_1388, sizeof(__pyx_k_even_line_1388), 0, 1, 0, 0},
19008  {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1},
19009  {&__pyx_kp_u_exp_line_1565, __pyx_k_exp_line_1565, sizeof(__pyx_k_exp_line_1565), 0, 1, 0, 0},
19010  {&__pyx_n_s_fill, __pyx_k_fill, sizeof(__pyx_k_fill), 0, 0, 1, 1},
19011  {&__pyx_n_s_frm, __pyx_k_frm, sizeof(__pyx_k_frm), 0, 0, 1, 1},
19012  {&__pyx_kp_s_from, __pyx_k_from, sizeof(__pyx_k_from), 0, 0, 1, 0},
19013  {&__pyx_n_s_grade, __pyx_k_grade, sizeof(__pyx_k_grade), 0, 0, 1, 1},
19014  {&__pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc, __pyx_k_home_abuild_rpmbuild_BUILD_gluc, sizeof(__pyx_k_home_abuild_rpmbuild_BUILD_gluc), 0, 0, 1, 0},
19015  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
19016  {&__pyx_kp_u_imag_line_1366, __pyx_k_imag_line_1366, sizeof(__pyx_k_imag_line_1366), 0, 1, 0, 0},
19017  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
19018  {&__pyx_kp_u_index_set___and___line_269, __pyx_k_index_set___and___line_269, sizeof(__pyx_k_index_set___and___line_269), 0, 1, 0, 0},
19019  {&__pyx_kp_u_index_set___getitem___line_189, __pyx_k_index_set___getitem___line_189, sizeof(__pyx_k_index_set___getitem___line_189), 0, 1, 0, 0},
19020  {&__pyx_kp_u_index_set___iand___line_280, __pyx_k_index_set___iand___line_280, sizeof(__pyx_k_index_set___iand___line_280), 0, 1, 0, 0},
19021  {&__pyx_kp_u_index_set___invert___line_238, __pyx_k_index_set___invert___line_238, sizeof(__pyx_k_index_set___invert___line_238), 0, 1, 0, 0},
19022  {&__pyx_kp_u_index_set___ior___line_302, __pyx_k_index_set___ior___line_302, sizeof(__pyx_k_index_set___ior___line_302), 0, 1, 0, 0},
19023  {&__pyx_n_s_index_set___iter, __pyx_k_index_set___iter, sizeof(__pyx_k_index_set___iter), 0, 0, 1, 1},
19024  {&__pyx_kp_u_index_set___iter___line_227, __pyx_k_index_set___iter___line_227, sizeof(__pyx_k_index_set___iter___line_227), 0, 1, 0, 0},
19025  {&__pyx_kp_u_index_set___ixor___line_258, __pyx_k_index_set___ixor___line_258, sizeof(__pyx_k_index_set___ixor___line_258), 0, 1, 0, 0},
19026  {&__pyx_kp_u_index_set___or___line_291, __pyx_k_index_set___or___line_291, sizeof(__pyx_k_index_set___or___line_291), 0, 1, 0, 0},
19027  {&__pyx_kp_u_index_set___repr___line_382, __pyx_k_index_set___repr___line_382, sizeof(__pyx_k_index_set___repr___line_382), 0, 1, 0, 0},
19028  {&__pyx_kp_u_index_set___setitem___line_177, __pyx_k_index_set___setitem___line_177, sizeof(__pyx_k_index_set___setitem___line_177), 0, 1, 0, 0},
19029  {&__pyx_kp_u_index_set___str___line_393, __pyx_k_index_set___str___line_393, sizeof(__pyx_k_index_set___str___line_393), 0, 1, 0, 0},
19030  {&__pyx_kp_u_index_set___xor___line_247, __pyx_k_index_set___xor___line_247, sizeof(__pyx_k_index_set___xor___line_247), 0, 1, 0, 0},
19031  {&__pyx_kp_u_index_set_copy_line_64, __pyx_k_index_set_copy_line_64, sizeof(__pyx_k_index_set_copy_line_64), 0, 1, 0, 0},
19032  {&__pyx_kp_u_index_set_count_line_313, __pyx_k_index_set_count_line_313, sizeof(__pyx_k_index_set_count_line_313), 0, 1, 0, 0},
19033  {&__pyx_kp_u_index_set_count_neg_line_322, __pyx_k_index_set_count_neg_line_322, sizeof(__pyx_k_index_set_count_neg_line_322), 0, 1, 0, 0},
19034  {&__pyx_kp_u_index_set_count_pos_line_331, __pyx_k_index_set_count_pos_line_331, sizeof(__pyx_k_index_set_count_pos_line_331), 0, 1, 0, 0},
19035  {&__pyx_n_s_index_set_hidden_doctests, __pyx_k_index_set_hidden_doctests, sizeof(__pyx_k_index_set_hidden_doctests), 0, 0, 1, 1},
19036  {&__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},
19037  {&__pyx_kp_u_index_set_max_line_349, __pyx_k_index_set_max_line_349, sizeof(__pyx_k_index_set_max_line_349), 0, 1, 0, 0},
19038  {&__pyx_kp_u_index_set_min_line_340, __pyx_k_index_set_min_line_340, sizeof(__pyx_k_index_set_min_line_340), 0, 1, 0, 0},
19039  {&__pyx_kp_u_index_set_sign_of_mult_line_364, __pyx_k_index_set_sign_of_mult_line_364, sizeof(__pyx_k_index_set_sign_of_mult_line_364), 0, 1, 0, 0},
19040  {&__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},
19041  {&__pyx_n_s_inv, __pyx_k_inv, sizeof(__pyx_k_inv), 0, 0, 1, 1},
19042  {&__pyx_kp_u_inv_line_1329, __pyx_k_inv_line_1329, sizeof(__pyx_k_inv_line_1329), 0, 1, 0, 0},
19043  {&__pyx_kp_s_invalid, __pyx_k_invalid, sizeof(__pyx_k_invalid), 0, 0, 1, 0},
19044  {&__pyx_kp_s_invalid_string, __pyx_k_invalid_string, sizeof(__pyx_k_invalid_string), 0, 0, 1, 0},
19045  {&__pyx_n_s_involute, __pyx_k_involute, sizeof(__pyx_k_involute), 0, 0, 1, 1},
19046  {&__pyx_kp_u_involute_line_1406, __pyx_k_involute_line_1406, sizeof(__pyx_k_involute_line_1406), 0, 1, 0, 0},
19047  {&__pyx_n_s_ist, __pyx_k_ist, sizeof(__pyx_k_ist), 0, 0, 1, 1},
19048  {&__pyx_n_s_istpq, __pyx_k_istpq, sizeof(__pyx_k_istpq), 0, 0, 1, 1},
19049  {&__pyx_kp_u_istpq_line_1900, __pyx_k_istpq_line_1900, sizeof(__pyx_k_istpq_line_1900), 0, 1, 0, 0},
19050  {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1},
19051  {&__pyx_n_s_ixt, __pyx_k_ixt, sizeof(__pyx_k_ixt), 0, 0, 1, 1},
19052  {&__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},
19053  {&__pyx_n_s_lhs, __pyx_k_lhs, sizeof(__pyx_k_lhs), 0, 0, 1, 1},
19054  {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1},
19055  {&__pyx_kp_u_log_line_1579, __pyx_k_log_line_1579, sizeof(__pyx_k_log_line_1579), 0, 1, 0, 0},
19056  {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1},
19057  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
19058  {&__pyx_n_s_math, __pyx_k_math, sizeof(__pyx_k_math), 0, 0, 1, 1},
19059  {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
19060  {&__pyx_kp_u_max_abs_line_1482, __pyx_k_max_abs_line_1482, sizeof(__pyx_k_max_abs_line_1482), 0, 1, 0, 0},
19061  {&__pyx_kp_u_max_pos_line_511, __pyx_k_max_pos_line_511, sizeof(__pyx_k_max_pos_line_511), 0, 1, 0, 0},
19062  {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
19063  {&__pyx_kp_u_min_neg_line_502, __pyx_k_min_neg_line_502, sizeof(__pyx_k_min_neg_line_502), 0, 1, 0, 0},
19064  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
19065  {&__pyx_n_s_nbar3, __pyx_k_nbar3, sizeof(__pyx_k_nbar3), 0, 0, 1, 1},
19066  {&__pyx_n_s_ninf3, __pyx_k_ninf3, sizeof(__pyx_k_ninf3), 0, 0, 1, 1},
19067  {&__pyx_n_s_norm, __pyx_k_norm, sizeof(__pyx_k_norm), 0, 0, 1, 1},
19068  {&__pyx_kp_u_norm_line_1462, __pyx_k_norm_line_1462, sizeof(__pyx_k_norm_line_1462), 0, 1, 0, 0},
19069  {&__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},
19070  {&__pyx_n_s_numbers, __pyx_k_numbers, sizeof(__pyx_k_numbers), 0, 0, 1, 1},
19071  {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
19072  {&__pyx_n_s_odd, __pyx_k_odd, sizeof(__pyx_k_odd), 0, 0, 1, 1},
19073  {&__pyx_kp_u_odd_line_1397, __pyx_k_odd_line_1397, sizeof(__pyx_k_odd_line_1397), 0, 1, 0, 0},
19074  {&__pyx_n_s_other, __pyx_k_other, sizeof(__pyx_k_other), 0, 0, 1, 1},
19075  {&__pyx_n_s_outer_pow, __pyx_k_outer_pow, sizeof(__pyx_k_outer_pow), 0, 0, 1, 1},
19076  {&__pyx_kp_u_outer_pow_line_1518, __pyx_k_outer_pow_line_1518, sizeof(__pyx_k_outer_pow_line_1518), 0, 1, 0, 0},
19077  {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1},
19078  {&__pyx_n_s_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 0, 1, 1},
19079  {&__pyx_n_s_pow, __pyx_k_pow, sizeof(__pyx_k_pow), 0, 0, 1, 1},
19080  {&__pyx_kp_u_pow_line_1494, __pyx_k_pow_line_1494, sizeof(__pyx_k_pow_line_1494), 0, 1, 0, 0},
19081  {&__pyx_n_s_pure, __pyx_k_pure, sizeof(__pyx_k_pure), 0, 0, 1, 1},
19082  {&__pyx_kp_u_pure_line_1377, __pyx_k_pure_line_1377, sizeof(__pyx_k_pure_line_1377), 0, 1, 0, 0},
19083  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
19084  {&__pyx_n_s_q, __pyx_k_q, sizeof(__pyx_k_q), 0, 0, 1, 1},
19085  {&__pyx_n_s_quad, __pyx_k_quad, sizeof(__pyx_k_quad), 0, 0, 1, 1},
19086  {&__pyx_kp_u_quad_line_1451, __pyx_k_quad_line_1451, sizeof(__pyx_k_quad_line_1451), 0, 1, 0, 0},
19087  {&__pyx_kp_u_random_clifford_line_1815, __pyx_k_random_clifford_line_1815, sizeof(__pyx_k_random_clifford_line_1815), 0, 1, 0, 0},
19088  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
19089  {&__pyx_kp_u_real_line_1355, __pyx_k_real_line_1355, sizeof(__pyx_k_real_line_1355), 0, 1, 0, 0},
19090  {&__pyx_n_s_reverse, __pyx_k_reverse, sizeof(__pyx_k_reverse), 0, 0, 1, 1},
19091  {&__pyx_kp_u_reverse_line_1421, __pyx_k_reverse_line_1421, sizeof(__pyx_k_reverse_line_1421), 0, 1, 0, 0},
19092  {&__pyx_n_s_rhs, __pyx_k_rhs, sizeof(__pyx_k_rhs), 0, 0, 1, 1},
19093  {&__pyx_n_s_scalar, __pyx_k_scalar, sizeof(__pyx_k_scalar), 0, 0, 1, 1},
19094  {&__pyx_kp_u_scalar_line_1344, __pyx_k_scalar_line_1344, sizeof(__pyx_k_scalar_line_1344), 0, 1, 0, 0},
19095  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
19096  {&__pyx_n_s_sin, __pyx_k_sin, sizeof(__pyx_k_sin), 0, 0, 1, 1},
19097  {&__pyx_kp_u_sin_line_1679, __pyx_k_sin_line_1679, sizeof(__pyx_k_sin_line_1679), 0, 1, 0, 0},
19098  {&__pyx_n_s_sinh, __pyx_k_sinh, sizeof(__pyx_k_sinh), 0, 0, 1, 1},
19099  {&__pyx_kp_u_sinh_line_1719, __pyx_k_sinh_line_1719, sizeof(__pyx_k_sinh_line_1719), 0, 1, 0, 0},
19100  {&__pyx_n_s_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 0, 0, 1, 1},
19101  {&__pyx_kp_u_sqrt_line_1542, __pyx_k_sqrt_line_1542, sizeof(__pyx_k_sqrt_line_1542), 0, 1, 0, 0},
19102  {&__pyx_n_s_tan, __pyx_k_tan, sizeof(__pyx_k_tan), 0, 0, 1, 1},
19103  {&__pyx_kp_u_tan_line_1752, __pyx_k_tan_line_1752, sizeof(__pyx_k_tan_line_1752), 0, 1, 0, 0},
19104  {&__pyx_n_s_tanh, __pyx_k_tanh, sizeof(__pyx_k_tanh), 0, 0, 1, 1},
19105  {&__pyx_kp_u_tanh_line_1786, __pyx_k_tanh_line_1786, sizeof(__pyx_k_tanh_line_1786), 0, 1, 0, 0},
19106  {&__pyx_n_s_tau, __pyx_k_tau, sizeof(__pyx_k_tau), 0, 0, 1, 1},
19107  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
19108  {&__pyx_n_s_test_2, __pyx_k_test_2, sizeof(__pyx_k_test_2), 0, 0, 1, 1},
19109  {&__pyx_n_s_testmod, __pyx_k_testmod, sizeof(__pyx_k_testmod), 0, 0, 1, 1},
19110  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
19111  {&__pyx_kp_s_to_frame, __pyx_k_to_frame, sizeof(__pyx_k_to_frame), 0, 0, 1, 0},
19112  {&__pyx_kp_s_using, __pyx_k_using, sizeof(__pyx_k_using), 0, 0, 1, 0},
19113  {&__pyx_kp_s_using_invalid, __pyx_k_using_invalid, sizeof(__pyx_k_using_invalid), 0, 0, 1, 0},
19114  {&__pyx_kp_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 0},
19115  {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1},
19116  {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
19117  {0, 0, 0, 0, 0, 0, 0}
19118 };
19119 static int __Pyx_InitCachedBuiltins(void) {
19120  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19121  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19122  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19123  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19124  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19125  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19126  #if PY_MAJOR_VERSION >= 3
19127  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19128  #else
19129  __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19130  #endif
19131  return 0;
19132  __pyx_L1_error:;
19133  return -1;
19134 }
19135 
19136 static int __Pyx_InitCachedConstants(void) {
19137  __Pyx_RefNannyDeclarations
19138  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
19139 
19140  /* "PyClical.pyx":635
19141  * TypeError: Not applicable.
19142  * """
19143  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
19144  *
19145  * def __iter__(self):
19146  */
19147  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Not_applicable); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19148  __Pyx_GOTREF(__pyx_tuple__8);
19149  __Pyx_GIVEREF(__pyx_tuple__8);
19150 
19151  /* "PyClical.pyx":646
19152  * TypeError: Not applicable.
19153  * """
19154  * raise TypeError("Not applicable.") # <<<<<<<<<<<<<<
19155  *
19156  * def reframe(self, ixt):
19157  */
19158  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Not_applicable); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19159  __Pyx_GOTREF(__pyx_tuple__9);
19160  __Pyx_GIVEREF(__pyx_tuple__9);
19161 
19162  /* "PyClical.pyx":404
19163  * return index_set_to_str( self.unwrap() ).c_str()
19164  *
19165  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
19166  * """
19167  * Tests for functions that Doctest cannot see.
19168  */
19169  __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc, __pyx_n_s_index_set_hidden_doctests, 404, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19170 
19171  /* "PyClical.pyx":1243
19172  * return clifford_to_str( self.unwrap() ).c_str()
19173  *
19174  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
19175  * """
19176  * Tests for functions that Doctest cannot see.
19177  */
19178  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc, __pyx_n_s_clifford_hidden_doctests, 1243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19179 
19180  /* "PyClical.pyx":1856
19181  *
19182  * # Some abbreviations.
19183  * tau = atan(clifford(1.0)) * 8.0 # <<<<<<<<<<<<<<
19184  * pi = tau / 2.0
19185  *
19186  */
19187  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_float_1_0); if (unlikely(!__pyx_tuple__12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19188  __Pyx_GOTREF(__pyx_tuple__12);
19189  __Pyx_GIVEREF(__pyx_tuple__12);
19190 
19191  /* "PyClical.pyx":1887
19192  * """
19193  *
19194  * def e(obj): # <<<<<<<<<<<<<<
19195  * """
19196  * Abbreviation for clifford(index_set(obj)).
19197  */
19198  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19199  __Pyx_GOTREF(__pyx_tuple__13);
19200  __Pyx_GIVEREF(__pyx_tuple__13);
19201  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc, __pyx_n_s_e, 1887, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19202 
19203  /* "PyClical.pyx":1900
19204  * return clifford(index_set(obj))
19205  *
19206  * def istpq(p, q): # <<<<<<<<<<<<<<
19207  * """
19208  * Abbreviation for index_set({-q,...p}).
19209  */
19210  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_p, __pyx_n_s_q); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19211  __Pyx_GOTREF(__pyx_tuple__15);
19212  __Pyx_GIVEREF(__pyx_tuple__15);
19213  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc, __pyx_n_s_istpq, 1900, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19214 
19215  /* "PyClical.pyx":1909
19216  * return index_set(set(range(-q,p+1)))
19217  *
19218  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
19219  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL].
19220  *
19221  */
19222  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_int_4); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19223  __Pyx_GOTREF(__pyx_tuple__17);
19224  __Pyx_GIVEREF(__pyx_tuple__17);
19225  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19226  __Pyx_GOTREF(__pyx_tuple__18);
19227  __Pyx_GIVEREF(__pyx_tuple__18);
19228 
19229  /* "PyClical.pyx":1910
19230  *
19231  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL].
19232  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
19233  *
19234  * # Doctest interface.
19235  */
19236  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_int_4); if (unlikely(!__pyx_tuple__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19237  __Pyx_GOTREF(__pyx_tuple__19);
19238  __Pyx_GIVEREF(__pyx_tuple__19);
19239  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19240  __Pyx_GOTREF(__pyx_tuple__20);
19241  __Pyx_GIVEREF(__pyx_tuple__20);
19242 
19243  /* "PyClical.pyx":1913
19244  *
19245  * # Doctest interface.
19246  * def _test(): # <<<<<<<<<<<<<<
19247  * import PyClical, doctest
19248  * return doctest.testmod(PyClical)
19249  */
19250  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_n_s_PyClical, __pyx_n_s_doctest); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19251  __Pyx_GOTREF(__pyx_tuple__21);
19252  __Pyx_GIVEREF(__pyx_tuple__21);
19253  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_abuild_rpmbuild_BUILD_gluc, __pyx_n_s_test, 1913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19254  __Pyx_RefNannyFinishContext();
19255  return 0;
19256  __pyx_L1_error:;
19257  __Pyx_RefNannyFinishContext();
19258  return -1;
19259 }
19260 
19261 static int __Pyx_InitGlobals(void) {
19262  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
19263  __pyx_float_0_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19264  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19265  __pyx_float_2_0 = PyFloat_FromDouble(2.0); if (unlikely(!__pyx_float_2_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19266  __pyx_float_8_0 = PyFloat_FromDouble(8.0); if (unlikely(!__pyx_float_8_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19267  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19268  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19269  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19270  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19271  return 0;
19272  __pyx_L1_error:;
19273  return -1;
19274 }
19275 
19276 #if PY_MAJOR_VERSION < 3
19277 PyMODINIT_FUNC initPyClical(void); /*proto*/
19278 PyMODINIT_FUNC initPyClical(void)
19279 #else
19280 PyMODINIT_FUNC PyInit_PyClical(void); /*proto*/
19281 PyMODINIT_FUNC PyInit_PyClical(void)
19282 #endif
19283 {
19284  PyObject *__pyx_t_1 = NULL;
19285  PyObject *__pyx_t_2 = NULL;
19286  PyObject *__pyx_t_3 = NULL;
19287  int __pyx_t_4;
19288  int __pyx_lineno = 0;
19289  const char *__pyx_filename = NULL;
19290  int __pyx_clineno = 0;
19291  __Pyx_RefNannyDeclarations
19292  #if CYTHON_REFNANNY
19293  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
19294  if (!__Pyx_RefNanny) {
19295  PyErr_Clear();
19296  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
19297  if (!__Pyx_RefNanny)
19298  Py_FatalError("failed to import 'refnanny' module");
19299  }
19300  #endif
19301  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_PyClical(void)", 0);
19302  if (__Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19303  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19304  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19305  #ifdef __Pyx_CyFunction_USED
19306  if (__pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19307  #endif
19308  #ifdef __Pyx_FusedFunction_USED
19309  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19310  #endif
19311  #ifdef __Pyx_Coroutine_USED
19312  if (__pyx_Coroutine_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19313  #endif
19314  #ifdef __Pyx_Generator_USED
19315  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19316  #endif
19317  #ifdef __Pyx_StopAsyncIteration_USED
19318  if (__pyx_StopAsyncIteration_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19319  #endif
19320  /*--- Library function declarations ---*/
19321  /*--- Threads initialization code ---*/
19322  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
19323  #ifdef WITH_THREAD /* Python build with threading support? */
19324  PyEval_InitThreads();
19325  #endif
19326  #endif
19327  /*--- Module creation code ---*/
19328  #if PY_MAJOR_VERSION < 3
19329  __pyx_m = Py_InitModule4("PyClical", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
19330  #else
19331  __pyx_m = PyModule_Create(&__pyx_moduledef);
19332  #endif
19333  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19334  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19335  Py_INCREF(__pyx_d);
19336  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19337  #if CYTHON_COMPILING_IN_PYPY
19338  Py_INCREF(__pyx_b);
19339  #endif
19340  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
19341  /*--- Initialize various global constants etc. ---*/
19342  if (__Pyx_InitGlobals() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19343  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
19344  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19345  #endif
19346  if (__pyx_module_is_main_PyClical) {
19347  if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19348  }
19349  #if PY_MAJOR_VERSION >= 3
19350  {
19351  PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19352  if (!PyDict_GetItemString(modules, "PyClical")) {
19353  if (unlikely(PyDict_SetItemString(modules, "PyClical", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19354  }
19355  }
19356  #endif
19357  /*--- Builtin init code ---*/
19358  if (__Pyx_InitCachedBuiltins() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19359  /*--- Constants init code ---*/
19360  if (__Pyx_InitCachedConstants() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19361  /*--- Global init code ---*/
19362  /*--- Variable export code ---*/
19363  /*--- Function export code ---*/
19364  /*--- Type init code ---*/
19365  __pyx_vtabptr_8PyClical_index_set = &__pyx_vtable_8PyClical_index_set;
19366  __pyx_vtable_8PyClical_index_set.wrap = (PyObject *(*)(struct __pyx_obj_8PyClical_index_set *, IndexSet))__pyx_f_8PyClical_9index_set_wrap;
19367  __pyx_vtable_8PyClical_index_set.unwrap = (IndexSet (*)(struct __pyx_obj_8PyClical_index_set *))__pyx_f_8PyClical_9index_set_unwrap;
19368  __pyx_vtable_8PyClical_index_set.copy = (PyObject *(*)(struct __pyx_obj_8PyClical_index_set *, int __pyx_skip_dispatch))__pyx_f_8PyClical_9index_set_copy;
19369  if (PyType_Ready(&__pyx_type_8PyClical_index_set) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19370  __pyx_type_8PyClical_index_set.tp_print = 0;
19371  #if CYTHON_COMPILING_IN_CPYTHON
19372  {
19373  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__setitem__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19374  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19375  __pyx_wrapperbase_8PyClical_9index_set_8__setitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19376  __pyx_wrapperbase_8PyClical_9index_set_8__setitem__.doc = __pyx_doc_8PyClical_9index_set_8__setitem__;
19377  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_8__setitem__;
19378  }
19379  }
19380  #endif
19381  #if CYTHON_COMPILING_IN_CPYTHON
19382  {
19383  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__getitem__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19384  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19385  __pyx_wrapperbase_8PyClical_9index_set_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19386  __pyx_wrapperbase_8PyClical_9index_set_10__getitem__.doc = __pyx_doc_8PyClical_9index_set_10__getitem__;
19387  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_10__getitem__;
19388  }
19389  }
19390  #endif
19391  #if CYTHON_COMPILING_IN_CPYTHON
19392  {
19393  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__contains__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19394  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19395  __pyx_wrapperbase_8PyClical_9index_set_12__contains__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19396  __pyx_wrapperbase_8PyClical_9index_set_12__contains__.doc = __pyx_doc_8PyClical_9index_set_12__contains__;
19397  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_12__contains__;
19398  }
19399  }
19400  #endif
19401  #if CYTHON_COMPILING_IN_CPYTHON
19402  {
19403  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__iter__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19404  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19405  __pyx_wrapperbase_8PyClical_9index_set_14__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19406  __pyx_wrapperbase_8PyClical_9index_set_14__iter__.doc = __pyx_doc_8PyClical_9index_set_14__iter__;
19407  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_14__iter__;
19408  }
19409  }
19410  #endif
19411  #if CYTHON_COMPILING_IN_CPYTHON
19412  {
19413  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__invert__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19414  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19415  __pyx_wrapperbase_8PyClical_9index_set_17__invert__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19416  __pyx_wrapperbase_8PyClical_9index_set_17__invert__.doc = __pyx_doc_8PyClical_9index_set_17__invert__;
19417  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_17__invert__;
19418  }
19419  }
19420  #endif
19421  #if CYTHON_COMPILING_IN_CPYTHON
19422  {
19423  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__xor__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19424  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19425  __pyx_wrapperbase_8PyClical_9index_set_19__xor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19426  __pyx_wrapperbase_8PyClical_9index_set_19__xor__.doc = __pyx_doc_8PyClical_9index_set_19__xor__;
19427  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_19__xor__;
19428  }
19429  }
19430  #endif
19431  #if CYTHON_COMPILING_IN_CPYTHON
19432  {
19433  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__ixor__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19434  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19435  __pyx_wrapperbase_8PyClical_9index_set_21__ixor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19436  __pyx_wrapperbase_8PyClical_9index_set_21__ixor__.doc = __pyx_doc_8PyClical_9index_set_21__ixor__;
19437  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_21__ixor__;
19438  }
19439  }
19440  #endif
19441  #if CYTHON_COMPILING_IN_CPYTHON
19442  {
19443  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__and__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19444  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19445  __pyx_wrapperbase_8PyClical_9index_set_23__and__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19446  __pyx_wrapperbase_8PyClical_9index_set_23__and__.doc = __pyx_doc_8PyClical_9index_set_23__and__;
19447  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_23__and__;
19448  }
19449  }
19450  #endif
19451  #if CYTHON_COMPILING_IN_CPYTHON
19452  {
19453  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__iand__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19454  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19455  __pyx_wrapperbase_8PyClical_9index_set_25__iand__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19456  __pyx_wrapperbase_8PyClical_9index_set_25__iand__.doc = __pyx_doc_8PyClical_9index_set_25__iand__;
19457  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_25__iand__;
19458  }
19459  }
19460  #endif
19461  #if CYTHON_COMPILING_IN_CPYTHON
19462  {
19463  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__or__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19464  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19465  __pyx_wrapperbase_8PyClical_9index_set_27__or__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19466  __pyx_wrapperbase_8PyClical_9index_set_27__or__.doc = __pyx_doc_8PyClical_9index_set_27__or__;
19467  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_27__or__;
19468  }
19469  }
19470  #endif
19471  #if CYTHON_COMPILING_IN_CPYTHON
19472  {
19473  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__ior__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19474  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19475  __pyx_wrapperbase_8PyClical_9index_set_29__ior__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19476  __pyx_wrapperbase_8PyClical_9index_set_29__ior__.doc = __pyx_doc_8PyClical_9index_set_29__ior__;
19477  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_29__ior__;
19478  }
19479  }
19480  #endif
19481  #if CYTHON_COMPILING_IN_CPYTHON
19482  {
19483  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__repr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19484  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19485  __pyx_wrapperbase_8PyClical_9index_set_47__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19486  __pyx_wrapperbase_8PyClical_9index_set_47__repr__.doc = __pyx_doc_8PyClical_9index_set_47__repr__;
19487  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_47__repr__;
19488  }
19489  }
19490  #endif
19491  #if CYTHON_COMPILING_IN_CPYTHON
19492  {
19493  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_index_set, "__str__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19494  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19495  __pyx_wrapperbase_8PyClical_9index_set_49__str__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19496  __pyx_wrapperbase_8PyClical_9index_set_49__str__.doc = __pyx_doc_8PyClical_9index_set_49__str__;
19497  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_9index_set_49__str__;
19498  }
19499  }
19500  #endif
19501  if (__Pyx_SetVtable(__pyx_type_8PyClical_index_set.tp_dict, __pyx_vtabptr_8PyClical_index_set) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19502  if (PyObject_SetAttrString(__pyx_m, "index_set", (PyObject *)&__pyx_type_8PyClical_index_set) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19503  __pyx_ptype_8PyClical_index_set = &__pyx_type_8PyClical_index_set;
19504  __pyx_vtabptr_8PyClical_clifford = &__pyx_vtable_8PyClical_clifford;
19505  __pyx_vtable_8PyClical_clifford.wrap = (PyObject *(*)(struct __pyx_obj_8PyClical_clifford *, Clifford))__pyx_f_8PyClical_8clifford_wrap;
19506  __pyx_vtable_8PyClical_clifford.unwrap = (Clifford (*)(struct __pyx_obj_8PyClical_clifford *))__pyx_f_8PyClical_8clifford_unwrap;
19507  __pyx_vtable_8PyClical_clifford.copy = (PyObject *(*)(struct __pyx_obj_8PyClical_clifford *, int __pyx_skip_dispatch))__pyx_f_8PyClical_8clifford_copy;
19508  if (PyType_Ready(&__pyx_type_8PyClical_clifford) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19509  __pyx_type_8PyClical_clifford.tp_print = 0;
19510  #if CYTHON_COMPILING_IN_CPYTHON
19511  {
19512  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__contains__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19513  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19514  __pyx_wrapperbase_8PyClical_8clifford_6__contains__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19515  __pyx_wrapperbase_8PyClical_8clifford_6__contains__.doc = __pyx_doc_8PyClical_8clifford_6__contains__;
19516  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_6__contains__;
19517  }
19518  }
19519  #endif
19520  #if CYTHON_COMPILING_IN_CPYTHON
19521  {
19522  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__iter__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19523  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19524  __pyx_wrapperbase_8PyClical_8clifford_8__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19525  __pyx_wrapperbase_8PyClical_8clifford_8__iter__.doc = __pyx_doc_8PyClical_8clifford_8__iter__;
19526  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_8__iter__;
19527  }
19528  }
19529  #endif
19530  #if CYTHON_COMPILING_IN_CPYTHON
19531  {
19532  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__getitem__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19533  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19534  __pyx_wrapperbase_8PyClical_8clifford_14__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19535  __pyx_wrapperbase_8PyClical_8clifford_14__getitem__.doc = __pyx_doc_8PyClical_8clifford_14__getitem__;
19536  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_14__getitem__;
19537  }
19538  }
19539  #endif
19540  #if CYTHON_COMPILING_IN_CPYTHON
19541  {
19542  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__neg__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19543  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19544  __pyx_wrapperbase_8PyClical_8clifford_16__neg__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19545  __pyx_wrapperbase_8PyClical_8clifford_16__neg__.doc = __pyx_doc_8PyClical_8clifford_16__neg__;
19546  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_16__neg__;
19547  }
19548  }
19549  #endif
19550  #if CYTHON_COMPILING_IN_CPYTHON
19551  {
19552  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__pos__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19553  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19554  __pyx_wrapperbase_8PyClical_8clifford_18__pos__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19555  __pyx_wrapperbase_8PyClical_8clifford_18__pos__.doc = __pyx_doc_8PyClical_8clifford_18__pos__;
19556  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_18__pos__;
19557  }
19558  }
19559  #endif
19560  #if CYTHON_COMPILING_IN_CPYTHON
19561  {
19562  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__add__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19563  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19564  __pyx_wrapperbase_8PyClical_8clifford_20__add__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19565  __pyx_wrapperbase_8PyClical_8clifford_20__add__.doc = __pyx_doc_8PyClical_8clifford_20__add__;
19566  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_20__add__;
19567  }
19568  }
19569  #endif
19570  #if CYTHON_COMPILING_IN_CPYTHON
19571  {
19572  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__iadd__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19573  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19574  __pyx_wrapperbase_8PyClical_8clifford_22__iadd__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19575  __pyx_wrapperbase_8PyClical_8clifford_22__iadd__.doc = __pyx_doc_8PyClical_8clifford_22__iadd__;
19576  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_22__iadd__;
19577  }
19578  }
19579  #endif
19580  #if CYTHON_COMPILING_IN_CPYTHON
19581  {
19582  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__sub__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19583  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19584  __pyx_wrapperbase_8PyClical_8clifford_24__sub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19585  __pyx_wrapperbase_8PyClical_8clifford_24__sub__.doc = __pyx_doc_8PyClical_8clifford_24__sub__;
19586  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_24__sub__;
19587  }
19588  }
19589  #endif
19590  #if CYTHON_COMPILING_IN_CPYTHON
19591  {
19592  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__isub__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19593  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19594  __pyx_wrapperbase_8PyClical_8clifford_26__isub__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19595  __pyx_wrapperbase_8PyClical_8clifford_26__isub__.doc = __pyx_doc_8PyClical_8clifford_26__isub__;
19596  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_26__isub__;
19597  }
19598  }
19599  #endif
19600  #if CYTHON_COMPILING_IN_CPYTHON
19601  {
19602  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__mul__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19603  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19604  __pyx_wrapperbase_8PyClical_8clifford_28__mul__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19605  __pyx_wrapperbase_8PyClical_8clifford_28__mul__.doc = __pyx_doc_8PyClical_8clifford_28__mul__;
19606  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_28__mul__;
19607  }
19608  }
19609  #endif
19610  #if CYTHON_COMPILING_IN_CPYTHON
19611  {
19612  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__imul__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19613  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19614  __pyx_wrapperbase_8PyClical_8clifford_30__imul__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19615  __pyx_wrapperbase_8PyClical_8clifford_30__imul__.doc = __pyx_doc_8PyClical_8clifford_30__imul__;
19616  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_30__imul__;
19617  }
19618  }
19619  #endif
19620  #if CYTHON_COMPILING_IN_CPYTHON
19621  {
19622  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__mod__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19623  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19624  __pyx_wrapperbase_8PyClical_8clifford_32__mod__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19625  __pyx_wrapperbase_8PyClical_8clifford_32__mod__.doc = __pyx_doc_8PyClical_8clifford_32__mod__;
19626  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_32__mod__;
19627  }
19628  }
19629  #endif
19630  #if CYTHON_COMPILING_IN_CPYTHON
19631  {
19632  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__imod__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19633  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19634  __pyx_wrapperbase_8PyClical_8clifford_34__imod__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19635  __pyx_wrapperbase_8PyClical_8clifford_34__imod__.doc = __pyx_doc_8PyClical_8clifford_34__imod__;
19636  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_34__imod__;
19637  }
19638  }
19639  #endif
19640  #if CYTHON_COMPILING_IN_CPYTHON
19641  {
19642  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__and__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19643  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19644  __pyx_wrapperbase_8PyClical_8clifford_36__and__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19645  __pyx_wrapperbase_8PyClical_8clifford_36__and__.doc = __pyx_doc_8PyClical_8clifford_36__and__;
19646  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_36__and__;
19647  }
19648  }
19649  #endif
19650  #if CYTHON_COMPILING_IN_CPYTHON
19651  {
19652  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__iand__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19653  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19654  __pyx_wrapperbase_8PyClical_8clifford_38__iand__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19655  __pyx_wrapperbase_8PyClical_8clifford_38__iand__.doc = __pyx_doc_8PyClical_8clifford_38__iand__;
19656  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_38__iand__;
19657  }
19658  }
19659  #endif
19660  #if CYTHON_COMPILING_IN_CPYTHON
19661  {
19662  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__xor__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19663  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19664  __pyx_wrapperbase_8PyClical_8clifford_40__xor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19665  __pyx_wrapperbase_8PyClical_8clifford_40__xor__.doc = __pyx_doc_8PyClical_8clifford_40__xor__;
19666  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_40__xor__;
19667  }
19668  }
19669  #endif
19670  #if CYTHON_COMPILING_IN_CPYTHON
19671  {
19672  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__ixor__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19673  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19674  __pyx_wrapperbase_8PyClical_8clifford_42__ixor__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19675  __pyx_wrapperbase_8PyClical_8clifford_42__ixor__.doc = __pyx_doc_8PyClical_8clifford_42__ixor__;
19676  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_42__ixor__;
19677  }
19678  }
19679  #endif
19680  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
19681  #if CYTHON_COMPILING_IN_CPYTHON
19682  {
19683  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__div__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19684  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19685  __pyx_wrapperbase_8PyClical_8clifford_44__div__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19686  __pyx_wrapperbase_8PyClical_8clifford_44__div__.doc = __pyx_doc_8PyClical_8clifford_44__div__;
19687  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_44__div__;
19688  }
19689  }
19690  #endif
19691  #endif
19692  #if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
19693  #if CYTHON_COMPILING_IN_CPYTHON
19694  {
19695  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__idiv__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19696  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19697  __pyx_wrapperbase_8PyClical_8clifford_46__idiv__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19698  __pyx_wrapperbase_8PyClical_8clifford_46__idiv__.doc = __pyx_doc_8PyClical_8clifford_46__idiv__;
19699  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_46__idiv__;
19700  }
19701  }
19702  #endif
19703  #endif
19704  #if CYTHON_COMPILING_IN_CPYTHON
19705  {
19706  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__or__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19707  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19708  __pyx_wrapperbase_8PyClical_8clifford_50__or__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19709  __pyx_wrapperbase_8PyClical_8clifford_50__or__.doc = __pyx_doc_8PyClical_8clifford_50__or__;
19710  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_50__or__;
19711  }
19712  }
19713  #endif
19714  #if CYTHON_COMPILING_IN_CPYTHON
19715  {
19716  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__ior__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19717  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19718  __pyx_wrapperbase_8PyClical_8clifford_52__ior__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19719  __pyx_wrapperbase_8PyClical_8clifford_52__ior__.doc = __pyx_doc_8PyClical_8clifford_52__ior__;
19720  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_52__ior__;
19721  }
19722  }
19723  #endif
19724  #if CYTHON_COMPILING_IN_CPYTHON
19725  {
19726  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__pow__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19727  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19728  __pyx_wrapperbase_8PyClical_8clifford_54__pow__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19729  __pyx_wrapperbase_8PyClical_8clifford_54__pow__.doc = __pyx_doc_8PyClical_8clifford_54__pow__;
19730  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_54__pow__;
19731  }
19732  }
19733  #endif
19734  #if CYTHON_COMPILING_IN_CPYTHON
19735  {
19736  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__call__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19737  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19738  __pyx_wrapperbase_8PyClical_8clifford_60__call__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19739  __pyx_wrapperbase_8PyClical_8clifford_60__call__.doc = __pyx_doc_8PyClical_8clifford_60__call__;
19740  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_60__call__;
19741  }
19742  }
19743  #endif
19744  #if CYTHON_COMPILING_IN_CPYTHON
19745  {
19746  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__repr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19747  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19748  __pyx_wrapperbase_8PyClical_8clifford_92__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19749  __pyx_wrapperbase_8PyClical_8clifford_92__repr__.doc = __pyx_doc_8PyClical_8clifford_92__repr__;
19750  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_92__repr__;
19751  }
19752  }
19753  #endif
19754  #if CYTHON_COMPILING_IN_CPYTHON
19755  {
19756  PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_8PyClical_clifford, "__str__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19757  if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
19758  __pyx_wrapperbase_8PyClical_8clifford_94__str__ = *((PyWrapperDescrObject *)wrapper)->d_base;
19759  __pyx_wrapperbase_8PyClical_8clifford_94__str__.doc = __pyx_doc_8PyClical_8clifford_94__str__;
19760  ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_8PyClical_8clifford_94__str__;
19761  }
19762  }
19763  #endif
19764  if (__Pyx_SetVtable(__pyx_type_8PyClical_clifford.tp_dict, __pyx_vtabptr_8PyClical_clifford) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19765  if (PyObject_SetAttrString(__pyx_m, "clifford", (PyObject *)&__pyx_type_8PyClical_clifford) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19766  __pyx_ptype_8PyClical_clifford = &__pyx_type_8PyClical_clifford;
19767  if (PyType_Ready(&__pyx_type_8PyClical___pyx_scope_struct____iter__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19768  __pyx_type_8PyClical___pyx_scope_struct____iter__.tp_print = 0;
19769  __pyx_ptype_8PyClical___pyx_scope_struct____iter__ = &__pyx_type_8PyClical___pyx_scope_struct____iter__;
19770  /*--- Type import code ---*/
19771  /*--- Variable import code ---*/
19772  /*--- Function import code ---*/
19773  /*--- Execution code ---*/
19774  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
19775  if (__Pyx_patch_abc() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19776  #endif
19777 
19778  /* "PyClical.pyx":28
19779  * # C. Doran and A. Lasenby, "Geometric algebra for physicists", Cambridge, 2003.
19780  *
19781  * import math # <<<<<<<<<<<<<<
19782  * import numbers
19783  * import collections
19784  */
19785  __pyx_t_1 = __Pyx_Import(__pyx_n_s_math, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19786  __Pyx_GOTREF(__pyx_t_1);
19787  if (PyDict_SetItem(__pyx_d, __pyx_n_s_math, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19788  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19789 
19790  /* "PyClical.pyx":29
19791  *
19792  * import math
19793  * import numbers # <<<<<<<<<<<<<<
19794  * import collections
19795  *
19796  */
19797  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numbers, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19798  __Pyx_GOTREF(__pyx_t_1);
19799  if (PyDict_SetItem(__pyx_d, __pyx_n_s_numbers, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19800  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19801 
19802  /* "PyClical.pyx":30
19803  * import math
19804  * import numbers
19805  * import collections # <<<<<<<<<<<<<<
19806  *
19807  * __version__ = "0.8.2"
19808  */
19809  __pyx_t_1 = __Pyx_Import(__pyx_n_s_collections, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19810  __Pyx_GOTREF(__pyx_t_1);
19811  if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19812  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19813 
19814  /* "PyClical.pyx":32
19815  * import collections
19816  *
19817  * __version__ = "0.8.2" # <<<<<<<<<<<<<<
19818  *
19819  * from PyClical cimport *
19820  */
19821  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_0_8_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19822 
19823  /* "PyClical.pyx":404
19824  * return index_set_to_str( self.unwrap() ).c_str()
19825  *
19826  * def index_set_hidden_doctests(): # <<<<<<<<<<<<<<
19827  * """
19828  * Tests for functions that Doctest cannot see.
19829  */
19830  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8PyClical_1index_set_hidden_doctests, NULL, __pyx_n_s_PyClical); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19831  __Pyx_GOTREF(__pyx_t_1);
19832  if (PyDict_SetItem(__pyx_d, __pyx_n_s_index_set_hidden_doctests, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19833  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19834 
19835  /* "PyClical.pyx":1243
19836  * return clifford_to_str( self.unwrap() ).c_str()
19837  *
19838  * def clifford_hidden_doctests(): # <<<<<<<<<<<<<<
19839  * """
19840  * Tests for functions that Doctest cannot see.
19841  */
19842  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8PyClical_9clifford_hidden_doctests, NULL, __pyx_n_s_PyClical); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19843  __Pyx_GOTREF(__pyx_t_1);
19844  if (PyDict_SetItem(__pyx_d, __pyx_n_s_clifford_hidden_doctests, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19845  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19846 
19847  /* "PyClical.pyx":1856
19848  *
19849  * # Some abbreviations.
19850  * tau = atan(clifford(1.0)) * 8.0 # <<<<<<<<<<<<<<
19851  * pi = tau / 2.0
19852  *
19853  */
19854  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8PyClical_clifford), __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19855  __Pyx_GOTREF(__pyx_t_1);
19856  __pyx_t_2 = __pyx_f_8PyClical_atan(__pyx_t_1, 0, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19857  __Pyx_GOTREF(__pyx_t_2);
19858  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19859  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_float_8_0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19860  __Pyx_GOTREF(__pyx_t_1);
19861  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19862  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tau, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19863  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19864 
19865  /* "PyClical.pyx":1857
19866  * # Some abbreviations.
19867  * tau = atan(clifford(1.0)) * 8.0
19868  * pi = tau / 2.0 # <<<<<<<<<<<<<<
19869  *
19870  * cl = clifford
19871  */
19872  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tau); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19873  __Pyx_GOTREF(__pyx_t_1);
19874  __pyx_t_2 = __Pyx_PyFloat_DivideObjC(__pyx_t_1, __pyx_float_2_0, 2.0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19875  __Pyx_GOTREF(__pyx_t_2);
19876  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19877  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pi, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19878  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19879 
19880  /* "PyClical.pyx":1859
19881  * pi = tau / 2.0
19882  *
19883  * cl = clifford # <<<<<<<<<<<<<<
19884  * """
19885  * Abbreviation for clifford.
19886  */
19887  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cl, ((PyObject *)__pyx_ptype_8PyClical_clifford)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19888 
19889  /* "PyClical.pyx":1879
19890  * """
19891  *
19892  * ist = index_set # <<<<<<<<<<<<<<
19893  * """
19894  * Abbreviation for index_set.
19895  */
19896  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ist, ((PyObject *)__pyx_ptype_8PyClical_index_set)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19897 
19898  /* "PyClical.pyx":1887
19899  * """
19900  *
19901  * def e(obj): # <<<<<<<<<<<<<<
19902  * """
19903  * Abbreviation for clifford(index_set(obj)).
19904  */
19905  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8PyClical_83e, NULL, __pyx_n_s_PyClical); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19906  __Pyx_GOTREF(__pyx_t_2);
19907  if (PyDict_SetItem(__pyx_d, __pyx_n_s_e, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19908  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19909 
19910  /* "PyClical.pyx":1900
19911  * return clifford(index_set(obj))
19912  *
19913  * def istpq(p, q): # <<<<<<<<<<<<<<
19914  * """
19915  * Abbreviation for index_set({-q,...p}).
19916  */
19917  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8PyClical_85istpq, NULL, __pyx_n_s_PyClical); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19918  __Pyx_GOTREF(__pyx_t_2);
19919  if (PyDict_SetItem(__pyx_d, __pyx_n_s_istpq, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19920  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19921 
19922  /* "PyClical.pyx":1909
19923  * return index_set(set(range(-q,p+1)))
19924  *
19925  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
19926  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL].
19927  *
19928  */
19929  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_e); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19930  __Pyx_GOTREF(__pyx_t_2);
19931  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19932  __Pyx_GOTREF(__pyx_t_1);
19933  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19934  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_e); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19935  __Pyx_GOTREF(__pyx_t_2);
19936  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19937  __Pyx_GOTREF(__pyx_t_3);
19938  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19939  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19940  __Pyx_GOTREF(__pyx_t_2);
19941  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19942  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19943  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ninf3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19944  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19945 
19946  /* "PyClical.pyx":1910
19947  *
19948  * ninf3 = e(4) + e(-1) # Null infinity point in 3D Conformal Geometric Algebra [DL].
19949  * nbar3 = e(4) - e(-1) # Null bar point in 3D Conformal Geometric Algebra [DL]. # <<<<<<<<<<<<<<
19950  *
19951  * # Doctest interface.
19952  */
19953  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_e); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19954  __Pyx_GOTREF(__pyx_t_2);
19955  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19956  __Pyx_GOTREF(__pyx_t_3);
19957  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19958  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_e); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19959  __Pyx_GOTREF(__pyx_t_2);
19960  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19961  __Pyx_GOTREF(__pyx_t_1);
19962  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19963  __pyx_t_2 = PyNumber_Subtract(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19964  __Pyx_GOTREF(__pyx_t_2);
19965  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19966  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19967  if (PyDict_SetItem(__pyx_d, __pyx_n_s_nbar3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19968  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19969 
19970  /* "PyClical.pyx":1913
19971  *
19972  * # Doctest interface.
19973  * def _test(): # <<<<<<<<<<<<<<
19974  * import PyClical, doctest
19975  * return doctest.testmod(PyClical)
19976  */
19977  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8PyClical_87_test, NULL, __pyx_n_s_PyClical); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19978  __Pyx_GOTREF(__pyx_t_2);
19979  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19980  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19981 
19982  /* "PyClical.pyx":1917
19983  * return doctest.testmod(PyClical)
19984  *
19985  * if __name__ == "__main__": # <<<<<<<<<<<<<<
19986  * _test()
19987  */
19988  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19989  __Pyx_GOTREF(__pyx_t_2);
19990  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_main, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19991  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19992  if (__pyx_t_4) {
19993 
19994  /* "PyClical.pyx":1918
19995  *
19996  * if __name__ == "__main__":
19997  * _test() # <<<<<<<<<<<<<<
19998  */
19999  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_test); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20000  __Pyx_GOTREF(__pyx_t_1);
20001  __pyx_t_3 = NULL;
20002  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
20003  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
20004  if (likely(__pyx_t_3)) {
20005  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
20006  __Pyx_INCREF(__pyx_t_3);
20007  __Pyx_INCREF(function);
20008  __Pyx_DECREF_SET(__pyx_t_1, function);
20009  }
20010  }
20011  if (__pyx_t_3) {
20012  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20013  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20014  } else {
20015  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20016  }
20017  __Pyx_GOTREF(__pyx_t_2);
20018  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20019  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20020 
20021  /* "PyClical.pyx":1917
20022  * return doctest.testmod(PyClical)
20023  *
20024  * if __name__ == "__main__": # <<<<<<<<<<<<<<
20025  * _test()
20026  */
20027  }
20028 
20029  /* "PyClical.pyx":1
20030  * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<<
20031  * # distutils: language = c++
20032  * #
20033  */
20034  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20035  __Pyx_GOTREF(__pyx_t_2);
20036  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_copy_line_64, __pyx_kp_u_Copy_this_index_set_object_s_in) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20037  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___setitem___line_177, __pyx_kp_u_Set_the_value_of_an_index_set_o) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20038  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___getitem___line_189, __pyx_kp_u_Get_the_value_of_an_index_set_o) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20039  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___iter___line_227, __pyx_kp_u_Iterate_over_the_indices_of_an) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20040  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___invert___line_238, __pyx_kp_u_Set_complement_not_print_index) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20041  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___xor___line_247, __pyx_kp_u_Symmetric_set_difference_exclus) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20042  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___ixor___line_258, __pyx_kp_u_Symmetric_set_difference_exclus_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20043  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___and___line_269, __pyx_kp_u_Set_intersection_and_print_inde) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20044  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___iand___line_280, __pyx_kp_u_Set_intersection_and_x_index_se) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20045  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___or___line_291, __pyx_kp_u_Set_union_or_print_index_set_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20046  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___ior___line_302, __pyx_kp_u_Set_union_or_x_index_set_1_x_in) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20047  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_count_line_313, __pyx_kp_u_Cardinality_Number_of_indices_i) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20048  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_count_neg_line_322, __pyx_kp_u_Number_of_negative_indices_incl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20049  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_count_pos_line_331, __pyx_kp_u_Number_of_positive_indices_incl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20050  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_min_line_340, __pyx_kp_u_Minimum_member_index_set_1_1_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20051  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_max_line_349, __pyx_kp_u_Maximum_member_index_set_1_1_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20052  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_sign_of_mult_line_364, __pyx_kp_u_Sign_of_geometric_product_of_tw) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20053  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_sign_of_square_line_37, __pyx_kp_u_Sign_of_geometric_square_of_a_C) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20054  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___repr___line_382, __pyx_kp_u_The_official_string_representat) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20055  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set___str___line_393, __pyx_kp_u_The_informal_string_representat) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20056  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_index_set_hidden_doctests_line_4, __pyx_kp_u_Tests_for_functions_that_Doctes) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20057  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_compare_line_490, __pyx_kp_u_lexicographic_compare_eg_3_4_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20058  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_min_neg_line_502, __pyx_kp_u_Minimum_negative_index_or_0_if) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20059  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_max_pos_line_511, __pyx_kp_u_Maximum_positive_index_or_0_if) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20060  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_copy_line_554, __pyx_kp_u_Copy_this_clifford_object_x_cli) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20061  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___iter___line_637, __pyx_kp_u_Not_applicable_for_a_in_cliffor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20062  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_reframe_line_648, __pyx_kp_u_Put_self_into_a_larger_frame_co) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20063  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___getitem___line_706, __pyx_kp_u_Subscripting_map_from_index_set) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20064  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___neg___line_721, __pyx_kp_u_Unary_print_clifford_1_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20065  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___pos___line_730, __pyx_kp_u_Unary_print_clifford_1_1_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20066  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___add___line_739, __pyx_kp_u_Geometric_sum_print_clifford_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20067  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___iadd___line_750, __pyx_kp_u_Geometric_sum_x_clifford_1_x_cl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20068  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___sub___line_759, __pyx_kp_u_Geometric_difference_print_clif) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20069  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___isub___line_770, __pyx_kp_u_Geometric_difference_x_clifford) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20070  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___mul___line_779, __pyx_kp_u_Geometric_product_print_cliffor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20071  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___imul___line_792, __pyx_kp_u_Geometric_product_x_clifford_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20072  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___mod___line_805, __pyx_kp_u_Contraction_print_clifford_1_cl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20073  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___imod___line_820, __pyx_kp_u_Contraction_x_clifford_1_x_clif) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20074  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___and___line_835, __pyx_kp_u_Inner_product_print_clifford_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20075  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___iand___line_850, __pyx_kp_u_Inner_product_x_clifford_1_x_cl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20076  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___xor___line_865, __pyx_kp_u_Outer_product_print_clifford_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20077  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___ixor___line_880, __pyx_kp_u_Outer_product_x_clifford_1_x_cl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20078  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___div___line_895, __pyx_kp_u_Geometric_quotient_print_cliffo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20079  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___idiv___line_910, __pyx_kp_u_Geometric_quotient_x_clifford_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20080  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_inv_line_925, __pyx_kp_u_Geometric_multiplicative_invers) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20081  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___or___line_938, __pyx_kp_u_Transform_left_hand_side_using) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20082  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___ior___line_949, __pyx_kp_u_Transform_left_hand_side_using_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20083  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___pow___line_960, __pyx_kp_u_Power_self_to_the_m_x_clifford) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20084  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_pow_line_979, __pyx_kp_u_Power_self_to_the_m_x_clifford_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20085  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_outer_pow_line_1003, __pyx_kp_u_Outer_product_power_x_clifford) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20086  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___call___line_1019, __pyx_kp_u_Pure_grade_vector_part_print_cl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20087  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_scalar_line_1038, __pyx_kp_u_Scalar_part_clifford_1_1_1_2_sc) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20088  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_pure_line_1049, __pyx_kp_u_Pure_part_print_clifford_1_1_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20089  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_even_line_1060, __pyx_kp_u_Even_part_of_multivector_sum_of) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20090  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_odd_line_1069, __pyx_kp_u_Odd_part_of_multivector_sum_of) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20091  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_vector_part_line_1078, __pyx_kp_u_Vector_part_of_multivector_as_a) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20092  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_involute_line_1106, __pyx_kp_u_Main_involution_each_i_is_repla) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20093  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_reverse_line_1122, __pyx_kp_u_Reversion_eg_clifford_1_cliffor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20094  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_conj_line_1137, __pyx_kp_u_Conjugation_reverse_o_involute) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20095  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_quad_line_1152, __pyx_kp_u_Quadratic_form_rev_x_x_0_print) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20096  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_norm_line_1163, __pyx_kp_u_Norm_sum_of_squares_of_coordina) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20097  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_abs_line_1174, __pyx_kp_u_Absolute_value_square_root_of_n) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20098  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_max_abs_line_1183, __pyx_kp_u_Maximum_of_absolute_values_of_c) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20099  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_truncated_line_1194, __pyx_kp_u_Remove_all_terms_of_self_with_r) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20100  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_isnan_line_1205, __pyx_kp_u_Check_if_a_multivector_contains) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20101  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_frame_line_1214, __pyx_kp_u_Subalgebra_generated_by_all_gen) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20102  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___repr___line_1225, __pyx_kp_u_The_official_string_representat_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20103  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford___str___line_1234, __pyx_kp_u_The_informal_string_representat_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20104  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_clifford_hidden_doctests_line_12, __pyx_kp_u_Tests_for_functions_that_Doctes_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20105  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_inv_line_1329, __pyx_kp_u_Geometric_multiplicative_invers_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20106  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_scalar_line_1344, __pyx_kp_u_Scalar_part_scalar_clifford_1_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20107  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_real_line_1355, __pyx_kp_u_Real_part_synonym_for_scalar_pa) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20108  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_imag_line_1366, __pyx_kp_u_Imaginary_part_deprecated_alway) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20109  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_pure_line_1377, __pyx_kp_u_Pure_part_print_pure_clifford_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20110  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_even_line_1388, __pyx_kp_u_Even_part_of_multivector_sum_of_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20111  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_odd_line_1397, __pyx_kp_u_Odd_part_of_multivector_sum_of_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20112  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_involute_line_1406, __pyx_kp_u_Main_involution_each_i_is_repla_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20113  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_reverse_line_1421, __pyx_kp_u_Reversion_eg_1_2_2_1_print_reve) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20114  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_conj_line_1436, __pyx_kp_u_Conjugation_reverse_o_involute_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20115  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_quad_line_1451, __pyx_kp_u_Quadratic_form_rev_x_x_0_print_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20116  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_norm_line_1462, __pyx_kp_u_norm_sum_of_squares_of_coordina) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20117  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_abs_line_1473, __pyx_kp_u_Absolute_value_of_multivector_m) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20118  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_max_abs_line_1482, __pyx_kp_u_Maximum_absolute_value_of_coord) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20119  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_pow_line_1494, __pyx_kp_u_Integer_power_of_multivector_ob) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20120  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_outer_pow_line_1518, __pyx_kp_u_Outer_product_power_of_multivec) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20121  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_complexifier_line_1527, __pyx_kp_u_Square_root_of_1_which_commutes) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20122  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_sqrt_line_1542, __pyx_kp_u_Square_root_of_multivector_with) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20123  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_exp_line_1565, __pyx_kp_u_Exponential_of_multivector_x_cl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20124  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_log_line_1579, __pyx_kp_u_Natural_logarithm_of_multivecto) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20125  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_cos_line_1602, __pyx_kp_u_Cosine_of_multivector_with_opti) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20126  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_acos_line_1619, __pyx_kp_u_Inverse_cosine_of_multivector_w) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20127  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_cosh_line_1640, __pyx_kp_u_Hyperbolic_cosine_of_multivecto) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20128  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_acosh_line_1656, __pyx_kp_u_Inverse_hyperbolic_cosine_of_mu) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20129  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_sin_line_1679, __pyx_kp_u_Sine_of_multivector_with_option) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20130  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_asin_line_1698, __pyx_kp_u_Inverse_sine_of_multivector_wit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20131  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_sinh_line_1719, __pyx_kp_u_Hyperbolic_sine_of_multivector) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20132  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_asinh_line_1733, __pyx_kp_u_Inverse_hyperbolic_sine_of_mult) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20133  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_tan_line_1752, __pyx_kp_u_Tangent_of_multivector_with_opt) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20134  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_atan_line_1769, __pyx_kp_u_Inverse_tangent_of_multivector) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20135  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_tanh_line_1786, __pyx_kp_u_Hyperbolic_tangent_of_multivect) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20136  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_atanh_line_1798, __pyx_kp_u_Inverse_hyperbolic_tangent_of_m) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20137  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_random_clifford_line_1815, __pyx_kp_u_Random_multivector_within_a_fra) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20138  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_cga3_line_1824, __pyx_kp_u_Convert_Euclidean_3D_multivecto) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20139  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_cga3std_line_1833, __pyx_kp_u_Convert_CGA3_null_vector_to_sta) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20140  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_agc3_line_1844, __pyx_kp_u_Convert_CGA3_null_vector_to_Euc) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20141  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_e_line_1887, __pyx_kp_u_Abbreviation_for_clifford_index) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20142  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_istpq_line_1900, __pyx_kp_u_Abbreviation_for_index_set_q_p) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20143  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20144  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20145 
20146  /*--- Wrapped vars code ---*/
20147 
20148  goto __pyx_L0;
20149  __pyx_L1_error:;
20150  __Pyx_XDECREF(__pyx_t_1);
20151  __Pyx_XDECREF(__pyx_t_2);
20152  __Pyx_XDECREF(__pyx_t_3);
20153  if (__pyx_m) {
20154  if (__pyx_d) {
20155  __Pyx_AddTraceback("init PyClical", __pyx_clineno, __pyx_lineno, __pyx_filename);
20156  }
20157  Py_DECREF(__pyx_m); __pyx_m = 0;
20158  } else if (!PyErr_Occurred()) {
20159  PyErr_SetString(PyExc_ImportError, "init PyClical");
20160  }
20161  __pyx_L0:;
20162  __Pyx_RefNannyFinishContext();
20163  #if PY_MAJOR_VERSION < 3
20164  return;
20165  #else
20166  return __pyx_m;
20167  #endif
20168 }
20169 
20170 /* --- Runtime support code --- */
20171 #if CYTHON_REFNANNY
20172 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
20173  PyObject *m = NULL, *p = NULL;
20174  void *r = NULL;
20175  m = PyImport_ImportModule((char *)modname);
20176  if (!m) goto end;
20177  p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
20178  if (!p) goto end;
20179  r = PyLong_AsVoidPtr(p);
20180 end:
20181  Py_XDECREF(p);
20182  Py_XDECREF(m);
20183  return (__Pyx_RefNannyAPIStruct *)r;
20184 }
20185 #endif
20186 
20187 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
20188  PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
20189  if (unlikely(!result)) {
20190  PyErr_Format(PyExc_NameError,
20191 #if PY_MAJOR_VERSION >= 3
20192  "name '%U' is not defined", name);
20193 #else
20194  "name '%.200s' is not defined", PyString_AS_STRING(name));
20195 #endif
20196  }
20197  return result;
20198 }
20199 
20200 #if CYTHON_COMPILING_IN_CPYTHON
20201 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
20202  PyObject *result;
20203  ternaryfunc call = func->ob_type->tp_call;
20204  if (unlikely(!call))
20205  return PyObject_Call(func, arg, kw);
20206  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
20207  return NULL;
20208  result = (*call)(func, arg, kw);
20209  Py_LeaveRecursiveCall();
20210  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
20211  PyErr_SetString(
20212  PyExc_SystemError,
20213  "NULL result without error in PyObject_Call");
20214  }
20215  return result;
20216 }
20217 #endif
20218 
20219 static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
20220 #if CYTHON_COMPILING_IN_CPYTHON
20221  PyObject *tmp_type, *tmp_value, *tmp_tb;
20222  PyThreadState *tstate = PyThreadState_GET();
20223  tmp_type = tstate->curexc_type;
20224  tmp_value = tstate->curexc_value;
20225  tmp_tb = tstate->curexc_traceback;
20226  tstate->curexc_type = type;
20227  tstate->curexc_value = value;
20228  tstate->curexc_traceback = tb;
20229  Py_XDECREF(tmp_type);
20230  Py_XDECREF(tmp_value);
20231  Py_XDECREF(tmp_tb);
20232 #else
20233  PyErr_Restore(type, value, tb);
20234 #endif
20235 }
20236 static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
20237 #if CYTHON_COMPILING_IN_CPYTHON
20238  PyThreadState *tstate = PyThreadState_GET();
20239  *type = tstate->curexc_type;
20240  *value = tstate->curexc_value;
20241  *tb = tstate->curexc_traceback;
20242  tstate->curexc_type = 0;
20243  tstate->curexc_value = 0;
20244  tstate->curexc_traceback = 0;
20245 #else
20246  PyErr_Fetch(type, value, tb);
20247 #endif
20248 }
20249 
20250 static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
20251  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
20252  int full_traceback, CYTHON_UNUSED int nogil) {
20253  PyObject *old_exc, *old_val, *old_tb;
20254  PyObject *ctx;
20255 #ifdef WITH_THREAD
20256  PyGILState_STATE state;
20257  if (nogil)
20258  state = PyGILState_Ensure();
20259 #endif
20260  __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
20261  if (full_traceback) {
20262  Py_XINCREF(old_exc);
20263  Py_XINCREF(old_val);
20264  Py_XINCREF(old_tb);
20265  __Pyx_ErrRestore(old_exc, old_val, old_tb);
20266  PyErr_PrintEx(1);
20267  }
20268  #if PY_MAJOR_VERSION < 3
20269  ctx = PyString_FromString(name);
20270  #else
20271  ctx = PyUnicode_FromString(name);
20272  #endif
20273  __Pyx_ErrRestore(old_exc, old_val, old_tb);
20274  if (!ctx) {
20275  PyErr_WriteUnraisable(Py_None);
20276  } else {
20277  PyErr_WriteUnraisable(ctx);
20278  Py_DECREF(ctx);
20279  }
20280 #ifdef WITH_THREAD
20281  if (nogil)
20282  PyGILState_Release(state);
20283 #endif
20284 }
20285 
20286 #if CYTHON_COMPILING_IN_CPYTHON
20287 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
20288  PyObject *self, *result;
20289  PyCFunction cfunc;
20290  cfunc = PyCFunction_GET_FUNCTION(func);
20291  self = PyCFunction_GET_SELF(func);
20292  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
20293  return NULL;
20294  result = cfunc(self, arg);
20295  Py_LeaveRecursiveCall();
20296  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
20297  PyErr_SetString(
20298  PyExc_SystemError,
20299  "NULL result without error in PyObject_Call");
20300  }
20301  return result;
20302 }
20303 #endif
20304 
20305 #if CYTHON_COMPILING_IN_CPYTHON
20306 static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
20307  PyObject *result;
20308  PyObject *args = PyTuple_New(1);
20309  if (unlikely(!args)) return NULL;
20310  Py_INCREF(arg);
20311  PyTuple_SET_ITEM(args, 0, arg);
20312  result = __Pyx_PyObject_Call(func, args, NULL);
20313  Py_DECREF(args);
20314  return result;
20315 }
20316 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
20317 #ifdef __Pyx_CyFunction_USED
20318  if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
20319 #else
20320  if (likely(PyCFunction_Check(func))) {
20321 #endif
20322  if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
20323  return __Pyx_PyObject_CallMethO(func, arg);
20324  }
20325  }
20326  return __Pyx__PyObject_CallOneArg(func, arg);
20327 }
20328 #else
20329 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
20330  PyObject *result;
20331  PyObject *args = PyTuple_Pack(1, arg);
20332  if (unlikely(!args)) return NULL;
20333  result = __Pyx_PyObject_Call(func, args, NULL);
20334  Py_DECREF(args);
20335  return result;
20336 }
20337 #endif
20338 
20339 #if CYTHON_COMPILING_IN_CPYTHON
20340 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
20341 #ifdef __Pyx_CyFunction_USED
20342  if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
20343 #else
20344  if (likely(PyCFunction_Check(func))) {
20345 #endif
20346  if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
20347  return __Pyx_PyObject_CallMethO(func, NULL);
20348  }
20349  }
20350  return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
20351 }
20352 #endif
20353 
20354 static void __Pyx_RaiseDoubleKeywordsError(
20355  const char* func_name,
20356  PyObject* kw_name)
20357 {
20358  PyErr_Format(PyExc_TypeError,
20359  #if PY_MAJOR_VERSION >= 3
20360  "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
20361  #else
20362  "%s() got multiple values for keyword argument '%s'", func_name,
20363  PyString_AsString(kw_name));
20364  #endif
20365 }
20366 
20367 static int __Pyx_ParseOptionalKeywords(
20368  PyObject *kwds,
20369  PyObject **argnames[],
20370  PyObject *kwds2,
20371  PyObject *values[],
20372  Py_ssize_t num_pos_args,
20373  const char* function_name)
20374 {
20375  PyObject *key = 0, *value = 0;
20376  Py_ssize_t pos = 0;
20377  PyObject*** name;
20378  PyObject*** first_kw_arg = argnames + num_pos_args;
20379  while (PyDict_Next(kwds, &pos, &key, &value)) {
20380  name = first_kw_arg;
20381  while (*name && (**name != key)) name++;
20382  if (*name) {
20383  values[name-argnames] = value;
20384  continue;
20385  }
20386  name = first_kw_arg;
20387  #if PY_MAJOR_VERSION < 3
20388  if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
20389  while (*name) {
20390  if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
20391  && _PyString_Eq(**name, key)) {
20392  values[name-argnames] = value;
20393  break;
20394  }
20395  name++;
20396  }
20397  if (*name) continue;
20398  else {
20399  PyObject*** argname = argnames;
20400  while (argname != first_kw_arg) {
20401  if ((**argname == key) || (
20402  (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
20403  && _PyString_Eq(**argname, key))) {
20404  goto arg_passed_twice;
20405  }
20406  argname++;
20407  }
20408  }
20409  } else
20410  #endif
20411  if (likely(PyUnicode_Check(key))) {
20412  while (*name) {
20413  int cmp = (**name == key) ? 0 :
20414  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
20415  (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
20416  #endif
20417  PyUnicode_Compare(**name, key);
20418  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
20419  if (cmp == 0) {
20420  values[name-argnames] = value;
20421  break;
20422  }
20423  name++;
20424  }
20425  if (*name) continue;
20426  else {
20427  PyObject*** argname = argnames;
20428  while (argname != first_kw_arg) {
20429  int cmp = (**argname == key) ? 0 :
20430  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
20431  (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
20432  #endif
20433  PyUnicode_Compare(**argname, key);
20434  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
20435  if (cmp == 0) goto arg_passed_twice;
20436  argname++;
20437  }
20438  }
20439  } else
20440  goto invalid_keyword_type;
20441  if (kwds2) {
20442  if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
20443  } else {
20444  goto invalid_keyword;
20445  }
20446  }
20447  return 0;
20448 arg_passed_twice:
20449  __Pyx_RaiseDoubleKeywordsError(function_name, key);
20450  goto bad;
20451 invalid_keyword_type:
20452  PyErr_Format(PyExc_TypeError,
20453  "%.200s() keywords must be strings", function_name);
20454  goto bad;
20455 invalid_keyword:
20456  PyErr_Format(PyExc_TypeError,
20457  #if PY_MAJOR_VERSION < 3
20458  "%.200s() got an unexpected keyword argument '%.200s'",
20459  function_name, PyString_AsString(key));
20460  #else
20461  "%s() got an unexpected keyword argument '%U'",
20462  function_name, key);
20463  #endif
20464 bad:
20465  return -1;
20466 }
20467 
20468 static void __Pyx_RaiseArgtupleInvalid(
20469  const char* func_name,
20470  int exact,
20471  Py_ssize_t num_min,
20472  Py_ssize_t num_max,
20473  Py_ssize_t num_found)
20474 {
20475  Py_ssize_t num_expected;
20476  const char *more_or_less;
20477  if (num_found < num_min) {
20478  num_expected = num_min;
20479  more_or_less = "at least";
20480  } else {
20481  num_expected = num_max;
20482  more_or_less = "at most";
20483  }
20484  if (exact) {
20485  more_or_less = "exactly";
20486  }
20487  PyErr_Format(PyExc_TypeError,
20488  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
20489  func_name, more_or_less, num_expected,
20490  (num_expected == 1) ? "" : "s", num_found);
20491 }
20492 
20493 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
20494  PyObject *result;
20495 #if CYTHON_COMPILING_IN_CPYTHON
20496  result = PyDict_GetItem(__pyx_d, name);
20497  if (likely(result)) {
20498  Py_INCREF(result);
20499  } else {
20500 #else
20501  result = PyObject_GetItem(__pyx_d, name);
20502  if (!result) {
20503  PyErr_Clear();
20504 #endif
20505  result = __Pyx_GetBuiltinName(name);
20506  }
20507  return result;
20508 }
20509 
20510 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
20511 #if CYTHON_COMPILING_IN_CPYTHON
20512  PyThreadState *tstate = PyThreadState_GET();
20513  *type = tstate->exc_type;
20514  *value = tstate->exc_value;
20515  *tb = tstate->exc_traceback;
20516  Py_XINCREF(*type);
20517  Py_XINCREF(*value);
20518  Py_XINCREF(*tb);
20519 #else
20520  PyErr_GetExcInfo(type, value, tb);
20521 #endif
20522 }
20523 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
20524 #if CYTHON_COMPILING_IN_CPYTHON
20525  PyObject *tmp_type, *tmp_value, *tmp_tb;
20526  PyThreadState *tstate = PyThreadState_GET();
20527  tmp_type = tstate->exc_type;
20528  tmp_value = tstate->exc_value;
20529  tmp_tb = tstate->exc_traceback;
20530  tstate->exc_type = type;
20531  tstate->exc_value = value;
20532  tstate->exc_traceback = tb;
20533  Py_XDECREF(tmp_type);
20534  Py_XDECREF(tmp_value);
20535  Py_XDECREF(tmp_tb);
20536 #else
20537  PyErr_SetExcInfo(type, value, tb);
20538 #endif
20539 }
20540 
20541 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
20542  PyObject *local_type, *local_value, *local_tb;
20543 #if CYTHON_COMPILING_IN_CPYTHON
20544  PyObject *tmp_type, *tmp_value, *tmp_tb;
20545  PyThreadState *tstate = PyThreadState_GET();
20546  local_type = tstate->curexc_type;
20547  local_value = tstate->curexc_value;
20548  local_tb = tstate->curexc_traceback;
20549  tstate->curexc_type = 0;
20550  tstate->curexc_value = 0;
20551  tstate->curexc_traceback = 0;
20552 #else
20553  PyErr_Fetch(&local_type, &local_value, &local_tb);
20554 #endif
20555  PyErr_NormalizeException(&local_type, &local_value, &local_tb);
20556 #if CYTHON_COMPILING_IN_CPYTHON
20557  if (unlikely(tstate->curexc_type))
20558 #else
20559  if (unlikely(PyErr_Occurred()))
20560 #endif
20561  goto bad;
20562  #if PY_MAJOR_VERSION >= 3
20563  if (local_tb) {
20564  if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
20565  goto bad;
20566  }
20567  #endif
20568  Py_XINCREF(local_tb);
20569  Py_XINCREF(local_type);
20570  Py_XINCREF(local_value);
20571  *type = local_type;
20572  *value = local_value;
20573  *tb = local_tb;
20574 #if CYTHON_COMPILING_IN_CPYTHON
20575  tmp_type = tstate->exc_type;
20576  tmp_value = tstate->exc_value;
20577  tmp_tb = tstate->exc_traceback;
20578  tstate->exc_type = local_type;
20579  tstate->exc_value = local_value;
20580  tstate->exc_traceback = local_tb;
20581  Py_XDECREF(tmp_type);
20582  Py_XDECREF(tmp_value);
20583  Py_XDECREF(tmp_tb);
20584 #else
20585  PyErr_SetExcInfo(local_type, local_value, local_tb);
20586 #endif
20587  return 0;
20588 bad:
20589  *type = 0;
20590  *value = 0;
20591  *tb = 0;
20592  Py_XDECREF(local_type);
20593  Py_XDECREF(local_value);
20594  Py_XDECREF(local_tb);
20595  return -1;
20596 }
20597 
20598 #if PY_MAJOR_VERSION < 3
20599 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
20600  CYTHON_UNUSED PyObject *cause) {
20601  Py_XINCREF(type);
20602  if (!value || value == Py_None)
20603  value = NULL;
20604  else
20605  Py_INCREF(value);
20606  if (!tb || tb == Py_None)
20607  tb = NULL;
20608  else {
20609  Py_INCREF(tb);
20610  if (!PyTraceBack_Check(tb)) {
20611  PyErr_SetString(PyExc_TypeError,
20612  "raise: arg 3 must be a traceback or None");
20613  goto raise_error;
20614  }
20615  }
20616  if (PyType_Check(type)) {
20617 #if CYTHON_COMPILING_IN_PYPY
20618  if (!value) {
20619  Py_INCREF(Py_None);
20620  value = Py_None;
20621  }
20622 #endif
20623  PyErr_NormalizeException(&type, &value, &tb);
20624  } else {
20625  if (value) {
20626  PyErr_SetString(PyExc_TypeError,
20627  "instance exception may not have a separate value");
20628  goto raise_error;
20629  }
20630  value = type;
20631  type = (PyObject*) Py_TYPE(type);
20632  Py_INCREF(type);
20633  if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
20634  PyErr_SetString(PyExc_TypeError,
20635  "raise: exception class must be a subclass of BaseException");
20636  goto raise_error;
20637  }
20638  }
20639  __Pyx_ErrRestore(type, value, tb);
20640  return;
20641 raise_error:
20642  Py_XDECREF(value);
20643  Py_XDECREF(type);
20644  Py_XDECREF(tb);
20645  return;
20646 }
20647 #else
20648 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
20649  PyObject* owned_instance = NULL;
20650  if (tb == Py_None) {
20651  tb = 0;
20652  } else if (tb && !PyTraceBack_Check(tb)) {
20653  PyErr_SetString(PyExc_TypeError,
20654  "raise: arg 3 must be a traceback or None");
20655  goto bad;
20656  }
20657  if (value == Py_None)
20658  value = 0;
20659  if (PyExceptionInstance_Check(type)) {
20660  if (value) {
20661  PyErr_SetString(PyExc_TypeError,
20662  "instance exception may not have a separate value");
20663  goto bad;
20664  }
20665  value = type;
20666  type = (PyObject*) Py_TYPE(value);
20667  } else if (PyExceptionClass_Check(type)) {
20668  PyObject *instance_class = NULL;
20669  if (value && PyExceptionInstance_Check(value)) {
20670  instance_class = (PyObject*) Py_TYPE(value);
20671  if (instance_class != type) {
20672  int is_subclass = PyObject_IsSubclass(instance_class, type);
20673  if (!is_subclass) {
20674  instance_class = NULL;
20675  } else if (unlikely(is_subclass == -1)) {
20676  goto bad;
20677  } else {
20678  type = instance_class;
20679  }
20680  }
20681  }
20682  if (!instance_class) {
20683  PyObject *args;
20684  if (!value)
20685  args = PyTuple_New(0);
20686  else if (PyTuple_Check(value)) {
20687  Py_INCREF(value);
20688  args = value;
20689  } else
20690  args = PyTuple_Pack(1, value);
20691  if (!args)
20692  goto bad;
20693  owned_instance = PyObject_Call(type, args, NULL);
20694  Py_DECREF(args);
20695  if (!owned_instance)
20696  goto bad;
20697  value = owned_instance;
20698  if (!PyExceptionInstance_Check(value)) {
20699  PyErr_Format(PyExc_TypeError,
20700  "calling %R should have returned an instance of "
20701  "BaseException, not %R",
20702  type, Py_TYPE(value));
20703  goto bad;
20704  }
20705  }
20706  } else {
20707  PyErr_SetString(PyExc_TypeError,
20708  "raise: exception class must be a subclass of BaseException");
20709  goto bad;
20710  }
20711 #if PY_VERSION_HEX >= 0x03030000
20712  if (cause) {
20713 #else
20714  if (cause && cause != Py_None) {
20715 #endif
20716  PyObject *fixed_cause;
20717  if (cause == Py_None) {
20718  fixed_cause = NULL;
20719  } else if (PyExceptionClass_Check(cause)) {
20720  fixed_cause = PyObject_CallObject(cause, NULL);
20721  if (fixed_cause == NULL)
20722  goto bad;
20723  } else if (PyExceptionInstance_Check(cause)) {
20724  fixed_cause = cause;
20725  Py_INCREF(fixed_cause);
20726  } else {
20727  PyErr_SetString(PyExc_TypeError,
20728  "exception causes must derive from "
20729  "BaseException");
20730  goto bad;
20731  }
20732  PyException_SetCause(value, fixed_cause);
20733  }
20734  PyErr_SetObject(type, value);
20735  if (tb) {
20736 #if CYTHON_COMPILING_IN_PYPY
20737  PyObject *tmp_type, *tmp_value, *tmp_tb;
20738  PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
20739  Py_INCREF(tb);
20740  PyErr_Restore(tmp_type, tmp_value, tb);
20741  Py_XDECREF(tmp_tb);
20742 #else
20743  PyThreadState *tstate = PyThreadState_GET();
20744  PyObject* tmp_tb = tstate->curexc_traceback;
20745  if (tb != tmp_tb) {
20746  Py_INCREF(tb);
20747  tstate->curexc_traceback = tb;
20748  Py_XDECREF(tmp_tb);
20749  }
20750 #endif
20751  }
20752 bad:
20753  Py_XDECREF(owned_instance);
20754  return;
20755 }
20756 #endif
20757 
20758 #if CYTHON_USE_PYLONG_INTERNALS
20759  #include "longintrepr.h"
20760 #endif
20761 
20762 #if CYTHON_COMPILING_IN_CPYTHON
20763 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
20764  #if PY_MAJOR_VERSION < 3
20765  if (likely(PyInt_CheckExact(op1))) {
20766  const long b = intval;
20767  long x;
20768  long a = PyInt_AS_LONG(op1);
20769  x = (long)((unsigned long)a + b);
20770  if (likely((x^a) >= 0 || (x^b) >= 0))
20771  return PyInt_FromLong(x);
20772  return PyLong_Type.tp_as_number->nb_add(op1, op2);
20773  }
20774  #endif
20775  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
20776  if (likely(PyLong_CheckExact(op1))) {
20777  const long b = intval;
20778  long a, x;
20779  const PY_LONG_LONG llb = intval;
20780  PY_LONG_LONG lla, llx;
20781  const digit* digits = ((PyLongObject*)op1)->ob_digit;
20782  const Py_ssize_t size = Py_SIZE(op1);
20783  if (likely(__Pyx_sst_abs(size) <= 1)) {
20784  a = likely(size) ? digits[0] : 0;
20785  if (size == -1) a = -a;
20786  } else {
20787  switch (size) {
20788  case -2:
20789  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
20790  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
20791  break;
20792  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
20793  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
20794  goto long_long;
20795  }
20796  case 2:
20797  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
20798  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
20799  break;
20800  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
20801  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
20802  goto long_long;
20803  }
20804  case -3:
20805  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
20806  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
20807  break;
20808  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
20809  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]));
20810  goto long_long;
20811  }
20812  case 3:
20813  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
20814  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
20815  break;
20816  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
20817  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]));
20818  goto long_long;
20819  }
20820  case -4:
20821  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
20822  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
20823  break;
20824  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
20825  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]));
20826  goto long_long;
20827  }
20828  case 4:
20829  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
20830  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
20831  break;
20832  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
20833  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]));
20834  goto long_long;
20835  }
20836  default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
20837  }
20838  }
20839  x = a + b;
20840  return PyLong_FromLong(x);
20841  long_long:
20842  llx = lla + llb;
20843  return PyLong_FromLongLong(llx);
20844  }
20845  #endif
20846  if (PyFloat_CheckExact(op1)) {
20847  const long b = intval;
20848  double a = PyFloat_AS_DOUBLE(op1);
20849  double result;
20850  PyFPE_START_PROTECT("add", return NULL)
20851  result = ((double)a) + (double)b;
20852  PyFPE_END_PROTECT(result)
20853  return PyFloat_FromDouble(result);
20854  }
20855  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
20856 }
20857 #endif
20858 
20859 static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
20860  int r;
20861  if (!j) return -1;
20862  r = PyObject_SetItem(o, j, v);
20863  Py_DECREF(j);
20864  return r;
20865 }
20866 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
20867  CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
20868 #if CYTHON_COMPILING_IN_CPYTHON
20869  if (is_list || PyList_CheckExact(o)) {
20870  Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
20871  if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
20872  PyObject* old = PyList_GET_ITEM(o, n);
20873  Py_INCREF(v);
20874  PyList_SET_ITEM(o, n, v);
20875  Py_DECREF(old);
20876  return 1;
20877  }
20878  } else {
20879  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
20880  if (likely(m && m->sq_ass_item)) {
20881  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
20882  Py_ssize_t l = m->sq_length(o);
20883  if (likely(l >= 0)) {
20884  i += l;
20885  } else {
20886  if (PyErr_ExceptionMatches(PyExc_OverflowError))
20887  PyErr_Clear();
20888  else
20889  return -1;
20890  }
20891  }
20892  return m->sq_ass_item(o, i, v);
20893  }
20894  }
20895 #else
20896 #if CYTHON_COMPILING_IN_PYPY
20897  if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
20898 #else
20899  if (is_list || PySequence_Check(o)) {
20900 #endif
20901  return PySequence_SetItem(o, i, v);
20902  }
20903 #endif
20904  return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
20905 }
20906 
20907 static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
20908  PyErr_Format(PyExc_TypeError,
20909  "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
20910  name, type->tp_name, Py_TYPE(obj)->tp_name);
20911 }
20912 static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
20913  const char *name, int exact)
20914 {
20915  if (unlikely(!type)) {
20916  PyErr_SetString(PyExc_SystemError, "Missing type object");
20917  return 0;
20918  }
20919  if (none_allowed && obj == Py_None) return 1;
20920  else if (exact) {
20921  if (likely(Py_TYPE(obj) == type)) return 1;
20922  #if PY_MAJOR_VERSION == 2
20923  else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
20924  #endif
20925  }
20926  else {
20927  if (likely(PyObject_TypeCheck(obj, type))) return 1;
20928  }
20929  __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
20930  return 0;
20931 }
20932 
20933 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
20934  PyObject *empty_list = 0;
20935  PyObject *module = 0;
20936  PyObject *global_dict = 0;
20937  PyObject *empty_dict = 0;
20938  PyObject *list;
20939  #if PY_VERSION_HEX < 0x03030000
20940  PyObject *py_import;
20941  py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
20942  if (!py_import)
20943  goto bad;
20944  #endif
20945  if (from_list)
20946  list = from_list;
20947  else {
20948  empty_list = PyList_New(0);
20949  if (!empty_list)
20950  goto bad;
20951  list = empty_list;
20952  }
20953  global_dict = PyModule_GetDict(__pyx_m);
20954  if (!global_dict)
20955  goto bad;
20956  empty_dict = PyDict_New();
20957  if (!empty_dict)
20958  goto bad;
20959  {
20960  #if PY_MAJOR_VERSION >= 3
20961  if (level == -1) {
20962  if (strchr(__Pyx_MODULE_NAME, '.')) {
20963  #if PY_VERSION_HEX < 0x03030000
20964  PyObject *py_level = PyInt_FromLong(1);
20965  if (!py_level)
20966  goto bad;
20967  module = PyObject_CallFunctionObjArgs(py_import,
20968  name, global_dict, empty_dict, list, py_level, NULL);
20969  Py_DECREF(py_level);
20970  #else
20971  module = PyImport_ImportModuleLevelObject(
20972  name, global_dict, empty_dict, list, 1);
20973  #endif
20974  if (!module) {
20975  if (!PyErr_ExceptionMatches(PyExc_ImportError))
20976  goto bad;
20977  PyErr_Clear();
20978  }
20979  }
20980  level = 0;
20981  }
20982  #endif
20983  if (!module) {
20984  #if PY_VERSION_HEX < 0x03030000
20985  PyObject *py_level = PyInt_FromLong(level);
20986  if (!py_level)
20987  goto bad;
20988  module = PyObject_CallFunctionObjArgs(py_import,
20989  name, global_dict, empty_dict, list, py_level, NULL);
20990  Py_DECREF(py_level);
20991  #else
20992  module = PyImport_ImportModuleLevelObject(
20993  name, global_dict, empty_dict, list, level);
20994  #endif
20995  }
20996  }
20997 bad:
20998  #if PY_VERSION_HEX < 0x03030000
20999  Py_XDECREF(py_import);
21000  #endif
21001  Py_XDECREF(empty_list);
21002  Py_XDECREF(empty_dict);
21003  return module;
21004 }
21005 
21006 static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
21007 #if PY_VERSION_HEX >= 0x02070000
21008  PyObject *ob = PyCapsule_New(vtable, 0, 0);
21009 #else
21010  PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
21011 #endif
21012  if (!ob)
21013  goto bad;
21014  if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
21015  goto bad;
21016  Py_DECREF(ob);
21017  return 0;
21018 bad:
21019  Py_XDECREF(ob);
21020  return -1;
21021 }
21022 
21023 #if CYTHON_COMPILING_IN_CPYTHON
21024 static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
21025  const double b = floatval;
21026  double a, result;
21027  if (likely(PyFloat_CheckExact(op1))) {
21028  a = PyFloat_AS_DOUBLE(op1);
21029  } else
21030  #if PY_MAJOR_VERSION < 3
21031  if (likely(PyInt_CheckExact(op1))) {
21032  a = (double) PyInt_AS_LONG(op1);
21033  } else
21034  #endif
21035  if (likely(PyLong_CheckExact(op1))) {
21036  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
21037  const digit* digits = ((PyLongObject*)op1)->ob_digit;
21038  const Py_ssize_t size = Py_SIZE(op1);
21039  switch (size) {
21040  case 0: a = 0.0; break;
21041  case -1: a = -(double) digits[0]; break;
21042  case 1: a = (double) digits[0]; break;
21043  case -2:
21044  case 2:
21045  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
21046  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21047  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
21048  if (size == -2)
21049  a = -a;
21050  break;
21051  }
21052  }
21053  case -3:
21054  case 3:
21055  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
21056  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21057  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
21058  if (size == -3)
21059  a = -a;
21060  break;
21061  }
21062  }
21063  case -4:
21064  case 4:
21065  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
21066  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
21067  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
21068  if (size == -4)
21069  a = -a;
21070  break;
21071  }
21072  }
21073  default:
21074  #else
21075  {
21076  #endif
21077  a = PyLong_AsDouble(op1);
21078  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
21079  }
21080  } else {
21081  return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
21082  }
21083  PyFPE_START_PROTECT("divide", return NULL)
21084  result = a / b;
21085  PyFPE_END_PROTECT(result)
21086  return PyFloat_FromDouble(result);
21087 }
21088 #endif
21089 
21090 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
21091 #if CYTHON_COMPILING_IN_PYPY
21092  return PyObject_RichCompareBool(s1, s2, equals);
21093 #else
21094  if (s1 == s2) {
21095  return (equals == Py_EQ);
21096  } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
21097  const char *ps1, *ps2;
21098  Py_ssize_t length = PyBytes_GET_SIZE(s1);
21099  if (length != PyBytes_GET_SIZE(s2))
21100  return (equals == Py_NE);
21101  ps1 = PyBytes_AS_STRING(s1);
21102  ps2 = PyBytes_AS_STRING(s2);
21103  if (ps1[0] != ps2[0]) {
21104  return (equals == Py_NE);
21105  } else if (length == 1) {
21106  return (equals == Py_EQ);
21107  } else {
21108  int result = memcmp(ps1, ps2, (size_t)length);
21109  return (equals == Py_EQ) ? (result == 0) : (result != 0);
21110  }
21111  } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
21112  return (equals == Py_NE);
21113  } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
21114  return (equals == Py_NE);
21115  } else {
21116  int result;
21117  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
21118  if (!py_result)
21119  return -1;
21120  result = __Pyx_PyObject_IsTrue(py_result);
21121  Py_DECREF(py_result);
21122  return result;
21123  }
21124 #endif
21125 }
21126 
21127 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
21128 #if CYTHON_COMPILING_IN_PYPY
21129  return PyObject_RichCompareBool(s1, s2, equals);
21130 #else
21131 #if PY_MAJOR_VERSION < 3
21132  PyObject* owned_ref = NULL;
21133 #endif
21134  int s1_is_unicode, s2_is_unicode;
21135  if (s1 == s2) {
21136  goto return_eq;
21137  }
21138  s1_is_unicode = PyUnicode_CheckExact(s1);
21139  s2_is_unicode = PyUnicode_CheckExact(s2);
21140 #if PY_MAJOR_VERSION < 3
21141  if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
21142  owned_ref = PyUnicode_FromObject(s2);
21143  if (unlikely(!owned_ref))
21144  return -1;
21145  s2 = owned_ref;
21146  s2_is_unicode = 1;
21147  } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
21148  owned_ref = PyUnicode_FromObject(s1);
21149  if (unlikely(!owned_ref))
21150  return -1;
21151  s1 = owned_ref;
21152  s1_is_unicode = 1;
21153  } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
21154  return __Pyx_PyBytes_Equals(s1, s2, equals);
21155  }
21156 #endif
21157  if (s1_is_unicode & s2_is_unicode) {
21158  Py_ssize_t length;
21159  int kind;
21160  void *data1, *data2;
21161  if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
21162  return -1;
21163  length = __Pyx_PyUnicode_GET_LENGTH(s1);
21164  if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
21165  goto return_ne;
21166  }
21167  kind = __Pyx_PyUnicode_KIND(s1);
21168  if (kind != __Pyx_PyUnicode_KIND(s2)) {
21169  goto return_ne;
21170  }
21171  data1 = __Pyx_PyUnicode_DATA(s1);
21172  data2 = __Pyx_PyUnicode_DATA(s2);
21173  if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
21174  goto return_ne;
21175  } else if (length == 1) {
21176  goto return_eq;
21177  } else {
21178  int result = memcmp(data1, data2, (size_t)(length * kind));
21179  #if PY_MAJOR_VERSION < 3
21180  Py_XDECREF(owned_ref);
21181  #endif
21182  return (equals == Py_EQ) ? (result == 0) : (result != 0);
21183  }
21184  } else if ((s1 == Py_None) & s2_is_unicode) {
21185  goto return_ne;
21186  } else if ((s2 == Py_None) & s1_is_unicode) {
21187  goto return_ne;
21188  } else {
21189  int result;
21190  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
21191  if (!py_result)
21192  return -1;
21193  result = __Pyx_PyObject_IsTrue(py_result);
21194  Py_DECREF(py_result);
21195  return result;
21196  }
21197 return_eq:
21198  #if PY_MAJOR_VERSION < 3
21199  Py_XDECREF(owned_ref);
21200  #endif
21201  return (equals == Py_EQ);
21202 return_ne:
21203  #if PY_MAJOR_VERSION < 3
21204  Py_XDECREF(owned_ref);
21205  #endif
21206  return (equals == Py_NE);
21207 #endif
21208 }
21209 
21210 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
21211  int start = 0, mid = 0, end = count - 1;
21212  if (end >= 0 && code_line > entries[end].code_line) {
21213  return count;
21214  }
21215  while (start < end) {
21216  mid = start + (end - start) / 2;
21217  if (code_line < entries[mid].code_line) {
21218  end = mid;
21219  } else if (code_line > entries[mid].code_line) {
21220  start = mid + 1;
21221  } else {
21222  return mid;
21223  }
21224  }
21225  if (code_line <= entries[mid].code_line) {
21226  return mid;
21227  } else {
21228  return mid + 1;
21229  }
21230 }
21231 static PyCodeObject *__pyx_find_code_object(int code_line) {
21232  PyCodeObject* code_object;
21233  int pos;
21234  if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
21235  return NULL;
21236  }
21237  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
21238  if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
21239  return NULL;
21240  }
21241  code_object = __pyx_code_cache.entries[pos].code_object;
21242  Py_INCREF(code_object);
21243  return code_object;
21244 }
21245 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
21246  int pos, i;
21247  __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
21248  if (unlikely(!code_line)) {
21249  return;
21250  }
21251  if (unlikely(!entries)) {
21252  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
21253  if (likely(entries)) {
21254  __pyx_code_cache.entries = entries;
21255  __pyx_code_cache.max_count = 64;
21256  __pyx_code_cache.count = 1;
21257  entries[0].code_line = code_line;
21258  entries[0].code_object = code_object;
21259  Py_INCREF(code_object);
21260  }
21261  return;
21262  }
21263  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
21264  if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
21265  PyCodeObject* tmp = entries[pos].code_object;
21266  entries[pos].code_object = code_object;
21267  Py_DECREF(tmp);
21268  return;
21269  }
21270  if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
21271  int new_max = __pyx_code_cache.max_count + 64;
21272  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
21273  __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
21274  if (unlikely(!entries)) {
21275  return;
21276  }
21277  __pyx_code_cache.entries = entries;
21278  __pyx_code_cache.max_count = new_max;
21279  }
21280  for (i=__pyx_code_cache.count; i>pos; i--) {
21281  entries[i] = entries[i-1];
21282  }
21283  entries[pos].code_line = code_line;
21284  entries[pos].code_object = code_object;
21285  __pyx_code_cache.count++;
21286  Py_INCREF(code_object);
21287 }
21288 
21289 #include "compile.h"
21290 #include "frameobject.h"
21291 #include "traceback.h"
21292 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
21293  const char *funcname, int c_line,
21294  int py_line, const char *filename) {
21295  PyCodeObject *py_code = 0;
21296  PyObject *py_srcfile = 0;
21297  PyObject *py_funcname = 0;
21298  #if PY_MAJOR_VERSION < 3
21299  py_srcfile = PyString_FromString(filename);
21300  #else
21301  py_srcfile = PyUnicode_FromString(filename);
21302  #endif
21303  if (!py_srcfile) goto bad;
21304  if (c_line) {
21305  #if PY_MAJOR_VERSION < 3
21306  py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
21307  #else
21308  py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
21309  #endif
21310  }
21311  else {
21312  #if PY_MAJOR_VERSION < 3
21313  py_funcname = PyString_FromString(funcname);
21314  #else
21315  py_funcname = PyUnicode_FromString(funcname);
21316  #endif
21317  }
21318  if (!py_funcname) goto bad;
21319  py_code = __Pyx_PyCode_New(
21320  0,
21321  0,
21322  0,
21323  0,
21324  0,
21325  __pyx_empty_bytes, /*PyObject *code,*/
21326  __pyx_empty_tuple, /*PyObject *consts,*/
21327  __pyx_empty_tuple, /*PyObject *names,*/
21328  __pyx_empty_tuple, /*PyObject *varnames,*/
21329  __pyx_empty_tuple, /*PyObject *freevars,*/
21330  __pyx_empty_tuple, /*PyObject *cellvars,*/
21331  py_srcfile, /*PyObject *filename,*/
21332  py_funcname, /*PyObject *name,*/
21333  py_line,
21334  __pyx_empty_bytes /*PyObject *lnotab*/
21335  );
21336  Py_DECREF(py_srcfile);
21337  Py_DECREF(py_funcname);
21338  return py_code;
21339 bad:
21340  Py_XDECREF(py_srcfile);
21341  Py_XDECREF(py_funcname);
21342  return NULL;
21343 }
21344 static void __Pyx_AddTraceback(const char *funcname, int c_line,
21345  int py_line, const char *filename) {
21346  PyCodeObject *py_code = 0;
21347  PyFrameObject *py_frame = 0;
21348  py_code = __pyx_find_code_object(c_line ? c_line : py_line);
21349  if (!py_code) {
21350  py_code = __Pyx_CreateCodeObjectForTraceback(
21351  funcname, c_line, py_line, filename);
21352  if (!py_code) goto bad;
21353  __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
21354  }
21355  py_frame = PyFrame_New(
21356  PyThreadState_GET(), /*PyThreadState *tstate,*/
21357  py_code, /*PyCodeObject *code,*/
21358  __pyx_d, /*PyObject *globals,*/
21359  0 /*PyObject *locals*/
21360  );
21361  if (!py_frame) goto bad;
21362  py_frame->f_lineno = py_line;
21363  PyTraceBack_Here(py_frame);
21364 bad:
21365  Py_XDECREF(py_code);
21366  Py_XDECREF(py_frame);
21367 }
21368 
21369 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
21370  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
21371 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
21372  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
21373 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
21374  {\
21375  func_type value = func_value;\
21376  if (sizeof(target_type) < sizeof(func_type)) {\
21377  if (unlikely(value != (func_type) (target_type) value)) {\
21378  func_type zero = 0;\
21379  if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
21380  return (target_type) -1;\
21381  if (is_unsigned && unlikely(value < zero))\
21382  goto raise_neg_overflow;\
21383  else\
21384  goto raise_overflow;\
21385  }\
21386  }\
21387  return (target_type) value;\
21388  }
21389 
21390 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
21391  const int neg_one = (int) -1, const_zero = (int) 0;
21392  const int is_unsigned = neg_one > const_zero;
21393 #if PY_MAJOR_VERSION < 3
21394  if (likely(PyInt_Check(x))) {
21395  if (sizeof(int) < sizeof(long)) {
21396  __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
21397  } else {
21398  long val = PyInt_AS_LONG(x);
21399  if (is_unsigned && unlikely(val < 0)) {
21400  goto raise_neg_overflow;
21401  }
21402  return (int) val;
21403  }
21404  } else
21405 #endif
21406  if (likely(PyLong_Check(x))) {
21407  if (is_unsigned) {
21408 #if CYTHON_USE_PYLONG_INTERNALS
21409  const digit* digits = ((PyLongObject*)x)->ob_digit;
21410  switch (Py_SIZE(x)) {
21411  case 0: return (int) 0;
21412  case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
21413  case 2:
21414  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
21415  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
21416  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21417  } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
21418  return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21419  }
21420  }
21421  break;
21422  case 3:
21423  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
21424  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
21425  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21426  } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
21427  return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21428  }
21429  }
21430  break;
21431  case 4:
21432  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
21433  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
21434  __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])))
21435  } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
21436  return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
21437  }
21438  }
21439  break;
21440  }
21441 #endif
21442 #if CYTHON_COMPILING_IN_CPYTHON
21443  if (unlikely(Py_SIZE(x) < 0)) {
21444  goto raise_neg_overflow;
21445  }
21446 #else
21447  {
21448  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
21449  if (unlikely(result < 0))
21450  return (int) -1;
21451  if (unlikely(result == 1))
21452  goto raise_neg_overflow;
21453  }
21454 #endif
21455  if (sizeof(int) <= sizeof(unsigned long)) {
21456  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
21457  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
21458  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
21459  }
21460  } else {
21461 #if CYTHON_USE_PYLONG_INTERNALS
21462  const digit* digits = ((PyLongObject*)x)->ob_digit;
21463  switch (Py_SIZE(x)) {
21464  case 0: return (int) 0;
21465  case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0])
21466  case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
21467  case -2:
21468  if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
21469  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
21470  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21471  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
21472  return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21473  }
21474  }
21475  break;
21476  case 2:
21477  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
21478  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
21479  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21480  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
21481  return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21482  }
21483  }
21484  break;
21485  case -3:
21486  if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
21487  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
21488  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21489  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
21490  return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21491  }
21492  }
21493  break;
21494  case 3:
21495  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
21496  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
21497  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21498  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
21499  return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21500  }
21501  }
21502  break;
21503  case -4:
21504  if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
21505  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
21506  __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])))
21507  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
21508  return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21509  }
21510  }
21511  break;
21512  case 4:
21513  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
21514  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
21515  __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])))
21516  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
21517  return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
21518  }
21519  }
21520  break;
21521  }
21522 #endif
21523  if (sizeof(int) <= sizeof(long)) {
21524  __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
21525  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
21526  __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
21527  }
21528  }
21529  {
21530 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
21531  PyErr_SetString(PyExc_RuntimeError,
21532  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
21533 #else
21534  int val;
21535  PyObject *v = __Pyx_PyNumber_Int(x);
21536  #if PY_MAJOR_VERSION < 3
21537  if (likely(v) && !PyLong_Check(v)) {
21538  PyObject *tmp = v;
21539  v = PyNumber_Long(tmp);
21540  Py_DECREF(tmp);
21541  }
21542  #endif
21543  if (likely(v)) {
21544  int one = 1; int is_little = (int)*(unsigned char *)&one;
21545  unsigned char *bytes = (unsigned char *)&val;
21546  int ret = _PyLong_AsByteArray((PyLongObject *)v,
21547  bytes, sizeof(val),
21548  is_little, !is_unsigned);
21549  Py_DECREF(v);
21550  if (likely(!ret))
21551  return val;
21552  }
21553 #endif
21554  return (int) -1;
21555  }
21556  } else {
21557  int val;
21558  PyObject *tmp = __Pyx_PyNumber_Int(x);
21559  if (!tmp) return (int) -1;
21560  val = __Pyx_PyInt_As_int(tmp);
21561  Py_DECREF(tmp);
21562  return val;
21563  }
21564 raise_overflow:
21565  PyErr_SetString(PyExc_OverflowError,
21566  "value too large to convert to int");
21567  return (int) -1;
21568 raise_neg_overflow:
21569  PyErr_SetString(PyExc_OverflowError,
21570  "can't convert negative value to int");
21571  return (int) -1;
21572 }
21573 
21574 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
21575  const int neg_one = (int) -1, const_zero = (int) 0;
21576  const int is_unsigned = neg_one > const_zero;
21577  if (is_unsigned) {
21578  if (sizeof(int) < sizeof(long)) {
21579  return PyInt_FromLong((long) value);
21580  } else if (sizeof(int) <= sizeof(unsigned long)) {
21581  return PyLong_FromUnsignedLong((unsigned long) value);
21582  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
21583  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
21584  }
21585  } else {
21586  if (sizeof(int) <= sizeof(long)) {
21587  return PyInt_FromLong((long) value);
21588  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
21589  return PyLong_FromLongLong((PY_LONG_LONG) value);
21590  }
21591  }
21592  {
21593  int one = 1; int little = (int)*(unsigned char *)&one;
21594  unsigned char *bytes = (unsigned char *)&value;
21595  return _PyLong_FromByteArray(bytes, sizeof(int),
21596  little, !is_unsigned);
21597  }
21598 }
21599 
21600 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
21601  const long neg_one = (long) -1, const_zero = (long) 0;
21602  const int is_unsigned = neg_one > const_zero;
21603  if (is_unsigned) {
21604  if (sizeof(long) < sizeof(long)) {
21605  return PyInt_FromLong((long) value);
21606  } else if (sizeof(long) <= sizeof(unsigned long)) {
21607  return PyLong_FromUnsignedLong((unsigned long) value);
21608  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
21609  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
21610  }
21611  } else {
21612  if (sizeof(long) <= sizeof(long)) {
21613  return PyInt_FromLong((long) value);
21614  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
21615  return PyLong_FromLongLong((PY_LONG_LONG) value);
21616  }
21617  }
21618  {
21619  int one = 1; int little = (int)*(unsigned char *)&one;
21620  unsigned char *bytes = (unsigned char *)&value;
21621  return _PyLong_FromByteArray(bytes, sizeof(long),
21622  little, !is_unsigned);
21623  }
21624 }
21625 
21626 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
21627  const long neg_one = (long) -1, const_zero = (long) 0;
21628  const int is_unsigned = neg_one > const_zero;
21629 #if PY_MAJOR_VERSION < 3
21630  if (likely(PyInt_Check(x))) {
21631  if (sizeof(long) < sizeof(long)) {
21632  __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
21633  } else {
21634  long val = PyInt_AS_LONG(x);
21635  if (is_unsigned && unlikely(val < 0)) {
21636  goto raise_neg_overflow;
21637  }
21638  return (long) val;
21639  }
21640  } else
21641 #endif
21642  if (likely(PyLong_Check(x))) {
21643  if (is_unsigned) {
21644 #if CYTHON_USE_PYLONG_INTERNALS
21645  const digit* digits = ((PyLongObject*)x)->ob_digit;
21646  switch (Py_SIZE(x)) {
21647  case 0: return (long) 0;
21648  case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
21649  case 2:
21650  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
21651  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
21652  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21653  } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
21654  return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
21655  }
21656  }
21657  break;
21658  case 3:
21659  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
21660  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
21661  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21662  } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
21663  return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
21664  }
21665  }
21666  break;
21667  case 4:
21668  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
21669  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
21670  __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])))
21671  } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
21672  return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
21673  }
21674  }
21675  break;
21676  }
21677 #endif
21678 #if CYTHON_COMPILING_IN_CPYTHON
21679  if (unlikely(Py_SIZE(x) < 0)) {
21680  goto raise_neg_overflow;
21681  }
21682 #else
21683  {
21684  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
21685  if (unlikely(result < 0))
21686  return (long) -1;
21687  if (unlikely(result == 1))
21688  goto raise_neg_overflow;
21689  }
21690 #endif
21691  if (sizeof(long) <= sizeof(unsigned long)) {
21692  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
21693  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
21694  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
21695  }
21696  } else {
21697 #if CYTHON_USE_PYLONG_INTERNALS
21698  const digit* digits = ((PyLongObject*)x)->ob_digit;
21699  switch (Py_SIZE(x)) {
21700  case 0: return (long) 0;
21701  case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0])
21702  case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
21703  case -2:
21704  if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
21705  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
21706  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21707  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
21708  return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21709  }
21710  }
21711  break;
21712  case 2:
21713  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
21714  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
21715  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21716  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
21717  return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21718  }
21719  }
21720  break;
21721  case -3:
21722  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
21723  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
21724  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21725  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
21726  return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21727  }
21728  }
21729  break;
21730  case 3:
21731  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
21732  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
21733  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
21734  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
21735  return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21736  }
21737  }
21738  break;
21739  case -4:
21740  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
21741  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
21742  __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])))
21743  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
21744  return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21745  }
21746  }
21747  break;
21748  case 4:
21749  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
21750  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
21751  __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])))
21752  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
21753  return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
21754  }
21755  }
21756  break;
21757  }
21758 #endif
21759  if (sizeof(long) <= sizeof(long)) {
21760  __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
21761  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
21762  __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
21763  }
21764  }
21765  {
21766 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
21767  PyErr_SetString(PyExc_RuntimeError,
21768  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
21769 #else
21770  long val;
21771  PyObject *v = __Pyx_PyNumber_Int(x);
21772  #if PY_MAJOR_VERSION < 3
21773  if (likely(v) && !PyLong_Check(v)) {
21774  PyObject *tmp = v;
21775  v = PyNumber_Long(tmp);
21776  Py_DECREF(tmp);
21777  }
21778  #endif
21779  if (likely(v)) {
21780  int one = 1; int is_little = (int)*(unsigned char *)&one;
21781  unsigned char *bytes = (unsigned char *)&val;
21782  int ret = _PyLong_AsByteArray((PyLongObject *)v,
21783  bytes, sizeof(val),
21784  is_little, !is_unsigned);
21785  Py_DECREF(v);
21786  if (likely(!ret))
21787  return val;
21788  }
21789 #endif
21790  return (long) -1;
21791  }
21792  } else {
21793  long val;
21794  PyObject *tmp = __Pyx_PyNumber_Int(x);
21795  if (!tmp) return (long) -1;
21796  val = __Pyx_PyInt_As_long(tmp);
21797  Py_DECREF(tmp);
21798  return val;
21799  }
21800 raise_overflow:
21801  PyErr_SetString(PyExc_OverflowError,
21802  "value too large to convert to long");
21803  return (long) -1;
21804 raise_neg_overflow:
21805  PyErr_SetString(PyExc_OverflowError,
21806  "can't convert negative value to long");
21807  return (long) -1;
21808 }
21809 
21810 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
21811  PyObject* fake_module;
21812  PyTypeObject* cached_type = NULL;
21813  fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
21814  if (!fake_module) return NULL;
21815  Py_INCREF(fake_module);
21816  cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
21817  if (cached_type) {
21818  if (!PyType_Check((PyObject*)cached_type)) {
21819  PyErr_Format(PyExc_TypeError,
21820  "Shared Cython type %.200s is not a type object",
21821  type->tp_name);
21822  goto bad;
21823  }
21824  if (cached_type->tp_basicsize != type->tp_basicsize) {
21825  PyErr_Format(PyExc_TypeError,
21826  "Shared Cython type %.200s has the wrong size, try recompiling",
21827  type->tp_name);
21828  goto bad;
21829  }
21830  } else {
21831  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
21832  PyErr_Clear();
21833  if (PyType_Ready(type) < 0) goto bad;
21834  if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
21835  goto bad;
21836  Py_INCREF(type);
21837  cached_type = type;
21838  }
21839 done:
21840  Py_DECREF(fake_module);
21841  return cached_type;
21842 bad:
21843  Py_XDECREF(cached_type);
21844  cached_type = NULL;
21845  goto done;
21846 }
21847 
21848 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
21849  PyObject *tmp_type, *tmp_value, *tmp_tb;
21850 #if CYTHON_COMPILING_IN_CPYTHON
21851  PyThreadState *tstate = PyThreadState_GET();
21852  tmp_type = tstate->exc_type;
21853  tmp_value = tstate->exc_value;
21854  tmp_tb = tstate->exc_traceback;
21855  tstate->exc_type = *type;
21856  tstate->exc_value = *value;
21857  tstate->exc_traceback = *tb;
21858 #else
21859  PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
21860  PyErr_SetExcInfo(*type, *value, *tb);
21861 #endif
21862  *type = tmp_type;
21863  *value = tmp_value;
21864  *tb = tmp_tb;
21865 }
21866 
21867 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
21868  PyObject *method, *result = NULL;
21869  method = __Pyx_PyObject_GetAttrStr(obj, method_name);
21870  if (unlikely(!method)) goto bad;
21871 #if CYTHON_COMPILING_IN_CPYTHON
21872  if (likely(PyMethod_Check(method))) {
21873  PyObject *self = PyMethod_GET_SELF(method);
21874  if (likely(self)) {
21875  PyObject *args;
21876  PyObject *function = PyMethod_GET_FUNCTION(method);
21877  args = PyTuple_New(2);
21878  if (unlikely(!args)) goto bad;
21879  Py_INCREF(self);
21880  PyTuple_SET_ITEM(args, 0, self);
21881  Py_INCREF(arg);
21882  PyTuple_SET_ITEM(args, 1, arg);
21883  Py_INCREF(function);
21884  Py_DECREF(method); method = NULL;
21885  result = __Pyx_PyObject_Call(function, args, NULL);
21886  Py_DECREF(args);
21887  Py_DECREF(function);
21888  return result;
21889  }
21890  }
21891 #endif
21892  result = __Pyx_PyObject_CallOneArg(method, arg);
21893 bad:
21894  Py_XDECREF(method);
21895  return result;
21896 }
21897 
21898 #include <structmember.h>
21899 #include <frameobject.h>
21900 static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
21901 static PyObject *__Pyx_Coroutine_Close(PyObject *self);
21902 static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
21903 #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
21904 #if 1 || PY_VERSION_HEX < 0x030300B0
21905 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) {
21906  PyObject *et, *ev, *tb;
21907  PyObject *value = NULL;
21908  __Pyx_ErrFetch(&et, &ev, &tb);
21909  if (!et) {
21910  Py_XDECREF(tb);
21911  Py_XDECREF(ev);
21912  Py_INCREF(Py_None);
21913  *pvalue = Py_None;
21914  return 0;
21915  }
21916  if (likely(et == PyExc_StopIteration)) {
21917 #if PY_VERSION_HEX >= 0x030300A0
21918  if (ev && Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
21919  value = ((PyStopIterationObject *)ev)->value;
21920  Py_INCREF(value);
21921  Py_DECREF(ev);
21922  Py_XDECREF(tb);
21923  Py_DECREF(et);
21924  *pvalue = value;
21925  return 0;
21926  }
21927 #endif
21928  if (!ev || !PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
21929  if (!ev) {
21930  Py_INCREF(Py_None);
21931  ev = Py_None;
21932  } else if (PyTuple_Check(ev)) {
21933  if (PyTuple_GET_SIZE(ev) >= 1) {
21934  PyObject *value;
21935 #if CYTHON_COMPILING_IN_CPYTHON
21936  value = PySequence_ITEM(ev, 0);
21937 #else
21938  value = PyTuple_GET_ITEM(ev, 0);
21939  Py_INCREF(value);
21940 #endif
21941  Py_DECREF(ev);
21942  ev = value;
21943  } else {
21944  Py_INCREF(Py_None);
21945  Py_DECREF(ev);
21946  ev = Py_None;
21947  }
21948  }
21949  Py_XDECREF(tb);
21950  Py_DECREF(et);
21951  *pvalue = ev;
21952  return 0;
21953  }
21954  } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
21955  __Pyx_ErrRestore(et, ev, tb);
21956  return -1;
21957  }
21958  PyErr_NormalizeException(&et, &ev, &tb);
21959  if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
21960  __Pyx_ErrRestore(et, ev, tb);
21961  return -1;
21962  }
21963  Py_XDECREF(tb);
21964  Py_DECREF(et);
21965 #if PY_VERSION_HEX >= 0x030300A0
21966  value = ((PyStopIterationObject *)ev)->value;
21967  Py_INCREF(value);
21968  Py_DECREF(ev);
21969 #else
21970  {
21971  PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
21972  Py_DECREF(ev);
21973  if (likely(args)) {
21974  value = PySequence_GetItem(args, 0);
21975  Py_DECREF(args);
21976  }
21977  if (unlikely(!value)) {
21978  __Pyx_ErrRestore(NULL, NULL, NULL);
21979  Py_INCREF(Py_None);
21980  value = Py_None;
21981  }
21982  }
21983 #endif
21984  *pvalue = value;
21985  return 0;
21986 }
21987 #endif
21988 static CYTHON_INLINE
21989 void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) {
21990  PyObject *exc_type = self->exc_type;
21991  PyObject *exc_value = self->exc_value;
21992  PyObject *exc_traceback = self->exc_traceback;
21993  self->exc_type = NULL;
21994  self->exc_value = NULL;
21995  self->exc_traceback = NULL;
21996  Py_XDECREF(exc_type);
21997  Py_XDECREF(exc_value);
21998  Py_XDECREF(exc_traceback);
21999 }
22000 static CYTHON_INLINE
22001 int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) {
22002  if (unlikely(gen->is_running)) {
22003  PyErr_SetString(PyExc_ValueError,
22004  "generator already executing");
22005  return 1;
22006  }
22007  return 0;
22008 }
22009 static CYTHON_INLINE
22010 PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) {
22011  PyObject *retval;
22012  assert(!self->is_running);
22013  if (unlikely(self->resume_label == 0)) {
22014  if (unlikely(value && value != Py_None)) {
22015  PyErr_SetString(PyExc_TypeError,
22016  "can't send non-None value to a "
22017  "just-started generator");
22018  return NULL;
22019  }
22020  }
22021  if (unlikely(self->resume_label == -1)) {
22022  PyErr_SetNone(PyExc_StopIteration);
22023  return NULL;
22024  }
22025  if (value) {
22026 #if CYTHON_COMPILING_IN_PYPY
22027 #else
22028  if (self->exc_traceback) {
22029  PyThreadState *tstate = PyThreadState_GET();
22030  PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
22031  PyFrameObject *f = tb->tb_frame;
22032  Py_XINCREF(tstate->frame);
22033  assert(f->f_back == NULL);
22034  f->f_back = tstate->frame;
22035  }
22036 #endif
22037  __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
22038  &self->exc_traceback);
22039  } else {
22040  __Pyx_Coroutine_ExceptionClear(self);
22041  }
22042  self->is_running = 1;
22043  retval = self->body((PyObject *) self, value);
22044  self->is_running = 0;
22045  if (retval) {
22046  __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
22047  &self->exc_traceback);
22048 #if CYTHON_COMPILING_IN_PYPY
22049 #else
22050  if (self->exc_traceback) {
22051  PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
22052  PyFrameObject *f = tb->tb_frame;
22053  Py_CLEAR(f->f_back);
22054  }
22055 #endif
22056  } else {
22057  __Pyx_Coroutine_ExceptionClear(self);
22058  }
22059  return retval;
22060 }
22061 static CYTHON_INLINE
22062 PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) {
22063  if (unlikely(!retval && !PyErr_Occurred())) {
22064  PyErr_SetNone(PyExc_StopIteration);
22065  }
22066  return retval;
22067 }
22068 static CYTHON_INLINE
22069 PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
22070  PyObject *ret;
22071  PyObject *val = NULL;
22072  __Pyx_Coroutine_Undelegate(gen);
22073  __Pyx_PyGen_FetchStopIterationValue(&val);
22074  ret = __Pyx_Coroutine_SendEx(gen, val);
22075  Py_XDECREF(val);
22076  return ret;
22077 }
22078 static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
22079  PyObject *retval;
22080  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
22081  PyObject *yf = gen->yieldfrom;
22082  if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
22083  return NULL;
22084  if (yf) {
22085  PyObject *ret;
22086  gen->is_running = 1;
22087  #ifdef __Pyx_Generator_USED
22088  if (__Pyx_Generator_CheckExact(yf)) {
22089  ret = __Pyx_Coroutine_Send(yf, value);
22090  } else
22091  #endif
22092  #ifdef __Pyx_Coroutine_USED
22093  if (__Pyx_Coroutine_CheckExact(yf)) {
22094  ret = __Pyx_Coroutine_Send(yf, value);
22095  } else
22096  #endif
22097  {
22098  if (value == Py_None)
22099  ret = PyIter_Next(yf);
22100  else
22101  ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
22102  }
22103  gen->is_running = 0;
22104  if (likely(ret)) {
22105  return ret;
22106  }
22107  retval = __Pyx_Coroutine_FinishDelegation(gen);
22108  } else {
22109  retval = __Pyx_Coroutine_SendEx(gen, value);
22110  }
22111  return __Pyx_Coroutine_MethodReturn(retval);
22112 }
22113 static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
22114  PyObject *retval = NULL;
22115  int err = 0;
22116  #ifdef __Pyx_Generator_USED
22117  if (__Pyx_Generator_CheckExact(yf)) {
22118  retval = __Pyx_Coroutine_Close(yf);
22119  if (!retval)
22120  return -1;
22121  } else
22122  #endif
22123  #ifdef __Pyx_Coroutine_USED
22124  if (__Pyx_Coroutine_CheckExact(yf)) {
22125  retval = __Pyx_Coroutine_Close(yf);
22126  if (!retval)
22127  return -1;
22128  } else
22129  #endif
22130  {
22131  PyObject *meth;
22132  gen->is_running = 1;
22133  meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
22134  if (unlikely(!meth)) {
22135  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
22136  PyErr_WriteUnraisable(yf);
22137  }
22138  PyErr_Clear();
22139  } else {
22140  retval = PyObject_CallFunction(meth, NULL);
22141  Py_DECREF(meth);
22142  if (!retval)
22143  err = -1;
22144  }
22145  gen->is_running = 0;
22146  }
22147  Py_XDECREF(retval);
22148  return err;
22149 }
22150 static PyObject *__Pyx_Generator_Next(PyObject *self) {
22151  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
22152  PyObject *yf = gen->yieldfrom;
22153  if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
22154  return NULL;
22155  if (yf) {
22156  PyObject *ret;
22157  gen->is_running = 1;
22158  ret = Py_TYPE(yf)->tp_iternext(yf);
22159  gen->is_running = 0;
22160  if (likely(ret)) {
22161  return ret;
22162  }
22163  return __Pyx_Coroutine_FinishDelegation(gen);
22164  }
22165  return __Pyx_Coroutine_SendEx(gen, Py_None);
22166 }
22167 static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
22168  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
22169  PyObject *retval, *raised_exception;
22170  PyObject *yf = gen->yieldfrom;
22171  int err = 0;
22172  if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
22173  return NULL;
22174  if (yf) {
22175  Py_INCREF(yf);
22176  err = __Pyx_Coroutine_CloseIter(gen, yf);
22177  __Pyx_Coroutine_Undelegate(gen);
22178  Py_DECREF(yf);
22179  }
22180  if (err == 0)
22181  PyErr_SetNone(PyExc_GeneratorExit);
22182  retval = __Pyx_Coroutine_SendEx(gen, NULL);
22183  if (retval) {
22184  Py_DECREF(retval);
22185  PyErr_SetString(PyExc_RuntimeError,
22186  "generator ignored GeneratorExit");
22187  return NULL;
22188  }
22189  raised_exception = PyErr_Occurred();
22190  if (!raised_exception
22191  || raised_exception == PyExc_StopIteration
22192  || raised_exception == PyExc_GeneratorExit
22193  || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)
22194  || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))
22195  {
22196  if (raised_exception) PyErr_Clear();
22197  Py_INCREF(Py_None);
22198  return Py_None;
22199  }
22200  return NULL;
22201 }
22202 static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
22203  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
22204  PyObject *typ;
22205  PyObject *tb = NULL;
22206  PyObject *val = NULL;
22207  PyObject *yf = gen->yieldfrom;
22208  if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
22209  return NULL;
22210  if (unlikely(__Pyx_Coroutine_CheckRunning(gen)))
22211  return NULL;
22212  if (yf) {
22213  PyObject *ret;
22214  Py_INCREF(yf);
22215  if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) {
22216  int err = __Pyx_Coroutine_CloseIter(gen, yf);
22217  Py_DECREF(yf);
22218  __Pyx_Coroutine_Undelegate(gen);
22219  if (err < 0)
22220  return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL));
22221  goto throw_here;
22222  }
22223  gen->is_running = 1;
22224  #ifdef __Pyx_Generator_USED
22225  if (__Pyx_Generator_CheckExact(yf)) {
22226  ret = __Pyx_Coroutine_Throw(yf, args);
22227  } else
22228  #endif
22229  #ifdef __Pyx_Coroutine_USED
22230  if (__Pyx_Coroutine_CheckExact(yf)) {
22231  ret = __Pyx_Coroutine_Throw(yf, args);
22232  } else
22233  #endif
22234  {
22235  PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
22236  if (unlikely(!meth)) {
22237  Py_DECREF(yf);
22238  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
22239  gen->is_running = 0;
22240  return NULL;
22241  }
22242  PyErr_Clear();
22243  __Pyx_Coroutine_Undelegate(gen);
22244  gen->is_running = 0;
22245  goto throw_here;
22246  }
22247  ret = PyObject_CallObject(meth, args);
22248  Py_DECREF(meth);
22249  }
22250  gen->is_running = 0;
22251  Py_DECREF(yf);
22252  if (!ret) {
22253  ret = __Pyx_Coroutine_FinishDelegation(gen);
22254  }
22255  return __Pyx_Coroutine_MethodReturn(ret);
22256  }
22257 throw_here:
22258  __Pyx_Raise(typ, val, tb, NULL);
22259  return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL));
22260 }
22261 static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) {
22262  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
22263  Py_VISIT(gen->closure);
22264  Py_VISIT(gen->classobj);
22265  Py_VISIT(gen->yieldfrom);
22266  Py_VISIT(gen->exc_type);
22267  Py_VISIT(gen->exc_value);
22268  Py_VISIT(gen->exc_traceback);
22269  return 0;
22270 }
22271 static int __Pyx_Coroutine_clear(PyObject *self) {
22272  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
22273  Py_CLEAR(gen->closure);
22274  Py_CLEAR(gen->classobj);
22275  Py_CLEAR(gen->yieldfrom);
22276  Py_CLEAR(gen->exc_type);
22277  Py_CLEAR(gen->exc_value);
22278  Py_CLEAR(gen->exc_traceback);
22279  Py_CLEAR(gen->gi_name);
22280  Py_CLEAR(gen->gi_qualname);
22281  return 0;
22282 }
22283 static void __Pyx_Coroutine_dealloc(PyObject *self) {
22284  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
22285  PyObject_GC_UnTrack(gen);
22286  if (gen->gi_weakreflist != NULL)
22287  PyObject_ClearWeakRefs(self);
22288  if (gen->resume_label > 0) {
22289  PyObject_GC_Track(self);
22290 #if PY_VERSION_HEX >= 0x030400a1
22291  if (PyObject_CallFinalizerFromDealloc(self))
22292 #else
22293  Py_TYPE(gen)->tp_del(self);
22294  if (self->ob_refcnt > 0)
22295 #endif
22296  {
22297  return;
22298  }
22299  PyObject_GC_UnTrack(self);
22300  }
22301  __Pyx_Coroutine_clear(self);
22302  PyObject_GC_Del(gen);
22303 }
22304 static void __Pyx_Coroutine_del(PyObject *self) {
22305  PyObject *res;
22306  PyObject *error_type, *error_value, *error_traceback;
22307  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
22308  if (gen->resume_label <= 0)
22309  return ;
22310 #if PY_VERSION_HEX < 0x030400a1
22311  assert(self->ob_refcnt == 0);
22312  self->ob_refcnt = 1;
22313 #endif
22314  __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
22315  res = __Pyx_Coroutine_Close(self);
22316  if (res == NULL)
22317  PyErr_WriteUnraisable(self);
22318  else
22319  Py_DECREF(res);
22320  __Pyx_ErrRestore(error_type, error_value, error_traceback);
22321 #if PY_VERSION_HEX < 0x030400a1
22322  assert(self->ob_refcnt > 0);
22323  if (--self->ob_refcnt == 0) {
22324  return;
22325  }
22326  {
22327  Py_ssize_t refcnt = self->ob_refcnt;
22328  _Py_NewReference(self);
22329  self->ob_refcnt = refcnt;
22330  }
22331 #if CYTHON_COMPILING_IN_CPYTHON
22332  assert(PyType_IS_GC(self->ob_type) &&
22333  _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
22334  _Py_DEC_REFTOTAL;
22335 #endif
22336 #ifdef COUNT_ALLOCS
22337  --Py_TYPE(self)->tp_frees;
22338  --Py_TYPE(self)->tp_allocs;
22339 #endif
22340 #endif
22341 }
22342 static PyObject *
22343 __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
22344 {
22345  Py_INCREF(self->gi_name);
22346  return self->gi_name;
22347 }
22348 static int
22349 __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
22350 {
22351  PyObject *tmp;
22352 #if PY_MAJOR_VERSION >= 3
22353  if (unlikely(value == NULL || !PyUnicode_Check(value))) {
22354 #else
22355  if (unlikely(value == NULL || !PyString_Check(value))) {
22356 #endif
22357  PyErr_SetString(PyExc_TypeError,
22358  "__name__ must be set to a string object");
22359  return -1;
22360  }
22361  tmp = self->gi_name;
22362  Py_INCREF(value);
22363  self->gi_name = value;
22364  Py_XDECREF(tmp);
22365  return 0;
22366 }
22367 static PyObject *
22368 __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
22369 {
22370  Py_INCREF(self->gi_qualname);
22371  return self->gi_qualname;
22372 }
22373 static int
22374 __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value)
22375 {
22376  PyObject *tmp;
22377 #if PY_MAJOR_VERSION >= 3
22378  if (unlikely(value == NULL || !PyUnicode_Check(value))) {
22379 #else
22380  if (unlikely(value == NULL || !PyString_Check(value))) {
22381 #endif
22382  PyErr_SetString(PyExc_TypeError,
22383  "__qualname__ must be set to a string object");
22384  return -1;
22385  }
22386  tmp = self->gi_qualname;
22387  Py_INCREF(value);
22388  self->gi_qualname = value;
22389  Py_XDECREF(tmp);
22390  return 0;
22391 }
22392 static __pyx_CoroutineObject *__Pyx__Coroutine_New(PyTypeObject* type, __pyx_coroutine_body_t body,
22393  PyObject *closure, PyObject *name, PyObject *qualname) {
22394  __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
22395  if (gen == NULL)
22396  return NULL;
22397  gen->body = body;
22398  gen->closure = closure;
22399  Py_XINCREF(closure);
22400  gen->is_running = 0;
22401  gen->resume_label = 0;
22402  gen->classobj = NULL;
22403  gen->yieldfrom = NULL;
22404  gen->exc_type = NULL;
22405  gen->exc_value = NULL;
22406  gen->exc_traceback = NULL;
22407  gen->gi_weakreflist = NULL;
22408  Py_XINCREF(qualname);
22409  gen->gi_qualname = qualname;
22410  Py_XINCREF(name);
22411  gen->gi_name = name;
22412  PyObject_GC_Track(gen);
22413  return gen;
22414 }
22415 
22416 static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
22417 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
22418  int result;
22419  PyObject *globals, *result_obj;
22420  globals = PyDict_New(); if (unlikely(!globals)) goto ignore;
22421  result = PyDict_SetItemString(globals, "_cython_coroutine_type",
22422  #ifdef __Pyx_Coroutine_USED
22423  (PyObject*)__pyx_CoroutineType);
22424  #else
22425  Py_None);
22426  #endif
22427  if (unlikely(result < 0)) goto ignore;
22428  result = PyDict_SetItemString(globals, "_cython_generator_type",
22429  #ifdef __Pyx_Generator_USED
22430  (PyObject*)__pyx_GeneratorType);
22431  #else
22432  Py_None);
22433  #endif
22434  if (unlikely(result < 0)) goto ignore;
22435  if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
22436  if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
22437  result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
22438  if (unlikely(!result_obj)) goto ignore;
22439  Py_DECREF(result_obj);
22440  Py_DECREF(globals);
22441  return module;
22442 ignore:
22443  Py_XDECREF(globals);
22444  PyErr_WriteUnraisable(module);
22445  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
22446  Py_DECREF(module);
22447  module = NULL;
22448  }
22449 #else
22450  py_code++;
22451 #endif
22452  return module;
22453 }
22454 
22455 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
22456 static PyObject* __Pyx_patch_abc_module(PyObject *module);
22457 static PyObject* __Pyx_patch_abc_module(PyObject *module) {
22458  module = __Pyx_Coroutine_patch_module(
22459  module, ""
22460 "if _cython_generator_type is not None:\n"
22461 " try: Generator = _module.Generator\n"
22462 " except AttributeError: pass\n"
22463 " else: Generator.register(_cython_generator_type)\n"
22464 "if _cython_coroutine_type is not None:\n"
22465 " try: Coroutine = _module.Coroutine\n"
22466 " except AttributeError: pass\n"
22467 " else: Coroutine.register(_cython_coroutine_type)\n"
22468  );
22469  return module;
22470 }
22471 #endif
22472 static int __Pyx_patch_abc(void) {
22473 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
22474  static int abc_patched = 0;
22475  if (!abc_patched) {
22476  PyObject *module;
22477  module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections");
22478  if (!module) {
22479  PyErr_WriteUnraisable(NULL);
22480  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
22481  ((PY_VERSION_HEX >= 0x03030000) ?
22482  "Cython module failed to register with collections.abc module" :
22483  "Cython module failed to register with collections module"), 1) < 0)) {
22484  return -1;
22485  }
22486  } else {
22487  module = __Pyx_patch_abc_module(module);
22488  abc_patched = 1;
22489  if (unlikely(!module))
22490  return -1;
22491  Py_DECREF(module);
22492  }
22493  module = PyImport_ImportModule("backports_abc");
22494  if (module) {
22495  module = __Pyx_patch_abc_module(module);
22496  Py_XDECREF(module);
22497  }
22498  if (!module) {
22499  PyErr_Clear();
22500  }
22501  }
22502 #else
22503  if (0) __Pyx_Coroutine_patch_module(NULL, NULL);
22504 #endif
22505  return 0;
22506 }
22507 
22508 static PyMethodDef __pyx_Generator_methods[] = {
22509  {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
22510  (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
22511  {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
22512  (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
22513  {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
22514  (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
22515  {0, 0, 0, 0}
22516 };
22517 static PyMemberDef __pyx_Generator_memberlist[] = {
22518  {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
22519  {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
22520  (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
22521  {0, 0, 0, 0, 0}
22522 };
22523 static PyGetSetDef __pyx_Generator_getsets[] = {
22524  {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
22525  (char*) PyDoc_STR("name of the generator"), 0},
22526  {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
22527  (char*) PyDoc_STR("qualified name of the generator"), 0},
22528  {0, 0, 0, 0, 0}
22529 };
22530 static PyTypeObject __pyx_GeneratorType_type = {
22531  PyVarObject_HEAD_INIT(0, 0)
22532  "generator",
22533  sizeof(__pyx_CoroutineObject),
22534  0,
22535  (destructor) __Pyx_Coroutine_dealloc,
22536  0,
22537  0,
22538  0,
22539  0,
22540  0,
22541  0,
22542  0,
22543  0,
22544  0,
22545  0,
22546  0,
22547  0,
22548  0,
22549  0,
22550  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
22551  0,
22552  (traverseproc) __Pyx_Coroutine_traverse,
22553  0,
22554  0,
22555  offsetof(__pyx_CoroutineObject, gi_weakreflist),
22556  0,
22557  (iternextfunc) __Pyx_Generator_Next,
22558  __pyx_Generator_methods,
22559  __pyx_Generator_memberlist,
22560  __pyx_Generator_getsets,
22561  0,
22562  0,
22563  0,
22564  0,
22565  0,
22566  0,
22567  0,
22568  0,
22569  0,
22570  0,
22571  0,
22572  0,
22573  0,
22574  0,
22575  0,
22576 #if PY_VERSION_HEX >= 0x030400a1
22577  0,
22578 #else
22579  __Pyx_Coroutine_del,
22580 #endif
22581  0,
22582 #if PY_VERSION_HEX >= 0x030400a1
22583  __Pyx_Coroutine_del,
22584 #endif
22585 };
22586 static int __pyx_Generator_init(void) {
22587  __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
22588  __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
22589  __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
22590  if (unlikely(!__pyx_GeneratorType)) {
22591  return -1;
22592  }
22593  return 0;
22594 }
22595 
22596 static int __Pyx_check_binary_version(void) {
22597  char ctversion[4], rtversion[4];
22598  PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
22599  PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
22600  if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
22601  char message[200];
22602  PyOS_snprintf(message, sizeof(message),
22603  "compiletime version %s of module '%.100s' "
22604  "does not match runtime version %s",
22605  ctversion, __Pyx_MODULE_NAME, rtversion);
22606  return PyErr_WarnEx(NULL, message, 1);
22607  }
22608  return 0;
22609 }
22610 
22611 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
22612  while (t->p) {
22613  #if PY_MAJOR_VERSION < 3
22614  if (t->is_unicode) {
22615  *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
22616  } else if (t->intern) {
22617  *t->p = PyString_InternFromString(t->s);
22618  } else {
22619  *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
22620  }
22621  #else
22622  if (t->is_unicode | t->is_str) {
22623  if (t->intern) {
22624  *t->p = PyUnicode_InternFromString(t->s);
22625  } else if (t->encoding) {
22626  *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
22627  } else {
22628  *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
22629  }
22630  } else {
22631  *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
22632  }
22633  #endif
22634  if (!*t->p)
22635  return -1;
22636  ++t;
22637  }
22638  return 0;
22639 }
22640 
22641 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
22642  return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
22643 }
22644 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
22645  Py_ssize_t ignore;
22646  return __Pyx_PyObject_AsStringAndSize(o, &ignore);
22647 }
22648 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
22649 #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
22650  if (
22651 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
22652  __Pyx_sys_getdefaultencoding_not_ascii &&
22653 #endif
22654  PyUnicode_Check(o)) {
22655 #if PY_VERSION_HEX < 0x03030000
22656  char* defenc_c;
22657  PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
22658  if (!defenc) return NULL;
22659  defenc_c = PyBytes_AS_STRING(defenc);
22660 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
22661  {
22662  char* end = defenc_c + PyBytes_GET_SIZE(defenc);
22663  char* c;
22664  for (c = defenc_c; c < end; c++) {
22665  if ((unsigned char) (*c) >= 128) {
22666  PyUnicode_AsASCIIString(o);
22667  return NULL;
22668  }
22669  }
22670  }
22671 #endif
22672  *length = PyBytes_GET_SIZE(defenc);
22673  return defenc_c;
22674 #else
22675  if (__Pyx_PyUnicode_READY(o) == -1) return NULL;
22676 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
22677  if (PyUnicode_IS_ASCII(o)) {
22678  *length = PyUnicode_GET_LENGTH(o);
22679  return PyUnicode_AsUTF8(o);
22680  } else {
22681  PyUnicode_AsASCIIString(o);
22682  return NULL;
22683  }
22684 #else
22685  return PyUnicode_AsUTF8AndSize(o, length);
22686 #endif
22687 #endif
22688  } else
22689 #endif
22690 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
22691  if (PyByteArray_Check(o)) {
22692  *length = PyByteArray_GET_SIZE(o);
22693  return PyByteArray_AS_STRING(o);
22694  } else
22695 #endif
22696  {
22697  char* result;
22698  int r = PyBytes_AsStringAndSize(o, &result, length);
22699  if (unlikely(r < 0)) {
22700  return NULL;
22701  } else {
22702  return result;
22703  }
22704  }
22705 }
22706 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
22707  int is_true = x == Py_True;
22708  if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
22709  else return PyObject_IsTrue(x);
22710 }
22711 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
22712  PyNumberMethods *m;
22713  const char *name = NULL;
22714  PyObject *res = NULL;
22715 #if PY_MAJOR_VERSION < 3
22716  if (PyInt_Check(x) || PyLong_Check(x))
22717 #else
22718  if (PyLong_Check(x))
22719 #endif
22720  return __Pyx_NewRef(x);
22721  m = Py_TYPE(x)->tp_as_number;
22722 #if PY_MAJOR_VERSION < 3
22723  if (m && m->nb_int) {
22724  name = "int";
22725  res = PyNumber_Int(x);
22726  }
22727  else if (m && m->nb_long) {
22728  name = "long";
22729  res = PyNumber_Long(x);
22730  }
22731 #else
22732  if (m && m->nb_int) {
22733  name = "int";
22734  res = PyNumber_Long(x);
22735  }
22736 #endif
22737  if (res) {
22738 #if PY_MAJOR_VERSION < 3
22739  if (!PyInt_Check(res) && !PyLong_Check(res)) {
22740 #else
22741  if (!PyLong_Check(res)) {
22742 #endif
22743  PyErr_Format(PyExc_TypeError,
22744  "__%.4s__ returned non-%.4s (type %.200s)",
22745  name, name, Py_TYPE(res)->tp_name);
22746  Py_DECREF(res);
22747  return NULL;
22748  }
22749  }
22750  else if (!PyErr_Occurred()) {
22751  PyErr_SetString(PyExc_TypeError,
22752  "an integer is required");
22753  }
22754  return res;
22755 }
22756 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
22757  Py_ssize_t ival;
22758  PyObject *x;
22759 #if PY_MAJOR_VERSION < 3
22760  if (likely(PyInt_CheckExact(b))) {
22761  if (sizeof(Py_ssize_t) >= sizeof(long))
22762  return PyInt_AS_LONG(b);
22763  else
22764  return PyInt_AsSsize_t(x);
22765  }
22766 #endif
22767  if (likely(PyLong_CheckExact(b))) {
22768  #if CYTHON_USE_PYLONG_INTERNALS
22769  const digit* digits = ((PyLongObject*)b)->ob_digit;
22770  const Py_ssize_t size = Py_SIZE(b);
22771  if (likely(__Pyx_sst_abs(size) <= 1)) {
22772  ival = likely(size) ? digits[0] : 0;
22773  if (size == -1) ival = -ival;
22774  return ival;
22775  } else {
22776  switch (size) {
22777  case 2:
22778  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
22779  return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22780  }
22781  break;
22782  case -2:
22783  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
22784  return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22785  }
22786  break;
22787  case 3:
22788  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
22789  return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22790  }
22791  break;
22792  case -3:
22793  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
22794  return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
22795  }
22796  break;
22797  case 4:
22798  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
22799  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]));
22800  }
22801  break;
22802  case -4:
22803  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
22804  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]));
22805  }
22806  break;
22807  }
22808  }
22809  #endif
22810  return PyLong_AsSsize_t(b);
22811  }
22812  x = PyNumber_Index(b);
22813  if (!x) return -1;
22814  ival = PyInt_AsSsize_t(x);
22815  Py_DECREF(x);
22816  return ival;
22817 }
22818 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
22819  return PyInt_FromSize_t(ival);
22820 }
22821 
22822 
22823 #endif /* Py_PYTHON_H */
int compare(const index_set< LO, HI > &a, const index_set< LO, HI > &b)
"lexicographic compare" eg. {3,4,5} is less than {3,7,8}
const Multivector< Scalar_T, LO, HI > sqrt(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Square root of multivector with specified complexifier.
String clifford_to_str(const Multivector_T &mv)
The "informal" string representation of Multivector_T mv.
Definition: PyClical.h:98
const Multivector< Scalar_T, LO, HI > acosh(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Inverse hyperbolic cosine of multivector with specified complexifier.
String index_set_to_repr(const Index_Set_T &ist)
The “official” string representation of Index_Set_T ist.
Definition: PyClical.h:69
const Multivector< Scalar_T, LO, HI > sinh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic sine of multivector.
index_set< lo_ndx, hi_ndx > IndexSet
Definition: PyClical.h:157
Scalar_T abs(const Multivector< Scalar_T, LO, HI > &val)
Absolute value == sqrt(norm)
const Multivector< Scalar_T, LO, HI > log(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Natural logarithm of multivector with specified complexifier.
String clifford_to_repr(const Multivector_T &mv)
The “official” string representation of Multivector_T mv.
Definition: PyClical.h:87
Multivector_T cga3(const Multivector_T &x)
Convert Euclidean 3D vector to Conformal Geometric Algebra null vector [DL (10.50)].
Definition: PyClical.h:115
const Multivector< Scalar_T, LO, HI > sin(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Sine of multivector with specified complexifier.
const Multivector< Scalar_T, LO, HI > atanh(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Inverse hyperbolic tangent of multivector with specified complexifier.
const framed_multi< Scalar_T, LO, HI > exp(const framed_multi< Scalar_T, LO, HI > &val)
Exponential of multivector.
const Multivector< Scalar_T, LO, HI > cos(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Cosine of multivector with specified complexifier.
const Multivector< Scalar_T, LO, HI > tanh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic tangent of multivector.
index_t min_neg(const index_set< LO, HI > &ist)
Minimum negative index, or 0 if none.
const Multivector< Scalar_T, LO, HI > asin(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Inverse sine of multivector with specified complexifier.
matrix_multi< scalar_t > Clifford
Definition: PyClical.h:160
const Multivector< Scalar_T, LO, HI > complexifier(const Multivector< Scalar_T, LO, HI > &val)
Square root of -1 which commutes with all members of the frame of the given multivector.
PyObject * PyFloat_FromDouble(Scalar_T v)
Definition: PyClical.h:59
const Multivector< Scalar_T, LO, HI > atan(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Inverse tangent of multivector with specified complexifier.
double scalar_t
Definition: PyClical.h:159
const Multivector< Scalar_T, LO, HI > tan(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Tangent of multivector with specified complexifier.
const Multivector< Scalar_T, LO, HI > acos(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Inverse cosine of multivector with specified complexifier.
String index_set_to_str(const Index_Set_T &ist)
The "informal" string representation of Index_Set_T ist.
Definition: PyClical.h:78
index_t max_pos(const index_set< LO, HI > &ist)
Maximum positive index, or 0 if none.
const Multivector< Scalar_T, LO, HI > asinh(const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
Inverse hyperbolic sine of multivector with specified complexifier.
Scalar_T max_abs(const Multivector< Scalar_T, LO, HI > &val)
Maximum of absolute values of components of multivector: multivector infinity norm.
def e(obj)
Definition: PyClical.pyx:1887
const Multivector< Scalar_T, LO, HI > cosh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic cosine of multivector.
Multivector_T cga3std(const Multivector_T &X)
Convert CGA3 null vector to standard Conformal Geometric Algebra null vector [DL (10.52)].
Definition: PyClical.h:126
Multivector_T agc3(const Multivector_T &X)
Convert CGA3 null vector to Euclidean 3D vector [DL (10.50)].
Definition: PyClical.h:138