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