FLA_Hess_blk_external.c File Reference

(r)


Functions

FLA_Error FLA_Hess_blk_external (FLA_Obj A, FLA_Obj t, int ilo, int ihi)
void FLA_F2C() fla_hess_blk_external_f (F_INT *A, F_INT *t, F_INT *ilo, F_INT *ihi, F_INT *IERROR)

Function Documentation

FLA_Error FLA_Hess_blk_external ( FLA_Obj  A,
FLA_Obj  t,
int  ilo,
int  ihi 
)

References cgehrd(), dgehrd(), FLA_Check_error_level(), FLA_Hess_check(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_width(), FLA_Query_blocksize(), sgehrd(), and zgehrd().

Referenced by fla_hess_blk_external_f().

00036 {
00037   FLA_Datatype datatype;
00038   int          n_A, ldim_A;
00039   int          lwork, info;
00040   FLA_Obj      work_obj;
00041   int          ilo_1, ihi_1;
00042 
00043   if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00044     FLA_Hess_check( A, t, ilo, ihi );
00045 
00046   if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
00047 
00048   datatype = FLA_Obj_datatype( A );
00049 
00050   n_A      = FLA_Obj_width( A );
00051   ldim_A   = FLA_Obj_ldim( A );
00052   lwork    = n_A * FLA_Query_blocksize( datatype, FLA_DIMENSION_MIN );
00053   ilo_1    = ilo + 1;
00054   ihi_1    = ihi + 1;
00055 
00056   FLA_Obj_create( datatype, lwork, 1, &work_obj );
00057 
00058   switch( datatype ){
00059 
00060   case FLA_FLOAT:
00061   {
00062     float *buff_A    = ( float * ) FLA_FLOAT_PTR( A );
00063     float *buff_t    = ( float * ) FLA_FLOAT_PTR( t );
00064     float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
00065 
00066     FLA_C2F( sgehrd )( &n_A,
00067                        &ilo_1,
00068                        &ihi_1,
00069                        buff_A, &ldim_A,
00070                        buff_t,
00071                        buff_work, &lwork,
00072                        &info );
00073 
00074     break;
00075   }
00076 
00077   case FLA_DOUBLE:
00078   {
00079     double *buff_A    = ( double * ) FLA_DOUBLE_PTR( A );
00080     double *buff_t    = ( double * ) FLA_DOUBLE_PTR( t );
00081     double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
00082 
00083     FLA_C2F( dgehrd )( &n_A,
00084                        &ilo_1,
00085                        &ihi_1,
00086                        buff_A, &ldim_A,
00087                        buff_t,
00088                        buff_work, &lwork,
00089                        &info );
00090 
00091     break;
00092   } 
00093 
00094   case FLA_COMPLEX:
00095   {
00096     scomplex *buff_A    = ( scomplex * ) FLA_COMPLEX_PTR( A );
00097     scomplex *buff_t    = ( scomplex * ) FLA_COMPLEX_PTR( t );
00098     scomplex *buff_work = ( scomplex * ) FLA_COMPLEX_PTR( work_obj );
00099 
00100     FLA_C2F( cgehrd )( &n_A,
00101                        &ilo_1,
00102                        &ihi_1,
00103                        buff_A, &ldim_A,
00104                        buff_t,
00105                        buff_work, &lwork,
00106                        &info );
00107 
00108     break;
00109   } 
00110 
00111   case FLA_DOUBLE_COMPLEX:
00112   {
00113     dcomplex *buff_A    = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00114     dcomplex *buff_t    = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( t );
00115     dcomplex *buff_work = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( work_obj );
00116 
00117     FLA_C2F( zgehrd )( &n_A,
00118                        &ilo_1,
00119                        &ihi_1,
00120                        buff_A, &ldim_A,
00121                        buff_t,
00122                        buff_work, &lwork,
00123                        &info );
00124 
00125     break;
00126   } 
00127 
00128   }
00129 
00130   FLA_Obj_free( &work_obj );
00131 
00132   return info;
00133 }

void FLA_F2C() fla_hess_blk_external_f ( F_INT *  A,
F_INT *  t,
F_INT *  ilo,
F_INT *  ihi,
F_INT *  IERROR 
)

References FLA_Hess_blk_external().

00137 {
00138   *IERROR = FLA_Hess_blk_external( *( ( FLA_Obj * ) A   ), 
00139                                    *( ( FLA_Obj * ) t   ), 
00140                                    *( ( int     * ) ilo ), 
00141                                    *( ( int     * ) ihi ) );
00142 }


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