v0.7.2
Tensor2_constructor.hpp
Go to the documentation of this file.
1 /* A helper class that allows simple initialization of the Tensor2,
2  but only if it has the correct number of elements. There are
3  specializations for column-major and row-major orderings. */
4 
5 #pragma once
6 
7 namespace FTensor
8 {
9  template<class T, int Tensor_Dim0, int Tensor_Dim1, Layout layout>
11 
12  /* Column major versions */
13 
14  template<class T>
16  {
17  public:
18  Tensor2_constructor(T data[1][2],T d00,T d01)
19  {
20  data[0][0]=d00;
21  data[0][1]=d01;
22  }
23  };
24 
25  template<class T>
27  {
28  public:
29  Tensor2_constructor(T data[2][1],T d00,T d10)
30  {
31  data[0][0]=d00;
32  data[1][0]=d10;
33  }
34  };
35 
36  template<class T>
38  {
39  public:
40  Tensor2_constructor(T data[2][2],T d00,T d01,T d10,T d11)
41  {
42  data[0][0]=d00;
43  data[0][1]=d01;
44  data[1][0]=d10;
45  data[1][1]=d11;
46  }
47  };
48 
49  template<class T>
51  {
52  public:
53  Tensor2_constructor(T data[3][2],T d00, T d01, T d10, T d11,
54  T d20, T d21)
55  {
56  data[0][0]=d00;
57  data[0][1]=d01;
58  data[1][0]=d10;
59  data[1][1]=d11;
60  data[2][0]=d20;
61  data[2][1]=d21;
62  }
63  };
64 
65  template<class T>
67  {
68  public:
69  Tensor2_constructor(T data[3][3],T d00, T d01, T d02, T d10, T d11, T d12,
70  T d20, T d21, T d22)
71  {
72  data[0][0]=d00;
73  data[0][1]=d01;
74  data[0][2]=d02;
75  data[1][0]=d10;
76  data[1][1]=d11;
77  data[1][2]=d12;
78  data[2][0]=d20;
79  data[2][1]=d21;
80  data[2][2]=d22;
81  }
82  };
83 
84  template<class T>
86  {
87  public:
88  Tensor2_constructor(T data[4][4], T d00, T d01, T d02, T d03, T d10, T d11,
89  T d12, T d13, T d20, T d21, T d22, T d23, T d30, T d31,
90  T d32, T d33)
91  {
92  data[0][0]=d00;
93  data[0][1]=d01;
94  data[0][2]=d02;
95  data[0][3]=d03;
96  data[1][0]=d10;
97  data[1][1]=d11;
98  data[1][2]=d12;
99  data[1][3]=d13;
100  data[2][0]=d20;
101  data[2][1]=d21;
102  data[2][2]=d22;
103  data[2][3]=d23;
104  data[3][0]=d30;
105  data[3][1]=d31;
106  data[3][2]=d32;
107  data[3][3]=d33;
108  }
109  };
110 
111  /* Row major versions */
112 
113  template<class T>
115  {
116  public:
117  Tensor2_constructor(T data[2][1],T d00,T d01)
118  {
119  data[0][0]=d00;
120  data[1][0]=d01;
121  }
122  };
123 
124  template<class T>
126  {
127  public:
128  Tensor2_constructor(T data[2][2],T d00,T d01,T d10,T d11)
129  {
130  data[0][0]=d00;
131  data[1][0]=d01;
132  data[0][1]=d10;
133  data[1][1]=d11;
134  }
135  };
136 
137  template<class T>
139  {
140  public:
141  Tensor2_constructor(T data[1][2],T d00,T d10)
142  {
143  data[0][0]=d00;
144  data[0][1]=d10;
145  }
146  };
147 
148  template<class T>
150  {
151  public:
152  Tensor2_constructor(T data[2][3],T d00, T d01, T d10, T d11,
153  T d20, T d21)
154  {
155  data[0][0]=d00;
156  data[1][0]=d01;
157  data[0][1]=d10;
158  data[1][1]=d11;
159  data[0][2]=d20;
160  data[1][2]=d21;
161  }
162  };
163 
164  template<class T>
166  {
167  public:
168  Tensor2_constructor(T data[3][3],T d00, T d01, T d02, T d10, T d11, T d12,
169  T d20, T d21, T d22)
170  {
171  data[0][0]=d00;
172  data[1][0]=d01;
173  data[2][0]=d02;
174  data[0][1]=d10;
175  data[1][1]=d11;
176  data[2][1]=d12;
177  data[0][2]=d20;
178  data[1][2]=d21;
179  data[2][2]=d22;
180  }
181  };
182 
183  template<class T>
185  {
186  public:
187  Tensor2_constructor(T data[4][4], T d00, T d01, T d02, T d03, T d10, T d11,
188  T d12, T d13, T d20, T d21, T d22, T d23, T d30, T d31,
189  T d32, T d33)
190  {
191  data[0][0]=d00;
192  data[1][0]=d01;
193  data[2][0]=d02;
194  data[3][0]=d03;
195  data[0][1]=d10;
196  data[1][1]=d11;
197  data[2][1]=d12;
198  data[3][1]=d13;
199  data[0][2]=d20;
200  data[1][2]=d21;
201  data[2][2]=d22;
202  data[3][2]=d23;
203  data[0][3]=d30;
204  data[1][3]=d31;
205  data[2][3]=d32;
206  data[3][3]=d33;
207  }
208  };
209 }
Tensor2_constructor(T data[3][3], T d00, T d01, T d02, T d10, T d11, T d12, T d20, T d21, T d22)
Tensor2_constructor(T data[2][2], T d00, T d01, T d10, T d11)
Tensor2_constructor(T data[4][4], T d00, T d01, T d02, T d03, T d10, T d11, T d12, T d13, T d20, T d21, T d22, T d23, T d30, T d31, T d32, T d33)
JSON compatible output.
Tensor2_constructor(T data[2][2], T d00, T d01, T d10, T d11)
Tensor2_constructor(T data[3][2], T d00, T d01, T d10, T d11, T d20, T d21)
Tensor2_constructor(T data[4][4], T d00, T d01, T d02, T d03, T d10, T d11, T d12, T d13, T d20, T d21, T d22, T d23, T d30, T d31, T d32, T d33)
Tensor2_constructor(T data[2][3], T d00, T d01, T d10, T d11, T d20, T d21)
Tensor2_constructor(T data[3][3], T d00, T d01, T d02, T d10, T d11, T d12, T d20, T d21, T d22)