Changeset 783 for library

Show
Ignore:
Timestamp:
01/13/10 11:08:30 (14 years ago)
Author:
mido
Message:

mmix::validate corrected according the previous correction of emix::validate, but it does not pass through unit tests, where is the problem?

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/stat/emix.cpp

    r780 r783  
    1313 
    1414        dim = Coms ( 0 )->dimension(); 
    15         RV rv_tmp= Coms ( 0 )->_rv() ; 
    16         bool isnam=true; 
    17         for ( int i = 0; i < Coms.length(); i++ ) { 
     15        RV rv_tmp = Coms ( 0 )->_rv() ; 
     16        bool isnamed = Coms ( 0 )->isnamed(); 
     17        for ( int i = 1; i < Coms.length(); i++ ) { 
    1818                bdm_assert ( dim == ( Coms ( i )->dimension() ), "Component sizes do not match!" ); 
    19                 isnam &= Coms(i)->isnamed() & Coms(i)->_rv().equal(rv_tmp); 
    20         } 
    21         if (isnam) 
     19                isnamed &= Coms(i)->isnamed() & Coms(i)->_rv().equal(rv_tmp); 
     20        } 
     21        if (isnamed) 
    2222                set_rv ( rv_tmp);  
    2323} 
     
    334334        w = w / sum_w; 
    335335 
    336         int dim = Coms ( 0 )->dimension(); 
    337         int dimc = Coms ( 0 )->dimensionc(); 
     336 
     337        dim = Coms ( 0 )->dimension(); 
     338        dimc = Coms ( 0 )->dimensionc(); 
     339        RV rv_tmp = Coms ( 0 )->_rv(); 
     340        RV rvc_tmp = Coms ( 0 )->_rvc(); 
     341        bool isnamed = Coms ( 0 )->isnamed(); 
    338342        for ( int i = 1; i < Coms.length(); i++ ) { 
    339343                bdm_assert ( dim == ( Coms ( i )->dimension() ), "Component sizes do not match!" ); 
    340344                bdm_assert ( dimc == ( Coms ( i )->dimensionc() ), "Component sizes do not match!" ); 
    341                 bdm_assert ( Coms(i)->isnamed() , "An unnamed component is forbidden here!" ); 
    342         } 
    343  
    344         set_rv ( Coms ( 0 )->_rv() ); 
    345         set_rvc ( Coms ( 0 )->_rvc() ); 
     345                isnamed &= Coms(i)->isnamed() & Coms(i)->_rv().equal(rv_tmp) & Coms(i)->_rvc().equal(rvc_tmp); 
     346        } 
     347        if (isnamed) 
     348        { 
     349                set_rv ( rv_tmp ); 
     350                set_rvc ( rvc_tmp ); 
     351        } 
    346352} 
    347353