- WHAT
- provides these packages:
- bigint - which provides wrappers for arbitrary precision integers
- bigfloat - which provides wrappers for arbitrary precision floats
- bignum - both bigint and bigfloat
- WHERE
- http://sourceforge.net/project/showfiles.php?group_id=18733
- DEPENDENCIES
- This works with libgmp3 4.1.1 or similar under Linux; get it from any gnu archive (if you haven't got it). To recompile it, you'll need the latest version of critcl; http://tcl.tk/starkits/ is where you'll find it.
- INSTALL
- unpack this in /usr/lib, /usr/local/lib, or wherever your tcl resides.
- AUTHOR
- Colin McCormack
- LICENSE
- It's licensed under GPL - of necessity, as libgmp is.
I've modified bignum to use the latest Critcl and built a cross-platform library Starkit with binaries for Linux, Windows and OSX [2]To use, either unpack the Starkit and copy the contents of the lib directory into somewere on your auto_path, or just source it directly
tclkit % source bignum.kit % package require bignum % bigint::add 1111111111111111111111111111 2222222222222222222222222222 3333333333333333333333333333The binaries on Windows and Linux are statically linked against libgmp (and therefore self-contained) but I couldn't get this working on OSX so you'll need to have gmp installed on your LDPATH to use bignum on OSX. I'll have another go later.The modified source is available at [3]stevel 27 Jan 05
LES on July 27 2005: using bignum.kit from sdarchive with ActiveTcl 8.5 on Windows 98, I ran this command...
$ ::bigint::powm 5 6 0...and Tcl crashed (pure DOS or Tkcon). It only seems to happen with the 0, but it does happen every time. Maybe I shouldn't be using 0, I admit I do not understand what that function really does (I wanted to calculate a large number raised to a large power). But I don't think that Tcl or bignum should crash on me just because I threw a zero at it. :-)Lars H: powm is probably "power modulo" (a very common operation in many cryptographical algorithms), so a zero as last argument is likely to lead to "divide by zero" conditions. This could either be a bug in libgmp, or a failure of the wrapper to catch input not supported by that library, but come Tcl 8.5 we'll most likely have equivalent functionality in the core anyway (happy, happy; joy, joy).
This [4] is a review of a book called BigNum Math.
- Arbitrary-Precision Integers for Tcl 8.5 TIP #237 [5]
- Big bitstring operations
- Big Floating-Point Numbers
- Big integer routines
- big integer to floating enhancement to Tcl
- BigFloat for Tcl
- bignum in pure Tcl
- Bignums Fast and Dirty
- math::bigfloat
- math::bignum
- [6]
