00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 #include <itpp/itbase.h>
00013 
00014 #ifndef ITEX_H
00015 #define ITEX_H
00016 
00017 using std::cout;
00018 using std::endl;
00019 
00020 namespace itpp {
00021 Array<int> to_Arr ( const ivec &indices );
00022 ivec linspace ( int from, int to );
00023 
00024 vec get_vec ( const vec &v, const ivec &indexlist );
00025 
00026 bvec operator& ( const bvec &a, const bvec &b );
00027 bvec operator| ( const bvec &a, const bvec &b );
00028 
00029 bvec operator> ( const vec &t1, const vec &t2 );
00030 
00031 bvec operator< ( const vec &t1, const vec &t2 );
00032 
00033 
00034 
00035 
00036 void set_subvector ( vec &ov, const ivec &iv, const vec &v );
00037 
00038 template<class Num_T> inline
00039 void set_col_part ( mat &M, int c, const Vec<Num_T> &v ) {
00040         copy_vector ( v.size(), v._data(), M._data() + c*M.rows() );
00041 }
00042 
00043 const double inf = std::numeric_limits<double>::infinity();
00044 
00045 #if 0
00046 
00050 class Gamma_RNG {
00051 public:
00053         Gamma_RNG ( double a = 1.0, double b = 1.0 );
00055         void setup ( double a0, double b0 ) {
00056                 alpha = a0;
00057                 beta = b0;
00058         }
00060         double get_setup() const;
00062         double operator() () {
00063                 return sample();
00064         }
00066         vec operator() ( int n );
00068         mat operator() ( int h, int w );
00069 protected:
00070 private:
00072         double sample();
00074         double alpha;
00076         double beta;
00078         Random_Generator RNG;
00079         Normal_RNG NRNG;
00081         inline double exp_rand() {
00082                 return -std::log ( RNG.random_01() );
00083         }
00084         inline double unif_rand() {
00085                 return RNG.random_01();
00086         }
00087         inline double norm_rand() {
00088                 return NRNG.sample();
00089         }
00090 
00091 };
00092 bool qr ( const mat &A, mat &R );
00093 #endif
00095 std::string num2str ( double d );
00096 
00098 std::string num2str ( int i );
00099 
00101 double psi ( double );
00102 
00104 void triu(mat &A);
00105 
00109 double randun();
00111 vec randun(int n);
00113 mat randun(int n, int m);
00114 
00116 ivec unique(const ivec &in);
00117 
00119 ivec unique_complement(const ivec &in, const ivec &base);
00120 }
00121 
00122 
00123 #endif //ITEX_H