Class LongModMath

Direct Known Subclasses:
LongFactor3NTTStepStrategy, LongNTTConvolutionStepStrategy, LongTableFNT, LongWTables

public class LongModMath extends LongElementaryModMath
Modulo arithmetic functions for long data.
Version:
1.0
Author:
Mikko Tommila
  • Constructor Details

    • LongModMath

      public LongModMath()
      Default constructor.
  • Method Details

    • createWTable

      public final long[] createWTable(long 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 long getForwardNthRoot(long 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 long getInverseNthRoot(long 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 long modInverse(long 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 long modDivide(long a, long 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 long negate(long a)
      Modular negation.
      Parameters:
      a - The argument.
      Returns:
      -a mod m.
    • modPow

      public final long modPow(long a, long n)
      Modular power. Assumes that the modulus is prime.
      Parameters:
      a - The base.
      n - The exponent.
      Returns:
      an mod m.