00001 #ifndef __FloatVector_H__
00002 #define __FloatVector_H__
00003
00004
00005
00024 #include <stdio.h>
00025
00026 class FloatVectorT;
00027 class AFSymMatrix;
00028
00029 class FloatVector
00030 {
00031 private:
00032
00033 int dataSize;
00034 float* data;
00035
00036 float* data1;
00037
00038 public:
00039
00040 FloatVector(int size);
00041 FloatVector(int size, float adata);
00042 FloatVector(const FloatVector& v);
00043 FloatVector operator=(const FloatVector& v);
00044
00045 ~FloatVector(){ data=0; delete[] data1; }
00046
00047 FloatVectorT t();
00048
00049 FloatVector* sub(int start, int step, int end);
00050 FloatVector* copy();
00051
00052 inline int size(){ return dataSize; }
00053
00054 void load(FloatVector* v);
00055 void load(float coeff, FloatVector* v);
00056
00057 float* getData(){return data;}
00058
00059
00060 inline void set0(int index, float value){ data[index]= value; }
00061 inline float get0(int index){ return data[index]; }
00062
00063
00064 inline void set(int index, float value){ data1[index]= value; }
00065 inline float get(int index){ return data1[index]; }
00066
00067 void setAll(float value);
00068 void setAt(int p0, int n, float value);
00069
00070
00071 int indexArgMin();
00072 int indexArgMax();
00073 float argMin();
00074 float argMax();
00075
00076 float vT_v();
00077 float norme1();
00078 float norme2();
00079 float normeInf(){ return argMax(); }
00080 float sum();
00081
00082 float minimum();
00083 float maximum();
00084 float maxAbs();
00085 float mean(){ return sum()/dataSize; }
00086 float sigma();
00087
00088 void random(float minval=0.0, float maxval=1.0);
00089
00090
00091 float undividedDiff(int cellj, int order);
00092 float dividedDiff(int cellj, int order, float dx=1.0);
00093
00094
00095 FloatVector sqrt();
00096 FloatVector pow(float pow);
00097 FloatVector sqr();
00098 FloatVector exp();
00099 FloatVector log();
00100 FloatVector log(float base);
00101
00102 FloatVector sin();
00103 FloatVector cos();
00104 FloatVector tan();
00105
00106
00107 void operator+=(float value);
00108 void operator-=(float value);
00109 void operator*=(float value);
00110 void operator/=(float value);
00111
00112
00113 void operator+=(FloatVector& v);
00114 void operator-=(FloatVector& v);
00115 void operator*=(FloatVector& v);
00116 void operator/=(FloatVector& v);
00117
00118 void subst(float a);
00119 void mult(float a);
00120 void div(float a);
00121
00122
00123 void delta(FloatVector* v1, FloatVector* v);
00124 void subst(FloatVector* v);
00125 void add(float a);
00126 void add(FloatVector* v);
00127 void add(FloatVector* v, FloatVector* v1);
00128 void add(FloatVector* v, FloatVector* v1, FloatVector* v2);
00129 void add(float a, FloatVector* v);
00130 void add(float a, FloatVector* v, float b, FloatVector* w);
00131 void add(float a, FloatVector* v, float b, FloatVector* w,
00132 float c, FloatVector* z);
00133 void add(float a, float b, FloatVector* v);
00134 void add(float a, float b, FloatVector* v, float c, FloatVector* w);
00135
00136 void saxpy(float a, FloatVector* v);
00137
00138 void gaxpy(AFSymMatrix* A, FloatVector* v);
00139 void gaxpy(float a, AFSymMatrix* A, FloatVector* v);
00140 void gaxpy(float a, float b, AFSymMatrix* A, FloatVector* v);
00141 void gaxpy(float a, float b, AFSymMatrix* A, FloatVector* v,
00142 float c, FloatVector* w);
00143 void gaxpy(float a, float b, AFSymMatrix* A, FloatVector* v,
00144 float c, AFSymMatrix* B, FloatVector* w);
00145
00146 float prodScalar(FloatVector* v);
00147
00148
00149 friend float operator*(FloatVectorT& vt, FloatVector& u);
00150
00151 friend FloatVector operator+(FloatVector& v, float a);
00152 friend FloatVector operator+(float a, FloatVector& v);
00153 friend FloatVector operator-(FloatVector& v, float a);
00154 friend FloatVector operator-(float a, FloatVector& v);
00155 friend FloatVector operator*(FloatVector& v, float a);
00156 friend FloatVector operator*(float a, FloatVector& v);
00157 friend FloatVector operator/(FloatVector& v, float a);
00158
00159 friend FloatVector operator+(FloatVector& v1, FloatVector& v2);
00160 friend FloatVector operator-(FloatVector& v1, FloatVector& v2);
00161
00162 void output();
00163 void output(FILE* file);
00164 };
00165
00166 #endif
00167
00168
00169