Changeset 32

Show
Ignore:
Timestamp:
08/23/07 16:23:37 (1 year ago)
Author:
pernet
Message:

fix bug with alpha != 1

Files:
1 modified

Legend:

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

    r21 r32  
    3030 
    3131        size_t nmax = TRSMBound<Field> (F); 
    32  
     32        typename Field::Element one; 
     33        F.init(one, 1.0); 
     34         
    3335        if ( Side==FflasLeft ){ 
    3436                if ( Uplo==FflasUpper){ 
    3537                         
    3638                        if (TransA == FflasNoTrans){ 
    37                                 ftrsmLeftUpNoTrans(F,Diag,M,N,alpha,A,lda,B,ldb); 
     39                                ftrsmLeftUpNoTrans(F,Diag,M,N,one,A,lda,B,ldb); 
    3840                        } 
    3941                        else{ 
    40                                 ftrsmLeftUpTrans(F,Diag,M,N,alpha,A,lda,B,ldb); 
     42                                ftrsmLeftUpTrans(F,Diag,M,N,one,A,lda,B,ldb); 
    4143                        } 
    4244                } 
    4345                else{ 
    4446                        if (TransA == FflasNoTrans){ 
    45                                 ftrsmLeftLowNoTrans(F,Diag,M,N,alpha,A,lda,B,ldb, nmax); 
     47                                ftrsmLeftLowNoTrans(F,Diag,M,N,one,A,lda,B,ldb, nmax); 
    4648                        } 
    4749                        else{ 
    48                                 ftrsmLeftLowTrans(F,Diag,M,N,alpha,A,lda,B,ldb); 
     50                                ftrsmLeftLowTrans(F,Diag,M,N,one,A,lda,B,ldb); 
    4951                        } 
    5052                } 
     
    5355        if ( Uplo==FflasUpper){ 
    5456                        if (TransA == FflasNoTrans){ 
    55                                 ftrsmRightUpNoTrans(F,Diag,M,N,alpha,A,lda,B,ldb,nmax); 
     57                                ftrsmRightUpNoTrans(F,Diag,M,N,one,A,lda,B,ldb,nmax); 
    5658                        } 
    5759                        else{ 
    58                                 ftrsmRightUpTrans(F,Diag,M,N,alpha,A,lda,B,ldb); 
     60                                ftrsmRightUpTrans(F,Diag,M,N,one,A,lda,B,ldb); 
    5961                        } 
    6062                } 
    6163                else{ 
    6264                        if (TransA == FflasNoTrans){ 
    63                                 ftrsmRightLowNoTrans(F,Diag,M,N,alpha,A,lda,B,ldb); 
     65                                ftrsmRightLowNoTrans(F,Diag,M,N,one,A,lda,B,ldb); 
    6466                        } 
    6567                        else{ 
    66                                 ftrsmRightLowTrans(F,Diag,M,N,alpha,A,lda,B,ldb); 
    67                         } 
    68                 } 
    69         } 
     68                                ftrsmRightLowTrans(F,Diag,M,N,one,A,lda,B,ldb); 
     69                        } 
     70                } 
     71        } 
     72        if (!F.isOne(alpha)) 
     73                for (size_t i=0; i< M; ++i) 
     74                        for (size_t j=0; j<N; ++j) 
     75                                F.mulin(*(B+i*ldb+j),alpha); 
    7076         
    7177} 
     
    177183                         
    178184                        cblas_dtrsm(  CblasRowMajor, CblasLeft, CblasLower, CblasNoTrans, 
    179                                       CblasUnit, M, N, alpha, A, lda, B, ldb ); 
     185                                      CblasUnit, M, N, one, A, lda, B, ldb ); 
    180186                        for (size_t i=0; i< M; ++i) 
    181187                                for (size_t j=0; j<N; ++j) 
    182188                                        F.init(*(B+i*ldb+j),*(B+i*ldb+j)); 
     189                                         
    183190                         
    184191                        if (Diag == FflasNonUnit ){