Fwd: [eigen] 3.2 released!

23 views
Skip to first unread message

Bob Carpenter

unread,
Jul 24, 2013, 11:31:08 AM7/24/13
to stan...@googlegroups.com
I can create a pull request for Eigen 3.2 if I can ever get
untangled from the merge conflicts in my other branches caused
by the Boost update.

- Bob

From the Eigen list:

------------------------------------
exactly one year and one month since 3.1, Eigen 3.2 has been released
today, on July 24, 2013.

Since Eigen 3.1, the key new features of this version are: a built-in
supernodal sparse LU solver adapted from SuperLU, a rank-revealing
sparse QR factorization with numerical column pivoting, a RealQZ
factorization, a GeneralizedEigenSolver, and a Ref<> class allowing
to write non templated function taking various kind of Eigen dense
objects without copies.

This release also includes a few new functions for dense and sparse
matrices, built-in COLAMD ordering, support to SuiteSparse QR and
Metis, as well as some accuracy and performance improvements.

ChangeLog: http://eigen.tuxfamily.org/index.php?title=ChangeLog#Eigen_3.2.0.
----------------------------------

Ben Goodrich

unread,
Jul 24, 2013, 1:22:22 PM7/24/13
to stan...@googlegroups.com
It was fine when I tested it last week. But I think the only new feature we might use is the Ref<> thingie.

Ben

Bob Carpenter

unread,
Jul 24, 2013, 1:58:16 PM7/24/13
to stan...@googlegroups.com
There's this discussion:

http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html

and then the doc for Ref:

http://eigen.tuxfamily.org/dox-devel/classEigen_1_1Ref.html

which seems to get around the hack in the functions doc.

To make good use of either of these, it would seem to me that
we'd need our functions called in Stan to return Eigen expression
templates.

We can do this by grabbing the traits for the matrix, which
will give us the underlying Scalar type as well as
RowsAtCompileTime and ColsAtCompileTime (1 or Dynamic).

I'm not sure how helpful it would be without having mixed
type expression templates.

For example, a simple regression coeff-matrix product beta * X,
you want to avoid copying an intermediate for beta * X, but
beta is going to be a var and X a double, so we can't use
Eigen's built-in product expression template as we'd like to in:

y ~ normal(beta * X, sigma);

- Bob
Reply all
Reply to author
Forward
0 new messages