Show
Ignore:
Timestamp:
07/28/09 15:31:57 (15 years ago)
Author:
smidl
Message:

missing functions in chmat - square_matrix test now passes for chmat

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/math/chmat.cpp

    r434 r437  
    1717mat chmat::to_mat() const {mat F=Ch.T() *Ch;return F;}; 
    1818void chmat::mult_sym ( const mat &C ) { 
    19         it_error ( "not implemented" ); 
     19        it_assert_debug(C.cols()==dim, "Wrong dimension of U"); 
     20        if(!qr(Ch*C.T(), Ch)) {it_warning("QR unstable in chmat mult_sym");} 
    2021}; 
    2122void chmat::mult_sym ( const mat &C , chmat &U ) const { 
    22         mat Z=C*Ch; 
    23         U.Ch= chol(Z*Z.T()); 
     23        it_assert_debug(C.cols()==U.dim, "Wrong dimension of U"); 
     24        if(!qr(Ch*C.T(), U.Ch)) {it_warning("QR unstable in chmat mult_sym");} 
    2425}; 
    2526void chmat::mult_sym_t ( const mat &C ) { 
    26         it_error ( "not implemented" ); 
     27        it_assert_debug(C.rows()==dim, "Wrong dimension of U"); 
     28        if(!qr(Ch*C, Ch)) {it_warning("QR unstable in chmat mult_sym");} 
    2729}; 
    2830void chmat::mult_sym_t ( const mat &C, chmat &U ) const { 
    29         it_error ( "not implemented" ); 
     31        it_assert_debug(C.rows()==U.dim, "Wrong dimension of U"); 
     32        if(!qr(Ch*C, U.Ch)) {it_warning("QR unstable in chmat mult_sym");} 
    3033}; 
    3134double chmat::logdet() const {