FLA_LQ_UT_unb_external.c File Reference

(r)


Functions

FLA_Error FLA_LQ_UT_unb_external (FLA_Obj A, FLA_Obj t)
void FLA_F2C() fla_lq_ut_unb_external_f (F_INT *A, F_INT *t, F_INT *IERROR)

Function Documentation

FLA_Error FLA_LQ_UT_unb_external ( FLA_Obj  A,
FLA_Obj  t 
)

References cgelq2ut(), dgelq2ut(), 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(), sgelq2ut(), and zgelq2ut().

Referenced by FLA_LQ_UT_Accum_T_unb_external(), and fla_lq_ut_unb_external_f().

00036 {
00037   FLA_Datatype datatype;
00038   int          m_A, n_A, ldim_A;
00039   int          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 
00053   FLA_Obj_create( datatype, m_A, 1, &work_obj );
00054 
00055   switch( datatype ){
00056 
00057   case FLA_FLOAT:
00058   {
00059     float *buff_A    = ( float * ) FLA_FLOAT_PTR( A );
00060     float *buff_t    = ( float * ) FLA_FLOAT_PTR( t );
00061     float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
00062 
00063     FLA_C2F( sgelq2ut )( &m_A,
00064                          &n_A,
00065                          buff_A, &ldim_A,
00066                          buff_t,
00067                          buff_work,
00068                          &info );
00069 
00070     break;
00071   }
00072 
00073   case FLA_DOUBLE:
00074   {
00075     double *buff_A    = ( double * ) FLA_DOUBLE_PTR( A );
00076     double *buff_t    = ( double * ) FLA_DOUBLE_PTR( t );
00077     double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
00078 
00079     FLA_C2F( dgelq2ut )( &m_A,
00080                          &n_A,
00081                          buff_A, &ldim_A,
00082                          buff_t,
00083                          buff_work,
00084                          &info );
00085 
00086     break;
00087   } 
00088 
00089   case FLA_COMPLEX:
00090   {
00091     scomplex *buff_A    = ( scomplex * ) FLA_COMPLEX_PTR( A );
00092     scomplex *buff_t    = ( scomplex * ) FLA_COMPLEX_PTR( t );
00093     scomplex *buff_work = ( scomplex * ) FLA_COMPLEX_PTR( work_obj );
00094 
00095     FLA_C2F( cgelq2ut )( &m_A,
00096                          &n_A,
00097                          buff_A, &ldim_A,
00098                          buff_t,
00099                          buff_work,
00100                          &info );
00101 
00102     break;
00103   } 
00104 
00105   case FLA_DOUBLE_COMPLEX:
00106   {
00107     dcomplex *buff_A    = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00108     dcomplex *buff_t    = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( t );
00109     dcomplex *buff_work = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( work_obj );
00110 
00111     FLA_C2F( zgelq2ut )( &m_A,
00112                          &n_A,
00113                          buff_A, &ldim_A,
00114                          buff_t,
00115                          buff_work,
00116                          &info );
00117 
00118     break;
00119   } 
00120 
00121   }
00122 
00123   FLA_Obj_free( &work_obj );
00124 
00125   return info;
00126 }

void FLA_F2C() fla_lq_ut_unb_external_f ( F_INT *  A,
F_INT *  t,
F_INT *  IERROR 
)

References FLA_LQ_UT_unb_external().

00130 {
00131   *IERROR = FLA_LQ_UT_unb_external( *( ( FLA_Obj * ) A ), 
00132                                     *( ( FLA_Obj * ) t ) );
00133 }


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