Class DoubleTableFNTStrategy

All Implemented Interfaces:
NTTStrategy

public class DoubleTableFNTStrategy extends DoubleTableFNT implements NTTStrategy
Fast Number Theoretic Transform strategy that uses lookup tables for powers of n:th root of unity and permutation indexes.

All access to this class must be externally synchronized.

Version:
1.9.0
Author:
Mikko Tommila
  • Constructor Details

    • DoubleTableFNTStrategy

      public DoubleTableFNTStrategy()
      Default constructor.
  • Method Details

    • transform

      public void transform(DataStorage dataStorage, int modulus) throws ApfloatRuntimeException
      Description copied from interface: NTTStrategy
      Perform a forward transform on the data.

      Multiple moduli can be used, if the convolution algorithm uses the Chinese Remainder Theorem to calculate the final result.

      Specified by:
      transform in interface NTTStrategy
      Parameters:
      dataStorage - The data to be transformed.
      modulus - Number of modulus to use (in case the transform supports multiple moduli).
      Throws:
      ApfloatRuntimeException
    • inverseTransform

      public void inverseTransform(DataStorage dataStorage, int modulus, long totalTransformLength) throws ApfloatRuntimeException
      Description copied from interface: NTTStrategy
      Perform an inverse transform on the data.

      Multiple moduli can be used, if the convolution algorithm uses the Chinese Remainder Theorem to calculate the final result.

      Specified by:
      inverseTransform in interface NTTStrategy
      Parameters:
      dataStorage - The data to be transformed.
      modulus - Number of modulus to use (in case the transform supports multiple moduli).
      totalTransformLength - Total transform length; the final result elements are divided by this value.
      Throws:
      ApfloatRuntimeException
    • getTransformLength

      public long getTransformLength(long size)
      Description copied from interface: NTTStrategy
      Return the supported transform length for the specified data size.
      Specified by:
      getTransformLength in interface NTTStrategy
      Parameters:
      size - Length of the data to be transformed.
      Returns:
      Length of the transform needed by this transform.