1.\" $FreeBSD: src/usr.bin/units/units.1,v 1.18 2005/02/13 22:25:25 ru Exp $ 2.\" $DragonFly: src/usr.bin/units/units.1,v 1.4 2008/08/12 09:28:22 matthias Exp $ 3.Dd August 12, 2008 4.Dt UNITS 1 5.Os 6.Sh NAME 7.Nm units 8.Nd conversion program 9.Sh SYNOPSIS 10.Nm 11.Op Fl f Ar filename 12.Op Fl qv 13.Op Ar from-unit to-unit 14.Sh OPTIONS 15The following options are available: 16.Bl -tag -width indent 17.It Fl f Ar filename 18Specify the name of the units data file to load. 19.It Fl q 20Suppress prompting of the user for units and the display of statistics 21about the number of units loaded. 22.It Fl v 23Print the version number. 24.It Ar from-unit to-unit 25Allow a single unit conversion to be done directly from the command 26line. 27The program will not print prompts. 28It will print out the 29result of the single specified conversion. 30.El 31.Sh DESCRIPTION 32The 33.Nm 34program converts quantities expressed in various scales to 35their equivalents in other scales. 36The 37.Nm 38program can only 39handle multiplicative scale changes. 40It cannot convert Celsius 41to Fahrenheit, for example. 42It works interactively by prompting 43the user for input: 44.Bd -literal 45 You have: meters 46 You want: feet 47 * 3.2808399 48 / 0.3048 49 50 You have: cm^3 51 You want: gallons 52 * 0.00026417205 53 / 3785.4118 54 55 You have: meters/s 56 You want: furlongs/fortnight 57 * 6012.8848 58 / 0.00016630952 59 60 You have: 1|2 inch 61 You want: cm 62 * 1.27 63 / 0.78740157 64.Ed 65.Pp 66Powers of units can be specified using the '^' character as shown in 67the example, or by simple concatenation: 'cm3' is equivalent to 'cm^3'. 68Multiplication of units can be specified by using spaces, a dash or 69an asterisk. 70Division of units is indicated by the slash ('/'). 71Note that multiplication has a higher precedence than division, 72so 'm/s/s' is the same as 'm/s^2' or 'm/s s'. 73Division of numbers 74must be indicated using the vertical bar ('|'). 75To convert half a 76meter, you would write '1|2 meter'. 77If you write '1/2 meter' then the 78units program would interpret that as equivalent to '0.5/meter'. 79If you enter incompatible unit types, the units program will 80print a message indicating that the units are not conformable and 81it will display the reduced form for each unit: 82.Bd -literal 83 You have: ergs/hour 84 You want: fathoms kg^2 / day 85 conformability error 86 2.7777778e-11 kg m^2 / sec^3 87 2.1166667e-05 kg^2 m / sec 88.Ed 89.Pp 90The conversion information is read from a units data file. 91The default 92file includes definitions for most familiar units, abbreviations and 93metric prefixes. 94Some constants of nature included are: 95.Pp 96.Bl -column -offset indent -compact "mercury" 97.It "pi ratio of circumference to diameter 98.It "c speed of light 99.It "e charge on an electron 100.It "g acceleration of gravity 101.It "force same as g 102.It "mole Avogadro's number 103.It "water pressure per unit height of water 104.It "mercury pressure per unit height of mercury 105.It "au astronomical unit 106.El 107.Pp 108The unit 'pound' is a unit of mass. 109Compound names are run together 110so 'pound force' is a unit of force. 111The unit 'ounce' is also a unit 112of mass. 113The fluid ounce is 'floz'. 114British units that differ from 115their US counterparts are prefixed with 'br', and currency is prefixed 116with its country name: 'belgiumfranc', 'britainpound'. 117When searching 118for a unit, if the specified string does not appear exactly as a unit 119name, then 120.Nm 121will try to remove a trailing 's' or a 122trailing 'es' and check again for a match. 123.Pp 124To find out what units are available read the standard units file. 125If you want to add your own units you can supply your own file. 126A unit is specified on a single line by 127giving its name and an equivalence. 128Be careful to define 129new units in terms of old ones so that a reduction leads to the 130primitive units which are marked with '!' characters. 131The 132.Nm 133program will not detect infinite loops that could be caused 134by careless unit definitions. 135Comments in the unit definition file 136begin with a '/' character at the beginning of a line. 137.Pp 138Prefixes are defined in the same was as standard units, but with 139a trailing dash at the end of the prefix name. 140If a unit is not found 141even after removing trailing 's' or 'es', then it will be checked 142against the list of prefixes. 143Prefixes will be removed until a legal 144base unit is identified. 145.Pp 146Here is an example of a short units file that defines some basic 147units. 148.Pp 149.Bl -column -offset indent -compact "minute" 150.It "m !a! 151.It "sec !b! 152.It "micro- 1e-6 153.It "minute 60 sec 154.It "hour 60 min 155.It "inch 0.0254 m 156.It "ft 12 inches 157.It "mile 5280 ft 158.El 159.Sh FILES 160.Bl -tag -width /usr/share/misc/units.lib -compact 161.It Pa /usr/share/misc/units.lib 162the standard units library 163.El 164.Sh AUTHORS 165.An Adrian Mariano Aq adrian@cam.cornell.edu 166.Sh BUGS 167The effect of including a '/' in a prefix is surprising. 168.Pp 169Exponents entered by the user can be only one digit. 170You can work around this by multiplying several terms. 171.Pp 172The user must use | to indicate division of numbers and / to 173indicate division of symbols. 174This distinction should not 175be necessary. 176.Pp 177The program contains various arbitrary limits on the length 178of the units converted and on the length of the data file. 179.Pp 180The program should use a hash table to store units so that 181it does not take so long to load the units list and check 182for duplication. 183