Notes for this testing release, 1.84

     The meaning of '-' has changed.  Take note.  

     The new dimensionless units handling and changes to '-' meant
     tinkering with some basic parsing and unit conversion.  Did this
     introduce any bugs?  Do we need a command line argument to
     disable dimensionless units?  

     Now that include files are supported, somebody could write a
     script to automatically update currency conversions by getting
     data off of some web site and writing out a currency conversion
     file which would be included by the main file.  Can this be done 
     in a way that doesn't slam a given web site?  (People who are
     using `units' to convert currency probably don't need updates
     more frequently than say, monthly.)  Another related question is
     whether a script can be written to automatically update the
     currency information just so that I can update it when I make
     releases without spending hours extracting the information from
     web sites.  Or does anybody know a web site that is easy to parse
     where you don't have to extract the conversion factors one at a
     time?  (This release still has old currency data because I
     started to update it and got frustrated.) 

     Localization is apparently not done correctly.  What is the
     correct way to do it?  (How do I determine which locale to use?)

     Can anybody supply portable code to determine the number of lines
     on the screen?  (Portable means it works anywhere, not just that
     it works on your Linux box.)

     Do you have any ideas on a better notation to use in units.dat
     for defining nonlinear units?  The current notation is
     counterintuitive.  (I know because I invented it and I find
     it bizarre myself.  It is a notation suited to defining functions
     of units but not natural for defining new units.)

adrian@cam.cornell.edu

------------------------------------------------------------------

GNU `units' converts between different systems of units.  It can
handle multiplicative scale changes.  It can also handle nonlinear
conversions such as Celsius to Fahrenheit (which may appear to be
linear but is actually affine).  

General installation instructions appear in the file `INSTALL'.  You
should be able to run `./configure' followed by `make'.  If you give
no options to configure, it will compile units to look for the units
data file in a standard location (probably /usr/local/share).  If you
try to use the program without installing you will need to use the
`-f' option.  If you don't want to commit to an installation location,
you can invoke configure by typing `./configure --enable-path-search'.
Then no path name will be compiled into `units' and it will search the
current directory and the directories listed in your PATH environment
variable to find the units data file.

The documentation is available in texinfo, roff, and text format.  The
man page is generated automatically from the texinfo documentation.
This man page produces readable results when run through nroff, but it
should probably not be printed with troff or groff---no effort has
been made to ensure that it prints out reasonably.  To generate a
printed manual, use `units.dvi' instead.

This program has the following incompatibilties with unix `units':
  * Exponentiation in numbers requires an `e', so you must write 2.5e-2
      instead of 2.5-2.
  * Prefixes are listed in the units file.
  * GNU `units' tries the -s, -es, and -ies plural forms.
  * The default output format is slightly different.
  * The units database is much larger and more informative, but with some
      differences. (e.g. `g' is for gravity in unix `units' and grams in
      GNU `units'.)  The comment character has been changed to `#'.

GNU `units' includes the following extensions:
  * Multiplication can be written with a `*' if desired.
  * Exponents can be written with '^' in units.
  * Exponents can be larger than 9 if written with `^'.
  * Sums of units can be converted.
  * The units data file is extensively commented. 
  * Units which measure reciprocal dimensions can be converted.
  * Parentheses for grouping are supported.
  * Funtions such as sin, cos, and log are supported.
  * Roots of units can be computed.
  * Nonlinear units conversions are supported. 

----------------------------------------------------------------------

Ports

A GNU units web interface is available at http://gometric.org.  

A Java version of units is available on SourceForge at
http://units-in-java.sourceforge.net/

GNU units has been ported to the pocket PC and given the name Quick
Units.  http://ppcquicksoft.iespana.es/ppcquicksoft/quickunits.html
The author of the port can be reached at ppcquicksoft@iespana.es.

-----------------------------------------------------------------------------

Ideas the future (may or may not happen):

  * Bundle up the units conversion stuff into a library. 
  * Some kind of automatic script to update currency conversions
  * Allow multiple definitions of the same unit and resolve the
      correct definition by a conformability check.  (This has
      exponential growth behavior in the number of units typed in!)
  * When a nonconformable units error is given list units the user
      might have meant (e.g. britainpound for pound) by a
      conformability check and string pattern match of some sort. 
      "spelling advice"
  * Allow conversions to a list of units like "ft,in" or "in,1|8 in"
      which would report answers like "2 ft + 6.54 in".  
  * Allow some way of having units like '$' that don't require a trailing
      space so you can write '$5'.  This could be handled by having a 
      command in the units database that specifies units which automatically
      get a space inserted  after their name.   
  * Have a metacommand in the units datafile that specifies how plurals should
      be tried for this file.  This would allow expansion into other 
      languages.  (Of course, the real work of expanding into other languages
      is writing a units file that is appropriate for the language in question
      and includes local units.  It's not just a translation task.)
      Another thing that could be accomplished here would be translation of
      English words like "cubic" and "per" into their symbolic meanings.
      A command in the units file could indicate that "per" should be 
      substituted into a '/' and "cubic" means the cube the next unit.
      As it stands, "per" is hard coded into the parser.

-----------------------------------------------------------------------------

Acknowledgements

    This program owes a lot to Jeff Conrad who made many helpful suggestions,
    found numerous bugs, and helped me to find the definitions of obscure
    units. 

    The documentation has greatly benefited from the suggestions made by
    Robert Chassell who kindly read several drafts.

    The following people have been particularly helpful in fixing portability
    problems: Kaveh Ghazi, Eric Backus, and Marcus Daniels.

Bug reports and suggestions for improvements should be sent to the author:
Adrian Mariano (adrian@cam.cornell.edu).  
