blob: 135659ff6dabdf987d13abbbf24f345aa964eafd (
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="UTF8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<herd>noherd</herd>
<maintainer>
<email>maintainerneeded@gentoo.org</email>
</maintainer>
<longdescription>
LibTomMath is a free open source portable number theoretic multipleprecision
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 MillerRabin Primality Tests, utility function such as
is_prime and next_prime
* Miscellaneous
o Root finding over Z
o Pseudorandom 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 ToomCook multiplication algorithms.
o Many pointer aliasing optimiztions throughout the entire library.
</longdescription>
</pkgmetadata>
