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
FLA_Hermitianize(FLA_Uplo uplo,FLA_Obj A)13 FLA_Error FLA_Hermitianize( FLA_Uplo uplo, FLA_Obj A )
14 {
15 FLA_Datatype datatype;
16 dim_t n_A;
17 dim_t rs_A, cs_A;
18 conj1_t blis_conj;
19 uplo1_t blis_uplo;
20
21 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
22 FLA_Hermitianize_check( uplo, A );
23
24 datatype = FLA_Obj_datatype( A );
25
26 n_A = FLA_Obj_width( A );
27 rs_A = FLA_Obj_row_stride( A );
28 cs_A = FLA_Obj_col_stride( A );
29
30 FLA_Param_map_flame_to_blis_conj( FLA_CONJUGATE, &blis_conj );
31 FLA_Param_map_flame_to_blis_uplo( uplo, &blis_uplo );
32
33
34 switch ( datatype ){
35
36 case FLA_FLOAT:
37 {
38 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
39
40 bl1_ssymmize( blis_conj,
41 blis_uplo,
42 n_A,
43 buff_A, rs_A, cs_A );
44
45 break;
46 }
47
48 case FLA_DOUBLE:
49 {
50 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
51
52 bl1_dsymmize( blis_conj,
53 blis_uplo,
54 n_A,
55 buff_A, rs_A, cs_A );
56
57 break;
58 }
59
60 case FLA_COMPLEX:
61 {
62 scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
63
64 bl1_csymmize( blis_conj,
65 blis_uplo,
66 n_A,
67 buff_A, rs_A, cs_A );
68
69 break;
70 }
71
72 case FLA_DOUBLE_COMPLEX:
73 {
74 dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
75
76 bl1_zsymmize( blis_conj,
77 blis_uplo,
78 n_A,
79 buff_A, rs_A, cs_A );
80
81 break;
82 }
83
84 }
85
86 return FLA_SUCCESS;
87 }
88
89