3#ifndef TNT_ARRAY3D_UTILS_H
4#define TNT_ARRAY3D_UTILS_H
14std::ostream& operator<<(std::ostream &s,
const Array3D<T> &A)
20 s << M <<
" " << N <<
" " << K <<
"\n";
22 for (
int i=0; i<M; i++)
24 for (
int j=0; j<N; j++)
26 for (
int k=0; k<K; k++)
27 s << A[i][j][k] <<
" ";
38std::istream& operator>>(std::istream &s, Array3D<T> &A)
47 for (
int i=0; i<M; i++)
48 for (
int j=0; j<N; j++)
49 for (
int k=0; k<K; k++)
59Array3D<T> operator+(
const Array3D<T> &A,
const Array3D<T> &B)
65 if (B.dim1() != m || B.dim2() != n || B.dim3() != p )
72 for (
int i=0; i<m; i++)
73 for (
int j=0; j<n; j++)
74 for (
int k=0; k<p; k++)
75 C[i][j][k] = A[i][j][k] + B[i][j][k];
83Array3D<T> operator-(
const Array3D<T> &A,
const Array3D<T> &B)
89 if (B.dim1() != m || B.dim2() != n || B.dim3() != p )
96 for (
int i=0; i<m; i++)
97 for (
int j=0; j<n; j++)
98 for (
int k=0; k<p; k++)
99 C[i][j][k] = A[i][j][k] - B[i][j][k];
109Array3D<T> operator*(
const Array3D<T> &A,
const Array3D<T> &B)
115 if (B.dim1() != m || B.dim2() != n || B.dim3() != p )
122 for (
int i=0; i<m; i++)
123 for (
int j=0; j<n; j++)
124 for (
int k=0; k<p; k++)
125 C[i][j][k] = A[i][j][k] * B[i][j][k];
133Array3D<T> operator/(
const Array3D<T> &A,
const Array3D<T> &B)
139 if (B.dim1() != m || B.dim2() != n || B.dim3() != p )
146 for (
int i=0; i<m; i++)
147 for (
int j=0; j<n; j++)
148 for (
int k=0; k<p; k++)
149 C[i][j][k] = A[i][j][k] / B[i][j][k];
158Array3D<T>& operator+=(Array3D<T> &A,
const Array3D<T> &B)
164 if (B.dim1() == m && B.dim2() == n && B.dim3() == p )
166 for (
int i=0; i<m; i++)
167 for (
int j=0; j<n; j++)
168 for (
int k=0; k<p; k++)
169 A[i][j][k] += B[i][j][k];
176Array3D<T>& operator-=(Array3D<T> &A,
const Array3D<T> &B)
182 if (B.dim1() == m && B.dim2() == n && B.dim3() == p )
184 for (
int i=0; i<m; i++)
185 for (
int j=0; j<n; j++)
186 for (
int k=0; k<p; k++)
187 A[i][j][k] -= B[i][j][k];
194Array3D<T>& operator*=(Array3D<T> &A,
const Array3D<T> &B)
200 if (B.dim1() == m && B.dim2() == n && B.dim3() == p )
202 for (
int i=0; i<m; i++)
203 for (
int j=0; j<n; j++)
204 for (
int k=0; k<p; k++)
205 A[i][j][k] *= B[i][j][k];
213Array3D<T>& operator/=(Array3D<T> &A,
const Array3D<T> &B)
219 if (B.dim1() == m && B.dim2() == n && B.dim3() == p )
221 for (
int i=0; i<m; i++)
222 for (
int j=0; j<n; j++)
223 for (
int k=0; k<p; k++)
224 A[i][j][k] /= B[i][j][k];
Definition tnt_array1d.h:36