libflame revision_anchor
Functions
FLA_SA_Apply_pivots.c File Reference

(r)

Functions

FLA_Error FLA_SA_Apply_pivots (FLA_Obj C, FLA_Obj E, FLA_Obj p)
 

Function Documentation

◆ FLA_SA_Apply_pivots()

FLA_Error FLA_SA_Apply_pivots ( FLA_Obj  C,
FLA_Obj  E,
FLA_Obj  p 
)
14{
15 FLA_Datatype datatype;
16 int m_C, n_C, cs_C;
17 int cs_E;
18 // int rs_C;
19 // int rs_E;
20 int m_p;
21 int i;
22 int* buff_p;
23
24 if ( FLA_Obj_has_zero_dim( C ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( C );
27
28 m_C = FLA_Obj_length( C );
29 n_C = FLA_Obj_width( C );
31 // rs_C = FLA_Obj_row_stride( C );
32
34 // rs_E = FLA_Obj_row_stride( E );
35
36 m_p = FLA_Obj_length( p );
37
38 buff_p = ( int * ) FLA_INT_PTR( p );
39
40
41 switch ( datatype ){
42
43 case FLA_FLOAT:
44 {
45 float* buff_C = ( float * ) FLA_FLOAT_PTR( C );
46 float* buff_E = ( float * ) FLA_FLOAT_PTR( E );
47
48 for ( i = 0; i < m_p; ++i )
49 {
50 if ( buff_p[ i ] != 0 )
51 bl1_sswap( n_C,
52 buff_C + 0*cs_C + i, cs_C,
53 buff_E + 0*cs_E + buff_p[ i ] - ( m_C - i ), cs_E );
54 }
55 break;
56 }
57
58 case FLA_DOUBLE:
59 {
60 double* buff_C = ( double * ) FLA_DOUBLE_PTR( C );
61 double* buff_E = ( double * ) FLA_DOUBLE_PTR( E );
62
63 for ( i = 0; i < m_p; ++i )
64 {
65 if ( buff_p[ i ] != 0 )
66 bl1_dswap( n_C,
67 buff_C + 0*cs_C + i, cs_C,
68 buff_E + 0*cs_E + buff_p[ i ] - ( m_C - i ), cs_E );
69 }
70 break;
71 }
72
73 case FLA_COMPLEX:
74 {
77
78 for ( i = 0; i < m_p; ++i )
79 {
80 if ( buff_p[ i ] != 0 )
81 bl1_cswap( n_C,
82 buff_C + 0*cs_C + i, cs_C,
83 buff_E + 0*cs_E + buff_p[ i ] - ( m_C - i ), cs_E );
84 }
85 break;
86 }
87
89 {
92
93 for ( i = 0; i < m_p; ++i )
94 {
95 if ( buff_p[ i ] != 0 )
96 bl1_zswap( n_C,
97 buff_C + 0*cs_C + i, cs_C,
98 buff_E + 0*cs_E + buff_p[ i ] - ( m_C - i ), cs_E );
99 }
100 break;
101 }
102
103 }
104
105 return FLA_SUCCESS;
106}
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
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
int i
Definition bl1_axmyv2.c:145
void bl1_zswap(int n, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_swap.c:52
void bl1_dswap(int n, double *x, int incx, double *y, int incy)
Definition bl1_swap.c:26
void bl1_cswap(int n, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_swap.c:39
void bl1_sswap(int n, float *x, int incx, float *y, int incy)
Definition bl1_swap.c:13
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References bl1_cswap(), bl1_dswap(), bl1_sswap(), bl1_zswap(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), and i.

Referenced by FLA_SA_FS_blk(), and FLA_SA_LU_blk().