FLA_Trsm_internal.c File Reference

(r)


Functions

FLA_Error FLA_Trsm_internal (FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)

Variables

fla_trsm_tflash_trsm_cntl_blas
fla_trsm_tflash_trsm_cntl_mm

Function Documentation

FLA_Error FLA_Trsm_internal ( FLA_Side  side,
FLA_Uplo  uplo,
FLA_Trans  transa,
FLA_Diag  diag,
FLA_Obj  alpha,
FLA_Obj  A,
FLA_Obj  B,
fla_trsm_t cntl 
)

References FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_Trsm_internal(), FLA_Trsm_internal_check(), FLA_Trsm_llh(), FLA_Trsm_lln(), FLA_Trsm_llt(), FLA_Trsm_luh(), FLA_Trsm_lun(), FLA_Trsm_lut(), FLA_Trsm_rlh(), FLA_Trsm_rln(), FLA_Trsm_rlt(), FLA_Trsm_ruh(), FLA_Trsm_run(), FLA_Trsm_rut(), and FLASH_Queue_get_enabled().

Referenced by FLA_Apply_Q_UT_lhc_blk_var1(), FLA_Apply_Q_UT_UD_lhc_blk_var1(), FLA_Chol_l_blk_var1(), FLA_Chol_l_blk_var2(), FLA_Chol_l_blk_var3(), FLA_Chol_u_blk_var1(), FLA_Chol_u_blk_var2(), FLA_Chol_u_blk_var3(), FLA_LU_nopiv_blk_var1(), FLA_LU_nopiv_blk_var2(), FLA_LU_nopiv_blk_var3(), FLA_LU_nopiv_blk_var4(), FLA_LU_nopiv_blk_var5(), FLA_LU_piv_blk_var3(), FLA_LU_piv_blk_var4(), FLA_LU_piv_blk_var5(), FLA_QR_UT_UD_blk_var1(), FLA_Trinv_l_blk_var1(), FLA_Trinv_l_blk_var2(), FLA_Trinv_l_blk_var3(), FLA_Trinv_l_blk_var4(), FLA_Trinv_u_blk_var1(), FLA_Trinv_u_blk_var2(), FLA_Trinv_u_blk_var3(), FLA_Trinv_u_blk_var4(), FLA_Trsm(), FLA_Trsm_internal(), FLA_Trsm_llh_blk_var1(), FLA_Trsm_llh_blk_var2(), FLA_Trsm_llh_blk_var3(), FLA_Trsm_llh_blk_var4(), FLA_Trsm_lln_blk_var1(), FLA_Trsm_lln_blk_var2(), FLA_Trsm_lln_blk_var3(), FLA_Trsm_lln_blk_var4(), FLA_Trsm_llt_blk_var1(), FLA_Trsm_llt_blk_var2(), FLA_Trsm_llt_blk_var3(), FLA_Trsm_llt_blk_var4(), FLA_Trsm_luh_blk_var1(), FLA_Trsm_luh_blk_var2(), FLA_Trsm_luh_blk_var3(), FLA_Trsm_luh_blk_var4(), FLA_Trsm_lun_blk_var1(), FLA_Trsm_lun_blk_var2(), FLA_Trsm_lun_blk_var3(), FLA_Trsm_lun_blk_var4(), FLA_Trsm_lut_blk_var1(), FLA_Trsm_lut_blk_var2(), FLA_Trsm_lut_blk_var3(), FLA_Trsm_lut_blk_var4(), FLA_Trsm_rlh_blk_var1(), FLA_Trsm_rlh_blk_var2(), FLA_Trsm_rlh_blk_var3(), FLA_Trsm_rlh_blk_var4(), FLA_Trsm_rln_blk_var1(), FLA_Trsm_rln_blk_var2(), FLA_Trsm_rln_blk_var3(), FLA_Trsm_rln_blk_var4(), FLA_Trsm_rlt_blk_var1(), FLA_Trsm_rlt_blk_var2(), FLA_Trsm_rlt_blk_var3(), FLA_Trsm_rlt_blk_var4(), FLA_Trsm_ruh_blk_var1(), FLA_Trsm_ruh_blk_var2(), FLA_Trsm_ruh_blk_var3(), FLA_Trsm_ruh_blk_var4(), FLA_Trsm_run_blk_var1(), FLA_Trsm_run_blk_var2(), FLA_Trsm_run_blk_var3(), FLA_Trsm_run_blk_var4(), FLA_Trsm_rut_blk_var1(), FLA_Trsm_rut_blk_var2(), FLA_Trsm_rut_blk_var3(), FLA_Trsm_rut_blk_var4(), and FLASH_Trsm().

00039 {
00040     FLA_Error r_val = FLA_SUCCESS;
00041 
00042     if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00043         FLA_Trsm_internal_check( side, uplo, transa, diag, alpha, A, B, cntl );
00044 
00045     if      ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00046               FLA_Obj_elemtype( A ) == FLA_MATRIX &&
00047               FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
00048     {
00049         // Recurse
00050         r_val = FLA_Trsm_internal( side,
00051                                    uplo,
00052                                    transa,
00053                                    diag,
00054                                    alpha,
00055                                    *FLASH_OBJ_PTR_AT( A ),
00056                                    *FLASH_OBJ_PTR_AT( B ),
00057                                    flash_trsm_cntl_mm );
00058     }
00059     else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00060               FLA_Obj_elemtype( A ) == FLA_SCALAR &&
00061               FLASH_Queue_get_enabled( ) )
00062     {
00063         // Enqueue
00064         ENQUEUE_FLASH_Trsm( side, uplo, transa, diag, alpha, A, B, cntl );
00065     }
00066     else
00067     {
00068         if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00069              FLA_Obj_elemtype( A ) == FLA_SCALAR &&
00070              !FLASH_Queue_get_enabled( ) )
00071         {
00072             // Execute leaf
00073             cntl = flash_trsm_cntl_blas;
00074         }
00075 
00076         // Parameter combinations
00077         if      ( side == FLA_LEFT )
00078         {
00079             if      ( uplo == FLA_LOWER_TRIANGULAR )
00080             {
00081                 if      ( transa == FLA_NO_TRANSPOSE )
00082                     r_val = FLA_Trsm_lln( diag, alpha, A, B, cntl );
00083                 else if ( transa == FLA_TRANSPOSE )
00084                     r_val = FLA_Trsm_llt( diag, alpha, A, B, cntl );
00085                 else if ( transa == FLA_CONJ_TRANSPOSE )
00086                     r_val = FLA_Trsm_llh( diag, alpha, A, B, cntl );
00087             }
00088             else if ( uplo == FLA_UPPER_TRIANGULAR )
00089             {
00090                 if      ( transa == FLA_NO_TRANSPOSE )
00091                     r_val = FLA_Trsm_lun( diag, alpha, A, B, cntl );
00092                 else if ( transa == FLA_TRANSPOSE )
00093                     r_val = FLA_Trsm_lut( diag, alpha, A, B, cntl );
00094                 else if ( transa == FLA_CONJ_TRANSPOSE )
00095                     r_val = FLA_Trsm_luh( diag, alpha, A, B, cntl );
00096             }
00097         }
00098         else if ( side == FLA_RIGHT )
00099         {
00100             if      ( uplo == FLA_LOWER_TRIANGULAR )
00101             {
00102                 if      ( transa == FLA_NO_TRANSPOSE )
00103                     r_val = FLA_Trsm_rln( diag, alpha, A, B, cntl );
00104                 else if ( transa == FLA_TRANSPOSE )
00105                     r_val = FLA_Trsm_rlt( diag, alpha, A, B, cntl );
00106                 else if ( transa == FLA_CONJ_TRANSPOSE )
00107                     r_val = FLA_Trsm_rlh( diag, alpha, A, B, cntl );
00108             }
00109             else if ( uplo == FLA_UPPER_TRIANGULAR )
00110             {
00111                 if      ( transa == FLA_NO_TRANSPOSE )
00112                     r_val = FLA_Trsm_run( diag, alpha, A, B, cntl );
00113                 else if ( transa == FLA_TRANSPOSE )
00114                     r_val = FLA_Trsm_rut( diag, alpha, A, B, cntl );
00115                 else if ( transa == FLA_CONJ_TRANSPOSE )
00116                     r_val = FLA_Trsm_ruh( diag, alpha, A, B, cntl );
00117             }
00118         }
00119     }
00120 
00121     return r_val;
00122 }


Variable Documentation


Generated on Mon Jul 6 05:45:56 2009 for libflame by  doxygen 1.5.9