FLA_Ger_external.c File Reference

(r)


Functions

FLA_Error FLA_Ger_external (FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
void FLA_F2C() fla_ger_external_f (F_INT *alpha, F_INT *x, F_INT *y, F_INT *A, F_INT *IERROR)

Function Documentation

FLA_Error FLA_Ger_external ( FLA_Obj  alpha,
FLA_Obj  x,
FLA_Obj  y,
FLA_Obj  A 
)

References cblas_cgeru(), cblas_dger(), cblas_sger(), cblas_zgeru(), CblasColMajor, cgeru(), dger(), FLA_Check_error_level(), FLA_Ger_check(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Obj_width(), sger(), and zgeru().

Referenced by FLA_Apply_househ2_UT(), FLA_Gemm_nn_unb_var5(), FLA_Gemm_nn_unb_var6(), FLA_Gemm_nt_unb_var5(), FLA_Gemm_nt_unb_var6(), FLA_Gemm_th_unb_var5(), FLA_Gemm_th_unb_var6(), FLA_Gemm_tn_unb_var5(), FLA_Gemm_tn_unb_var6(), FLA_Gemm_tt_unb_var5(), FLA_Gemm_tt_unb_var6(), FLA_Ger(), fla_ger_external_f(), FLA_Hemm_ll_unb_var3(), FLA_Hemm_ll_unb_var4(), FLA_Hemm_ll_unb_var5(), FLA_Hemm_ll_unb_var8(), FLA_Hemm_lu_unb_var1(), FLA_Hemm_lu_unb_var4(), FLA_Hemm_lu_unb_var7(), FLA_Hemm_lu_unb_var8(), FLA_Hemm_rl_unb_var1(), FLA_Hemm_rl_unb_var4(), FLA_Hemm_rl_unb_var7(), FLA_Hemm_rl_unb_var8(), FLA_Hemm_ru_unb_var3(), FLA_Hemm_ru_unb_var4(), FLA_Hemm_ru_unb_var5(), FLA_Hemm_ru_unb_var8(), FLA_LU_nopiv_unb_var5(), FLA_LU_piv_unb_var5(), FLA_Symm_ll_unb_var1(), FLA_Symm_ll_unb_var3(), FLA_Symm_ll_unb_var4(), FLA_Symm_ll_unb_var5(), FLA_Symm_ll_unb_var7(), FLA_Symm_ll_unb_var8(), FLA_Symm_lu_unb_var1(), FLA_Symm_lu_unb_var3(), FLA_Symm_lu_unb_var4(), FLA_Symm_lu_unb_var5(), FLA_Symm_lu_unb_var7(), FLA_Symm_lu_unb_var8(), FLA_Symm_rl_unb_var1(), FLA_Symm_rl_unb_var4(), FLA_Symm_rl_unb_var7(), FLA_Symm_rl_unb_var8(), FLA_Symm_ru_unb_var3(), FLA_Symm_ru_unb_var4(), FLA_Symm_ru_unb_var5(), FLA_Symm_ru_unb_var8(), FLA_Trinv_l_unb_var3(), FLA_Trinv_l_unb_var4(), FLA_Trinv_u_unb_var3(), FLA_Trinv_u_unb_var4(), FLA_Trmm_lln_unb_var2(), FLA_Trmm_llt_unb_var2(), FLA_Trmm_lun_unb_var2(), FLA_Trmm_lut_unb_var2(), FLA_Trmm_rln_unb_var2(), FLA_Trmm_rlt_unb_var2(), FLA_Trmm_run_unb_var2(), FLA_Trmm_rut_unb_var2(), FLA_Trsm_lln_unb_var2(), FLA_Trsm_llt_unb_var2(), FLA_Trsm_lun_unb_var2(), FLA_Trsm_lut_unb_var2(), FLA_Trsm_rln_unb_var2(), FLA_Trsm_rlt_unb_var2(), FLA_Trsm_run_unb_var2(), and FLA_Trsm_rut_unb_var2().

00036 {
00037   FLA_Datatype datatype;
00038   int          m_A, n_A, ldim_A;
00039   int          m_x, ldim_x, inc_x;
00040   int          m_y, ldim_y, inc_y;
00041 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00042   CBLAS_ORDER     cblas_order = CblasColMajor;
00043 #endif
00044 
00045   if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 
00046     FLA_Ger_check( alpha, x, y, A );
00047 
00048   if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
00049 
00050   datatype = FLA_Obj_datatype( A );
00051 
00052   m_A      = FLA_Obj_length( A );
00053   n_A      = FLA_Obj_width( A );
00054   ldim_A   = FLA_Obj_ldim( A );
00055 
00056   m_x      = FLA_Obj_length( x );
00057   ldim_x   = FLA_Obj_ldim( x );
00058 
00059   m_y      = FLA_Obj_length( y );
00060   ldim_y   = FLA_Obj_ldim( y );
00061 
00062   inc_x    = ( m_x == 1 ? ldim_x : 1 );
00063   inc_y    = ( m_y == 1 ? ldim_y : 1 );
00064 
00065 
00066   switch( datatype ){
00067 
00068   case FLA_FLOAT:
00069   {
00070     float *buff_A     = ( float * ) FLA_FLOAT_PTR( A );
00071     float *buff_x     = ( float * ) FLA_FLOAT_PTR( x );
00072     float *buff_y     = ( float * ) FLA_FLOAT_PTR( y );
00073     float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
00074 
00075 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00076     cblas_sger( cblas_order,
00077                 m_A, n_A,
00078                 *buff_alpha,
00079                 buff_x, inc_x,
00080                 buff_y, inc_y,
00081                 buff_A, ldim_A ); 
00082 #else
00083     FLA_C2F( sger )( &m_A, &n_A,
00084                      buff_alpha,
00085                      buff_x, &inc_x,
00086                      buff_y, &inc_y,
00087                      buff_A, &ldim_A ); 
00088 #endif
00089     break;
00090   }
00091 
00092   case FLA_DOUBLE:
00093   {
00094     double *buff_A     = ( double * ) FLA_DOUBLE_PTR( A );
00095     double *buff_x     = ( double * ) FLA_DOUBLE_PTR( x );
00096     double *buff_y     = ( double * ) FLA_DOUBLE_PTR( y );
00097     double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
00098 
00099 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00100     cblas_dger( cblas_order,
00101                 m_A, n_A,
00102                 *buff_alpha,
00103                 buff_x, inc_x,
00104                 buff_y, inc_y,
00105                 buff_A, ldim_A ); 
00106 #else
00107     FLA_C2F( dger )( &m_A, &n_A,
00108                      buff_alpha,
00109                      buff_x, &inc_x,
00110                      buff_y, &inc_y,
00111                      buff_A, &ldim_A ); 
00112 #endif
00113     break;
00114   }
00115 
00116   case FLA_COMPLEX:
00117   {
00118     scomplex *buff_A     = ( scomplex * ) FLA_COMPLEX_PTR( A );
00119     scomplex *buff_x     = ( scomplex * ) FLA_COMPLEX_PTR( x );
00120     scomplex *buff_y     = ( scomplex * ) FLA_COMPLEX_PTR( y );
00121     scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
00122 
00123 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00124     cblas_cgeru( cblas_order,
00125                  m_A, n_A,
00126                  buff_alpha,
00127                  buff_x, inc_x,
00128                  buff_y, inc_y,
00129                  buff_A, ldim_A ); 
00130 #else
00131     FLA_C2F( cgeru )( &m_A, &n_A,
00132                       buff_alpha,
00133                       buff_x, &inc_x,
00134                       buff_y, &inc_y,
00135                       buff_A, &ldim_A ); 
00136 #endif
00137     break;
00138   }
00139 
00140   case FLA_DOUBLE_COMPLEX:
00141   {
00142     dcomplex *buff_A     = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00143     dcomplex *buff_x     = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( x );
00144     dcomplex *buff_y     = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( y );
00145     dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
00146 
00147 #ifdef FLA_ENABLE_CBLAS_INTERFACE
00148     cblas_zgeru( cblas_order,
00149                  m_A, n_A,
00150                  buff_alpha,
00151                  buff_x, inc_x,
00152                  buff_y, inc_y,
00153                  buff_A, ldim_A ); 
00154 #else
00155     FLA_C2F( zgeru )( &m_A, &n_A,
00156                       buff_alpha,
00157                       buff_x, &inc_x,
00158                       buff_y, &inc_y,
00159                       buff_A, &ldim_A ); 
00160 #endif
00161     break;
00162   }
00163 
00164   }
00165   
00166   return FLA_SUCCESS;
00167 }

void FLA_F2C() fla_ger_external_f ( F_INT *  alpha,
F_INT *  x,
F_INT *  y,
F_INT *  A,
F_INT *  IERROR 
)

References FLA_Ger_external().

00172 {
00173   *IERROR = FLA_Ger_external( *( ( FLA_Obj * ) alpha ),
00174                               *( ( FLA_Obj * ) x     ),
00175                               *( ( FLA_Obj * ) y     ),
00176                               *( ( FLA_Obj * ) A     ) );
00177 }


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