GNU units converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to Celsius, and it can perform conversions from and to sums of units, such as converting between feet plus inches and meters. Beyond simple unit conversions, units can be used as a general-purpose scientific calculator which keeps track of units in its calculations. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimensions. In this way, you can ensure accuracy and dimensional consistency when working with long expressions which involve many different units which may combine in complex ways. The units are defined in an extensive, well-annotated data file which defines over 2,500 units. You can also provide your own file to supplement or replace the standard file.
> Fahrenheit <-> Celsius is a
> perfectly linear conversion:
> T[C] = (T[F]-32)/1.8
No, it is an affine transformation, not a linear one because of the constant offset. If F is a linear transformation then it must satisfy the property F(a+b)=F(a)+F(b). This is clearly false for the above temperature conversion. For example 32 degrees Fahrenheit is 0 degrees Celsius but 32+32=64 degrees Fahrenheit is not 0+0=0 degrees Celsius.