-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathrtest_clifford1.mac
128 lines (124 loc) · 3.03 KB
/
rtest_clifford1.mac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*******************************
Clifford algebra
a lightweight package for performing Geometric Algebra calculations
tests for version
v 2.0
usage:
file_search_maxima: append (file_search_maxima,["/path/to/clifford.mac"]);
batch("rtest_clifford", test);
@depends clifford.mac
**********************************
* @license This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
(kill(all),
/*
%path:read("Path to package"),
%path:append ([%path,"$$$.{mac,mc}"]),
*/
%path:"C:/Dropbox/maxima/$$$.{mac,mc}",
file_search_maxima:append (file_search_maxima , [%path]),
%start : absolute_real_time(),
load("clifford"),
'done);
'done$
get('clifford,'version);
v20$
/* init clifford"
(clifford(e,1,1,1),
aform);
matrix([1,0,0],[0,-1,0],[0,0,0])$*/
(clifford(e,1,1,1),
elements());
[e[1],e[2],e[3],e[1] . e[2],e[1] . e[3],e[2] . e[3],e[1] . e[2] . e[3]]$
/* clifford product tests" */
e[1].e[1];
1$
e[2].e[2];
-1$
e[3].e[3];
0$
e[2].e[1];
-e[1] . e[2]$
e[1] | e[1] | e[1];
e[1]$
e[1] | e[1] | e[1] | e[1];
1$
e[1] | e[2];
0$
e[1] | e[1];
1$
e[1] | e[2];
0$
e[2] | e[2];
-1$
e[3] | e[3];
0$
/* outer product tests
*/
e[3] & e[3];
0$
e[1] & e[1];
0$
(e[1] & e[2]) & e[3];
e[1] . e[2] . e[3]$
/* mixed product tests
*/
(e[1] & e[2]) | e[3];
0$
/* explicit simplificaton tests*/
dotsimpc(e[2] . e[1] . e[2]);
e[1]$
e[1].e[2].e[1];
-e[2]$
e[1].e[1].e[2];
e[2]$
e[1].e[1].e[2].e[1];
-e[1] . e[2]$
e[1].e[1].e[2].e[1].e[2];
e[1]$
e[1].e[1].e[1].e[2].e[1];
-e[2]$
/* Jacobi identity
aa & bb & cc+ cc & aa & bb +bb & cc& aa;
0$*/
e[1] & e[2] & e[3]+ e[3]& e[2] & e[1] +e[2] & e[3] & e[1];
e[1] . e[2] . e[3]$
(e[1].e[2])& (e[2].e[3])& (e[1].e[3])+(e[1].e[3])& (e[2].e[3])& (e[1].e[2])+(e[2].e[3])& (e[1].e[3])& (e[1].e[2]), dotsimpc;
0$
/* complex tests*/
block(
declare([a,b,c,d],scalar),
cc:a+b*e[1]+c*e[2]+d*e[1].e[2],
dd:cinv(cc),
expand(dd)
);
a/(a^2-b^2+c^2-d^2)-(e[1]*b)/(a^2-b^2+c^2-d^2)-(e[2]*c)/(a^2-b^2+c^2-d^2)-((e[1] . e[2])*d)/(a^2-b^2+c^2-d^2)$
dd.cc, expand, ratsimp, cliffsimpall;
1$
grade(cc);
[a,e[1]*b+e[2]*c,(e[1] . e[2])*d, 0]$
(grade(dd)-
[a/(a^2-b^2+c^2-d^2),- (e[1]*b/(a^2-b^2+c^2-d^2))- e[2]*c/(a^2-b^2+c^2-d^2),- (e[1] . e[2]*d)/(a^2-b^2+c^2-d^2),0]),ratsimp;
[0,0,0,0]$
block(
a1:cvect(a),
b1:cvect(b),
c1:cvect(c),
dd:(a1 & b1 )& c1 - a1 & (b1 & c1),
factor(expand(dd))
);
0$
grade(e[1] . e[2]/5);
[0,0,e[1] . e[2]/5,0]$