21#ifndef TNT_ARRAY2D_UTILS_H
22#define TNT_ARRAY2D_UTILS_H
32std::ostream& operator<<(std::ostream &s,
const Array2D<T> &A)
37 s << M <<
" " << N <<
"\n";
39 for (
int i=0; i<M; i++)
41 for (
int j=0; j<N; j++)
53std::istream& operator>>(std::istream &s, Array2D<T> &A)
62 for (
int i=0; i<M; i++)
63 for (
int j=0; j<N; j++)
74Array2D<T> operator+(
const Array2D<T> &A,
const Array2D<T> &B)
79 if (B.dim1() != m || B.dim2() != n )
86 for (
int i=0; i<m; i++)
88 for (
int j=0; j<n; j++)
89 C[i][j] = A[i][j] + B[i][j];
96Array2D<T> operator-(
const Array2D<T> &A,
const Array2D<T> &B)
101 if (B.dim1() != m || B.dim2() != n )
108 for (
int i=0; i<m; i++)
110 for (
int j=0; j<n; j++)
111 C[i][j] = A[i][j] - B[i][j];
119Array2D<T> operator*(
const Array2D<T> &A,
const Array2D<T> &B)
124 if (B.dim1() != m || B.dim2() != n )
131 for (
int i=0; i<m; i++)
133 for (
int j=0; j<n; j++)
134 C[i][j] = A[i][j] * B[i][j];
144Array2D<T> operator/(
const Array2D<T> &A,
const Array2D<T> &B)
149 if (B.dim1() != m || B.dim2() != n )
156 for (
int i=0; i<m; i++)
158 for (
int j=0; j<n; j++)
159 C[i][j] = A[i][j] / B[i][j];
170Array2D<T>& operator+=(Array2D<T> &A,
const Array2D<T> &B)
175 if (B.dim1() == m || B.dim2() == n )
177 for (
int i=0; i<m; i++)
179 for (
int j=0; j<n; j++)
189Array2D<T>& operator-=(Array2D<T> &A,
const Array2D<T> &B)
194 if (B.dim1() == m || B.dim2() == n )
196 for (
int i=0; i<m; i++)
198 for (
int j=0; j<n; j++)
208Array2D<T>& operator*=(Array2D<T> &A,
const Array2D<T> &B)
213 if (B.dim1() == m || B.dim2() == n )
215 for (
int i=0; i<m; i++)
217 for (
int j=0; j<n; j++)
229Array2D<T>& operator/=(Array2D<T> &A,
const Array2D<T> &B)
234 if (B.dim1() == m || B.dim2() == n )
236 for (
int i=0; i<m; i++)
238 for (
int j=0; j<n; j++)
261 if (A.dim2() != B.dim1())
270 for (
int i=0; i<M; i++)
271 for (
int j=0; j<K; j++)
275 for (
int k=0; k<N; k++)
276 sum += A[i][k] * B [k][j];
Definition tnt_array2d.h:65
Definition tnt_array1d.h:36
Array2D< T > matmult(const Array2D< T > &A, const Array2D< T > &B)
Definition tnt_array2d_utils.h:259