History
GNU Units was written by Adrian Mariano as an implementation of the '' units'' utility included with the Unix operating system. It was originally available under a permissive license. The GNU variant is distributed under the GPL although the''units'' (Unix utility)
The original ''units'' program has been a standard part of Unix since the early Bell Laboratories versions. Source code for a version very similar to the original is available from the Heirloom Project.The GNU implementation
GNU ''units'' includes several extensions to the original version, including * Exponents can be written with^
or **
.
* Exponents can be larger than 9 if written with ^
or **
.
* Rational and decimal exponents are supported.
* Sums of units (e.g.,
) can be converted.
* Conversions can be made ''to'' sums of units, termed ''unit lists'' (e.g., from degrees to degrees, minutes, and seconds).
* Units that measure reciprocal dimensions can be converted (e.g., S
to megohm
).
* Parentheses for grouping are supported. This sometimes allows more natural expressions, such as in the example given in Complex units expressions.
* Roots of units (e.g.,
can be computed.
* Nonlinear units conversions (e.g., °F to °C) are supported.
* Functions such as sin, cos, ln, log, and log2 are included.
* A script for updating the currency conversions is included; the script requires Python.
Units definitions, including nonlinear conversions and unit lists, are user extensible.
The plain text database ''definitions.units'' is a good reference in itself, as it is extensively commented and cites numerous sources.
Other implementations
''UDUNITS'' is a similar utility program, except that it has an additional programming library interface and date conversion abilities. UDUNITS is considered the ''de facto'' program and library for variable unit conversion for netCDF files.Version history
GNU Units version 2.19 was released on 31 May 2019, to reflect the new 2019 revision of the SI; Version 2.14 released on 8 March 2017 fixed several minor bugs and improved support for building on Windows. Version 2.10, released on 26 March 2014, added support for rational exponents greater than one, and added the ability to save an interactive session in a file to provide a record of the conversions performed. Beginning with version 2.10, a 32-bit Windows binary distribution has been available on the project Web page (a 32-bit Windows port of version 1.87 has been available since 2008 as part of the GnuWin32 project). Version 2.02, released on 11 July 2013, added hexadecimal floating-point output and two other options to simplify changing the output format. Version 2.0, released on 2 July 2012, added the ability to convert to sums of units, such as hours and minutes or feet and inches. In addition, this release added support for UTF-8 encoding. Provision for locale-specific unit definitions was added. The syntax for defining non-linear units was changed, and added optional domain and range specifications. The names of the standard and personal units data files were changed, and the currency definitions were placed in a separate data file; a Python script for updating the currency definitions was added. The version history is covered in detail in the NEWS file included with the source distribution.Usage
''Units'' will output the result of the conversion in two lines. Usually, the first line (multiplication) is the desired result; the second line is the same conversion expressed as a division. ''Units'' can also function as a general-purpose scientific calculator; it includes several built-in mathematical functions such as sin,Examples
The examples that follow show results from GNU ''units'' version 2.10.Interactive mode
Currency exchange rates from www.timegenie.com on 2014-03-28 2729 units, 92 prefixes, 77 nonlinear units You have: 10 furlongs You want: miles * 1.25 / 0.8 You have: 1 gallon + 3 pints You want: quarts * 5.5 / 0.18181818 You have: sqrt(meter) ^ Unit not a root You have: sqrt(acre) You want: ft * 208.71033 / 0.0047913298 You have: 21 btu + 6500 ft lbf You want: btu * 29.352939 / 0.034068139 You have: _ You want: J * 30968.99 / 3.2290366e-005 You have: 3.277 hr You want: time 3 hr + 16 min + 37.2 sec You have: 1, 2 inch You want: cm * 1.27 / 0.78740157The underscore ('_') is used to indicate the result of the last successful unit conversion.
On the command line (non-interactive)
Complex units expressions
One form of the Darcy–Weisbach equation forSee also
* Unified Code for Units of MeasureNotes
References
External links
*{{Official website