-
Notifications
You must be signed in to change notification settings - Fork 5
/
shape.ts
117 lines (98 loc) · 1.46 KB
/
shape.ts
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
/**
* 1st dimentional shape.
*/
export type Shape1D = [number];
/**
* 2nd dimentional shape.
*/
export type Shape2D = [number, number];
/**
* 3th dimentional shape.
*/
export type Shape3D = [number, number, number];
/**
* 4th dimentional shape.
*/
export type Shape4D = [number, number, number, number];
/**
* 5th dimentional shape.
*/
export type Shape5D = [number, number, number, number, number];
/**
* 6th dimentional shape.
*/
export type Shape6D = [number, number, number, number, number, number];
/**
* Rank Types.
*/
export enum Rank {
/**
* Scalar (magnitude only).
*/
R1 = 1,
/**
* Vector (magnitude and direction).
*/
R2 = 2,
/**
* Matrix (table of numbers).
*/
R3 = 3,
/**
* 3-Tensor (cube of numbers)
*/
R4 = 4,
/**
* Rank 5 Tensor
*/
R5 = 5,
/**
* Rank 6 Tensor
*/
R6 = 6,
}
/**
* Shape Interface
*/
export interface Shape {
1: Shape1D;
2: Shape2D;
3: Shape3D;
4: Shape4D;
5: Shape5D;
6: Shape6D;
}
/**
* Array Map Types.
*/
export type ArrayMap =
| Array1D
| Array2D
| Array3D
| Array4D
| Array5D
| Array6D;
/**
* 1D Array.
*/
export type Array1D = number[];
/**
* 2D Array.
*/
export type Array2D = number[][];
/**
* 3D Array.
*/
export type Array3D = number[][][];
/**
* 4D Array.
*/
export type Array4D = number[][][][];
/**
* 5D Array.
*/
export type Array5D = number[][][][][];
/**
* 6D Array.
*/
export type Array6D = number[][][][][][];