PLaSK library
Loading...
Searching...
No Matches
tnt_fortran_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_FORTRAN_ARRAY1D_UTILS_H
21#define TNT_FORTRAN_ARRAY1D_UTILS_H
22
23#include <iostream>
24
25namespace TNT
26{
27
28
36template <class T>
37std::ostream& operator<<(std::ostream &s, const Fortran_Array1D<T> &A)
38{
39 int N=A.dim1();
40
41 s << N << "\n";
42 for (int j=1; j<=N; j++)
43 {
44 s << A(j) << "\n";
45 }
46 s << "\n";
47
48 return s;
49}
50
65template <class T>
66std::istream& operator>>(std::istream &s, Fortran_Array1D<T> &A)
67{
68 int N;
69 s >> N;
70
72 for (int i=1; i<=N; i++)
73 s >> B(i);
74 A = B;
75 return s;
76}
77
78
79template <class T>
81{
82 int n = A.dim1();
83
84 if (B.dim1() != n )
85 return Fortran_Array1D<T>();
86
87 else
88 {
90
91 for (int i=1; i<=n; i++)
92 {
93 C(i) = A(i) + B(i);
94 }
95 return C;
96 }
97}
98
99
100
101template <class T>
103{
104 int n = A.dim1();
105
106 if (B.dim1() != n )
107 return Fortran_Array1D<T>();
108
109 else
110 {
112
113 for (int i=1; i<=n; i++)
114 {
115 C(i) = A(i) - B(i);
116 }
117 return C;
118 }
119}
120
121
122template <class T>
124{
125 int n = A.dim1();
126
127 if (B.dim1() != n )
128 return Fortran_Array1D<T>();
129
130 else
131 {
133
134 for (int i=1; i<=n; i++)
135 {
136 C(i) = A(i) * B(i);
137 }
138 return C;
139 }
140}
141
142
143template <class T>
145{
146 int n = A.dim1();
147
148 if (B.dim1() != n )
149 return Fortran_Array1D<T>();
150
151 else
152 {
154
155 for (int i=1; i<=n; i++)
156 {
157 C(i) = A(i) / B(i);
158 }
159 return C;
160 }
161}
162
163
164
165
166
167
168
169
170
171template <class T>
173{
174 int n = A.dim1();
175
176 if (B.dim1() == n)
177 {
178 for (int i=1; i<=n; i++)
179 {
180 A(i) += B(i);
181 }
182 }
183 return A;
184}
185
186
187
188
189template <class T>
191{
192 int n = A.dim1();
193
194 if (B.dim1() == n)
195 {
196 for (int i=1; i<=n; i++)
197 {
198 A(i) -= B(i);
199 }
200 }
201 return A;
202}
203
204
205
206template <class T>
208{
209 int n = A.dim1();
210
211 if (B.dim1() == n)
212 {
213 for (int i=1; i<=n; i++)
214 {
215 A(i) *= B(i);
216 }
217 }
218 return A;
219}
220
221
222
223
224template <class T>
226{
227 int n = A.dim1();
228
229 if (B.dim1() == n)
230 {
231 for (int i=1; i<=n; i++)
232 {
233 A(i) /= B(i);
234 }
235 }
236 return A;
237}
238
239
240} // namespace TNT
241
242#endif