summaryrefslogtreecommitdiff
blob: 04efd207507d69d2588bc80f3c2f3c4035d2bf7f (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>vapier@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>