glucat  0.8.4
glucat.pxd
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 # cython: language_level=3
3 #
4 # PyClical: Python interface to GluCat:
5 # Generic library of universal Clifford algebra templates
6 #
7 # glucat.pxd: Basic Cython definitions
8 # corresponding to C++ definitions from PyClical.h.
9 # Kept as a separate module from PyClical.pxd to avoid namespace clashes.
10 #
11 # copyright : (C) 2008-2012 by Paul C. Leopardi
12 #
13 # This library is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU Lesser General Public License as published
15 # by the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
17 #
18 # This library is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU Lesser General Public License for more details.
22 #
23 # You should have received a copy of the GNU Lesser General Public License
24 # along with this library. If not, see <http://www.gnu.org/licenses/>.
25 
26 from libcpp.vector cimport vector
27 
28 cdef extern from "PyClical.h":
29 
30  cdef cppclass String:
31  char* c_str()
32 
33  cdef cppclass IndexSet:
34  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)
43  inline IndexSet set()
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+
48  int count()
49  int count_pos()
50  int count_neg()
51  int min()
52  int max()
53  int sign_of_mult(IndexSet Rhs)
54  int sign_of_square()
55  int hash_fn()
56 
57  int compare(IndexSet Lhs, IndexSet Rhs)
58  int min_neg(IndexSet Ist)
59  int max_pos(IndexSet Ist)
60 
61  ctypedef double scalar_t
62 
63  cdef cppclass Clifford:
64  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)
76  scalar_t scalar()
77  Clifford pure()
78  Clifford even()
79  Clifford odd()
80  vector[scalar_t] vector_part()
81  vector[scalar_t] vector_part(IndexSet frm) except+
82  Clifford involute()
83  Clifford reverse()
84  Clifford conj()
85  Clifford random(IndexSet Ist, scalar_t fill)
86  scalar_t norm()
87  scalar_t quad()
88  IndexSet frame()
89  scalar_t max_abs()
90  Clifford inv()
91  Clifford pow(int m)
92  Clifford outer_pow(int m)
93  Clifford truncated(scalar_t limit)
94  bint isnan()
95  void write(char* msg)
96 
97  scalar_t scalar(Clifford Clf)
98  scalar_t real(Clifford Clf)
99  scalar_t imag(Clifford Clf)
100  Clifford pure(Clifford Clf)
101  Clifford even(Clifford Clf)
102  Clifford odd(Clifford Clf)
103  Clifford involute(Clifford Clf)
104  Clifford reverse(Clifford Clf)
105  Clifford conj(Clifford Clf)
106  scalar_t norm(Clifford Clf)
107  scalar_t abs(Clifford Clf)
108  scalar_t max_abs(Clifford Clf)
109  scalar_t quad(Clifford Clf)
110  Clifford inv(Clifford Clf)
111  Clifford pow(Clifford Clf,int m)
112  Clifford outer_pow(Clifford Clf,int m)
113 
114  Clifford complexifier(Clifford Clf)
115  Clifford sqrt(Clifford Clf, Clifford I) except+
116  Clifford sqrt(Clifford Clf)
117  Clifford exp(Clifford Clf)
118  Clifford log(Clifford Clf, Clifford I) except+
119  Clifford log(Clifford Clf)
120  Clifford cos(Clifford Clf, Clifford I) except+
121  Clifford cos(Clifford Clf)
122  Clifford acos(Clifford Clf, Clifford I) except+
123  Clifford acos(Clifford Clf)
124  Clifford cosh(Clifford Clf)
125  Clifford acosh(Clifford Clf, Clifford I) except+
126  Clifford acosh(Clifford Clf)
127  Clifford sin(Clifford Clf, Clifford I) except+
128  Clifford sin(Clifford Clf)
129  Clifford asin(Clifford Clf, Clifford I) except+
130  Clifford asin(Clifford Clf)
131  Clifford sinh(Clifford Clf)
132  Clifford asinh(Clifford Clf, Clifford I) except+
133  Clifford asinh(Clifford Clf)
134  Clifford tan(Clifford Clf, Clifford I) except+
135  Clifford tan(Clifford Clf)
136  Clifford atan(Clifford Clf, Clifford I) except+
137  Clifford atan(Clifford Clf)
138  Clifford tanh(Clifford Clf)
139  Clifford atanh(Clifford Clf, Clifford I) except+
140  Clifford atanh(Clifford Clf)
141 
142 cdef extern from "PyClical.h" namespace "cga3":
143  Clifford agc3(Clifford Clf)
144  Clifford cga3(Clifford Clf)
145  Clifford cga3std(Clifford Clf)
glucat::vector_part
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()
Definition: clifford_algebra_imp.h:472
glucat::inv
const Multivector< Scalar_T, LO, HI > inv(const Multivector< Scalar_T, LO, HI > &val)
Geometric multiplicative inverse.
Definition: clifford_algebra_imp.h:350
glucat::asin
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.
Definition: clifford_algebra_imp.h:934
glucat::min_neg
index_t min_neg(const index_set< LO, HI > &ist)
Minimum negative index, or 0 if none.
Definition: index_set_imp.h:996
glucat::scalar
Scalar_T scalar(const Multivector< Scalar_T, LO, HI > &val)
Scalar part.
Definition: clifford_algebra_imp.h:421
glucat::atan
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.
Definition: clifford_algebra_imp.h:1034
glucat::complexifier
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.
Definition: clifford_algebra_imp.h:535
glucat::matrix::isnan
bool isnan(const Matrix_T &m)
Not a Number.
Definition: matrix_imp.h:354
glucat::involute
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})
Definition: clifford_algebra_imp.h:480
glucat::max_pos
index_t max_pos(const index_set< LO, HI > &ist)
Maximum positive index, or 0 if none.
Definition: index_set_imp.h:1003
glucat::tan
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.
Definition: clifford_algebra_imp.h:1006
glucat::real
Scalar_T real(const Multivector< Scalar_T, LO, HI > &val)
Real part: synonym for scalar part.
Definition: clifford_algebra_imp.h:429
glucat::acos
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.
Definition: clifford_algebra_imp.h:827
cga3
Definitions for 3D Conformal Geometric Algebra [DL].
Definition: PyClical.h:113
glucat::asinh
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.
Definition: clifford_algebra_imp.h:874
glucat::even
const Multivector< Scalar_T, LO, HI > even(const Multivector< Scalar_T, LO, HI > &val)
Even part.
Definition: clifford_algebra_imp.h:456
glucat::max_abs
Scalar_T max_abs(const Multivector< Scalar_T, LO, HI > &val)
Maximum of absolute values of components of multivector: multivector infinity norm.
Definition: clifford_algebra_imp.h:528
glucat::pure
const Multivector< Scalar_T, LO, HI > pure(const Multivector< Scalar_T, LO, HI > &val)
Pure part.
Definition: clifford_algebra_imp.h:448
glucat::cosh
const Multivector< Scalar_T, LO, HI > cosh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic cosine of multivector.
Definition: clifford_algebra_imp.h:749
glucat::acosh
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.
Definition: clifford_algebra_imp.h:767
cga3::cga3std
Multivector_T cga3std(const Multivector_T &X)
Convert CGA3 null vector to standard Conformal Geometric Algebra null vector [DL (10....
Definition: PyClical.h:127
glucat::sinh
const Multivector< Scalar_T, LO, HI > sinh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic sine of multivector.
Definition: clifford_algebra_imp.h:855
glucat::compare
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}
Definition: index_set_imp.h:602
glucat::abs
Scalar_T abs(const Multivector< Scalar_T, LO, HI > &val)
Absolute value == sqrt(norm)
Definition: clifford_algebra_imp.h:520
glucat::sqrt
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.
Definition: clifford_algebra_imp.h:618
glucat::sign_of_square
int sign_of_square(index_t j)
Square of generator {j}.
Definition: index_set_imp.h:989
glucat::norm
Scalar_T norm(const Multivector< Scalar_T, LO, HI > &val)
Scalar_T norm == sum of norm of coordinates.
Definition: clifford_algebra_imp.h:512
glucat::log
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.
Definition: clifford_algebra_imp.h:733
glucat::quad
Scalar_T quad(const Multivector< Scalar_T, LO, HI > &val)
Scalar_T quadratic form == (rev(x)*x)(0)
Definition: clifford_algebra_imp.h:504
glucat::odd
const Multivector< Scalar_T, LO, HI > odd(const Multivector< Scalar_T, LO, HI > &val)
Odd part.
Definition: clifford_algebra_imp.h:464
glucat::conj
const Multivector< Scalar_T, LO, HI > conj(const Multivector< Scalar_T, LO, HI > &val)
Conjugation, rev o invo == invo o rev.
Definition: clifford_algebra_imp.h:496
cga3::agc3
Multivector_T agc3(const Multivector_T &X)
Convert CGA3 null vector to Euclidean 3D vector [DL (10.50)].
Definition: PyClical.h:139
glucat::pow
const Multivector< Scalar_T, LO, HI > pow(const Multivector< Scalar_T, LO, HI > &lhs, int rhs)
Integer power of multivector.
Definition: clifford_algebra_imp.h:357
glucat::sin
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.
Definition: clifford_algebra_imp.h:901
glucat::atanh
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.
Definition: clifford_algebra_imp.h:981
glucat::reverse
const Multivector< Scalar_T, LO, HI > reverse(const Multivector< Scalar_T, LO, HI > &val)
Reversion, eg. {1}*{2} -> {2}*{1}.
Definition: clifford_algebra_imp.h:488
glucat::cos
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.
Definition: clifford_algebra_imp.h:794
glucat::exp
const framed_multi< Scalar_T, LO, HI > exp(const framed_multi< Scalar_T, LO, HI > &val)
Exponential of multivector.
Definition: framed_multi_imp.h:1977
glucat::imag
Scalar_T imag(const Multivector< Scalar_T, LO, HI > &val)
Imaginary part: deprecated (always 0)
Definition: clifford_algebra_imp.h:440
glucat::tanh
const Multivector< Scalar_T, LO, HI > tanh(const Multivector< Scalar_T, LO, HI > &val)
Hyperbolic tangent of multivector.
Definition: clifford_algebra_imp.h:962
glucat::outer_pow
const Multivector< Scalar_T, LO, HI > outer_pow(const Multivector< Scalar_T, LO, HI > &lhs, int rhs)
Outer product power of multivector.
Definition: clifford_algebra_imp.h:413