FLASH_QR_UT_inc_opt1.c File Reference

(r)


Functions

FLA_Error FLASH_QR_UT_inc_opt1 (FLA_Obj A, FLA_Obj TW)

Variables

fla_qrut_tfla_qrut_cntl_leaf
fla_apqut_tfla_apqut_cntl_leaf
fla_qrutud_tfla_qrutud_cntl_leaf
fla_apqutud_tfla_apqutud_cntl_leaf
fla_qrutinc_tflash_qrutinc_cntl

Function Documentation

FLA_Error FLASH_QR_UT_inc_opt1 ( FLA_Obj  A,
FLA_Obj  TW 
)

References FLA_Blocksize_set(), FLA_Check_error_level(), FLA_Part_2x2(), FLA_QR_UT_inc_blk_var2(), FLA_QR_UT_inc_check(), FLA_QR_UT_inc_create_U_panel(), FLA_QR_UT_inc_free_U_panel(), FLASH_Obj_scalar_length(), FLASH_Queue_begin(), and FLASH_Queue_end().

Referenced by FLASH_QR_UT_inc().

00043 {
00044   FLA_Error r_val;
00045   int       nb_alg;
00046   FLA_Obj   TWTL, WTR,
00047             TBL, TWBR;
00048   FLA_Obj   U;
00049 
00050   // Check parameters.
00051   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00052     FLA_QR_UT_inc_check( A, TW );
00053 
00054   // Inspect the length of a the top-left element of T to get the algorithmic
00055   // blocksize we'll use throughout the QR_UT_inc algorithm.
00056   FLA_Part_2x2( TW,   &TWTL, &WTR,
00057                       &TBL, &TWBR,     1, 1, FLA_TL );
00058   nb_alg = FLASH_Obj_scalar_length( TWTL );
00059 
00060   // Adjust the blocksizes of the leaf control tree nodes, which are invoked
00061   // by the individual QR_UT_inc tasks.
00062   FLA_Blocksize_set( FLA_Cntl_blocksize( fla_qrut_cntl_leaf ),
00063                      nb_alg, nb_alg, nb_alg, nb_alg );
00064   FLA_Blocksize_set( FLA_Cntl_blocksize( fla_apqut_cntl_leaf ),
00065                      nb_alg, nb_alg, nb_alg, nb_alg );
00066   FLA_Blocksize_set( FLA_Cntl_blocksize( fla_qrutud_cntl_leaf ),
00067                      nb_alg, nb_alg, nb_alg, nb_alg );
00068   FLA_Blocksize_set( FLA_Cntl_blocksize( fla_apqutud_cntl_leaf ),
00069                      nb_alg, nb_alg, nb_alg, nb_alg );
00070 
00071   // Create a temporary matrix to hold copies of all of the blocks along the
00072   // diagonal of A.
00073   FLA_QR_UT_inc_create_U_panel( A, &U );
00074 
00075   // Begin a parallel region.
00076   FLASH_Queue_begin();
00077 
00078   // Invoke FLA_QR_UT_inc_blk_var2() with the standard control tree.
00079   r_val = FLA_QR_UT_inc_blk_var2( A, TW, U, flash_qrutinc_cntl );
00080 
00081   // End the parallel region.
00082   FLASH_Queue_end();
00083 
00084   // Free the temporary matrix.
00085   FLA_QR_UT_inc_free_U_panel( &U );
00086 
00087   return r_val;
00088 }


Variable Documentation


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