AMROC Main     Blockstructured Adaptive Mesh Refinement in object-oriented C++


Main Page   Class Hierarchy   Compound List   File List  

Vector16.h

Go to the documentation of this file.
00001 #ifndef AMROC_VECTOR16_H
00002 #define AMROC_VECTOR16_H
00003 
00011 #include "CompConf.h"
00012 #include "generic.h"
00013 #include <iostream.h>
00014 #include <assert.h>
00015  
00016 #ifndef VectorName
00017 #define Vector(dim)      name2(Vector,dim)
00018 #define VectorName
00019 #endif
00020 
00028 template <class DataType>
00029 class Vector(16) {
00030   typedef Vector(16)<DataType> TVector;
00031 
00032 public:
00033   typedef DataType InternalDataType;
00034 
00035   Vector(16)() {}
00036   Vector(16)(const TVector& x) { 
00037     memcpy((void *) data_, (void *) x.data_, sizeof(TVector));
00038   }
00039   Vector(16)(const DataType& v) { 
00040     data_[0] = v; 
00041     data_[1] = v; 
00042     data_[2] = v; 
00043     data_[3] = v; 
00044     data_[4] = v; 
00045     data_[5] = v; 
00046     data_[6] = v; 
00047     data_[7] = v; 
00048     data_[8] = v; 
00049     data_[9] = v; 
00050     data_[10] = v; 
00051     data_[11] = v; 
00052     data_[12] = v; 
00053     data_[13] = v; 
00054     data_[14] = v; 
00055     data_[15] = v; 
00056   }
00057 
00058   ~Vector(16)() {}
00059   
00060   DataType * data() { return data_; }
00061   const DataType * data() const { return data_; }
00062   int length() const { return 16; }
00063   static int Length() { return 16; }
00064 
00065   inline DataType operator()(int i) const {
00066 #ifdef DEBUG_PRINT
00067     assert((i >= 0) && (i < 16)); 
00068 #endif
00069     return data_[i];
00070   }
00071   inline DataType& operator()(int i) { 
00072 #ifdef DEBUG_PRINT
00073     assert((i >= 0) && (i < 16)); 
00074 #endif
00075     return data_[i];
00076   }
00077 
00078   inline DataType operator[](int i) const {
00079 #ifdef DEBUG_PRINT
00080     assert((i >= 0) && (i < 16)); 
00081 #endif
00082     return data_[i];
00083   }
00084   inline DataType& operator[](int i) { 
00085 #ifdef DEBUG_PRINT
00086     assert((i >= 0) && (i < 16)); 
00087 #endif
00088     return data_[i];
00089   }
00090 
00091   inline TVector& operator=(const TVector& x) { 
00092     memcpy((void *) data_, (void *) x.data_, sizeof(TVector));
00093     return *this; 
00094   }
00095   inline TVector& operator=(const DataType& v) { 
00096     data_[0] = v; 
00097     data_[1] = v; 
00098     data_[2] = v; 
00099     data_[3] = v; 
00100     data_[4] = v; 
00101     data_[5] = v; 
00102     data_[6] = v; 
00103     data_[7] = v; 
00104     data_[8] = v; 
00105     data_[9] = v; 
00106     data_[10] = v; 
00107     data_[11] = v; 
00108     data_[12] = v; 
00109     data_[13] = v; 
00110     data_[14] = v; 
00111     data_[15] = v; 
00112     return *this; 
00113   }
00114 
00115 #define Vector_Vector_Operator(ope,op)                          \
00116    inline TVector& operator ope (const TVector &x)              \
00117      {                                                          \
00118       data_[0] ope x.data_[0];                                  \
00119       data_[1] ope x.data_[1];                                  \
00120       data_[2] ope x.data_[2];                                  \
00121       data_[3] ope x.data_[3];                                  \
00122       data_[4] ope x.data_[4];                                  \
00123       data_[5] ope x.data_[5];                                  \
00124       data_[6] ope x.data_[6];                                  \
00125       data_[7] ope x.data_[7];                                  \
00126       data_[8] ope x.data_[8];                                  \
00127       data_[9] ope x.data_[9];                                  \
00128       data_[10] ope x.data_[10];                                \
00129       data_[11] ope x.data_[11];                                \
00130       data_[12] ope x.data_[12];                                \
00131       data_[13] ope x.data_[13];                                \
00132       data_[14] ope x.data_[14];                                \
00133       data_[15] ope x.data_[15];                                \
00134       return(*this);                                            \
00135      }                                                          \
00136    inline TVector operator op (const TVector &x) const          \
00137      {                                                          \
00138       TVector ret(*this);                                       \
00139       ret.data_[0] ope x.data_[0];                              \
00140       ret.data_[1] ope x.data_[1];                              \
00141       ret.data_[2] ope x.data_[2];                              \
00142       ret.data_[3] ope x.data_[3];                              \
00143       ret.data_[4] ope x.data_[4];                              \
00144       ret.data_[5] ope x.data_[5];                              \
00145       ret.data_[6] ope x.data_[6];                              \
00146       ret.data_[7] ope x.data_[7];                              \
00147       ret.data_[8] ope x.data_[8];                              \
00148       ret.data_[9] ope x.data_[9];                              \
00149       ret.data_[10] ope x.data_[10];                            \
00150       ret.data_[11] ope x.data_[11];                            \
00151       ret.data_[12] ope x.data_[12];                            \
00152       ret.data_[13] ope x.data_[13];                            \
00153       ret.data_[14] ope x.data_[14];                            \
00154       ret.data_[15] ope x.data_[15];                            \
00155       return(ret);                                              \
00156      }
00157    Vector_Vector_Operator(+=,+)
00158    Vector_Vector_Operator(-=,-)
00159    Vector_Vector_Operator(*=,*)
00160    Vector_Vector_Operator(/=,/)
00161 #undef Vector_Vector_Operator
00162 
00163 #define Vector_Scalar_Operator(ope,op)                          \
00164    inline TVector& operator ope (const DataType &v)             \
00165      {                                                          \
00166       data_[0] ope v;                                           \
00167       data_[1] ope v;                                           \
00168       data_[2] ope v;                                           \
00169       data_[3] ope v;                                           \
00170       data_[4] ope v;                                           \
00171       data_[5] ope v;                                           \
00172       data_[6] ope v;                                           \
00173       data_[7] ope v;                                           \
00174       data_[8] ope v;                                           \
00175       data_[9] ope v;                                           \
00176       data_[10] ope v;                                          \
00177       data_[11] ope v;                                          \
00178       data_[12] ope v;                                          \
00179       data_[13] ope v;                                          \
00180       data_[14] ope v;                                          \
00181       data_[15] ope v;                                          \
00182       return(*this);                                            \
00183      }                                                          \
00184    inline TVector operator op (const DataType &v) const         \
00185      {                                                          \
00186       TVector ret(*this);                                       \
00187       ret.data_[0] ope v;                                       \
00188       ret.data_[1] ope v;                                       \
00189       ret.data_[2] ope v;                                       \
00190       ret.data_[3] ope v;                                       \
00191       ret.data_[4] ope v;                                       \
00192       ret.data_[5] ope v;                                       \
00193       ret.data_[6] ope v;                                       \
00194       ret.data_[7] ope v;                                       \
00195       ret.data_[8] ope v;                                       \
00196       ret.data_[9] ope v;                                       \
00197       ret.data_[10] ope v;                                      \
00198       ret.data_[11] ope v;                                      \
00199       ret.data_[12] ope v;                                      \
00200       ret.data_[13] ope v;                                      \
00201       ret.data_[14] ope v;                                      \
00202       ret.data_[15] ope v;                                      \
00203      return(ret);                                               \
00204      }
00205    Vector_Scalar_Operator(+=,+)
00206    Vector_Scalar_Operator(-=,-)
00207    Vector_Scalar_Operator(*=,*)
00208    Vector_Scalar_Operator(/=,/)
00209 #undef Vector_Scalar_Operator
00210 
00211    /* Define the negation operator */
00212    inline TVector operator - () const
00213      { 
00214        TVector ret;
00215        ret.data_[0] = -data_[0];
00216        ret.data_[1] = -data_[1];
00217        ret.data_[2] = -data_[2];
00218        ret.data_[3] = -data_[3];
00219        ret.data_[4] = -data_[4];
00220        ret.data_[5] = -data_[5];
00221        ret.data_[6] = -data_[6];
00222        ret.data_[7] = -data_[7];
00223        ret.data_[8] = -data_[8];
00224        ret.data_[9] = -data_[9];
00225        ret.data_[10] = -data_[10];
00226        ret.data_[11] = -data_[11];
00227        ret.data_[12] = -data_[12];
00228        ret.data_[13] = -data_[13];
00229        ret.data_[14] = -data_[14];
00230        ret.data_[15] = -data_[15];
00231        return(ret);
00232      }
00233 
00234 #define Vector_Vector_RelOperator(op)                           \
00235    inline int operator op (const TVector &x) const              \
00236      { return(                                                  \
00237                (data_[0] op x.data_[0])                         \
00238             && (data_[1] op x.data_[1])                         \
00239             && (data_[2] op x.data_[2])                         \
00240             && (data_[3] op x.data_[3])                         \
00241             && (data_[4] op x.data_[4])                         \
00242             && (data_[5] op x.data_[5])                         \
00243             && (data_[6] op x.data_[6])                         \
00244             && (data_[7] op x.data_[7])                         \
00245             && (data_[8] op x.data_[8])                         \
00246             && (data_[9] op x.data_[9])                         \
00247             && (data_[10] op x.data_[10])                       \
00248             && (data_[11] op x.data_[11])                       \
00249             && (data_[12] op x.data_[12])                       \
00250             && (data_[13] op x.data_[13])                       \
00251             && (data_[14] op x.data_[14])                       \
00252             && (data_[15] op x.data_[15])                       \
00253              ) ; }                     
00254 
00255    Vector_Vector_RelOperator(==)
00256    Vector_Vector_RelOperator(!=)
00257 #undef Vector_Vector_RelOperator
00258 
00259 #define Vector_Vector_RelOperator(op)                           \
00260    inline int operator op (const TVector &x) const              \
00261      { return(                                                  \
00262                (data_[0] op x.data_[0])                         \
00263             || (data_[1] op x.data_[1])                         \
00264             || (data_[2] op x.data_[2])                         \
00265             || (data_[3] op x.data_[3])                         \
00266             || (data_[4] op x.data_[4])                         \
00267             || (data_[5] op x.data_[5])                         \
00268             || (data_[6] op x.data_[6])                         \
00269             || (data_[7] op x.data_[7])                         \
00270             || (data_[8] op x.data_[8])                         \
00271             || (data_[9] op x.data_[9])                         \
00272             || (data_[10] op x.data_[10])                       \
00273             || (data_[11] op x.data_[11])                       \
00274             || (data_[12] op x.data_[12])                       \
00275             || (data_[13] op x.data_[13])                       \
00276             || (data_[14] op x.data_[14])                       \
00277             || (data_[15] op x.data_[15])                       \
00278              ) ; }                     
00279 
00280    Vector_Vector_RelOperator(>)
00281    Vector_Vector_RelOperator(<)
00282    Vector_Vector_RelOperator(>=)
00283    Vector_Vector_RelOperator(<=)
00284 #undef Vector_Vector_RelOperator
00285 
00286 #define Vector_Scalar_RelOperator(op)                           \
00287    inline int operator op (const DataType &v) const             \
00288      { return(                                                  \
00289                (data_[0] op v)                                  \
00290             && (data_[1] op v)                                  \
00291             && (data_[2] op v)                                  \
00292             && (data_[3] op v)                                  \
00293             && (data_[4] op v)                                  \
00294             && (data_[5] op v)                                  \
00295             && (data_[6] op v)                                  \
00296             && (data_[7] op v)                                  \
00297             && (data_[8] op v)                                  \
00298             && (data_[9] op v)                                  \
00299             && (data_[10] op v)                                 \
00300             && (data_[11] op v)                                 \
00301             && (data_[12] op v)                                 \
00302             && (data_[13] op v)                                 \
00303             && (data_[14] op v)                                 \
00304             && (data_[15] op v)                                 \
00305              ); }                     
00306 
00307    Vector_Scalar_RelOperator(==)
00308    Vector_Scalar_RelOperator(!=)
00309 #undef Vector_Scalar_RelOperator
00310 
00311 #define Vector_Scalar_RelOperator(op)                           \
00312    inline int operator op (const DataType &v) const             \
00313      { return(                                                  \
00314                (data_[0] op v)                                  \
00315             || (data_[1] op v)                                  \
00316             || (data_[2] op v)                                  \
00317             || (data_[3] op v)                                  \
00318             || (data_[4] op v)                                  \
00319             || (data_[5] op v)                                  \
00320             || (data_[6] op v)                                  \
00321             || (data_[7] op v)                                  \
00322             || (data_[8] op v)                                  \
00323             || (data_[9] op v)                                  \
00324             || (data_[10] op v)                                 \
00325             || (data_[11] op v)                                 \
00326             || (data_[12] op v)                                 \
00327             || (data_[13] op v)                                 \
00328             || (data_[14] op v)                                 \
00329             || (data_[15] op v)                                 \
00330               ); }                     
00331 
00332    Vector_Scalar_RelOperator(>)
00333    Vector_Scalar_RelOperator(<)
00334    Vector_Scalar_RelOperator(>=)
00335    Vector_Scalar_RelOperator(<=)
00336 #undef Vector_Scalar_RelOperator
00337 
00338    /* Define elementwise minimum and maximum functions for Vectors */
00339    inline void min(const TVector &x) { 
00340      data_[0] = (data_[0] < x.data_[0]) ? data_[0] : x.data_[0]; 
00341      data_[1] = (data_[1] < x.data_[1]) ? data_[1] : x.data_[1]; 
00342      data_[2] = (data_[2] < x.data_[2]) ? data_[2] : x.data_[2]; 
00343      data_[3] = (data_[3] < x.data_[3]) ? data_[3] : x.data_[3]; 
00344      data_[4] = (data_[4] < x.data_[4]) ? data_[4] : x.data_[4]; 
00345      data_[5] = (data_[5] < x.data_[5]) ? data_[5] : x.data_[5]; 
00346      data_[6] = (data_[6] < x.data_[6]) ? data_[6] : x.data_[6]; 
00347      data_[7] = (data_[7] < x.data_[7]) ? data_[7] : x.data_[7]; 
00348      data_[8] = (data_[8] < x.data_[8]) ? data_[8] : x.data_[8]; 
00349      data_[9] = (data_[9] < x.data_[9]) ? data_[9] : x.data_[9]; 
00350      data_[10] = (data_[10] < x.data_[10]) ? data_[10] : x.data_[10]; 
00351      data_[11] = (data_[11] < x.data_[11]) ? data_[11] : x.data_[11]; 
00352      data_[12] = (data_[12] < x.data_[12]) ? data_[12] : x.data_[12]; 
00353      data_[13] = (data_[13] < x.data_[13]) ? data_[13] : x.data_[13]; 
00354      data_[14] = (data_[14] < x.data_[14]) ? data_[14] : x.data_[14]; 
00355      data_[15] = (data_[15] < x.data_[15]) ? data_[15] : x.data_[15]; 
00356    }
00357    inline void max(const TVector &x) {
00358      data_[0] = (data_[0] > x.data_[0]) ? data_[0] : x.data_[0]; 
00359      data_[1] = (data_[1] > x.data_[1]) ? data_[1] : x.data_[1]; 
00360      data_[2] = (data_[2] > x.data_[2]) ? data_[2] : x.data_[2]; 
00361      data_[3] = (data_[3] > x.data_[3]) ? data_[3] : x.data_[3]; 
00362      data_[4] = (data_[4] > x.data_[4]) ? data_[4] : x.data_[4]; 
00363      data_[5] = (data_[5] > x.data_[5]) ? data_[5] : x.data_[5]; 
00364      data_[6] = (data_[6] > x.data_[6]) ? data_[6] : x.data_[6]; 
00365      data_[7] = (data_[7] > x.data_[7]) ? data_[7] : x.data_[7]; 
00366      data_[8] = (data_[8] > x.data_[8]) ? data_[8] : x.data_[8]; 
00367      data_[9] = (data_[9] > x.data_[9]) ? data_[9] : x.data_[9]; 
00368      data_[10] = (data_[10] > x.data_[10]) ? data_[10] : x.data_[10]; 
00369      data_[11] = (data_[11] > x.data_[11]) ? data_[11] : x.data_[11]; 
00370      data_[12] = (data_[12] > x.data_[12]) ? data_[12] : x.data_[12]; 
00371      data_[13] = (data_[13] > x.data_[13]) ? data_[13] : x.data_[13]; 
00372      data_[14] = (data_[14] > x.data_[14]) ? data_[14] : x.data_[14]; 
00373      data_[15] = (data_[15] > x.data_[15]) ? data_[15] : x.data_[15]; 
00374    }
00375 
00376    /* Define minimum and maximum of components */
00377    inline DataType mincomp() const { 
00378      DataType min;
00379      min = data_[0];
00380      if (data_[1] < min) min = data_[1]; 
00381      if (data_[2] < min) min = data_[2]; 
00382      if (data_[3] < min) min = data_[3]; 
00383      if (data_[4] < min) min = data_[4]; 
00384      if (data_[5] < min) min = data_[5]; 
00385      if (data_[6] < min) min = data_[6]; 
00386      if (data_[7] < min) min = data_[7]; 
00387      if (data_[8] < min) min = data_[8]; 
00388      if (data_[9] < min) min = data_[9]; 
00389      if (data_[10] < min) min = data_[10]; 
00390      if (data_[11] < min) min = data_[11]; 
00391      if (data_[12] < min) min = data_[12]; 
00392      if (data_[13] < min) min = data_[13]; 
00393      if (data_[14] < min) min = data_[14]; 
00394      if (data_[15] < min) min = data_[15]; 
00395      return min;
00396    }
00397    inline DataType maxcomp() const { 
00398      DataType max;
00399      max = data_[0];
00400      if (data_[1] > max) max = data_[1]; 
00401      if (data_[2] > max) max = data_[2]; 
00402      if (data_[3] > max) max = data_[3]; 
00403      if (data_[4] > max) max = data_[4]; 
00404      if (data_[5] > max) max = data_[5]; 
00405      if (data_[6] > max) max = data_[6]; 
00406      if (data_[7] > max) max = data_[7]; 
00407      if (data_[8] > max) max = data_[8]; 
00408      if (data_[9] > max) max = data_[9]; 
00409      if (data_[10] > max) max = data_[10]; 
00410      if (data_[11] > max) max = data_[11]; 
00411      if (data_[12] > max) max = data_[12]; 
00412      if (data_[13] > max) max = data_[13]; 
00413      if (data_[14] > max) max = data_[14]; 
00414      if (data_[15] > max) max = data_[15]; 
00415      return max;
00416    }
00417 
00418    inline double abs() const {
00419      DataType s = data_[0]*data_[0];
00420      s += data_[1]*data_[1]; 
00421      s += data_[2]*data_[2]; 
00422      s += data_[3]*data_[3]; 
00423      s += data_[4]*data_[4]; 
00424      s += data_[5]*data_[5]; 
00425      s += data_[6]*data_[6]; 
00426      s += data_[7]*data_[7]; 
00427      s += data_[8]*data_[8]; 
00428      s += data_[9]*data_[9];
00429      s += data_[10]*data_[10];
00430      s += data_[11]*data_[11];
00431      s += data_[12]*data_[12];
00432      s += data_[13]*data_[13];
00433      s += data_[14]*data_[14];
00434      s += data_[15]*data_[15];
00435      return (sqrt(double(s)));
00436    }
00437 
00438    inline TVector getmin(const TVector &x) const
00439      { TVector ret(*this); ret.min(x); return(ret); }
00440    inline TVector getmax(const TVector &x) const
00441      { TVector ret(*this); ret.max(x); return(ret); }
00442 
00443 public:
00444    DataType data_[16];
00445 };
00446 
00447 
00448 template <class DataType>
00449 inline ostream&  operator << (ostream& os, const Vector(16)<DataType> &v) {
00450   os << "(" 
00451      << v.data_[0] 
00452      << "," << v.data_[1] 
00453      << "," << v.data_[2] 
00454      << "," << v.data_[3] 
00455      << "," << v.data_[4] 
00456      << "," << v.data_[5] 
00457      << "," << v.data_[6] 
00458      << "," << v.data_[7] 
00459      << "," << v.data_[8] 
00460      << "," << v.data_[9] 
00461      << "," << v.data_[10] 
00462      << "," << v.data_[11] 
00463      << "," << v.data_[12] 
00464      << "," << v.data_[13] 
00465      << "," << v.data_[14] 
00466      << "," << v.data_[15] 
00467      << ")";
00468   return os;
00469 }
00470 
00471 template <class DataType>
00472 inline Vector(16)<DataType> Min(const Vector(16)<DataType> &x, 
00473                                    const Vector(16)<DataType> &y) 
00474   { Vector(16)<DataType> ret(x); ret.min(y); return(ret); }
00475 
00476 template <class DataType>
00477 inline Vector(16)<DataType> Max(const Vector(16)<DataType> &x, 
00478                                    const Vector(16)<DataType> &y) 
00479   { Vector(16)<DataType> ret(x); ret.max(y); return(ret); }
00480 
00481 template <class DataType>
00482 inline double abs(const Vector(16)<DataType> &x) 
00483   { return (x.abs()); }
00484 
00485 template <class DataType>
00486 inline DataType mincomp(const Vector(16)<DataType> &x) 
00487   { return(x.mincomp()); }
00488 
00489 template <class DataType>
00490 inline DataType maxcomp(const Vector(16)<DataType> &x) 
00491   { return(x.maxcomp()); }
00492 
00493 
00494 #define Global_Vector_Scalar_Operator(op)                                  \
00495 template <class DataType>                                                  \
00496 inline Vector(16)<DataType> operator op (const DataType &v,                 \
00497    const Vector(16)<DataType> &x)                                           \
00498    { return(x op v); }
00499 
00500 Global_Vector_Scalar_Operator(+)
00501 Global_Vector_Scalar_Operator(-)
00502 Global_Vector_Scalar_Operator(*)
00503 Global_Vector_Scalar_Operator(/)
00504 #undef Global_Vector_Scalar_Operator
00505 
00506 
00507 #define Global_Vector_Function(fct)                                       \
00508 template <class DataType>                                                 \
00509 inline Vector(16)<DataType> fct(const Vector(16)<DataType> &x)              \
00510    {                                                                      \
00511       Vector(16)<DataType> ret;                                            \
00512       ret[0] = fct(x[0]);                                                 \
00513       ret[1] = fct(x[1]);                                                 \
00514       ret[2] = fct(x[2]);                                                 \
00515       ret[3] = fct(x[3]);                                                 \
00516       ret[4] = fct(x[4]);                                                 \
00517       ret[5] = fct(x[5]);                                                 \
00518       ret[6] = fct(x[6]);                                                 \
00519       ret[7] = fct(x[7]);                                                 \
00520       ret[8] = fct(x[8]);                                                 \
00521       ret[9] = fct(x[9]);                                                 \
00522       ret[10] = fct(x[10]);                                               \
00523       ret[11] = fct(x[11]);                                               \
00524       ret[12] = fct(x[12]);                                               \
00525       ret[13] = fct(x[13]);                                               \
00526       ret[14] = fct(x[14]);                                               \
00527       ret[15] = fct(x[15]);                                               \
00528       return(ret);                                                        \
00529      }
00530 
00531 Global_Vector_Function(fabs)
00532 Global_Vector_Function(sqrt)
00533 #undef Global_Vector_Function
00534 
00535 
00536 #define Vector_Vector_Functions(NameTo,NameFrom,ope)                      \
00537   template <class DataType, class VectorType>                             \
00538   inline void NameTo (Vector(16)<DataType> &x, const VectorType &y)        \
00539     {                                                                     \
00540       x(0) ope y(0);                                                      \
00541       x(1) ope y(1);                                                      \
00542       x(2) ope y(2);                                                      \
00543       x(3) ope y(3);                                                      \
00544       x(4) ope y(4);                                                      \
00545       x(5) ope y(5);                                                      \
00546       x(6) ope y(6);                                                      \
00547       x(7) ope y(7);                                                      \
00548       x(8) ope y(8);                                                      \
00549       x(9) ope y(9);                                                      \
00550       x(10) ope y(10);                                                    \
00551       x(11) ope y(11);                                                    \
00552       x(12) ope y(12);                                                    \
00553       x(13) ope y(13);                                                    \
00554       x(14) ope y(14);                                                    \
00555       x(15) ope y(15);                                                    \
00556     }                                                                     \
00557   template <class DataType, class VectorType>                             \
00558   inline void NameFrom (VectorType &x, const Vector(16)<DataType> &y)      \
00559     {                                                                     \
00560       x(0) ope y(0);                                                      \
00561       x(1) ope y(1);                                                      \
00562       x(2) ope y(2);                                                      \
00563       x(3) ope y(3);                                                      \
00564       x(4) ope y(4);                                                      \
00565       x(5) ope y(5);                                                      \
00566       x(6) ope y(6);                                                      \
00567       x(7) ope y(7);                                                      \
00568       x(8) ope y(8);                                                      \
00569       x(9) ope y(9);                                                      \
00570       x(10) ope y(10);                                                    \
00571       x(11) ope y(11);                                                    \
00572       x(12) ope y(12);                                                    \
00573       x(13) ope y(13);                                                    \
00574       x(14) ope y(14);                                                    \
00575       x(15) ope y(15);                                                    \
00576     }
00577 
00578    Vector_Vector_Functions(equals_to,equals_from,=)
00579    Vector_Vector_Functions(plus_to,plus_from,+=)
00580    Vector_Vector_Functions(minus_to,minus_from,-=)
00581    Vector_Vector_Functions(multiply_to,multiply_from,*=)
00582    Vector_Vector_Functions(divide_to,divide_from,/=)
00583 #undef Vector_Vector_Functions
00584 
00585 
00586 #endif


Quickstart     Users Guide     Programmers Reference     Installation      Examples     Download



AMROC Main      Home      Contact
last update: 06/01/04