libflame revision_anchor
FLA_Bidiag_UT_scale_diagonals.c File Reference

(r)

Functions

FLA_Error FLA_Bidiag_UT_scale_diagonals (FLA_Obj alpha, FLA_Obj A)
 
FLA_Error FLA_Bidiag_UT_u_scale_diagonals (FLA_Obj alpha, FLA_Obj A)
 
FLA_Error FLA_Bidiag_UT_l_scale_diagonals (FLA_Obj alpha, FLA_Obj A)
 

Function Documentation

◆ FLA_Bidiag_UT_l_scale_diagonals()

FLA_Error FLA_Bidiag_UT_l_scale_diagonals ( FLA_Obj alpha,
FLA_Obj A )
127{
128 FLA_Datatype datatype;
129 int m_A;
130 int rs_A, cs_A;
131 int i;
132
133 datatype = FLA_Obj_datatype( A );
134
135 m_A = FLA_Obj_length( A );
136
137 rs_A = FLA_Obj_row_stride( A );
138 cs_A = FLA_Obj_col_stride( A );
139
140 switch ( datatype )
141 {
142 case FLA_FLOAT:
143 {
144 float* buff_A = FLA_FLOAT_PTR( A );
145 float* buff_alpha = FLA_FLOAT_PTR( alpha );
146 for ( i = 0; i < m_A; ++i )
147 {
148 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
149 float* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
150 int m_ahead = m_A - i - 1;
151
152 bl1_sscals( buff_alpha, alpha11 );
153
154 if ( m_ahead > 0 )
155 bl1_sscals( buff_alpha, a21_t );
156 }
157
158 break;
159 }
160
161 case FLA_DOUBLE:
162 {
163 double* buff_A = FLA_DOUBLE_PTR( A );
164 double* buff_alpha = FLA_DOUBLE_PTR( alpha );
165 for ( i = 0; i < m_A; ++i )
166 {
167 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
168 double* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
169 int m_ahead = m_A - i - 1;
170
171 bl1_dscals( buff_alpha, alpha11 );
172
173 if ( m_ahead > 0 )
174 bl1_dscals( buff_alpha, a21_t );
175 }
176
177 break;
178 }
179
180 case FLA_COMPLEX:
181 {
182 scomplex* buff_A = FLA_COMPLEX_PTR( A );
183 float* buff_alpha = FLA_FLOAT_PTR( alpha );
184 for ( i = 0; i < m_A; ++i )
185 {
186 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
187 scomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
188 int m_ahead = m_A - i - 1;
189
190 bl1_csscals( buff_alpha, alpha11 );
191
192 if ( m_ahead > 0 )
193 bl1_csscals( buff_alpha, a21_t );
194 }
195
196 break;
197 }
198
199 case FLA_DOUBLE_COMPLEX:
200 {
201 dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
202 double* buff_alpha = FLA_DOUBLE_PTR( alpha );
203 for ( i = 0; i < m_A; ++i )
204 {
205 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
206 dcomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
207 int m_ahead = m_A - i - 1;
208
209 bl1_zdscals( buff_alpha, alpha11 );
210
211 if ( m_ahead > 0 )
212 bl1_zdscals( buff_alpha, a21_t );
213 }
214
215 break;
216 }
217 }
218
219 return FLA_SUCCESS;
220}
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
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
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Bidiag_UT_scale_diagonals(), and FLA_Tridiag_UT_scale_diagonals().

◆ FLA_Bidiag_UT_scale_diagonals()

FLA_Error FLA_Bidiag_UT_scale_diagonals ( FLA_Obj alpha,
FLA_Obj A )
14{
15 FLA_Error r_val = FLA_SUCCESS;
16
17 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
19
20 if ( FLA_Obj_length( A ) >= FLA_Obj_width( A ) )
21 r_val = FLA_Bidiag_UT_u_scale_diagonals( alpha, A );
22 else
23 r_val = FLA_Bidiag_UT_l_scale_diagonals( alpha, A );
24
25 return r_val;
26}
FLA_Error FLA_Bidiag_UT_u_scale_diagonals(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Bidiag_UT_scale_diagonals.c:30
FLA_Error FLA_Bidiag_UT_l_scale_diagonals(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Bidiag_UT_scale_diagonals.c:126
FLA_Error FLA_Bidiag_UT_scale_diagonals_check(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Bidiag_UT_scale_diagonals_check.c:13
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
int FLA_Error
Definition FLA_type_defs.h:47

References FLA_Bidiag_UT_l_scale_diagonals(), FLA_Bidiag_UT_scale_diagonals_check(), FLA_Bidiag_UT_u_scale_diagonals(), FLA_Check_error_level(), FLA_Obj_length(), and FLA_Obj_width().

◆ FLA_Bidiag_UT_u_scale_diagonals()

FLA_Error FLA_Bidiag_UT_u_scale_diagonals ( FLA_Obj alpha,
FLA_Obj A )
31{
32 FLA_Datatype datatype;
33 int n_A;
34 int rs_A, cs_A;
35 int i;
36
37 datatype = FLA_Obj_datatype( A );
38
39 n_A = FLA_Obj_width( A );
40
41 rs_A = FLA_Obj_row_stride( A );
42 cs_A = FLA_Obj_col_stride( A );
43
44 switch ( datatype )
45 {
46 case FLA_FLOAT:
47 {
48 float* buff_A = FLA_FLOAT_PTR( A );
49 float* buff_alpha = FLA_FLOAT_PTR( alpha );
50 for ( i = 0; i < n_A; ++i )
51 {
52 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
53 float* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
54 int n_ahead = n_A - i - 1;
55
56 bl1_sscals( buff_alpha, alpha11 );
57
58 if ( n_ahead > 0 )
59 bl1_sscals( buff_alpha, a12t_l );
60 }
61
62 break;
63 }
64
65 case FLA_DOUBLE:
66 {
67 double* buff_A = FLA_DOUBLE_PTR( A );
68 double* buff_alpha = FLA_DOUBLE_PTR( alpha );
69 for ( i = 0; i < n_A; ++i )
70 {
71 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
72 double* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
73 int n_ahead = n_A - i - 1;
74
75 bl1_dscals( buff_alpha, alpha11 );
76
77 if ( n_ahead > 0 )
78 bl1_dscals( buff_alpha, a12t_l );
79 }
80
81 break;
82 }
83
84 case FLA_COMPLEX:
85 {
86 scomplex* buff_A = FLA_COMPLEX_PTR( A );
87 float* buff_alpha = FLA_FLOAT_PTR( alpha );
88 for ( i = 0; i < n_A; ++i )
89 {
90 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
91 scomplex* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
92 int n_ahead = n_A - i - 1;
93
94 bl1_csscals( buff_alpha, alpha11 );
95
96 if ( n_ahead > 0 )
97 bl1_csscals( buff_alpha, a12t_l );
98 }
99
100 break;
101 }
102
103 case FLA_DOUBLE_COMPLEX:
104 {
105 dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
106 double* buff_alpha = FLA_DOUBLE_PTR( alpha );
107 for ( i = 0; i < n_A; ++i )
108 {
109 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
110 dcomplex* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
111 int n_ahead = n_A - i - 1;
112
113 bl1_zdscals( buff_alpha, alpha11 );
114
115 if ( n_ahead > 0 )
116 bl1_zdscals( buff_alpha, a12t_l );
117 }
118
119 break;
120 }
121 }
122
123 return FLA_SUCCESS;
124}

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_row_stride(), FLA_Obj_width(), and i.

Referenced by FLA_Bidiag_UT_scale_diagonals(), and FLA_Tridiag_UT_scale_diagonals().