Show
Ignore:
Timestamp:
08/28/07 09:37:54 (1 year ago)
Author:
pernet
Message:

New implementation for ftrsm and ftrmm:
based on the multicascade algorithm (cf C Pernet pdf thesis), reducing the number of modular reduction for the updates.
Automatic generation of the code for each of the 48 variations.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • include/fflas-ffpack/fflas.h

    r36 r38  
    620620        class ftrmmRightLowerTransUnit; 
    621621 
    622 //      template<class Field> 
    623 //      static void ftrsmLeftUpNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    624 //                                      const size_t M, const size_t N, 
    625 //                                      const typename Field::Element alpha, 
    626 //                                      const typename Field::Element * A, const size_t lda, 
    627 //                                      typename Field::Element * B, const size_t ldb); 
    628          
    629 //      template<class Field> 
    630 //      static void ftrsmLeftUpTrans (const Field& F, const FFLAS_DIAG Diag,  
    631 //                                    const size_t M, const size_t N, 
    632 //                                    const typename Field::Element alpha, 
    633 //                                    const typename Field::Element * A, const size_t lda, 
    634 //                                    typename Field::Element * B, const size_t ldb); 
    635          
    636 //      template<class Field> 
    637 //      static void ftrsmLeftLowNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    638 //                                       const size_t M, const size_t N, 
    639 //                                       const typename Field::Element alpha, 
    640 //                                       typename Field::Element * A, const size_t lda, 
    641 //                                       typename Field::Element * B, const size_t ldb,  
    642 //                                       const size_t nmax); 
    643 //      template<class Element> 
    644 //      class callFtrsmLeftLowNoTrans; 
    645          
    646 //      template<class Element> 
    647 //      class callFtrsmRightUpNoTrans; 
    648          
    649 //      template<class Element> 
    650 //      class callFtrmmLeftUpNoTrans; 
    651          
    652 //      template<class Element> 
    653 //      class callFtrmmLeftUpTrans; 
    654  
    655 //      template<class Element> 
    656 //      class callFtrmmLeftLowNoTrans;           
    657  
    658 //      template<class Element> 
    659 //      class callFtrmmLeftLowTrans;             
    660  
    661 //      template<class Element> 
    662 //      class callFtrmmRightUpNoTrans;           
    663  
    664 //      template<class Element> 
    665 //      class callFtrmmRightUpTrans;             
    666  
    667 //      template<class Element> 
    668 //      class callFtrmmRightLowNoTrans;          
    669  
    670 //      template<class Element> 
    671 //      class callFtrmmRightLowTrans;            
    672          
    673 //      template<class Field> 
    674 //      static void ftrsmLeftLowTrans (const Field& F, const FFLAS_DIAG Diag,  
    675 //                                     const size_t M, const size_t N, 
    676 //                                     const typename Field::Element alpha, 
    677 //                                     const typename Field::Element * A, const size_t lda, 
    678 //                                     typename Field::Element * B, const size_t ldb); 
    679          
    680 //      template<class Field> 
    681 //      static void ftrsmRightUpNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    682 //                                       const size_t M, const size_t N, 
    683 //                                       const typename Field::Element alpha, 
    684 //                                       typename Field::Element * A, const size_t lda, 
    685 //                                       typename Field::Element * B, const size_t ldb, 
    686 //                                       const size_t nmax); 
    687          
    688 //      template<class Field> 
    689 //      static void ftrsmRightUpTrans (const Field& F, const FFLAS_DIAG Diag,  
    690 //                                     const size_t M, const size_t N, 
    691 //                                     const typename Field::Element alpha, 
    692 //                                     const typename Field::Element * A, const size_t lda, 
    693 //                                     typename Field::Element * B, const size_t ldb); 
    694  
    695 //      template<class Field> 
    696 //      static void ftrsmRightLowNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    697 //                                        const size_t M, const size_t N, 
    698 //                                        const typename Field::Element alpha, 
    699 //                                        const typename Field::Element * A, const size_t lda, 
    700 //                                        typename Field::Element * B, const size_t ldb); 
    701  
    702 //      template<class Field> 
    703 //      static void ftrsmRightLowTrans (const Field& F, const FFLAS_DIAG Diag,  
    704 //                                      const size_t M, const size_t N, 
    705 //                                      const typename Field::Element alpha, 
    706 //                                      const typename Field::Element * A, const size_t lda, 
    707 //                                      typename Field::Element * B, const size_t ldb); 
    708  
    709         // Specialized routines for ftrmm 
    710 //      template<class Field> 
    711 //      static void ftrmmLeftUpNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    712 //                                      const size_t M, const size_t N, 
    713 //                                      const typename Field::Element * A, const size_t lda, 
    714 //                                      typename Field::Element * B, const size_t ldb,  
    715 //                                      const size_t nmax); 
    716  
    717 //      template<class Field> 
    718 //      static void ftrmmLeftUpTrans (const Field& F, const FFLAS_DIAG Diag,  
    719 //                                    const size_t M, const size_t N, 
    720 //                                    const typename Field::Element * A, const size_t lda, 
    721 //                                    typename Field::Element * B, const size_t ldb, 
    722 //                                    const size_t nmax); 
    723  
    724 //      template<class Field> 
    725 //      static void ftrmmLeftLowNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    726 //                                       const size_t M, const size_t N, 
    727 //                                       const typename Field::Element * A, const size_t lda, 
    728 //                                       typename Field::Element * B, const size_t ldb,  
    729 //                                       const size_t nmax); 
    730  
    731 //      template<class Field> 
    732 //      static void ftrmmLeftLowTrans (const Field& F, const FFLAS_DIAG Diag,  
    733 //                                     const size_t M, const size_t N, 
    734 //                                     const typename Field::Element * A, const size_t lda, 
    735 //                                     typename Field::Element * B, const size_t ldb, 
    736 //                                     const size_t nmax); 
    737          
    738 //      template<class Field> 
    739 //      static void ftrmmRightUpNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    740 //                                       const size_t M, const size_t N, 
    741 //                                       const typename Field::Element * A, const size_t lda, 
    742 //                                       typename Field::Element * B, const size_t ldb,  
    743 //                                       const size_t nmax); 
    744  
    745 //      template<class Field> 
    746 //      static void ftrmmRightUpTrans (const Field& F, const FFLAS_DIAG Diag,  
    747 //                                     const size_t M, const size_t N, 
    748 //                                     const typename Field::Element * A, const size_t lda, 
    749 //                                     typename Field::Element * B, const size_t ldb,  
    750 //                                     const size_t nmax); 
    751  
    752 //      template<class Field> 
    753 //      static void ftrmmRightLowNoTrans (const Field& F, const FFLAS_DIAG Diag,  
    754 //                                        const size_t M, const size_t N, 
    755 //                                        const typename Field::Element * A, const size_t lda, 
    756 //                                        typename Field::Element * B, const size_t ldb, 
    757 //                                        const size_t nmax); 
    758 //      template<class Field> 
    759 //      static void ftrmmRightLowTrans (const Field& F, const FFLAS_DIAG Diag,  
    760 //                                      const size_t M, const size_t N, 
    761 //                                      const typename Field::Element * A, const size_t lda, 
    762 //                                      typename Field::Element * B, const size_t ldb,  
    763 //                                      const size_t nmax); 
    764622}; // class FFLAS 
    765623