
Peder Holt <peder.holt@gmail.com> writes:
Is there any interest in a compile-time meta-version 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.boost-consulting.com