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


                            LiDIA

           A library for computational number theory

  Copyright (c) 1994, 1995, 1996 by the LiDIA Group - Version 1.2

                Universit"at des Saarlandes
                Fachbereich 14 - Informatik
                 Lehrstuhl Prof. Buchmann
                    Postfach 151150
                  D - 66041 Saarbr"ucken


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


CONTENTS
@@@@@@@@

1) ABSTRACT

2) LiDIA GROUP

3) CONTENTS OF THIS RELEASE

   3.1 What is new?
   3.2 What is in work?

4) HOW TO GET AND INSTALL LiDIA

   4.1) FTP procedure
   4.2) Unpacking procedure
   4.3) Installation procedure (short version) 
   4.4) Calling a test program
   4.5) Installation procedure (long version) 

5) NOTE

   4.1) Send an email
   4.2) Be a part of it 

6) LiDIA GOES DARMSTADT

7) ACKNOWLEDGEMENTS




1) ABSTRACT 
@@@@@@@@@@@

LiDIA is a *powerful C++ library* for computational number theory
which provides a collection of *highly optimized implementations*
of  various   multiprecision   data   types   and  time-intensive
algorithms.  LiDIA  is  developed  by  the  LiDIA  Group,  at the
Universit"at  des  Saarlandes  and  it  is *free* for educational
purposes. The current version runs on 

o alpha, sparc7, sparc8, mips, intel(paragon), hp, cray c90, rs6k
 
with the following compilers
 
o g++-2.6.x, g++-2.7.x, cfront-3.01, HP C++, MIPS C++, xlC, Sun's
  acc, Watcom v.10, Borland-4.x
 
on the following operating systems
 
o SunOS, Solaris, OSF/1, OS/2, AIX-3.2.5, IRIX-5.2, Linux, FreeBSD,
  HP-UX9.05, MacOS (*), Windows 95 (**)
 
supporting the object file formats
 
o a.out, ELF


(*) At  the  moment  there  is no automatic way to build LiDIA on
    the  Mac.  We have built LiDIA manually using the CodeWarrior
    C/C++  compiler,  version 7.  The corresponding project files
    will be released soon.

(**) with some modifications (contact lidia@cs.uni-sb.de for more
     information).

For  a more detailed description of LiDIA's design and features we 
refer to the manual.



2) LiDIA GROUP 
@@@@@@@@@@@@@@

At the moment the LiDIA Group consists of the following people:

Werner Backes         F-D Berger         Ingrid Biehl
Johannes Buchmann     John Cremona       Sascha Demetrio
Thomas Denny          Kurt Huwig         Thorsten Lauer
Frank Lehmann         Markus Maurer      Oliver Morsch
Andreas M"uller       Volker M"uller     Stefan Neis
Thomas Papanikolaou   Sachar Paulus      Nigel Smart
Victor Shoup          Thomas Sosnowski   Patrick Theobald
Damian Weber          Susanne Wetzel

Old Members
^^^^^^^^^^^
Oliver van Sprang     Ren'e Weiskircher



3) CONTENTS OF THIS RELEASE
@@@@@@@@@@@@@@@@@@@@@@@@@@@

3.1) What is new?
^^^^^^^^^^^^^^^^^

The current  version of LiDIA (1.2) is a major  release. It follows
the  beta-tested  version 1.2.0b released on 26th of February  1996
by  registered  LiDIA users. Most of the work was done in extending
the package and in improving stability and performance.

o the  factorization  class  now  includes an implementation of the
  self-initializing version of the multipolynomial quadratic sieve.
  With  this method LiDIA is now able to factor integers of size 75
  digits  (max).  For  example, a 50-digit number with two 25-digit
  prime factors is now factored in 16 minutes on a sparc20.

o new  template  vectors  and matrices have been included, unifying
  matrices and lattices.

o new template implementation of Laurent power series and univariate
  polynomials.

o a  memory  manager  is now included providing 4 modi which can be
  chosen  at  compile time: malloc (using the system's memory mana-
  ger malloc/free), dentzer (using a buddy-algorithm combined with
  free-list storage), boehm (Boehm's garbage collector) and default
  (no memory manager at all).


3.2) What is in work?
^^^^^^^^^^^^^^^^^^^^^

o In beta testing

  - Finite fields GF(2^n), GF(2^p)
  - Generic multivariate rational function arithmetic
  - Gr"obner bases
  - Factoring in F_p[x] (Shoup's algorithms)

  (pre-releases of these packages available on request)

o In work
 
  - Porting of John Cremona's elliptic curve package
  - Discrete logarithms using COS
  - Symbolic computation package
  - Invariants of number fields
  - Counting points on elliptic curves over |F_p, p > 3
  - Incoprorating PoSSo's Customizable Memory Manager into LiDIA 
  - LiDIA development environment (support for configuring, (remote)
    control version, editing, compiling, running and debugging of
    LiDIA programs)


4) HOW TO GET AND INSTALL LiDIA
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


4.1) FTP procedure
^^^^^^^^^^^^^^^^^^
LiDIA is available by anonymous ftp from

             crypt1.cs.uni-sb.de:/pub/systems/LiDIA
             ftp.cs.uni-sb.de:/pub/LiDIA

If you have ncftp you can get LiDIA by simply typing

     ncftp crypt1.cs.uni-sb.de:/pub/systems/LiDIA/LiDIA.tgz

else use the following ftp session. With > we denote the commands
you have to type in. // denotes a short explanation.

> ftp crypt1.cs.uni-sb.de          // connect  to  the ftp server  
> anonymous                        // your     login         name
> <complete email address>         // your password is your email
                                   // address.  PLEASE  give  the 
				   // correct email address. 
> cd pub/systems/LiDIA             // the  directory  where LiDIA
                                   // resides 
> binary                           // set  binary  mode  for data
                                   // transfer
> get README                       // get   the    README    file
> get COPYRIGHT                    // get   the    COPYRIGHT file
> get LiDIA.tgz                    // get      the        package
> bye                              // disconnect

This session  will  get the files README, COPYRIGHT and LiDIA.tgz
and  will place them in the current directory (from now on called 
UNPACKDIR).


4.2) Unpacking procedure
^^^^^^^^^^^^^^^^^^^^^^^^
Now typing in

               gunzip -c LiDIA.tgz | tar xvf -

will  create  a  directory  named  LiDIA;  in this directory the 
following files/directories should exist:

UNPACKDIR/LiDIA:

Readme     bugs/           doc/           lib/      makefile.os2 
bin/       config/         include/       makefile          src/

Readme ............................................... this file
bin ........... holds LiDIA's applications files (see make appl) 
lib .................. holds LiDIA's library and thr primes file
config ...................... contains the configuration scripts
doc .......... contains LiDIA's documentation in various formats
include ............................ holds LiDIA's include files
makefile ............................. for UNIX, Linux, AIX, ... 
makefile.os2 ..................................... for OS/2 only
src ............................................ LiDIA's sources


4.3) Installation procedure (short version)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In the UNPACKDIR/LiDIA directory type

STEP 1.         make configure

and  answer  the  questions  of  the `configure' script. You will
be  asked  for the installation path of LiDIA (this is by default
/usr/local).  Please  enter  an  existing  path on which you have
write  permission, since this is neccessary by the `make install'
command below. If your machine produces objects in the ELF format
you should also edit the file 

		LiDIA/config/CONFIG

and replace the line

		ASFLAGS = -DUMMY

with 
		ASFLAGS = -DHAVE_ELF

Solaris  users  should  also  define  -DSOLARIS after the default
CFLAGS and CXXFLAGS (if this is not already guessed by the confi-
gure script). After this type

STEP 2.         make

to build the library and (optionally)

STEP 2a.        make appl

to create the applications which test the classes and demonstrate
their  use.  Finally,  if  and  only  if  you have not chosen the 
current path as installation path, type

STEP 3.         make install

to  install  the  library  of  LiDIA (libLiDIA.a) and the include
files on your system. If you want to change the installation path
please  rerun  STEP 1  before   calling  `make install'.  LiDIA's 
library is installed by default on

                /usr/local/lib/LiDIA/$host-cpu/$cpp/libLiDIA.a

where host-cpu is  determined  by  the  command `config.guess' of
the  GNU  software and $cpp is the C++ compiler used (in this way
you  are  allowed  to  create  multiple  libraries   produced  by
different  compilers  on the same machine). LiDIA's include files
are installed by default on

                /usr/local/include/LiDIA

and finally LiDIA's binaries are installed on

		/usr/local/bin/LiDIA/$host-cpu/$cpp



4.3) Calling a test program
^^^^^^^^^^^^^^^^^^^^^^^^^^^
To call a test program, change to the directory 

                UNPACKDIR/LiDIA/bin/$host-cpu/$cpp

by simply typing

		cd UNPACKDIR/LiDIA/bin/$host-cpu/$cpp

The  applications in this directory, try to test all functions of
the  LiDIA  classes.  They are succesful, if they do not print an 
error message.


4.4) Installation procedure (long version) 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Please read the chapter `Installing' in the manual

                UNPACKDIR/LiDIA/doc/manual/lidiaman.ps



5) NOTE
@@@@@@@

5.1) Send an email
^^^^^^^^^^^^^^^^^^
After  having  installed   LiDIA,  please send us an email saying
that  you have done so. This enables us to inform you about bugs,
bug fixes, new version, etc.

If you successfully installed LiDIA please tell us so  If you had
no  success  at  all  and  this  is likely to be a bug  in LiDIA,
(including  incomplete / incorrect documentation), please report.
Note that we will  probably  not  be able  to reconstruct  a  bug
without  a detailed description. The format suggested in the file
`bug_reports.form'  in  the  LiDIA/bugs directory should  be  the
guide for all bug reports.  Approved bugs will be included in the
file `bugs' which also resides in the LiDIA/bugs directory. You
can send your suggestions, enhancements, etc to

                     lidia@cs.uni-sb.de

Please, send bug reports (and fixes) to

                   lidia-bugs@cs.uni-sb.de


5.2) Be a part of it 
^^^^^^^^^^^^^^^^^^^^
We would also appreciate all sorts of feedback,  bug reports  and
bug  fixes,  enhancements,  contributions  etc. At this point one
short  note  (answering  the  question  posed frequently by LiDIA
users):

For  programs  contributed  to LiDIA the copyright remains to the
author.  However,  once a program is contributed to LiDIA and was
released  for  the public with LiDIA it is not possible to remove
it from the package, since users may have built their work on top
of it.  LiDIA's policy is to put the author's name in the manual,
the  source code and in the announcement of the corresponding re-
lease.  For  more  details, please read the file COPYRIGHT in the
main distribution directory.




6) LiDIA GOES DARMSTADT
@@@@@@@@@@@@@@@@@@@@@@@

The LiDIA Group will move to Darmstadt (about 40km from Frankfurt)
by  the  end of the year, following Prof. J. Buchmann.  Until  the
movement  is completed, the user support (a team of 6 programmers)
will remain in  Saarbr"ucken. 

We will inform you more precisely on this in about one month.


7) ACKNOWLEDGEMENTS
@@@@@@@@@@@@@@@@@@@

I would like to thank in the name of the LiDIA Group all users who
have  up-loaded,  installed and beta-tested LiDIA in this short a-
mount of time.

LiDIA  profits  from  user contributions and various public domain
software packages:  special  thanks  to  Arjen  Lenstra  and  Paul
Leyland  for  freelip-1.0,  Ralf  Dentzer   for   libI and the GNU
project for their superb software. LiDIA's development environment
uses GNU tools extensively. 

Thanks  also to Hans-J. Boehm and Alan J. Demers for the gc memory
manager. 

Last  but  not  least,  I  would  like  to thank my colleagues John
Cremona (Exeter University)  and Nigel P. Smart (University of Kent
at Canterbury) for many useful comments and discussions.

Best to all of you,

	Thomas Papanikolaou (TP)


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

