Author:    Arthur L. Edwards (email:

2007 January 24 18:30.  Recompiled all GEOM modules on YANA cluster,
reran all test problems, and compared with old results.
Fixed bugs in subroutines accel, tetra, ptzone, incrsubs, and triangle, caused
by use of uninitialized variables.
Removed output to log file from subroutine geomend.
Updated help commands in subroutine spin.

2007 January 12 17:00.  Replaced the random number generator.  Old results will
not be reproduced.  Added option "random" to command "spin", to make new results
non-reproducible, be resetting the random number generator using the clock. 

2006 November 28 17:30.  Fixed bug in subroutine variable, which caused error
when multipying by zero (argument 5 in "variable x = a * b".

2006 October 9 5:40.  Fixed bug in subroutine variable, which caused error when
variable tag length was only one characters.  In statement with label 158,
replaced ".ge." with ".gt.".

2006 September 1 17:30.  Put more accurate values of fine structure constant and
electron magnetic moment anomaly into files in geom/test, and in APT subroutines
aptconl and aptconm.

2006 August 4 17:00.  Gave Scott McKinley files geom_doc.tar, geom_make.tar,
geom_test.tar, apt_doc.tar and apt_src.tar on the GPS, so he can update the
web site .
These files are in ~/work/webscott.

2006 August 4 14:10.  Significant changes since the last update of web site

(1) Added mathematics with big integers (up to 1001 digits).  Applications in
number theory, cryptography.  Command "big".

(2) Addded ability to input large data tables in free format.  Simplifies data
processing.  Command "variable", options "data" and "enddata".

(3) Made it easier to keep track of mesh points during definition of a mesh.
This includes a command to change the stem names of subscripted arrays.

(4) Made it easier to generate mesh points in a geometry bounded by surfaces
with constant coordinate values, using command "point' with options 'brick',

(5) Added options for objects with subscripted names, to simplify handling of
large data arrays.

2006 July 14 15:15.  Added options "mean", "stddev", "min" and "max" to
command "variable", to create a variable with the last value of the mean
(fvarmean), standard deviation (fvarstdd), minimum (fvarmin) and maximum
(fvarmax) found with command "mean".

2006 July 14 15:15.  Added internal variables fvarmean, fvarstdd, fvarmin and
fvarmax to file store.h, to share with subroutines mean, variable and debugx.

2006 July 7 18:00.  Added command "mean" to find the mean value and standard
deviation of specified groups of variables.

2006 July 6 18:00.  Added command "big BIGNAME ran N" to creat a big integer
consisting of N randomly sampled integers from 0 to 9.

2006 July 618:00.  Added apt subroutine aptbcat to concatenate two big integers.
Replace logic in subroutine bigint to call aptbcat.

2006 July 3 17:00.  Added command "big BIGNAME = INT1 cat INT2" to form big
integer BIGNAME by concatenating the digits of (nonzero) INT1 and INT2.
This makes it easier to add digits to the beginning or end of a big integer.

2006 June 30 18:30.  Added command "big BIGNAME = INT1 // INT2" to factor
big number INT2 out of big number INT1 as many times as possible, if an exact
factor, and return result as BIGNAME.

2006 June 13 18:10.  Made APT subroutine aptbexp to find an exponential
function in big integer form.
Added synonyms [binary, bin] and [octal, oct] to commands "icalc" and "big".
Reran all big integer test problems.

2006 June 9 18:44.  Added option "big BIGNAME INT1 exp" to find big number
approximately equal to exp (INT1).

2006 June 6 10:00.  Added options "base" and "[binary, octal, hex]" to
command "big", to display a big integer in a specified number base.
Modified subroutine bigout, to display hex characters when needed.

2006 May 30 17:00.  Changed command "search" to include all subscripts.

2006 May 26 16:00.  Changed command "define" to display the first line of
all entries in geom_base beginning with a specified entry which is a
single letter, as well as the complete entry for that letter.

2006 May 23 18:00.  Added separator line between commands in output file.

2006 May 22 16:30.  Added commands "big BIGNAME = INT1 comb INT2" and
"big BIGNAME = INT1 perm INT2", to find permutations and combinations
of N things taken N at a time, with M and N up to 450, and the results
stored in big integers, with up tp 1001 digits.
Fixed a bug in APT subroutine aptbtod, that generated bad values of big

2006 May 12 17:50.  Changed subroutine search to include big integer names and
values, including integer, floating point, and log10 values.
Change subroutine debugx to display maximum output for big integers.

2006 May 3 16:30.  Converted all GEOM and APT big integer subroutines to make
input and output of big integers to be in order from most significant to least
significant digit, and allow output to be stored in input arrays.

2006 April 5 17:20.  Fixed a bug in division of big integers that produced a
zero when dividing a one-digit number by any equal or smaller nonzero integer.

2006 April 4 15:00.  Changed subroutine subrepl to allow symbol replacement of
the stem and subscripts (but not subscripted subscripts) of subscripted words.

2006 March 31 16:40.  Added test problems shape1.test and shape3.test, to
reshape 1-D arrays to 3-D arrays and vice versa, using macros shape1-3.mac
and shape3-1.mac.

2006 March 24 17:50.  Added option "data" and "enddata" to command "variable",
to allow a large set of variables to be created from a data table.

2006 March 13 18:00.  Added command "sudoku" and subroutine sudo to solve
Sudoku puzzles.  Uses new APT subroutines aptsudo, aptsudp, aptsudu, aptsudx.

2006 February 3 16:00.  Summary of major changes since the last update of the
web site , in February, 2005:

Made it easier to keep track of mesh points during definition of a mesh.
This includes a command to change the stem names of subscripted arrays.

Made it easier to generate mesh points in a geometry bounded by surfaces with
constant coordinate values, using command "point' with options 'brick', 'mesh'.

Added commands to do math with big integers (up to 1001 digits), including
finding sums, differences, products, quotients, modular functions, powers,
roots and factorials.  This has applications in number theory and cryptography.

2006 February 3 16:00.  Reran all test problems and compared the new output
to the old output.  Changed option '?' in command "roots" to "value'.
Changed file name in subroutine 'define' from  geom.base to  geom_base.

2006 January 20 19:00.  Replaced the "Called by" and "Calls" comments in all
subroutine headers, to agree with linkages listed in geom_link_m.
Ran several test problems.

2006 January 13 18:00.  Updated the files listing all the subroutine calls in
GEOM.  For each suboutine, "calls", and "called by", and for each command,
the first subroutine called.  Changed some file names to replace "." with "_".

2006 January 10 15:45.  Restricted single-character variable names to the
lower case letters a through z, to avoid confusion with big integer names.

2006 January 9 18:10.  Implemented big integers in commands "copy", "debug",
"delete", "rename" and "last", and implemented use of "+" and "-" to increment
or decrement the big integer name in commands "big" and "copy".

2006 January 6 17:20.  Added big integers to commands "list", "sort", "repack",

2006 January 6 14:30.  Fixed bug in subroutine input, bad format.

2006 January 5 18:15.  Changed subroutine list, to make object list more
compact, using aptblsq.

2006 January 2 13:45.  Fixed bug in subroutine input, so command '.' now works.
Fixed bugs in subroutines indo and redo, so those commands now work.

2005 December 20 19:40.  Changed subroutine trout, to make triangle
definition possible to cut and paste.  Used new apt subroutine aptblsq.

2005 December 16 14:30.  Implemented coding in subroutine renamea for
subscripted names of lines, triangles, polygons, disks, polyhedrons,
tetrahedrons, bricks, vectors, operators, quadric surfaces, zones, bins,
pdfs, aliases, symbols.

2005 December 5 17:30.  Added display of total number of non-zero big integers
to output from subroutine bigout.

2005 August 15 19:20.  Added subroutines bigint, bigout, bigfind, bigwork,
bigzero, bigcopy, to do math with big integers, using new command "big".
Have implemented defining integers, sum, difference, product,
quotient, mod, power, root, factorial.  Make all zeros a table of 1.
Make division by zero bad.  Make factorial 0 = 1.  Added descriptive tags.
Include in debug command.  Allow specifying variable with big integer value.

2005 May 11 19:00.  Added subroutine renamea to rename stems of arrays.
Implemented coding for variables, points and clusters.

2005 April 4 15:00.  Added subroutine namechk to test object names, with and
without subscripts, for validity.
TO DO:  check special names "none", "comp.", etc.

2005 April 1 17:45.  Replaced command "point PNAME01 brick ..." with command
"point PMESH brick BRNAME mesh block [volume]" to provide a better way to
generate mesh points in a geometry bounded by surfaces with constant coordinate

2005 March 22 18:40.  Changed mesh subroutines to change the names of released
mesh points by replacing the first character with "-", and to prevent such
point from being reassigned to the mesh (copy or change to a new name first).
Improved display of mesh data.
Fixed bug in subroutine clout, to prevent crash when taking square root of an
argument affected by numerical truncation error.

2005 March 18 17:20.  Added restrictions on names of points and variables to
subroutines copy and renamex (for commands "copy" and "rename").

2005 March 9 17:00.  Changed subroutine renamex to prevent a point name from
being changed to a triply subscripted name, when the point has been assigned
to mesh indices different than the three subscripts.

2005 March 9 17:00.  Added commands "mesh point PMESH",
"mesh point PNAME K L M", "mesh point PMESH(K,L,M)", and
"mesh point PMESH block", to assign existing points with
their initial coordinates to the mesh, or create new "vacuum" points
with coordinates (x, y, z) = (-1E99, -1E99, -1E99).

2005 February 28 17:45.  Added mesh point root name apointm and length lapointm
to store.h, blanked out in subroutine blankout, added to subroutine debugx.
Defined as PMESH in geom_base.

2005 February 25 17:30.  Removed display of klm values in mesh subroutines.
Output file lines were too long and wrapped around.  When mesh point names
include the k, l and m indices as subscripts, klm will not be of interest.

2005 February 11 17:50.  Need to shorten formats in mesh subroutines, for words
One choice:  remove klm.

2005 February 7 14:00.  Gave web page files geom_make.tar and geom_test.tar
to Scott McKinley, to put into web site .

2005 February 3 16:20.  Finished running all test problems and comparing
old and new output files, with no apparent bugs.
Fixed bug in subroutine brick.f, using wrong increment in brick name for
command "brick", option "incr".  Reran test problem br.incr.test .

2005 February 1 16:30.  Fixed bug in subroutine quout, which made an output
line too long and wrap around.

2005 February 1,16:30.  Fixed bug in subroutine intplqu, which garbled an
output line.

2005 January 31 16:00.  Fixed bug in subroutine cluster, allowing command
"cluster", option "cluster" to redefine a cluster made up of itself and
other clusters.

2005 January 24 18:40.  Added option "thru" to command "factor".

2005 January 14 16:30.  Gave web page files to Scott McKinley,
to put into web site .

2005 January 7 16:45.  Updated files geom_mv.hsp.all, geom_exe.all and
geom_diff.all to include all test problems, and made then into executable

2005 January 4 18:50.  Added examples of subscripted do loops to geom_base
to create families of quadrics, and to create mesh points.
Added test problem meshpoint.test to use macro file meshpoint.mac to create
mesh points.

2005 January 3 20:30.  Added error tests for if-endif blocks and do loops.
Change file counter to not increment when reentering same file.

2004 December 13 18:00.  Fixed bugs in subroutines main and doenddo, to
allow blank lines in input files with do loops, and display command lines
in output file correctly, when executing from file geom_cmd.

2004 November 24 19:00.  Changed maximum size of all object names (except
markers) from 16 to 24.

2004 November 22 16:00.  Added debug group 'subscript" and all of the
internal subscript variables to subroutine debugx.  Added test problem

2004 November 19 18:30.  Replaced logic in subroutine subsrepl with call to

2004 November 9 18:50.  Replaced call to aptsubs with call to aptsubm in
compsubs, incrsubs and replsubs.  Command "incr" and options "+" and "-" only
affect first subscript.

2004 October 27 18:40.  Revised test problem input.test, added test problems
do.test and do.error.test.

2004 October 27 18:20.  Added commnds "do" and "enddo", and subroutine
doenddo, to allow nested do loops.

2004 October 12 17:00.  Added command "base" to convert decimal numbers to
a specified number base.  Added suboutine base, which calls APT subroutine

2004 September 24 16:40.  Revised display for commands "factor" and "hex".

2004 September 20 16:30.  Changed display format for command "factor", to
display powers better, and to show cofactors of each factor.

2004 September 17 16:30.  Changed display format for command "slice", so points
can be created by cutting and pasting, or by editing the output file to make
a new input file.  Put multiple intersections in different point arrays.

2004 September 13 18:00.  Added command "parse", with options "off" and "on",
to display GEOM internal variables for parsing input lines.

2004 September 13 15:00.  Added entries to geom_base for the data group options
in command "debug".

2004 September 10 17:00.  Added file geom_internal, containing a list and
definitions of all internal parameters and variables in file store.h that may be
specified with command "debug", and the names and composition of internal data
groups that may be specified with command "debug".

2004 September 7 19:00.  Added output to subroutine repack, when array sizes
are reduced.

2004 August 27 15:30.  Added storage of all object name lengths defined in
store.h.  Some are not used.

2004 August 25 16:00.  Added options ".nand." and ".xnor." to commands
"cluster" and "icalc".  Changed output formats in subroutine icalc.

2004 August 10 18:00.  Added command "debug" to display internal parameters and
variables in either by individual parameters or variables, or by data groups.
Uses new subroutine debugx.

2004 August 5 19:00.  Added option '&' to command "quadric", to allow individual
coefficients to be changed.

2004 August 4 18:00.  Added option "comp." to command "cluster", to allow
creading a cluster consisting of all points not in a specified cluster.

2004 August 2 18:50.  Corrected bug in subroutine plotx.  It failed to
recognize command "plot point all".  Equivalent command "plot point" was OK.

2004 July 30 15:30.  Added options ".eqv.", ".int.", ".nor.", ".not.", ".un."
and ".xor." to command "cluster", to allow creating clusters based on Boolean
operations on a specified pair of clusters.

2004 July 29 15:30.  Added options ".nor." and ".not."to command "icalc",
to find Boolean "nor" and "not" of two integers.  Changed other Boolean options
to ".un.", ".int.", "comp.", ".xor.".

2004 July 27 15:15.  Corrected error messages in subroutines vector, root,
renamex, point, contfr, circle.

2004 July 23 18:40.  Did test problem cl.boolean.test to use macro clint.mac,
to do Boolean operations of pairs of clusters.  Documented in geom_base.

2004 July 16 17:50.  Corrected subroutines input, indo, redo and undo to use
the correct line numbers in file geom_cmd, which were changed by the comment
lines added 2004 April 19.

2004 July 13 16:00.  Added option "symbol" to the help message in subroutine

2004 June 8 19:00.  Added tests to see if a new symbol or its replacement has
the same name as a preset synonym or an alias or its replacement, and to see if
a new alias or its replacement has the same name as a preset synonym or a symbol
or its replacement.  If so, a warning message is displayed.

2004 June 7 19:00.  Added command
"variable VARNAME polynomial XARG A(0) A(1) A(2) A(3) ... A(N)",
to allow creating a variable with the value of a polynomial function of XARG.

2004 June 4 14:00.  Added synonym "symb" for "symbol", changed output format
for synonyms, symbols and aliases.

2004 May 28 18:40.  Added display of named symbols and aliases to the displays
for command "synonym".  Added a blank line before displays of the total number
of objects.

2004 May 21 16:40.  Changed all subroutines for commands specifying objects
to test for null object names, possible when a non-blank delimiter is used.

2004 April 19 15:30.  Changed subroutine variable to specify descriptive tag
between single or double quotes.
Added commands "call", "input", "indo", "goto", "read", "redo", "return",
"undo" to stored commands and command summary file geom_cmd as comments,
preceded by "! ".

2004 April 16 13:20.  Updated file geom_define.  Added command "goto", to jump
to any command in the current input file.  Recompiled many subroutines.

2004 April 13 18:00.  Created new file geom_key, a key word index to the
GEOM commands.  Added synonym "display" for command "list".

2004 April 9 18:30.  Corrected a few more spelling errors in subroutines,
added some documentation to geom_base and geom_define.

2004 April 6 17:00.  Added many new entries and cross-references to file
geom_base, and corrected some spelling errors.
Corrected comment spelling errors in many subroutines.

2004 April 2 16:00.  Removed bugs in subroutines indo and redo, which caused
incorrect memory storage into delimiter fd when a modified input line would
exceed 80 characters.

2004 March 30 17:40.  Updated file geom_files to include a number of input and
data files in directory geom/test.  Updated files qalign.mac and

2004 March 30 14:40.  Changed maximum number of saved input lines from 1000 to
2000.  Recompiled subroutine main, blankout, indo, input, redo, tables, undo.
Updated geom_base, geom_log, geom_puzzles.

2004 March 29 14:40.  Changed subroutines indo and redo to add the modified
command to the standard output.  Changed indo to make "." a synonym for "0".
Changed indo and redo to allow negative NLINE to mean lines before last saved
input line.  Remade main, synonym also.  Changed geom_log, geom_base.
Added file geom_puzzles.  Remade indo.hsp, redo.hsp.

2004 March 26 18:00.  Fixed errors in subroutines indo and redo, that saved
too many input lines, caused wrong counter for file geom_cmd.
Reran delim.test indo.test, redo.test.  Eliminated synonym [command, geom_hsp].
Recompiled subroutines main, synonym, indo, redo.
Changed geom_log, geom_base, geom_help, geom_commforms.

2004 March 19 14:00.  Freezing all GEOM and APT web page files.

2004 March 15 19:00.  Gave Scott McKinley all of the latest GEOM files,
so we can go ahead and make the web pages public:

2004 March 15 17:40.  Fixed subroutine triple to find the vector from the
origin to a triple point, for use with command "vector", option "proximal".

2004 March 10 18:00.  Made new file geom_define, listing all of the entries
in file geom_base, without definitions.

2004 March 10 18:00.  Added capability to specify the output file on the GEOM
execution line.  The execution line "geom > OUT_FILE must NOT be used.
Instead, use "geom IN_FILE OUT_FILE".

2004 March 5 15:00.  Fixed bug in subroutine triangle, that prevented
incrementing or decrementing point names defining the vertices of a triangle.

2004 March 5 14:30.  Fixed bug in subroutine line, that prevented incrementing
or decrementing point names defining the ends of a line.

2004 March 2 15:00.  Added capability to specify the input file on the GEOM
execution line.  Requires such an input file to begin with command "title".
The execution line "geom < IN_FILE" must NOT be used.
Instead, use "geom IN_FILE".

2004 March 1 19:00.  Fixed bug in subroutine brick, that prevented incrementing
or decrementing brick names.

2004 February 27 19:00.  Made some new files:

  geom_aptcomms lists all of the GEOM commands that can result in a call to each
  APT subroutine called directly by GEOM, for each such APT subroutine.

  geom_commapts lists all of the APT subroutines that call be called directly by
  GEOM, for each GEOM command.

  geom_from lists all of the calls made to GEOM and APT subroutines, for each
  GEOM subroutine making such calls, with one paragraph per calling subroutine.

  geom_link lists all of the GEOM subroutines first called for each GEOM
  command, and all GEOM and APT subroutines called directly by each GEOM
  subroutine.  Each such link is listed in both forward and reverse order
  in a single alphabetic listing.

  geom_to lists all of the GEOM subroutines that call each GEOM and APT
  subroutine so called, for each such called subroutine, with one paragraph per
  called subroutine.

2004 February 3 18:00.  Gave tar files from directories geom/doc, geom/test,
and geom/make to Mike S. "Scott", McKinley, to put into web site
Scott is user quath on the GPS, Email, Ph 925-424-2738.

2004 February 4 12:40.  Changed subroute delete to use command
"delete OBJTYPE OBJNAME all", to delete all subscripted OBJNAME(...) of

2004 February 2 16:30.  Added tests to prevent object names "list", "all",
"help", "h", "thru".

2004 February 2 14:30. Added calls to subroutine aptsubs in all object
subroutines except mark, to allow stem of subscripted object name in "list"
option to indicate all objects with a subscripted name with the same stem are
to be displayed.

2004 January 26 19:00.  Replaced subroutine aptsubs with aptsubr in subroutine
search, for simplicity.

2004 January 20 17:00.  Fixed command "define" to ignore case, and to
use only the first 19 characters of ENTRY.

2004 January 20 17:00.  Fixed command "search" to do subscripted names, and
to include the text of markers, symbol replacements, and alias equivalents.

2004 January 16 19:00.  Made "?" a synonym for "random".
Added command "variable VARNAME random VMIN VMAX", for convenience.
It is the same as "variable VARNAME VMIN ran VMAX".

2004 January 16 14:00.  Added tag avartag to variable data, specified
with a "variable VARNAME tag 'VARTAG'" command, to allow specification of units
or other data for the variable.

2004 January 9 15:00.  Added option to prefix any variable name with '-' to
indicate use of the negative value of the variable.

2003 December 19 18:40.  Added coordinates of points and vector bound points,
and components of vectors to command "search".

2003 December 17 19:00.  Changed help message for object commands to include
"-" option for decrementing names.

2003 December 17 17:00.  Added display of determinant of operator to opout.

2003 December 17 17:00.  Fixed bugin incrsubs that caused null character to
appear in output file when a saved object name could not be incremented or

2003 December 15 18:40.  Added blank-out of point/cluster pairs and bin/pdf
pairs whenever points or clusters deleted, and whenever bins or pdfs deleted,
and repacking of point/cluster pairs and bin/pdf pairs whenever points or
clusters are repacked, and whenever bins or pdfs are repacked, respectively.

2003 October 20 17:30.  Updated geom_commdefs, displays from help*.f files.

2003 October 6 18:10.  Moved removal of blanked-out objects to subroutine
repack, which is called by subroutine sort, and by subroutine list, if not
called by subroutine sort.

2003 October 1 14:00.  Fixed subroutine blankout, to correctly blank out
disk names and command lines.

2003 September 29 18:00.  Added command "variable VARNAME prime NPRIME".

2003 September 19 18:30.  Added tests to prevent a^b functions from overflowing
in subroutines icalc and variable, and a * b, a / b, a exp b, a fact b functions
from overflowing or underflowing in subroutine variable.

2003 September 18 19:00.  Added option "variable VARNEW = K [+,-,*,/,^] L mod M"
to subroutine variable.

2003 September 18 14:50.  Changed subroutines icalc and variable to return
only non-negative values of the modulus function, opt "mod".

2003 September 12 18:30.  Added functions gcd and lcm to commands "icalc" and
"variable", to find the greatest common divisor and least common multiple of
two integers.  Calls aptcmad.

2003 September 8 16:30. Added calculation of modular order and modular
multiplicative inverse to subroutines icalc and variable, when function mod
is used.  Calls aptmord.

2003 September 3 18:00.  Added command "factor", to find all the prime factors
of integers, and the Euler totient function and related data.
Subroutine factor.  Calls aptfact.

2003 August 19 18:45.  Added command "lock" to allow the user to lock GEOM until
he unlocks it.  Subroutine hi.

2003 August 4 10:40.  Implemented Chinese Remainder Theorem.  Command "crt".
Calls aptcrtr, aptcrts.  Subroutine crt.

2003 July 25 19:30.  Changed compsubs and incrsubs to treat integer ASCII
strings as integers, for comparison and incrementing.

2003 July 21 16:40.  Added variables for the lengths of all base names,
all quadric names, and all zone quadric boundary names.
Replaced all aptchin calls with incrsubs, with aptchin inside incrsubs, to
correctly increment names with subscripts.

2003 May 19 15:00.  Changed command "sample" to add option "repl" when sampling
mutiple sets of samples.

2003 May 16 17:00.  Changed output from command "sample".
Created file dirt.mac to count sets of parallel rows in square arrays of stakes.

2003 May 6 17:50.  Set asubs and apref to ' ' in subsrepl, to make all
characters initially blank.  Failed otherwise.

2003 May 6 16:40.  Changed subroutine sort to allow option of increasing,
decreasing or random order.  Added option to command "sort".

2003 May 5 19:00.  Added option to sample multiple sets of samples without
replacement.  Changed command "sample".

2003 May 2 17:00.  Changed subroutine sort to correctly sort names with
parenthesized integer subscripts.

2003 April 23 19:30.  Added subroutine compsubs to compare two character strings
with integer subscripts.

2003 April 19 19:20.  Added command "search" to search for specified names
in all of the lists of named objects, and for values in the list of variables.
Subroutine search.

2003 April 19 19:20.  Finished comparing input lines in geom_base and
geom_commforms for agreement, completeness and consistancy.

2003 March 28 17:10.  Compared "Input line:" comments in GEOM with file
geom_commforms, and tried to make agree.

2003 March 2 17:40.  Made maximum length of names of all objects 16, except
Made "=" optional for points, vectors, variables and symbols, if next argument
is numerical or, in the first three cases, a symbol whose ultimate replacement
value is numerical.

2003 March 20 18:00.  Made maximum length of names of quadric surfaces and
zones 16 characters.

2003 March 10 18:00.  Made maximum length of cluster names 16 characters.
Changed format of cluster displays.

2003 March 7 18:00.  Made maximum length of point names 16 characters.
Changed format of point displays.

2002 October 29 17:20.  Added subroutine subsrepl, to replace variable
subscripts with integer values, and remove leading zeros from integer

2002 October 15 16:00.  Changed subroutine last, to allow 16-character random
names for aliases, symbols and variables.

2002 October 11 17:40.  Changed format of alias displays.  Changed allowed
delimiter characters.  Changed format of symbol displays.

2002 October 9 18:50.  Changed maximum length of variable names and symbol
names from 8 to 16.

2002 October 2 18:40.  Added option "symbol SYMNAME = STRING incr [INCR|1]"
to command "symbol".  Makes subscripted variables easier.
For example, for variable n, to get x(n), use command
"sumbol SYMNAME = x(000) incr n"

2002 September 30 16:20.  Added command "." to repeat last command.

2002 September 25 18:00.  Added option "-' to decrement object names.

2002 September 23 18:10.  Added option for a short prompt, a "?" on same line.

2002 September 17 18:00.  Compared all help messages and synonyms in GEOM,
in file geom_commdefs, and in file geom_base, for completeness and consistency.

2002 September 6 18:00.  Made file help.changes, to revise all help subroutines.

2002 August 30 13:40.  Restricted problem title to 72 characters.
Fixed title input to put command "title" into geom_cmd.
Changed format of synonym output.
Aded symbols to command "copy".
Aded symbols to command "delete".
Aded symbols to command "last".
Aded symbols to command "list".
Aded symbols to command "rename".
Aded symbols to command "sort".

2002 August 28 19:00.  Added many new command and key words to subroutine

2002 August 26 14:00.  Changed subroutine synonym to index synonyms differently.
Added option "synonym S", to display all synonyms beginning with the single
character "S".  Changed subroutine tables to include synonyms.

2002 August 21 17:00.  Added commnd "vi" to use UNIX text edior VI to display
and/or edit files while running GEOM.

2002 August 20 14:00.  Added command "symbol" to create and display symbols,
to take the place of ASCII variables.

2002 August 6 14:00.  Removed synonym "ID" for command "title".
Changed main.f and ifendif.f to add if-endif nest level to output.

2002 July 30 18:10.  Changed command "id" to "title", with option to change
problem title.  Made first line of all test problem input files.

2002 July 26 18:00.  Changed output.f to prevent file geom_cmd from being
specified as the standard output file.

2002 July 9 15:00.  Eliminated use of variable afilin, use ainput instead.
Gave all test problem input files a title line beginning with "# ".
Changed so an end-of-file has the same effect as command "return", "input #"
or "input tty".
Changed name of problem title from "name" to "atitle".

2002 July 2 14:00.  Added output file geom_cmd to list all input commands,
after aliases expanded, and without commands "call", "i", "in", "indo", "input",
"r", "rd", "read", "redo", "return", "rtn", "u" or "undo.
Changed output of input commands to remove trailing blanks.

2002 June 18 16:00.  Added restriction that variable names must begin with
characters @, A-Z, a-z.  Added option "/" to command "variable", to find
sum of reciprocals of arguments.

2002 June 11 14:20.  Aded command "iris", to find the equivalent series of
reciprocals of integers for a decimal value.

2002 January 22 14:00.  Changed option "root" of command "variable", to allow
a negative root.

2001 December 18 16:00.  Added display of continued fraction value in format
of command "cf".

2001 December 17 16:00.  Added display of continued fraction coefficients
on one or more lines, in format of command "cf".

2001 December 5 16:00.  Added option root to command "variable", to find
a specified root of a value.

2001 December 3 14:20.  Added functions perm and comb to command "icalc".

2001 November 13 17:00.  Added subroutine hex, command "hex", to display the
hexadecimal machine words for character strings and their integer and real
interpretations, and translate hexadecimal strings into decimal..

2001 August 27 15:00.  Added Boolean operations .comp., .int., .un. and .xor.
to icalc.

2001 August 20 14:00.  Added display of standard deviation to output for

2001 July 31 16:40.  Added test problem deal.test to test use of commands
'bin', "pdf", "sample", "spin', and "alias" to randomly deal 13 cards from a
52-card deck.

2001 July 17 14:30.  Revised contfr, aptdofr, aptcofv to find convergents.
Corrected subroutine variable to do x**0, (-x)**n correctly, and to test for
0**(-x), log (0) and log10 (0).

2001 July 1 17:10.  Changed subroutine contfr and aptcofv, to find the
successive aproximates, numerators and denominators for continued fractions.

2001 July 9 17:00.  Added macro scale.mac to generate frequency ratios for
an equal-tempered musical scale.

2001 June 25 15:00.  Added option "%" to command "input", in place of FILENAME
means current input file.

2001 June 7 17:00.  Changed apt subroutines for command "kiss".

2001 May 29 14:00.  Added warning message whenever command "variable" rounds
a floating point number to zero or an integer.

2001 May 22 16:30.  Changed display from subroutine kiss.

2001 March 28 17:40.  Added command "vector VNAME angle ANG1 VNAME1 ANG2 VNAME2"
to create a unit vector at angle ANG1 from vector VNAME1 and angle ANG2 from
vector VNAME2, if possible.

2001 March 12 15:00.  Added call to APT subroutine aptsver to subroutine trout,
to find Steiner vertex of a triangle.

2001 February 26 17:00.  Added command "steiner", to find Steiner vertex of
a triangle, and added coding to subroutine trout, to calculate same.

2001 February 13 16:30.  Side and vertex names garbled in output from commands
cuts and triangle.  Recompiled, problem went away.  Don't know why.
Main thought at end of file for tty input after "input tri.test ?".
Added test in main to ignore nerr = -1 when ainput = 'tty'.

2001 January 22 15:00.  Added tests in subroutine root for failure of APT
subroutine aptnewt to find absolute limits of roots, extrema and inflection

2000 October 24 14:30.  Added display of rational fraction numerator and
denominator to command "cf C1 C2 C3 ..."

2000 October 23 14:30.  Added synonym [**, ^] for commands "icalc" and

2000 October 20 17:00.  Added subroutine contfr to find value and coefficients
of continued fractions.  Added subroutines aptcofv and apcofr to APT
subroutine library to do calculations.

2000 September 11 14:30.  Changed subroutine varout to display floating point
value for any integer > 1.e6.

2000 August 29 16:00.  Changed subroutine varmode to call aptnint.

2000 August 8 17:30.  Changed nomenclature for commands "root" and "roots", to
make consistant.  Reran root, rootf and roots test problems.

2000 August 7 17:00.  Added warning message when an input word has too big an
integer or floating point value.  Limited command "angles" to degrees no
bigger in absolute value than the largest machine integer.

2000 August 2 16:30.  Deleted commands "binary", "nobin" and "mode", and
added their functions to command "icalc".  Removed subroutines "binary" and

2000 July 31 19:00.  Added options to command "angles", to convert angle units.
Deleted commands "degrees" and "radians".  Removed synonyms "angle" and "ang"
for commands "dot" and "inner".

2000 July 17 18:45.  Added macro square.mac to solve Harry Nelson's problem.
Added macros deg.mac and dms.mac for converting from degrees, minutes and
seconds to decimal degrees, and the reverse.

2000 June 26 14:00.  Added command "if A null [then]", to see if a variable
does not exist.

2000 June 21 17:)0.  Added a line in input.f so command "return" or "input #"
returns to the previous input medium with a different name.

2000 June 12 18:00.  Redid list of synonyms in subroutine synonym, to allow
more additions.  Corrected error message in subroutine define.
Changed main to ignore blank input lines.

2000 June 12 15:00.  Changed subroutine input to do command "i c ?' correctly
when more than 1000 commands saved.  Added tests for new input file name same
as old (WARNING) or output file name (ERROR).  Added tests to subroutine output
for too many words, and new output file name same as input file name.
Added name and line number of current file to help messages "h i" and "h o".

2000 JUne 5 18:00.  Added command "variable list VARNAME1 thru VARNAME2'.

2000 May 30 17:40.  Added command "q QNAME ortho QNAME1 QNAME2", to find
quadric surface QNAME, the locus of all points at which the families of
quadric surfaces QNAME1 and QNAME2 are orthogonal.

2000 May 22 14:20.  Replaced the list of commands in subroutine helpalph.

2000 May 22 14:00.  Updated the gravitational constant, G, and the Planck mass,
length and time in physcon.SI.mac and physcon.lab.mac .

2000 May 19 15:00.  Added macro contfr.mac to find continued fraction for a
specified input value.

2000 May 16 14:20.  Added command "s @VARNAME incr INCR" to increment the value
of an ASCII variable @VARNAME by increment INCR.
Changed command "variable" to allow form "s @VARNAME = A [FUNCTION B]" when
A is an ASCII string.
Added command "setr @VARNAME = ..." to allow the replacement value of ASCII
variable @VARNAME to be specified.

2000 May 8 16:10.  Added capability of multiple statements per input line,
using ";" as statement separator.

2000 May 2 15:50.  Added several new forms of comment lines, including "C",
"c....", "C....", "c++++", "C++++", "c----", "C----", "c____", "C____", and
any line with "cc" or "CC" in columns 1 and 2.

1999 December 13 14:20.  Added function "avg" to command "variable", to find
average of two numbers.

1999 December 7 14:10.  Added permanent variable euler, Euler's constant.

1999 December 7 14:00.  Changed subroutine varout to use format 1pe23.15 instead
of 1pe20.12 when tol .lt. 1.e-14, for floating point numbers.

1999 November 30 15:20.  Added macro file conv.mac to directory
~edwards/work/geom/test to make metric conversion factors available to GEOM.

1999 November 3 12:10.  Added output label to subroutines arc and extrema.
Fixed apt subroutine aptcris to remove duplicate results.

1999 November 1 14:20.  Added output of extreme surface curvatures to command
"extrema", as in command "arc".

1999 October 19 13:50.  Fixed subroutine renamex.f to update point names for
polyhedrons.  Reran test problem polyh.test, compared with polyh.hsp.

1999 October 18 18:00.  Fixed format errors in subroutine polyhed.f.

1999 Augusst 30 16:00.  Added subroutine cute, command "cute", to extend pairs
of sides of a triangle to make a new triangle, with both sections having
equal perimeters and areas.

1999 August 30 11:40.  Added subroutine cuts, command "cuts", to find all
straight line cuts that partition a triangle into parts with equal areas, equal
perimeters, given the side lengths.

1999 August 26 16:30.  Added subroutine aptrabc to find all straight-line
cuts that partition a triangle into parts with equal areas, equal perimeters,
given the side lengths.

1999 August 26 16:30.  Added subroutine aptrcut to find all straight-line
cuts that partition a triangle into parts with equal areas, equal perimeters,
given the vertex coordinates.

1999 August 11 15:00.  Finished rerunning all test problems run before
1999 January 1.  All OK.

1999 July 6 18:20.  Reran old test problems up through 1996 Dec 10 17:08.
Made format changes in point, for limits on angles in radians.
Corrected format error in plotx.

1999 June 21 17:05.  Changed subroutine trout to call apt subroutine aptrcut,
to find line(s) that cut(s) triangle into two parts with equal areas and

1999 April 14 18:00.  Added display of cutting lines to subroutine trout,
for single lines that cut a triangle into figures of equal areas and perimeters.

1999 March 23 15:30.  Added command "side all all", to find distances from all
points to all quadric surfaces.  Added display of normal vector at the proximal
point on the surface, for commands "side" and "prox".

1999 March 22 14:00.  Tried three triplets of points in tangent planes, with
command "q QNAME fit ...".  Got coincident plane solution.  Give up aptqtan!

1999 March 18 18:20.  Tried 12-unknown form of aptqtan.  All indeterminate.
There must always be more than one way to be tangent to points on 3 planes.???

1999 March 16 18:50.  Partly debugged aptqtan.  Keep trying.

1999 March 9 17:40.  Changed subroutine hyperb help display to delete
hyperboloid of one sheet.  All results are planes or hyperbolic paraboloids.

1999 March 3 12:40.  Added APT subroutine aptpfit to fit a plane to 3 points,
and changed subroutine plane to call aptpfit for commands "plane ... fit ...",
and "plane ... triangle ...".
Tested with problems and pl.tri.test.

1999 March 1 18:30.  Changed hyperb, aptqhyp to test for coincident points
and display error message.  Changed quout to avoid division by zero, when
aptaxis returns incorrect standard coefficients.

1999 February 23 17:20.  Added command "quadric QNAME fit PNAME1 ... PNAME9",
to fit a quadric surface to nine points.  Added APT subroutine aptqfit to find
the surface.

1999 February 23 14:45.  Adding APT subroutine aptqhyp to do work in hyperb.f.

1999 February 22 15:20.  Fixed bug in error test in subroutine hyperb.
Displays output when matrix is singular.  Changed APT subroutine aptaxis,
to allow principal axis vector to be very small, without crashing.

1999 February 19 14:15.  Added command "define" to "help end" output, added
to file geom_commdefs.  Changed subroutine define.f to look in new places for
file geom_base.

1999 February 5 15:00.  Added call to subroutine aptsphk in subroutine kiss,
to find radii and center coordinates of tangent spheres.

1999 January 29 17:30.  Added call to subroutine aptcirk in subroutine kiss,
to find radii and center coordinates of tangent circles.

1999 January 29 14:00.  Added call to subroutine aptsphl in subroutine kiss,
to find center coordinates of tangent spheres.

1999 January 5 17:40.  Added call to subroutine aptspht in subroutine kiss,
to find radii of tangent spheres.

1998 December 15 18:30.  Added calls to subroutines aptcirt and aptcirl in
subroutine kiss, to find radii and coordinates of tangent circles.

1998 December 14 18:00.  Added subroutine kiss, and command
"kiss RAD1 RAD2 RAD3".

1998 October 28 11:50.  Changed command "circle"to
 "circle point PNAME1 PNAME2 PNAME3".

1998 October 21 13:30.  Corrected logic in variable.f to allow arguments in
command "variable VARNAME [+ *] F1 F2 F3 ... FN" to include VARNAME.

1998 October 20 15:40.  Added command "variable VARNAME [+ *] F1 F2 F3 ... FN"
to find the sum or product of many factors.
Added output of quadric surface invariants trace, dsum, det to quout.f.

1998 October 19 17:30.  Added command "quadric QNAME [* \] FACT", to
[multiply divide] the coefficients of the implicit equation of quadric QNAME
by FACT.  Can use to make the invariants of two quadric surfaces the same,
so when one is subtracted from the other, the invariant becomes zero.

1998 October 12 16:00.  Added output of plane of projected curve to command
"quadric", option "project".  Added command "plane", option "project", to find
plane of curve on quadric surface where normal is perpendicular to a specified
vector (outline seen from infinite distance in vector direction).
Reran test problem q.proj.test.  Added test problem pl.proj.test.

1998 August 24 17:45.  Added option to command "triple" to specify initial
guess of triple point.

1998 August 3 17:00.  Added output of radii of tangent circles centered  on the
vertices, and coordinates of their tangent points to triangle data.

1997 December 15 18:10.  Added capability for command "triple" to do two or
three general quadric surfaces, using new APT subroutine aptripq.

1997 December 10 13:20.  Remove command "simple" and subroutine "simple", having
incorporated all of its displays into subroutine quout.
Added command "quadric QNAME plane PLNAME1 PLNAME2" to create a quadric
surface representing two coincident, parallel or intersecting planes.

1997 December 9 17:20.  Added command "simple" and subroutine "simple", to find
simple planes in quadric surfaces of types 1, 2 and 3.  Tested OK.

1997 December 4 14:00.  Added capability to command "triple" to find any
intersection of two planes and a qeneral quadric surface.

1997 December 3 18:00.  Fixed false saddle points in aptqext, fixed bugs in
aptcris (command "arc").  Reran all test problems with saddle point output.

1997 November 10 11:00.  Added commands "hyperb all", "hyperb list [...]",
and "hyperb HPNAME", to make hyperbolic paraboloids analagous to other special
types of quadric surfaces.  Added command "last hyperb".
Changed subroutines synonym, copy, delete, rename, last, to include hyperbolic

1997 November 7 17:50.  Added command
"hyperb QNAME fit PNAME1 PNAME2 PNAME3 PNAME4", to create a hyperbolic
paraboloid through the four vertices, the four edges and the center of
a nonplanar quadrilateral.

1997 November 4 18:00.  Added command "arc PNAME QNAME" to find extreme
curvatures at point PNAME in quadric surface QNAME.

1997 October 31 17:10.  Added subroutine aptcris to APT subroutine library.
Make a new command to use it to find the shape of a quadric surface family
at a specified point.

1997 October 29 14:00.  Added command "triple QNAME1 QNAME2 QNAME3", to find
any triple point of three quadric surfaces.  Currently implemented only for

1997 October 227 18:30.  Reformated geom_base to indent command descriptions
only 30 characters instead of 42, and to separate command lines by "^c[gc]$"

1997 October 24 14:30.  Added command "vector VNAME normal PNAME QNAME", to
create a vector normal at point PNAME to the family of quadric surfaces QNAME.
Added command "plane PLNAME tangent PNAME QNAME", to create a plane tangent at
point PNAME to the family of quadric surfaces QNAME.

1997 October 22 16:40.  Changed subroutine redo to use roll-around of saved
input commands.

1997 October 13 18:20.  Changed subroutine indo to use roll-around of saved
input commands.

1997 September 29 17:20.  Added subroutine intquad, called from distance, to
find the intersection or proximal points of two quadric surfaces.

1997 September 25 18:00.  Replaced logic in subroutine rootf with a call to
APT subroutine aptpolf.

1997 September 23 16:00.  Reran all test problems using iterative proximal point
method.  Remove aptaxis.f aptwhis.f from Makefile.

1997 September 22 18:00.  Put new logic in aptwhis.f to do hyperbolic paraboloid
proximal points, using general 5th-order method.  Can now do all quadric

1997 September 19 18:00.  Put new logic in aptwhis.f to do elliptic paraboloid
proximal points, using general 5th-order method.

1997 September 18 17:30.  Tested new logic for elliptic paraboloid proximal
points in util/test, made problem par.ell.5th.test to compare GEOM results
with util/test/test results, ran and saved.

1997 September 12 17:00.  Added logic to aptwhis that allwos exact proximal
points for elliptic hyperboloids of one or two sheets.  Ran new test problems.

1997 September 3 13:20.  Added logic to aptwhis that allows exact proximal
points for all ellipsoids.  Reran all ellipsoid test problems.

1997 August 25 16:30.  Put better error estimates into root, rootf, aptnewt,
aptpole, aptpolr.

1997 August 21 18:00.  Added command "root = R(1) R(2) R(3) ... R(N)", to find
the coefficients of an Nth-order polynomial, given N real roots.
Fixed bug in subroutine rootf, wrong xmax.
Added 1 / Root output to subroutine root.

1997 August 18 15:00.  Added command "rootf" and subroutine rootf, to factor out
the term (x - r) from a polynomial equation, when one root r is known.

1997 August 15 16:00.  Changed subroutine root to NOT reduce equation when
leading coefficients are zero, and to not define inflection points for
polynomials of order 1 or 2.

1997 August 12 13:10.  Finished command "root" and subroutine root.

1997 July 31 16:50.  Started adding command "root" to find real roots, extrema
and inflections points using Newtonian iteration, given a range, an increment,
a limit to iterations, and the coefficients of a polynomial equation,.

1997 July 29 14:20.  Remade GEOM with new APT subroutine aptbite, and reran
test problem icalc.test to verify binary output.

1997 July 18 14:15.  Made changes in aptwhis for special cases of general

1997 July 17 17:10.  Changed idmax in store.h from 9 to 13.  Recompiled
all subroutines using idmax.
Discovered that binary display in icalc does not work.  ERROR in aptbite?

1997 July 17 14:30.  Made changes in aptwhis for elliptic hyperboloid of
two sheets.  Tested with hyp2.ell.test.

1997 July 16 18:00.  Made changes in aptwhis for elliptic hyperboloid of
one sheet.  Tested with hyp1.ell.test.

1997 July 10 17:00.  Made new GEOM on DEC-west.  Still have no way to find
out time charged.

1997 June 24 14:40.  Changed aptwhis to find exact proximal point(s) for
all circular hyperboloids of two sheets.

1997 June 23 14:00.  Changed aptwhis to find exact proximal point(s) for
special cases of hyperbolic paraboloids, and all circular hyperboloids of
one sheet.

1997 June 20 18:00.  Changed aptwhis to find exact proximal point(s) for
special cases of elliptic paraboloids.

1997 June 17 17:20.  Changed aptwhis to find exact proximal point(s) for
elliptic cones.

1997 June 16 17:20.  Changed aptwhis to find exact proximal point(s) for
oblate and prolate spheroids.

1997 June 32 14:00.  Changed aptwhis to find exact proximal point(s) for an
elliptical cylinder.

1997 June 12 15:00.  Changed aptwhis to find exact proximal point(s) for a
hyperbolic cylinder.

1997 June 11 14:00.  Changed quout to recognize when aptaxis changed sign of
quadric equation without rotation or translation.
Corrected a comment in quadric at end of slice option.

1997 May 7 18:30.  Added call to aptparx in accel, to find any extrema of a
quadric surface equation on the parabolic trajectory of a uniformly accelerated
particle, when the particle path does not intersect the quadric surface.
Added subroutine clfind, to find a cluster of points.  Called by accel.f.

1997 April 21 15:40.  Added command "accel P0 V0 A0 line LNAME", to find the
proximal or intersection point of the parabolic tractory of a uniformly
accelerated particle and line LNAME.

1997 April 17 11:30.  Changed subroutines accel, quadric, quout, roots, slice,
sliceq, to eliminate tolx.  Now all apt subroutines that require a nonzero
value of tol reset it themselves.

1997 April 16 18:30.  Added command "accel P0 V0 A0 point PNAME", to find the
proximal or intersection point of the parabolic tractory of a uniformly
accelerated particle and point PNAME.

1997 April 14 17:00.  Added command "accelerate = P1 T1 P2 T2 P3 T3", to find
the initial position and velocity, and constant acceleration of the parobolic
trajectory of a uniformly accelerated particle, given the points P1, P2 and P3
on its path at times T1, T2 and T3.

1997 April 10 17:00.  Added command
"accelerate PINIT VINIT VACCEL quadric QNAME", to find the intersection of a
linearly accelerated particle (with a parabolic path) with a quadric surface.

1997 April 4 17:20.  Modified aptquar to get better accuracy, modified
roots to get nicer output.

1997 March 25 17:10.  Finished command "roots" for a quartic equation.
Added command "roots =" to find the coefficients of a polynomial equation
(up to fourth order) with from one to four specified real and or complex roots.

1997 February 25 16:45.  Changed subroutine roots.f to allow adding coding
to find the roots of a quartic equation.
Started subroutine aptquar to find roots of a quartic equation.

1997 February 11 18:00.  Added documentation, coding for command "trace".
Added logic to subroutine output, to allow appending data to and existing
output file.

1997 February 10 18:30.  Replace key word "set" with "family".
Added synonym "set" for "variable".
Added command "trace" to display input file linkages.
Changed subroutine input.f to display preceding input file, when different
from file nfiles-1.

1997 February 5 15:00.  Added new command "return", same as "input #".

1997 February 3 16:15.  Added new arrays to keep track of all input files.
Made changes in store.h, blankout, main and input.

1997 January 15 13:40.  Changed subroutines renamex and copy to allow ASCII
variables to only be renamed or copied to ASCII variable names.

1997 January 10 13:30.  Changed subroutines main, variable and varfinda,
to allow ASCII variables to be used in commands "variable", "copy", "delete"
and "rename", and to be ignored in comment lines and appended comments.

1996 December 19 14:15.  Moved subroutines aptparb and aptparp to the apt
subroutine library.

1996 December 18 18:20.  Added command "accelerate PINIT VINIT VACCEL", just to
find vertex point, time and velocity.  Finished testing command "accel", and
apt subroutines aptparb and aptparp.
Added option to command "tol":  "tol [=] TOL".

1996 December 17 18:55.  Added command
"accelerate PINIT VINIT VACCEL plane PLNAME",
to find the intersection of a parabolic particle path with a plane.
Finished new subroutine aptparp for apt.

1996 December 16 17:00.  Finished retesting all GEOM test problems in geom/test.

1996 December 10.  Corrected bugs in trig.f.

1996 November 25.  Added logic to get time and date of run.
Ran more test problems.

1996 November 11 15:20.  Recompiled all GEOM subroutines.  Had to fix formats
and add character statements to several, and change an erroneous "go to 230"
to "go to 320" in pdf.f.
Library mbase is missing.  It was needed for mgtime and mgustime.
Function rand is also missing.  Specified library libran.a.
Made new GEOM code.  Missing, time, date, machine time used.

1996 April 8 18:30.  Added subroutine aptparb (a future APT subroutine), to find
the position, velocity and path length of a linearly accelerated particle at a
specified time.  Called by subroutine accel.

1996 April 3 18:20.  Added subroutine accel, command
"accelerate PINIT VINIT VACCEL TMIN DT TMAX" to find position, path length and
velocity of an accelerated particle.

1996 March 29 14:10.  Added calls to aptrefs in subroutine track, to find the
reflected vector whenever the track intersects a surface.  The result is then
Added command "reflect vector VNAME normal VNORM", to reflect a vector VNAME in
a surface with normal vector VNORM.

1996 March 12 18:30.  Added calls to plotpt to pgout, phout, intcirc, distance,
ptdist, pttet, intpls, intplcy, intsph, intspcy, intcyl, track, side, proximal,

1996 February 14 16:00.  Implemented command "plot array", in subroutine
plotx and in new subroutine plotmap.

1996 February 12 15:10.  Changed option "clear" in command "plot" to "delete.

1996 February 7 17:20.  Extended use of command "alias", to allow additional
words to be appended after the alias.  This allows the initial parts of commands
to be aliased.

1996 February 6 16:00.
Added option "plot clear index N1 ... N2 thru N3 ...".
Added option "plot point marker MKNAME1 ... MKNAME2 [thru] MKNAME3 ...".
Added option "plot point clear N1 ... N2 [thru] N3 ...".

1996 February 5 14:20.  Changed more plot variable names.  Added limit tests
to plot array columns and lines.
Added option "plot clear MKNAME1 ... MKNAME2 [thru] MKNAME3 ...".

1996 February 2 18:00.  Changed format of command "plot limits".
Replaced command "plot horizontal" and "plot vertical" with "plot axis".
Changed name of subroutine ptplot to plotpt.
Added subroutine plotvar to convert point coordinates (x,y,z) to plot axes.

1996 January 31 18:00.  Changed plot storage in store.h to delete arange, add
sminplh, smaxplh, sminplv, smaxplv, nlimplh, nlimplv.  Changed some more
plot data names.
Changed the formats of commands "plot limits", "plot center", "plot zoom".
Changed subroutine ptplot to store points in first blank space.

1996 January 30 18:00.  Changed arguments of subroutine ptcoord, to allow input
of coordinate system, angle units, point coordinates, and to test for errors.
Added plot center point coordinates, plot axis limits.
Implemented command "plot center" in subroutine plotx.
Implemented command "plot zoom"   in subroutine plotx.

1996 January 29 16:00.  Changed some plot names in store, blankout, plotx, markdep.
Implemented command "plot clear" in subroutine plotx.
Implemented command "plot on"    in subroutine plotx.
Implemented command "plot off"   in subroutine plotx.

1996 January 24 15:10.  Removed synonyn "all." from all subroutines.
Changed subroutine delete, added subroutine markdep, to disallow deletion of
a marker assigned to a plot title, axis label, or plot point.
Implemented command "plot marker" in subroutine plotx.

1996 January 9 15:40.  Implemented command "plot size" in subroutine plotx.
Implemented command "plot title" in subroutine plotx.
Implemented command "plot horizontal" in subroutine plotx.
Implemented command "plot vertical" in subroutine plotx.

1996 January 8 17:45.  Implemented command "plot status" in subroutine plotx.

1995 December 19 18:10.  Added more plot coding.
Added minimum and maximum coordinates to cluster display.

1995 December 18 15:30.  Added command "status" to display environmental data.
Changed command "tables" to display the current numbers of various objects,
in addition to the maximum number of objects.
Added more coding to implement plot commands.

1995 December 15 14:00.  Added commands "list marker ....", "sort marker ...".

1995 December 12 14:00.  Added commands "copy marker MKNAME MKNAME2",
"rename marker MKNAME MKNAME2", "delete marker ...", "last marker ...".

1995 December 11 13:50.  Added command "page", to write '^L' into the output
file, to cause a page restore when printed.
Added command "marker", to create and display markers and their texts.

1995 December 7 16:00.  Changed subroutine meshtest, to do line element and
surface element test for all mesh blocks, when possible.

1995 December 5 17:40.  Added command "mesh test block", to see if any mesh
indices in the mesh block are not assigned to mesh points, and to see if any
line, surface or volume elements in the mesh block violate certain geometric

1995 November 29 17:00.  Added subroutine solve, command
"solve A B C D" to solve 3 simultaneous linear equations for 3 unknowns.

1995 November 28 13:40.  Corrected subroutine variable and file geom_base,
to refer to the scalar (not vector) triple product, for option "triple".
Added option "vector VNAME triple VNAME1 VNAME2 VNAME3" to find the vector
triple product of three vectors.

1995 October 26 13:00.  Split subroutine meshrlax into two subroutines,
meshrlxb and meshrlxm.  Changed subroutine mesh to call both.
Corrected bug in subroutine meshline, affecting command "mesh linear block".

1995 October 10 15:30.  Compiled new GEOM, with new subroutine meshrlax.

1995 October 9 14:50.  Fixed bug in mesh command "mesh point PNAME ...", when
point PNAME does not exist.
Started implementing command "mesh block [-] block".  Added subroutine meshrlax.

1995 September 22 15:00.  Added display of number of vacuum mesh points added by
command "point PTNAME01 mesh".
Added display of mesh indices of block corners to command "mesh block".

1995 September 16 17:20.  Finished adding command "mesh linear block".
Added command "cluster CLNAME mesh vacuum", to make a cluster of all mesh
points with vacuum coordinates.

1995 September 15 13:50.  Added command "mesh list K L M", to list any mesh
point with mesh indices K, L and M.  Added command "mesh - K L M", to release
any mesh point with mesh indices K, L and M.
Added display of mesh size after command "cluster CLNAME mesh".
Added display of mesh block after command "cluster CLNAME mesh block".
Added command "point PNAME01 mesh" to create mesh points for all unassigned
mesh coordinates, with physical coordinates x, y, z = (-1.e99, -1.e99, -1.e99).
Changed pout, to display "VACUUM", for such points.
Started adding command "mesh linear block".
Added subroutine meshline for command "mesh block linear".

1995 September 12 17:00.  Added command "mesh list void" to list all unassigned
mesh coordinates in the mesh.
Added command "mesh list block void" to list all unassigned mesh coordinates in
the mesh block.

1995 September 8 13:30.  Changed format of command "mesh" from old format to
"mesh block K1 K2  L1 L2  M1 M2".
Deleted command "mesh - K1 L1 M1  K2 L2 M2".
Deleted command "mesh - point K1 L1 M1  K2 L2 M2".
Deleted command "cluster CLNAME mesh K1 L1 M1  K2 L2 M2".
Changed order of args in command "mesh invert   block [k,l,m]".
Changed order of args in command "mesh exchange block [k,l,m] [l,m,k]".
Changed order of args in command "mesh move     block KMOVE, LMOVE, MMOVE".
Added command "cluster CLNAME nomesh" to put all non-mesh points into
cluster CLNAME.

1995 September 5 14:40.  Added command "mesh move KT LT MT block", to move the
mesh block distances KT, LT and MT in the k, l and m directions, respectively.
Fixed bug in meshblk, used wrong increment of point names.

1995 September 2 16:20.  Changed command "mesh exchange ...", to exchange
relative indices in the mesh block, not absolute indices, and corrected bug,
to exchange indices only for points in the mesh block (I had ignored the
third index).
Corrected bug in command "mesh invert", to invert only points in the mesh block
(I had ignored the other two indices).

1995 September 1 14:10.  Added command
"mesh exchange [k,l,m] [l,m,k] block", to exchange two of the three mesh indices
in a mesh block.

1995 August 31 14:40.  Fixed NaN bug in quout, by testing for approximately
equal semiaxes of ellipsoids.

1995 August 30 14:40.  Added command
"axisym AXNAME focus PFOC VAXIS PNAME1 PNAME2", to fit an axisymmetric quadric
to a focal point and two points in the surface.

1995 August 29 18:00.  Added display of eccentricities in x, y and z planes
for ellipsoids, and areas of oblate and prolate spheroids, to subroutine quout.

1995 August 29 14:50.  Added command "mesh invert [k,l,m] block" to
invert the [k, l, m]-layers in the mesh block.
Changed meshdel and meshins to display the changes in the mesh size and
the mesh block at the end.

1995 August 14 13:50.  Changed meshdel, meshins, to change the mesh block
indices when the layers deleted or inserted affect the mesh block.
Added command "mesh point PNAME01 block IK IL IM" to assign the mesh block
indices to point PNAME01, ..., with name increments IK, IL and IM in the
k, l and m directions, after releasing all other points with the mesh block

1995 August 11 18:00.  Corrected tests for point name duplication for command:
"point PNAME01 brick BRNAME  NU IU   NV IV   NW  IW".
Changed subroutine meshdel to change the mesh block indices when the layers
deleted include layers in the mesh block.
Added WARNING messages, when the mesh size or mesh block indices are changed.

1995 August 9 18:00.  Added command:
to create a 3-D array of points in brick BRNAME.

1995 August 3 13:30.  Changed common block lnet to lmesh in store.h, and added
variables kbl1, kbl2, lbl1, lbl2, mbl1, mbl2 for index ranges of a mesh block.
Added new commands "mesh block", "mesh block all",
"mesh block K1 L1 M1   K2 L2 M2", "mesh list all", "mesh list block",
"cluster CLNAME mesh block".
Added new test problem
Fixed bug in default values of mesh indices in commands "mesh" and "cluster".

1995 August 2 13:40.  Added option "mesh all" to command "cluster", to include
all mesh points.
Changed command "pdf PDFNAME = all" to "pdf PDFNAME all".
Changed subroutines mesh, meshrel to not release a point when reassigning the
same mesh indices.
Fixed a bug in ptbrick, when system angle units are not the same
as brick angle units.
Made new subroutine ptcoord, to get the coordinates of a point in the
current coordinate system.  Use in pout.  Use later in mesh commands.
Added command "point PNAME01 brick BRNAME NUMU INCU NUMV INCV NUMW INCW",
to create a set of points PNAME01, ..., in brick BRNAME.

1995 July 31 16:30.  Fixed bugs in cluster, options "thru", "cl" and "cl -".
Added displays of names of added and removed clusters.
Fixed bugs in pdf, option "thru".  Should now detect all "thru" errors.

1995 July 30 11:40.  Added arguments "u, v, w, vpos" to subroutine meshfind,
for later use in commands "mesh linear ..." and "mesh relax ...".
Maybe should have two subroutines just to convert coordinates back and forth.

1995 July 29 10:30.  Changed subroutines cluster and pdf to allow object names
preceding and following option "thru" to be nonexistant objects.
Changed subroutines clout and pdfout to be consistent with display of
options to add or remove objects, and number of objects in cluster or pdf.

1995 July 28 13:20.  Added test in cluster for option "-", to see if cluster
Added command "cluster CLNAME cluster - CLNAME1 ... CLNAME2 [thru] CLNAME3 ..."
to remove points from cluster CLNAME found in clusters CLNAME1, ...,
CLNAME2 [, through] CLNAME3, ...
In commands "mesh" and "cluster", changed order from
"K1 K2 L1 L2 M1 M2" to "K1 L1 M1   K2 L2 M2", to make use of defaults easier.

1995 July 26 13:20.  Added command "point PNAME mesh K L M", to assign mesh
indices to a point.  Just like     "mesh point PNAME K L M".
Added command "point PNAME mesh -" to release point PNAME from mesh.
Added subroutine meshchk1, like meshchk, but for one mesh point.
Changed command to "mesh size [=] KMAX LMAX MMAX".
Added command "mesh delete [k,l,m] N1 [N2|N1]" to delete mesh layers.
Added command "mesh insert [k,l,m] N1 [N2|N1]" to insert mesh layers.

1995 July 25 14:30.  Added command "variable" option"
"variable VARNAME triple VNAME1 VNAME2 VNAME3"
to find the vector triple product of three vectors.
Added command "cluster CLNAME brick BRNAME", to cluster all points inside
brick BRNAME.
Added command "cluster CLNAME tetrahedron TETNAME", to cluster all points inside
tetrahedron TETNAME.
Added command "cluster CLNAME zone ZNAME", to cluster all points inside
zone ZNAME.

1995 July 24 15:20.  Added command "mesh - point PNAME", to release mesh points.
Added command "mesh - cluster CLNAME", to release all mesh points in a cluster.

1995 July 21 10:00.  Added display of mesh indices to minimum output from pout.
Added subroutines meshchk, meshrel, meshout.
Added option "cluster" to command "cluster" to combine clusters.
Fixed a bug in command "id".

1995 July 20 12:00.  Added option "mesh" to command "sort", to sort points by
mesh index.  Added option "mesh" to command "list", to list mesh points.
Added option "mesh" to command "cluster", to put part of the mesh into a

1995 July 19 13:20.  Added command "mesh" to specify a mesh, and display and
release points assigned to the mesh.

1995 July 14 18:20.  Added definitions to geom_base for a new command "mesh",
to specify a mesh, assign and delete mesh indices to points, and display
mesh sizes and points.

1995 July 7 14:00.  Added option:
"triangle TR02 increment NUMTR INC TR01 ip1 [ip2 [ip3]]", to create a set of
NUMTET triangles TR02, ..., with names incremented by INC characters, by
incrementing the names of the three vertex points of the preceding triangle by
the number of characters indicated by the integers IP1, IP2, IP3, starting from
triangle TR01.
Added option "pdf BINAME - BINAME1 ... BINAME2 [thru] BINAME3 ...",
to allow bins to be removed from a pdf.
Added subroutine binfind to find a bin.
Added function "fact" to command "var", to get factorial.
Put everything away on ftp archive.

1995 June 26 13:30.  Added option "cluster CLNAME all" to create cluster
CLNAME, containing all points.
Added option "cluster CLNAME - PNAME1 ... PNAME2 [thru] PNAME3 ...",
to allow points to be removed from a cluster.
Added logic to test for duplicated "thru" in commands "delete", "cluster".
Added subroutine lstore to find where to store a new line.
Added subroutine tristore to find where to store a new triangle.
Added option "line LNAME02 increment NUMLINE INC LNAME01 IP1 IP2", to
create a set of lines starting with line LNAME01, with point names incremented
by IP1 and IP2.
Added option "triangle TR02 increment NUMTR INC TR01 IP1 IP2 IP3", to
create a set of triangles starting with triangle TRE01, with vertex names
incremented by IP1, IP2 and IP3.

1995 June 23 16:30.  Finished reversing order of "INC NUM..." in all commands
using that option, for improved clarity.  Did in geom_base, in all subroutine
help messages, in all subroutine comments and logic, and in all test problems
using those commands.  Ran all the related test problems.

1995 June 22 18:30.  Changed names of subroutines getpt to ptfind, getvar
to varfind, getvara to varfinda, getvect to vectfind.  Changed all calls
to those subroutines in other subroutines.

1995 June 20 15:00.  Changed command "q QNAME = ..." to eliminate words 4-6
(translation from origin).  Changed all test problem input for which words
4-6 were not "0 0 0".

1995 June 13 13:00.  Added command:
Creates a sphere with its center on the axis through point PAXIS with direction
vector VAXIS, with the surface of the sphere through points PNAME1 and PNAME2.
Added new APT subroutine aptspha to do geometric part of calculation.
Added synonym "disc" for "disk".
Changed command "cylinder CYLNAME fit VAXIS TRNAME" to
Changed format of "coord" output.
Changed formats of displays for commands with option "=", to look like command.
Changed formats of displays for commands "last" and "line", and for "coord".
Fixed error in quout, bad calculation of area and volume for sphere at origin
with radius not = 1.

1995 June 12 14:20.  Changed formats of displays for clusters, to show number
of points in each cluster, and zones, to show number of bounding surfaces for
each zone.
Changed command "sphere SPHNAME fit   PNAME1 PNAME2 PNAME3 PNAME4" to
form            "sphere SPHNAME point PNAME1 PNAME2 PNAME3 PNAME4",
so option "fit" could be used for another purpose.

1995 June 9 14:40.  Added command "vector VNAME rel RATIO" to allow vector
lengths to be scaled.  Made "*" a synonym for "rel" in command "vector".
Added coding to subroutine vector to allow extremely small vectors to be scaled
up without error.

1995 June 7 17:00.  Added new subroutine calls to subroutine helpall.

1995 May 31 11:00.  Added command "trig" to find missing parts of a triangle:
"trig [angle,side] A [angle,side] B [angle,side] C
Added subroutine trig to process command "trig".
Changed varmod to replace floating point value with integer value, when
mode changed to integer.

1995 May 15 19:10.  Copied all geom/make to U (UNICOS) Cray machine.
Copied all geom/test to U (UNICOS) Cray machine.
Made new GEOM on U Cray.

1995 May 8 15:00.  Added commands
"twist [point [PNAME, all], cluster CLNAME] PAXIS VAXIS axial PITCH"
"twist [point [PNAME, all], cluster CLNAME] PAXIS VAXIS radial PITCH RINV"
to twist points around an axis, with the angle of rotation dependent on the
axial position or the radial distance from the axis.
Added subroutine aptwirl and aptwist to the APT subroutine library to do
these commands.

1995 May 1 16:00.  Finished implementation of proximal point storage for
commands "distance". "proximal", "side" and "track".
Added command "vector VNAME proximal" to get proximal vector.

1995 April 26 13:40.  Added call to intplqu to subroutine distance, for the
distance from a plane to a cylinder.

1995 April 26 13:40.  Added call to intplqu to subroutine distance, for the
distance from a plane to a sphere.
Added calculation of proximal points and proximal vectors to subroutines
ptdist, distance, proximal, track, intpl, intsph, intspcy, intcyl.

1995 April 24 13:50.  Added subroutine varmode, to change a floating point
variable to an integer variable, if sufficiently close to one, at the time it
is created.  Called by subroutine variable.
Added command "variable VARNAME vector VNAME" to get the length of a vector.

1995 April 18 13:50.  Changed description of input line
zone ZNAME [=,&] [+,-|+] Q1 [+,-|+] Q2 [+,-|+] Q3 ...".
Added the two commands:
"variable VARNAME dot   VNAME1 VNAME2".
"variable VARNAME angle VNAME1 VNAME2".
Added the option of using negative integers for LINE1 and/or LINE2 in
command "input", to indicated the number of lines preceding the last saved
input line.

1995 April 18 14:00.
Changed command "cluster CLNAME [&] PNAME1 ... PNAME2 [thru] PNAME3 ..." to
"cluster CLNAME [=,&] PNAME1 ... PNAME2 [thru] PNAME3 ...".
Changed command "icalc M ! N" to "icalc M fact N".
Changed command "area VNAME PNAME1 PNAME2 ..." to
"area VNAME point PNAME1 PNAME2 ...".
Changed command "vector VNAME PNAME1 PNAME2" to
"vector VNAME point PNAME1 PNAME2".
Changed command "plane PLNAME PNAME VNORM" to
"plane PLNAME vector PNAME VNORM".
Changed command "plane PLNAME PNAME1 PNAME2 PNAME3" to
Changed command "sphere SPHNAME PCEN RADIUS" to
Changed command "cylinder CYLNAME PAXIS VAXIS RADIUS", to
Changed command "cylinder CYLNAME VAXIS TRNAME",
to "cylinder CYLNAME fit VAXIS TRNAME".
Changed command "ellipsoid ELNAME PCEN SAX SAY SAZ" to
"ellipsoid ELNAME = PCEN SAX SAY SAZ".
Changed command "ellipsoid ELNAME PCEN VAXIS fit PNAME2 PNAME3" to
Changec command "cone CNNAME pointPVER  VAXIS PNAME2" to

1995 April 14 17:00.
Made optional "=" in word 3 of command "point" mandatory.
Made optional "=" in word 3 of command "pdf" mandatory.

1995 April 12 11:20.
Moved options "rotate" and "scale" from word 5 to 3 in "plane", "point" and
Moved option "parallel" from word 5 to 3 in "plane".
Moved option "concentric" from word 5 to 3 in "cylinder" and "sphere".
Moved option "fit" from word 5 to 3 in "axisym".
Moved options "angle", "line", "nest" and "point" from word 5 to 3 in "cone".
Added word 3 "=" to command "triangle TRNAME = PNAME1 PNAME2 PNAME3".
Added word 3 "fit" to command "polygon PGNAME fit NVER PCEN PVER PCOP".
Added word 3 "fit" to command "polyhedron PHNAME fit NVER PCEN PVER PCOP".
Added word 3 "fit" to command "disk DKNAME fit PCEN VNORM RADKIN RADKOUT".

1995 April 11 15:20.  Removed "=" from command "variable", options "distance",
"rgold", "ebase", "rad/deg", "deg/rad", "pi".
Added command "variable" option "random" for random value from 0 to 1.
Changed first character of ASCII variables from '%' to "@".
Moved options "scale" and "rotate" from word 5 to 3 in commands
"axisym", "cone", "cylinder", "ellipsoid", "quadric" and "sphere".
Moved option "move" from word 5 to 3 in commands "axisym", "cone", "cylinder",
"ellipsoid", "plane", "quadric", "sphere" and "point".

1995 April 10 15:30.  Added inverse hyperbolic functions to command "variable".
Moved option "series" in command "variable" from word 5 to word 3.
Made key word "=" mandatory in command "variable", to create a variable.
Made key word "=" mandatory in command "alias", to create an alias.

1995 April 7 13:50.
Made key word '=' mandatory in one form of command "brick".
Made key word '=' mandatory in one form of command "tetrahedron".
Made key word '=' mandatory in one form of command "zone".
Moved option "increment" in command "tetrahedron" from word 5 to 3.
Restricted delimiter character.  May not be a-z, or any special command
Added display of field delimiter to general help message.

1995 April 5 16:00.  Changed form of "bin" commands, to remove ambiguity in
option names vs variable names.
Added verification from user to command "delete OBJECT all".
Moved option "increment" in commands "brick" and "zone" from word 5 to 3.

1995 April 3 15:20.  Removed options "variable VARNAME random N" and
"variable VARNAME VALMIN random VALMAX".  Added command "spin N" to replace
the first option, and option "variable VARNAME [=] A ran B" to replace the
second option.
Changed option "vector VNAME PNAME1 PNAME2 ..." to
"vector VNAME point PNAME1 PNAME2 ...", to remove ambiguities caused by
use of names for points that are the same as key words.
See beginning of geom_base for remaining ambiguity situations.

1995 March 27 17:15.  Corrected many subroutines to test for there being
exactly two words when second word is "help" or "h", to display help message.
This allows objects to be created with names "help" or "h".

1995 March 10 17:30.  Added commands "if A RELTYPE B [then]", and "endif",
to allow "if-endif" blocks of input lines, which may also be nested.

1995 March 7 17:10.  Reconciled all versions of geom_base into one file.

1995 March 6 18:00.  Discovered that I have two parallel versions of geom_base,
one named  Must reconcile differences.  Now called geom_base.old
and geom_base.

1995 March 6 15:40.  Added command "bisect PNAME1 PNAME2 PNAME3" to find the
bisector of the angle formed by the points PNAME1, PNAME2 and PNAME3.

1995 February 23 13:40.  Added option "dist p PNAME brick BRNAME', to find the
distances from a point to the bounding surfaces of a brick.  Modified
subroutine ptbrick arguments and contents to optionally display distances.
Changed APT subroutine aptbrkn to find distances.

1995 February 22 11:00.  Added option "dist p PNAME tet TETNAME', to find the
distances from a point to the faces of a tetrahedron.  Modified subroutine
pttet arguments and content to optionally display distances.

1995 February 21 14:00.  Added option "last OBJTYPE random", to generate a
random string of 8 lower-case letters.
Added option "vector VNAME project VNAME1 PLNAME" to create vector VNAME by
projecting vector VNAME1 onto plane PLNAME.
Added option "distance point PNAME zone ZNAME", to find the distance from
point PNAME to all of the quadric surfaces bounding zone ZNAME.

1995 February 16 13:10.  Fixed bug in subroutine vector, was giving wrong
answer for option "random  ... angle ...", when axis vector was not a unit
vector.  Removed useless variable "amount" from subroutine vstore.

1995 February 14 11:50.  Created files aptuse.aptg, aptuse.aptgs, aptuse.gapt,
aptuse.gapts, summarizing all geometry subroutine calls to apt subroutines.

1995 February 13 11:20.  Changed main.f and helpmisc.f to improve messages to
user.  Saved individually in archive.

1995 February 8 17:30.  Changed APT subroutine aptcubs to handle truncation
errors better.

1995 February 7 11:30.  Changed APT subroutine aptaxis to insure that quadric
coefficients qxx and qyy are in descending order of absolute value when qzz has
the opposite sign of qxx and qyy.  Added more output to quout.  Modified some
output labels.

1995 February 1 17:00.  Added command "quadric QNAME project VNAME QNAME2",
to create a quadric that is the linear projection of quadric QNAME2 in the
direction of vector VNAME.  Added more foci to quout displays.

1995 January 31 14:20.  Combined commands "root3" and "roots" into the single
command "roots".  Corrected calculation of Latus rectum and vertex to focus
distance for parabolic cylinders.

1995 January 30 11:50.  Reversed order of input coefficients in command "roots",
to A, B, C, for A + B*x + C*x**2, and in command "root3", to A, B, C, D,
for A + B*x + C*x**2 + D*x**3, to make them compatible.

1995 January 27 13:20.  Added display of eccentricity of hyperbolic and elliptic
cylinders, lengths of transverse and conjugate axes of hyperbolic cylinders,
lengths of the latus rectum of parabolic and hyperbolic cylinders, and the
focal points of hyperbolic cylinders to subroutine quout.
Added command "quadric QNAME intersect PLNAME QNAME2" to create quadric surface
QNAME perpendicular to plane PLNAME and through the intersection of plane
PLNAME and quadric QNAME2.  Can rotate to z axis around an intersection point,
do any kind of slice, the rotate resulting point back, to find many points on
the intersection curve.

1995 January 27 18:00.  Replaced most of subroutine intplqu with a call to
APT subroutine aptplqu.

1995 January 23 18:30.  Tested new subroutine intplqu, with problems plqu....
All intersections between planes and quadrics can now be found.

1995 January 18 10:40.  Updated geom_base to show new option
"distance plane PLNAME quadric QNAME", to find distance or intersection of
a plane and a general quadric surface.
Added new subroutine intplqu to implement new option.
Changed subroutine distance to recognize new option and call intplqu.

1995 January 11 18:40.  Added option:
"distance plane PLNAME cylinder CYLNAME" to find the distance/proximal lines/
intersection lines/ellipses between a plane and a cylinder.

1995 January 10 13:20.  Removed commands intspcy and intcyl.  Added options
"distance sphere SPHNAME cylinder CYLNAME" and
"distance cylinder CYLNAME1 cylinder CYLNAME2", to do the same thing.

1995 January 9 16:40.  Removed command "intpls" and "intsph".  Added options
"distance plane PLNAME sphere SPHNAME", and
"distance sphere SPHNAME1 sphere SPHNAME2", to do the same thing.

1995 January 6 16:00.  Added command "tables" and subroutine "tables", to
display the maximum table sizes and the command types for various objects.

1995 January 5 16:00.  Added command "intspcy" and subroutine "intspcy" to find
the distance and proximal points between a sphere and a circular cylinder, using
new APT subroutine aptspcy.  See 1995 January 10.

1995 January 4 16:00.  Changed subroutine intcyl to call new APT subroutine
aptcycy, and added the proximal points and the vector and distance between them,
for the axes of the two cylinders.  See 1995 January 10.

1994 December 22 16:20.  Added command "intcyl", and subroutine "intcyl", to
find the distance between two circular cylinders, and the proximal points on
their surfaces.  See 1995 January 10.

1994 December 20 17:30.  Added option "plane PLNAME outline PNAME QNAME" to
find the plane containing the outline (silhouette, profile) of quadric surface
QNAME, as seen from point PNAME, and display the point in the plane nearest
the center of the quadric surface.

1994 December 14 16:00.  Changed subroutines prox and ptdist to use estimated
proximal points from aptwhis.  Updated geom_base references to proximal points
and proximal distances.  Replaced cbase calls in GEOM with mbase calls, and
standardized output of problem version, run time, and machine time use.

1994 December 13 16:40.  Tested new aptwhis ability to calculate exact proximal
points for parabolic cylinders and circular paraboloids.
Test problems side.parab.test and side.test.

1994 December 8 18:20.  Temporarily removed cbase calls izm00, izm01, izmo3
from subroutines main and tbank, until library libcbase.a is again available,
or new library libmbase.a is available.

1994 December 7.  Added command "root3", subroutine root3 to find the real and
complex roots of a cubic equation.  Modified display for command "roots" to be
consistent,  and added complex roots to display for command "roots".

1994 November 12.  Improved APT subroutines aptqprr and aptqprt to help avoid
false proximal points, and make faster, when used by commands "side",
"proximal" and "distance".

1994 November 10.  Change subroutine quout to clarify display of focal points,
and to add display of semiaxes of elliptic cylinders.
Changed subroutines quout, slice, sliceq to make sure aptaxis is not called with
tol = 0, except when necessary.  Changed subroutines sphere, cylinder, ellipsoid
to reject radii smaller than tol*(center coordinates).
Changed APT subroutine aptqprt to do better when the center of curvature is
closer to the test point than the intersection point is, by using the tangent
plane method instead of the center of curvature method.

1994 November 8.  Added command "vector VNAME bound PNAME" to change the bound
point of a vector.  Allows lots of signicant figures.
Changed quout to make x', y' and z' the axes for the standard form, and
unprimed x, y, z the axes for the original form, instead of vice versa.

1994 November 4.  Moved subroutine aptqprt (method of finding proximal point on
quadric surface by using the center of curvature) from subroutines prox and
ptdist to the APT subroutine library.

1994 November 3.  Changed subroutine quout to eliminate redundant displays for
quadric surfaces that are already in standard form.

1994 November 2.  Moved subroutine aptqprr into the APT libraries aptflibe,
libapt.a.  Modified subroutines prox and ptdist to prepare for new APT
subroutine aptqprt, to replace the iterative method using radii of curvature.

1994 November 1.  Added new command "proximal" to find proximal points on
quadric surfaces by randomly sampling directions from isotropic and cosine-power
distributions.  Added new APT subroutine aptqprr as core subroutine.

1994 October 7.  Modified ptdist for proximal point method, using a modified
method of steepest ascent, using estimated radii of curvature.

1994 October 7.  Added iterative method to commands "side" and "distance", to
try to find proximal point on general quadric surfaces.

1994 October 5.  Standardized "Input line" comments in GEOM subroutines, to
agree with geom_base.

1994 October 4.  Tested new apt subroutine aptqexv.f.
Modified subroutine ptdist to call aptqexv, iterate on extreme point.
Modified subroutine ptdist to call aptqexv, iterate on normal intersection.
Made aptqexv an APT subroutine, in tar library aptflibe, lib library libapt.a.

1994 October 3.  Added output of vector and distance from point to center of
quadric, and extrema in that direction, to command "side" and "distance", when
normal intersection is not found.  Started new apt subroutine aptqexv.f.

1994 September 30.  Updated geom_base.  Added number of walk steps to outer
radius, ratio of outer radius to final radius to output from command "walk".
Added option to make initial direction vector random in command "walk".
Updated GEOM on the U machine, ran latest test problems.

1994 September 29.  Changed subroutine walk, to rename variables, to better
organize output, add standard deviations to total path distance, net distance

1994 September 28.  Changed subroutine walk, to include transport corrections
in the expected values, and to find pdist for use in command "s SNAME distance".

1994 September 27.  Changed subroutine walk, command "walk", to random walk a
point in a sphere, either to census (a maximum total distance) or to escape
(a maximum radial distance from the starting point).

1994 September 26.  Added subroutine walk, command "walk" to random walk a

1994 September 23.  Added subroutines helpgen, helpran, helpobj, helperr,
helpmisc, helpenv, to display help messages for old command "help", and new
commands "random", "object", "error", "misc", and "env".
Replaces old help messages in main.

1994 September 22.  Added option "cosine" to command "vector", option "random",
to randomly sample vectors from a cosine-power distribution.
Added option "angle" to command "vector", option "random", to randomly sample
vectors at a fixed angle from a specified axis.
Added function "ran" to command "icalc", to randomly sample an integer from
a range of values.

1994 September 21.  Added command "synonym" to display synonyms for commands
and key words.  Added subroutine synonym.
Removed synonyms cy for cylindrical, sp for spherical.  Use cyl, sph.

1994 September 20.  Finished doing all test problems on U machine.
Updated apt.summ.geom from data on U machine geom_map.

1994 September 19.  Added options "distance [point, cluster] [sphere, cylinder,
cone, ellipsoid, axisym, quad] QNAME" to subroutine distance, to find distances
from points or clusters to spheres, circular cylinders and circular cones, and
to find approximate distances from points or clusters to ellipsoids,
axisymmetric quadric surfaces and general quadric surfaces.
Added subroutine ptdist, called by side and distance, to find the distance from
a point to a quadric surface.

1994 September 16.  Changed alias and define to allow " and ' to be used to
bracket alias and geom_base entry.
Ran test problems on U for all commands changed since 1994 August 10.
Fixed bug in sliceq, default word 8 zero, not 1.

1994 September 15.  Added five new files to geom/doc:
geom_comm        The comment header blocks from all of the GEOM subroutines.
geom_comm.make   Instructions for making geom_comm
geom_files       Description of all GEOM subroutines and other files.
geom_make        Insructions for updating the GEOM code.
geom_summ        Summary of all GEOM directories and files.
Remade GEOM on the U machine.  Ran a few test problems.
Renamed subroutines time to timex, delimit to delimx, to remove conflicts on
the U machine.

1994 September 14.  Added quadric type numbers to display.
Updated geom_base with FUNCTION entry and cross references.
Updated geom_base with cut-and-paste and mouse entries.  Clarified scaling.

1994 September 13.  Changed subroutine define to look for file geom_base in
three places:
geom_hsp                                      (User's local directory)
/h/meg3/edwards/work/geom/doc/geom_base       (MEGNET)
/w1/i/edwards/geom/doc/geom_base              (CRAY)
Changed subroutine getvar to ignore ASCII variables.
Changed ERROR message in subroutine variable from "Too many" to "Wrong number".
Standardized help messages.
Added subroutines binary, id, time, when, for the corresponding commands, to
allow help messages.
Changed the names of subroutines setmode to modeset, settol to tolset.
Fixed a bug in subroutine icalc (floating point check of function "sign").
Changed subroutine helpall to add calls to new subroutines, put calls in
alphabetic order of commands, expand "matrix" to "invert", "reflect", "rotate"
and "scale".
Reran test problem helpall.test.

1994 September 12.  Extended command "zone", option "set" to three dimensions.
Added command "help all" to display all command help messages.
Standardized help messages.

1994 September 9.  Extended command "zone", option "set" to two dimensions.

1994 September 8.  Added command "zone ZNAME set IZA QA01 IQA NQA" to create a
set of zones ZNAME (increment IZA), ..., between the NQA surfaces QA01
(increment IQA).  Implemented one dimensional form.

1994 September 7.  Changed subroutine define to stop search on first non-target
string after target string.  Saves much time!
Changed option "nest" in command "cone" to eliminate base cone.
Added the option of appended comments on input lines, beginning with "!".
Added special test for "!" in command "icalc".
Added test in subroutine point to reject spherical phi not between 0 and 180
degrees, and theta not between -180 and 360 degrees.
Restored "s" as a synonym for variable.  Mnemonic for scalar, symbol.

1994 September 6.  Finished rerunning all test problems.  Made up new test
problem delim.test.
Modified subroutines point, variable, vector and cone to display help message
in two parts, so first part does not scroll off screen.
Added option "move" to command "plane".
Changed option "parallel" in command "plane", to eliminate base plane.
Changed option "conc" in command "sphere", to eliminate base sphere.
Changed option "conc" in command "cylinder", to eliminate base cylinder.

1994 September 2.  Did more test problems.
Changed subroutine getpt to ignore word "thru" in command "cluster".
Added optional "=" in command "last".
Copied geom_base, store.h and all ".f" files to U machine.

1994 September 1.  Added command "delimiter" to specify a new field delimiter.
The default delimiter is a blank character.
Ran some test problems on subroutines that create objects.
Found and corrected some bugs.

1994 August 31.  Finished implementing use of ASCII variables to replace
anything in any command, except aliases and "variable" commands.
Updated geom_base regarding ASCII variables.
Changed command "define" to delimit entry with "'", allow internal "'" in entry.
Changed command "roots" to default arguments 2 and 3 to zero.
Changed command "increment" to default argument 3 to 1.

1994 August 30.  Implemented use of ASCII variables to replace the names of
existing points and vectors in commands.

1994 August 29.  Changed delimiter character for right side of aliases from
"/" to "'".  Use double ' inside right side to represent a single '.
Added type character variables, with names beginning with "%".

1994 August 26.  Changed APT subroutine aptchtp to prevent interpreting a
character string as floating point if the mantissa contains no digits, but is
followed by an exponent.
Added optional argument 3 "=" in the simple forms of command "var".

1994 August 25.  Made it possible to use integer variables in all commands that
require integer arguments.  Done by calling getvar to replace integer variable
names with integer values.  Now all numerical arguments may be replaced by
named variables.  All searches for named variables are done in getvar, except
in indo.

1994 August 24.  Changed subroutine variable to make all variables integer that
are within tol of being integers, with the integer value being the nearest
integer, but the floating point value being the actual value.

1994 August 23.  Changed name of command "scalar" and subroutine "scalar" to
"variable" (see 1994 Sept 7).  Changed names "ascalar" to "avar", "nscalars"
to "nvars", "svalue" to "fvar", and added "mvar" (mode) and "ivar" (integer
Changed subroutine variable to find the mode of the named variable.

1994 August 22.  Added command "redo" to redo a saved input line with any number
of ASCII and integer arguments incremented.

1994 August 19.  Revised command "redo" to substitute new arguments for old
arguments, instead of incrementing/decrementing.

1994 August 18.  Added command "redo" to redo a saved input line with changes.

1994 August 17.  Added command "increment STRING INC NUMSTR", to increment
strings the same way object names are incremented in commands that create
sets of objects.

1994 August 16.  Finished changing all "NUM..." commands to same initial format,
using "INC" as argument 3.  Updated geom_base, all help messages, did all test

1994 August 15.  Added argument INC to commands "brick", "tetrahedron" and
"zone", option "increment", and changed order of arguments.
Added argument INC to all commands with "move" options, and changed order of
This allows object names to be incremented or decremented by any specified
number of characters.

1994 August 12.  Finished running all test problems on U machine.
Added volume to standard output for bricks, tetrahedrons.
Added test for correct input of commands "binary", "nobin".
Changed names from "OBJNAME00, OBJNAME01" to "OBJNAME01, OBJNAME02".
Added options "plane", "sphere", "cylinder", "cone", "ellipsoid", "axisym" to
command "sort".  Each causes ALL quadrics to be sorted.

1994 August 11.  Did more test problems on U machine.  Improved output in
slice for intersection failures.  Fixed mistakes in test input files.
Reordered objects in last and list to agree with convention.
Standardized input files for test probs.  Same on U and SUN.

1994 August 10.  Added tests to subroutines zone and zout to find duplicate and
non-existant bounding surface names.
Copied files to U machine, made new GEOM there, tested all object creating

1994 August 9.  Changed arguments of command "brick" back to minimum and maximum
coordinate values, instead of one coordinate and an increment.
Changed storage of tetrahedron vertex point names from four arrays to one.
Added subroutines tetstore and tettest to find storage, test points.
Added option "tet TET01 incr TET00 NUMTET IP1 IP2 IP3 IP4" to create a set of
tetrahedrons with vertex point names incremented by from a base tetrahedron.

1994 August 8.  Added subroutine brtest to test coordinates of bricks, and
subroutine brstore to find index in brick list to store a new brick.
Added option "brick BRNAME01 incr BRNAME00 NUMBR [-] CDIR [FMULT|1]" to create
a set of bricks in direction CDIR, starting with brick BRNAME00, and with each
brick thickness multiplied by FMULT.

1994 August 5.  Standardized error messages to use exact subroutine name.

1994 August 4.  Added option "thru" to command "delete", to allow a range of
object names to be deleted.
Added option "undo [N|1]" to undo the last N commands.

1994 August 2.  Added option "point PNAME01 move PNAME00 VMOVE [NUMPT|1]"
to create a set of NUMPT evenly spaced points PNAME01, ...,  incremented from
point PNAME00 by vector VMOVE.
Added option "point PNAME01 [rotate, scale] PNAME00 OPNAME PINV [NUMPT|1]"
to create a set of NUMPT points PNAME01, ..., [rotated, scaled] from base point
PNAME00 with operator OPNAME, invariant point PINV.
Added option "vector VNAME01 [rotate, scale] VNAME00 OPNAME PINV [NUMV|1]"
to create a set of NUMV vectors VNAME01, ..., [rotated, scaled] from base
vector VNAME00 with operator OPNAME, invariant point PINV.

1994 August 1.  Added option "zone ZNAME01 increment ZNAME00 NUMZN IQ1 IQ2 ..."
to create a set of zones by incrementing the names of the bounding surfaces of
base zone ZNAME00.  The arguments IQ1, IQ2, ... are the number of characters by
which to increment the names of each bounding surface.
Standardized the use of scalar names for numerical arguments.  Now allow only
for floating point arguments.

1994 July 29.  Added option "plane PL01 scale PL00 OPNAME PINV [NUMPL|1]".
Added subroutine scstore to find out where to store a new scalar.
Added option "scalar SC01 series SC00 FADD FMULT [NUMSC|]", to create a series
of scalars.  Restored format of scalars to "1pe20.12,16x,1p24.16".
Added function "!" (factorial) to icalc.

1994 July 28.  Standardized all help messages.
Changed order of arguments in command "sphere SPHNAME PCEN RADIUS".
Changed order of arguments in command "cylinder CYLNAME PAXIS VAXIS RADIUS".
Changed order of arguments in command "disk DKNAME PCEN VNORM RADKIN RADKOUT".

1994 July 27.  Added command "quadric" options "move", "rotate" and "scale" to
commands "ellipsoid", "axisym".  Tested ellipsoid, only "move" for axisym.

1994 July 26.  Added command "quadric" options "move", "rotate" and "scale" to
commands "sphere", "cylinder", "cone".

1994 July 25.  Added synonyms for input:  read, rd, r.  Added synonyms for
output:  write, wr, w.
Added option "quadric QNAME01 move QNAME00 VMOVE [NUMQ|1]" to create a set
of quadrics translated by increments of vector VMOVE from base quadric QNAME00.
Added option "quadric QNAME01 [scale, rotate] QNAME00 OPNAME PINV [NUMQ|1]"
to create a set of quadrics [scaled, rotated] from base quadric QNAME00 by
operator OPNAME with invariant point PINV.

1994 July 22.  Added option "cone CONE01 nest CONE00 DANG [NUMCONE|1]"
to create a set of nested cones with the same vertex and axis as cone
CONE00, with half-angles incremented by DANG from that of CONE00.

1994 July 21.  Added radius to standard output for spheres, cylinders.
Added main axis to standard output for cylinders and cones.
Added half-angle to standard output for cones.  Made help message for
commands "invert", "reflect", "rotate", "scale" clearer.
Added option "plane PLNAME02 rotate PLNAME00 PINV VAXIS ANGLE [NUMPL|1]"
to create a set of rotated planes.

1994 July 20 18:00.  Fixed bugs in plane and sphere.
Added option "sphere QNAME01 concentric QNAME00 DRAD [NUMSPH|1]" to create
Added option "cylinder QNAME01 concentric QNAME00 DRAD [NUMCYL|1]" to create
a set of concentric circular cylinders.

1994 July 19 10:30.  Changed option "sphere SPHNAME P1 P2 P3 P4" to
"sphere SPHNAME fit P1 P2 P3 P4".
Changed name of subroutine findnp to ptfind.
Added option "plane PLNAME01 parallel PLNAME00 DIST [NUMPL|1]" to create a
set of parallel planes.

1994 July 18 15:20.  Added options "output", "output FILENAME" to display
current output file, specify a new output file.
Reran many test problems using new "+" option.  See file junktest in geom/test.

1994 July 15 11:40.  Added options to delete, sort alias names.
Added option "last OBJTYPE OBJNAME" to change the last object name of type

1994 July 13 18:10.  Added option to copy, rename, list alias names.

1994 July 12 12:00.  Added "+" option to all object-generating subroutines,
including copy, rename to allow the last object name to be incremented for the
current object.

1994 July 12 09:40.  Modified subroutine last, to list last quadric surface
types by main and subtypes only.  Modified subroutine input, to allow use of
character "$" to indicate the last command, or the end of an input file.

1994 July 7 17:10.  Added subroutine last, option "last OBJTYPE" to display
the last object of type OBJTYPE specified.

1994 July 6 10:00.  Added tests of Maxwell, Planck and Wien distributions to
bin.test, pdf.test, sample.test.  Added display of minimum and maximum sampled
values, number of samples in each sampled bin.

1994 July 5 18:30.  Added Planck and Wien bins.

1994 July 1 17:40.  Added power-law bin, normal bin, relativistic Maxwellian

1994 June 29 10:00.  Added option "bin BINAME PRTOT VALUE DVAL pow POWER" to
create power-law probability bins.
Added expected values to bin output.  Changed bin array names.  Replaced

1994 June 28 15:40.  Added option "bin BINAME PRTOT VALUE DVAL exp SIGMA" to
create exponential probability bins.

1994 June 27 11:00.  Added option "pdf PDFNAME all" to make pdf PDFNAME consist
of all probability bins.  Added option "sample PDFNAME NSAMP norep" to sample
pdf PDFNAME, with up to NSAMP samples, but without replacement (a sampled bin
cannot be sampled again).

1994 June 24 14:10.  Added option N to command "sample", to allow a specified
number of samples from a pdf.  Added display of mean and standard deviation of
samples.  Simplified sample output, limited to 40 at user's terminal.
Added command "time" to find millisec of machine time charged to the problem.

1994 June 23 18:30.  Added subroutine sample to randomly sample from pdfs.

1994 June 22 18:00.  Changed names of bin variables, format in binout.
Added total probability variable.  Changed copy, sort.
Added subroutine pdf to display and create pdfs.
Changed copy, delete, renamex, list, sort to handle pdfs.  SUN only.

1994 June 21 10:20.  Put subrouting circle into U machine version.
Added subroutines bin, bindep, binout, pdfout to create and display probability
bins, probability distribution functions.  SUN only.
Corrected subroutine copy to prevent exceeding table lengths.  SUN only.
Changed copy, delete, renamex, list, sort to handle bins.  SUN only.

1994 June 20 18:15.  Added subroutine circle, to find the radius, center,
unit normal vector, circumference and area of a circle through three specified
points.  Completely revised subroutine side to use data from aptwhis.
Updated SUN and U versions.

1994 June 17 16:40.  Added apt subroutine aptwhis, makes it possible to find
proximal point for some additional surfaces.  Use in side!

1994 June 13 17:00.  Fixed format in intsph.  Made constants in aptdode more
accurate.  Finished testing all test problems on UNICOS U machine.
Added scalar output in subroutine scalar in 1pe24.16.

1994 June 7 15:40.  Fixed apt subroutine aptqext to not look for extrema on
cones.  Ran all test problems with cones.

1994 June 6 15:00.  Fixed error in distcone that gave wrong normal vector for
a circle of equidistant points.  Fixed quout.f to ignore tiny differences in
coefficients of quadric, for finding focal points, half-angles.
In copy.test, cone still produces saddle points.  Test in aptx/test.

1994 June 3 10:40.  Renamed all test problems to put ".test" at end, and all
test problem output to put ".hsp" at end.

1994 June 2 16:00.  Made new GEOM on U machine.
Ran older test problems, all test problems for changed subroutines.

1994 June 1 18:30.  Updated geom_base, fixed some bugs in various subroutines.

1994 May 31 15:20.  Tested geom_base to make sure all commands, synonyms, and
command arguments are included as entries.
Moved main and define to U machine, recompiled.  Archive files 940531.SUN and
940531.U are the comparible files in geom/doc and geom/make.

1994 May 28 17:40.  Added option "define ENTRY", and subroutine define, to
search for and display entry ENTRY in geom_base.

1994 May 26 18:30.  Fixed bugs in blankout, delete, input, side, where, found
when compiling on UNICOS Cray U machine.  Changed subroutine names move to
movex, rename to renamex, to avoid conflict with Cray library subroutine names.
Changes common block in quadric to lquadx, was same name as in store.h.
Made U machine version.  Not tested.

1994 May 25 14:40.  Replaced icalc.f with version from chex, with additional
tests and with optional binary output.  Added abin to store.h.
Added parameter nbitm to store.h (bits per machine word).

1994 May 13 15:20.  Fixed bug in copy, zone.  Zone volume not initialized to
zero for new zones, or copied.  Added zone array volzerr, estimated error from
mcvol calculation.  Also initialized volumes voltet and volbr in tetra and in
Changed icalc.f to add new error checks and warnings, and improve the existing
tests for overflow.

1994 May 12 13:00.  Added options "alias ..." to allow aliasing short names
to long commands.  Added subroutines alias.f alout.f getalias, changed
subroutines main.f, blankout.f, and cliche store.h.

1994 May 11 11:20.  Eliminated all "input" commands from the list of saved
input lines.  This avoids all kinds of confusion.

1994 May 10 18:00.  Revised format of option "input".  Added option "input
command" to display or execute commands from the list of saved input lines.

1994 May 5 16:00.  Added new output to subroutine side, at intersection along
normal track:  surface normal, angle and cosine of angle from surface normal.

1994 May 4 14:40.  Revised subroutine icalc to be like versions in code chex on
MEG3 and the U machine.

1994 May 3 15:00.  Added subroutine setmode to specify the mode for integer
arithmetic.  Used by option "mode [ ,help,dec,hex,oct]".  Added subroutine
icalc to do option "icalc M FUNCTION N".
Made code chex in util/chex/make, to do integer arithmetic only.

1994 May 2.  Revised apt subroutines aptqexc and aptqext to do better job of
finding extrema.

1994 April 28.  Added subroutine extrema for option "extrema QNAME VNAME",
and "extrema all VNAME", to find the extrema of one or all quadric surfaces in
any direction.

1994 April 27.  Added output of the exact proximal distance to a circular cone
to subroutine and option side, including special cases of the point being on
the axis, or in the plane through the vertex perpendicular to the axis, or both.
Includes vector from point to proximal point.

1994 April 26.  Added output of angle of incidence, and normal vector of
quadric surfaces, for intersections found in subroutine track.
Added output of qc = -N dot P(center) to plout and quout for planes.

1994 April 25.  Changed aptqext.f to ignore extrema for which normal vector
is small compared to its extimated error, based on tol.  Keeps cylinders from
looking like long ellipsoids.

1994 April 22.  Reviewed all use of vectors, added tests for zero length where
needed.  Replaced all aptvuna with aptvunz, aptvunb with aptvusz.
Retested all changed subroutines.

1994 April 21.  Updated geom_base to show what commands each geometric object
may be used in.  Fixed several subroutines to test for a null axis vector.
Added warning to vout for null vectors.

1994 April 20.  Added options "distance cluster CLNAME line LNAME",
"distance cluster CLNAME triangle TRNAME", and
"distance cluster CLNAME plane PLname" to subroutine distance, tested.
Added output of minimum, maximum and average distances to all distance
options using clusters.

1994 April 19.  Added option "slice q QNAME [x,y,z] VALUE [y,z,x] VALMIN
DVAL VALMAX" to subroutine slice (calls sliceq), to slice a quadric surface,
and find points in the surface for the first coordinate, and a range of values
of the second coordinate.
Added options "distance point PNAME cluster CLNAME" and
"distance cluster CLNAME1 cluster CLNAME2" to subroutine distance, tested.

1994 April 12.  Added option 'point PNAME disk DKNAME random", to randomly
sample a point on an annular disk.

1994 April 11.
Added labels "Max", "Min", "Const" or "Inter", followed by "x", "y" or "z" to
extreme points from slice. Put aptqexc into libapt.a and aptflibe.
Added display of extreme points to option "quadric ... slice ...".

1994 April 7.
Added apt subroutine aptqexc to find extrema in a quadric
curve in a major plane.  Called by slice.

1994 April 6.
Added output to subroutine opout, to display scale factors and axes, rotation
angles and axes, and reflection axes.  Remade test.scale and hsp.scale.
Added subroutine slice, and option "slice zone ZNAME [x,y,z] [value]", to slice
all bounding surfaces of zone ZNAME at [x,y,z|x] = [value|0].
Added output of extrema in slice plane to option "slice".
Changed subroutine vector to truncate small components of "abs" vectors.
Change subroutine side to truncate small components of normal vector.

1994 April 5.
Added subroutine intpls to find the intersection between a plane and a sphere.
Option "intpls PLNAME SPHNAME".
Added option "plane PLNAME disk DKNAME", to create a plane through an annular
disk.  Improved logic and error tests in subroutine plane.

1994 April 1.
Added subroutines disk and dkout to create and describe annular disks.
Changed copy, list, sort to include annular disks.
Changed pout to list disks dependent on point.
Changed rename to rename disks, rename points used to define disks.
Changed delete to delete disks, prevent deletion of points used to define disks.

1994 March 25.
Added edge lengths, vertex angles, centers and radii of inscribed and
circumscribed circles, centroid and orthocenter to triangle output from trout.
Use new apt subroutine apttrig.

1994 March 22.
Replaced old subroutine where with new subroutine where from wherex.
Added option "id" or "ID" to display user and run ID.
Added version and run time, user ID to exit data.

1994 March 17.
Added subroutine wherex.f to redo all "where..." options.  Work in progress.
When done, change to where.f, replacing old where.f.

1994 March 16.
Modified pout to include use of points to define polyhedrons.
Modified delete to prevent deletion of points defining polyhedrons.
Modified sort so when points are sorted, cluster point list is also sorted.
Added option "copy polyhedron PHNAME PHNAME2".
Added options "delete polyhedron PHNAME", "delete polyhedron all".
Added option "list polyhedron".
Added option "rename polyhedron PHNAME PHNAME2".
Added option "sort polyhedron".
Added option "delete point cluster CLNAME" to delete all points in a cluster.

1994 March 15.
Added subroutines polyhed, phout, to add option
"polyhedron PHNAME NVER PCEN PVER PCOP" to create regular polyhedrons.

1994 March 14.
Added test to make sure polygon vertex points can be named uniquely.
Added option "area VNORM cluster CLNAME", to find the projected area of a
polygon formed by a cluster of points.
Added option "point PNAME sphere SPHNAME random", to randomly sample a point in
a sphere.

1994 March 11.
Added to "sort" command:  options "brick", "zone", "vector", "operator".
Removed initialization of scalar ebase.  Added initialization of scalars
deg/rad and rad/deg.
Added option "point PNAME01 polygon PGNAME", to create points at the
vertices of polygon PGNAME.
Added optional word "=" in the command "point PNAME [=] U V W".

1994 March 10
Added option "cluster CLNAME" to command "project".
Added option "PNAMEi thru PNAMEj" to command "cluster".
Added command "sort" with options "scalar", "point", "cluster", "line",
"triangle", "tetrahedron", "polygon", "quadric",
or "all", to sort objects into increasing ASCII order.

1994 March 9.
Changed many subroutines to standardize output of type character
data with more than 8 characters.
Changed commands "invert", "reflect", "rotate", "scale" to include option
"cluster CLNAME".
Changed command "project" to add word(2) = "point" or "cluster".

1994 March 8.  Changed delete to add option "delete cluster [CLNAME, all.].
Changed subroutine pout to list clusters a point is in.
Changed subroutine clout to repack pair list, and eliminate duplicate entries.
Changed command "cluster" to add options to define new cluster, or add points
to an existing one.
Changed command "copy" to add option "cluster CLNAME CLNAME2".
Changed subroutine cluster to test for exceeding npairm.
Changed command "move" to add option "cluster CLNAME".

1994 March 7.  Added option "zone ZNAME volume ZVOL" to specify the volume of
a zone, which may be obtained in a number of ways.  Added subroutine and
command "volume PAXIS VAXIS PNAME1 PNAME2 PNAME3 ..." to find the volume of
revolution of a polygon with from 3 to 36 vertices,  around an axis.
Added command "cluster CLNAME P1 P2 P3 ..." to name a cluster of points.
Added subroutines cluster, clout, revised subroutine list to list clusters.
Updated rename to rename clusters.

1994 March 5.  Added subroutine area, to find the area in a projected direction
of a polygon with from  3 to 36 vertices, not necessarily coplanar.
Added output of normal vector for polygons in pgout.

1994 March 3.  Added apt subroutines aptbrkn, aptbrkp, aptbrks, aptbrkv.
Added call aptbrkv in brout.f.  Replaced logic in wherebr with call aptbrkn.
Added command "p PNAME br BRNAME FU FV FW" to find point PNAME in brick BRNAME
at fractional distances FU, FV, FW.

1994 March 1.  Added apt subroutine aptbrks to randomly sample points in bricks.
Replaced logic in point, mcvol with call to aptbrks.

1994 February 28.  Added command "mcvol ZNAME BRNAME NSAMP" to estimate the
volume of any part of zone ZNAME that is in brick BRNAME, using NSAMP randomly
sampled points in BRNAME.  Added option "p PNAME z ZNAME random BRNAME", to
randomly sample point PNAME in zone ZNAME, using up to 10000 trial points
randomly sampled in brick BRNAME.

1994 February 24.  Revised where, wherebr, wheretet, wherez for better tests,
output, and to add option "where[ , br, tet, z] all", to test all points in all
[volume elements, bricks, teterahedrons, zones].

1994 February 23.  Added command "point PNAME tri TRNAME random", to randomly
sample a point in a triangle.  Added output of local coordinates to wheretet,
when point is in a tetrahedron.  Added command "point PNAME brick BRNAME random"
to randomly sample a point in a brick.  Added fractional weights to wherebr, for
points that are in a brick.

1994 February 22.  Added command "project" to main, added subroutine project.f,
to project points onto planes, cylinders and spheres, with various options.

1994 February 16.  Added command "roots A B C" to find the roots of the
quadratic equation A * x**2 + B * x + C = 0.

1994 February 15.  Changed intcirc and intsph to display 4 separations between
surfaces, for 2 external tangencies, and 2 internal tangencies.
Changed aptrkis to truncate dint to zero if less than tol*abs(a).
Changed track to eliminated truncation and signing of pdist.
Added command "point PNAME triangle TRNAME W1 W2 W3" to get point at vertex
weights W1, W2 and W3 in triangle TRNAME.

1994 February 14.  Added axis and distance between spheres, and surface
separation to intcirc and intsph.
Added round-off of distance to intersection, and corrected sign of distance to
intersection in track.  Added distance to minimum F(x,y,z) to track, for
tracking to a quadric surface.

1994 February 11.  Added command "intsph SPH1 SPH2" to find intersection of
two spheres.

1994 February 10.  Changed brick specification from 6 coordinates to
3 coordinates and 3 coordinate increments.  Added tests for negative radii,
theta angular increment > 360 degrees, and phi values not from 0 to 180 degrees.
Changed command "where" to "wherez" to find zones a point is in.
Added command "where" to include "wherebr", "wheretet" and "wherez".
Added output to quout:  radius, circumference and circular area of circular
cylinders; radius, area and volume of spheres.
Added command "intcirc U1 V1 RADIUS1 U2 V2 RADIUS2 " to find the intersection of
the two circles with radii RADIUS1 at (U1,V1) and RADIUS2 at (U2,V2).

1994 February 9.  Changed brick specification from two points to 6 coordinates.
Added bricks to rename, copy.  command is now
Added command "wherebr PNAME" to find out which bricks point PNAME is in.

1994 February 8.  Added face areas and volume to output for bricks.
Added bricks to delete, list.

1994 February 7.  Added warning message for scaling operators with a scale
factor that is too small or too big.
Corrected scaling of quadric coefficients in quout to avoid division by zero
when the quadric starts with bad coefficients.
Added command "brick BRNAME PMIN PMAX ASYS" to make 3-D bricks (8 vertices, 12
edges, 6 sides).  See 1994 February 9.

1994 February 4.  Added command "operator OPNAME radial VNAME RATIO", to specify
cylindrical radial scaling around a specified axis.  There remain problems with
scale factors that are too small or too big. Consider projections to put points
on a plane, or axis.

1994 February 3.  Reversed definitions of J1, J2, J3, ... in "zone" command,
to agree with usage in TART.  Added definitions, descriptions, generation
macros for "bricks" to geom_base.

1994 February 2.  Added command "polygon PGNAME NVER PCEN PVER PCOP" to create
a regular polygon PGNAME with NVER vertices, centered at PCEN, with one vertex
at PVER, and in the same plane as PCOP.  Changed pout, delete, rename, copy
and list to include regular polygons.  Added subroutines polygon and pgout.

1994 February 1.  Added subroutine wheretet, to find which tetrahedrons a point
is in.  Added commands "wheretet PNAME TETNAME" and "wheretet PNAME" to find
which tetrahedrons point PNAME is in.

1994 January 21.  Added subroutines tetra, tetout, to create and write data
for tetrahedrons. Modified subroutines pout, delete, to check dependencies of
tetrahedrons on points.  Modified subroutines copy, delete, rename, list to
handle tetrahedrons.
Added command "vector VNAME sum VNAME2 VNAME3 VMULT2 VMULT3" to get a weighted
sum of two vectors.

1994 January 20.  Added subroutine where, commands "where PNAME",
"where PNAME all", "where PNAME all.", "where PNAME ZNAME", to find out if
zone PNAME is in any zone, or in zone ZNAME.
Fixed point command "point PNAME random RADIUS" to give a true uniform random
distribution within the sphere.
Added command "scalar x A curt B" to get A * B**(1.0/3.0).  Cube root.
Reviewed file geom_base, to update and correct.

1994 January 19.  Changed rename and delete, to include zones.  Changed delete,
to prevent quadric surfaces from being deleted that are used to define zones.
Changed list command, to write out "**NONE**" when specific objects do not
exist, and to write out an error message when non-existant object types are
specified.  Added command "track PNAME VNAME zone ZNAME", to allow tracking
through zones.  Finds all intersections with zone boundaries.

1994 January 18.  Changed all ipt[12] to alipt[12] (character*8),
all iptr[123] to atript[123] (character*8).  Lines and triangles now refer to
points by name, not index.
Modified rename command, to rename points in line and triangle definitions at the
same time point names are changed, and to rename quadric surfaces used in zone
definitions at the same time quadric surface names are changed.

1994 January 14 10:40.  Added command "scalar SNAME random SMIN SMAX" to pick
a random number SNAME between SMIN and SMAX.

1994 January 13 14:10.  Added command "input AINPUT LINE" to open file AINPUT
and start on line LINE.  Added command "input AINPUT PATTERN" to open file AINPUT
and start on the first line beginning with PATTERN.  Added command "input AINPUT
?" to open file AINPUT and display all lines, preceded by line numbers.
Added command "input #" to open the previously opened file (or return to user's
Changed help messages in move and matrix.
Added count and ERROR messages to move and matrix.

1994 January 11 18:20.  Added commands plane, sphere, cylinder, ellipsoid,
axisym, quadric to copy, delete, rename, move, track, vector, point, operator,
list, side.  Added command "all" to side.

1994 January 5 18:20.  Tested intersect, move, track.

1993 December 22 18:10.  Deleted command "length" and subroutine length.
Incorporated length calculation and display into subroutine lout.
Corrected bugs in error messages.
Added command:  vector VNAME cross VNAME2 VNAME3, to create vector VNAME, the
cross product of vectors VNAME2 and VNAME3.

1993 December 21 18:00.  Fixed command "... list ..." to test for non-existant
names, and to list all when no list specified.
Finished testing all input lines.
Modified output for vectors, quadrics.

1993 December 20 15:00.  Removed bugs in cone and in side.
Added command:  point PNAME random RADIUS, to create a point randomly within a
sphere of radius RADIUS at the origin.

1993 December 17 15:30.  Converted planes to a subset of quadric surfaces.
Split subroutine axisym into new axisym and ellipsoid.
Fixed subroutines sphere, cylinder, cone, ellipse and axisym to only do
those exact kinds of quadric surfaces.

1993 December 16 8:30.  Added synomym "axisym" for "ellipsoid".
Separated subroutine axisym from quadric, for "ellipsoid" commands.
Separated subroutine sphere from quadric, for "sphere" commands.
Separated subroutine cylinder from quadric, for "cylinder" commands.
Separated subroutine cone from quadric, for "cone" commands.

1993 December 15 10:40.  Added command:  ellipsoid QNAME PNAME SAX SAY SAZ, to
create an ellipsoid QNAME centered at PNAME, with X, Y and Z semi-axes SAX, SAY
and SAZ.
Added command:  ellipsoid QNAME PNAME VNAME fit PNAME2 PNAME3 to fit an ellipsoid
QNAME centered at point PNAME, with axis VNAME, to the two points PNAME2 and
PNAME3.  Also produces parallel planes, cylinders, cones, hyperboloids of
one or two sheets, and spheres (all circular or axisymmetric).

1993 December 14 10:30.  Added command:  cone QNAME PNAME VNAME line LNAME, to
create a cone on an axis through point PNAME, in direction VNAME, with the
endpoints of line LNAME in the surface of the cone.
Added array aqform(nquadm) = planex, planey, planez, planegen, quadalig, or
quadgen.  Tells general type of quadric surface, useful for tracking.
Added command:  cylinder QNAME VNAME TRNAME, to fit a cylinder with axis VNAME
to the three points in triangle TRNAME.

1993 December 13 11:00.  Added command:  cone QNAME PNAME VNAME point PNAME2, to
create a cone on an axis through vertex point PNAME, in direction VNAME, with
point PNAME2 in the surface of the cone.

1993 December 10 11:50.  Revised login in vector for:  v VNAME abs,
v VNAME unit, and v VNAME abs ABSLEN.
Added command:  scalar SNAME random N, to get N'th random number after current.
Deleted command:  scalar SNAME A ranf B.
Added command:  sphere QNAME PNAME1 PNAME2 PNAME3 PNAME4, to fit a sphere to
4 points.
Added command:  cone QNAME PNAME VNAME angle ANGLE, to create a cone with
vertex point PNAME, axis vector VNAME, and vertex half-angle ANGLE.

1993 December 9 12:00.  Added to quout:  intercepts on original quadric axes,
focal points in original quadric coordinates.
Added to quadric:  sphere QNAME PNAME RADIUS
to create a sphere with radius RADIUS at point PNAME.
Changed quout to allow minimum and maximum output.
Added to quadric:  cylinder QNAME PNAME VNAME RADIUS
to create a cylinder with radius RADIUS at point PNAME, with axis VNAME.
Changed quout to allow minimum and maximum output.
Corrected error in vector, with command:  vector NAME [abs, unit]

1993 December 8 12:00.  Added quadric command:  q QNAME cut QNAME2 {x,y,z] {val]
to make quadric QNAME a slice through quadric QNAME2 at [x,y,z] = [val], with
defaults [x] and [0.0].
Added output of vertex point of parabolic surfaces to quout.
Changed quout to normalize equation of standard form.
Added output of major axis intercepts to original form of quadric surface.
Added option to command "point":  "point PNAME quadric QNAME", to store the
central point of quadric QNAME into point PNAME.
Added option "list" to commands scalar, point, line, vector, triangle, plane,
quadric, operator, to list specified objects.

1993 December 7 16:00.  Added track command:  track PNAME VNAME quadric QNAME
to track from point PNAME in direction VNAME to quadric surface QNAME.
Added operator command:  operator OPNAME quadric QNAME
to get the rotation operator OPNAME to rotate quadric surface QNAME to be
aligned with the major axes.
Added vector command:  vector VNAME quadric QNAME
to get the vector from the center of the quadric to the origin.
Added output of intercepts on major axes to quout.  Added output of asymtotic
half-angles of intersecting planes, hyperbolic cylinders, cones and hyperboloids
to quout.
Added input line:  side PNAME QNAME, to find which side of a quadric surface
QNAME point PNAME is on.

1993 December 6 18:00.
Corrected errors in several apt subroutines, where final argument nerr was
left off calls to aptqrtv.

1993 December 3 14:00.  Added quadrics to subroutines list, rename, copy and
delete, move.  Standardized some nonstandard error messages.
Added functions sinh, cosh, tanh to subroutine scalar.
Added tests for object names > 8 characters to all object generators.
Removed error jump for bad operator from quout.  Depends on tol.
Added inverse of all symmetry operators.  Need for scaling quadrics.
Added quadrics to subroutine matrix (scale, invert, rotate, reflect).

1993 December 2 11:10.  Added subroutines quadric and quout, to create and
print data for quadric surfaces.  Input commands for quadrics include listing
quadric types, listing all quadric surfaces, listing one quadric surface,
creating a quadric surface equal to a plane, creating a quadric surface
equal to a plane through a point with a normal vector,  and creating a general
quadric surface.
Added option to subroutine scalar (variable) to allow the mathematical
operations A+B, A-B, A*B, A/B, A**B, A*exp(B), A*log(B), A*sin(B), A*cos(B),
A*tan(B), A*asin(B), A*acos(B), A*atan(B), A + B*ranf().

1993 November 29 10:40.  Revised geom_base to split the concept of planes into
the concepts of triangles, defined by 3 points, and planes, defined by a point
and a normal vector.  Triangles remain dependent on the points used to define
them, but planes do not.
Changed command "move" to make second word "point" or "pnt" or "pt" or "p", to
move points, "vector" or "vect" or "v" to move the bound point of vectors, and
"plane" or "pl" to move planes.

1993 November 24 17:30.  Fixed a bug in vector, ".eq. line" -> ".eq. 'line'".
Added command "track PNAME VNAME [point, line, plane] NAME, to find the distance
to, and coordinates of the proximal point to object NAME on the track starting
at point PNAME with direction vector VNAME.

1993 November 23 10:00.
Added intersection (or parallel distance) between two planes.
Added synomyms intersect, inter, int for distance, dist.
Added output from distance for all cases of objects intersecting, coinciding, or
or being parallel.
Added command "tol" to change default value from parameter tolz.
Commented out all "call aptrotq" calls in subroutine operator.  Fail when tol is
zero.  Must test for indeterminate vectors and planes separately.
Added command "list" to list names of scalars, points, lines, vectors, planes,
operators, or all, or any combination.
Added command "find" to find points in a plane defined only by a point and a
normal vector.

1993 November 22 9:00.
Added "operator OPNAME invert PNAME" to make reflection operator.
Added "[invert, rotate, reflect, scale] [point, vector] [PNAME, VNAME, all]
to do symmetry operations with an invariant point.
Added distance between points and planes.
Added intersection (or parallel distance) between lines and planes.

1993 November 19 16:40.
Added "vector VNAME line LNAME", to make vector VNAME like line LNAME.
Added "vector VNAME abs", just like "vector VNAME unit".
Added "vector VNAME abs ABSLEN", to change length of vector VNAME to ABSLEN.
Added "operator OPNAME triple V1 V2 V3 V4", for vector triple rotation.
Added "operator OPNAME linear VNAME RATIO" for linear scaling.
Next: add a reflection operator.

1993 November 18 15:20.  Added commands to copy, delete, remove to do planes.
Added deg and rad to names of angle units.  Added output of coordinate system
units to output for lines and planes.  Added commands "min" and "max" to output
of points (dependent lines and planes) and planes (points and normal).
Added command "planar" to "operator" command.

1993 November 17 10:00.  Add new subroutine length to find length of lines.
Added option to make an existing vector a unit vector.
Added option to create a vector by components and bound point.
Fixed scalar, point, line, vector, operator, so an error made while replacing
an existing object does not change or delete it.
Changed copy to disallow copying over an existing object.
Added option to define plane based on 3 points.

1993 November 16 10:00.  Changed data stored for vectors to name, components,
bound point, and length.  Deleted subroutines getcomp, length.

1993 November 15 9:00.  Removed rcyl, rsph, theta, phi from memory.  Convert
each time they are input or output.  Added lines to geometric object types.
Defined by two points.  Added command "rename" for scalars, points, lines,
vectors, operators.  Added lines, operators to "remove".

1993 November 12 11:40.  Added command "operator OPNAME axial VNAME ANGLE" to
subroutine operator.  Rotates around axis VNAME by angle ANGLE (clockwise,
looking along axis).  Added option to delete operators to subroutine delete.
Added operators invert and scale and serial.

1993 November 11 11:00.  Added multiplier VMULT to command "move".  VMULT
may be integer, floating point, or the name of a scalar.
Also added option of using a scalar name for the coordinates of a point, or the
absolute or relative length of a vector.
Changed scalar, point, vector, to put a new object into a null position, instead
of at the end of the list.  Added option "all" to command "delete".
Added tests for scalars, points, vectors exceeding limits.
Added subroutines operator and opout to find and display operators.

1993 November 10 15:50.  Moved calculation of vector components and length to
getcomp.  Deleted output of point coordinates from vout.  Updated geom_base.
Added output of vector components in cylindrical and spherical coordinates for
length command.  Renamed rcy to rcyl, rsp to rsph.
Added command "dot" to find the dot product of two vectors, the cosine of the
included angle, and the included angle.
Added command "cross" to find the cross product of two vectors, which is the
area of the included parallelopiped.

1993 November 9 18:30.  Added command to copy scalars, points or vectors onto
new scalars, points or vectors, or over old scalars, points or vectors.
Added file geom_base, the beginning of a data base for GEOM.
Next:  add roundoff with aptrnds?  Base on move.f.

1993 November 8 15:20.  Added command to delete/remove scalars, points, vectors,
but not points on which vectors depend.  Changed format of distance input line.
Added capability to find distances between a point and a line, a line and a
point, and between two lines.  Added synonyms system, syst for coordinate.
Added synonym line for vector.

1993 November 5 13:00.  Added concepts of relative and absolute vectors.
Relative vectors have a length that is a specified multiple (default 1.0) of the
distance between the end points.  Absolute vectors have an absolute specified
length (default 1.0).

1993 November 4 11:30.  Changed lines to vectors.  Added synonym output to help
messages.  Deleted unneeded coord messages.  Deleted initial point at origin.
Added scalars.  Added command to print lengths of all vectors.  Standardized
error messages.  Added input medium and line number to error messages.
Added input line move to move a specified or all lines by a specified vector.

1993 November 3 11:00.  Simplified output.  Now display points only with the
current coordinate system coordinates.  Added commands to display a specified
point.  Changed so that a point with the same name is changed, after printing
the original coordinates.  Added distance input line to get distance components
and distance between two points.  Added line input line to get a line specified
by two points.  Added length input line to get the length of a line.
NEXT:  Add vector to create a vector from scratch or from a line.
Add uvect to find a unit vector from a vector or from a line.

1993 November 2 18:20.  Made code GEOM, with input lines input, coord, angle
and point, to specify input file ('tty'* or filename), coordinate system
('rect'*, 'cyl' or 'sph'), units of angles ('degrees'* or 'radians'), and to
create points (ptname, a, b, c).  Default point is origin (0,0,0).
NEXT:  Add lines (two points).  Add vectors (lines, or 3 cosines).