26 from libcpp.vector cimport vector
28 cdef extern
from "PyClical.h":
33 cdef cppclass IndexSet:
35 IndexSet (IndexSet Ist)
except+
36 IndexSet (int idx)
except+
37 IndexSet (char* str)
except+
38 inline bint operator==(IndexSet Rhs)
39 inline bint operator!=(IndexSet Rhs)
40 inline bint operator<(IndexSet Rhs)
41 inline IndexSet invert
"operator~"()
42 inline bint getitem
"operator[]"(int idx)
44 inline IndexSet set(int idx)
except+
45 inline IndexSet set(int idx, int val)
except+
46 inline IndexSet reset()
47 inline IndexSet reset(int idx)
except+
53 int sign_of_mult(IndexSet Rhs)
57 int
compare(IndexSet Lhs, IndexSet Rhs)
61 ctypedef double scalar_t
63 cdef cppclass Clifford:
65 Clifford (Clifford Clf)
except+
66 Clifford (Clifford Clf, IndexSet ist)
except+
67 Clifford (scalar_t scr)
except+
68 Clifford (char* str)
except+
69 Clifford (IndexSet ist, scalar_t scr)
except+
70 Clifford (vector[scalar_t] vec, IndexSet ist)
except+
71 bint operator==(Clifford Rhs)
72 bint operator!=(Clifford Rhs)
73 Clifford neg
"operator-"()
74 scalar_t getitem
"operator[]"(IndexSet Ist)
75 Clifford call
"operator()"(int grade)
85 Clifford random(IndexSet Ist, scalar_t fill)
93 Clifford truncated(scalar_t limit)
99 scalar_t
error_squared(Clifford Lhs, Clifford Rhs, scalar_t threshold)
100 bint
approx_equal(Clifford Lhs, Clifford Rhs, scalar_t threshold, scalar_t tol)
101 scalar_t
scalar(Clifford Clf)
102 scalar_t
real(Clifford Clf)
103 scalar_t
imag(Clifford Clf)
104 Clifford
pure(Clifford Clf)
105 Clifford
even(Clifford Clf)
106 Clifford
odd(Clifford Clf)
109 Clifford
conj(Clifford Clf)
110 scalar_t
norm(Clifford Clf)
111 scalar_t
abs(Clifford Clf)
113 scalar_t
quad(Clifford Clf)
114 Clifford
inv(Clifford Clf)
115 Clifford
pow(Clifford Clf,int m)
119 Clifford
sqrt(Clifford Clf, Clifford I)
except+
120 Clifford
sqrt(Clifford Clf)
121 Clifford
exp(Clifford Clf)
122 Clifford
log(Clifford Clf, Clifford I)
except+
123 Clifford
log(Clifford Clf)
124 Clifford
cos(Clifford Clf, Clifford I)
except+
125 Clifford
cos(Clifford Clf)
126 Clifford
acos(Clifford Clf, Clifford I)
except+
127 Clifford
acos(Clifford Clf)
128 Clifford
cosh(Clifford Clf)
129 Clifford
acosh(Clifford Clf, Clifford I)
except+
130 Clifford
acosh(Clifford Clf)
131 Clifford
sin(Clifford Clf, Clifford I)
except+
132 Clifford
sin(Clifford Clf)
133 Clifford
asin(Clifford Clf, Clifford I)
except+
134 Clifford
asin(Clifford Clf)
135 Clifford
sinh(Clifford Clf)
136 Clifford
asinh(Clifford Clf, Clifford I)
except+
137 Clifford
asinh(Clifford Clf)
138 Clifford
tan(Clifford Clf, Clifford I)
except+
139 Clifford
tan(Clifford Clf)
140 Clifford
atan(Clifford Clf, Clifford I)
except+
141 Clifford
atan(Clifford Clf)
142 Clifford
tanh(Clifford Clf)
143 Clifford
atanh(Clifford Clf, Clifford I)
except+
144 Clifford
atanh(Clifford Clf)
146 cdef extern
from "PyClical.h" namespace
"cga3":
147 Clifford
agc3(Clifford Clf)
148 Clifford
cga3(Clifford Clf)
auto atanh(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse hyperbolic tangent of multivector with specified complexifier.
auto exp(const framed_multi< Scalar_T, LO, HI, Tune_P > &val) -> const framed_multi< Scalar_T, LO, HI, Tune_P >
Exponential of multivector.
auto max_pos(const index_set< LO, HI > &ist) -> index_t
Maximum positive index, or 0 if none.
auto odd(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Odd part.
auto min_neg(const index_set< LO, HI > &ist) -> index_t
Minimum negative index, or 0 if none.
auto asinh(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse hyperbolic sine of multivector with specified complexifier.
auto norm(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Scalar_T norm == sum of norm of coordinates.
auto scalar(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Scalar part.
auto even(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Even part.
auto error_squared(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs, const Scalar_T threshold) -> Scalar_T
Relative or absolute error using the quadratic norm.
auto log(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Natural logarithm of multivector with specified complexifier.
auto isnan(const Matrix_T &m) -> bool
Not a Number.
auto complexifier(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Square root of -1 which commutes with all members of the frame of the given multivector.
auto sinh(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Hyperbolic sine of multivector.
auto approx_equal(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs, const Scalar_T threshold, const Scalar_T tolerance) -> bool
Test for approximate equality of multivectors.
auto asin(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse sine of multivector with specified complexifier.
auto tanh(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Hyperbolic tangent of multivector.
auto error_squared_tol(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Quadratic norm error tolerance relative to a specific multivector.
auto outer_pow(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, int rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Outer product power of multivector.
auto pure(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Pure part.
auto abs(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Absolute value == sqrt(norm)
auto inv(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Geometric multiplicative inverse.
auto compare(const index_set< LO, HI > &a, const index_set< LO, HI > &b) -> int
"lexicographic compare" eg. {3,4,5} is less than {3,7,8}
auto tan(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Tangent of multivector with specified complexifier.
auto acosh(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse hyperbolic cosine of multivector with specified complexifier.
Definitions for 3D Conformal Geometric Algebra [DL].
auto involute(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1}) ...
auto cos(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Cosine of multivector with specified complexifier.
auto atan(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse tangent of multivector with specified complexifier.
auto sqrt(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Square root of multivector with specified complexifier.
auto reverse(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Reversion, eg. {1}*{2} -> {2}*{1}.
auto vector_part(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const std::vector< Scalar_T >
Vector part of multivector, as a vector_t with respect to frame()
auto pow(const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, int rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Integer power of multivector.
auto real(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Real part: synonym for scalar part.
auto sin(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Sine of multivector with specified complexifier.
auto cosh(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Hyperbolic cosine of multivector.
auto sign_of_square(index_t j) -> int
Square of generator {j}.
auto imag(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Imaginary part: deprecated (always 0)
auto max_abs(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Maximum of absolute values of components of multivector: multivector infinity norm.
auto conj(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Conjugation, rev o invo == invo o rev.
auto quad(const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T
Scalar_T quadratic form == (rev(x)*x)(0)
auto acos(const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P >
Inverse cosine of multivector with specified complexifier.
Multivector_T cga3std(const Multivector_T &X)
Convert CGA3 null vector to standard Conformal Geometric Algebra null vector [DL (10.52)].
auto isinf(const Matrix_T &m) -> bool
Infinite.
Multivector_T agc3(const Multivector_T &X)
Convert CGA3 null vector to Euclidean 3D vector [DL (10.50)].