This directory contains a preliminary version of the SoS library.
It contains ONLY modules needed in the d-dimensional convex-hull 
program by Harald Rosenberger for d = 3, 4.

The background to the SoS method can be found in the paper:
    
    H Edelsbrunner and E P Mucke. "Simulation of Simplicity: A Technique to 
    Cope with Degenerate Cases in Geometric Algorithms."  In ACM Transactions 
    on Graphics, 9(1):66-104, January 1990.  (Also in Proceedings of the 4-th
    Annual ACM Symposium on Computational Geometry, p118-133, Urbana, Illinois,
    June 6-8, 1988.)
                                   
               The software in this directory is free.
                You may do with it whatever you like.
         However, it comes AS IT IS and WITHOUT ANY WARRANTY!

Unfortunately, there is no documentation for this version of the
package.  The only thing I might add is this: If you want to generate
a d-dimensional version of the CH code, you have to (a) modify
Harald's code (I do not know anything about that one, but Harald once
told me that is would be easy) and (b) add SoS implementations of the
Above<D>() primitive for the right dimension D.

Above<D>() will use SignLambda<D-1>() and SignLambda<D>(), which evaluate
the sign of the corresponding epsilon-determinant.  The *body* of these
functions can be generated using the gendela.c source:

        % cc gendela.c -o gendela -lm
        % gendela -lambda -d=<D>

Then, follow the pattern in "lambda3.c" or "lambda4.c" to finish the
code for the SignLambda<D>() function.  However, you are not totally
done yet, since the code will need all the SignDet<d>one() functions
computing the sign of the d-by-d subdeterminants, for d = D, D-1, ...
1, using long-integer arithmetic.  You will have to implement these,
too, but you can do this in a straightforward manner following the
pattern in the "signdet_one.c" code.

Also, somewhere in the application program there must be a line

        SoS_init (n, <D>, <ELL>, 3);

which initializes the SoS library, where ELL is the maximum length of
the long-integer objects.  This number can be roughly computed by the
following:

        ELL = 1 + <number of decimal digits of largest determinant> / 8.

This is it.

--        
Ernst Mucke,   Dept of Computer Science,  U of Illinois at Urbana-Champaign
mucke@uiuc.edu  {convex,uunet}!uiucdcs!mucke  mucke%uiuc.edu@uiucvmd.bitnet
