37 #include <itpp/itexports.h> 
   43 template<
class Num_T> 
class Vec;
 
   45 template<
class Num_T> 
class Mat;
 
   55 Vec<Num_T> 
operator+(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2);
 
   58 Vec<Num_T> 
operator+(
const Vec<Num_T> &v, Num_T t);
 
   61 Vec<Num_T> 
operator+(Num_T t, 
const Vec<Num_T> &v);
 
   65 Vec<Num_T> 
operator-(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2);
 
   68 Vec<Num_T> 
operator-(
const Vec<Num_T> &v, Num_T t);
 
   71 Vec<Num_T> 
operator-(Num_T t, 
const Vec<Num_T> &v);
 
   74 Vec<Num_T> 
operator-(
const Vec<Num_T> &v);
 
   78 Num_T 
dot(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2);
 
   81 Num_T 
operator*(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2);
 
   91 Mat<Num_T> 
outer_product(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2,
 
   92                          bool hermitian = 
false);
 
   95 Vec<Num_T> 
operator*(
const Vec<Num_T> &v, Num_T t);
 
   98 Vec<Num_T> 
operator*(Num_T t, 
const Vec<Num_T> &v);
 
  101 template<
class Num_T>
 
  102 Vec<Num_T> 
elem_mult(
const Vec<Num_T> &a, 
const Vec<Num_T> &b);
 
  104 template<
class Num_T>
 
  105 Vec<Num_T> 
elem_mult(
const Vec<Num_T> &a, 
const Vec<Num_T> &b,
 
  106                      const Vec<Num_T> &c);
 
  108 template<
class Num_T>
 
  109 Vec<Num_T> 
elem_mult(
const Vec<Num_T> &a, 
const Vec<Num_T> &b,
 
  110                      const Vec<Num_T> &c, 
const Vec<Num_T> &d);
 
  113 template<
class Num_T>
 
  117 template<
class Num_T>
 
  119                    const Vec<Num_T> &c, Vec<Num_T> &out);
 
  121 template<
class Num_T>
 
  123                    const Vec<Num_T> &c, 
const Vec<Num_T> &d,
 
  127 template<
class Num_T>
 
  130 template<
class Num_T>
 
  131 Num_T 
elem_mult_sum(
const Vec<Num_T> &a, 
const Vec<Num_T> &b);
 
  134 template<
class Num_T>
 
  135 Vec<Num_T> 
operator/(
const Vec<Num_T> &v, Num_T t);
 
  137 template<
class Num_T>
 
  138 Vec<Num_T> 
operator/(Num_T t, 
const Vec<Num_T> &v);
 
  141 template<
class Num_T>
 
  142 Vec<Num_T> 
elem_div(
const Vec<Num_T> &a, 
const Vec<Num_T> &b);
 
  144 template<
class Num_T>
 
  145 Vec<Num_T> 
elem_div(Num_T t, 
const Vec<Num_T> &v);
 
  147 template<
class Num_T>
 
  148 void elem_div_out(
const Vec<Num_T> &a, 
const Vec<Num_T> &b, Vec<Num_T> &out);
 
  150 template<
class Num_T>
 
  151 Num_T 
elem_div_sum(
const Vec<Num_T> &a, 
const Vec<Num_T> &b);
 
  154 template<
class Num_T>
 
  155 Vec<Num_T> 
concat(
const Vec<Num_T> &v, Num_T a);
 
  157 template<
class Num_T>
 
  158 Vec<Num_T> 
concat(Num_T a, 
const Vec<Num_T> &v);
 
  160 template<
class Num_T>
 
  161 Vec<Num_T> 
concat(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2);
 
  163 template<
class Num_T>
 
  164 Vec<Num_T> 
concat(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2,
 
  165                   const Vec<Num_T> &v3);
 
  167 template<
class Num_T>
 
  168 Vec<Num_T> 
concat(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2,
 
  169                   const Vec<Num_T> &v3, 
const Vec<Num_T> &v4);
 
  171 template<
class Num_T>
 
  172 Vec<Num_T> 
concat(
const Vec<Num_T> &v1, 
const Vec<Num_T> &v2,
 
  173                   const Vec<Num_T> &v3, 
const Vec<Num_T> &v4,
 
  174                   const Vec<Num_T> &v5);
 
  243 template<
class Num_T>
 
  284   void set(
const char *str);
 
  286   void set(
const std::string &str);
 
  304   const Num_T &
get(
int i) 
const;
 
  313   void set(
int i, Num_T t);
 
  451   void del(
int i1, 
int i2);
 
  453   void ins(
int i, Num_T t);
 
  510   std::vector<std::string> tokenize(
const std::string &str,
 
  511                                     bool &abc_format) 
const;
 
  513   Num_T parse_token(
const std::string &s) 
const;
 
  515   void parse_abc_token(
const std::string &s, Num_T &a, Num_T &b,
 
  518   bool in_range(
int i)
 const { 
return ((i < 
datasize) && (i >= 0)); }
 
  529 typedef Vec<double> vec;
 
  535 typedef Vec<std::complex<double> > cvec;
 
  541 typedef Vec<int> ivec;
 
  547 typedef Vec<short int> svec;
 
  553 typedef Vec<bin> bvec;
 
  571 template<
class Num_T>
 
  572 std::ostream &operator<<(std::ostream &os, const Vec<Num_T> &v);
 
  585 template<
class Num_T>
 
  586 std::istream &
operator>>(std::istream &is, Vec<Num_T> &v);
 
  592 template<
class Num_T> 
inline 
  605 template<
class Num_T> 
inline 
  613 template<
class Num_T> 
inline 
  616 template<
class Num_T> 
inline 
  623 template<
class Num_T> 
inline 
  630 template<
class Num_T> 
inline 
  637 template<
class Num_T> 
inline 
  640   set(std::string(str));
 
  643 template<
class Num_T> 
inline 
  649 template<
class Num_T> 
inline 
  653   copy_vector(size, c_array, 
data);
 
  656 template<
class Num_T> 
inline 
  662 template<
class Num_T>
 
  665   it_assert_debug(size >= 0, 
"Vec::set_size(): New size must not be negative");
 
  666   if (datasize == size)
 
  672     int old_datasize = datasize;
 
  674     int min = datasize < size ? datasize : 
size;
 
  678     copy_vector(min, tmp, data);
 
  680     for (
int i = min; i < 
size; ++i)
 
  691 template<
class Num_T> 
inline 
  698 template<
class Num_T> 
inline 
  704 template<
class Num_T> 
inline 
  711 template<
class Num_T> 
inline 
  717 template<
class Num_T> 
inline 
  720   if (i1 == -1) i1 = datasize - 1;
 
  721   if (i2 == -1) i2 = datasize - 1;
 
  724                   "Vec<>::operator()(i1, i2): Indexing out of range");
 
  732 template<
class Num_T>
 
  737   for (
int i = 0; i < 
size; ++i) {
 
  739                     "Index i=" << i << 
" out of range");
 
  740     temp(i) = data[indexlist(i)];
 
  745 template<
class Num_T>
 
  750                   "Wrong size of binlist vector");
 
  753   for (
int i = 0; i < 
size; ++i)
 
  754     if (binlist(i) == 
bin(1))
 
  761 template<
class Num_T> 
inline 
  767 template<
class Num_T> 
inline 
  770   return (*
this)(i1, i2);
 
  773 template<
class Num_T> 
inline 
  776   return (*
this)(indexlist);
 
  779 template<
class Num_T> 
inline 
  782   return (*
this)(binlist);
 
  785 template<
class Num_T> 
inline 
  788   for (
int i = 0; i < datasize; i++)
 
  792 template<
class Num_T> 
inline 
  795   for (
int i = 0; i < datasize; i++)
 
  799 template<
class Num_T> 
inline 
  806 template<
class Num_T> 
inline 
  809   it_error(
"Vec::set(): Only `double', `complex<double>', `int', " 
  810            "`short int' and `bin' types supported");
 
  813 template<
class Num_T> 
inline 
  816   set(std::string(str));
 
  832 template<
class Num_T>
 
  836   copy_vector(datasize, data, temp.
_data());
 
  840 template<
class Num_T>
 
  844   copy_vector(datasize, data, temp.
_data());
 
  854 template<
class Num_T>
 
  860       copy_vector(datasize, v.
data, data);
 
  865     for (
int i = 0; i < datasize; i++)
 
  866       data[i] += v.
data[i];
 
  871 template<
class Num_T> 
inline 
  874   for (
int i = 0;i < datasize;i++)
 
  879 template<
class Num_T>
 
  892 template<
class Num_T>
 
  904 template<
class Num_T>
 
  916 template<
class Num_T>
 
  922       for (
int i = 0; i < v.
datasize; i++)
 
  923         data[i] = -v.
data[i];
 
  928     for (
int i = 0; i < datasize; i++)
 
  929       data[i] -= v.
data[i];
 
  934 template<
class Num_T> 
inline 
  937   for (
int i = 0;i < datasize;i++)
 
  942 template<
class Num_T>
 
  955 template<
class Num_T>
 
  967 template<
class Num_T>
 
  979 template<
class Num_T>
 
  991 template<
class Num_T> 
inline 
  994   scal_vector(datasize, t, data);
 
  998 template<
class Num_T> 
inline 
 1004 template<
class Num_T>
 
 1009   for (
int i = 0; i < v1.
length(); ++i)
 
 1016 ITPP_EXPORT 
double dot(
const vec &v1, 
const vec &v2);
 
 1020 template<
class Num_T>
 
 1024                   "Vec::outer_product:: Input vector of zero size");
 
 1027   for (
int i = 0; i < v1.
length(); ++i) {
 
 1028     for (
int j = 0; j < v2.
length(); ++j) {
 
 1037 ITPP_EXPORT mat 
outer_product(
const vec &v1, 
const vec &v2, 
bool);
 
 1040 ITPP_EXPORT cmat 
outer_product(
const cvec &v1, 
const cvec &v2, 
bool hermitian);
 
 1043 template<
class Num_T>
 
 1054 template<
class Num_T> 
inline 
 1060 template<
class Num_T> 
inline 
 1068 template<
class Num_T> 
inline 
 1077 template<
class Num_T> 
inline 
 1086 template<
class Num_T>
 
 1090                   "Vec<>::elem_mult_out(): Wrong sizes");
 
 1092   for (
int i = 0; i < a.
datasize; i++)
 
 1096 template<
class Num_T>
 
 1101                   "Vec<>::elem_mult_out(): Wrong sizes");
 
 1103   for (
int i = 0; i < a.
datasize; i++)
 
 1107 template<
class Num_T>
 
 1113                   "Vec<>::elem_mult_out(): Wrong sizes");
 
 1115   for (
int i = 0; i < a.
datasize; i++)
 
 1119 template<
class Num_T>
 
 1126                   "Vec<>::elem_mult_inplace(): Wrong sizes");
 
 1127   for (
int i = 0; i < a.
datasize; i++)
 
 1131 template<
class Num_T> 
inline 
 1135                   "Vec<>::elem_mult_sum(): Wrong sizes");
 
 1137   for (
int i = 0; i < a.
datasize; i++)
 
 1142 template<
class Num_T>
 
 1154 template<
class Num_T>
 
 1166 template<
class Num_T>
 
 1169   it_warning(
"Vec<>::elem_div(Num_T, const Vec<Num_T> &): This function is " 
 1170              "deprecated and might be removed from future IT++ releases. " 
 1171              "Please use Vec<>::operator/(Num_T, const Vec<Num_T> &) " 
 1176 template<
class Num_T> 
inline 
 1179   for (
int i = 0; i < datasize; ++i) {
 
 1185 template<
class Num_T> 
inline 
 1189   for (
int i = 0; i < datasize; ++i) {
 
 1190     data[i] /= v.
data[i];
 
 1195 template<
class Num_T> 
inline 
 1203 template<
class Num_T>
 
 1210   for (
int i = 0; i < a.
datasize; i++)
 
 1214 template<
class Num_T> 
inline 
 1221   for (
int i = 0; i < a.
datasize; i++)
 
 1227 template<
class Num_T>
 
 1233     copy_vector(nr, &data[datasize-nr], temp.
data);
 
 1238 template<
class Num_T>
 
 1244     copy_vector(nr, data, temp.
data);
 
 1249 template<
class Num_T>
 
 1253                   "Vec::mid(): indexing out of range");
 
 1256     copy_vector(nr, &data[start], temp.
data);
 
 1261 template<
class Num_T>
 
 1265                   "Vec<>::split(): Index out of range");
 
 1268     copy_vector(pos, data, temp1.
data);
 
 1269     if (pos < datasize) {
 
 1271       copy_vector(datasize - pos, &data[pos], temp2.
data);
 
 1281 template<
class Num_T>
 
 1288     data[i] = data[i-n];
 
 1293 template<
class Num_T>
 
 1296   for (
int i = datasize - 1; i >= v.
datasize; i--)
 
 1298   for (
int i = 0; i < v.
datasize; i++)
 
 1302 template<
class Num_T>
 
 1308   for (i = 0; i < datasize - n; i++)
 
 1309     data[i] = data[i+n];
 
 1310   while (i < datasize)
 
 1314 template<
class Num_T>
 
 1317   for (
int i = 0; i < datasize - v.
datasize; i++)
 
 1319   for (
int i = datasize - v.
datasize; i < datasize; i++)
 
 1320     data[i] = v[i-datasize+v.
datasize];
 
 1323 template<
class Num_T>
 
 1328   copy_vector(size, v.
data, temp.
data);
 
 1333 template<
class Num_T>
 
 1339   copy_vector(size, v.
data, &temp.
data[1]);
 
 1343 template<
class Num_T>
 
 1346   int size1 = v1.
size();
 
 1347   int size2 = v2.
size();
 
 1349   copy_vector(size1, v1.
data, temp.
data);
 
 1350   copy_vector(size2, v2.
data, &temp.
data[size1]);
 
 1354 template<
class Num_T>
 
 1358   int size1 = v1.
size();
 
 1359   int size2 = v2.
size();
 
 1360   int size3 = v3.
size();
 
 1362   copy_vector(size1, v1.
data, temp.
data);
 
 1363   copy_vector(size2, v2.
data, &temp.
data[size1]);
 
 1364   copy_vector(size3, v3.
data, &temp.
data[size1+size2]);
 
 1368 template<
class Num_T>
 
 1372   int size1 = v1.
size();
 
 1373   int size2 = v2.
size();
 
 1374   int size3 = v3.
size();
 
 1375   int size4 = v4.
size();
 
 1376   Vec<Num_T> temp(size1 + size2 + size3 + size4);
 
 1377   copy_vector(size1, v1.
data, temp.
data);
 
 1378   copy_vector(size2, v2.
data, &temp.
data[size1]);
 
 1379   copy_vector(size3, v3.
data, &temp.
data[size1+size2]);
 
 1380   copy_vector(size4, v4.
data, &temp.
data[size1+size2+size3]);
 
 1384 template<
class Num_T>
 
 1389   int size1 = v1.
size();
 
 1390   int size2 = v2.
size();
 
 1391   int size3 = v3.
size();
 
 1392   int size4 = v4.
size();
 
 1393   int size5 = v5.
size();
 
 1394   Vec<Num_T> temp(size1 + size2 + size3 + size4 + size5);
 
 1395   copy_vector(size1, v1.
data, temp.
data);
 
 1396   copy_vector(size2, v2.
data, &temp.
data[size1]);
 
 1397   copy_vector(size3, v3.
data, &temp.
data[size1+size2]);
 
 1398   copy_vector(size4, v4.
data, &temp.
data[size1+size2+size3]);
 
 1399   copy_vector(size5, v5.
data, &temp.
data[size1+size2+size3+size4]);
 
 1403 template<
class Num_T>
 
 1406   it_warning(
"Vec<>::set_subvector(int, int, const Vec<> &): This function " 
 1407              "is deprecated and might be removed from future IT++ releases. " 
 1408              "Please use Vec<>::set_subvector(int, const Vec<> &) instead.");
 
 1409   set_subvector(i1, v);
 
 1412 template<
class Num_T> 
inline 
 1416                   "Vec<>::set_subvector(int, const Vec<> &): " 
 1417                   "Index out of range or too long input vector");
 
 1421 template<
class Num_T> 
inline 
 1424   if (i1 == -1) i1 = datasize - 1;
 
 1425   if (i2 == -1) i2 = datasize - 1;
 
 1427                   "Vec<>::set_subvector(int, int, Num_T): Indexing out " 
 1429   for (
int i = i1; i <= i2; i++)
 
 1433 template<
class Num_T> 
inline 
 1436   set_subvector(i, v);
 
 1439 template<
class Num_T>
 
 1442   it_assert_debug(in_range(index), 
"Vec<>::del(int): Index out of range");
 
 1444   set_size(datasize - 1, 
false);
 
 1445   copy_vector(index, temp.
data, data);
 
 1446   copy_vector(datasize - index, &temp.
data[index+1], &data[index]);
 
 1449 template<
class Num_T>
 
 1452   if (i1 == -1) i1 = datasize - 1;
 
 1453   if (i2 == -1) i2 = datasize - 1;
 
 1455                   "Vec<>::del(int, int): Indexing out of range");
 
 1457   int new_size = datasize - (i2 - i1 + 1);
 
 1458   set_size(new_size, 
false);
 
 1459   copy_vector(i1, temp.
data, data);
 
 1460   copy_vector(datasize - i1, &temp.
data[i2+1], &data[i1]);
 
 1463 template<
class Num_T>
 
 1467                   "Vec<>::ins(): Index out of range");
 
 1470   set_size(datasize + 1, 
false);
 
 1471   copy_vector(index, Temp.
data, data);
 
 1473   copy_vector(Temp.
datasize - index, Temp.
data + index, data + index + 1);
 
 1476 template<
class Num_T>
 
 1480                   "Vec<>::ins(): Index out of range");
 
 1483   set_size(datasize + v.
length(), 
false);
 
 1484   copy_vector(index, Temp.
data, data);
 
 1485   copy_vector(v.
size(), v.
data, &data[index]);
 
 1486   copy_vector(Temp.
datasize - index, Temp.
data + index, data + index + v.
size());
 
 1489 template<
class Num_T> 
inline 
 1492   for (
int i = 0;i < datasize;i++)
 
 1497 template<
class Num_T> 
inline 
 1502     copy_vector(datasize, v.
data, data);
 
 1507 template<
class Num_T>
 
 1510   if (m.
cols() == 1) {
 
 1511     set_size(m.
rows(), 
false);
 
 1514   else if (m.
rows() == 1) {
 
 1515     set_size(m.
cols(), 
false);
 
 1519     it_error(
"Vec<>::operator=(Mat<Num_T> &): Wrong size of input matrix");
 
 1523 template<
class Num_T> 
inline 
 1526   set(std::string(str));
 
 1530 template<
class Num_T> 
inline 
 1537 template<
class Num_T>
 
 1541   bvec temp(datasize);
 
 1542   for (
int i = 0; i < datasize; i++)
 
 1543     temp(i) = (data[i] == t);
 
 1547 template<
class Num_T>
 
 1551   bvec temp(datasize);
 
 1552   for (
int i = 0; i < datasize; i++)
 
 1553     temp(i) = (data[i] != t);
 
 1562 template<
class Num_T>
 
 1566   bvec temp(datasize);
 
 1567   for (
int i = 0; i < datasize; i++)
 
 1568     temp(i) = (data[i] < t);
 
 1572 template<
class Num_T>
 
 1576   bvec temp(datasize);
 
 1577   for (
int i = 0; i < datasize; i++)
 
 1578     temp(i) = (data[i] <= t);
 
 1587 template<
class Num_T>
 
 1591   bvec temp(datasize);
 
 1592   for (
int i = 0; i < datasize; i++)
 
 1593     temp(i) = (data[i] > t);
 
 1602 template<
class Num_T>
 
 1606   bvec temp(datasize);
 
 1607   for (
int i = 0; i < datasize; i++)
 
 1608     temp(i) = (data[i] >= t);
 
 1617 template<
class Num_T>
 
 1621   if (datasize != invector.
datasize) 
return false;
 
 1622   for (
int i = 0;i < datasize;i++) {
 
 1623     if (data[i] != invector.
data[i]) 
return false;
 
 1628 template<
class Num_T>
 
 1631   if (datasize != invector.
datasize) 
return true;
 
 1632   for (
int i = 0;i < datasize;i++) {
 
 1633     if (data[i] != invector.
data[i]) 
return true;
 
 1639 template<
class Num_T>
 
 1640 std::ostream &operator<<(std::ostream &os, const Vec<Num_T> &v)
 
 1642   int i, sz = v.length();
 
 1645   for (i = 0; i < sz; i++) {
 
 1656 template<
class Num_T>
 
 1659   std::ostringstream buffer;
 
 1660   bool started = 
false;
 
 1661   bool finished = 
false;
 
 1662   bool brackets = 
false;
 
 1672       if (is.eof() || (c == 
'\n')) {
 
 1675           is.setstate(std::ios_base::failbit);
 
 1678         else if (!((c == 
'\n') && !started)) {
 
 1682       else if ((c == 
' ') || (c == 
'\t')) {
 
 1687       else if (c == 
'[') {
 
 1690           is.setstate(std::ios_base::failbit);
 
 1698       else if (c == 
']') {
 
 1699         if (!started || !brackets) {
 
 1701           is.setstate(std::ios_base::failbit);
 
 1707         while (!is.eof() && (((c = 
static_cast<char>(is.peek())) == 
' ')
 
 1711         if (!is.eof() && (c == 
'\n')) {
 
 1726     v.
set(buffer.str());
 
 1738 template<
class Num_T>
 
 1739 void Vec<Num_T>::parse_abc_token(
const std::string &s, Num_T &a, Num_T &b,
 
 1742   std::string::size_type beg = 0;
 
 1743   std::string::size_type end = s.find(
':', 0);
 
 1744   a = parse_token(s.substr(beg, end-beg));
 
 1746   end = s.find(
':', beg);
 
 1747   if (end != std::string::npos) {
 
 1748     b = parse_token(s.substr(beg, end-beg));
 
 1749     c = parse_token(s.substr(end+1, s.size()-end));
 
 1753     c = parse_token(s.substr(beg, end-beg-1));
 
 1757 template<
class Num_T>
 
 1758 Num_T Vec<Num_T>::parse_token(
const std::string &s)
 const 
 1760   it_error(
"Vec::parse_token(): Only `double' and `int' types are supported");
 
 1766 ITPP_EXPORT 
double Vec<double>::parse_token(
const std::string &s) 
const;
 
 1768 ITPP_EXPORT 
int Vec<int>::parse_token(
const std::string &s) 
const;
 
 1771 template<
class Num_T>
 
 1772 std::vector<std::string> Vec<Num_T>::tokenize(
const std::string &str_in,
 
 1773                                               bool &abc_format)
 const 
 1775   std::vector<std::string> vs;  
 
 1781   bool lparen = 
false;
 
 1783   for (std::string::size_type i = 0; i < str_in.size(); ++i) {
 
 1786     case ' ': 
case '\t':
 
 1812       else if (lparen && comma) { 
 
 1816         if ((c != 
'-') && (c != 
'+')) 
 
 1839 ITPP_EXPORT_TEMPLATE 
template class ITPP_EXPORT Vec<double>;
 
 1840 ITPP_EXPORT_TEMPLATE 
template class ITPP_EXPORT Vec<int>;
 
 1841 ITPP_EXPORT_TEMPLATE 
template class ITPP_EXPORT Vec<short int>;
 
 1842 ITPP_EXPORT_TEMPLATE 
template class ITPP_EXPORT Vec<std::complex<double> >;
 
 1843 ITPP_EXPORT_TEMPLATE 
template class ITPP_EXPORT Vec<bin>;
 
 1847 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator+(
const vec &v1, 
const vec &v2);
 
 1848 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator+(
const cvec &v1, 
const cvec &v2);
 
 1849 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator+(
const ivec &v1, 
const ivec &v2);
 
 1850 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator+(
const svec &v1, 
const svec &v2);
 
 1851 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator+(
const bvec &v1, 
const bvec &v2);
 
 1853 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator+(
const vec &v1, 
double t);
 
 1854 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator+(
const cvec &v1, std::complex<double> t);
 
 1855 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator+(
const ivec &v1, 
int t);
 
 1856 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator+(
const svec &v1, 
short t);
 
 1857 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator+(
const bvec &v1, bin t);
 
 1859 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator+(
double t, 
const vec &v1);
 
 1860 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator+(std::complex<double> t, 
const cvec &v1);
 
 1861 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator+(
int t, 
const ivec &v1);
 
 1862 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator+(
short t, 
const svec &v1);
 
 1863 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator+(bin t, 
const bvec &v1);
 
 1867 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator-(
const vec &v1, 
const vec &v2);
 
 1868 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator-(
const cvec &v1, 
const cvec &v2);
 
 1869 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator-(
const ivec &v1, 
const ivec &v2);
 
 1870 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator-(
const svec &v1, 
const svec &v2);
 
 1871 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator-(
const bvec &v1, 
const bvec &v2);
 
 1873 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator-(
const vec &v, 
double t);
 
 1874 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator-(
const cvec &v, std::complex<double> t);
 
 1875 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator-(
const ivec &v, 
int t);
 
 1876 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator-(
const svec &v, 
short t);
 
 1877 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator-(
const bvec &v, bin t);
 
 1879 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator-(
double t, 
const vec &v);
 
 1880 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator-(std::complex<double> t, 
const cvec &v);
 
 1881 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator-(
int t, 
const ivec &v);
 
 1882 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator-(
short t, 
const svec &v);
 
 1883 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator-(bin t, 
const bvec &v);
 
 1887 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator-(
const vec &v);
 
 1888 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator-(
const cvec &v);
 
 1889 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator-(
const ivec &v);
 
 1890 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator-(
const svec &v);
 
 1891 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator-(
const bvec &v);
 
 1894 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::complex<double> 
dot(
const cvec &v1, 
const cvec &v2);
 
 1895 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
int dot(
const ivec &v1, 
const ivec &v2);
 
 1896 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
short dot(
const svec &v1, 
const svec &v2);
 
 1897 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bin 
dot(
const bvec &v1, 
const bvec &v2);
 
 1899 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
double operator*(
const vec &v1, 
const vec &v2);
 
 1900 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::complex<double> 
operator*(
const cvec &v1, 
const cvec &v2);
 
 1901 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
int operator*(
const ivec &v1, 
const ivec &v2);
 
 1902 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
short operator*(
const svec &v1, 
const svec &v2);
 
 1903 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bin 
operator*(
const bvec &v1, 
const bvec &v2);
 
 1905 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT imat 
outer_product(
const ivec &v1, 
const ivec &v2,
 
 1907 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT smat 
outer_product(
const svec &v1, 
const svec &v2,
 
 1909 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
bmat outer_product(
const bvec &v1, 
const bvec &v2,
 
 1912 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator*(
const vec &v, 
double t);
 
 1913 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator*(
const cvec &v, std::complex<double> t);
 
 1914 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator*(
const ivec &v, 
int t);
 
 1915 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator*(
const svec &v, 
short t);
 
 1916 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator*(
const bvec &v, bin t);
 
 1918 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator*(
double t, 
const vec &v);
 
 1919 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator*(std::complex<double> t, 
const cvec &v);
 
 1920 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator*(
int t, 
const ivec &v);
 
 1921 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator*(
short t, 
const svec &v);
 
 1922 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator*(bin t, 
const bvec &v);
 
 1926 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
elem_mult(
const vec &a, 
const vec &b);
 
 1927 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
elem_mult(
const cvec &a, 
const cvec &b);
 
 1928 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
elem_mult(
const ivec &a, 
const ivec &b);
 
 1929 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
elem_mult(
const svec &a, 
const svec &b);
 
 1930 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
elem_mult(
const bvec &a, 
const bvec &b);
 
 1932 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const vec &a, 
const vec &b, vec &out);
 
 1933 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const cvec &a, 
const cvec &b, cvec &out);
 
 1934 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const ivec &a, 
const ivec &b, ivec &out);
 
 1935 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const svec &a, 
const svec &b, svec &out);
 
 1936 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const bvec &a, 
const bvec &b, bvec &out);
 
 1938 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
elem_mult(
const vec &a, 
const vec &b, 
const vec &c);
 
 1939 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
elem_mult(
const cvec &a, 
const cvec &b, 
const cvec &c);
 
 1940 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
elem_mult(
const ivec &a, 
const ivec &b, 
const ivec &c);
 
 1941 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
elem_mult(
const svec &a, 
const svec &b, 
const svec &c);
 
 1942 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
elem_mult(
const bvec &a, 
const bvec &b, 
const bvec &c);
 
 1944 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const vec &a, 
const vec &b,
 
 1945                                      const vec &c, vec &out);
 
 1946 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const cvec &a, 
const cvec &b,
 
 1947                                      const cvec &c, cvec &out);
 
 1948 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const ivec &a, 
const ivec &b,
 
 1949                                      const ivec &c, ivec &out);
 
 1950 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const svec &a, 
const svec &b,
 
 1951                                      const svec &c, svec &out);
 
 1952 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const bvec &a, 
const bvec &b,
 
 1953                                      const bvec &c, bvec &out);
 
 1955 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
elem_mult(
const vec &a, 
const vec &b,
 
 1956                                 const vec &c, 
const vec &d);
 
 1957 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
elem_mult(
const cvec &a, 
const cvec &b,
 
 1958                                  const cvec &c, 
const cvec &d);
 
 1959 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
elem_mult(
const ivec &a, 
const ivec &b,
 
 1960                                  const ivec &c, 
const ivec &d);
 
 1961 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
elem_mult(
const svec &a, 
const svec &b,
 
 1962                                  const svec &c, 
const svec &d);
 
 1963 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
elem_mult(
const bvec &a, 
const bvec &b,
 
 1964                                  const bvec &c, 
const bvec &d);
 
 1966 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const vec &a, 
const vec &b, 
const vec &c,
 
 1967                                      const vec &d, vec &out);
 
 1968 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const cvec &a, 
const cvec &b,
 
 1969                                      const cvec &c, 
const cvec &d, cvec &out);
 
 1970 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const ivec &a, 
const ivec &b,
 
 1971                                      const ivec &c, 
const ivec &d, ivec &out);
 
 1972 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const svec &a, 
const svec &b,
 
 1973                                      const svec &c, 
const svec &d, svec &out);
 
 1974 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_out(
const bvec &a, 
const bvec &b,
 
 1975                                      const bvec &c, 
const bvec &d, bvec &out);
 
 1979 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_inplace(
const vec &a, vec &b);
 
 1980 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_inplace(
const cvec &a, cvec &b);
 
 1981 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_inplace(
const ivec &a, ivec &b);
 
 1982 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_inplace(
const svec &a, svec &b);
 
 1983 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_mult_inplace(
const bvec &a, bvec &b);
 
 1987 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
double elem_mult_sum(
const vec &a, 
const vec &b);
 
 1988 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::complex<double> 
elem_mult_sum(
const cvec &a,
 
 1990 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
int elem_mult_sum(
const ivec &a, 
const ivec &b);
 
 1991 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
short elem_mult_sum(
const svec &a, 
const svec &b);
 
 1992 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bin 
elem_mult_sum(
const bvec &a, 
const bvec &b);
 
 1996 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator/(
const vec &v, 
double t);
 
 1997 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator/(
const cvec &v, std::complex<double> t);
 
 1998 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator/(
const ivec &v, 
int t);
 
 1999 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator/(
const svec &v, 
short t);
 
 2000 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator/(
const bvec &v, bin t);
 
 2002 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
operator/(
double t, 
const vec &v);
 
 2003 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
operator/(std::complex<double> t, 
const cvec &v);
 
 2004 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
operator/(
int t, 
const ivec &v);
 
 2005 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
operator/(
short t, 
const svec &v);
 
 2006 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
operator/(bin t, 
const bvec &v);
 
 2010 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
elem_div(
const vec &a, 
const vec &b);
 
 2011 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
elem_div(
const cvec &a, 
const cvec &b);
 
 2012 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
elem_div(
const ivec &a, 
const ivec &b);
 
 2013 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
elem_div(
const svec &a, 
const svec &b);
 
 2014 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
elem_div(
const bvec &a, 
const bvec &b);
 
 2016 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
elem_div(
double t, 
const vec &v);
 
 2017 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
elem_div(std::complex<double> t, 
const cvec &v);
 
 2018 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
elem_div(
int t, 
const ivec &v);
 
 2019 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
elem_div(
short t, 
const svec &v);
 
 2020 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
elem_div(bin t, 
const bvec &v);
 
 2022 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_div_out(
const vec &a, 
const vec &b, vec &out);
 
 2023 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_div_out(
const cvec &a, 
const cvec &b, cvec &out);
 
 2024 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_div_out(
const ivec &a, 
const ivec &b, ivec &out);
 
 2025 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_div_out(
const svec &a, 
const svec &b, svec &out);
 
 2026 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
void elem_div_out(
const bvec &a, 
const bvec &b, bvec &out);
 
 2030 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
double elem_div_sum(
const vec &a, 
const vec &b);
 
 2031 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::complex<double> 
elem_div_sum(
const cvec &a,
 
 2033 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
int elem_div_sum(
const ivec &a, 
const ivec &b);
 
 2034 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT 
short elem_div_sum(
const svec &a, 
const svec &b);
 
 2035 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bin 
elem_div_sum(
const bvec &a, 
const bvec &b);
 
 2039 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
concat(
const vec &v, 
double a);
 
 2040 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
concat(
const cvec &v, std::complex<double> a);
 
 2041 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
concat(
const ivec &v, 
int a);
 
 2042 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
concat(
const svec &v, 
short a);
 
 2043 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
concat(
const bvec &v, bin a);
 
 2045 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
concat(
double a, 
const vec &v);
 
 2046 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
concat(std::complex<double> a, 
const cvec &v);
 
 2047 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
concat(
int a, 
const ivec &v);
 
 2048 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
concat(
short a, 
const svec &v);
 
 2049 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
concat(bin a, 
const bvec &v);
 
 2051 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
concat(
const vec &v1, 
const vec &v2);
 
 2052 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
concat(
const cvec &v1, 
const cvec &v2);
 
 2053 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
concat(
const ivec &v1, 
const ivec &v2);
 
 2054 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
concat(
const svec &v1, 
const svec &v2);
 
 2055 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
concat(
const bvec &v1, 
const bvec &v2);
 
 2057 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
concat(
const vec &v1, 
const vec &v2, 
const vec &v3);
 
 2058 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
concat(
const cvec &v1, 
const cvec &v2, 
const cvec &v3);
 
 2059 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
concat(
const ivec &v1, 
const ivec &v2, 
const ivec &v3);
 
 2060 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
concat(
const svec &v1, 
const svec &v2, 
const svec &v3);
 
 2061 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
concat(
const bvec &v1, 
const bvec &v2, 
const bvec &v3);
 
 2063 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
concat(
const vec &v1, 
const vec &v2,
 
 2064                              const vec &v3, 
const vec &v4);
 
 2065 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
concat(
const cvec &v1, 
const cvec &v2,
 
 2066                               const cvec &v3, 
const cvec &v4);
 
 2067 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
concat(
const ivec &v1, 
const ivec &v2,
 
 2068                               const ivec &v3, 
const ivec &v4);
 
 2069 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
concat(
const svec &v1, 
const svec &v2,
 
 2070                               const svec &v3, 
const svec &v4);
 
 2071 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
concat(
const bvec &v1, 
const bvec &v2,
 
 2072                               const bvec &v3, 
const bvec &v4);
 
 2074 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT vec 
concat(
const vec &v1, 
const vec &v2, 
const vec &v3,
 
 2075                              const vec &v4, 
const vec &v5);
 
 2076 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT cvec 
concat(
const cvec &v1, 
const cvec &v2, 
const cvec &v3,
 
 2077                               const cvec &v4, 
const cvec &v5);
 
 2078 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT ivec 
concat(
const ivec &v1, 
const ivec &v2, 
const ivec &v3,
 
 2079                               const ivec &v4, 
const ivec &v5);
 
 2080 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT svec 
concat(
const svec &v1, 
const svec &v2, 
const svec &v3,
 
 2081                               const svec &v4, 
const svec &v5);
 
 2082 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT bvec 
concat(
const bvec &v1, 
const bvec &v2, 
const bvec &v3,
 
 2083                               const bvec &v4, 
const bvec &v5);
 
 2087 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::ostream &
operator<<(std::ostream& os, 
const vec &vect);
 
 2088 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::ostream &
operator<<(std::ostream& os, 
const cvec &vect);
 
 2089 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::ostream &
operator<<(std::ostream& os, 
const svec &vect);
 
 2090 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::ostream &
operator<<(std::ostream& os, 
const ivec &vect);
 
 2091 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::ostream &
operator<<(std::ostream& os, 
const bvec &vect);
 
 2092 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::istream &
operator>>(std::istream& is, vec &vect);
 
 2093 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::istream &
operator>>(std::istream& is, cvec &vect);
 
 2094 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::istream &
operator>>(std::istream& is, svec &vect);
 
 2095 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::istream &
operator>>(std::istream& is, ivec &vect);
 
 2096 ITPP_EXPORT_TEMPLATE 
template ITPP_EXPORT std::istream &
operator>>(std::istream& is, bvec &vect);
 
 2102 #endif // #ifndef VEC_H