25 from libcpp.vector cimport vector
27 cdef extern
from "PyClical.h":
32 cdef cppclass IndexSet:
34 IndexSet (IndexSet Ist)
except+
35 IndexSet (int idx)
except+
36 IndexSet (char* str)
except+
37 inline bint operator==(IndexSet Rhs)
38 inline bint operator!=(IndexSet Rhs)
39 inline bint operator<(IndexSet Rhs)
40 inline IndexSet invert
"operator~"()
41 inline bint getitem
"operator[]"(int idx)
43 inline IndexSet set(int idx)
except+
44 inline IndexSet set(int idx, int val)
except+
45 inline IndexSet reset()
46 inline IndexSet reset(int idx)
except+
52 int sign_of_mult(IndexSet Rhs)
56 int
compare(IndexSet Lhs, IndexSet Rhs)
60 ctypedef double scalar_t
62 cdef cppclass Clifford:
64 Clifford (Clifford Clf)
except+
65 Clifford (Clifford Clf, IndexSet ist)
except+
66 Clifford (scalar_t scr)
except+
67 Clifford (char* str)
except+
68 Clifford (IndexSet ist, scalar_t scr)
except+
69 Clifford (vector[scalar_t] vec, IndexSet ist)
except+
70 bint operator==(Clifford Rhs)
71 bint operator!=(Clifford Rhs)
72 Clifford neg
"operator-"()
73 scalar_t getitem
"operator[]"(IndexSet Ist)
74 Clifford call
"operator()"(int grade)
84 Clifford random(IndexSet Ist, scalar_t fill)
92 Clifford truncated(scalar_t limit)
96 scalar_t
scalar(Clifford Clf)
97 scalar_t
real(Clifford Clf)
98 scalar_t
imag(Clifford Clf)
99 Clifford
pure(Clifford Clf)
100 Clifford
even(Clifford Clf)
101 Clifford
odd(Clifford Clf)
104 Clifford
conj(Clifford Clf)
105 scalar_t
norm(Clifford Clf)
106 scalar_t
abs(Clifford Clf)
108 scalar_t
quad(Clifford Clf)
109 Clifford
inv(Clifford Clf)
110 Clifford
pow(Clifford Clf,int m)
114 Clifford
sqrt(Clifford Clf, Clifford I)
except+
115 Clifford
sqrt(Clifford Clf)
116 Clifford
exp(Clifford Clf)
117 Clifford
log(Clifford Clf, Clifford I)
except+
118 Clifford
log(Clifford Clf)
119 Clifford
cos(Clifford Clf, Clifford I)
except+
120 Clifford
cos(Clifford Clf)
121 Clifford
acos(Clifford Clf, Clifford I)
except+
122 Clifford
acos(Clifford Clf)
123 Clifford
cosh(Clifford Clf)
124 Clifford
acosh(Clifford Clf, Clifford I)
except+
125 Clifford
acosh(Clifford Clf)
126 Clifford
sin(Clifford Clf, Clifford I)
except+
127 Clifford
sin(Clifford Clf)
128 Clifford
asin(Clifford Clf, Clifford I)
except+
129 Clifford
asin(Clifford Clf)
130 Clifford
sinh(Clifford Clf)
131 Clifford
asinh(Clifford Clf, Clifford I)
except+
132 Clifford
asinh(Clifford Clf)
133 Clifford
tan(Clifford Clf, Clifford I)
except+
134 Clifford
tan(Clifford Clf)
135 Clifford
atan(Clifford Clf, Clifford I)
except+
136 Clifford
atan(Clifford Clf)
137 Clifford
tanh(Clifford Clf)
138 Clifford
atanh(Clifford Clf, Clifford I)
except+
139 Clifford
atanh(Clifford Clf)
141 cdef extern
from "PyClical.h" namespace
"cga3":
142 Clifford
agc3(Clifford Clf)
143 Clifford
cga3(Clifford Clf)
const Multivector< Scalar_T, LO, HI > pure(const Multivector< Scalar_T, LO, HI > &val)
Pure part.
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.
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.
int sign_of_square(index_t j)
Square of generator {j}.
const Multivector< Scalar_T, LO, HI > sinh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic sine of multivector.
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.
const Multivector< Scalar_T, LO, HI > conj(const Multivector< Scalar_T, LO, HI > &val)
Conjugation, rev o invo == invo o rev.
Scalar_T quad(const Multivector< Scalar_T, LO, HI > &val)
Scalar_T quadratic form == (rev(x)*x)(0)
Scalar_T norm(const Multivector< Scalar_T, LO, HI > &val)
Scalar_T norm == sum of norm of coordinates.
const Multivector< Scalar_T, LO, HI > odd(const Multivector< Scalar_T, LO, HI > &val)
Odd part.
const Multivector< Scalar_T, LO, HI > pow(const Multivector< Scalar_T, LO, HI > &lhs, int rhs)
Integer power of multivector.
bool isnan(const Matrix_T &m)
Not a Number.
Scalar_T imag(const Multivector< Scalar_T, LO, HI > &val)
Imaginary part: deprecated (always 0)
const Multivector< Scalar_T, LO, HI > outer_pow(const Multivector< Scalar_T, LO, HI > &lhs, int rhs)
Outer product power of multivector.
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 std::vector< Scalar_T > vector_part(const Multivector< Scalar_T, LO, HI > &val)
Vector part of multivector, as a vector_t with respect to frame()
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 Multivector< Scalar_T, LO, HI > reverse(const Multivector< Scalar_T, LO, HI > &val)
Reversion, eg. {1}*{2} -> {2}*{1}.
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 > inv(const Multivector< Scalar_T, LO, HI > &val)
Geometric multiplicative inverse.
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.
Scalar_T scalar(const Multivector< Scalar_T, LO, HI > &val)
Scalar part.
Definitions for 3D Conformal Geometric Algebra [DL].
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.
const Multivector< Scalar_T, LO, HI > involute(const Multivector< Scalar_T, LO, HI > &val)
Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1}) ...
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.
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.
Scalar_T real(const Multivector< Scalar_T, LO, HI > &val)
Real part: synonym for scalar part.
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.
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.
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)].
const Multivector< Scalar_T, LO, HI > even(const Multivector< Scalar_T, LO, HI > &val)
Even part.
Multivector_T agc3(const Multivector_T &X)
Convert CGA3 null vector to Euclidean 3D vector [DL (10.50)].