00001 
00013 #ifndef CHMAT_H
00014 #define CHMAT_H
00015 
00016 #include <itpp/itbase.h>
00017 #include "libDC.h"
00018 
00019 using namespace itpp;
00020 
00026 class chmat : public sqmat {
00027 protected:
00029         mat Ch;
00030 public:
00031 
00032         virtual void opupdt ( const vec &v, double w );
00033         virtual mat to_mat();
00034         virtual void mult_sym ( const mat &C );
00035         virtual void mult_sym_t ( const mat &C );
00036         virtual double logdet() const;
00037         virtual vec sqrt_mult ( const vec &v ) const;
00038         virtual double qform ( const vec &v ) const;
00039         virtual void clear();
00040         
00041         virtual void inv ( mat &Inv );
00042         virtual void inv ( chmat &Inv );
00043 
00045         virtual ~chmat() {};
00047         chmat ( const int dim0 ) : sqmat ( dim0 ),Ch ( dim0,dim0 ) {};
00049         chmat ( const mat &M ) : sqmat ( M.rows() ),Ch ( M.rows(),M.cols() ) {
00050                 mat Q;
00051                 it_assert_debug ( M.rows() ==M.cols(),"chmat:: input matrix must be square!" );
00052                 Ch=chol ( M );
00053         };
00055         mat & _Ch(){return Ch;}
00056 };
00057 
00058 
00059 
00062 
00064 
00065 
00066 #endif // CHMAT_H