Functions | |
FLA_Error | FLASH_FS_incpiv_aux1 (FLA_Obj A, FLA_Obj p, FLA_Obj L, FLA_Obj b, dim_t nb_alg) |
References FLA_Apply_pivots(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Obj_length(), FLA_Obj_width(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Trsv_external(), and FLASH_FS_incpiv_aux2().
Referenced by FLASH_FS_incpiv().
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_Obj bT, b0, 00050 bB, b1, 00051 b2; 00052 00053 FLA_Obj p11_conf, 00054 p11_rest; 00055 00056 FLA_Part_2x2( A, &ATL, &ATR, 00057 &ABL, &ABR, 0, 0, FLA_TL ); 00058 00059 FLA_Part_2x2( p, &pTL, &pTR, 00060 &pBL, &pBR, 0, 0, FLA_TL ); 00061 00062 FLA_Part_2x2( L, <L, <R, 00063 &LBL, &LBR, 0, 0, FLA_TL ); 00064 00065 FLA_Part_2x1( b, &bT, 00066 &bB, 0, FLA_TOP ); 00067 00068 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) && 00069 FLA_Obj_width ( ATL ) < FLA_Obj_width ( A ) ) 00070 { 00071 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02, 00072 /* ************* */ /* ******************** */ 00073 &A10, /**/ &A11, &A12, 00074 ABL, /**/ ABR, &A20, /**/ &A21, &A22, 00075 1, 1, FLA_BR ); 00076 00077 FLA_Repart_2x2_to_3x3( pTL, /**/ pTR, &p00, /**/ &p01, &p02, 00078 /* ************* */ /* ******************** */ 00079 &p10, /**/ &p11, &p12, 00080 pBL, /**/ pBR, &p20, /**/ &p21, &p22, 00081 1, 1, FLA_BR ); 00082 00083 FLA_Repart_2x2_to_3x3( LTL, /**/ LTR, &L00, /**/ &L01, &L02, 00084 /* ************* */ /* ******************** */ 00085 &L10, /**/ &L11, &L12, 00086 LBL, /**/ LBR, &L20, /**/ &L21, &L22, 00087 1, 1, FLA_BR ); 00088 00089 FLA_Repart_2x1_to_3x1( bT, &b0, 00090 /* ** */ /* ** */ 00091 &b1, 00092 bB, &b2, 1, FLA_BOTTOM ); 00093 00094 /*------------------------------------------------------------*/ 00095 00096 FLA_Part_2x1( *FLASH_OBJ_PTR_AT( p11 ), &p11_conf, 00097 &p11_rest, 00098 FLA_Obj_length( *FLASH_OBJ_PTR_AT( b1 ) ), FLA_TOP ); 00099 00100 00101 FLA_Apply_pivots( FLA_LEFT, FLA_NO_TRANSPOSE, 00102 p11_conf, 00103 *FLASH_OBJ_PTR_AT( b1 ) ); 00104 00105 FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, 00106 *FLASH_OBJ_PTR_AT( A11 ), 00107 *FLASH_OBJ_PTR_AT( b1 ) ); 00108 00109 FLASH_FS_incpiv_aux2( L21, 00110 A21, p21, b1, 00111 b2, nb_alg ); 00112 00113 /*------------------------------------------------------------*/ 00114 00115 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02, 00116 A10, A11, /**/ A12, 00117 /* ************** */ /* ****************** */ 00118 &ABL, /**/ &ABR, A20, A21, /**/ A22, 00119 FLA_TL ); 00120 00121 FLA_Cont_with_3x3_to_2x2( &pTL, /**/ &pTR, p00, p01, /**/ p02, 00122 p10, p11, /**/ p12, 00123 /* ************** */ /* ****************** */ 00124 &pBL, /**/ &pBR, p20, p21, /**/ p22, 00125 FLA_TL ); 00126 00127 FLA_Cont_with_3x3_to_2x2( <L, /**/ <R, L00, L01, /**/ L02, 00128 L10, L11, /**/ L12, 00129 /* ************** */ /* ****************** */ 00130 &LBL, /**/ &LBR, L20, L21, /**/ L22, 00131 FLA_TL ); 00132 00133 FLA_Cont_with_3x1_to_2x1( &bT, b0, 00134 b1, 00135 /* ** */ /* ** */ 00136 &bB, b2, FLA_TOP ); 00137 } 00138 00139 return FLA_SUCCESS; 00140 }