libflame  revision_anchor
Functions
FLA_Hess_unb_external.c File Reference

(r)

Functions

FLA_Error FLA_Hess_unb_external (FLA_Obj A, FLA_Obj t, int ilo, int ihi)
 
FLA_Error FLA_Hess_unb_ext (FLA_Obj A, FLA_Obj t, int ilo, int ihi)
 

Function Documentation

◆ FLA_Hess_unb_ext()

FLA_Error FLA_Hess_unb_ext ( FLA_Obj  A,
FLA_Obj  t,
int  ilo,
int  ihi 
)

References FLA_Hess_unb_external().

118 {
119  return FLA_Hess_unb_external( A, t, ilo, ihi );
120 }
FLA_Error FLA_Hess_unb_external(FLA_Obj A, FLA_Obj t, int ilo, int ihi)
Definition: FLA_Hess_unb_external.c:13

◆ FLA_Hess_unb_external()

FLA_Error FLA_Hess_unb_external ( FLA_Obj  A,
FLA_Obj  t,
int  ilo,
int  ihi 
)

References F77_cgehd2(), F77_dgehd2(), F77_sgehd2(), F77_zgehd2(), FLA_Check_error_level(), FLA_Hess_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), and FLA_Obj_width().

Referenced by FLA_Hess_unb_ext().

14 {
15  int info = 0;
16 #ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17  FLA_Datatype datatype;
18  int n_A, cs_A;
19  FLA_Obj work_obj;
20 
21  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
22  FLA_Hess_check( A, t, ilo, ihi );
23 
24  if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25 
26  datatype = FLA_Obj_datatype( A );
27 
28  n_A = FLA_Obj_width( A );
29  cs_A = FLA_Obj_col_stride( A );
30 
31  FLA_Obj_create( datatype, n_A, 1, 0, 0, &work_obj );
32 
33  // Shift ilo and ihi from zero-based indexing to one-based indexing.
34  ilo += 1;
35  ihi += 1;
36 
37  switch( datatype ){
38 
39  case FLA_FLOAT:
40  {
41  float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
42  float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
43  float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
44 
45  F77_sgehd2( &n_A,
46  &ilo,
47  &ihi,
48  buff_A, &cs_A,
49  buff_t,
50  buff_work,
51  &info );
52 
53  break;
54  }
55 
56  case FLA_DOUBLE:
57  {
58  double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
59  double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
60  double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
61 
62  F77_dgehd2( &n_A,
63  &ilo,
64  &ihi,
65  buff_A, &cs_A,
66  buff_t,
67  buff_work,
68  &info );
69 
70  break;
71  }
72 
73  case FLA_COMPLEX:
74  {
75  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
76  scomplex *buff_t = ( scomplex * ) FLA_COMPLEX_PTR( t );
77  scomplex *buff_work = ( scomplex * ) FLA_COMPLEX_PTR( work_obj );
78 
79  F77_cgehd2( &n_A,
80  &ilo,
81  &ihi,
82  buff_A, &cs_A,
83  buff_t,
84  buff_work,
85  &info );
86 
87  break;
88  }
89 
90  case FLA_DOUBLE_COMPLEX:
91  {
92  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
93  dcomplex *buff_t = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( t );
94  dcomplex *buff_work = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( work_obj );
95 
96  F77_zgehd2( &n_A,
97  &ilo,
98  &ihi,
99  buff_A, &cs_A,
100  buff_t,
101  buff_work,
102  &info );
103 
104  break;
105  }
106 
107  }
108 
109  FLA_Obj_free( &work_obj );
110 #else
111  FLA_Check_error_code( FLA_EXTERNAL_LAPACK_NOT_IMPLEMENTED );
112 #endif
113 
114  return info;
115 }
FLA_Error FLA_Obj_create(FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj)
Definition: FLA_Obj.c:55
int F77_cgehd2(int *n, int *ilo, int *ihi, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *info)
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition: FLA_Obj.c:588
int F77_zgehd2(int *n, int *ilo, int *ihi, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *info)
int F77_sgehd2(int *n, int *ilo, int *ihi, float *a, int *lda, float *tau, float *work, int *info)
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: FLA_type_defs.h:158
FLA_Bool FLA_Obj_has_zero_dim(FLA_Obj A)
Definition: FLA_Query.c:400
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
Definition: blis_type_defs.h:132
int F77_dgehd2(int *n, int *ilo, int *ihi, double *a, int *lda, double *tau, double *work, int *info)
FLA_Error FLA_Hess_check(FLA_Obj A, FLA_Obj t, int ilo, int ihi)
Definition: FLA_Hess_check.c:13
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
Definition: blis_type_defs.h:137