libflame revision_anchor
Functions
bl1_symmize.c File Reference

(r)

Functions

void bl1_ssymmize (conj1_t conj, uplo1_t uplo, int m, float *a, int a_rs, int a_cs)
 
void bl1_dsymmize (conj1_t conj, uplo1_t uplo, int m, double *a, int a_rs, int a_cs)
 
void bl1_csymmize (conj1_t conj, uplo1_t uplo, int m, scomplex *a, int a_rs, int a_cs)
 
void bl1_zsymmize (conj1_t conj, uplo1_t uplo, int m, dcomplex *a, int a_rs, int a_cs)
 

Function Documentation

◆ bl1_csymmize()

void bl1_csymmize ( conj1_t  conj,
uplo1_t  uplo,
int  m,
scomplex a,
int  a_rs,
int  a_cs 
)
236{
239 scomplex* a_jj;
240 int rs_src, cs_src, inc_src;
241 int rs_dst, cs_dst, inc_dst;
242 int n_iter;
243 int j;
244
245 // Return early if possible.
246 if ( bl1_zero_dim1( m ) ) return;
247
248 // Assume A is square.
249 n_iter = m;
250
251 // Initialize with appropriate values based on storage.
252 if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
253 {
254 cs_src = 1;
255 rs_src = 0;
256 inc_src = a_cs;
257 cs_dst = a_cs;
258 rs_dst = 0;
259 inc_dst = 1;
260 }
261 else if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
262 {
263 cs_src = a_cs;
264 rs_src = 0;
265 inc_src = 1;
266 cs_dst = 1;
267 rs_dst = 0;
268 inc_dst = a_cs;
269 }
270 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
271 {
272 cs_src = 0;
273 rs_src = a_rs;
274 inc_src = 1;
275 cs_dst = 0;
276 rs_dst = 1;
277 inc_dst = a_rs;
278 }
279 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
280 {
281 cs_src = 0;
282 rs_src = 1;
283 inc_src = a_rs;
284 cs_dst = 0;
285 rs_dst = a_rs;
286 inc_dst = 1;
287 }
288 else if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
289 {
290 // General stride with column-major tilt looks similar to column-major.
291 // General stride with row-major tilt looks similar to row-major.
292 if ( a_rs < a_cs )
293 {
294 cs_src = 1 * a_rs;
295 rs_src = 0;
296 inc_src = a_cs;
297 cs_dst = a_cs;
298 rs_dst = 0;
299 inc_dst = 1 * a_rs;
300 }
301 else // if ( a_rs > a_cs )
302 {
303 cs_src = 0;
304 rs_src = a_rs;
305 inc_src = 1 * a_cs;
306 cs_dst = 0;
307 rs_dst = 1 * a_cs;
308 inc_dst = a_rs;
309 }
310 }
311 else // if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
312 {
313 // General stride with column-major tilt looks similar to column-major.
314 // General stride with row-major tilt looks similar to row-major.
315 if ( a_rs < a_cs )
316 {
317 cs_src = a_cs;
318 rs_src = 0;
319 inc_src = 1 * a_rs;
320 cs_dst = 1 * a_rs;
321 rs_dst = 0;
322 inc_dst = a_cs;
323 }
324 else // if ( a_rs > a_cs )
325 {
326 cs_src = 0;
327 rs_src = 1 * a_cs;
328 inc_src = a_rs;
329 cs_dst = 0;
330 rs_dst = a_rs;
331 inc_dst = 1 * a_cs;
332 }
333 }
334
335 for ( j = 0; j < n_iter; j++ )
336 {
337 a_src = a + j*cs_src + j*rs_src;
338 a_dst = a + j*cs_dst + j*rs_dst;
339
341 j,
342 a_src, inc_src,
343 a_dst, inc_dst );
344
345 if ( bl1_is_conj( conj ) )
346 {
347 a_jj = a + j*a_rs + j*a_cs;
348 a_jj->imag = bl1_s0();
349 }
350 }
351}
int i
Definition bl1_axmyv2.c:145
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:49
int bl1_is_row_storage(int rs, int cs)
Definition bl1_is.c:95
int bl1_is_gen_storage(int rs, int cs)
Definition bl1_is.c:100
int bl1_is_upper(uplo1_t uplo)
Definition bl1_is.c:54
int bl1_is_lower(uplo1_t uplo)
Definition bl1_is.c:49
int bl1_is_col_storage(int rs, int cs)
Definition bl1_is.c:90
int bl1_zero_dim1(int m)
Definition bl1_is.c:113
int bl1_is_conj(conj1_t conj)
Definition bl1_is.c:42
float bl1_s0(void)
Definition bl1_constants.c:111
Definition blis_type_defs.h:133

References bl1_ccopyv(), bl1_is_col_storage(), bl1_is_conj(), bl1_is_gen_storage(), bl1_is_lower(), bl1_is_row_storage(), bl1_is_upper(), bl1_s0(), bl1_zero_dim1(), and scomplex::imag.

Referenced by FLA_Hermitianize(), and FLA_Symmetrize().

◆ bl1_dsymmize()

void bl1_dsymmize ( conj1_t  conj,
uplo1_t  uplo,
int  m,
double a,
int  a_rs,
int  a_cs 
)
125{
126 double* a_src;
127 double* a_dst;
128 int rs_src, cs_src, inc_src;
129 int rs_dst, cs_dst, inc_dst;
130 int n_iter;
131 int j;
132
133 // Return early if possible.
134 if ( bl1_zero_dim1( m ) ) return;
135
136 // Assume A is square.
137 n_iter = m;
138
139 // Initialize with appropriate values based on storage.
140 if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
141 {
142 cs_src = 1;
143 rs_src = 0;
144 inc_src = a_cs;
145 cs_dst = a_cs;
146 rs_dst = 0;
147 inc_dst = 1;
148 }
149 else if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
150 {
151 cs_src = a_cs;
152 rs_src = 0;
153 inc_src = 1;
154 cs_dst = 1;
155 rs_dst = 0;
156 inc_dst = a_cs;
157 }
158 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
159 {
160 cs_src = 0;
161 rs_src = a_rs;
162 inc_src = 1;
163 cs_dst = 0;
164 rs_dst = 1;
165 inc_dst = a_rs;
166 }
167 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
168 {
169 cs_src = 0;
170 rs_src = 1;
171 inc_src = a_rs;
172 cs_dst = 0;
173 rs_dst = a_rs;
174 inc_dst = 1;
175 }
176 else if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
177 {
178 // General stride with column-major tilt looks similar to column-major.
179 // General stride with row-major tilt looks similar to row-major.
180 if ( a_rs < a_cs )
181 {
182 cs_src = 1 * a_rs;
183 rs_src = 0;
184 inc_src = a_cs;
185 cs_dst = a_cs;
186 rs_dst = 0;
187 inc_dst = 1 * a_rs;
188 }
189 else // if ( a_rs > a_cs )
190 {
191 cs_src = 0;
192 rs_src = a_rs;
193 inc_src = 1 * a_cs;
194 cs_dst = 0;
195 rs_dst = 1 * a_cs;
196 inc_dst = a_rs;
197 }
198 }
199 else // if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
200 {
201 // General stride with column-major tilt looks similar to column-major.
202 // General stride with row-major tilt looks similar to row-major.
203 if ( a_rs < a_cs )
204 {
205 cs_src = a_cs;
206 rs_src = 0;
207 inc_src = 1 * a_rs;
208 cs_dst = 1 * a_rs;
209 rs_dst = 0;
210 inc_dst = a_cs;
211 }
212 else // if ( a_rs > a_cs )
213 {
214 cs_src = 0;
215 rs_src = 1 * a_cs;
216 inc_src = a_rs;
217 cs_dst = 0;
218 rs_dst = a_rs;
219 inc_dst = 1 * a_cs;
220 }
221 }
222
223 for ( j = 0; j < n_iter; j++ )
224 {
225 a_src = a + j*cs_src + j*rs_src;
226 a_dst = a + j*cs_dst + j*rs_dst;
227
229 j,
230 a_src, inc_src,
231 a_dst, inc_dst );
232 }
233}
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42

References bl1_dcopyv(), bl1_is_col_storage(), bl1_is_gen_storage(), bl1_is_lower(), bl1_is_row_storage(), bl1_is_upper(), and bl1_zero_dim1().

Referenced by FLA_Hermitianize(), and FLA_Symmetrize().

◆ bl1_ssymmize()

void bl1_ssymmize ( conj1_t  conj,
uplo1_t  uplo,
int  m,
float a,
int  a_rs,
int  a_cs 
)
14{
15 float* a_src;
16 float* a_dst;
17 int rs_src, cs_src, inc_src;
18 int rs_dst, cs_dst, inc_dst;
19 int n_iter;
20 int j;
21
22 // Return early if possible.
23 if ( bl1_zero_dim1( m ) ) return;
24
25 // Assume A is square.
26 n_iter = m;
27
28 // Initialize with appropriate values based on storage.
29 if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
30 {
31 cs_src = 1;
32 rs_src = 0;
33 inc_src = a_cs;
34 cs_dst = a_cs;
35 rs_dst = 0;
36 inc_dst = 1;
37 }
38 else if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
39 {
40 cs_src = a_cs;
41 rs_src = 0;
42 inc_src = 1;
43 cs_dst = 1;
44 rs_dst = 0;
45 inc_dst = a_cs;
46 }
47 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
48 {
49 cs_src = 0;
50 rs_src = a_rs;
51 inc_src = 1;
52 cs_dst = 0;
53 rs_dst = 1;
54 inc_dst = a_rs;
55 }
56 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
57 {
58 cs_src = 0;
59 rs_src = 1;
60 inc_src = a_rs;
61 cs_dst = 0;
62 rs_dst = a_rs;
63 inc_dst = 1;
64 }
65 else if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
66 {
67 // General stride with column-major tilt looks similar to column-major.
68 // General stride with row-major tilt looks similar to row-major.
69 if ( a_rs < a_cs )
70 {
71 cs_src = 1 * a_rs;
72 rs_src = 0;
73 inc_src = a_cs;
74 cs_dst = a_cs;
75 rs_dst = 0;
76 inc_dst = 1 * a_rs;
77 }
78 else // if ( a_rs > a_cs )
79 {
80 cs_src = 0;
81 rs_src = a_rs;
82 inc_src = 1 * a_cs;
83 cs_dst = 0;
84 rs_dst = 1 * a_cs;
85 inc_dst = a_rs;
86 }
87 }
88 else // if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
89 {
90 // General stride with column-major tilt looks similar to column-major.
91 // General stride with row-major tilt looks similar to row-major.
92 if ( a_rs < a_cs )
93 {
94 cs_src = a_cs;
95 rs_src = 0;
96 inc_src = 1 * a_rs;
97 cs_dst = 1 * a_rs;
98 rs_dst = 0;
99 inc_dst = a_cs;
100 }
101 else // if ( a_rs > a_cs )
102 {
103 cs_src = 0;
104 rs_src = 1 * a_cs;
105 inc_src = a_rs;
106 cs_dst = 0;
107 rs_dst = a_rs;
108 inc_dst = 1 * a_cs;
109 }
110 }
111
112 for ( j = 0; j < n_iter; j++ )
113 {
114 a_src = a + j*cs_src + j*rs_src;
115 a_dst = a + j*cs_dst + j*rs_dst;
116
118 j,
119 a_src, inc_src,
120 a_dst, inc_dst );
121 }
122}
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition bl1_copyv.c:35

References bl1_is_col_storage(), bl1_is_gen_storage(), bl1_is_lower(), bl1_is_row_storage(), bl1_is_upper(), bl1_scopyv(), and bl1_zero_dim1().

Referenced by FLA_Hermitianize(), and FLA_Symmetrize().

◆ bl1_zsymmize()

void bl1_zsymmize ( conj1_t  conj,
uplo1_t  uplo,
int  m,
dcomplex a,
int  a_rs,
int  a_cs 
)
354{
357 dcomplex* a_jj;
358 int rs_src, cs_src, inc_src;
359 int rs_dst, cs_dst, inc_dst;
360 int n_iter;
361 int j;
362
363 // Return early if possible.
364 if ( bl1_zero_dim1( m ) ) return;
365
366 // Assume A is square.
367 n_iter = m;
368
369 // Initialize with appropriate values based on storage.
370 if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
371 {
372 cs_src = 1;
373 rs_src = 0;
374 inc_src = a_cs;
375 cs_dst = a_cs;
376 rs_dst = 0;
377 inc_dst = 1;
378 }
379 else if ( bl1_is_col_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
380 {
381 cs_src = a_cs;
382 rs_src = 0;
383 inc_src = 1;
384 cs_dst = 1;
385 rs_dst = 0;
386 inc_dst = a_cs;
387 }
388 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
389 {
390 cs_src = 0;
391 rs_src = a_rs;
392 inc_src = 1;
393 cs_dst = 0;
394 rs_dst = 1;
395 inc_dst = a_rs;
396 }
397 else if ( bl1_is_row_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
398 {
399 cs_src = 0;
400 rs_src = 1;
401 inc_src = a_rs;
402 cs_dst = 0;
403 rs_dst = a_rs;
404 inc_dst = 1;
405 }
406 else if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_lower( uplo ) )
407 {
408 // General stride with column-major tilt looks similar to column-major.
409 // General stride with row-major tilt looks similar to row-major.
410 if ( a_rs < a_cs )
411 {
412 cs_src = 1 * a_rs;
413 rs_src = 0;
414 inc_src = a_cs;
415 cs_dst = a_cs;
416 rs_dst = 0;
417 inc_dst = 1 * a_rs;
418 }
419 else // if ( a_rs > a_cs )
420 {
421 cs_src = 0;
422 rs_src = a_rs;
423 inc_src = 1 * a_cs;
424 cs_dst = 0;
425 rs_dst = 1 * a_cs;
426 inc_dst = a_rs;
427 }
428 }
429 else // if ( bl1_is_gen_storage( a_rs, a_cs ) && bl1_is_upper( uplo ) )
430 {
431 // General stride with column-major tilt looks similar to column-major.
432 // General stride with row-major tilt looks similar to row-major.
433 if ( a_rs < a_cs )
434 {
435 cs_src = a_cs;
436 rs_src = 0;
437 inc_src = 1 * a_rs;
438 cs_dst = 1 * a_rs;
439 rs_dst = 0;
440 inc_dst = a_cs;
441 }
442 else // if ( a_rs > a_cs )
443 {
444 cs_src = 0;
445 rs_src = 1 * a_cs;
446 inc_src = a_rs;
447 cs_dst = 0;
448 rs_dst = a_rs;
449 inc_dst = 1 * a_cs;
450 }
451 }
452
453 for ( j = 0; j < n_iter; j++ )
454 {
455 a_src = a + j*cs_src + j*rs_src;
456 a_dst = a + j*cs_dst + j*rs_dst;
457
459 j,
460 a_src, inc_src,
461 a_dst, inc_dst );
462
463 if ( bl1_is_conj( conj ) )
464 {
465 a_jj = a + j*a_rs + j*a_cs;
466 a_jj->imag = bl1_d0();
467 }
468 }
469}
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63
double bl1_d0(void)
Definition bl1_constants.c:118
Definition blis_type_defs.h:138

References bl1_d0(), bl1_is_col_storage(), bl1_is_conj(), bl1_is_gen_storage(), bl1_is_lower(), bl1_is_row_storage(), bl1_is_upper(), bl1_zcopyv(), bl1_zero_dim1(), and dcomplex::imag.

Referenced by FLA_Hermitianize(), and FLA_Symmetrize().