summaryrefslogtreecommitdiff
blob: 1abe0f30209b215a131cd70794553e0fde3243b8 (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
62
63
64
65
66
67
68
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
        <maintainer type="person">
                <email>patrick@gentoo.org</email>
                <name>Patrick Lauer</name>
        </maintainer>
        <maintainer type="person">
                <email>sam@gentoo.org</email>
                <name>Sam James</name>
        </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&gt;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>
        <upstream>
                <remote-id type="github">libtom/libtommath</remote-id>
        </upstream>
</pkgmetadata>