org.apfloat.internal
Class Float3NTTConvolutionStrategy

java.lang.Object
  extended byorg.apfloat.internal.FloatElementaryModMath
      extended byorg.apfloat.internal.FloatModMath
          extended byorg.apfloat.internal.Float3NTTConvolutionStrategy
All Implemented Interfaces:
ConvolutionStrategy, FloatModConstants

public class Float3NTTConvolutionStrategy
extends FloatModMath
implements ConvolutionStrategy, FloatModConstants

Convolution methods in the transform domain for the float type. Multiplication can be done in linear time in the transform domain, where the multiplication is simply an element-by-element multiplication.

This implementation uses three Number Theoretic Transforms to do the convolution and the Chinese Remainder Theorem to get the final result.

Version:
1.0
Author:
Mikko Tommila

Field Summary
 
Fields inherited from interface org.apfloat.internal.FloatModConstants
MAX_POWER_OF_TWO_BASE, MAX_POWER_OF_TWO_BITS, MAX_TRANSFORM_LENGTH, MODULUS, PRIMITIVE_ROOT
 
Constructor Summary
Float3NTTConvolutionStrategy(int radix, NTTStrategy transform)
          Creates a new convoluter that uses the specified transform for transforming the data.
 
Method Summary
 DataStorage convolute(DataStorage x, DataStorage y, long resultSize)
          Convolutes the two sets of data.
 
Methods inherited from class org.apfloat.internal.FloatModMath
createWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negate
 
Methods inherited from class org.apfloat.internal.FloatElementaryModMath
getModulus, modAdd, modMultiply, modSubtract, setModulus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Float3NTTConvolutionStrategy

public Float3NTTConvolutionStrategy(int radix,
                                    NTTStrategy transform)
Creates a new convoluter that uses the specified transform for transforming the data.

Parameters:
radix - The radix that will be used.
transform - The transform that will be used.
Method Detail

convolute

public DataStorage convolute(DataStorage x,
                             DataStorage y,
                             long resultSize)
                      throws ApfloatRuntimeException
Description copied from interface: ConvolutionStrategy
Convolutes the two sets of data.

Specified by:
convolute in interface ConvolutionStrategy
Parameters:
x - First data set.
y - Second data set.
resultSize - Number of elements needed in the result data.
Returns:
The convolved data.
Throws:
ApfloatRuntimeException