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