Class LongFactor3NTTStepStrategy

All Implemented Interfaces:
Parallelizable, Factor3NTTStepStrategy
Direct Known Subclasses:
LongAparapiFactor3NTTStepStrategy

public class LongFactor3NTTStepStrategy extends LongModMath implements Factor3NTTStepStrategy, Parallelizable
Steps for the factor-3 NTT.

The transform is done using a parallel algorithm, if the data fits in memory.

All access to this class must be externally synchronized.

Since:
1.7.0
Version:
1.9.0
Author:
Mikko Tommila
  • Constructor Details

    • LongFactor3NTTStepStrategy

      public LongFactor3NTTStepStrategy()
      Default constructor.
  • Method Details

    • transformColumns

      public void transformColumns(DataStorage dataStorage0, DataStorage dataStorage1, DataStorage dataStorage2, long startColumn, long columns, long power2length, long length, boolean isInverse, int modulus) throws ApfloatRuntimeException
      Description copied from interface: Factor3NTTStepStrategy
      Transform the columns of a matrix using a 3-point transform.
      Specified by:
      transformColumns in interface Factor3NTTStepStrategy
      Parameters:
      dataStorage0 - The data of the first column.
      dataStorage1 - The data of the second column.
      dataStorage2 - The data of the third column.
      startColumn - The starting element index in the data storages to transform.
      columns - How many columns to transform.
      power2length - Length of the column transform.
      length - Length of total transform (three times the length of one column).
      isInverse - true if an inverse transform is performed, false if a forward transform is performed.
      modulus - Index of the modulus.
      Throws:
      ApfloatRuntimeException
    • getMaxTransformLength

      public long getMaxTransformLength()
      Description copied from interface: Factor3NTTStepStrategy
      Get the maximum transform length.
      Specified by:
      getMaxTransformLength in interface Factor3NTTStepStrategy
      Returns:
      The maximum transform length.
    • createColumnTransformParallelRunnable

      protected ParallelRunnable createColumnTransformParallelRunnable(DataStorage dataStorage0, DataStorage dataStorage1, DataStorage dataStorage2, long startColumn, long columns, long power2length, long length, boolean isInverse, int modulus)
      Create a ParallelRunnable object for transforming the columns of the matrix using a 3-point NTT transform.
      Parameters:
      dataStorage0 - The data of the first column.
      dataStorage1 - The data of the second column.
      dataStorage2 - The data of the third column.
      startColumn - The starting element index in the data storages to transform.
      columns - How many columns to transform.
      power2length - Length of the column transform.
      length - Length of total transform (three times the length of one column).
      isInverse - true if an inverse transform is performed, false if a forward transform is performed.
      modulus - Index of the modulus.
      Returns:
      A suitable object for performing the 3-point transforms in parallel.