org.apfloat.internal
Class IntModMath

java.lang.Object
  extended byorg.apfloat.internal.IntElementaryModMath
      extended byorg.apfloat.internal.IntModMath
Direct Known Subclasses:
Int3NTTConvolutionStrategy, IntFactor3NTTStrategy, IntTableFNTStrategy

public class IntModMath
extends IntElementaryModMath

Modulo arithmetic functions for int data.

Version:
1.0
Author:
Mikko Tommila

Constructor Summary
IntModMath()
          Default constructor.
 
Method Summary
 int[] createWTable(int w, int n)
          Create a table of powers of n:th root of unity.
 int getForwardNthRoot(int primitiveRoot, long n)
          Get forward n:th root of unity.
 int getInverseNthRoot(int primitiveRoot, long n)
          Get inverse n:th root of unity.
 int modDivide(int a, int b)
          Modular division.
 int modInverse(int a)
          Modular inverse, that is 1 / a.
 int modPow(int a, int n)
          Modular power.
 int negate(int a)
          Modular negation.
 
Methods inherited from class org.apfloat.internal.IntElementaryModMath
getModulus, modAdd, modMultiply, modSubtract, setModulus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IntModMath

public IntModMath()
Default constructor.

Method Detail

createWTable

public final int[] createWTable(int w,
                                int n)
Create a table of powers of n:th root of unity.

Parameters:
w - The n:th root of unity modulo the current modulus.
n - The table length (= transform length).
Returns:
Table of table[i]=wi mod m, i = 0, ..., n-1.

getForwardNthRoot

public int getForwardNthRoot(int primitiveRoot,
                             long n)
Get forward n:th root of unity. This is w.

Assumes that the modulus is prime.

Parameters:
primitiveRoot - Primitive root of the modulus.
n - The transform length.
Returns:
Forward n:th root of unity.

getInverseNthRoot

public int getInverseNthRoot(int primitiveRoot,
                             long n)
Get inverse n:th root of unity. This is w-1.

Assumes that the modulus is prime.

Parameters:
primitiveRoot - Primitive root of the modulus.
n - The transform length.
Returns:
Inverse n:th root of unity.

modInverse

public final int modInverse(int a)
Modular inverse, that is 1 / a. Assumes that the modulus is prime.

Parameters:
a - The operand.
Returns:
a-1 mod m.

modDivide

public final int modDivide(int a,
                           int b)
Modular division. Assumes that the modulus is prime.

Parameters:
a - The dividend.
b - The divisor.
Returns:
a*b-1 mod m.

negate

public final int negate(int a)
Modular negation.

Parameters:
a - The argument.
Returns:
-a mod m.

modPow

public final int modPow(int a,
                        int n)
Modular power. Assumes that the modulus is prime.

Parameters:
a - The base.
n - The exponent.
Returns:
an mod m.