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) |
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 }