Package cc.redberry.rings
Class ChineseRemainders
- java.lang.Object
-
- cc.redberry.rings.ChineseRemainders
-
public final class ChineseRemainders extends Object
- Since:
- 1.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classChineseRemainders.ChineseRemaindersMagic<E>Magic data to make CRT faster via precomputing Bezout coefficientsstatic classChineseRemainders.ChineseRemaindersMagicZp64
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static longChineseRemainders(long[] primes, long[] remainders)Runs Chinese Remainders algorithmstatic longChineseRemainders(long prime1, long prime2, long remainder1, long remainder2)Runs Chinese Remainders algorithmstatic BigIntegerChineseRemainders(BigInteger[] primes, BigInteger[] remainders)Runs Chinese Remainders algorithmstatic BigIntegerChineseRemainders(BigInteger prime1, BigInteger prime2, BigInteger remainder1, BigInteger remainder2)Runs Chinese Remainders algorithmstatic longChineseRemainders(ChineseRemainders.ChineseRemaindersMagicZp64 magic, long remainder1, long remainder2)Runs Chinese Remainders algorithm using the precomputed magic (speed's up computation when several invocations with the samemagicperformed)static <E> EChineseRemainders(Ring<E> ring, ChineseRemainders.ChineseRemaindersMagic<E> magic, E remainder1, E remainder2)Runs Chinese Remainders algorithm using the precomputed magic (speed's up computation when several invocations with the samemagicperformed)static <E> EChineseRemainders(Ring<E> ring, E[] primes, E[] remainders)Runs Chinese Remainders algorithmstatic <E> EChineseRemainders(Ring<E> ring, E prime1, E prime2, E remainder1, E remainder2)Runs Chinese Remainders algorithmstatic ChineseRemainders.ChineseRemaindersMagicZp64createMagic(long prime1, long prime2)Magic for fast repeated Chinese Remaindersstatic <E> ChineseRemainders.ChineseRemaindersMagic<E>createMagic(Ring<E> ring, E prime1, E prime2)Magic for fast repeated Chinese Remainders
-
-
-
Method Detail
-
ChineseRemainders
public static long ChineseRemainders(long prime1, long prime2, long remainder1, long remainder2)Runs Chinese Remainders algorithm- Parameters:
prime1- #1 primeprime2- #2 primeremainder1- #1 remainderremainder2- #2 remainder- Returns:
- the result
-
ChineseRemainders
public static BigInteger ChineseRemainders(BigInteger prime1, BigInteger prime2, BigInteger remainder1, BigInteger remainder2)
Runs Chinese Remainders algorithm- Parameters:
prime1- #1 primeprime2- #2 primeremainder1- #1 remainderremainder2- #2 remainder- Returns:
- the result
-
ChineseRemainders
public static <E> E ChineseRemainders(Ring<E> ring, E prime1, E prime2, E remainder1, E remainder2)
Runs Chinese Remainders algorithm- Parameters:
prime1- #1 primeprime2- #2 primeremainder1- #1 remainderremainder2- #2 remainder- Returns:
- the result
-
ChineseRemainders
public static <E> E ChineseRemainders(Ring<E> ring, ChineseRemainders.ChineseRemaindersMagic<E> magic, E remainder1, E remainder2)
Runs Chinese Remainders algorithm using the precomputed magic (speed's up computation when several invocations with the samemagicperformed)- Parameters:
ring- the ringmagic- magic (create bycreateMagic(Ring, Object, Object))remainder1- #1 remainderremainder2- #2 remainder- Returns:
- the result
-
createMagic
public static <E> ChineseRemainders.ChineseRemaindersMagic<E> createMagic(Ring<E> ring, E prime1, E prime2)
Magic for fast repeated Chinese Remainders
-
ChineseRemainders
public static long ChineseRemainders(ChineseRemainders.ChineseRemaindersMagicZp64 magic, long remainder1, long remainder2)
Runs Chinese Remainders algorithm using the precomputed magic (speed's up computation when several invocations with the samemagicperformed)- Parameters:
magic- magic structure for fast modular arithmetic (createMagic(long, long)remainder1- #1 remainderremainder2- #2 remainder- Returns:
- the result
-
createMagic
public static ChineseRemainders.ChineseRemaindersMagicZp64 createMagic(long prime1, long prime2)
Magic for fast repeated Chinese Remainders
-
ChineseRemainders
public static long ChineseRemainders(long[] primes, long[] remainders)Runs Chinese Remainders algorithm- Parameters:
primes- list of coprime numbersremainders- remainder- Returns:
- the result
-
ChineseRemainders
public static BigInteger ChineseRemainders(BigInteger[] primes, BigInteger[] remainders)
Runs Chinese Remainders algorithm- Parameters:
primes- list of coprime numbersremainders- remainder- Returns:
- the result
-
ChineseRemainders
public static <E> E ChineseRemainders(Ring<E> ring, E[] primes, E[] remainders)
Runs Chinese Remainders algorithm- Parameters:
ring- the ringprimes- primesremainders- remainders- Returns:
- the result
-
-