Class Factor3NTTStrategy

    • Constructor Detail

      • Factor3NTTStrategy

        public Factor3NTTStrategy​(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.
    • Method Detail

      • 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
        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
        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
      • getTransformLength

        public long getTransformLength​(long size)
        Description copied from interface: NTTStrategy
        Return the supported transform length for the specified data size.
        Specified by:
        getTransformLength in interface NTTStrategy
        Parameters:
        size - Length of the data to be transformed.
        Returns:
        Length of the transform needed by this transform.