Class LongAparapiNTTStepStrategy
java.lang.Object
org.apfloat.internal.LongElementaryModMath
org.apfloat.internal.LongModMath
org.apfloat.internal.LongTableFNT
org.apfloat.internal.LongNTTStepStrategy
org.apfloat.aparapi.LongAparapiNTTStepStrategy
- All Implemented Interfaces:
Parallelizable, NTTStepStrategy
NTT steps for the
long element type aparapi transforms.- Since:
- 1.8.3
- Version:
- 1.15.0
- Author:
- Mikko Tommila
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidmultiplyElements(ArrayAccess arrayAccess, int startRow, int startColumn, int rows, int columns, long length, long totalTransformLength, boolean isInverse, int modulus) Multiply each matrix element(i, j)bywi * j / totalTransformLength.voidtransformRows(ArrayAccess arrayAccess, int length, int count, boolean isInverse, boolean permute, int modulus) Transform the rows or columns of the data matrix.Methods inherited from class LongNTTStepStrategy
createMultiplyElementsParallelRunnable, createTransformRowsParallelRunnable, getMaxTransformLengthMethods inherited from class LongTableFNT
inverseTableFNT, tableFNTMethods inherited from class LongModMath
createWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negateMethods inherited from class LongElementaryModMath
getModulus, modAdd, modMultiply, modSubtract, setModulus
-
Constructor Details
-
LongAparapiNTTStepStrategy
public LongAparapiNTTStepStrategy(boolean rowOrientation) Basic constructor.- Parameters:
rowOrientation- If the data is using row orientation.
-
-
Method Details
-
multiplyElements
public void multiplyElements(ArrayAccess arrayAccess, int startRow, int startColumn, int rows, int columns, long length, long totalTransformLength, boolean isInverse, int modulus) throws ApfloatRuntimeException Description copied from interface:NTTStepStrategyMultiply each matrix element(i, j)bywi * j / totalTransformLength. The matrix size is n1 x n2.- Specified by:
multiplyElementsin interfaceNTTStepStrategy- Overrides:
multiplyElementsin classLongNTTStepStrategy- Parameters:
arrayAccess- The memory array to multiply.startRow- Which row in the whole matrix the starting row in thearrayAccessis.startColumn- Which column in the whole matrix the starting column in thearrayAccessis.rows- The number of rows in thearrayAccessto multiply.columns- The number of columns in the matrix (= n2).length- The length of data in the matrix being transformed.totalTransformLength- The total transform length, for the scaling factor. Used only for the inverse case.isInverse- If the multiplication is done for the inverse transform or not.modulus- Index of the modulus.- Throws:
ApfloatRuntimeException
-
transformRows
public void transformRows(ArrayAccess arrayAccess, int length, int count, boolean isInverse, boolean permute, int modulus) throws ApfloatRuntimeException Transform the rows or columns of the data matrix. If the data is oriented in rows, transforms physically the rows. If the data is oriented in columns, transforms physically columns.- Specified by:
transformRowsin interfaceNTTStepStrategy- Overrides:
transformRowsin classLongNTTStepStrategy- Parameters:
arrayAccess- The memory array to split and transform.length- Length of one transform.count- Number of transforms to be done.isInverse-trueif an inverse transform is performed,falseif a forward transform is performed.permute- If permutation should be done.modulus- Index of the modulus.- Throws:
ApfloatRuntimeException
-