00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef EXTRAVEC_H
00033 #define EXTRAVEC_H
00034
00035 #include "vec.h"
00036 #include "math.h"
00037 #include "general.h"
00038
00039 using namespace TNT;
00040
00041 namespace CLUS
00042 {
00043 template < class T>
00044 inline Vector<T>& GenerateRandomVector2(Vector<T>& vec)
00045 {
00046 for(Subscript i=0; i< vec.dim(); i++)
00047 vec[i]=RANDOM01FLOAT;
00048 return vec;
00049 }
00050
00051 template < class T >
00052 inline void Min(Vector<T>& vec, Subscript N, T* data)
00053 {
00054 for(Subscript i=0;i<N;i++)
00055 if (vec[i]>data[i])
00056 vec[i]=data[i];
00057 }
00058
00059 template < class T >
00060 inline void Max(Vector<T>& vec, Subscript N, T data[])
00061 {
00062 for(Subscript i=0;i<N;i++)
00063 if (vec[i]<data[i])
00064 vec[i]=data[i];
00065 }
00066
00067 template < class T >
00068 inline void Sum(Vector<T>& vec, Subscript N, T data[])
00069 {
00070 for(Subscript i=0;i<N;i++)
00071 vec[i]+=data[i];
00072 }
00073
00074 template < class T >
00075 inline void Dif(Vector<T>& vec, Subscript N, Vector<T>& data)
00076 {
00077 for(Subscript i=0;i<N;i++)
00078 vec[i]-=data[i];
00079 }
00080
00081
00082 template < class T >
00083 inline void SumPow2(Vector<T>& vec, Subscript N, T data[])
00084 {
00085 for(Subscript i=0;i<N;i++)
00086 vec[i]+=pow2(data[i]);
00087 }
00088
00089 template < class T >
00090 inline Vector<T>& operator*=(Vector<T>& vec, double mult)
00091 {
00092 for(Subscript i=0; i<vec.dim(); i++)
00093 vec[i]*=mult;
00094 return vec;
00095 }
00096
00097 template < class T >
00098 inline Vector<T>& SetNormTo(Vector<T>& vec, double norm)
00099 {
00100 double oldNorm=0.0;
00101 for(Subscript i=0; i<vec.dim(); i++)
00102 oldNorm+=pow2(vec[i]);
00103
00104 double adjust=sqrt(norm/oldNorm);
00105
00106 for(Subscript i=0; i<vec.dim(); i++)
00107 vec[i]*=adjust;
00108
00109 return vec;
00110 }
00111
00112 }
00113
00114 #endif // EXTRAVEC_H