riordanmr@clvax1.cl.msu.edu (Mark Riordan) (05/06/91)
Archive-name: math/bignum/msu-bignum-archive/1991-05-01 Archive-directory: cl-next1.cl.msu.edu:/math/ [35.8.4.21] Original-posting-by: riordanmr@clvax1.cl.msu.edu (Mark Riordan) Original-subject: Multiple precision package listing, v. 3 Reposted-by: emv@msen.com (Edward Vielmetti, MSEN) I've gotten several more responses since my last posting on this topic, so I've updated the list of multiple precision integer arithmetic packages. This will be the last time I'll post this list for a while! The list is also available from cl-next1.cl.msu.edu. /mrr ------------------------------------------------------------------------- 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. I removed this from my archive when I heard a rumor that PRL doesn't like others to distribute it. Send to the email address above. 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. Not public domain, apparently. It is available from the Austin Code Works. (See ads in Byte Magazine or Dr. Dobbs.) precision Dave Barrett barrettd@tigger.colorado.edu Multiple precision integer package in C with +,-,*,/, sqrt, rand, mod, pow, log. Simple vector support. Does dynamic allocation of memory. Free as long as you don't sell it or any program that uses it. Filename: precision.tar.Z UBASIC Unknown (to me) Multiple-precision version of the BASIC programming language, for MS-DOS. Includes floating point. Said (by Kevin Briggs) to be pretty fast. Object only, I think. ervin@morekypr.bitnet says: "This is the best package that I know of for fast arithmetic. Has a version optimized for 386 machines. Includes routines to do MPQS, the fastest currently known general factoring algorithm. An additional file is at both sites to allow MPQS to use hard drives so that it can factor up to 80 digits. Many number theoretical functions are included in UBASIC. It allows over 2500 digits of precision." Available via anonymous FTP from shape.mps.ohio-state.edu, or simtel20.army.mil, or wuarchive.wustl.edu. calc_v22 Unknown MS-DOS C-like language that allows "infinite" precision. Nice intrinsic functions. ervin@morekypr.bitnet reports problems when changing precision on the fly. See simtel20 or wuarchive. briggs_arith Kevin Briggs (briggs@mundoe.maths.oz.au) Turbo Pascal 5 source for routines that do multiple-precision +, -, *, /, sqrt, gcd, factoring, rand for integers; also includes +, -, *, / and rand for rational numbers. Filename: briggs_arith.pas Built-in support in other languages Various Multiple precision arithmetic is available in a number of programming languages, such as Lisp and ABC (cf. mcsun.eu.net). Perl (by Larry Wall, available from devvax.jpl.nasa.gov) includes source, in Perl, for such a package, but it's probably not suitable for serious use. For some of these, source code may be available. This list is long enough, 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 1 May 1991 -- comp.archives file verification cl-next1.cl.msu.edu total 994 -rw-r--r-- 1 ftp 8757 May 3 15:43 BIGNUMS.TXT -rw-r--r-- 1 ftp 30105 Apr 29 13:56 briggs_arith.pas -rw-r--r-- 1 ftp 49899 Apr 25 22:53 precision.tar.Z -rw-r--r-- 1 ftp 40541 Apr 19 19:28 amp.tar.Z -rw-r--r-- 1 ftp 620209 Apr 19 18:45 pari-1.35a.tar.Z -rw-r--r-- 1 ftp 82761 Apr 19 03:08 lenstra_2.c -rw-r--r-- 1 ftp 74733 Apr 17 22:07 apml.tar.Z -rw-r--r-- 1 ftp 25345 Apr 17 22:05 lenstra.tar.Z -rw-r--r-- 1 ftp 72153 Apr 17 21:41 arith.tar.Z found msu-bignum-archive ok cl-next1.cl.msu.edu:/math/