tensor_macros/
defaults.rs1use crate as tensor_macros;
2use crate::*;
3
4tensor!(V2: 2 x 1);
5tensor!(V3: 3 x 1);
6tensor!(V4: 4 x 1);
7
8transpose!(V2: 2 x 1 => RowV2);
9transpose!(V3: 3 x 1 => RowV3);
10transpose!(V4: 4 x 1 => RowV4);
11
12tensor!(M22: 2 x 2);
13tensor!(M23: 2 x 3);
14tensor!(M24: 2 x 4);
15tensor!(M33: 3 x 3);
16tensor!(M34: 3 x 4);
17tensor!(M44: 4 x 4);
18
19transpose!(M22: 2 x 2 => M22T);
20transpose!(M23: 2 x 3 => M32);
21transpose!(M24: 2 x 4 => M42);
22transpose!(M33: 3 x 3 => M33T);
23transpose!(M34: 3 x 4 => M43);
24transpose!(M44: 4 x 4 => M44T);
25
26dot!(M22: 2 x 2 * V2: 2 x 1 => V2: 2 x 1);
27dot!(M32: 3 x 2 * V2: 2 x 1 => V3: 3 x 1);
28dot!(M42: 4 x 2 * V2: 2 x 1 => V4: 4 x 1);
29
30dot!(M23: 2 x 3 * V3: 3 x 1 => V2: 2 x 1);
31dot!(M33: 3 x 3 * V3: 3 x 1 => V3: 3 x 1);
32dot!(M43: 4 x 3 * V3: 3 x 1 => V4: 4 x 1);
33
34dot!(M24: 2 x 4 * V4: 4 x 1 => V2: 2 x 1);
35dot!(M34: 3 x 4 * V4: 4 x 1 => V3: 3 x 1);
36dot!(M44: 4 x 4 * V4: 4 x 1 => V4: 4 x 1);
37
38dot!(M22: 2 x 2 * M22: 2 x 2 => M22: 2 x 2);
39dot!(M23: 2 x 3 * M32: 3 x 2 => M22: 2 x 2);
40dot!(M24: 2 x 4 * M42: 4 x 2 => M22: 2 x 2);
41
42dot!(M32: 3 x 2 * M22: 2 x 2 => M32: 3 x 2);
43dot!(M33: 3 x 3 * M32: 3 x 2 => M32: 3 x 2);
44dot!(M34: 3 x 4 * M42: 4 x 2 => M32: 3 x 2);
45
46dot!(M42: 4 x 2 * M22: 2 x 2 => M32: 4 x 2);
47dot!(M43: 4 x 3 * M32: 3 x 2 => M32: 4 x 2);
48dot!(M44: 4 x 4 * M42: 4 x 2 => M32: 4 x 2);
49
50dot!(M22: 2 x 2 * M22T: 2 x 2 => M22: 2 x 2);
51dot!(M22T: 2 x 2 * M22: 2 x 2 => M22: 2 x 2);
52
53dot!(M22: 2 x 2 * M23: 2 x 3 => M23: 2 x 3);
54dot!(M23: 2 x 3 * M33: 3 x 3 => M23: 2 x 3);
55dot!(M24: 2 x 4 * M43: 4 x 3 => M23: 2 x 3);
56
57dot!(M32: 3 x 2 * M23: 2 x 3 => M33: 3 x 3);
58dot!(M33: 3 x 3 * M33: 3 x 3 => M33: 3 x 3);
59dot!(M34: 3 x 4 * M43: 4 x 3 => M33: 3 x 3);
60
61dot!(M42: 4 x 2 * M23: 2 x 3 => M33: 4 x 3);
62dot!(M43: 4 x 3 * M33: 3 x 3 => M33: 4 x 3);
63dot!(M44: 4 x 4 * M43: 4 x 3 => M33: 4 x 3);
64
65dot!(M33: 3 x 3 * M33T: 3 x 3 => M33: 3 x 3);
66dot!(M33T: 3 x 3 * M33: 3 x 3 => M33: 3 x 3);
67
68dot!(M22: 2 x 2 * M24: 2 x 4 => M24: 2 x 4);
69dot!(M23: 2 x 3 * M34: 3 x 4 => M24: 2 x 4);
70dot!(M24: 2 x 4 * M44: 4 x 4 => M24: 2 x 4);
71
72dot!(M32: 3 x 2 * M24: 2 x 4 => M34: 3 x 4);
73dot!(M33: 3 x 3 * M34: 3 x 4 => M34: 3 x 4);
74dot!(M34: 3 x 4 * M44: 4 x 4 => M34: 3 x 4);
75
76dot!(M42: 4 x 2 * M24: 2 x 4 => M34: 4 x 4);
77dot!(M43: 4 x 3 * M34: 3 x 4 => M34: 4 x 4);
78dot!(M44: 4 x 4 * M44: 4 x 4 => M34: 4 x 4);
79
80dot!(M44: 4 x 4 * M44T: 4 x 4 => M44: 4 x 4);
81dot!(M44T: 4 x 4 * M44: 4 x 4 => M44: 4 x 4);