FLA_QR_UT_UD_Accum_T_unb_var1.c File Reference

(r)


Functions

FLA_Error FLA_QR_UT_UD_Accum_T_unb_var1 (FLA_Obj U, FLA_Obj D, FLA_Obj T)

Function Documentation

FLA_Error FLA_QR_UT_UD_Accum_T_unb_var1 ( FLA_Obj  U,
FLA_Obj  D,
FLA_Obj  T 
)

References FLA_Apply_househ2_UT(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Househ2_UT(), FLA_Obj_min_dim(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_ZERO.

Referenced by FLA_QR_UT_UD_internal().

00037 {
00038   FLA_Obj UTL,   UTR,      U00,  u01,       U02, 
00039           UBL,   UBR,      u10t, upsilon11, u12t,
00040                            U20,  u21,       U22;
00041 
00042   FLA_Obj DL,    DR,       D0,  d1,  D2;
00043 
00044   FLA_Obj TTL,   TTR,      T00,  t01,   T02, 
00045           TBL,   TBR,      t10t, tau11, t12t,
00046                            T20,  t21,   T22;
00047 
00048 
00049   FLA_Part_2x2( U,    &UTL, &UTR,
00050                       &UBL, &UBR,     0, 0, FLA_TL );
00051 
00052   FLA_Part_1x2( D,    &DL,  &DR,      0, FLA_LEFT );
00053 
00054   FLA_Part_2x2( T,    &TTL, &TTR,
00055                       &TBL, &TBR,     0, 0, FLA_TL );
00056 
00057   while ( FLA_Obj_min_dim( UBR ) > 0 ){
00058 
00059     FLA_Repart_2x2_to_3x3( UTL, /**/ UTR,       &U00,  /**/ &u01,       &U02,
00060                         /* ************* */   /* ************************** */
00061                                                 &u10t, /**/ &upsilon11, &u12t,
00062                            UBL, /**/ UBR,       &U20,  /**/ &u21,       &U22,
00063                            1, 1, FLA_BR );
00064 
00065     FLA_Repart_1x2_to_1x3( DL,  /**/ DR,        &D0, /**/ &d1, &D2,
00066                            1, FLA_RIGHT );
00067 
00068     FLA_Repart_2x2_to_3x3( TTL, /**/ TTR,       &T00,  /**/ &t01,   &T02,
00069                         /* ************* */   /* ************************ */
00070                                                 &t10t, /**/ &tau11, &t12t,
00071                            TBL, /**/ TBR,       &T20,  /**/ &t21,   &T22,
00072                            1, 1, FLA_BR );
00073 
00074     /*------------------------------------------------------------*/
00075 
00076     // [ upsilon11, ...
00077     //   d1, tau11 ] = FLA_Househ2_UT( upsilon11, ...
00078     //                                 d1 );
00079     FLA_Househ2_UT( upsilon11,
00080                     d1, tau11 );
00081 
00082     // t01 = D0' * d1;
00083     FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D0, d1, FLA_ZERO, t01 );
00084 
00085     // [ u12t, ...
00086     //   D2 ] = FLA_Apply_househ2_UT( tau11, d1, u12t, ...
00087     //                                           D2 );
00088     FLA_Apply_househ2_UT( tau11, d1, u12t,
00089                                      D2 );
00090 
00091     /*------------------------------------------------------------*/
00092 
00093     FLA_Cont_with_3x3_to_2x2( &UTL, /**/ &UTR,       U00,  u01,       /**/ U02,
00094                                                      u10t, upsilon11, /**/ u12t,
00095                             /* ************** */  /* ************************ */
00096                               &UBL, /**/ &UBR,       U20,  u21,       /**/ U22,
00097                               FLA_TL );
00098 
00099     FLA_Cont_with_1x3_to_1x2( &DL,  /**/ &DR,        D0, d1, /**/ D2,
00100                               FLA_LEFT );
00101 
00102     FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR,       T00,  t01,   /**/ T02,
00103                                                      t10t, tau11, /**/ t12t,
00104                             /* ************** */  /* ********************** */
00105                               &TBL, /**/ &TBR,       T20,  t21,   /**/ T22,
00106                               FLA_TL );
00107   }
00108 
00109   return FLA_SUCCESS;
00110 }


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