Package org.apfloat.aparapi
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.8.3
- Author:
- Mikko Tommila
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
multiplyElements
(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
.void
transformRows
(ArrayAccess arrayAccess, int length, int count, boolean isInverse, boolean permute, int modulus) Transform the columns of the data matrix.Methods inherited from class org.apfloat.internal.LongNTTStepStrategy
createMultiplyElementsParallelRunnable, createTransformRowsParallelRunnable, getMaxTransformLength
Methods inherited from class org.apfloat.internal.LongTableFNT
inverseTableFNT, tableFNT
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
-
LongAparapiNTTStepStrategy
public LongAparapiNTTStepStrategy()Default constructor.
-
-
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:NTTStepStrategy
Multiply each matrix element(i, j)
bywi * j / totalTransformLength
. The matrix size is n1 x n2.- Specified by:
multiplyElements
in interfaceNTTStepStrategy
- Overrides:
multiplyElements
in classLongNTTStepStrategy
- Parameters:
arrayAccess
- The memory array to multiply.startRow
- Which row in the whole matrix the starting row in thearrayAccess
is.startColumn
- Which column in the whole matrix the starting column in thearrayAccess
is.rows
- The number of rows in thearrayAccess
to 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 columns of the data matrix. Note that this method expects the data to be organized in columns, not rows. The argumentslength
andcount
still mean the length of one transform and number of transforms to be done.- Specified by:
transformRows
in interfaceNTTStepStrategy
- Overrides:
transformRows
in classLongNTTStepStrategy
- Parameters:
arrayAccess
- The memory array to split to columns and to transform.length
- Length of one transform (one columns).count
- Number of columns.isInverse
-true
if an inverse transform is performed,false
if a forward transform is performed.permute
- If permutation should be done.modulus
- Index of the modulus.- Throws:
ApfloatRuntimeException
-