Interface ConvolutionStrategy
- All Known Implementing Classes:
DoubleKaratsubaConvolutionStrategy, DoubleMediumConvolutionStrategy, DoubleShortConvolutionStrategy, FloatKaratsubaConvolutionStrategy, FloatMediumConvolutionStrategy, FloatShortConvolutionStrategy, IntKaratsubaConvolutionStrategy, IntMediumConvolutionStrategy, IntShortConvolutionStrategy, LongKaratsubaConvolutionStrategy, LongMediumConvolutionStrategy, LongShortConvolutionStrategy, ParallelThreeNTTConvolutionStrategy, ThreeNTTConvolutionStrategy
public interface ConvolutionStrategy
Generic convolution strategy. To perform the convolution,
an implementing class could use e.g.
- A simple long multiplication convolution with O(n2) complexity
- An O(nlog2(3)) Karatsuba type algorithm, e.g. as desribed in Knuth's Seminumerical Algorithms
- Floating-point Fast Fourier Transform (FFT) based convolution
- Number-Theoretic Transform (NTT) based convolution, with the Chinese Remainder Theorem used
- Version:
- 1.0
- Author:
- Mikko Tommila
-
Method Summary
Modifier and TypeMethodDescriptionconvolute(DataStorage x, DataStorage y, long resultSize) Convolutes the two sets of data.
-
Method Details
-
convolute
Convolutes the two sets of data.- Parameters:
x- First data set.y- Second data set.resultSize- Number of elements needed in the result data.- Returns:
- The convolved data.
- Throws:
ApfloatRuntimeException
-