
"Paul" == Paul A Bristow <pbristow@hetp.u-net.com> writes:
> | -----Original Message----- | From: > boost-bounces@lists.boost.org | > [mailto:boost-bounces@lists.boost.org] On Behalf Of Paul A > Bristow | Sent: 17 May 2005 15:23 | To: boost@lists.boost.org | > Subject: RE: [boost] Re: Math constants > I attach a short file with some samples of math constants > together with their 'interval' upper and lower values, which > (mostly) when compiled will be only a single least significant > bit different (or the same of course). > The upper and lower values contain a lot of decimal digits > because they are 'exactly representable' for the floating point > layout given. > C++ Exactly representable values do not involve any rounding on > input (to the appropriate floating point format). > Of course this file does not compile - many duplicates - but > when the appropriate pair of upper and lower are chosen, they > should do. > For the most common case of an IEEE double, > // C++ Exactly representable interval values of pi for 2 radix & > 53 significand bits. static const double pi_l = > 3.141592653589793115997963468544185161590576171875; // lower > static const double pi = > 3.1415926535897932384626433832795028841971694007530293; // > starting with this value. static const double pi_u = > 3.141592653589793560087173318606801331043243408203125; // upper > When used to initialise a double, > v_d_l = 3.1415926535897931 == 0x400921fb54442d18 // lower v_d = > 3.1415926535897931 == 0x400921fb54442d18 // 'middle' == lower > v_d_u = 3.1415926535897936 == 0x400921fb54442d19 // upper > The number of possibly significant digits is given by > std::numeric_limits<double::digits() * 3010 /10000 and is 17 > (std::numeric_limits<double::digits10() in contrast is the > number of __guaranteed__ accurate decimal digits and is 15). > Questions: > 1 Are there many (any?) potential users for interval arithmetic > computing (we have a Boost library). > 2 Would they find the intervals of the constants updated in the > Sandbox useful? > 3 Can any MACRO whizz-kids suggest the _best_ way to provide > only pairs (or trios) for the appropriate floating point format? > 4 I can only calculate for radix == 2 (and can't be bothered to > work out for radix 8, 10, 16, 42...?). If anyone wants these and > can tell me how, please do so. > 5 So one is really only chosing float, double, long double, or > some UDT like NTL arbitrary precision quads on the basis of the > number of significand bits, usually 24, 53, 64, 105, 106, 113, > 127. > For example, to produce the above definitions for 53 significand > IEEE 754 X86 double. > Thanks. > Paul Paul A Bristow Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB > +44 1539 561830 +44 7714 330204 mailto: pbristow@hetp.u-net.com > _______________________________________________ > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost