libflame revision_anchor
FLA_LU_piv_blk_external.c File Reference

(r)

Functions

FLA_Error FLA_LU_piv_blk_external (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_LU_piv_blk_ext (FLA_Obj A, FLA_Obj p)
 

Function Documentation

◆ FLA_LU_piv_blk_ext()

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

References FLA_LU_piv_blk_external().

Referenced by FLA_LU_piv_internal().

◆ FLA_LU_piv_blk_external()

FLA_Error FLA_LU_piv_blk_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_sgetrf( &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_dgetrf( &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_cgetrf( &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_zgetrf( &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_zgetrf(int *m, int *n, dcomplex *a, int *lda, int *ipiv, int *info)
int F77_cgetrf(int *m, int *n, scomplex *a, int *lda, int *ipiv, int *info)
int F77_dgetrf(int *m, int *n, double *a, int *lda, int *ipiv, int *info)
int F77_sgetrf(int *m, int *n, float *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_cgetrf(), F77_dgetrf(), F77_sgetrf(), F77_zgetrf(), 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_blk_ext().