FLASH_FS_incpiv_aux1.c File Reference

(r)


Functions

FLA_Error FLASH_FS_incpiv_aux1 (FLA_Obj A, FLA_Obj p, FLA_Obj L, FLA_Obj b, dim_t nb_alg)

Function Documentation

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,    &LTL, &LTR,
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( &LTL, /**/ &LTR,       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 }


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