30 #ifndef SPARSELU_PIVOTL_H
31 #define SPARSELU_PIVOTL_H
62 template <
typename Scalar,
typename StorageIndex>
67 Index nsupc = jcol - fsupc;
73 StorageIndex* lsub_ptr = &(glu.
lsub.data()[lptr]);
76 Index diagind = iperm_c(jcol);
81 Index isub, icol, itemp,
k;
82 for (isub = nsupc; isub < nsupr; ++isub) {
84 rtemp =
abs(lu_col_ptr[isub]);
89 if (lsub_ptr[isub] == diagind)
diag = isub;
95 pivrow = pivmax <
RealScalar(0.0) ? diagind : lsub_ptr[pivptr];
96 perm_r(pivrow) = StorageIndex(jcol);
112 pivrow = lsub_ptr[pivptr];
116 perm_r(pivrow) = StorageIndex(jcol);
118 if (pivptr != nsupc) {
119 std::swap(lsub_ptr[pivptr], lsub_ptr[nsupc]);
122 for (icol = 0; icol <= nsupc; icol++) {
123 itemp = pivptr + icol *
lda;
124 std::swap(lu_sup_ptr[itemp], lu_sup_ptr[nsupc + icol *
lda]);
129 for (
k = nsupc + 1;
k < nsupr;
k++) lu_col_ptr[
k] *= temp;
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
ScalarVector::RealScalar RealScalar
Definition: SparseLUImpl.h:29
Index pivotL(const Index jcol, const RealScalar &diagpivotthresh, IndexVector &perm_r, IndexVector &iperm_c, Index &pivrow, GlobalLU_t &glu)
Performs the numerical pivoting on the current column of L, and the CDIV operation.
Definition: SparseLU_pivotL.h:63
EIGEN_BLAS_FUNC() swap(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy)
Definition: level1_impl.h:117
const char const int const RealScalar const RealScalar const int * lda
Definition: level2_cplx_impl.h:20
const char const char const char * diag
Definition: level2_impl.h:86
char char char int int * k
Definition: level2_impl.h:374
@ emptyIdxLU
Definition: SparseLU_Memory.h:41
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Definition: Eigen_Colamd.h:49
Definition: SparseLU_Structs.h:80
IndexVector xsup
Definition: SparseLU_Structs.h:82
IndexVector xlusup
Definition: SparseLU_Structs.h:86
IndexVector supno
Definition: SparseLU_Structs.h:83
IndexVector lsub
Definition: SparseLU_Structs.h:85
IndexVector xlsub
Definition: SparseLU_Structs.h:87
ScalarVector lusup
Definition: SparseLU_Structs.h:84