Re: [eigen] Arbitrary precision arithmetic support in Eigen

[ Thread Index | Date Index | More Archives ]

Hi Pavel,

thank you for your email. This is excellent!

Actually, the possibility to use arbitrary precision scalar types is
one of the main argument I often use to sell Eigen. So having an
officially supported module for your lib with extensive testing is
something I wanted to do for a while, but you know there are always so
many things to do.

So I'm really glad to see you added support for Eigen ;) I will add a
word on the website.

What to do next?

You said there is a lack of extensive testing. Since all our efforts
are now focused on the next Eigen version, Eigen3 which should be
release within a few months I'd rather spend time testing MPFR support
on Eigen3 than Eigen2. However, the way to add support for custom
scalar types slightly change. Fortunately, based on your current
support header file this should not be difficult. I can have a look at
it myself.

One leading question is where to put such an header file? Within Eigen
as a (MpfrSupport module) or as a standalone file as it is currently
the case? The main advantage I see in having it in Eigen itself is
that should simplify to had full and continuous testing What do you

Finally, once MPFR C++ will use expression template, adding a good
support for Eigen-MPFR C++ that leverages ET at both the matrix and
scalar type level will be more tricky because Eigen will have to know
about the returned expression types of the mpreal operations. We
currently do not have an easy solution for that but this is something
we have to workout anyway for many other use cases (e.g., to nest
Eigen's Matrix/Array types, for automatic differentiation, etc.)



On Wed, Jul 14, 2010 at 7:01 AM, Pavel Holoborodko
<pavel@xxxxxxxxxxxxxxx> wrote:
> Hello Everyone!
> First of all I would like to thank all the developers for the this
> beautifully designed and implemented library!
> I've learned a lot looking over it.
> I'm developer of C++ interface for the arbitrary precision floating point
> arithmetic library MPFR:
> During last year I've received couple of questions from the users on how to
> use my wrapper together with Eigen. There was discussion in KDE forum on the
> topic but it seems that not all problems were solved:
> Recently the most complete (hopefully:)) bridge for embedding mpreal type
> into Eigen was created.
> Please check home page under "Software using MPFR C++" for header file
> mpreal_eigen.h:
> So, now user can equip Eigen with arbitrary precision arithmetic by:
> 1. Installing  MPFR and GMP libraries.
> 2. Using MPFR C++ interface (mpreal.h, mpreal.cpp) along with header file
> mpreal_eigen.h
> 3. Using mpreal type (provided by MPFR C++) instead of built-in type double
> or float.
> Precision (number of bits used for significant) can be setup globally by
> mpreal::set_default_prec().
> For instance double has only 53 bits precision with machine epsilon 1e-16
> (maximum 16 correct digits).
> Using mpreal user can do calculations with any precision, e.g. 1024 bits
> with machine epsilon 1e-309 (309 correct digits).
> I would appreciate if someone who intensively use/develop Eigen would test
> how MPFR C++ works with Eigen.
> Any suggestions for improvement, test reports, etc.  are very very welcome.
> Also I would appreciate if Eigen webpage or documentation will reference
> such possibility on using arbitrary precision arithmetic.
> I think, this option could be very useful for the users.
> Besides reference on my site would give me huge support and motivation for
> further improvement.
> All the best,
> Pavel Holoborodko.
> P.S.
> I'm planning to release new version of MPFR C++ soon based on expression
> templates inspired by Eigen.

Mail converted by MHonArc 2.6.19+