Interface NTTConvolutionStepStrategy

All Known Implementing Classes:
DoubleNTTConvolutionStepStrategy, FloatNTTConvolutionStepStrategy, IntNTTConvolutionStepStrategy, LongNTTConvolutionStepStrategy

public interface NTTConvolutionStepStrategy
Steps for a three-NTT convolution. This includes element-by-element multiplication and squaring of the transformed data.
Since:
1.7.0
Version:
1.7.0
Author:
Mikko Tommila
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    multiplyInPlace(DataStorage sourceAndDestination, DataStorage source, int modulus)
    Linear multiplication in the number theoretic domain.
    void
    squareInPlace(DataStorage sourceAndDestination, int modulus)
    Linear squaring in the number theoretic domain.
  • Method Details

    • multiplyInPlace

      void multiplyInPlace(DataStorage sourceAndDestination, DataStorage source, int modulus) throws ApfloatRuntimeException
      Linear multiplication in the number theoretic domain. The operation is sourceAndDestination[i] *= source[i] (mod m).

      For maximum performance, sourceAndDestination should be in memory if possible.

      Parameters:
      sourceAndDestination - The first source data storage, which is also the destination.
      source - The second source data storage.
      modulus - Which modulus to use (0, 1, 2)
      Throws:
      ApfloatRuntimeException
    • squareInPlace

      void squareInPlace(DataStorage sourceAndDestination, int modulus) throws ApfloatRuntimeException
      Linear squaring in the number theoretic domain. The operation is sourceAndDestination[i] *= sourceAndDestination[i] (mod m).

      For maximum performance, sourceAndDestination should be in memory if possible.

      Parameters:
      sourceAndDestination - The source data storage, which is also the destination.
      modulus - Which modulus to use (0, 1, 2)
      Throws:
      ApfloatRuntimeException