Show
Ignore:
Timestamp:
06/19/07 10:08:48 (2 years ago)
Author:
pernet
Message:

* modular-balanced.h : fix a bug in init (double)

* ffpack_ludivine.inl : fix a big in the computation of Q, with Diag = FflasUnit?

* ffpack.h : debugged Echelon and RedEchelon?

Files:
1 modified

Legend:

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

    r21 r24  
    499499                if (R < Nup){ 
    500500                        // Permutation of the 0 rows 
    501                         for ( size_t i = Nup, j = R ; i < Nup + R2; ++i, ++j){ 
    502                                 fcopy( F, N - j, A + j*(lda + 1), 1, A + i*lda + j, 1); 
    503                                 for (typename Field::Element *Ai = A + i*lda + j; 
    504                                      Ai != A + i*lda + N; ++Ai) 
    505                                         F.assign (*Ai, zero); 
    506                                 size_t t = Q[j]; 
    507                                 Q[j]=Q[i]; 
    508                                 Q[i] = t; 
     501                        if (Diag == FflasNonUnit){ 
     502                                for ( size_t i = Nup, j = R ; i < Nup + R2; ++i, ++j){ 
     503                                        fcopy( F, N - j, A + j*(lda + 1), 1, A + i*lda + j, 1); 
     504                                        for (typename Field::Element *Ai = A + i*lda + j; 
     505                                             Ai != A + i*lda + N; ++Ai) 
     506                                                F.assign (*Ai, zero); 
     507                                        size_t t = Q[j]; 
     508                                        Q[j]=Q[i]; 
     509                                        Q[i] = t; 
     510                                } 
     511                        } else { 
     512                                for ( size_t i = Nup, j = R+1 ; i < Nup + R2; ++i, ++j){ 
     513                                        fcopy( F, N - j, A + (j-1)*lda + j, 1, A + i*lda + j, 1); 
     514                                        for (typename Field::Element *Ai = A + i*lda + j; 
     515                                             Ai != A + i*lda + N; ++Ai) 
     516                                                F.assign (*Ai, zero); 
     517                                        size_t t = Q[j-1]; 
     518                                        Q[j-1]=Q[i]; 
     519                                        Q[i] = t; 
     520                                } 
    509521                        } 
    510522                } 
     
    524536//--------------------------------------------------------------------- 
    525537 
    526 template <class Field> 
     538        template <class Field> 
    527539size_t 
    528540FFPACK::LUdivine_construct( const Field& F, const FFLAS_DIAG Diag,