summaryrefslogtreecommitdiffstats
path: root/libs/libtommath/DETAILS
blob: 6ee1ed8393b4fde32a2d4940babbb133b83d0c29 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
           SPELL=libtommath
         VERSION=0.41
      PATCHLEVEL=1
          SOURCE=ltm-$VERSION.tar.bz2
         SOURCE2=$SOURCE.asc
  SOURCE2_IGNORE=signature
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
      SOURCE_URL=http://libtom.org/files/$SOURCE
     SOURCE2_URL=$SOURCE_URL.asc
     SOURCE_HASH=signature
      SOURCE_GPG=ltm.gpg:$SOURCE2:UPSTREAM_KEY
        WEB_SITE=http://libtom.org/?page=index&newsitems=5&whatfile=ltm
      LICENSE[0]=GPL
         ENTERED=20070222
           SHORT="LibTomMath is a free open source portable number theoretic multiple-precision integer library."
cat << EOF
LibTomMath is a free open source portable number theoretic multiple-precision
integer library written entirely in C. (phew!). The library is designed to
provide a simple to work with API that provides fairly efficient routines
that build out of the box without configuration.

The library builds out of the box with GCC 2.95 [and up] as well as Visual
C++ v6.00 [with SP5] without configuration. The source code is arranged to
make it easy to dive into a particular area very quickly. The code is also
littered with comments [This is one of the on going goals] that help explain
the algorithms and their implementations. Ideally the code will serve as an
educational tool in the future for CS students studying number theory.

The library provides a vast array of highly optimized routines from various
branches of number theory.

    * Simple Algebraic
          o Addition o Subtraction o Multiplication o Squaring o Division
    * Digit Manipulation
          o Shift left/right whole digits (mult by 2b by moving digits)
          o Fast multiplication/division by 2 and 2k for k>1 o Binary AND,
          OR and XOR gates
    * Modular Reductions
          o Barrett Reduction (fast for any p) o Montgomery Reduction (faster
          for any odd p) o DR Reduction (faster for any restricted p see
          manual) o 2k Reduction (fast reduction modulo 2p - k for k < MP_MASK
          and for k > MP_MASK) o The exptmod logic can use any of the five
          reduction algorithms when appropriate with a single function call.
    * Number Theoretic
          o Greatest Common Divisor o Least Common Multiple o Jacobi
          Symbol Computation (falls back to Legendre for prime moduli) o
          Multiplicative Inverse o Extended Euclidean Algorithm o Modular
          Exponentiation o Fermat and Miller-Rabin Primality Tests, utility
          function such as is_prime and next_prime
    * Miscellaneous
          o Root finding over Z o Pseudo-random integers o Signed and
          Unsigned comparisons
    * Optimizations
          o Fast Comba based Multiplier, Squaring and Montgomery routines.
          o Montgomery, Diminished Radix and Barrett based modular
          exponentiation.  o Karatsuba and Toom-Cook multiplication algorithms.
          o Many pointer aliasing optimiztions throughout the entire library.
EOF