238 eigen_assert((amat.rows() == amat.cols()) &&
"The factorization should be done on a square matrix");
248 SparseMatrix<Scalar, RowMajor, StorageIndex>
mat;
258 if (fill_in >
n) fill_in =
n;
261 Index nnzL = fill_in / 2;
266 for (
Index ii = 0; ii <
n; ii++) {
271 ju(ii) = convert_index<StorageIndex>(ii);
273 jr(ii) = convert_index<StorageIndex>(ii);
277 for (; j_it; ++j_it) {
281 ju(sizel) = convert_index<StorageIndex>(
k);
282 u(sizel) = j_it.value();
283 jr(
k) = convert_index<StorageIndex>(sizel);
285 }
else if (
k == ii) {
286 u(ii) = j_it.value();
289 Index jpos = ii + sizeu;
290 ju(jpos) = convert_index<StorageIndex>(
k);
291 u(jpos) = j_it.value();
292 jr(
k) = convert_index<StorageIndex>(jpos);
304 rownorm =
sqrt(rownorm);
313 Index minrow = ju.segment(jj, sizel - jj).minCoeff(&
k);
315 if (minrow != ju(jj)) {
319 jr(minrow) = convert_index<StorageIndex>(jj);
320 jr(
j) = convert_index<StorageIndex>(
k);
328 while (ki_it && ki_it.index() < minrow) ++ki_it;
330 Scalar fact = u(jj) / ki_it.value();
340 for (; ki_it; ++ki_it) {
358 ju(newpos) = convert_index<StorageIndex>(
j);
360 jr(
j) = convert_index<StorageIndex>(newpos);
366 ju(len) = convert_index<StorageIndex>(minrow);
373 for (
Index k = 0;
k < sizeu;
k++) jr(ju(ii +
k)) = -1;
380 typename Vector::SegmentReturnType ul(u.segment(0, sizel));
381 typename VectorI::SegmentReturnType jul(ju.segment(0, sizel));
399 u(ii + len) = u(ii +
k);
400 ju(ii + len) = ju(ii +
k);
405 typename Vector::SegmentReturnType uu(u.segment(ii + 1, sizeu - 1));
406 typename VectorI::SegmentReturnType juu(ju.segment(ii + 1, sizeu - 1));
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
#define eigen_internal_assert(x)
Definition: Macros.h:916
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
ComputationInfo m_info
Definition: IncompleteLUT.h:187
Matrix< StorageIndex, Dynamic, 1 > VectorI
Definition: IncompleteLUT.h:112
Matrix< Scalar, Dynamic, 1 > Vector
Definition: IncompleteLUT.h:111
Scalar_ Scalar
Definition: IncompleteLUT.h:108
SparseSymmetricPermutationProduct< Derived, Upper|Lower > twistedBy(const PermutationMatrix< Dynamic, Dynamic, StorageIndex > &perm) const
Definition: SparseMatrixBase.h:325
void startVec(Index outer)
Definition: SparseMatrix.h:451
void finalize()
Definition: SparseMatrix.h:461
void makeCompressed()
Definition: SparseMatrix.h:589
void resize(Index rows, Index cols)
Definition: SparseMatrix.h:734
Base::InnerIterator InnerIterator
Definition: SparseMatrix.h:138
void reserve(Index reserveSize)
Definition: SparseMatrix.h:315
Scalar & insertBackByOuterInnerUnordered(Index outer, Index inner)
Definition: SparseMatrix.h:442
#define min(a, b)
Definition: datatypes.h:22
@ NumericalIssue
Definition: Constants.h:442
@ Success
Definition: Constants.h:440
EIGEN_BLAS_FUNC() swap(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy)
Definition: level1_impl.h:117
char char char int int * k
Definition: level2_impl.h:374
EIGEN_DEVICE_FUNC IndexDest convert_index(const IndexSrc &idx)
Definition: XprHelper.h:63
Index QuickSplit(VectorV &row, VectorI &ind, Index ncut)
Definition: IncompleteLUT.h:31
EIGEN_DEVICE_FUNC bool abs2(bool x)
Definition: MathFunctions.h:1102
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::enable_if_t< std::is_base_of< DenseBase< std::decay_t< DerivedA > >, std::decay_t< DerivedA > >::value &&std::is_base_of< DenseBase< std::decay_t< DerivedB > >, std::decay_t< DerivedB > >::value, void > swap(DerivedA &&a, DerivedB &&b)
Definition: DenseBase.h:655
const Product< Lhs, Rhs > prod(const Lhs &lhs, const Rhs &rhs)
Definition: evaluators.cpp:7
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2