-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtinyvecio.cc
68 lines (57 loc) · 1.89 KB
/
tinyvecio.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
* $Id: tinyvecio.cc,v 1.4 2006/06/01 00:56:34 julianc Exp $
*
* Copyright (C) 1997 Todd Veldhuizen <[email protected]>
* All rights reserved. Please see <blitz/blitz.h> for terms and
* conditions of use.
*
*/
#ifndef BZ_TINYVECIO_CC
#define BZ_TINYVECIO_CC
#ifndef BZ_TINYVEC_H
#include <blitz/tinyvec.h>
#endif
BZ_NAMESPACE(blitz)
// NEEDS_WORK???
// This version of operator<< is updated on August 2005
// by Sergei Mingaleev <[email protected]>. The output
// format for 2D TinyVector is the same as for complex
// numbers - so that one can read Array of complex numbers
// into Array of TinyVectors for speed-up of calculations.
// Also, the corresponding operator>> is updated.
template<typename P_numtype, int N_length>
ostream& operator<<(ostream& os, const TinyVector<P_numtype, N_length>& x)
{
os << "(" << x[0];
for (int i=1; i < N_length; ++i)
{
os << "," << x[i];
}
os << ")";
return os;
}
// Input of tinyvec contribute by Adam Levar <[email protected]>
// and updated by Sergei Mingaleev <[email protected]>
template <typename T_numtype, int N_length>
istream& operator>>(istream& is, TinyVector<T_numtype, N_length>& x)
{
char sep;
is >> sep;
BZPRECHECK(sep == '(', "Format error while scanning input TinyVector"
<< endl << " (expected '(' opening TinyVector)");
is >> x(0);
for (int i = 1; i < N_length; ++i)
{
is >> sep;
BZPRECHECK(sep == ',', "Format error while scanning input TinyVector"
<< endl << " (expected ',' between TinyVector components)");
BZPRECHECK(!is.bad(), "Premature end of input while scanning TinyVector");
is >> x(i);
}
is >> sep;
BZPRECHECK(sep == ')', "Format error while scanning input TinyVector"
<< endl << " (expected ')' closing TinyVector)");
return is;
}
BZ_NAMESPACE_END
#endif // BZ_TINYVECIO_CC