39 template <int I,typename T> inline std::ostream& operator<<(std::ostream &f,const Vec<I,T> &a) {
40 for (int i(0);i<I-1;++i)f<<a[i]<<' '; return f<<a[I-1];
43 template <int I,typename T> inline const Vec<I,T> & operator+=(Vec<I,T> &a,const Vec<I,T> &b){
44 for (int i(0);i<I;++i) a[i]+=b[i]; return a;
46 template <int I,typename T> inline const Vec<I,T> & operator-=(Vec<I,T> &a,const Vec<I,T> &b){
47 for (int i(0);i<I;++i) a[i]-=b[i]; return a;
49 template <int I,typename T> inline const int operator== (const Vec<I,T> &a,const Vec<I,T> &b) {
50 int c(1); for (int i(0);i<I;++i) c&=(a[i]==b[i]); return c;
52// template <int I,typename T> inline const Vec<I,T> operator/ (const Vec<I,T> &b,const T &a) {return (1./a)*b;}
55 template <int I,typename T> inline const T bvol (const Vec<I,T> &a) {T p(1); for (int i(0);i<I;++i) p*=a[i]; return p;}
57 template <int I,typename T,class IT> inline bool nonneg(const Vec<I,T,IT> &a) {
58 int c(1); for (int i(0);i<I;++i) c&=(a[i]>=0); return c;
62 template <int I,typename T> inline const Vec<I,T> operator+ (const Vec<I,T> &a,const Vec<I,T> &b) {
63 Vec<I,T> c; for (int i(0);i<I;++i) c[i]=a[i]+b[i]; return c;
65 template <int I,typename T> inline const Vec<I,T> operator- (const Vec<I,T> &a,const Vec<I,T> &b) {
66 Vec<I,T> c; for (int i(0);i<I;++i) c[i]=a[i]-b[i]; return c;
68 template <int I,typename T> inline const Vec<I,T> operator* (const T &a,const Vec<I,T> &b) {
69 Vec<I,T> c; for (int i(0);i<I;++i) c[i]=a*b[i]; return c;
71 template <int I,typename T> inline const T operator* (const Vec<I,T> &a,const Vec<I,T> &b) {
72 T c=0; for (int i(0);i<I;++i) c+=a[i]*b[i]; return c;
75// inline Vec<1,int> vceil(const Vec<1> &a) {return Vec<1,int>((int)ceil(a.x()));}
76// inline Vec<1,int> vfloor(const Vec<1> &a) {return Vec<1,int>((int)floor(a.x()));}
84 template <typename T> inline Vec<3,T> cast_min(const Vec<3,T> &a,const Vec<3,T> &b) {
85 return Vec<3,T>(min(a.x(),b.x()),min(a.y(),b.y()),min(a.z(),b.z()));
87 template <typename T> inline Vec<3,T> vabs(const Vec<3,T> &a) {
88 return Vec<3,T>(fabs(a.x()),fabs(a.y()),fabs(a.z()));
definition of class АVec<T>
Advanced Simulation Library.