FLA_LU_piv_unb_external.c File Reference

(r)


Functions

FLA_Error FLA_LU_piv_unb_external (FLA_Obj A, FLA_Obj p)
void FLA_F2C() fla_lu_piv_unb_external_f (F_INT *A, F_INT *p, F_INT *IERROR)

Function Documentation

FLA_Error FLA_LU_piv_unb_external ( FLA_Obj  A,
FLA_Obj  p 
)

References cgetf2(), dgetf2(), FLA_Check_error_level(), FLA_LU_piv_check(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Obj_width(), FLA_Shift_pivots_to(), sgetf2(), and zgetf2().

Referenced by FLA_LU_piv_copy_task(), FLA_LU_piv_task(), and fla_lu_piv_unb_external_f().

00036 {
00037   FLA_Datatype datatype;
00038   int          m_A, n_A, ldim_A;
00039   int          info;
00040 
00041   if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00042     FLA_LU_piv_check( A, p );
00043 
00044   if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
00045 
00046   datatype = FLA_Obj_datatype( A );
00047 
00048   m_A      = FLA_Obj_length( A );
00049   n_A      = FLA_Obj_width( A );
00050   ldim_A   = FLA_Obj_ldim( A );
00051 
00052 
00053   switch( datatype ){
00054 
00055   case FLA_FLOAT:
00056   {
00057     float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
00058     int   *buff_p = ( int   * ) FLA_INT_PTR( p );
00059 
00060     FLA_C2F( sgetf2 )( &m_A,
00061                        &n_A,
00062                        buff_A, &ldim_A,
00063                        buff_p,
00064                        &info );
00065 
00066     break;
00067   }
00068 
00069   case FLA_DOUBLE:
00070   {
00071     double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
00072     int    *buff_p = ( int    * ) FLA_INT_PTR( p );
00073 
00074     FLA_C2F( dgetf2 )( &m_A,
00075                        &n_A,
00076                        buff_A, &ldim_A,
00077                        buff_p,
00078                        &info );
00079 
00080     break;
00081   } 
00082 
00083   case FLA_COMPLEX:
00084   {
00085     scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
00086     int      *buff_p = ( int      * ) FLA_INT_PTR( p );
00087 
00088     FLA_C2F( cgetf2 )( &m_A,
00089                        &n_A,
00090                        buff_A, &ldim_A,
00091                        buff_p,
00092                        &info );
00093 
00094     break;
00095   } 
00096 
00097   case FLA_DOUBLE_COMPLEX:
00098   {
00099     dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00100     int      *buff_p = ( int      * ) FLA_INT_PTR( p );
00101 
00102     FLA_C2F( zgetf2 )( &m_A,
00103                        &n_A,
00104                        buff_A, &ldim_A,
00105                        buff_p,
00106                        &info );
00107 
00108     break;
00109   } 
00110 
00111   }
00112 
00113   FLA_Shift_pivots_to( FLA_NATIVE_PIVOTS, p );
00114 
00115   return info;
00116 }

void FLA_F2C() fla_lu_piv_unb_external_f ( F_INT *  A,
F_INT *  p,
F_INT *  IERROR 
)

References FLA_LU_piv_unb_external().

00120 {
00121   *IERROR = FLA_LU_piv_unb_external( *( ( FLA_Obj * ) A ), 
00122                                      *( ( FLA_Obj * ) p ) );
00123 }


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