Boost logo

Boost :

From: Thorsten Ottosen (tottosen_at_[hidden])
Date: 2002-09-27 09:09:56

"Jason D Schmidt" <jd.schmidt_at_[hidden]> wrote in message
> Hi everyone,
> Not too long ago, I asked people on this list if anyone was interested in
> having math & physics values incorporated into Boost. Some people
> sounded interested, so here's what I'm proposing:
> template <class value_type>
> struct math_vals
> {
> static value_type pi()
> { return value_type(3.14); } // I'll use more digits
> static value_type e()
> { return value_type(2.72); }
> // more math values
> };
> Something like that. I'll get the actual values from a reliable
> reference and use as many digits as possible. I figure this is pretty
> simple, efficient, & portable. Maybe if someone thinks this is a little
> verbose, he/she could do something like this in user code:
> const float e = math_vals<float>::e();
> I could also do the same thing with physics-related values, like speed of
> light, Planck's constant, & more. However, those all have units, so
> their values depend on what system we're using. Would we want to just
> stick with SI units? Or might we want to have another struct for cgs
> (esu) units? Or would we want to have a units class that acts something
> like a policy?
> Does anyone have any thoughts on the general design I've proposed above
> or anything else?

I think that constants are really needed and your propasal is great. I
wonder if the term 'math_val' is good, though.
What about




? I also wonder if we could get rid of the explicit type parameter. That is,
why shouldn't we just say

float f = math::e();
double = math::e();

That would reduce the hardcoding of precision. I could imagine an
implementation like this:

struct E
  operator float() const
   return <e with single precision>;
 operator double() const
  return <e with double precisoin>;

struct math
 static E e() { return E(); }

Have I overloked something? As for different units, maybe one should choose
SI units as a default and provide means for getting other units if needed.

Thorsten Ottosen,
Dezide Aps,

Boost list run by bdawes at, gregod at, cpdaniel at, john at