
Boost : 
From: David Abrahams (dave_at_[hidden])
Date: 20050608 08:31:31
Peder Holt <peder.holt_at_[hidden]> writes:
> Is there any interest in a compiletime metaversion of double?
>
> Syntax:
>
> //Definition
> typedef META_DOUBLE(3.1415926535897932384626433) pi;
> //Or
> META_DOUBLE(3.1415926535897932384626433) pi_;
Whoa, that's nice syntax!
I'm still trying to guess how you do it. Does the PP treat 3.14 as
three tokens?
> //Mathematical operations
> typedef math::meta::add<pi,pi>::type pi2;
>
> //Evaluation:
> assert(META_DOUBLE_EVAL(pi2)==3.1415926535897932384626433*2);
Really, even with FP rounding errors? I guess multiplying by 2 is
fairly safe...
> This implementation uses two ints to represent the decimals, and a
> short to represent the exponent.
I don't understand why you'd choose int for one and short for the
other when they have the same range requirements: both int and short
are required to be at least 16 bits and neither short nor int is
required to be more than 16 bits. Can you explain that?
 Dave Abrahams Boost Consulting www.boostconsulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk