org.apfloat.internal
Class DoubleCarryCRT
java.lang.Object
org.apfloat.internal.DoubleCRTMath
org.apfloat.internal.DoubleCarryCRT
- All Implemented Interfaces:
- DoubleModConstants, DoubleRadixConstants
- public class DoubleCarryCRT
- extends DoubleCRTMath
- implements DoubleModConstants
Class for performing the final step of a three-modulus
Number Theoretic Transform based convolution. Works for the
double
type.
- Version:
- 1.0
- Author:
- Mikko Tommila
Constructor Summary |
DoubleCarryCRT(int radix)
Creates a carry-CRT object using the specified radix. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DoubleCarryCRT
public DoubleCarryCRT(int radix)
- Creates a carry-CRT object using the specified radix.
- Parameters:
radix
- The radix that will be used.
carryCRT
public DataStorage carryCRT(DataStorage resultMod0,
DataStorage resultMod1,
DataStorage resultMod2,
long resultSize)
throws ApfloatRuntimeException
- Calculate the final result of a three-NTT convolution.
Performs a Chinese Remainder Theorem (CRT) on each element
of the three result data sets to get the result of each element
modulo the product of the three moduli. Then it calculates the carries
to get the final result.
Note that the return value's initial word may be zero or non-zero,
depending on how large the result is.
Assumes that MODULUS[0] > MODULUS[1] > MODULUS[2]
.
- Parameters:
resultMod0
- The result modulo MODULUS[0]
.resultMod1
- The result modulo MODULUS[1]
.resultMod2
- The result modulo MODULUS[2]
.resultSize
- The number of elements needed in the final result.
- Returns:
- The final result with the CRT performed and the carries calculated.
- Throws:
ApfloatRuntimeException