MOAB  4.9.3pre
Eigen::internal::LU_kernel_bmod< 1 > Struct Template Reference

#include <SparseLU_kernel_bmod.h>

List of all members.

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)

Detailed Description

template<>
struct Eigen::internal::LU_kernel_bmod< 1 >

Definition at line 91 of file SparseLU_kernel_bmod.h.


Member Function Documentation

template<typename BlockScalarVector , typename ScalarVector , typename IndexVector >
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++);
}

The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines