- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

# itpp_ext.h

    00001 //
    00002 // C++ Interface: itpp_ext
    00003 //
    00004 // Description:
    00005 //
    00006 //
    00007 // Author: smidl <smidl@utia.cas.cz>, (C) 2008
    00008 //
    00009 // Copyright: See COPYING file that comes with this distribution
    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         // template<class Num_T>
    00034 // void set_subvector(vec &ov, ivec &iv, const Vec<Num_T> &v);
    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         {
    00041                 copy_vector(v.size(), v._data(), M._data() + c*M.rows());
    00042         }
    00043
    00044         const double inf =std::numeric_limits<double>::infinity();
    00045
    00046 //#if 0
    00051         class Gamma_RNG {
    00052                 public:
    00054                         Gamma_RNG ( double a=1.0, double b=1.0 );
    00056                         void setup ( double a0, double b0 ) { alpha=a0; beta=b0;}
    00058                         double get_setup() const;
    00060                         double operator() () { return sample(); }
    00062                         vec operator() ( int n );
    00064                         mat operator() ( int h, int w );
    00065                 protected:
    00066                 private:
    00068                         double sample();
    00070                         double alpha;
    00072                         double beta;
    00074                         Random_Generator RNG;
    00075                         Normal_RNG NRNG;
    00077                         inline double exp_rand() {return -std::log ( RNG.random_01() );}
    00078                         inline double unif_rand() {return RNG.random_01();}
    00079                         inline double norm_rand() {return NRNG.sample();}
    00080
    00081         };
    00082         bool qr ( const mat &A, mat &R );
    00083 //#endif
    00085         std::string num2str(double d);
    00086
    00088         std::string num2str(int i);
    00089
    00091         double psi(double);
    00092 }
    00093
    00094
    00095 #endif //ITEX_H