FLA_Symv_external.c File Reference

(r)


Functions

FLA_Error FLA_Symv_external (FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
void FLA_F2C() fla_symv_external_f (F_INT *uplo, F_INT *alpha, F_INT *A, F_INT *x, F_INT *beta, F_INT *y, F_INT *IERROR)

Function Documentation

FLA_Error FLA_Symv_external ( FLA_Uplo  uplo,
FLA_Obj  alpha,
FLA_Obj  A,
FLA_Obj  x,
FLA_Obj  beta,
FLA_Obj  y 
)

References cblas_dsymv(), cblas_ssymv(), CblasColMajor, dsymv(), FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Param_map_to_blas_uplo(), FLA_Symv_check(), and ssymv().

Referenced by FLA_Symm_ll_unb_var10(), FLA_Symm_ll_unb_var9(), FLA_Symm_lu_unb_var10(), FLA_Symm_lu_unb_var9(), FLA_Symm_rl_unb_var10(), FLA_Symm_rl_unb_var9(), FLA_Symm_ru_unb_var10(), FLA_Symm_ru_unb_var9(), FLA_Symv(), and fla_symv_external_f().

00036 {
00037   FLA_Datatype datatype;
00038   int          m_A, ldim_A;
00039   int          m_x, inc_x, ldim_x;
00040   int          m_y, inc_y, ldim_y;
00041 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00042   CBLAS_ORDER  cblas_order = CblasColMajor;
00043   CBLAS_UPLO   blas_uplo;   
00044 #else
00045   char         blas_uplo;
00046 #endif
00047 
00048   if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 
00049     FLA_Symv_check( uplo, alpha, A, x, beta, y );
00050 
00051   if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
00052 
00053   datatype = FLA_Obj_datatype( A );
00054 
00055   m_A      = FLA_Obj_length( A );
00056   ldim_A   = FLA_Obj_ldim( A );
00057 
00058   m_x      = FLA_Obj_length( x );
00059   ldim_x   = FLA_Obj_ldim( x );
00060 
00061   m_y      = FLA_Obj_length( y );
00062   ldim_y   = FLA_Obj_ldim( y );
00063 
00064   inc_x    = ( m_x == 1 ? ldim_x : 1 );
00065   inc_y    = ( m_y == 1 ? ldim_y : 1 );
00066 
00067   FLA_Param_map_to_blas_uplo( uplo, &blas_uplo );
00068 
00069 
00070   switch( datatype ){
00071  
00072   case FLA_FLOAT:
00073   {
00074     float *buff_A     = ( float * ) FLA_FLOAT_PTR( A );
00075     float *buff_x     = ( float * ) FLA_FLOAT_PTR( x );
00076     float *buff_y     = ( float * ) FLA_FLOAT_PTR( y );
00077     float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
00078     float *buff_beta  = ( float * ) FLA_FLOAT_PTR( beta );
00079 
00080 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00081     cblas_ssymv( cblas_order,
00082                  blas_uplo,
00083                  m_A,
00084                  *buff_alpha,
00085                  buff_A, ldim_A, 
00086                  buff_x, inc_x,
00087                  *buff_beta,
00088                  buff_y, inc_y );
00089 #else
00090     FLA_C2F( ssymv )( &blas_uplo,
00091                       &m_A,
00092                       buff_alpha,
00093                       buff_A, &ldim_A, 
00094                       buff_x, &inc_x,
00095                       buff_beta,
00096                       buff_y, &inc_y );
00097 #endif
00098     break;
00099   }
00100 
00101   case FLA_DOUBLE:
00102   {
00103     double *buff_A     = ( double * ) FLA_DOUBLE_PTR( A );
00104     double *buff_x     = ( double * ) FLA_DOUBLE_PTR( x );
00105     double *buff_y     = ( double * ) FLA_DOUBLE_PTR( y );
00106     double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
00107     double *buff_beta  = ( double * ) FLA_DOUBLE_PTR( beta );
00108 
00109 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00110     cblas_dsymv( cblas_order,
00111                  blas_uplo,
00112                  m_A,
00113                  *buff_alpha,
00114                  buff_A, ldim_A, 
00115                  buff_x, inc_x,
00116                  *buff_beta,
00117                  buff_y, inc_y );
00118 #else
00119     FLA_C2F( dsymv )( &blas_uplo,
00120                       &m_A,
00121                       buff_alpha,
00122                       buff_A, &ldim_A, 
00123                       buff_x, &inc_x,
00124                       buff_beta,
00125                       buff_y, &inc_y );
00126 #endif
00127     break;
00128   }
00129 
00130   }
00131   
00132   return FLA_SUCCESS;
00133 }

void FLA_F2C() fla_symv_external_f ( F_INT *  uplo,
F_INT *  alpha,
F_INT *  A,
F_INT *  x,
F_INT *  beta,
F_INT *  y,
F_INT *  IERROR 
)

References FLA_Symv_external().

00137 {
00138   *IERROR = FLA_Symv_external( *( ( FLA_Uplo * ) uplo  ), 
00139                                *( ( FLA_Obj  * ) alpha ),
00140                                *( ( FLA_Obj  * ) A     ),
00141                                *( ( FLA_Obj  * ) x     ),
00142                                *( ( FLA_Obj  * ) beta  ),
00143                                *( ( FLA_Obj  * ) y     ) );
00144 }


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