libflame  revision_anchor
Functions
FLA_LU_piv_unb_external.c File Reference

(r)

Functions

FLA_Error FLA_LU_piv_unb_external (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_LU_piv_unb_ext (FLA_Obj A, FLA_Obj p)
 

Function Documentation

◆ FLA_LU_piv_unb_ext()

FLA_Error FLA_LU_piv_unb_ext ( FLA_Obj  A,
FLA_Obj  p 
)
107 {
108  return FLA_LU_piv_unb_external( A, p );
109 }
FLA_Error FLA_LU_piv_unb_external(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_unb_external.c:13

References FLA_LU_piv_unb_external().

Referenced by FLA_LU_piv_internal().

◆ FLA_LU_piv_unb_external()

FLA_Error FLA_LU_piv_unb_external ( FLA_Obj  A,
FLA_Obj  p 
)
14 {
15  FLA_Error r_val = FLA_SUCCESS;
16 #ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17  int info;
18  FLA_Datatype datatype;
19  int m_A, n_A, cs_A;
20 
21  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
22  FLA_LU_piv_check( A, p );
23 
24  if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25 
26  datatype = FLA_Obj_datatype( A );
27 
28  m_A = FLA_Obj_length( A );
29  n_A = FLA_Obj_width( A );
30  cs_A = FLA_Obj_col_stride( A );
31 
32 
33  switch( datatype ){
34 
35  case FLA_FLOAT:
36  {
37  float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
38  int *buff_p = ( int * ) FLA_INT_PTR( p );
39 
40  F77_sgetf2( &m_A,
41  &n_A,
42  buff_A, &cs_A,
43  buff_p,
44  &info );
45 
46  break;
47  }
48 
49  case FLA_DOUBLE:
50  {
51  double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
52  int *buff_p = ( int * ) FLA_INT_PTR( p );
53 
54  F77_dgetf2( &m_A,
55  &n_A,
56  buff_A, &cs_A,
57  buff_p,
58  &info );
59 
60  break;
61  }
62 
63  case FLA_COMPLEX:
64  {
65  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
66  int *buff_p = ( int * ) FLA_INT_PTR( p );
67 
68  F77_cgetf2( &m_A,
69  &n_A,
70  buff_A, &cs_A,
71  buff_p,
72  &info );
73 
74  break;
75  }
76 
77  case FLA_DOUBLE_COMPLEX:
78  {
79  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
80  int *buff_p = ( int * ) FLA_INT_PTR( p );
81 
82  F77_zgetf2( &m_A,
83  &n_A,
84  buff_A, &cs_A,
85  buff_p,
86  &info );
87 
88  break;
89  }
90 
91  }
92 
93  FLA_Shift_pivots_to( FLA_NATIVE_PIVOTS, p );
94 
95  // Convert to zero-based indexing, if an index was reported.
96  if ( info > 0 ) r_val = info - 1;
97  else r_val = FLA_SUCCESS;
98 
99 #else
100  FLA_Check_error_code( FLA_EXTERNAL_LAPACK_NOT_IMPLEMENTED );
101 #endif
102 
103  return r_val;
104 }
FLA_Error FLA_LU_piv_check(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_check.c:13
int F77_cgetf2(int *m, int *n, scomplex *a, int *lda, int *ipiv, int *info)
int F77_sgetf2(int *m, int *n, float *a, int *lda, int *ipiv, int *info)
int F77_zgetf2(int *m, int *n, dcomplex *a, int *lda, int *ipiv, int *info)
int F77_dgetf2(int *m, int *n, double *a, int *lda, int *ipiv, int *info)
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
FLA_Bool FLA_Obj_has_zero_dim(FLA_Obj A)
Definition: FLA_Query.c:400
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
int FLA_Error
Definition: FLA_type_defs.h:47
int FLA_Datatype
Definition: FLA_type_defs.h:49
FLA_Error FLA_Shift_pivots_to(FLA_Pivot_type ptype, FLA_Obj p)
Definition: FLA_Shift_pivots_to.c:13
Definition: blis_type_defs.h:138
Definition: blis_type_defs.h:133

References F77_cgetf2(), F77_dgetf2(), F77_sgetf2(), F77_zgetf2(), FLA_Check_error_level(), FLA_LU_piv_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), and FLA_Shift_pivots_to().

Referenced by FLA_LU_piv_unb_ext().