Skip to content

Commit 4269d29

Browse files
committed
Merge pull request #15 from yixuan/Eigen3.2.3
Update Eigen to 3.2.3
2 parents 5674c6d + 81c4275 commit 4269d29

47 files changed

Lines changed: 2126 additions & 156 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2014-12-22 Yixuan Qiu <yixuan.qiu@cos.name>
2+
3+
* inst/include/Eigen: Updated to release 3.2.3 of Eigen
4+
* DESCRIPTION: Idem
5+
* README.md: Idem
6+
17
2014-11-23 Yixuan Qiu <yixuan.qiu@cos.name>
28

39
* inst/unitTests/runit.wrap.R: Added a number of unit tests

DESCRIPTION

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Package: RcppEigen
22
Type: Package
33
Title: Rcpp integration for the Eigen templated linear algebra library.
4-
Version: 0.3.2.2.0
5-
Date: 2014-08-21
4+
Version: 0.3.2.3.0
5+
Date: 2014-12-22
66
Author: Douglas Bates, Romain Francois and Dirk Eddelbuettel;
77
the authors of Eigen for the included version of Eigen
88
Maintainer: Dirk Eddelbuettel <edd@debian.org>
@@ -16,7 +16,7 @@ Description: R and Eigen integration using Rcpp.
1616
implementations based on Lapack and level-3 BLAS.
1717
.
1818
The RcppEigen package includes the header files from the Eigen C++
19-
template library (currently version 3.2.2). Thus users do not need to
19+
template library (currently version 3.2.3). Thus users do not need to
2020
install Eigen itself in order to use RcppEigen.
2121
.
2222
Since version 3.1.1, Eigen is licensed under the Mozilla Public License

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ performance on many algorithms is comparable with some of the best
1313
implementations based on `Lapack` and level-3 `BLAS`.
1414

1515
The `RcppEigen` package includes the header files from the Eigen C++
16-
template library (currently version 3.2.2). Thus users do not need to
16+
template library (currently version 3.2.3). Thus users do not need to
1717
install `Eigen` itself in order to use `RcppEigen`.

inst/NEWS.Rd

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
\title{News for Package 'RcppEigen'}
33
\newcommand{\cpkg}{\href{http://CRAN.R-project.org/package=#1}{\pkg{#1}}}
44

5+
\section{Changes in RcppEigen version 0.3.2.3.0 (2014-12-22)}{
6+
\itemize{
7+
\item Updated to version 3.2.3 of Eigen
8+
}
9+
}
10+
511
\section{Changes in RcppEigen version 0.3.2.2.0 (2014-08-19)}{
612
\itemize{
713
\item Updated to version 3.2.2 of Eigen

inst/include/Eigen/src/Cholesky/LDLT.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ LDLT<MatrixType,_UpLo>& LDLT<MatrixType,_UpLo>::compute(const MatrixType& a)
442442
m_transpositions.resize(size);
443443
m_isInitialized = false;
444444
m_temporary.resize(size);
445+
m_sign = internal::ZeroSign;
445446

446447
internal::ldlt_inplace<UpLo>::unblocked(m_matrix, m_transpositions, m_temporary, m_sign);
447448

@@ -502,7 +503,6 @@ struct solve_retval<LDLT<_MatrixType,_UpLo>, Rhs>
502503
using std::abs;
503504
using std::max;
504505
typedef typename LDLTType::MatrixType MatrixType;
505-
typedef typename LDLTType::Scalar Scalar;
506506
typedef typename LDLTType::RealScalar RealScalar;
507507
const typename Diagonal<const MatrixType>::RealReturnType vectorD(dec().vectorD());
508508
// In some previous versions, tolerance was set to the max of 1/highest and the maximal diagonal entry * epsilon

inst/include/Eigen/src/Core/ArrayWrapper.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ struct traits<ArrayWrapper<ExpressionType> >
2929
: public traits<typename remove_all<typename ExpressionType::Nested>::type >
3030
{
3131
typedef ArrayXpr XprKind;
32+
// Let's remove NestByRefBit
33+
enum {
34+
Flags0 = traits<typename remove_all<typename ExpressionType::Nested>::type >::Flags,
35+
Flags = Flags0 & ~NestByRefBit
36+
};
3237
};
3338
}
3439

@@ -149,6 +154,11 @@ struct traits<MatrixWrapper<ExpressionType> >
149154
: public traits<typename remove_all<typename ExpressionType::Nested>::type >
150155
{
151156
typedef MatrixXpr XprKind;
157+
// Let's remove NestByRefBit
158+
enum {
159+
Flags0 = traits<typename remove_all<typename ExpressionType::Nested>::type >::Flags,
160+
Flags = Flags0 & ~NestByRefBit
161+
};
152162
};
153163
}
154164

inst/include/Eigen/src/Core/DenseBase.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,10 @@ template<typename Derived> class DenseBase
462462
template<int p> RealScalar lpNorm() const;
463463

464464
template<int RowFactor, int ColFactor>
465-
const Replicate<Derived,RowFactor,ColFactor> replicate() const;
466-
const Replicate<Derived,Dynamic,Dynamic> replicate(Index rowFacor,Index colFactor) const;
465+
inline const Replicate<Derived,RowFactor,ColFactor> replicate() const;
466+
467+
typedef Replicate<Derived,Dynamic,Dynamic> ReplicateReturnType;
468+
inline const ReplicateReturnType replicate(Index rowFacor,Index colFactor) const;
467469

468470
typedef Reverse<Derived, BothDirections> ReverseReturnType;
469471
typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;

inst/include/Eigen/src/Core/Diagonal.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,18 +190,18 @@ MatrixBase<Derived>::diagonal() const
190190
*
191191
* \sa MatrixBase::diagonal(), class Diagonal */
192192
template<typename Derived>
193-
inline typename MatrixBase<Derived>::template DiagonalIndexReturnType<DynamicIndex>::Type
193+
inline typename MatrixBase<Derived>::DiagonalDynamicIndexReturnType
194194
MatrixBase<Derived>::diagonal(Index index)
195195
{
196-
return typename DiagonalIndexReturnType<DynamicIndex>::Type(derived(), index);
196+
return DiagonalDynamicIndexReturnType(derived(), index);
197197
}
198198

199199
/** This is the const version of diagonal(Index). */
200200
template<typename Derived>
201-
inline typename MatrixBase<Derived>::template ConstDiagonalIndexReturnType<DynamicIndex>::Type
201+
inline typename MatrixBase<Derived>::ConstDiagonalDynamicIndexReturnType
202202
MatrixBase<Derived>::diagonal(Index index) const
203203
{
204-
return typename ConstDiagonalIndexReturnType<DynamicIndex>::Type(derived(), index);
204+
return ConstDiagonalDynamicIndexReturnType(derived(), index);
205205
}
206206

207207
/** \returns an expression of the \a DiagIndex-th sub or super diagonal of the matrix \c *this

inst/include/Eigen/src/Core/GeneralProduct.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ EIGEN_DONT_INLINE void outer_product_selector_run(const ProductType& prod, Dest&
232232
// FIXME not very good if rhs is real and lhs complex while alpha is real too
233233
const Index cols = dest.cols();
234234
for (Index j=0; j<cols; ++j)
235-
func(dest.col(j), prod.rhs().coeff(j) * prod.lhs());
235+
func(dest.col(j), prod.rhs().coeff(0,j) * prod.lhs());
236236
}
237237

238238
// Row major
@@ -243,7 +243,7 @@ EIGEN_DONT_INLINE void outer_product_selector_run(const ProductType& prod, Dest&
243243
// FIXME not very good if lhs is real and rhs complex while alpha is real too
244244
const Index rows = dest.rows();
245245
for (Index i=0; i<rows; ++i)
246-
func(dest.row(i), prod.lhs().coeff(i) * prod.rhs());
246+
func(dest.row(i), prod.lhs().coeff(i,0) * prod.rhs());
247247
}
248248

249249
template<typename Lhs, typename Rhs>

inst/include/Eigen/src/Core/MapBase.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,11 @@ template<typename Derived> class MapBase<Derived, WriteAccessors>
234234
return derived();
235235
}
236236

237-
using Base::Base::operator=;
237+
// In theory MapBase<Derived, ReadOnlyAccessors> should not make a using Base::operator=,
238+
// and thus we should directly do: using Base::Base::operator=;
239+
// However, this would confuse recent MSVC 2013 (bug 821), and since MapBase<Derived, ReadOnlyAccessors>
240+
// has operator= to make ICC 11 happy, we can also make MSVC 2013 happy as follow:
241+
using Base::operator=;
238242
};
239243

240244
#undef EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS

0 commit comments

Comments
 (0)