
"Phil Richards"software.demon.co.uk...
On 2006-06-20, John Phillips <phillips@delos.mps.ohio-state.edu> wrote:
I think we should try to stay out of the business of making a linear algebra system (or a tensor algebra system, either, for that matter) on this project.
I concur. I was already concerned with the size of PQS - recent discussions have made me distinctly worried. PQS should do roughly what it says on the tin: dimensional analysis and units. Do it small, do it tidily, do it clean.
That is all very well Phil. Now where's the code?. Actually I know you have written some code. I would be interested naturally to see it. What happens when you start a quantities library is that you suddenly find the problems are a bit bigger than you thought. The dimensional analysis part is frankly trivial. The bloat you talk about is the result of going into detail that previous libraries ignored: User interface, units and basic input/output. It is only when you start to look at that in detail that you find things such as you need to distinguish different but dimensionally equivalent quantities, rational powers, the weirdness of the kilogram etc, etc, etc, etc. Other libraries left these 'trivial' details to the user to sort out. That is a mistake IMO IMO the other problem that previous libraries had was that they assumed that using mpl was mandatory. This brings up a simple but practical problem. In this environment mpl is darn slow. The practical effect of that is that your development is slowed to a crawl. I used mpl in PQS and it was impractical, so I removed it. I did so with a heavy heart because I was aware that doing so would probably kill PQS as a boost library I mean if the problems were trivial boost would have its quantities library by now wouldnt it?
It's nice to see that there appears to be a move in the direction of separating the dimensional analysis and units into orthogonal bits, though. It's the way I've gone... :-)
Are you saying that PQS doesnt do that? The signature of the t1_quantity is t1_quantity<abstract_quantity, unit, value_type> That looks like quite a clear separation of concerns to me FWIW. Am I missing something? regards Andy Little