org.apfloat.internal
Class DoubleModMath

java.lang.Object
  |
  +--org.apfloat.internal.DoubleElementaryModMath
        |
        +--org.apfloat.internal.DoubleModMath
Direct Known Subclasses:
Double3NTTConvolutionStrategy, DoubleFactor3NTTStrategy, DoubleTableFNTStrategy

public class DoubleModMath
extends DoubleElementaryModMath

Modulo arithmetic functions for double data.


Constructor Summary
DoubleModMath()
          Default constructor.
 
Method Summary
 double[] createWTable(double w, int n)
          Create a table of powers of n:th root of unity.
 double getForwardNthRoot(double primitiveRoot, long n)
          Get forward n:th root of unity.
 double getInverseNthRoot(double primitiveRoot, long n)
          Get inverse n:th root of unity.
 double modDivide(double a, double b)
          Modular division.
 double modInverse(double a)
          Modular inverse, that is 1 / a.
 double modPow(double a, double n)
          Modular power.
 double negate(double a)
          Modular negation.
 
Methods inherited from class org.apfloat.internal.DoubleElementaryModMath
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

DoubleModMath

public DoubleModMath()
Default constructor.

Method Detail

createWTable

public final double[] createWTable(double 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 double getForwardNthRoot(double 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 double getInverseNthRoot(double 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 double modInverse(double 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 double modDivide(double a,
                              double 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 double negate(double a)
Modular negation.

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

modPow

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

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