-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
rtest_clifford3.mac
84 lines (80 loc) · 2.24 KB
/
rtest_clifford3.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
/*******************************
Clifford algebra
a lightweight package for performing Geometric Algebra calculations
tests for version
v 2.5
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),
%start : absolute_real_time(),
%path:"C:/Dropbox/maxima/$$$.{mac,mc}",
file_search_maxima:append (file_search_maxima , [%path]),
load("clifford"),
'done);
'done$
get('clifford,'version);
v25$
block(
"init Cl(2,2)",
clifford(e,2,2,0)
);
[1,1,-1,-1]$
inop(e[1]);
nil$
inargs(e[1]);
nil$
/*counting operator
countop( (e[1] . e[2]), ".");
1$
countop( -3*(e[1] . e[2].e[3]), ".");
2$
countop(1, ".");
0$
countop(e[1] . e[2]/5, ".");
1$*/
countsym( (e[1] . e[2]), 'e);
2$
countsym( -3*(e[1] . e[2].e[3]), 'e);
3$
countsym(e[1] . e[2]/5, 'e);
2$
countsym(e[1] . e[2]/5, 1);
error-catch$
oppart(e[1] + e[2], lambda([u], freeof(asymbol, u)));
[nil,e[1]+e[2]]$
oppart(e[1] . e[2], lambda([u], freeof(asymbol, u)));
[nil,e[1] . e[2]]$
/*grade decomposition*/
grade(-6+a -5* e[1].e[2]+ e[2].e[3]+e[1].e[2].e[3]- e[1]);
[-6+a,-e[1],-5*(e[1] . e[2])+e[2] . e[3],e[1] . e[2] . e[3],0]$
grade(1);
[1,0,0,0,0]$
grade(-e[2]);
[0,-e[2],0,0,0]$
grade(1+ e[1]+e[2]);
[1,e[1]+e[2],0,0,0]$
grade(e[1].e[2]);
[0,0,e[1] . e[2],0,0]$
grade(e[1]);
[0,e[1],0,0,0]$
grade(e[1]+e[2]-e[1].e[3]);
[0,e[1]+e[2],-e[1] . e[3],0,0]$
grade(e[1] . e[2]/5);
[0,0,e[1] . e[2]/5,0,0]$