fix compilation errors with ICC

This commit is contained in:
Gael Guennebaud 2012-02-03 23:16:52 +01:00
parent a594d7ffd7
commit bc7b251cd9
2 changed files with 14 additions and 13 deletions

View File

@ -142,14 +142,15 @@ struct conservative_sparse_sparse_product_selector;
template<typename Lhs, typename Rhs, typename ResultType> template<typename Lhs, typename Rhs, typename ResultType>
struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,ColMajor,ColMajor,ColMajor> struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,ColMajor,ColMajor,ColMajor>
{ {
typedef typename traits<typename remove_all<Lhs>::type>::Scalar Scalar; typedef typename remove_all<Lhs>::type LhsCleaned;
typedef typename LhsCleaned::Scalar Scalar;
static void run(const Lhs& lhs, const Rhs& rhs, ResultType& res) static void run(const Lhs& lhs, const Rhs& rhs, ResultType& res)
{ {
typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix;
typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix;
ColMajorMatrix resCol(lhs.rows(),rhs.cols()); ColMajorMatrix resCol(lhs.rows(),rhs.cols());
conservative_sparse_sparse_product_impl<Lhs,Rhs,ColMajorMatrix>(lhs, rhs, resCol); internal::conservative_sparse_sparse_product_impl<Lhs,Rhs,ColMajorMatrix>(lhs, rhs, resCol);
// sort the non zeros: // sort the non zeros:
RowMajorMatrix resRow(resCol); RowMajorMatrix resRow(resCol);
res = resRow; res = resRow;
@ -164,7 +165,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,RowMajor,C
typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix;
RowMajorMatrix rhsRow = rhs; RowMajorMatrix rhsRow = rhs;
RowMajorMatrix resRow(lhs.rows(), rhs.cols()); RowMajorMatrix resRow(lhs.rows(), rhs.cols());
conservative_sparse_sparse_product_impl<RowMajorMatrix,Lhs,RowMajorMatrix>(rhsRow, lhs, resRow); internal::conservative_sparse_sparse_product_impl<RowMajorMatrix,Lhs,RowMajorMatrix>(rhsRow, lhs, resRow);
res = resRow; res = resRow;
} }
}; };
@ -177,7 +178,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,ColMajor,R
typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix;
RowMajorMatrix lhsRow = lhs; RowMajorMatrix lhsRow = lhs;
RowMajorMatrix resRow(lhs.rows(), rhs.cols()); RowMajorMatrix resRow(lhs.rows(), rhs.cols());
conservative_sparse_sparse_product_impl<Rhs,RowMajorMatrix,RowMajorMatrix>(rhs, lhsRow, resRow); internal::conservative_sparse_sparse_product_impl<Rhs,RowMajorMatrix,RowMajorMatrix>(rhs, lhsRow, resRow);
res = resRow; res = resRow;
} }
}; };
@ -189,7 +190,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,RowMajor,R
{ {
typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix;
RowMajorMatrix resRow(lhs.rows(), rhs.cols()); RowMajorMatrix resRow(lhs.rows(), rhs.cols());
conservative_sparse_sparse_product_impl<Rhs,Lhs,RowMajorMatrix>(rhs, lhs, resRow); internal::conservative_sparse_sparse_product_impl<Rhs,Lhs,RowMajorMatrix>(rhs, lhs, resRow);
res = resRow; res = resRow;
} }
}; };
@ -204,7 +205,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,ColMajor,C
{ {
typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix;
ColMajorMatrix resCol(lhs.rows(), rhs.cols()); ColMajorMatrix resCol(lhs.rows(), rhs.cols());
conservative_sparse_sparse_product_impl<Lhs,Rhs,ColMajorMatrix>(lhs, rhs, resCol); internal::conservative_sparse_sparse_product_impl<Lhs,Rhs,ColMajorMatrix>(lhs, rhs, resCol);
res = resCol; res = resCol;
} }
}; };
@ -217,7 +218,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,RowMajor,C
typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix;
ColMajorMatrix lhsCol = lhs; ColMajorMatrix lhsCol = lhs;
ColMajorMatrix resCol(lhs.rows(), rhs.cols()); ColMajorMatrix resCol(lhs.rows(), rhs.cols());
conservative_sparse_sparse_product_impl<ColMajorMatrix,Rhs,ColMajorMatrix>(lhsCol, rhs, resCol); internal::conservative_sparse_sparse_product_impl<ColMajorMatrix,Rhs,ColMajorMatrix>(lhsCol, rhs, resCol);
res = resCol; res = resCol;
} }
}; };
@ -230,7 +231,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,ColMajor,R
typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix;
ColMajorMatrix rhsCol = rhs; ColMajorMatrix rhsCol = rhs;
ColMajorMatrix resCol(lhs.rows(), rhs.cols()); ColMajorMatrix resCol(lhs.rows(), rhs.cols());
conservative_sparse_sparse_product_impl<Lhs,ColMajorMatrix,ColMajorMatrix>(lhs, rhsCol, resCol); internal::conservative_sparse_sparse_product_impl<Lhs,ColMajorMatrix,ColMajorMatrix>(lhs, rhsCol, resCol);
res = resCol; res = resCol;
} }
}; };
@ -243,7 +244,7 @@ struct conservative_sparse_sparse_product_selector<Lhs,Rhs,ResultType,RowMajor,R
typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,RowMajor> RowMajorMatrix;
typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix;
RowMajorMatrix resRow(lhs.rows(),rhs.cols()); RowMajorMatrix resRow(lhs.rows(),rhs.cols());
conservative_sparse_sparse_product_impl<Rhs,Lhs,RowMajorMatrix>(rhs, lhs, resRow); internal::conservative_sparse_sparse_product_impl<Rhs,Lhs,RowMajorMatrix>(rhs, lhs, resRow);
// sort the non zeros: // sort the non zeros:
ColMajorMatrix resCol(resRow); ColMajorMatrix resCol(resRow);
res = resCol; res = resCol;

View File

@ -101,7 +101,7 @@ struct sparse_sparse_product_with_pruning_selector<Lhs,Rhs,ResultType,ColMajor,C
static void run(const Lhs& lhs, const Rhs& rhs, ResultType& res, RealScalar tolerance) static void run(const Lhs& lhs, const Rhs& rhs, ResultType& res, RealScalar tolerance)
{ {
typename remove_all<ResultType>::type _res(res.rows(), res.cols()); typename remove_all<ResultType>::type _res(res.rows(), res.cols());
sparse_sparse_product_with_pruning_impl<Lhs,Rhs,ResultType>(lhs, rhs, _res, tolerance); internal::sparse_sparse_product_with_pruning_impl<Lhs,Rhs,ResultType>(lhs, rhs, _res, tolerance);
res.swap(_res); res.swap(_res);
} }
}; };
@ -115,7 +115,7 @@ struct sparse_sparse_product_with_pruning_selector<Lhs,Rhs,ResultType,ColMajor,C
// we need a col-major matrix to hold the result // we need a col-major matrix to hold the result
typedef SparseMatrix<typename ResultType::Scalar> SparseTemporaryType; typedef SparseMatrix<typename ResultType::Scalar> SparseTemporaryType;
SparseTemporaryType _res(res.rows(), res.cols()); SparseTemporaryType _res(res.rows(), res.cols());
sparse_sparse_product_with_pruning_impl<Lhs,Rhs,SparseTemporaryType>(lhs, rhs, _res, tolerance); internal::sparse_sparse_product_with_pruning_impl<Lhs,Rhs,SparseTemporaryType>(lhs, rhs, _res, tolerance);
res = _res; res = _res;
} }
}; };
@ -128,7 +128,7 @@ struct sparse_sparse_product_with_pruning_selector<Lhs,Rhs,ResultType,RowMajor,R
{ {
// let's transpose the product to get a column x column product // let's transpose the product to get a column x column product
typename remove_all<ResultType>::type _res(res.rows(), res.cols()); typename remove_all<ResultType>::type _res(res.rows(), res.cols());
sparse_sparse_product_with_pruning_impl<Rhs,Lhs,ResultType>(rhs, lhs, _res, tolerance); internal::sparse_sparse_product_with_pruning_impl<Rhs,Lhs,ResultType>(rhs, lhs, _res, tolerance);
res.swap(_res); res.swap(_res);
} }
}; };
@ -142,7 +142,7 @@ struct sparse_sparse_product_with_pruning_selector<Lhs,Rhs,ResultType,RowMajor,R
typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix; typedef SparseMatrix<typename ResultType::Scalar,ColMajor> ColMajorMatrix;
ColMajorMatrix colLhs(lhs); ColMajorMatrix colLhs(lhs);
ColMajorMatrix colRhs(rhs); ColMajorMatrix colRhs(rhs);
sparse_sparse_product_with_pruning_impl<ColMajorMatrix,ColMajorMatrix,ResultType>(colLhs, colRhs, res, tolerance); internal::sparse_sparse_product_with_pruning_impl<ColMajorMatrix,ColMajorMatrix,ResultType>(colLhs, colRhs, res, tolerance);
// let's transpose the product to get a column x column product // let's transpose the product to get a column x column product
// typedef SparseMatrix<typename ResultType::Scalar> SparseTemporaryType; // typedef SparseMatrix<typename ResultType::Scalar> SparseTemporaryType;