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