FLA_QR_UT_Accum_T_unb_var1.c File Reference

(r)


Functions

FLA_Error FLA_QR_UT_Accum_T_unb_var1 (FLA_Obj A, FLA_Obj T)

Function Documentation

FLA_Error FLA_QR_UT_Accum_T_unb_var1 ( FLA_Obj  A,
FLA_Obj  T 
)

References FLA_Apply_househ2_UT(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyt_external(), FLA_Gemv_external(), FLA_Househ2_UT(), FLA_Obj_min_dim(), FLA_ONE, FLA_Part_2x2(), and FLA_Repart_2x2_to_3x3().

Referenced by FLA_QR_UT_internal().

00036 {
00037   FLA_Obj ATL,   ATR,      A00,  a01,     A02, 
00038           ABL,   ABR,      a10t, alpha11, a12t,
00039                            A20,  a21,     A22;
00040 
00041   FLA_Obj TTL,   TTR,      T00,  t01,   T02, 
00042           TBL,   TBR,      t10t, tau11, t12t,
00043                            T20,  t21,   T22;
00044 
00045 
00046   FLA_Part_2x2( A,    &ATL, &ATR,
00047                       &ABL, &ABR,     0, 0, FLA_TL );
00048 
00049   FLA_Part_2x2( T,    &TTL, &TTR,
00050                       &TBL, &TBR,     0, 0, FLA_TL );
00051 
00052   while ( FLA_Obj_min_dim( ABR ) > 0 ){
00053 
00054     FLA_Repart_2x2_to_3x3( ATL, /**/ ATR,       &A00,  /**/ &a01,     &A02,
00055                         /* ************* */   /* ************************** */
00056                                                 &a10t, /**/ &alpha11, &a12t,
00057                            ABL, /**/ ABR,       &A20,  /**/ &a21,     &A22,
00058                            1, 1, FLA_BR );
00059 
00060     FLA_Repart_2x2_to_3x3( TTL, /**/ TTR,       &T00,  /**/ &t01,   &T02,
00061                         /* ************* */   /* ************************ */
00062                                                 &t10t, /**/ &tau11, &t12t,
00063                            TBL, /**/ TBR,       &T20,  /**/ &t21,   &T22,
00064                            1, 1, FLA_BR );
00065 
00066     /*------------------------------------------------------------*/
00067 
00068     // [ alpha11, ...
00069     //   a21, tau11 ] = FLA_Househ2_UT( alpha11, ...
00070     //                                  a21, tau11 );
00071     FLA_Househ2_UT( alpha11,
00072                     a21, tau11 );
00073 
00074     // t01 = a10t' + A20' * a21;
00075     FLA_Copyt_external( FLA_CONJ_TRANSPOSE, a10t, t01 );
00076     FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ONE, t01 );
00077 
00078     // [ a12t, ...
00079     //   A22 ] = FLA_Apply_househ2_UT( tau11, a21, a12t, ...
00080     //                                             A22 );
00081     FLA_Apply_househ2_UT( tau11, a21, a12t,
00082                                       A22 );
00083 
00084     /*------------------------------------------------------------*/
00085 
00086     FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR,       A00,  a01,     /**/ A02,
00087                                                      a10t, alpha11, /**/ a12t,
00088                             /* ************** */  /* ************************ */
00089                               &ABL, /**/ &ABR,       A20,  a21,     /**/ A22,
00090                               FLA_TL );
00091 
00092     FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR,       T00,  t01,   /**/ T02,
00093                                                      t10t, tau11, /**/ t12t,
00094                             /* ************** */  /* ********************** */
00095                               &TBL, /**/ &TBR,       T20,  t21,   /**/ T22,
00096                               FLA_TL );
00097 
00098   }
00099 
00100   return FLA_SUCCESS;
00101 }


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