libflame  revision_anchor
Functions
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 
)

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().

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
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: blis_type_defs.h:132
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
int i
Definition: bl1_axmyv2.c:145
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Bidiag_UT_scale_diagonals()

FLA_Error FLA_Bidiag_UT_scale_diagonals ( FLA_Obj  alpha,
FLA_Obj  A 
)

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().

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 }
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Bidiag_UT_l_scale_diagonals(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Bidiag_UT_scale_diagonals.c:126
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
FLA_Error FLA_Bidiag_UT_scale_diagonals_check(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Bidiag_UT_scale_diagonals_check.c:13
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Error FLA_Bidiag_UT_u_scale_diagonals(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Bidiag_UT_scale_diagonals.c:30
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116

◆ FLA_Bidiag_UT_u_scale_diagonals()

FLA_Error FLA_Bidiag_UT_u_scale_diagonals ( FLA_Obj  alpha,
FLA_Obj  A 
)

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().

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 }
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
Definition: blis_type_defs.h:132
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:137