

                            LiDIA

           A library for computational number theory

      Copyright (c) 1995 by the LiDIA Group - Version 1.1

                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 Contents

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

6) ACKNOWLEDGEMENTS




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

LiDIA  is  a  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. The current version runs on 


  machine       operating system           
--------------------------------------------
  sparc         SunOS-4.1.x, Solaris-2.3/2.4
  i[345]86      Linux, OS/2, Solaris-2.3/2.4
  Mips R4000    IRIX-5.2, 5.3         
  RS6000        AIX-3.2.5              
  HP9000/7xx    HP-UX9.05             
  DEC alpha     DEC OSF/1            
  Macintosh     (*)                 


(*) 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 4.5.


LiDIA can be compiled with both AT&T's cfront-3.0.1 and g++-2.4.5,
g++-2.5.x,  g++-2.6.x  and  the  gcc-2.7.0  compilers. A succesful
installation using Sun's acc-3.0.1 and RS6000's xLc/xLC  compilers
has been also reported to us.

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          Patrick Theobald   Damian Weber
Ren'e Weiskircher     Susanne Wetzel

Old Members
^^^^^^^^^^^
Oliver van Sprang



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

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

The current version of LiDIA (1.1) is a bugfix release. Most of the
work  was  done  on  the configuration system of the package and in 
improving stability and performance.

a) LiDIA  now  uses GNU's autoconf to find the proper configuration
   variables.

b) We  have  included Arjen Lenstra's lip package in LiDIA c_kernel
   (called  freelip-1.0;  it is maintained by Paul Leyland). lip is
   entirely written in C and it  is  faster than our currently used
   integer  package  (libI)  on all machines except sparc, mips and
   ix86.  This  is  due  to  the  use  of  double arithmetic in the
   implementation of lip. For more information, please read the
   documentation of lip in 

	        LiDIA/src/c_kernel/lip/lipdoc.ps

   To  configure  LiDIA  to  use  lip, edit the CONFIG file created
   during the configuration ans set the variable BIGINT to lip, i.e.
   write

	         	 BIGINT = lip

c) The Pohlig/Hellman algorithm for calculating discrete logarithms
   over finite prime fields in now included in the directory

	LiDIA/src/packages/discrete_log/pohlig_hellman

d) We have now an HTML version of the LiDIA manual. You can call it
   by simply typing
		       
			Mosaic lidiahtml.html or better

			netscape lidiahtml.html

   in  the  directory  LiDIA/doc/html/lidiahtml.

e) Please  read  the  changes  section  in  the  manual   for  more
   information  about  fixed  bugs  and  new features in this LiDIA
   release.

*******************************************************************
Please note that netscape is not a public domain WWW browser but it
can  be  used  freely  for  non-profit  purposes.  Please  read the
copyright notice carefully before calling netscape.
*******************************************************************

3.2) Contents
^^^^^^^^^^^^^

LiDIA's data types:

    bigint                    integer arithmetic

    bigmod                    modular integer arithmetic

    bigrational               rational arithmetic

    bigfloat                  real arithmetic  (including  Pi, E,
                              exp, log, sqrt, sin, cos, ...

    bigcomplex                complex arithmetic


Based on these types the following more elaborate classes are im-
plemented:


    bigint_matrix             linear algebra over the integers

    lattice_basis             lattice  reduction  algorithms (va-
                              riants  of  the  LLL  algorithm for
                              doubles,  bigints  and  bigfloats).

    lattice_gensys            algorithms   for  finding  lattices
                              from generating systems

    rational_factorization    arithmetic  with  factorizations of
                              integers (Trial Division, ECM).


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

Here is a sample ftp session. With > we denote the  commands  you
have to type in. After // we give 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 COPYRIGHT                    // get   the    COPYRIGHT file
> get LiDIA.tgz                    // get      the        package
> bye                              // disconnect

This session will get the files 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/


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. Solaris users should also edit the file 

		LiDIA/config/CONFIG

and replace the line

		ASFLAGS = -DUMMY

with 
		ASFLAGS = -DHAVE_ELF

since  Solaris's   assembler   stores   function   names  without
underscores. 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/lib/LiDIA/include

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
@@@@@@@

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.

We would also appreciate all sorts of feedback,  bug reports  and
bug fixes, enhancements  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 do-
cumentation), 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, enhance-
ments, etc to

                     lidia@cs.uni-sb.de

Please, send bug reports (and fixes) to

                   lidia-bugs@cs.uni-sb.de


6) ACKNOWLEDGEMENTS
@@@@@@@@@@@@@@@@@@@

I would like to thank in the name of the LiDIA-Group all users who
have  up-loaded  and  installed   LiDIA.   Your   suggestions  and
contributions  are  a  great  help  for us.

Best to all of you,

	Thomas Papanikolaou (TP)

