00001
00020 #ifndef _NEWUTIL_H
00021
00022 #define _NEWUTIL_H 1
00023
00024 #include <queue>
00025
00026 using namespace std;
00027
00028 #define WANT_STREAM // include.h will get stream fns
00029 #define WANT_MATH // include.h will get math fns
00030 #define SETUP_C_SUBSCRIPTS
00031
00032 #define USING_DOUBLE
00033
00034 #include <realea/newmat/newmat.h>
00035 #include <realea/newmat/newmatap.h>
00036 #include <realea/newmat/newmatio.h>
00037 #include <realea/common/real.h>
00038
00039 #ifdef use_namespace
00040 using namespace NEWMAT;
00041 #endif
00042
00043 typedef Matrix MyMatrix;
00044 typedef ReturnMatrix MyReturnMatrix;
00045
00046 MyReturnMatrix sqrt(const MyMatrix &mat);
00047
00048 double sqrt(int x);
00049
00050 double norm(const MyMatrix &mat);
00051
00052 MyReturnMatrix eye(int N);
00053
00054 Real min(ColumnVector &mat);
00055 Real max(ColumnVector &mat);
00056
00057 double pow2(double x);
00058 double sqrt_double(double x);
00059 double log_double(double x);
00060
00061 MyReturnMatrix log(const MyMatrix &mat);
00062 double log(int x);
00066 Real mean(const ColumnVector &mat);
00067
00068 MyReturnMatrix pow(const ColumnVector &mat, double exp);
00069
00070 double pow2_double(double x);
00071
00072 MyReturnMatrix pow2(ColumnVector &weights);
00073 MyReturnMatrix pow2(RowVector &weights);
00074
00075 MyReturnMatrix log(const MyMatrix &mat);
00076
00077 MyReturnMatrix pow2_m(const MyMatrix &mat);
00078
00079 void set_sort_matrix(Matrix *mat);
00080
00081 bool sort_index_matrix(int i, int j);
00085 Real mean_diag(const DiagonalMatrix &mat);
00086
00091 Real median(const ColumnVector &mat);
00092 Real median(const RowVector &mat);
00093
00097 MyReturnMatrix DivVectors(ColumnVector &A, const ColumnVector &B);
00098
00104 MyReturnMatrix myprctile(RowVector &inar, int *perc, int nperc);
00105
00106 void copyRow(queue<Real> num, RowVector &row);
00107
00108 void copyColumn(DiagonalMatrix diag, ColumnVector &row);
00109 void copyFromColumn(ColumnVector &row, DiagonalMatrix &diag);
00110
00111 MyReturnMatrix DotVectors(ColumnVector &A, const ColumnVector &B);
00112
00113 MyReturnMatrix DivVectors(ColumnVector &A, const ColumnVector &B);
00114
00115 Real min_positive(queue<Real> num);
00116 Real min_positive(ColumnVector &num);
00117
00118
00119 void range(int min, int max, int *Rang);
00120
00124 void getColumns(Matrix &m, int *cols, int num, Matrix &result);
00125
00126 void checkDiag(Matrix &C, DiagonalMatrix &Diag);
00127
00128 void checkAxis(ColumnVector &xmean, Real ccov, Real cs, Real damps, int countiter, ColumnVector &sigma, Matrix &C, Matrix &BD);
00129
00137 void copyToColumn(Real vector, unsigned N, ColumnVector *column);
00138 void copyToColumn(vector<tReal> array, ColumnVector *column);
00139
00140 MyReturnMatrix DotDivide(const MyMatrix &elem1, const MyMatrix &elem2);
00141 #endif