mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-15 13:15:57 +08:00
bug #1379: fix compilation in sparse*diagonal*dense with openmp
(grafted from 0fe278f7bed761e0dd3ddec16503794f8ccf84eb )
This commit is contained in:
parent
556c03a09d
commit
9d83411cc4
@ -81,6 +81,8 @@ public:
|
|||||||
: m_sparseXprImpl(sparseXpr), m_diagCoeffImpl(diagCoeff)
|
: m_sparseXprImpl(sparseXpr), m_diagCoeffImpl(diagCoeff)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
Index nonZerosEstimate() const { return m_sparseXprImpl.nonZerosEstimate(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
evaluator<SparseXprType> m_sparseXprImpl;
|
evaluator<SparseXprType> m_sparseXprImpl;
|
||||||
evaluator<DiagonalCoeffType> m_diagCoeffImpl;
|
evaluator<DiagonalCoeffType> m_diagCoeffImpl;
|
||||||
@ -122,6 +124,8 @@ struct sparse_diagonal_product_evaluator<SparseXprType, DiagCoeffType, SDP_AsCwi
|
|||||||
: m_sparseXprEval(sparseXpr), m_diagCoeffNested(diagCoeff)
|
: m_sparseXprEval(sparseXpr), m_diagCoeffNested(diagCoeff)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
Index nonZerosEstimate() const { return m_sparseXprEval.nonZerosEstimate(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
evaluator<SparseXprType> m_sparseXprEval;
|
evaluator<SparseXprType> m_sparseXprEval;
|
||||||
DiagCoeffNested m_diagCoeffNested;
|
DiagCoeffNested m_diagCoeffNested;
|
||||||
|
@ -241,6 +241,7 @@ template<typename SparseMatrixType> void sparse_product()
|
|||||||
// also check with a SparseWrapper:
|
// also check with a SparseWrapper:
|
||||||
DenseVector v1 = DenseVector::Random(cols);
|
DenseVector v1 = DenseVector::Random(cols);
|
||||||
DenseVector v2 = DenseVector::Random(rows);
|
DenseVector v2 = DenseVector::Random(rows);
|
||||||
|
DenseVector v3 = DenseVector::Random(rows);
|
||||||
VERIFY_IS_APPROX(m3=m2*v1.asDiagonal(), refM3=refM2*v1.asDiagonal());
|
VERIFY_IS_APPROX(m3=m2*v1.asDiagonal(), refM3=refM2*v1.asDiagonal());
|
||||||
VERIFY_IS_APPROX(m3=m2.transpose()*v2.asDiagonal(), refM3=refM2.transpose()*v2.asDiagonal());
|
VERIFY_IS_APPROX(m3=m2.transpose()*v2.asDiagonal(), refM3=refM2.transpose()*v2.asDiagonal());
|
||||||
VERIFY_IS_APPROX(m3=v2.asDiagonal()*m2, refM3=v2.asDiagonal()*refM2);
|
VERIFY_IS_APPROX(m3=v2.asDiagonal()*m2, refM3=v2.asDiagonal()*refM2);
|
||||||
@ -248,6 +249,9 @@ template<typename SparseMatrixType> void sparse_product()
|
|||||||
|
|
||||||
VERIFY_IS_APPROX(m3=v2.asDiagonal()*m2*v1.asDiagonal(), refM3=v2.asDiagonal()*refM2*v1.asDiagonal());
|
VERIFY_IS_APPROX(m3=v2.asDiagonal()*m2*v1.asDiagonal(), refM3=v2.asDiagonal()*refM2*v1.asDiagonal());
|
||||||
|
|
||||||
|
VERIFY_IS_APPROX(v2=m2*v1.asDiagonal()*v1, refM2*v1.asDiagonal()*v1);
|
||||||
|
VERIFY_IS_APPROX(v3=v2.asDiagonal()*m2*v1, v2.asDiagonal()*refM2*v1);
|
||||||
|
|
||||||
// evaluate to a dense matrix to check the .row() and .col() iterator functions
|
// evaluate to a dense matrix to check the .row() and .col() iterator functions
|
||||||
VERIFY_IS_APPROX(d3=m2*d1, refM3=refM2*d1);
|
VERIFY_IS_APPROX(d3=m2*d1, refM3=refM2*d1);
|
||||||
VERIFY_IS_APPROX(d3=m2.transpose()*d2, refM3=refM2.transpose()*d2);
|
VERIFY_IS_APPROX(d3=m2.transpose()*d2, refM3=refM2.transpose()*d2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user