Changeset 1223 for library

Show
Ignore:
Timestamp:
10/21/10 18:24:36 (14 years ago)
Author:
vahalam
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/design/lq_ctrl.h

    r1221 r1223  
    1414         
    1515        int mbcol = _mB.cols();  
    16         int totsize = utsize + mbcol; 
    17         int sqs = utsize*utsize; 
    1816        int i, j, k;     
    1917         
    2018        double pvt;      
    21         double tmp[utsize*totsize]; 
    2219        double *utA = _utA._data(); 
    2320        double *mB = _mB._data(); 
     
    2724        double *mC = _mC._data(); 
    2825         
    29         //fill tmp array 
    30         for(i = 0; i < sqs; i++)  
    31                 tmp[i] = utA[i]; 
    32         for(i = sqs; i < utsize*totsize; i++)                            
    33                 tmp[i] = mB[i-sqs];                  
     26        //copy data      
     27        for(i = 0; i < utsize*mbcol; i++)  
     28                mC[i] = mB[i];   
    3429                    
    3530        for(i = utsize-1; i >= 0; i--){  //Gauss elimination 
    36                 pvt = tmp[i + utsize*i];    //get pivot  
    37                 for(j = utsize; j < totsize; j++) tmp[i + utsize*j] /= pvt;     //normalize row - only part on the right                                    
     31                pvt = utA[i + utsize*i];    //get pivot  
     32                for(j = 0; j < mbcol; j++) mC[i + utsize*j] /= pvt;     //normalize row - only part on the right                                    
    3833                for(j = 0;j < i; j++){ //subtract normalized row from above ones 
    39                         pvt = tmp[j + utsize*i]; //get pivot 
    40                         for(k = utsize; k < totsize; k++) //goes from utsize - do not need make matrix on the left = I   
    41                                 tmp[j + utsize*k] -= pvt * tmp[i + utsize*k]; //create zero col above                                              
     34                        pvt = utA[j + utsize*i]; //get pivot 
     35                        for(k = 0; k < mbcol; k++) //goes from utsize - do not need make matrix on the left = I  
     36                                mC[j + utsize*k] -= pvt * mC[i + utsize*k]; //create zero col above                                        
    4237                } 
    4338                                                                                   
    44         }     
    45                      
    46         for(i = 0; i < utsize*mbcol; i++) 
    47                 mC[i] = tmp[i+sqs];              
     39        }                        
    4840         
    4941        return true;