Class DecorableFactor3NTTStrategy

java.lang.Object
org.apfloat.internal.Factor3NTTStrategy
org.apfloat.aparapi.DecorableFactor3NTTStrategy
All Implemented Interfaces:
DecorableNTTStrategy, Parallelizable, NTTStrategy
Direct Known Subclasses:
IntAparapiFactor3NTTStrategy, LongAparapiFactor3NTTStrategy

public class DecorableFactor3NTTStrategy extends Factor3NTTStrategy implements DecorableNTTStrategy
Factor-3 NTT strategy that can be decorated.

Since:
1.15.0
Version:
1.15.0
Author:
Mikko Tommila
  • Constructor Details

    • DecorableFactor3NTTStrategy

      public DecorableFactor3NTTStrategy(NTTStrategy factor2Strategy)
      Creates a new factor-3 transform strategy on top of an existing transform. The underlying transform needs to be capable of only doing transforms of length 2n.
      Parameters:
      factor2Strategy - The underlying transformation strategy, that can be capable of only doing radix-2 transforms.
    • DecorableFactor3NTTStrategy

      public DecorableFactor3NTTStrategy(NTTStrategy factor2Strategy, Factor3NTTStepStrategy stepStrategy)
      Creates a new factor-3 transform strategy on top of an existing factor-2 transform and a factor-3 step strategy.
      Parameters:
      factor2Strategy - The underlying transformation strategy, that can be capable of only doing radix-2 transforms.
      stepStrategy - The factor-3 step strategy.
  • Method Details

    • transform

      public void transform(DataStorage dataStorage, int modulus) throws ApfloatRuntimeException
      Description copied from interface: NTTStrategy
      Perform a forward transform on the data.

      Multiple moduli can be used, if the convolution algorithm uses the Chinese Remainder Theorem to calculate the final result.

      Specified by:
      transform in interface NTTStrategy
      Overrides:
      transform in class Factor3NTTStrategy
      Parameters:
      dataStorage - The data to be transformed.
      modulus - Number of modulus to use (in case the transform supports multiple moduli).
      Throws:
      ApfloatRuntimeException
    • inverseTransform

      public void inverseTransform(DataStorage dataStorage, int modulus, long totalTransformLength) throws ApfloatRuntimeException
      Description copied from interface: NTTStrategy
      Perform an inverse transform on the data.

      Multiple moduli can be used, if the convolution algorithm uses the Chinese Remainder Theorem to calculate the final result.

      Specified by:
      inverseTransform in interface NTTStrategy
      Overrides:
      inverseTransform in class Factor3NTTStrategy
      Parameters:
      dataStorage - The data to be transformed.
      modulus - Number of modulus to use (in case the transform supports multiple moduli).
      totalTransformLength - Total transform length; the final result elements are divided by this value.
      Throws:
      ApfloatRuntimeException