FLA_Trsv_external.c File Reference

(r)


Functions

FLA_Error FLA_Trsv_external (FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
void FLA_F2C() fla_trsv_external_f (F_INT *uplo, F_INT *transa, F_INT *diag, F_INT *A, F_INT *x, F_INT *IERROR)
FLA_Error FLA_Trsv_lc_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x)
FLA_Error FLA_Trsv_ln_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x)
FLA_Error FLA_Trsv_lt_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x)
FLA_Error FLA_Trsv_uc_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x)
FLA_Error FLA_Trsv_un_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x)
FLA_Error FLA_Trsv_ut_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x)

Function Documentation

FLA_Error FLA_Trsv_external ( FLA_Uplo  uplo,
FLA_Trans  transa,
FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References cblas_ctrsv(), cblas_dtrsv(), cblas_strsv(), cblas_ztrsv(), CblasColMajor, ctrsv(), dtrsv(), FLA_Check_error_level(), FLA_Copyt_external(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Param_map_to_blas_diag(), FLA_Param_map_to_blas_trans(), FLA_Param_map_to_blas_uplo(), FLA_Trsv_check(), strsv(), and ztrsv().

Referenced by FLA_Chol_l_unb_var1(), FLA_Chol_u_unb_var1(), FLA_LU_nopiv_unb_var1(), FLA_LU_nopiv_unb_var2(), FLA_LU_nopiv_unb_var3(), FLA_LU_piv_unb_var3(), FLA_LU_piv_unb_var3b(), FLA_Trinv_l_unb_var2(), FLA_Trinv_l_unb_var4(), FLA_Trinv_u_unb_var2(), FLA_Trinv_u_unb_var4(), FLA_Trsm_llh_unb_var3(), FLA_Trsm_llh_unb_var4(), FLA_Trsm_lln_unb_var3(), FLA_Trsm_lln_unb_var4(), FLA_Trsm_llt_unb_var3(), FLA_Trsm_llt_unb_var4(), FLA_Trsm_luh_unb_var3(), FLA_Trsm_luh_unb_var4(), FLA_Trsm_lun_unb_var3(), FLA_Trsm_lun_unb_var4(), FLA_Trsm_lut_unb_var3(), FLA_Trsm_lut_unb_var4(), FLA_Trsm_rlh_unb_var3(), FLA_Trsm_rlh_unb_var4(), FLA_Trsm_rln_unb_var3(), FLA_Trsm_rln_unb_var4(), FLA_Trsm_rlt_unb_var3(), FLA_Trsm_rlt_unb_var4(), FLA_Trsm_ruh_unb_var3(), FLA_Trsm_ruh_unb_var4(), FLA_Trsm_run_unb_var3(), FLA_Trsm_run_unb_var4(), FLA_Trsm_rut_unb_var3(), FLA_Trsm_rut_unb_var4(), FLA_Trsv(), fla_trsv_external_f(), FLA_Trsv_lc_external(), FLA_Trsv_lc_task(), FLA_Trsv_ln_external(), FLA_Trsv_ln_task(), FLA_Trsv_lt_external(), FLA_Trsv_lt_task(), FLA_Trsv_task(), FLA_Trsv_uc_external(), FLA_Trsv_uc_task(), FLA_Trsv_un_external(), FLA_Trsv_un_task(), FLA_Trsv_ut_external(), FLA_Trsv_ut_task(), FLA_Trsvsx_external(), and FLASH_FS_incpiv_aux1().

00036 {
00037   FLA_Datatype datatype;
00038   int          m_A, ldim_A;
00039   int          m_x, ldim_x, inc_x;
00040 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00041   CBLAS_ORDER     cblas_order = CblasColMajor;
00042   CBLAS_UPLO      blas_uplo;   
00043   CBLAS_TRANSPOSE blas_transa;
00044   CBLAS_DIAG      blas_diag;
00045 #else
00046   char         blas_uplo;
00047   char         blas_transa;
00048   char         blas_diag; 
00049 #endif
00050   FLA_Obj      x_copy;
00051   FLA_Trans    transa_copy;
00052 
00053   if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 
00054     FLA_Trsv_check( uplo, transa, diag, A, x );
00055 
00056   if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
00057 
00058   datatype = FLA_Obj_datatype( A );
00059 
00060   m_A      = FLA_Obj_length( A );
00061   ldim_A   = FLA_Obj_ldim( A );
00062 
00063   m_x      = FLA_Obj_length( x );
00064   ldim_x   = FLA_Obj_ldim( x );
00065 
00066   inc_x    = ( m_x == 1 ? ldim_x : 1 );
00067 
00068   if ( transa == FLA_CONJ_NO_TRANSPOSE )
00069   {
00070     FLA_Obj_create_conf_to( FLA_NO_TRANSPOSE, x, &x_copy );
00071     FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, x, x_copy );
00072     transa_copy = FLA_NO_TRANSPOSE;
00073 
00074     m_x      = FLA_Obj_length( x_copy );
00075     ldim_x   = FLA_Obj_ldim( x_copy );
00076     inc_x    = ( m_x == 1 ? ldim_x : 1 );
00077   }
00078   else
00079   {
00080     x_copy      = x;
00081     transa_copy = transa;
00082   }
00083 
00084   FLA_Param_map_to_blas_uplo( uplo, &blas_uplo );
00085   FLA_Param_map_to_blas_trans( transa_copy, &blas_transa );
00086   FLA_Param_map_to_blas_diag( diag, &blas_diag );
00087 
00088 
00089   switch( datatype ){
00090 
00091   case FLA_FLOAT:
00092   {
00093     float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
00094     float *buff_x = ( float * ) FLA_FLOAT_PTR( x );
00095 
00096 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00097     cblas_strsv( cblas_order,
00098                  blas_uplo,
00099                  blas_transa,
00100                  blas_diag,
00101                  m_A,
00102                  buff_A, ldim_A,
00103                  buff_x, inc_x );
00104 #else
00105     FLA_C2F( strsv )( &blas_uplo,
00106                       &blas_transa,
00107                       &blas_diag,
00108                       &m_A,
00109                       buff_A, &ldim_A,
00110                       buff_x, &inc_x );
00111 #endif
00112     break;
00113   }
00114 
00115   case FLA_DOUBLE:
00116   {
00117     double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
00118     double *buff_x = ( double * ) FLA_DOUBLE_PTR( x );
00119 
00120 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00121     cblas_dtrsv( cblas_order,
00122                  blas_uplo,
00123                  blas_transa,
00124                  blas_diag,
00125                  m_A,
00126                  buff_A, ldim_A,
00127                  buff_x, inc_x );
00128 #else
00129     FLA_C2F( dtrsv )( &blas_uplo,
00130                       &blas_transa,
00131                       &blas_diag,
00132                       &m_A,
00133                       buff_A, &ldim_A,
00134                       buff_x, &inc_x );
00135 #endif
00136     break;
00137   }
00138 
00139   case FLA_COMPLEX:
00140   {
00141     scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
00142     scomplex *buff_x = ( scomplex * ) FLA_COMPLEX_PTR( x_copy );
00143 
00144 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00145     cblas_ctrsv( cblas_order,
00146                  blas_uplo,
00147                  blas_transa,
00148                  blas_diag,
00149                  m_A,
00150                  buff_A, ldim_A,
00151                  buff_x, inc_x );
00152 #else
00153     FLA_C2F( ctrsv )( &blas_uplo,
00154                       &blas_transa,
00155                       &blas_diag,
00156                       &m_A,
00157                       buff_A, &ldim_A,
00158                       buff_x, &inc_x );
00159 #endif
00160     break;
00161   }
00162 
00163   case FLA_DOUBLE_COMPLEX:
00164   {
00165     dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00166     dcomplex *buff_x = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( x_copy );
00167 
00168 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00169     cblas_ztrsv( cblas_order,
00170                  blas_uplo,
00171                  blas_transa,
00172                  blas_diag,
00173                  m_A,
00174                  buff_A, ldim_A,
00175                  buff_x, inc_x );
00176 #else
00177     FLA_C2F( ztrsv )( &blas_uplo,
00178                       &blas_transa,
00179                       &blas_diag,
00180                       &m_A,
00181                       buff_A, &ldim_A,
00182                       buff_x, &inc_x );
00183 #endif
00184     break;
00185   }
00186 
00187   }
00188 
00189   if ( transa == FLA_CONJ_NO_TRANSPOSE )
00190   {
00191     FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, x_copy, x );
00192     FLA_Obj_free( &x_copy );
00193   }
00194   
00195   return FLA_SUCCESS;
00196 }

void FLA_F2C() fla_trsv_external_f ( F_INT *  uplo,
F_INT *  transa,
F_INT *  diag,
F_INT *  A,
F_INT *  x,
F_INT *  IERROR 
)

References FLA_Trsv_external().

00200 {
00201   *IERROR = FLA_Trsv_external( *( ( FLA_Uplo  * ) uplo   ), 
00202                                *( ( FLA_Trans * ) transa ),
00203                                *( ( FLA_Diag  * ) diag   ),
00204                                *( ( FLA_Obj   * ) A      ),
00205                                *( ( FLA_Obj   * ) x      ) );
00206 }

FLA_Error FLA_Trsv_lc_external ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References FLA_Trsv_external().

00209 {
00210   return FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, diag, A, x );
00211 }

FLA_Error FLA_Trsv_ln_external ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References FLA_Trsv_external().

00214 {
00215   return FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, diag, A, x );
00216 }

FLA_Error FLA_Trsv_lt_external ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References FLA_Trsv_external().

00219 {
00220   return FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, diag, A, x );
00221 }

FLA_Error FLA_Trsv_uc_external ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References FLA_Trsv_external().

00224 {
00225   return FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, diag, A, x );
00226 }

FLA_Error FLA_Trsv_un_external ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References FLA_Trsv_external().

00229 {
00230   return FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, diag, A, x );
00231 }

FLA_Error FLA_Trsv_ut_external ( FLA_Diag  diag,
FLA_Obj  A,
FLA_Obj  x 
)

References FLA_Trsv_external().

00234 {
00235   return FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, diag, A, x );
00236 }


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