Package org.apfloat.internal
Class IntFactor3NTTStepStrategy
java.lang.Object
org.apfloat.internal.IntElementaryModMath
org.apfloat.internal.IntModMath
org.apfloat.internal.IntFactor3NTTStepStrategy
- All Implemented Interfaces:
Parallelizable
,Factor3NTTStepStrategy
- Direct Known Subclasses:
IntAparapiFactor3NTTStepStrategy
public class IntFactor3NTTStepStrategy
extends IntModMath
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected 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.long
Get the maximum transform length.void
transformColumns(DataStorage dataStorage0, DataStorage dataStorage1, DataStorage dataStorage2, long startColumn, long columns, long power2length, long length, boolean isInverse, int modulus)
Transform the columns of a matrix using a 3-point transform.Methods inherited from class org.apfloat.internal.IntModMath
createWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negate
Methods inherited from class org.apfloat.internal.IntElementaryModMath
getModulus, modAdd, modMultiply, modSubtract, setModulus
-
Constructor Details
-
IntFactor3NTTStepStrategy
public IntFactor3NTTStepStrategy()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 ApfloatRuntimeExceptionDescription copied from interface:Factor3NTTStepStrategy
Transform the columns of a matrix using a 3-point transform.- Specified by:
transformColumns
in interfaceFactor3NTTStepStrategy
- 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 interfaceFactor3NTTStepStrategy
- 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.
-