% units 551 units, 41 prefixes You have: pint You want: imperial pint * 0.83267413 / 1.20095
Ok, well enough. Lots of people forget that these are different, but it's a thing and it's good that units knows about it. (Maybe it should be less US-centric, but that's not what I'm looking at tonight.) This is also reasonable: You have: pint You want: brpint * 0.83267248 / 1.2009524 Except wait, they're not quite the same... You have: imperial pint You want: brpint * 0.99999802 / 1.000002 I assume that's a rounding bug and not intentional. This, however, seems problematic: You have: imperial pint You want: british pint * 1.2009476 / 0.8326758 I assume the word "british" in units.lib is meant for use as an adjective in some other other context. However, I'm wondering what, given this: You have: british You want: 1 * 1.000002 / 0.999998 That is, it's almost but not quite 1, probably because of rounding. Meanwhile this doesn't work: You have: pint You want: metric pint units: Unknown unit 'metric' which given the way units works isn't surprising, but this could and doesn't: You have: pint You want: metricpint units: Unknown unit 'metricpint' (where a metric pint is 500 mL) Meanwhile things like this shouldn't be allowed: You have: lightyear You want: imperial lightyear * 0.83267413 / 1.20095 You have: lightyear You want: british lightyear * 0.999998 / 1.000002 since "imperial" is correctly only useable as a modifier on certain volume units. Then, units.lib defines a constant fuzz == 1 that appears to be used to tag definitions that are not precise, but it's used inconsistently and not always correctly (e.g. it's attached to c and should not be) and units itself doesn't know about it or what it means so it serves no actual purpose currently. So, some propositions: (a) Dimensional analysis is great but it seems like we ought to have some additional typing rules to prevent misuse of adjective units; (b) units ought to be able to track the number of significant digits in its definitions and computations and print accordingly; (c) units.lib should get some editorial attention. Does anyone know what "british" is supposed to be there for? (d) deep chrome green -- David A. Holland dholl...@netbsd.org