fix bug #524: Pardiso's parameter array does not have to be aligned!

This commit is contained in:
Gael Guennebaud 2012-10-24 10:31:04 +02:00
parent 138897cc06
commit b3254c9af5

View File

@ -108,6 +108,7 @@ class PardisoImpl
typedef Matrix<Scalar,Dynamic,1> VectorType; typedef Matrix<Scalar,Dynamic,1> VectorType;
typedef Matrix<Index, 1, MatrixType::ColsAtCompileTime> IntRowVectorType; typedef Matrix<Index, 1, MatrixType::ColsAtCompileTime> IntRowVectorType;
typedef Matrix<Index, MatrixType::RowsAtCompileTime, 1> IntColVectorType; typedef Matrix<Index, MatrixType::RowsAtCompileTime, 1> IntColVectorType;
typedef Array<Index,64,1,DontAlign> ParameterType;
enum { enum {
ScalarIsComplex = NumTraits<Scalar>::IsComplex ScalarIsComplex = NumTraits<Scalar>::IsComplex
}; };
@ -142,7 +143,7 @@ class PardisoImpl
/** \warning for advanced usage only. /** \warning for advanced usage only.
* \returns a reference to the parameter array controlling PARDISO. * \returns a reference to the parameter array controlling PARDISO.
* See the PARDISO manual to know how to use it. */ * See the PARDISO manual to know how to use it. */
Array<Index,64,1>& pardisoParameterArray() ParameterType& pardisoParameterArray()
{ {
return m_iparm; return m_iparm;
} }
@ -295,7 +296,7 @@ class PardisoImpl
bool m_initialized, m_analysisIsOk, m_factorizationIsOk; bool m_initialized, m_analysisIsOk, m_factorizationIsOk;
Index m_type, m_msglvl; Index m_type, m_msglvl;
mutable void *m_pt[64]; mutable void *m_pt[64];
mutable Array<Index,64,1> m_iparm; mutable ParameterType m_iparm;
mutable IntColVectorType m_perm; mutable IntColVectorType m_perm;
Index m_size; Index m_size;