glucat  0.8.2
glucat.pxd
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 #
3 # PyClical: Python interface to GluCat:
4 # Generic library of universal Clifford algebra templates
5 #
6 # glucat.pxd: Basic Cython definitions
7 # corresponding to C++ definitions from PyClical.h.
8 # Kept as a separate module from PyClical.pxd to avoid namespace clashes.
9 #
10 # copyright : (C) 2008-2012 by Paul C. Leopardi
11 #
12 # This library is free software: you can redistribute it and/or modify
13 # it under the terms of the GNU Lesser General Public License as published
14 # by the Free Software Foundation, either version 3 of the License, or
15 # (at your option) any later version.
16 #
17 # This library is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU Lesser General Public License for more details.
21 #
22 # You should have received a copy of the GNU Lesser General Public License
23 # along with this library. If not, see <http://www.gnu.org/licenses/>.
24 
25 from libcpp.vector cimport vector
26 
27 cdef extern from "PyClical.h":
28 
29  cdef cppclass String:
30  char* c_str()
31 
32  cdef cppclass IndexSet:
33  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)
42  inline IndexSet set()
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+
47  int count()
48  int count_pos()
49  int count_neg()
50  int min()
51  int max()
52  int sign_of_mult(IndexSet Rhs)
53  int sign_of_square()
54  int hash_fn()
55 
56  int compare(IndexSet Lhs, IndexSet Rhs)
57  int min_neg(IndexSet Ist)
58  int max_pos(IndexSet Ist)
59 
60  ctypedef double scalar_t
61 
62  cdef cppclass Clifford:
63  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)
75  scalar_t scalar()
76  Clifford pure()
77  Clifford even()
78  Clifford odd()
79  vector[scalar_t] vector_part()
80  vector[scalar_t] vector_part(IndexSet frm) except+
81  Clifford involute()
82  Clifford reverse()
83  Clifford conj()
84  Clifford random(IndexSet Ist, scalar_t fill)
85  scalar_t norm()
86  scalar_t quad()
87  IndexSet frame()
88  scalar_t max_abs()
89  Clifford inv()
90  Clifford pow(int m)
91  Clifford outer_pow(int m)
92  Clifford truncated(scalar_t limit)
93  bint isnan()
94  void write(char* msg)
95 
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)
102  Clifford involute(Clifford Clf)
103  Clifford reverse(Clifford Clf)
104  Clifford conj(Clifford Clf)
105  scalar_t norm(Clifford Clf)
106  scalar_t abs(Clifford Clf)
107  scalar_t max_abs(Clifford Clf)
108  scalar_t quad(Clifford Clf)
109  Clifford inv(Clifford Clf)
110  Clifford pow(Clifford Clf,int m)
111  Clifford outer_pow(Clifford Clf,int m)
112 
113  Clifford complexifier(Clifford Clf)
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)
140 
141 cdef extern from "PyClical.h" namespace "cga3":
142  Clifford agc3(Clifford Clf)
143  Clifford cga3(Clifford Clf)
144  Clifford cga3std(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.
Definition: matrix_imp.h:292
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].
Definition: PyClical.h:111
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)].
Definition: PyClical.h:126
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)].
Definition: PyClical.h:138