Go to the source code of this file.
FLA_Error FLA_Symm_rl_blk_var1 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_TL ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00055 00056 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02, 00061 /* ************* */ /* ******************** */ 00062 &A10, /**/ &A11, &A12, 00063 ABL, /**/ ABR, &A20, /**/ &A21, &A22, 00064 b, b, FLA_BR ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &B1, &B2, 00067 b, FLA_RIGHT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2, 00070 b, FLA_RIGHT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C0 = C0 + B1 * A10 */ 00075 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00076 alpha, B1, A10, FLA_ONE, C0, 00077 FLA_Cntl_sub_gemm1( cntl ) ); 00078 00079 /* C1 = C1 + B0 * A10' */ 00080 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00081 alpha, B0, A10, FLA_ONE, C1, 00082 FLA_Cntl_sub_gemm2( cntl ) ); 00083 00084 /* C1 = C1 + B1 * A11 */ 00085 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00086 alpha, A11, B1, beta, C1, 00087 FLA_Cntl_sub_symm( cntl ) ); 00088 00089 /*------------------------------------------------------------*/ 00090 00091 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02, 00092 A10, A11, /**/ A12, 00093 /* ************** */ /* ****************** */ 00094 &ABL, /**/ &ABR, A20, A21, /**/ A22, 00095 FLA_TL ); 00096 00097 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, B1, /**/ B2, 00098 FLA_LEFT ); 00099 00100 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2, 00101 FLA_LEFT ); 00102 00103 } 00104 00105 return FLA_SUCCESS; 00106 }
FLA_Error FLA_Symm_rl_blk_var10 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_3x1_to_2x1(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_2x1(), FLA_Repart_2x1_to_3x1(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj BT, B0, 00040 BB, B1, 00041 B2; 00042 00043 FLA_Obj CT, C0, 00044 CB, C1, 00045 C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x1( B, &BT, 00050 &BB, 0, FLA_BOTTOM ); 00051 00052 FLA_Part_2x1( C, &CT, 00053 &CB, 0, FLA_BOTTOM ); 00054 00055 while ( FLA_Obj_length( BB ) < FLA_Obj_length( B ) ){ 00056 00057 b = FLA_Determine_blocksize( BT, FLA_TOP, FLA_Cntl_blocksize( cntl ) ); 00058 00059 FLA_Repart_2x1_to_3x1( BT, &B0, 00060 &B1, 00061 /* ** */ /* ** */ 00062 BB, &B2, b, FLA_TOP ); 00063 00064 FLA_Repart_2x1_to_3x1( CT, &C0, 00065 &C1, 00066 /* ** */ /* ** */ 00067 CB, &C2, b, FLA_TOP ); 00068 00069 /*------------------------------------------------------------*/ 00070 00071 /* C1 = C1 + B1 * A */ 00072 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00073 alpha, A, B1, beta, C1, 00074 FLA_Cntl_sub_symm( cntl ) ); 00075 00076 /*------------------------------------------------------------*/ 00077 00078 FLA_Cont_with_3x1_to_2x1( &BT, B0, 00079 /* ** */ /* ** */ 00080 B1, 00081 &BB, B2, FLA_BOTTOM ); 00082 00083 FLA_Cont_with_3x1_to_2x1( &CT, C0, 00084 /* ** */ /* ** */ 00085 C1, 00086 &CB, C2, FLA_BOTTOM ); 00087 00088 } 00089 00090 return FLA_SUCCESS; 00091 }
FLA_Error FLA_Symm_rl_blk_var2 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_TL ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00055 00056 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02, 00061 /* ************* */ /* ******************** */ 00062 &A10, /**/ &A11, &A12, 00063 ABL, /**/ ABR, &A20, /**/ &A21, &A22, 00064 b, b, FLA_BR ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &B1, &B2, 00067 b, FLA_RIGHT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2, 00070 b, FLA_RIGHT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C1 = C1 + B0 * A10' */ 00075 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00076 alpha, B0, A10, FLA_ONE, C1, 00077 FLA_Cntl_sub_gemm1( cntl ) ); 00078 00079 /* C1 = C1 + B1 * A11 */ 00080 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00081 alpha, A11, B1, beta, C1, 00082 FLA_Cntl_sub_symm( cntl ) ); 00083 00084 /* C1 = C1 + B2 * A21 */ 00085 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00086 alpha, B2, A21, FLA_ONE, C1, 00087 FLA_Cntl_sub_gemm2( cntl ) ); 00088 00089 /*------------------------------------------------------------*/ 00090 00091 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02, 00092 A10, A11, /**/ A12, 00093 /* ************** */ /* ****************** */ 00094 &ABL, /**/ &ABR, A20, A21, /**/ A22, 00095 FLA_TL ); 00096 00097 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, B1, /**/ B2, 00098 FLA_LEFT ); 00099 00100 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2, 00101 FLA_LEFT ); 00102 00103 } 00104 00105 return FLA_SUCCESS; 00106 }
FLA_Error FLA_Symm_rl_blk_var3 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_TL ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00055 00056 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02, 00061 /* ************* */ /* ******************** */ 00062 &A10, /**/ &A11, &A12, 00063 ABL, /**/ ABR, &A20, /**/ &A21, &A22, 00064 b, b, FLA_BR ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &B1, &B2, 00067 b, FLA_RIGHT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2, 00070 b, FLA_RIGHT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C1 = C1 + B1 * A11 */ 00075 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00076 alpha, A11, B1, beta, C1, 00077 FLA_Cntl_sub_symm( cntl ) ); 00078 00079 /* C1 = C1 + B2 * A21 */ 00080 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00081 alpha, B2, A21, FLA_ONE, C1, 00082 FLA_Cntl_sub_gemm1( cntl ) ); 00083 00084 /* C2 = C2 + B1 * A21' */ 00085 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00086 alpha, B1, A21, FLA_ONE, C2, 00087 FLA_Cntl_sub_gemm2( cntl ) ); 00088 00089 /*------------------------------------------------------------*/ 00090 00091 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02, 00092 A10, A11, /**/ A12, 00093 /* ************** */ /* ****************** */ 00094 &ABL, /**/ &ABR, A20, A21, /**/ A22, 00095 FLA_TL ); 00096 00097 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, B1, /**/ B2, 00098 FLA_LEFT ); 00099 00100 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2, 00101 FLA_LEFT ); 00102 00103 } 00104 00105 return FLA_SUCCESS; 00106 }
FLA_Error FLA_Symm_rl_blk_var4 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00036 { 00037 FLA_Obj ATL, ATR, A00, A01, A02, 00038 ABL, ABR, A10, A11, A12, 00039 A20, A21, A22; 00040 00041 FLA_Obj BL, BR, B0, B1, B2; 00042 00043 FLA_Obj CL, CR, C0, C1, C2; 00044 00045 dim_t b; 00046 00047 FLA_Part_2x2( A, &ATL, &ATR, 00048 &ABL, &ABR, 0, 0, FLA_TL ); 00049 00050 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00051 00052 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00053 00054 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00055 00056 b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) ); 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02, 00059 /* ************* */ /* ******************** */ 00060 &A10, /**/ &A11, &A12, 00061 ABL, /**/ ABR, &A20, /**/ &A21, &A22, 00062 b, b, FLA_BR ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &B1, &B2, 00065 b, FLA_RIGHT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2, 00068 b, FLA_RIGHT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* C0 = C0 + B1 * A10 */ 00073 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00074 alpha, B1, A10, FLA_ONE, C0, 00075 FLA_Cntl_sub_gemm1( cntl ) ); 00076 00077 /* C1 = C1 + B1 * A11 */ 00078 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00079 alpha, A11, B1, beta, C1, 00080 FLA_Cntl_sub_symm( cntl ) ); 00081 00082 /* C2 = C2 + B1 * A21' */ 00083 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00084 alpha, B1, A21, FLA_ONE, C2, 00085 FLA_Cntl_sub_gemm2( cntl ) ); 00086 00087 /*------------------------------------------------------------*/ 00088 00089 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02, 00090 A10, A11, /**/ A12, 00091 /* ************** */ /* ****************** */ 00092 &ABL, /**/ &ABR, A20, A21, /**/ A22, 00093 FLA_TL ); 00094 00095 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, B1, /**/ B2, 00096 FLA_LEFT ); 00097 00098 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2, 00099 FLA_LEFT ); 00100 00101 } 00102 00103 return FLA_SUCCESS; 00104 }
FLA_Error FLA_Symm_rl_blk_var5 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_BR ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00055 00056 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ATL, FLA_TL, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &A01, /**/ &A02, 00061 &A10, &A11, /**/ &A12, 00062 /* ************* */ /* ******************** */ 00063 ABL, /**/ ABR, &A20, &A21, /**/ &A22, 00064 b, b, FLA_TL ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &B1, /**/ &B2, 00067 b, FLA_LEFT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &C1, /**/ &C2, 00070 b, FLA_LEFT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C1 = C1 + B1 * A11 */ 00075 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00076 alpha, A11, B1, beta, C1, 00077 FLA_Cntl_sub_symm( cntl ) ); 00078 00079 /* C1 = C1 + B2 * A21 */ 00080 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00081 alpha, B2, A21, FLA_ONE, C1, 00082 FLA_Cntl_sub_gemm1( cntl ) ); 00083 00084 /* C2 = C2 + B1 * A21' */ 00085 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00086 alpha, B1, A21, FLA_ONE, C2, 00087 FLA_Cntl_sub_gemm2( cntl ) ); 00088 00089 /*------------------------------------------------------------*/ 00090 00091 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ A01, A02, 00092 /* ************** */ /* ****************** */ 00093 A10, /**/ A11, A12, 00094 &ABL, /**/ &ABR, A20, /**/ A21, A22, 00095 FLA_BR ); 00096 00097 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ B1, B2, 00098 FLA_RIGHT ); 00099 00100 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ C1, C2, 00101 FLA_RIGHT ); 00102 00103 } 00104 00105 return FLA_SUCCESS; 00106 }
FLA_Error FLA_Symm_rl_blk_var6 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_BR ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00055 00056 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ATL, FLA_TL, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &A01, /**/ &A02, 00061 &A10, &A11, /**/ &A12, 00062 /* ************* */ /* ******************** */ 00063 ABL, /**/ ABR, &A20, &A21, /**/ &A22, 00064 b, b, FLA_TL ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &B1, /**/ &B2, 00067 b, FLA_LEFT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &C1, /**/ &C2, 00070 b, FLA_LEFT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C1 = C1 + B0 * A10' */ 00075 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00076 alpha, B0, A10, FLA_ONE, C1, 00077 FLA_Cntl_sub_gemm1( cntl ) ); 00078 00079 /* C1 = C1 + B1 * A11 */ 00080 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00081 alpha, A11, B1, beta, C1, 00082 FLA_Cntl_sub_symm( cntl ) ); 00083 00084 /* C1 = C1 + B2 * A21 */ 00085 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00086 alpha, B2, A21, FLA_ONE, C1, 00087 FLA_Cntl_sub_gemm2( cntl ) ); 00088 00089 /*------------------------------------------------------------*/ 00090 00091 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ A01, A02, 00092 /* ************** */ /* ****************** */ 00093 A10, /**/ A11, A12, 00094 &ABL, /**/ &ABR, A20, /**/ A21, A22, 00095 FLA_BR ); 00096 00097 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ B1, B2, 00098 FLA_RIGHT ); 00099 00100 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ C1, C2, 00101 FLA_RIGHT ); 00102 00103 } 00104 00105 return FLA_SUCCESS; 00106 }
FLA_Error FLA_Symm_rl_blk_var7 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_BR ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00055 00056 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ATL, FLA_TL, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &A01, /**/ &A02, 00061 &A10, &A11, /**/ &A12, 00062 /* ************* */ /* ******************** */ 00063 ABL, /**/ ABR, &A20, &A21, /**/ &A22, 00064 b, b, FLA_TL ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &B1, /**/ &B2, 00067 b, FLA_LEFT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &C1, /**/ &C2, 00070 b, FLA_LEFT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C0 = C0 + B1 * A10 */ 00075 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00076 alpha, B1, A10, FLA_ONE, C0, 00077 FLA_Cntl_sub_gemm1( cntl ) ); 00078 00079 /* C1 = C1 + B0 * A10' */ 00080 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00081 alpha, B0, A10, FLA_ONE, C1, 00082 FLA_Cntl_sub_gemm2( cntl ) ); 00083 00084 /* C1 = C1 + B1 * A11 */ 00085 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00086 alpha, A11, B1, beta, C1, 00087 FLA_Cntl_sub_symm( cntl ) ); 00088 /*------------------------------------------------------------*/ 00089 00090 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ A01, A02, 00091 /* ************** */ /* ****************** */ 00092 A10, /**/ A11, A12, 00093 &ABL, /**/ &ABR, A20, /**/ A21, A22, 00094 FLA_BR ); 00095 00096 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ B1, B2, 00097 FLA_RIGHT ); 00098 00099 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ C1, C2, 00100 FLA_RIGHT ); 00101 00102 } 00103 00104 return FLA_SUCCESS; 00105 }
FLA_Error FLA_Symm_rl_blk_var8 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00038 { 00039 FLA_Obj ATL, ATR, A00, A01, A02, 00040 ABL, ABR, A10, A11, A12, 00041 A20, A21, A22; 00042 00043 FLA_Obj BL, BR, B0, B1, B2; 00044 00045 FLA_Obj CL, CR, C0, C1, C2; 00046 00047 dim_t b; 00048 00049 FLA_Part_2x2( A, &ATL, &ATR, 00050 &ABL, &ABR, 0, 0, FLA_BR ); 00051 00052 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00053 00054 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00055 00056 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00057 00058 b = FLA_Determine_blocksize( ATL, FLA_TL, FLA_Cntl_blocksize( cntl ) ); 00059 00060 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &A01, /**/ &A02, 00061 &A10, &A11, /**/ &A12, 00062 /* ************* */ /* ******************** */ 00063 ABL, /**/ ABR, &A20, &A21, /**/ &A22, 00064 b, b, FLA_TL ); 00065 00066 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &B1, /**/ &B2, 00067 b, FLA_LEFT ); 00068 00069 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &C1, /**/ &C2, 00070 b, FLA_LEFT ); 00071 00072 /*------------------------------------------------------------*/ 00073 00074 /* C0 = C0 + B1 * A10 */ 00075 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, 00076 alpha, B1, A10, FLA_ONE, C0, 00077 FLA_Cntl_sub_gemm1( cntl ) ); 00078 00079 /* C1 = C1 + B1 * A11 */ 00080 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00081 alpha, A11, B1, beta, C1, 00082 FLA_Cntl_sub_symm( cntl ) ); 00083 00084 /* C2 = C2 + B1 * A21' */ 00085 FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, 00086 alpha, B1, A21, FLA_ONE, C2, 00087 FLA_Cntl_sub_gemm2( cntl ) ); 00088 00089 /*------------------------------------------------------------*/ 00090 00091 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ A01, A02, 00092 /* ************** */ /* ****************** */ 00093 A10, /**/ A11, A12, 00094 &ABL, /**/ &ABR, A20, /**/ A21, A22, 00095 FLA_BR ); 00096 00097 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ B1, B2, 00098 FLA_RIGHT ); 00099 00100 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ C1, C2, 00101 FLA_RIGHT ); 00102 00103 } 00104 00105 return FLA_SUCCESS; 00106 }
FLA_Error FLA_Symm_rl_blk_var9 | ( | FLA_Obj | alpha, | |
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C, | |||
fla_symm_t * | cntl | |||
) |
References FLA_Cont_with_3x1_to_2x1(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_2x1(), FLA_Repart_2x1_to_3x1(), and FLA_Symm_internal().
Referenced by FLA_Symm_rl().
00036 { 00037 FLA_Obj BT, B0, 00038 BB, B1, 00039 B2; 00040 00041 FLA_Obj CT, C0, 00042 CB, C1, 00043 C2; 00044 00045 dim_t b; 00046 00047 FLA_Part_2x1( B, &BT, 00048 &BB, 0, FLA_TOP ); 00049 00050 FLA_Part_2x1( C, &CT, 00051 &CB, 0, FLA_TOP ); 00052 00053 while ( FLA_Obj_length( BT ) < FLA_Obj_length( B ) ){ 00054 00055 b = FLA_Determine_blocksize( BB, FLA_BOTTOM, FLA_Cntl_blocksize( cntl ) ); 00056 00057 FLA_Repart_2x1_to_3x1( BT, &B0, 00058 /* ** */ /* ** */ 00059 &B1, 00060 BB, &B2, b, FLA_BOTTOM ); 00061 00062 FLA_Repart_2x1_to_3x1( CT, &C0, 00063 /* ** */ /* ** */ 00064 &C1, 00065 CB, &C2, b, FLA_BOTTOM ); 00066 00067 /*------------------------------------------------------------*/ 00068 00069 /* C1 = C1 + B1 * A */ 00070 FLA_Symm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR, 00071 alpha, A, B1, beta, C1, 00072 FLA_Cntl_sub_symm( cntl ) ); 00073 00074 /*------------------------------------------------------------*/ 00075 00076 FLA_Cont_with_3x1_to_2x1( &BT, B0, 00077 B1, 00078 /* ** */ /* ** */ 00079 &BB, B2, FLA_TOP ); 00080 00081 FLA_Cont_with_3x1_to_2x1( &CT, C0, 00082 C1, 00083 /* ** */ /* ** */ 00084 &CB, C2, FLA_TOP ); 00085 00086 } 00087 00088 return FLA_SUCCESS; 00089 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Ger_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_TL ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00054 00055 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02, 00059 /* ************* */ /* ************************** */ 00060 &a10t, /**/ &alpha11, &a12t, 00061 ABL, /**/ ABR, &A20, /**/ &a21, &A22, 00062 1, 1, FLA_BR ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &b1t, &B2, 00065 1, FLA_RIGHT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &c1t, &C2, 00068 1, FLA_RIGHT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* C0 = C0 + b1t * a10t */ 00073 FLA_Ger_external( alpha, b1t, a10t, C0 ); 00074 00075 /* c1t = c1t + B0 * a10t' */ 00076 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B0, a10t, FLA_ONE, c1t ); 00077 00078 /* c1t = c1t + b1t * alpha11 */ 00079 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02, 00084 a10t, alpha11, /**/ a12t, 00085 /* ************** */ /* ************************ */ 00086 &ABL, /**/ &ABR, A20, a21, /**/ A22, 00087 FLA_TL ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, b1t, /**/ B2, 00090 FLA_LEFT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, c1t, /**/ C2, 00093 FLA_LEFT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Cont_with_3x1_to_2x1(), FLA_Obj_length(), FLA_Part_2x1(), FLA_Repart_2x1_to_3x1(), and FLA_Symv_external().
00038 { 00039 FLA_Obj BT, B0, 00040 BB, b1t, 00041 B2; 00042 00043 FLA_Obj CT, C0, 00044 CB, c1t, 00045 C2; 00046 00047 00048 FLA_Part_2x1( B, &BT, 00049 &BB, 0, FLA_BOTTOM ); 00050 00051 FLA_Part_2x1( C, &CT, 00052 &CB, 0, FLA_BOTTOM ); 00053 00054 while ( FLA_Obj_length( BB ) < FLA_Obj_length( B ) ){ 00055 00056 00057 FLA_Repart_2x1_to_3x1( BT, &B0, 00058 &b1t, 00059 /* ** */ /* ** */ 00060 BB, &B2, 1, FLA_TOP ); 00061 00062 FLA_Repart_2x1_to_3x1( CT, &C0, 00063 &c1t, 00064 /* ** */ /* ** */ 00065 CB, &C2, 1, FLA_TOP ); 00066 00067 /*------------------------------------------------------------*/ 00068 00069 /* c1t = c1t + b1t * A */ 00070 /* c1t' = c1t' + A' * b1t' */ 00071 FLA_Symv_external( FLA_LOWER_TRIANGULAR, alpha, A, b1t, beta, c1t ); 00072 00073 /*------------------------------------------------------------*/ 00074 00075 FLA_Cont_with_3x1_to_2x1( &BT, B0, 00076 /* ** */ /* ** */ 00077 b1t, 00078 &BB, B2, FLA_BOTTOM ); 00079 00080 FLA_Cont_with_3x1_to_2x1( &CT, C0, 00081 /* ** */ /* ** */ 00082 c1t, 00083 &CB, C2, FLA_BOTTOM ); 00084 00085 } 00086 00087 return FLA_SUCCESS; 00088 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_TL ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00054 00055 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02, 00059 /* ************* */ /* ************************** */ 00060 &a10t, /**/ &alpha11, &a12t, 00061 ABL, /**/ ABR, &A20, /**/ &a21, &A22, 00062 1, 1, FLA_BR ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &b1t, &B2, 00065 1, FLA_RIGHT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &c1t, &C2, 00068 1, FLA_RIGHT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* c1t = c1t + B0 * a10t' */ 00073 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B0, a10t, FLA_ONE, c1t ); 00074 00075 /* c1t = c1t + b1t * alpha11 */ 00076 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00077 00078 /* c1t = c1t + B2 * a21 */ 00079 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B2, a21, FLA_ONE, c1t ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02, 00084 a10t, alpha11, /**/ a12t, 00085 /* ************** */ /* ************************ */ 00086 &ABL, /**/ &ABR, A20, a21, /**/ A22, 00087 FLA_TL ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, b1t, /**/ B2, 00090 FLA_LEFT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, c1t, /**/ C2, 00093 FLA_LEFT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Gerc_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_TL ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00054 00055 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02, 00059 /* ************* */ /* ************************** */ 00060 &a10t, /**/ &alpha11, &a12t, 00061 ABL, /**/ ABR, &A20, /**/ &a21, &A22, 00062 1, 1, FLA_BR ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &b1t, &B2, 00065 1, FLA_RIGHT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &c1t, &C2, 00068 1, FLA_RIGHT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* c1t = c1t + b1t * alpha11 */ 00073 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00074 00075 /* c1t = c1t + B2 * a21 */ 00076 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B2, a21, FLA_ONE, c1t ); 00077 00078 /* C2 = C2 + b1t * a21' */ 00079 FLA_Gerc_external( FLA_NO_CONJUGATE, FLA_CONJUGATE, alpha, b1t, a21, C2 ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02, 00084 a10t, alpha11, /**/ a12t, 00085 /* ************** */ /* ************************ */ 00086 &ABL, /**/ &ABR, A20, a21, /**/ A22, 00087 FLA_TL ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, b1t, /**/ B2, 00090 FLA_LEFT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, c1t, /**/ C2, 00093 FLA_LEFT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), FLA_Gerc_external(), FLA_Obj_length(), FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_TL ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00054 00055 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02, 00059 /* ************* */ /* ************************** */ 00060 &a10t, /**/ &alpha11, &a12t, 00061 ABL, /**/ ABR, &A20, /**/ &a21, &A22, 00062 1, 1, FLA_BR ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &b1t, &B2, 00065 1, FLA_RIGHT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &c1t, &C2, 00068 1, FLA_RIGHT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* C0 = C0 + b1t * a10t */ 00073 FLA_Ger_external( alpha, b1t, a10t, C0 ); 00074 00075 /* c1t = c1t + b1t * alpha11 */ 00076 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00077 00078 /* C2 = C2 + b1t * a21' */ 00079 FLA_Gerc_external( FLA_NO_CONJUGATE, FLA_CONJUGATE, alpha, b1t, a21, C2 ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02, 00084 a10t, alpha11, /**/ a12t, 00085 /* ************** */ /* ************************ */ 00086 &ABL, /**/ &ABR, A20, a21, /**/ A22, 00087 FLA_TL ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, b1t, /**/ B2, 00090 FLA_LEFT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, c1t, /**/ C2, 00093 FLA_LEFT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Gerc_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_BR ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00054 00055 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &a01, /**/ &A02, 00059 &a10t, &alpha11, /**/ &a12t, 00060 /* ************* */ /* ************************** */ 00061 ABL, /**/ ABR, &A20, &a21, /**/ &A22, 00062 1, 1, FLA_TL ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &b1t, /**/ &B2, 00065 1, FLA_LEFT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &c1t, /**/ &C2, 00068 1, FLA_LEFT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* c1t = c1t + b1t * alpha11 */ 00073 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00074 00075 /* c1t = c1t + B2 * a21 */ 00076 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B2, a21, FLA_ONE, c1t ); 00077 00078 /* C2 = C2 + b1t * a21' */ 00079 FLA_Gerc_external( FLA_NO_CONJUGATE, FLA_CONJUGATE, alpha, b1t, a21, C2 ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ a01, A02, 00084 /* ************** */ /* ************************ */ 00085 a10t, /**/ alpha11, a12t, 00086 &ABL, /**/ &ABR, A20, /**/ a21, A22, 00087 FLA_BR ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ b1t, B2, 00090 FLA_RIGHT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ c1t, C2, 00093 FLA_RIGHT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_BR ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00054 00055 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &a01, /**/ &A02, 00059 &a10t, &alpha11, /**/ &a12t, 00060 /* ************* */ /* ************************** */ 00061 ABL, /**/ ABR, &A20, &a21, /**/ &A22, 00062 1, 1, FLA_TL ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &b1t, /**/ &B2, 00065 1, FLA_LEFT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &c1t, /**/ &C2, 00068 1, FLA_LEFT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* c1t = c1t + B0 * a10t' */ 00073 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B0, a10t, FLA_ONE, c1t ); 00074 00075 /* c1t = c1t + b1t * alpha11 */ 00076 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00077 00078 /* c1t = c1t + B2 * a21 */ 00079 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B2, a21, FLA_ONE, c1t ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ a01, A02, 00084 /* ************** */ /* ************************ */ 00085 a10t, /**/ alpha11, a12t, 00086 &ABL, /**/ &ABR, A20, /**/ a21, A22, 00087 FLA_BR ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ b1t, B2, 00090 FLA_RIGHT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ c1t, C2, 00093 FLA_RIGHT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Ger_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_BR ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00054 00055 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &a01, /**/ &A02, 00059 &a10t, &alpha11, /**/ &a12t, 00060 /* ************* */ /* ************************** */ 00061 ABL, /**/ ABR, &A20, &a21, /**/ &A22, 00062 1, 1, FLA_TL ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &b1t, /**/ &B2, 00065 1, FLA_LEFT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &c1t, /**/ &C2, 00068 1, FLA_LEFT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* C0 = C0 + b1t * a10t */ 00073 FLA_Ger_external( alpha, b1t, a10t, C0 ); 00074 00075 /* c1t = c1t + B0 * a10t' */ 00076 FLA_Gemv_external( FLA_NO_TRANSPOSE, alpha, B0, a10t, FLA_ONE, c1t ); 00077 00078 /* c1t = c1t + b1t * alpha11 */ 00079 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ a01, A02, 00084 /* ************** */ /* ************************ */ 00085 a10t, /**/ alpha11, a12t, 00086 &ABL, /**/ &ABR, A20, /**/ a21, A22, 00087 FLA_BR ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ b1t, B2, 00090 FLA_RIGHT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ c1t, C2, 00093 FLA_RIGHT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Axpys_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), FLA_Gerc_external(), FLA_Obj_length(), FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x2_to_3x3().
00038 { 00039 FLA_Obj ATL, ATR, A00, a01, A02, 00040 ABL, ABR, a10t, alpha11, a12t, 00041 A20, a21, A22; 00042 00043 FLA_Obj BL, BR, B0, b1t, B2; 00044 00045 FLA_Obj CL, CR, C0, c1t, C2; 00046 00047 00048 FLA_Part_2x2( A, &ATL, &ATR, 00049 &ABL, &ABR, 0, 0, FLA_BR ); 00050 00051 FLA_Part_1x2( B, &BL, &BR, 0, FLA_RIGHT ); 00052 00053 FLA_Part_1x2( C, &CL, &CR, 0, FLA_RIGHT ); 00054 00055 while ( FLA_Obj_length( ABR ) < FLA_Obj_length( A ) ){ 00056 00057 00058 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, &a01, /**/ &A02, 00059 &a10t, &alpha11, /**/ &a12t, 00060 /* ************* */ /* ************************** */ 00061 ABL, /**/ ABR, &A20, &a21, /**/ &A22, 00062 1, 1, FLA_TL ); 00063 00064 FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, &b1t, /**/ &B2, 00065 1, FLA_LEFT ); 00066 00067 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, &c1t, /**/ &C2, 00068 1, FLA_LEFT ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 /* C0 = C0 + b1t * a10t */ 00073 FLA_Ger_external( alpha, b1t, a10t, C0 ); 00074 00075 /* c1t = c1t + b1t * alpha11 */ 00076 FLA_Axpys_external( alpha, alpha11, b1t, beta, c1t ); 00077 00078 /* C2 = C2 + b1t * a21' */ 00079 FLA_Gerc_external( FLA_NO_CONJUGATE, FLA_CONJUGATE, alpha, b1t, a21, C2 ); 00080 00081 /*------------------------------------------------------------*/ 00082 00083 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, /**/ a01, A02, 00084 /* ************** */ /* ************************ */ 00085 a10t, /**/ alpha11, a12t, 00086 &ABL, /**/ &ABR, A20, /**/ a21, A22, 00087 FLA_BR ); 00088 00089 FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, /**/ b1t, B2, 00090 FLA_RIGHT ); 00091 00092 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, /**/ c1t, C2, 00093 FLA_RIGHT ); 00094 00095 } 00096 00097 return FLA_SUCCESS; 00098 }
References FLA_Cont_with_3x1_to_2x1(), FLA_Obj_length(), FLA_Part_2x1(), FLA_Repart_2x1_to_3x1(), and FLA_Symv_external().
00038 { 00039 FLA_Obj BT, B0, 00040 BB, b1t, 00041 B2; 00042 00043 FLA_Obj CT, C0, 00044 CB, c1t, 00045 C2; 00046 00047 00048 FLA_Part_2x1( B, &BT, 00049 &BB, 0, FLA_TOP ); 00050 00051 FLA_Part_2x1( C, &CT, 00052 &CB, 0, FLA_TOP ); 00053 00054 while ( FLA_Obj_length( BT ) < FLA_Obj_length( B ) ){ 00055 00056 00057 FLA_Repart_2x1_to_3x1( BT, &B0, 00058 /* ** */ /* ** */ 00059 &b1t, 00060 BB, &B2, 1, FLA_BOTTOM ); 00061 00062 FLA_Repart_2x1_to_3x1( CT, &C0, 00063 /* ** */ /* ** */ 00064 &c1t, 00065 CB, &C2, 1, FLA_BOTTOM ); 00066 00067 /*------------------------------------------------------------*/ 00068 00069 /* c1t = c1t + b1t * A */ 00070 /* c1t' = c1t' + A' * b1t' */ 00071 FLA_Symv_external( FLA_LOWER_TRIANGULAR, alpha, A, b1t, beta, c1t ); 00072 00073 /*------------------------------------------------------------*/ 00074 00075 FLA_Cont_with_3x1_to_2x1( &BT, B0, 00076 b1t, 00077 /* ** */ /* ** */ 00078 &BB, B2, FLA_TOP ); 00079 00080 FLA_Cont_with_3x1_to_2x1( &CT, C0, 00081 c1t, 00082 /* ** */ /* ** */ 00083 &CB, C2, FLA_TOP ); 00084 00085 } 00086 00087 return FLA_SUCCESS; 00088 }