Package org.apfloat.internal
Class LongFactor3NTTStepStrategy
java.lang.Object
org.apfloat.internal.LongElementaryModMath
org.apfloat.internal.LongModMath
org.apfloat.internal.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 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.LongModMath
createWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negate
Methods inherited from class org.apfloat.internal.LongElementaryModMath
getModulus, modAdd, modMultiply, modSubtract, setModulus
-
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 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.
-