Re: [eigen] Arbitrary precision arithmetic support in Eigen |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] Arbitrary precision arithmetic support in Eigen*From*: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>*Date*: Wed, 14 Jul 2010 22:27:20 +0200*Cc*: Pavel Holoborodko <pavel@xxxxxxxxxxxxxxx>*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; bh=WmXpA3K60o/hOacmIlRwdUR123bH1w52hJ5viC8Yx6k=; b=JSFet3yTui00t+TvPHAXm4NIN3tbUMg9H+S8zOXVrryZUpck42MSMrVdX6HzKYjCxW 6drDgTkDJOhEU/13h3+bhdYWUymtwwlR5Vy5Y1FpTgJRnDYekZxTfek8JRguHwheyRGc x2JNfwsfcsrkH43Idf2lFmir7qhlbIuRgBuCo=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=iNSMao/6ib5MmVcRvcbCvuiWhshCCXjHL5FjwtnLETw05q0hhZV2BwE4UJaE21Pybw d3oEnxjKhHoKDImd5R9ZxRM9ci8aCe0rgkaWnjswyHAX8cGCrEl2CcFD95n1hJa82Je+ 4B1vpEag/iR61wjWU0OqWpL0P992r5Csmbrf4=

while trying to write proper unit tests, I hit the following issue: mpfr::pow(2,-mpfr::mpreal::get_default_prec()) which is used to compute the epsilon takes forever... Is it "normal" ?? The following runs fine though: mpfr::mpreal x = 1; for(int i=0; i<mpfr::mpreal::get_default_prec(); ++i) x = x/2; Also is there an easy way to get the highest and lowest representable values ? They are needed for some operations in Eigen3. cheers, gael. On Wed, Jul 14, 2010 at 9:24 PM, Gael Guennebaud <gael.guennebaud@xxxxxxxxx> wrote: > ok, I could not resit to adapt it for Eigen3. Actually this is very > useful to stress Eigen with scalar types having non trivial ctor/dtor > (i.e., allocating/freeing memory), and bingo (!) there was a bug in > ei_aligned_detete() for null pointers ;) > > gael > > > On Wed, Jul 14, 2010 at 4:06 PM, Gael Guennebaud > <gael.guennebaud@xxxxxxxxx> wrote: >> 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 >> think? >> >> 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.) >> >> cheers, >> >> gael >> >> >> >> >> >> 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: http://www.holoborodko.com/pavel/?page_id=12.. >>> >>> 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: >>> http://forum.kde.org/viewtopic.php?f=74&t=43643. >>> >>> 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: >>> http://www.holoborodko.com/pavel/?page_id=12. >>> >>> 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. >>> http://holoborodko.com/pavel/ >>> >>> P.S. >>> I'm planning to release new version of MPFR C++ soon based on expression >>> templates inspired by Eigen. >>> >>> >> >

**Follow-Ups**:**Re: [eigen] Arbitrary precision arithmetic support in Eigen***From:*Pavel Holoborodko

**References**:**[eigen] Arbitrary precision arithmetic support in Eigen***From:*Pavel Holoborodko

**Re: [eigen] Arbitrary precision arithmetic support in Eigen***From:*Gael Guennebaud

**Re: [eigen] Arbitrary precision arithmetic support in Eigen***From:*Gael Guennebaud

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] Implementing a custom-matrix product** - Next by Date:
**Re: [eigen] Implementing a custom-matrix product** - Previous by thread:
**Re: [eigen] Arbitrary precision arithmetic support in Eigen** - Next by thread:
**Re: [eigen] Arbitrary precision arithmetic support in Eigen**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |