libflame revision_anchor
Functions
FLA_Triangularize.c File Reference

(r)

Functions

FLA_Error FLA_Triangularize (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
 

Function Documentation

◆ FLA_Triangularize()

FLA_Error FLA_Triangularize ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A 
)
14{
15 FLA_Datatype datatype;
16 int m_A, n_A;
17 int rs_A, cs_A;
19
22
23 datatype = FLA_Obj_datatype( A );
24
25 m_A = FLA_Obj_length( A );
26 n_A = FLA_Obj_width( A );
29
30 // We have to toggle the uplo parameter because we will use it to specify
31 // which triangle to zero out.
32 if ( uplo == FLA_LOWER_TRIANGULAR ) uplo = FLA_UPPER_TRIANGULAR;
33 else uplo = FLA_LOWER_TRIANGULAR;
34
36
37 switch ( datatype ){
38
39 case FLA_FLOAT:
40 {
41 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
42 float *buff_0 = ( float * ) FLA_FLOAT_PTR( FLA_ZERO );
43 float *buff_1 = ( float * ) FLA_FLOAT_PTR( FLA_ONE );
44
46 m_A,
47 n_A,
48 buff_0,
49 buff_A, rs_A, cs_A );
50
51 if ( diag == FLA_UNIT_DIAG )
52 bl1_ssetdiag( 0,
53 m_A,
54 n_A,
55 buff_1,
56 buff_A, rs_A, cs_A );
57 else if ( diag == FLA_ZERO_DIAG )
58 bl1_ssetdiag( 0,
59 m_A,
60 n_A,
61 buff_0,
62 buff_A, rs_A, cs_A );
63
64 break;
65 }
66
67 case FLA_DOUBLE:
68 {
69 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
70 double *buff_0 = ( double * ) FLA_DOUBLE_PTR( FLA_ZERO );
71 double *buff_1 = ( double * ) FLA_DOUBLE_PTR( FLA_ONE );
72
74 m_A,
75 n_A,
76 buff_0,
77 buff_A, rs_A, cs_A );
78
79 if ( diag == FLA_UNIT_DIAG )
80 bl1_dsetdiag( 0,
81 m_A,
82 n_A,
83 buff_1,
84 buff_A, rs_A, cs_A );
85 else if ( diag == FLA_ZERO_DIAG )
86 bl1_dsetdiag( 0,
87 m_A,
88 n_A,
89 buff_0,
90 buff_A, rs_A, cs_A );
91
92 break;
93 }
94
95 case FLA_COMPLEX:
96 {
100
102 m_A,
103 n_A,
104 buff_0,
105 buff_A, rs_A, cs_A );
106
107 if ( diag == FLA_UNIT_DIAG )
108 bl1_csetdiag( 0,
109 m_A,
110 n_A,
111 buff_1,
112 buff_A, rs_A, cs_A );
113 else if ( diag == FLA_ZERO_DIAG )
114 bl1_csetdiag( 0,
115 m_A,
116 n_A,
117 buff_0,
118 buff_A, rs_A, cs_A );
119
120 break;
121 }
122
124 {
128
130 m_A,
131 n_A,
132 buff_0,
133 buff_A, rs_A, cs_A );
134
135 if ( diag == FLA_UNIT_DIAG )
136 bl1_zsetdiag( 0,
137 m_A,
138 n_A,
139 buff_1,
140 buff_A, rs_A, cs_A );
141 else if ( diag == FLA_ZERO_DIAG )
142 bl1_zsetdiag( 0,
143 m_A,
144 n_A,
145 buff_0,
146 buff_A, rs_A, cs_A );
147
148 break;
149 }
150
151 }
152
153 return FLA_SUCCESS;
154}
FLA_Error FLA_Triangularize_check(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
Definition FLA_Triangularize_check.c:13
FLA_Obj FLA_ZERO
Definition FLA_Init.c:20
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition FLA_Query.c:167
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition FLA_Query.c:174
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
void FLA_Param_map_flame_to_blis_uplo(FLA_Uplo uplo, uplo1_t *blis_uplo)
Definition FLA_Param.c:285
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
int i
Definition bl1_axmyv2.c:145
void bl1_zsetdiag(int offset, int m, int n, dcomplex *sigma, dcomplex *a, int a_rs, int a_cs)
Definition bl1_setdiag.c:98
void bl1_csetmr(uplo1_t uplo, int m, int n, scomplex *sigma, scomplex *a, int a_rs, int a_cs)
Definition bl1_setmr.c:119
void bl1_csetdiag(int offset, int m, int n, scomplex *sigma, scomplex *a, int a_rs, int a_cs)
Definition bl1_setdiag.c:76
void bl1_dsetdiag(int offset, int m, int n, double *sigma, double *a, int a_rs, int a_cs)
Definition bl1_setdiag.c:55
void bl1_ssetdiag(int offset, int m, int n, float *sigma, float *a, int a_rs, int a_cs)
Definition bl1_setdiag.c:34
void bl1_dsetmr(uplo1_t uplo, int m, int n, double *sigma, double *a, int a_rs, int a_cs)
Definition bl1_setmr.c:66
void bl1_zsetmr(uplo1_t uplo, int m, int n, dcomplex *sigma, dcomplex *a, int a_rs, int a_cs)
Definition bl1_setmr.c:172
void bl1_ssetmr(uplo1_t uplo, int m, int n, float *sigma, float *a, int a_rs, int a_cs)
Definition bl1_setmr.c:13
uplo1_t
Definition blis_type_defs.h:61
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References bl1_csetdiag(), bl1_csetmr(), bl1_dsetdiag(), bl1_dsetmr(), bl1_ssetdiag(), bl1_ssetmr(), bl1_zsetdiag(), bl1_zsetmr(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_ONE, FLA_Param_map_flame_to_blis_uplo(), FLA_Triangularize_check(), FLA_ZERO, and i.

Referenced by FLA_Bidiag_UT_u_blf_var4(), FLA_Bidiag_UT_u_blk_var4(), FLA_Bidiag_UT_u_blk_var5(), FLA_Hess_UT_blf_var2(), FLA_Hess_UT_blf_var3(), FLA_Hess_UT_blf_var4(), FLA_Hess_UT_blk_var1(), FLA_Hess_UT_blk_var2(), FLA_Hess_UT_blk_var3(), FLA_Hess_UT_blk_var4(), FLA_SA_LU_unb(), FLA_Tridiag_UT_l_blf_var3(), FLA_Tridiag_UT_l_blk_var3(), and FLASH_Triangularize().