MOAB
4.9.3pre
|
#include <SparseLU_kernel_bmod.h>
Static Public Member Functions | |
template<typename BlockScalarVector , typename ScalarVector , typename IndexVector > | |
static EIGEN_DONT_INLINE void | run (const Index, BlockScalarVector &dense, ScalarVector &, ScalarVector &lusup, Index &luptr, const Index lda, const Index nrow, IndexVector &lsub, const Index lptr, const Index no_zeros) |
Definition at line 91 of file SparseLU_kernel_bmod.h.
EIGEN_DONT_INLINE void Eigen::internal::LU_kernel_bmod< 1 >::run | ( | const Index | , |
BlockScalarVector & | dense, | ||
ScalarVector & | , | ||
ScalarVector & | lusup, | ||
Index & | luptr, | ||
const Index | lda, | ||
const Index | nrow, | ||
IndexVector & | lsub, | ||
const Index | lptr, | ||
const Index | no_zeros | ||
) | [static] |
Definition at line 100 of file SparseLU_kernel_bmod.h.
{ typedef typename ScalarVector::Scalar Scalar; typedef typename IndexVector::Scalar StorageIndex; Scalar f = dense(lsub(lptr + no_zeros)); luptr += lda * no_zeros + no_zeros + 1; const Scalar* a(lusup.data() + luptr); const StorageIndex* irow(lsub.data()+lptr + no_zeros + 1); Index i = 0; for (; i+1 < nrow; i+=2) { Index i0 = *(irow++); Index i1 = *(irow++); Scalar a0 = *(a++); Scalar a1 = *(a++); Scalar d0 = dense.coeff(i0); Scalar d1 = dense.coeff(i1); d0 -= f*a0; d1 -= f*a1; dense.coeffRef(i0) = d0; dense.coeffRef(i1) = d1; } if(i<nrow) dense.coeffRef(*(irow++)) -= f * *(a++); }