My unit-conversion challenges prompted me to write a long-planned Macsyma package. (Macsyma comes with a units package that leaves much to be desired and brings much to be undesired.)
"Miles per gallon" has the same units as "per acre".
(c147) uconv(mpg,acre) 12043468800 (d147) ----------- 7 acre
What is the physical significance of this (tiny) area?
The cross-sectional area of the thread of gasoline the car would need to continously sip to keep running.
What's the speed of light in furlongs per fortnight?
(c148) uconv(c,furlongs/fortnight) 2518256647200000 furlongs (d148) ------------------------- 1397 fortnight or approximately (c149) dfloat(%) 1.80261749978525d+12 furlongs (d149) ----------------------------- fortnight This package introduces absolutely no floating point approximations.
Scrooge McDuck's money bin is said to contain three cubic acres. How much is that in square gallons?
(c150) uconv(3*acres^3,gallons) 2 679899097202688000 gallons (d150) --------------------------- 49
Could that guy who'd walk a mile for a Camel plod a picoparsec for a Pall Mall?
What is a parsec?? The Web is rife with units conversion pages that are mostly rubbish. Exception: http://www.unc.edu/~rowlett/units/index.html . This is a "dictionary" of measurements worthy of Weisstein, but without the cupidity of Wolfram and CRC. It defines parsec as the distance at which an astronomical unit (ua) subtends an arc second, and defines ua as the "average" distance to the sun. This contradicts my recollection of parsec defined in terms of the semimajor axis of Earth's orbit. This would also seem a more logical definition of ua, since, as JMC recently reminded us, planetary periods only depend on the major axis. Also, what is meant by "average"? Down in the noise, but relevant to "theoretical" units conversion, is the question of slant height vs altitude: ua cot arcsec or ua/2 csc arcsec/2? By the way, (c161) uconv(arcsecond,radian) %pi radian (d161) ---------- 648000 To further show off my package, (c151) uconv(hectare,meter*yard) 12500000 meter yard (d151) ------------------- 1143 a crazy unit of area that was claimed to be used in Japanese cloth trade, due to cutting off metric lengths from bolts woven with the old British loom width. However, Rowlett's definition of "bolt" lists different widths for different fabrics, none of which is a yard. It's very easy to add new units to the package. E.g., after adding the two lines uput('tropicalyear,'canon=365*'days+5*'hr+48*'min+459747/10000*'sec)$ uput('siderealyear,'canon=365*'days+6*'hr+9*'min+954/100*'sec)$ one can ask (c152) uconv(siderealyear,tropicalyear) 35064610600 tropicalyear (d152) ------------------------ 35063251083 The continued fraction of this coefficient is (c153) cf(numfactor(%)) (d153) [1, 25790, 1, 25, 4, 1, 2, 4, 850] which says the difference is very nearly 1 part in 25791. uput('mhz,'canon='megahertz)$ uput('rpm,'canon='revolution/'min)$ were all that was needed for (c153) uconv(mhz,rpm) (d153) 60000000 rpm Prefixes and plurals are treated generically: (c154) uconv(megamicromumble,millimumbles) (d154) 1000 millimumbles which is not always the right thing! (c155) uconv(centipede,millipedes) (d155) 10 millipedes I'll distribute the package when I get this parsec business straightened out, and add a few hundred more units. Who knows, a dumb little application like this might leverage some Macsyma sales. Except Macsyma isn't for sale.-( --rwg