29 template<
class TypeHere>
35 static TypeHere *vector(
const long al,
const long ah)
38 long da = ah - al + 1;
40 t = (TypeHere *)malloc((
size_t)((da + OFFSET)*
sizeof(TypeHere)));
42 return t - al + OFFSET;
45 static void free_vector(TypeHere *t,
46 const long al,
const long ah)
48 free(t + al - OFFSET);
51 static TypeHere **vectorptr(
const long al,
const long ah)
54 long da = ah - al + 1;
56 t = (TypeHere **)malloc((
size_t)((da + OFFSET)*
sizeof(TypeHere)));
58 return t - al + OFFSET;
61 static void free_vectorptr(TypeHere **t,
62 const long al,
const long ah)
64 free(t + al - OFFSET);
67 static TypeHere **matrix(
const long al,
const long ah,
68 const long bl,
const long bh)
71 long i, da = ah - al + 1;
73 t = (TypeHere **)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere*));
77 for (i = al; i <= ah; i++)
78 t[i] = vector(bl, bh);
83 static void free_matrix(TypeHere **t,
84 const long al,
const long ah,
85 const long bl,
const long bh)
88 for (i = ah; i >= al; i--)
89 free_vector(t[i], bl, bh);
91 free(t + al - OFFSET);
94 static TypeHere ***matrixptr(
const long al,
const long ah,
95 const long bl,
const long bh)
98 long i, da = ah - al + 1;
100 t = (TypeHere ***)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere**));
104 for (i = al; i <= ah; i++)
105 t[i] = vectorptr(bl, bh);
110 static void free_matrixptr(TypeHere ***t,
111 const long al,
const long ah,
112 const long bl,
const long bh)
115 for (i = ah; i >= al; i--)
116 free_vectorptr(t[i], bl, bh);
118 free(t + al - OFFSET);
121 static TypeHere ***tensor3(
const long al,
const long ah,
122 const long bl,
const long bh,
123 const long cl,
const long ch)
126 long i, da = ah - al + 1;
128 t = (TypeHere ***)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere**));
132 for (i = al; i <= ah; i++)
133 t[i] = matrix(bl, bh, cl, ch);
138 static void free_tensor3(TypeHere ***t,
139 const long al,
const long ah,
140 const long bl,
const long bh,
141 const long cl,
const long ch)
144 for (i = ah; i >= al; i--)
145 free_matrix(t[i], bl, bh, cl, ch);
147 free(t + al - OFFSET);
150 static TypeHere ****tensor4(
const long al,
const long ah,
151 const long bl,
const long bh,
152 const long cl,
const long ch,
153 const long dl,
const long dh)
156 long i, da = ah - al + 1;
158 t = (TypeHere ****)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere***));
162 for (i = al; i <= ah; i++)
163 t[i] = tensor3(bl, bh, cl, ch, dl, dh);
168 static void free_tensor4(TypeHere ****t,
169 const long al,
const long ah,
170 const long bl,
const long bh,
171 const long cl,
const long ch,
172 const long dl,
const long dh)
175 for (i = ah; i >= al; i--)
176 free_tensor3(t[i], bl, bh, cl, ch, dl, dh);
178 free(t + al - OFFSET);
181 static TypeHere *****tensor5(
const long al,
const long ah,
182 const long bl,
const long bh,
183 const long cl,
const long ch,
184 const long dl,
const long dh,
185 const long el,
const long eh)
188 long i, da = ah - al + 1;
190 t = (TypeHere *****)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere****));
194 for (i = al; i <= ah; i++)
195 t[i] = tensor4(bl, bh, cl, ch, dl, dh, el, eh);
200 static void free_tensor5(TypeHere *****t,
201 const long al,
const long ah,
202 const long bl,
const long bh,
203 const long cl,
const long ch,
204 const long dl,
const long dh,
205 const long el,
const long eh)
208 for (i = ah; i >= al; i--)
209 free_tensor4(t[i], bl, bh, cl, ch, dl, dh, el, eh);
211 free(t + al - OFFSET);
214 static TypeHere ******tensor6(
const long al,
const long ah,
215 const long bl,
const long bh,
216 const long cl,
const long ch,
217 const long dl,
const long dh,
218 const long el,
const long eh,
219 const long fl,
const long fh)
222 long i, da = ah - al + 1;
224 t = (TypeHere ******)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere*****));
228 for (i = al; i <= ah; i++)
229 t[i] = tensor5(bl, bh, cl, ch, dl, dh, el, eh, fl, fh);
234 static void free_tensor6(TypeHere ******t,
235 const long al,
const long ah,
236 const long bl,
const long bh,
237 const long cl,
const long ch,
238 const long dl,
const long dh,
239 const long el,
const long eh,
240 const long fl,
const long fh)
243 for (i = ah; i >= al; i--)
244 free_tensor5(t[i], bl, bh, cl, ch, dl, dh, el, eh, fl, fh);
246 free(t + al - OFFSET);
249 static TypeHere *******tensor7(
const long al,
const long ah,
250 const long bl,
const long bh,
251 const long cl,
const long ch,
252 const long dl,
const long dh,
253 const long el,
const long eh,
254 const long fl,
const long fh,
255 const long gl,
const long gh)
258 long i, da = ah - al + 1;
260 t = (TypeHere *******)malloc((
size_t)(da + OFFSET)*
sizeof(TypeHere******));
264 for (i = al; i <= ah; i++)
265 t[i] = tensor6(bl, bh, cl, ch, dl, dh, el, eh, fl, fh, gl, gh);
270 static void free_tensor7(TypeHere *******t,
271 const long al,
const long ah,
272 const long bl,
const long bh,
273 const long cl,
const long ch,
274 const long dl,
const long dh,
275 const long el,
const long eh,
276 const long fl,
const long fh,
277 const long gl,
const long gh)
280 for (i = ah; i >= al; i--)
281 free_tensor6(t[i], bl, bh, cl, ch, dl, dh, el, eh, fl, fh, gl, gh);
283 free(t + al - OFFSET);
Tensors Class.
Definition: Tensors.h:33