Interface CarryCRTStepStrategy<T>

Type Parameters:
T - The element array type of the carry-CRT steps.
All Known Implementing Classes:
DoubleCarryCRTStepStrategy, FloatCarryCRTStepStrategy, IntCarryCRTStepStrategy, LongCarryCRTStepStrategy

public interface CarryCRTStepStrategy<T>
Interface for performing the steps of a carry-CRT operation in a convolution.
Since:
1.7.0
Version:
1.7.0
Author:
Mikko Tommila
  • Method Summary

    Modifier and Type
    Method
    Description
    carry​(DataStorage dataStorage, long size, long resultSize, long offset, long length, T results, T previousResults)
    Propagate carries from the previous block computed with the CRT method.
    crt​(DataStorage resultMod0, DataStorage resultMod1, DataStorage resultMod2, DataStorage dataStorage, long size, long resultSize, long offset, long length)
    Perform the 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.
  • Method Details

    • crt

      T crt(DataStorage resultMod0, DataStorage resultMod1, DataStorage resultMod2, DataStorage dataStorage, long size, long resultSize, long offset, long length) throws ApfloatRuntimeException
      Perform the 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 for the block of data 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].
      dataStorage - The destination data storage of the computation.
      size - The number of elements in the whole data set.
      resultSize - The number of elements needed in the final result.
      offset - The offset within the data for the block to be computed.
      length - Length of the block to be computed.
      Returns:
      The carries overflowing from this block (two elements).
      Throws:
      ApfloatRuntimeException
    • carry

      T carry(DataStorage dataStorage, long size, long resultSize, long offset, long length, T results, T previousResults) throws ApfloatRuntimeException
      Propagate carries from the previous block computed with the CRT method.
      Parameters:
      dataStorage - The destination data storage of the computation.
      size - The number of elements in the whole data set.
      resultSize - The number of elements needed in the final result.
      offset - The offset within the data for the block to be computed.
      length - Length of the block to be computed.
      results - The carry overflow from this block (two elements).
      previousResults - The carry overflow from the previous block (two elements).
      Returns:
      The carries overflowing from this block (two elements).
      Throws:
      ApfloatRuntimeException