FLASH_FS_incpiv.c File Reference

(r)


Functions

FLA_Error FLASH_FS_incpiv (FLA_Obj A, FLA_Obj p, FLA_Obj L, FLA_Obj b)
void FLA_F2C() flash_fs_incpiv_f (F_INT *A, F_INT *p, F_INT *L, F_INT *b, F_INT *IERROR)

Function Documentation

FLA_Error FLASH_FS_incpiv ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  L,
FLA_Obj  b 
)

References FLA_Abort(), FLA_Check_error_level(), FLA_FS_incpiv_check(), FLA_Part_2x2(), FLA_Print_message(), FLASH_FS_incpiv_aux1(), FLASH_Obj_depth(), FLASH_Obj_scalar_width(), FLASH_Queue_disable(), FLASH_Queue_enable(), and FLASH_Queue_get_enabled().

Referenced by flash_fs_incpiv_f().

00036 {
00037   dim_t     nb_alg;
00038   FLA_Error r_val;
00039   FLA_Bool  enable_supermatrix;
00040   FLA_Obj   LTL, LTR,
00041             LBL, LBR;
00042 
00043   // Check parameters.
00044   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00045     FLA_FS_incpiv_check( A, p, L, b );
00046 
00047   // *** The current forward substitution algorithm implemented assumes that 
00048   // the matrix has a hierarchical depth of 1. We check for that here, because
00049   // we anticipate that we'll use a more general algorithm in the future, and 
00050   // we don't want to forget to remove the constraint. ***
00051   if ( FLASH_Obj_depth( A ) != 1 )
00052   {
00053     FLA_Print_message( "FLASH_FS_incpiv() currently only supports matrices of depth 1",
00054                        __FILE__, __LINE__ );
00055     FLA_Abort();
00056   }
00057   
00058   // Inspect the width of a the top-left element of L to get the algorithmic
00059   // blocksize we'll use throughout the LU_incpiv algorithm.
00060   FLA_Part_2x2( L,   &LTL, &LTR,
00061                      &LBL, &LBR,     1, 1, FLA_TL );
00062   nb_alg = FLASH_Obj_scalar_width( LTL );
00063 
00064   // Find the status of SuperMatrix.
00065   enable_supermatrix = FLASH_Queue_get_enabled();
00066 
00067   // Temporarily disable SuperMatrix.
00068   FLASH_Queue_disable();
00069   
00070   // Execute tasks.
00071   r_val = FLASH_FS_incpiv_aux1( A, p, L, b, nb_alg );
00072 
00073   // Restore SuperMatrix to its previous status.
00074   if ( enable_supermatrix )
00075      FLASH_Queue_enable();
00076 
00077   return r_val;
00078 }

void FLA_F2C() flash_fs_incpiv_f ( F_INT *  A,
F_INT *  p,
F_INT *  L,
F_INT *  b,
F_INT *  IERROR 
)

References FLASH_FS_incpiv().

00082 {
00083   *IERROR = FLASH_FS_incpiv( *( ( FLA_Obj * ) A ),
00084                              *( ( FLA_Obj * ) p ),
00085                              *( ( FLA_Obj * ) L ),
00086                              *( ( FLA_Obj * ) b ) );
00087 }


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