4 Unit expressions
In order to enter more complicated units or fractions, you will need to
use operations such as powers, products and division. Powers of units
can be specified using the `^' character as shown in the following
example, or by simple concatenation: `cm3' is equivalent to `cm^3'. If
the exponent is more than one digit, the `^' is required. An exponent
like `2^3^2' is evaluated right to left. The `^' operator has the
second highest precedence. The `**' operator is provided as an
alternative exponent operator.
You have: cm^3
You want: gallons
You have: arabicfoot * arabictradepound * force
You want: ft lbf
Multiplication of units can be specified by using spaces, or an
asterisk (`*'). If `units' is invoked with the `--product' option then
the hyphen (`-') also acts as a multiplication operator. Division of
units is indicated by the slash (`/') or by `per'.
You have: furlongs per fortnight
You want: m/s
Historically, multiplication in units was assigned a higher
precedence than division. This disagrees with the usual precedence
rules which give multiplication and division equal precedence, and it
has been a source of confusion for people who think of units as a
By default, multiplication using the star (`*') now has the same
precedence as division and hence follows the usual precedence rules.
If units is invoked with the the `--oldstar' option then then the old
behavior is activated and `*' will have the same precedence as the
other multiplication operators described next.
Multiplication using a space or using the hyphen has a higher
precedence than division and is evaluated left to right. So `m/s
s/day' is equivalent to `m / s s day' and has dimensions of length per
time cubed. Similarly, `1/2 meter' refers to a unit of reciprocal
length equivalent to .5/meter, which is probably not what you would
intend if you entered that expression.
You can indicate division of numbers with the vertical dash (`|'),
so if you wanted half a meter you could write `1|2 meter'. This
operator has the highest precedence so the square root of two thirds
could be written `2|3^1|2'.
You have: 1|2 inch
You want: cm
Parentheses can be used for grouping as desired.
You have: (1/2) kg / (kg/meter)
You want: league
Prefixes are defined separately from base units. In order to get
centimeters, the units database defines `centi-' and `c-' as prefixes.
Prefixes can appear alone with no unit following them. An exponent
applies only to the immediately preceding unit and its prefix so that
`cm^3' or `centimeter^3' refer to cubic centimeters but `centi*meter^3'
refers to hundredths of cubic meters. Only one prefix is permitted per
unit, so `micromicrofarad' will fail, but `micro*microfarad' will work,
as will `micro microfarad'..
For `units', numbers are just another kind of unit. They can appear
as many times as you like and in any order in a unit expression. For
example, to find the volume of a box which is 2 ft by 3 ft by 12 ft in
steres, you could do the following:
You have: 2 ft 3 ft 12 ft
You want: stere
You have: $ 5 / yard
You want: cents / inch
And the second example shows how the dollar sign in the units conversion
can precede the five. Be careful: `units' will interpret `$5' with no
space as equivalent to dollars^5.
Outside of the SI system, it is often desirable to add values of
different units together. You may also wish to use `units' as a
calculator that keeps track of units. Sums of conformable units are
written with the `+' character.
You have: 2 hours + 23 minutes + 32 seconds
You want: seconds
You have: 12 ft + 3 in
You want: cm
You have: 2 btu + 450 ft lbf
You want: btu
The expressions which are added together must reduce to identical
expressions in primitive units, or an error message will be displayed:
You have: 12 printerspoint + 4 heredium
Illegal sum of non-conformable units
Historically `-' has been used for products of units, which complicates
its iterpretation in `units'. Because `units' provides several other
ways to obtain unit products, and because `-' is a subtraction operator
in general algebraic expressions, `units' treats the binary `-' as a
subtraction operator by default. This behavior can be altered using
the `--product' option which causes `units' to treat the binary `-'
operator as a product operator. Note that when `-' is a multiplication
operator it has the same precedence as `*', but when `-' is a
subtraction operator it has the lower precedence as the addition
When `-' is used as a unary operator it negates its operand.
Regardless of the `units' options, if `-' appears after `(' or after
`+' then it will act as a negation operator. So you can always compute
20 degrees minus 12 minutes by entering `20 degrees + -12 arcmin'. You
must use this construction when you define new units because you cannot
know what options will be in force when your definition is processed.
The `+' character sometimes appears in exponents like `3.43e+8'.
This leads to an ambiguity in an expression like `3e+2 yC'. The unit
`e' is a small unit of charge, so this can be regarded as equivalent to
`(3e+2) yC' or `(3 e)+(2 yC)'. This ambiguity is resolved by always
interpreting `+' as part of an exponent if possible.
Several built in functions are provided: `sin', `cos', `tan', `ln',
`log', `log2', `exp', `acos', `atan' and `asin'. The `sin', `cos', and
`tan' functions require either a dimensionless argument or an argument
with dimensions of angle.
You have: sin(30 degrees)
You have: sin(pi/2)
You have: sin(3 kg)
Unit not dimensionless
The other functions on the list require dimensionless arguments. The
inverse trigonometric functions return arguments with dimensions of
If you wish to take roots of units, you may use the `sqrt' or
`cuberoot' functions. These functions require that the argument have
the appropriate root. Higher roots can be obtained by using
You have: sqrt(acre)
You want: feet
You have: (400 W/m^2 / stefanboltzmann)^(1/4)
Definition: 289.80882 K
You have: cuberoot(hectare)
Unit not a root
Temperature Conversion Example
Nonlinear units are represented using functional notation. They make
possible nonlinear unit conversions such temperature. This is different
from the linear units that convert temperature differences. Note the
difference below. The absolute temperature conversions are handled by
units starting with `temp', and you must use functional notation. The
temperature differences are done using units starting with `deg' and
they do not require functional notation.
You have: tempF(45)
You want: tempC
You have: 45 degF
You want: degC
Think of `tempF(x)' not as a function but as a notation which
indicates that `x' should have units of `tempF' attached to it. Note:
Nonlinear units. The first conversion shows that if it's 45 degrees
Fahrehneit outside it's 7.2 degrees Celsius. The second conversions
indicates that a change of 45 degrees Fahrenheit corresponds to a
change of 25 degrees Celsius.
Some other examples of nonlinears units are ring size and wire gauge.
There are numerous different gauges and ring sizes. See the units
database for more details. Note that wire gauges with multiple zeroes
are signified using negative numbers where two zeroes is -1.
Alternatively, you can use the synonyms `g00', `g000', and so on that
are defined in the units database.
You have: wiregauge(11)
You want: inches
You have: brwiregauge(g00)
You want: inches
You have: 1 mm
You want: wiregauge
automatically generated by info2www version 126.96.36.199