[Review] Quantitative Units

Hello, This review of Quantitative Units is by Shaun Bloom and K. R. Walker of Stellar Science Ltd. Co. We have been following this library for approximately two months as we are developing a new scientific application and have committed to using compile-time dimensional analysis where possible.
What is your evaluation of the design?
We believe the design is good. We understand the basic concepts of systems, dimensions, units, and quantities and could manipulate these items.
What is your evaluation of the implementation?
We have been happy with the implementation. Some of our template-metaprogrammers have been able to dig into the source to figure out what's going on without spending much time.
What is your evaluation of the documentation?
It's been a while since we thoroughly looked over the documentation. We tend to prefer looking over the source code and examples. A brief look at the current documentation revealed no surprises.
What is your evaluation of the potential usefulness of the library?
This library performs compile-time dimensional analysis along with helping to clarify and enforce API parameters and elements: function( const quantity< length > & ) is better than function( const double & ) At an early stage, we discovered a minor error in our software after starting to use this library. This library provides greater confidence in calculations making the pervasive use of this library highly desirable. Our application domain involves working with vectors in different frames-of-reference. We have recently discussed the possibility of defining our own unit systems for these frames to prevent vectors in one frame from being incorrectly used with vectors of another. e.g., an Earth-Centered-Inertial (ECI) vector should not be added to an Orbital-frame vector.
Did you try to use the library? With what compiler? Did you have any problems?
We have been using version 0.7.2 of this library with Visual Studio 2005 (sp1) and gcc 4.0.1 on Mac OS X. We have defined our own custom units and found their use to be identical to those provided by the library. We would like to see quantities defined using derived SI units printed using the derived units instead of the base units (W/m^2 instead of Kg/s^3). We had a problem with the 'pascal' symbol with Visual Studio 2005. It's since been resolved. The only other problems have involved mistakes in unit arithmetic when defining values.
How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
We looked closely at this library in it's early state and decided that even in alpha, it was worth integrating into our software. Our evaluation has been much more than a quick reading, but a bit less than an in-depth study.
Are you knowledgeable about the problem domain?
Yes, we have experience writing scientific software applications and understand and can perform dimensional analysis.
Yes. We would very much like to see this library become part of Boost. In the unfortunate event it were not accepted, we intend to continue to use the library. Thank you, -- Shaun Bloom <sb@stellarscience.com> K. R. Walker <krwalker@stellarscience.com> Stellar Science Ltd Co - Stellar Scientific Software Solutions

AMDG K. R. Walker <krwalker <at> stellarscience.com> writes:
Unfortunately there is no easy way to do this. (should it be joule/meter^2 second, newton/meter second, or pascal meter/second?) H'm. cout << io::power/pow<2>(io::meter) << x; // W/m^2 cout << io::mass/pow<3>(io::second) << x; // Kg/s^3 ???
Many Thanks. In Christ, Steven Watanabe
participants (3)
-
K. R. Walker
-
Matthias Schabel
-
Steven Watanabe