PLaSK library
Loading...
Searching...
No Matches
tnt_array1d_utils.h
Go to the documentation of this file.
1/*
2*
3* Template Numerical Toolkit (TNT)
4*
5* Mathematical and Computational Sciences Division
6* National Institute of Technology,
7* Gaithersburg, MD USA
8*
9*
10* This software was developed at the National Institute of Standards and
11* Technology (NIST) by employees of the Federal Government in the course
12* of their official duties. Pursuant to title 17 Section 105 of the
13* United States Code, this software is not subject to copyright protection
14* and is in the public domain. NIST assumes no responsibility whatsoever for
15* its use by other parties, and makes no guarantees, expressed or implied,
16* about its quality, reliability, or any other characteristic.
17*
18*/
19
20#ifndef TNT_ARRAY1D_UTILS_H
21#define TNT_ARRAY1D_UTILS_H
22
23#include <cstdlib>
24#include <cassert>
25
26namespace TNT
27{
28
29
30template <class T>
31std::ostream& operator<<(std::ostream &s, const Array1D<T> &A)
32{
33 int N=A.dim1();
34
35#ifdef TNT_DEBUG
36 s << "addr: " << (void *) &A[0] << "\n";
37#endif
38 s << N << "\n";
39 for (int j=0; j<N; j++)
40 {
41 s << A[j] << "\n";
42 }
43 s << "\n";
44
45 return s;
46}
47
48template <class T>
49std::istream& operator>>(std::istream &s, Array1D<T> &A)
50{
51 int N;
52 s >> N;
53
54 Array1D<T> B(N);
55 for (int i=0; i<N; i++)
56 s >> B[i];
57 A = B;
58 return s;
59}
60
61
62
63template <class T>
65{
66 int n = A.dim1();
67
68 if (B.dim1() != n )
69 return Array1D<T>();
70
71 else
72 {
73 Array1D<T> C(n);
74
75 for (int i=0; i<n; i++)
76 {
77 C[i] = A[i] + B[i];
78 }
79 return C;
80 }
81}
82
83
84
85template <class T>
87{
88 int n = A.dim1();
89
90 if (B.dim1() != n )
91 return Array1D<T>();
92
93 else
94 {
95 Array1D<T> C(n);
96
97 for (int i=0; i<n; i++)
98 {
99 C[i] = A[i] - B[i];
100 }
101 return C;
102 }
103}
104
105
106template <class T>
108{
109 int n = A.dim1();
110
111 if (B.dim1() != n )
112 return Array1D<T>();
113
114 else
115 {
116 Array1D<T> C(n);
117
118 for (int i=0; i<n; i++)
119 {
120 C[i] = A[i] * B[i];
121 }
122 return C;
123 }
124}
125
126
127template <class T>
129{
130 int n = A.dim1();
131
132 if (B.dim1() != n )
133 return Array1D<T>();
134
135 else
136 {
137 Array1D<T> C(n);
138
139 for (int i=0; i<n; i++)
140 {
141 C[i] = A[i] / B[i];
142 }
143 return C;
144 }
145}
146
147
148
149
150
151
152
153
154
155template <class T>
157{
158 int n = A.dim1();
159
160 if (B.dim1() == n)
161 {
162 for (int i=0; i<n; i++)
163 {
164 A[i] += B[i];
165 }
166 }
167 return A;
168}
169
170
171
172
173template <class T>
175{
176 int n = A.dim1();
177
178 if (B.dim1() == n)
179 {
180 for (int i=0; i<n; i++)
181 {
182 A[i] -= B[i];
183 }
184 }
185 return A;
186}
187
188
189
190template <class T>
192{
193 int n = A.dim1();
194
195 if (B.dim1() == n)
196 {
197 for (int i=0; i<n; i++)
198 {
199 A[i] *= B[i];
200 }
201 }
202 return A;
203}
204
205
206
207
208template <class T>
210{
211 int n = A.dim1();
212
213 if (B.dim1() == n)
214 {
215 for (int i=0; i<n; i++)
216 {
217 A[i] /= B[i];
218 }
219 }
220 return A;
221}
222
223
224
225
226
227
228} // namespace TNT
229
230#endif