1 /*
2
3 Copyright (C) 2014, The University of Texas at Austin
4
5 This file is part of libflame and is available under the 3-Clause
6 BSD license, which can be found in the LICENSE file at the top-level
7 directory, or at http://opensource.org/licenses/BSD-3-Clause
8
9 */
10
11 #include "FLAME.h"
12
13 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
14
FLA_Trsm_ruc_unb_var3(FLA_Diag diagA,FLA_Obj alpha,FLA_Obj A,FLA_Obj B)15 FLA_Error FLA_Trsm_ruc_unb_var3( FLA_Diag diagA, FLA_Obj alpha, FLA_Obj A, FLA_Obj B )
16 {
17 FLA_Obj BT, B0,
18 BB, b1t,
19 B2;
20
21 FLA_Scal_external( alpha, B );
22
23 FLA_Part_2x1( B, &BT,
24 &BB, 0, FLA_TOP );
25
26 while ( FLA_Obj_length( BT ) < FLA_Obj_length( B ) ){
27
28 FLA_Repart_2x1_to_3x1( BT, &B0,
29 /* ** */ /* *** */
30 &b1t,
31 BB, &B2, 1, FLA_BOTTOM );
32
33 /*------------------------------------------------------------*/
34
35 /* b1t = b1t * triu( A ); */
36 FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, diagA, A, b1t );
37
38 /*------------------------------------------------------------*/
39
40 FLA_Cont_with_3x1_to_2x1( &BT, B0,
41 b1t,
42 /* ** */ /* *** */
43 &BB, B2, FLA_TOP );
44
45 }
46
47 return FLA_SUCCESS;
48 }
49
50 #endif
51