summaryrefslogtreecommitdiff
blob: f3c2191d88c11122dcbaf061d1ea31f8eeb052c1 (plain)
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
59
60
61
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
  <herd>no-herd</herd>
  <maintainer>
    <email>maintainer-needed@gentoo.org</email>
  </maintainer>
  <longdescription>
    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)
            o The exptmod logic can use any of the four 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. 
  </longdescription>
</pkgmetadata>