Changeset 5

Show
Ignore:
Timestamp:
03/13/07 12:01:38 (2 years ago)
Author:
pernet
Message:

- ffpack_frobenius: Add a missing Las-Vegas Check in preconditionning

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • include/fflas-ffpack/ffpack_frobenius.inl

    r4 r5  
    8383                             << " degree sequence is not monotonically not increasing" 
    8484                             << std::endl; 
    85                         //exit (-1); 
    8685                        throw CharpolyFailed(); 
    8786                } 
     
    126125        for (size_t i=Mk-1; i>=nb_full_blocks+1;  --i) 
    127126                if (dK[i] >= 1){  
     127                        for (size_t j = offset+1; j<R; ++j) 
     128                                if (!F.isZero(*(K2b + i*ldk + j))){ 
     129                                        std::cerr<<"FAIL C != 0 in preconditionning"<<std::endl; 
     130                                        throw CharpolyFailed(); 
     131                                } 
    128132                        Polynomial P (dK [i]+1); 
    129133                        F.assign(P[dK[i]], one); 
     134                        cerr<<"Recovery in preconditionning P ="; 
    130135                        for (size_t j=0; j < dK [i]; ++j){ 
    131136                                F.neg (P [dK [i]-j-1], *(K2b + i*ldk + (offset-j))); 
     137                                cerr<<" "<<P[dK[i]-j-1]; 
    132138                        } 
     139                        cerr<<endl; 
    133140                        frobeniusForm.push_front(P); 
    134141                        offset -= dK [i]; 
     
    138145        Mk = Ma; 
    139146 
    140 //      for (size_t i= offset+1; i<oldNcurr; ++i) 
    141 //              for (size_t j=0; j<nb_full_blocks+1; ++j){ 
    142 //                      //              cerr<<"K + "<<i<<"*ldk + "<<j<<" = "<<(*(K+i*ldk+j))<<endl; 
    143 //                      if (!F.isZero( *(K2b+i*ldk+j) )){ 
    144 //                              std::cerr<<"FAIL C != 0 in preconditionning"<<std::endl; 
    145 //                              exit(-1); 
    146 //                      } 
    147 //              } 
    148          
    149147        if (R<N){ 
    150                  
    151148//              std::cerr<<"Preconditionning failed; missing rank = "<<N-R 
    152149//                       <<" completing the Krylov matrix"