Functions | |
FLA_Error | FLASH_LU_incpiv_var1 (FLA_Obj A, FLA_Obj p, FLA_Obj L, dim_t nb_alg) |
References FLA_Cont_with_3x3_to_2x2(), FLA_LU_piv_task(), FLA_Obj_length(), FLA_Obj_width(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLASH_Queue_get_enabled(), FLASH_SA_LU(), and FLASH_Trsm_piv().
00036 { 00037 FLA_Obj ATL, ATR, A00, A01, A02, 00038 ABL, ABR, A10, A11, A12, 00039 A20, A21, A22; 00040 00041 FLA_Obj pTL, pTR, p00, p01, p02, 00042 pBL, pBR, p10, p11, p12, 00043 p20, p21, p22; 00044 00045 FLA_Obj LTL, LTR, L00, L01, L02, 00046 LBL, LBR, L10, L11, L12, 00047 L20, L21, L22; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_TL ); 00051 00052 FLA_Part_2x2( p, &pTL, &pTR, 00053 &pBL, &pBR, 0, 0, FLA_TL ); 00054 00055 FLA_Part_2x2( L, <L, <R, 00056 &LBL, &LBR, 0, 0, FLA_TL ); 00057 00058 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) && 00059 FLA_Obj_width ( ATL ) < FLA_Obj_width ( A ) ) 00060 { 00061 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02, 00062 /* ************* */ /* ******************** */ 00063 &A10, /**/ &A11, &A12, 00064 ABL, /**/ ABR, &A20, /**/ &A21, &A22, 00065 1, 1, FLA_BR ); 00066 00067 FLA_Repart_2x2_to_3x3( pTL, /**/ pTR, &p00, /**/ &p01, &p02, 00068 /* ************* */ /* ******************** */ 00069 &p10, /**/ &p11, &p12, 00070 pBL, /**/ pBR, &p20, /**/ &p21, &p22, 00071 1, 1, FLA_BR ); 00072 00073 FLA_Repart_2x2_to_3x3( LTL, /**/ LTR, &L00, /**/ &L01, &L02, 00074 /* ************* */ /* ******************** */ 00075 &L10, /**/ &L11, &L12, 00076 LBL, /**/ LBR, &L20, /**/ &L21, &L22, 00077 1, 1, FLA_BR ); 00078 00079 /*------------------------------------------------------------*/ 00080 00081 if ( FLASH_Queue_get_enabled( ) ) 00082 { 00083 // Enqueue 00084 ENQUEUE_FLASH_LU_piv( *FLASH_OBJ_PTR_AT( A11 ), 00085 *FLASH_OBJ_PTR_AT( p11 ), 00086 NULL ); 00087 } 00088 else 00089 { 00090 // Execute leaf 00091 FLA_LU_piv_task( *FLASH_OBJ_PTR_AT( A11 ), 00092 *FLASH_OBJ_PTR_AT( p11 ), 00093 NULL ); 00094 } 00095 00096 FLASH_Trsm_piv( *FLASH_OBJ_PTR_AT( A11 ), A12, p11 ); 00097 00098 FLASH_SA_LU( A11, A12, 00099 A21, A22, p21, L21, nb_alg ); 00100 00101 /*------------------------------------------------------------*/ 00102 00103 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02, 00104 A10, A11, /**/ A12, 00105 /* ************** */ /* ****************** */ 00106 &ABL, /**/ &ABR, A20, A21, /**/ A22, 00107 FLA_TL ); 00108 00109 FLA_Cont_with_3x3_to_2x2( &pTL, /**/ &pTR, p00, p01, /**/ p02, 00110 p10, p11, /**/ p12, 00111 /* ************** */ /* ****************** */ 00112 &pBL, /**/ &pBR, p20, p21, /**/ p22, 00113 FLA_TL ); 00114 00115 FLA_Cont_with_3x3_to_2x2( <L, /**/ <R, L00, L01, /**/ L02, 00116 L10, L11, /**/ L12, 00117 /* ************** */ /* ****************** */ 00118 &LBL, /**/ &LBR, L20, L21, /**/ L22, 00119 FLA_TL ); 00120 } 00121 00122 return FLA_SUCCESS; 00123 }