FLASH_LU_incpiv_var1.c File Reference

(r)


Functions

FLA_Error FLASH_LU_incpiv_var1 (FLA_Obj A, FLA_Obj p, FLA_Obj L, dim_t nb_alg)

Function Documentation

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,    &LTL, &LTR,
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( &LTL, /**/ &LTR,       L00, L01, /**/ L02,
00116                                                        L10, L11, /**/ L12,
00117                              /* ************** */  /* ****************** */
00118                                 &LBL, /**/ &LBR,       L20, L21, /**/ L22,
00119                                 FLA_TL );
00120    }
00121    
00122    return FLA_SUCCESS;
00123 }


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