[comp.archives] [crypt...] Large Integer Arithmetic Packages, v. 2

riordanmr@clvax1.cl.msu.edu (Mark Riordan) (04/20/91)

Archive-name: math/bignum/msu-bignum-archive/1991-04-19
Archive-directory: cl-next1.cl.msu.edu:/math/ [35.8.4.21]
Original-posting-by: riordanmr@clvax1.cl.msu.edu (Mark Riordan)
Original-subject: Large Integer Arithmetic Packages, v. 2
Reposted-by: emv@msen.com (Edward Vielmetti, MSEN)

Thanks to Email messages from numerous correspondents, I now have an updated
version of the list I posted two days ago:
------------------------------------------------------------------
In response to recent Email requests, I have assembled this list of
large-integer packages of which I have heard.

For your convenience, I have placed compressed tar files of
some of these on cl-next1.cl.msu.edu (35.8.4.21).  They are
available for anonymous FTP in the directory "math".  
However, what I have may not be the most current version in all cases.

Here they are, in no particular order:

mp
    Multiple Precision package that comes with some Unixes
    
    Multiple precision package accessed via -lmp flag on your
    compiler.  Provides +, -, *, /, gcd, exponentiation,
    sqrt.  Comes with SunOS, NeXT Mach, BBN Mach 1000, 
    and probably a few others.  See "man mp".  
    Object code only, of course.

PARI
    Henri Cohen, et al., Universite Bordeaux I, Paris, FRANCE
    
    Multiple precision desk calculator and library routines.
    Contains optimized assembly code for Motorola 68020, 
    semi-optimized code for SPARC, and apparently rather slow
    generic C version.  Does both integers and reals.
    Does vectors and matrices as well as scalars.
    Contains a number of advanced functions, some of which I've
    never heard of.  ("Weber's function"?)
    Has a factorization function, primality test, & other related stuff.
    Plenty of TEX documentation.
    Public domain, but you can't distribute modified versions.
    Available via anonymous FTP from math.ucla.edu.  There seem to
    be Mac- and NeXT-specific versions there in addition to:
    Filename:  pari-1.35a.tar.Z
    
Arithmetic in Global Fields  (Arith)
    Kevin R. Coombes, David R. Grant
    
    Package of routines for arbitrary precision integers or
    polynomials over finite fields.  Includes basic +, -, *, /
    and a few others like gcd.  Source code in C.
    Distributed under the terms of the GNU public license.
    Includes man pages and TEX documentation.
    Filename:  arith.tar.Z

Arbitrary Precision Math Library
    Lloyd Zusman   Los Gatos, CA
    
    C package which supports basic +, -, *, /.  Provides for radix
    points (i.e., non-integers).  Not as polished as the others here.
    Posted to comp.sources.misc in October 1988.
    Filename:  apml.tar.Z
    
BigNum
    J. Vuillemin, INRIA, FRANCE, and others.
    Distributed by Digital Equipment Paris Research Lab (DECPRL)
    
    A "portable and efficient arbitrary-precision integer" package.
    C code, with generic C "kernel", plus assembly "kernels" for
    MC680x0, Intel i960, MIPS, NS32032, Pyramid, and of course VAX.
    This is probably one of the better-known packages of this type.
    Implements +, -, *, /, mod, plus logical operations OR, AND, XOR.
    Both signed and unsigned arithmetic available.
    Available via email from librarian@decprl.dec.com.
    You will receive 5 shell archives.  Give your postal address
    and you will also receive printed documentation from France.
    Package includes TEX documentation.
    Publicly available for non-commercial use.
    Filename:  bignum.tar.Z

Lenstra's package
    Arjen Lenstra   Bellcore
    
    Portable unsigned integer package written entirely in C.
    Includes +, -, *, /, exponentiation, mod, primality testing,
    sqrt, random number generator, and a few others.  The package
    was uncommented and undocumented; I have tried to add enough
    comments to get by.  This is the only of these packages that I
    have actually used.  It works well and is very portable.  
    I haven't done any benchmarks against the others, but the code 
    looks clever & Lenstra is an accomplished number theorist.
    Unlike the other packages here, this one requires you to allocate
    storage statically--only a problem if your numbers are really huge.
    Arjen has placed the code in the public domain.  
    Filename:  lenstra.tar.Z

lenstra_2
    Arjen Lenstra,  Bellcore

    This just in--an improved version of Arjen's package.  This one
    does signed arithmetic and can do dynamic memory management as
    an option.  Has a few new routines, too.  May not be as fully
    debugged as the earlier package, though.
    Filename:  lenstra_2.c
    
bmp  (Brent's Multiple Precision?)
    R. P. Brent

    1981 vintage FORTRAN code to do extended precision floating &
    fixed point arithmetic.  Includes most of the mathematical
    functions you'd find in a FORTRAN run-time library.
    This code is an ACM algorithm, number 524.
    To obtain, send a mail message to  netlib@ornl.gov
    containing the line "send mp.f from bmp" or better yet, perhaps
    just start with "help".

SPX
    Kannan Alagappan & Joseph Tardo, DEC
    
    This is a huge prototype public key authentication system
    based on RSA.  I mention it here because those who have heard
    of SPX have probably correctly guessed that it contains a large
    integer package and I want to inform you that the large integer
    package it contains is indeed DEC's BigNum from France.
    You can get a beta test copy of SPX from crl.dec.com (192.58.206.2). 
    Use it only for testing, as it "may" expire on a certain date.

amp  (Antti's Multiple Precision?)
    Antti Louko   alo@kampi.hut.fi

    Multiple precision integer package in C.  Includes +, -, *, /, %,
    pow, mod, 1/x mod y, random, sqrt, gcd.  Available for non-commercial
    use.  The package includes "share-secret", a public key system based
    on the Diffie-Hellman algorithm.
    This is normally part of the well-known "des-dist.tar.Z",
    but I have removed the DES part to avoid having to deal with 
    cryptographic export laws, and have named the result:
    Filename:  amp.tar.Z

gennum  
    Per Bothner   U of Wisconsin-Madison

    C++ routines and classes to do generic arithmetic, both
    integer and rational.  
    Obtain from sevenlayer.cs.wis.edu.

MIRACL
    (By someone in Dublin, Ireland)

    Integer and fractional multiple precision package.
    Includes factorization, primality testing, encryption.
    ath@linkoping.telesoft.se says there's a version from the 
    C User's Group and a more recent version available via ads
    in Byte magazine.  Not clear on whether this is commercial
    software.

Perl
    Larry Wall

    This well-known programming language--kind of an alternative to
    AWK--includes built-in multiple precision integer and floating point.
    Because the source code to this package is available (under the
    terms of the GNU public license), I include it in this list.
    Available via anonymous FTP from devvax.jpl.nasa.gov.

Other languages
    Various

    Multiple precision arithmetic is available in a number of 
    programming languages, such as Lisp and ABC (cf. mcsun.eu.net).
    For some of these, source code may be available.  This list is
    long enough already, so I'm not going to pursue it aggressively.

Thanks to Ed Vielmetti and several others who contributed to this list.

Mark Riordan   riordanmr@clvax1.cl.msu.edu
Michigan State University   19 April 1991

-- comp.archives file verification
cl-next1.cl.msu.edu
total 913
-rw-r--r--  1 ftp      other       6956 Apr 19 19:42 BIGNUMS.TXT
-rw-r--r--  1 ftp      other      40541 Apr 19 19:28 amp.tar.Z
-rw-r--r--  1 ftp      other      74733 Apr 17 22:07 apml.tar.Z
-rw-r--r--  1 ftp      other      72153 Apr 17 21:41 arith.tar.Z
-rw-r--r--  1 ftp      other      25345 Apr 17 22:05 lenstra.tar.Z
-rw-r--r--  1 ftp      other      82761 Apr 19 03:08 lenstra_2.c
-rw-r--r--  1 ftp      other     620209 Apr 19 18:45 pari-1.35a.tar.Z
found msu-bignum-archive ok
cl-next1.cl.msu.edu:/math/