Class DiscreteFourierTransform.FFT

java.lang.Object
org.ojalgo.data.transform.DiscreteFourierTransform
org.ojalgo.data.transform.DiscreteFourierTransform.FFT
All Implemented Interfaces:
DataTransform<Access1D<?>,MatrixStore<ComplexNumber>>
Enclosing class:
DiscreteFourierTransform

static final class DiscreteFourierTransform.FFT extends DiscreteFourierTransform
  • Field Details

    • myBitReversedIndices

      private final int[] myBitReversedIndices
    • myStages

      private final int myStages
    • myUnitRoots

      private final ComplexNumber[] myUnitRoots
    • myWorkIm

      private final double[] myWorkIm
    • myWorkRe

      private final double[] myWorkRe
  • Constructor Details

    • FFT

      FFT(int size)
  • Method Details

    • doStages

      private static void doStages(int nbStages, ComplexNumber[] roots, double[] workRe, double[] workIm)
      Perform the remaining stage calculations (stage>=1). This is essentially "the algorithm".
    • setup0

      private static void setup0(Access1D<?> input, boolean complex, boolean conjugate, double[] workRe, double[] workIm)
    • setup0

      private static void setup0(double[] input, double[] workRe, double[] workIm)
    • setup1

      private static void setup1(Access1D<?> input, boolean complex, boolean conjugate, double[] workRe, double[] workIm)
    • setup1

      private static void setup1(double[] input, double[] workRe, double[] workIm)
    • setup2

      private static void setup2(Access1D<?> input, boolean complex, boolean conjugate, int[] reversed, double[] workRe, double[] workIm)
    • setup2

      private static void setup2(double[] input, int[] reversed, double[] workRe, double[] workIm)
    • toOutput

      private static void toOutput(double[] workRe, double[] workIm, boolean conjugate, boolean scale, Mutate2D.ModifiableReceiver<ComplexNumber> output)
      Copy the results to the output data structure. In the copy-process transformations are performed.
    • toWork

      private static void toWork(int index1, int index2, double re1, double im1, double re2, double im2, double[] workRe, double[] workIm)
    • update

      private static void update(double[] workRe, double[] workIm, int index1, int index2)
    • update

      private static void update(double[] workRe, double[] workIm, int index1, int index2, ComplexNumber scalar)
    • transform

      public void transform(Access1D<?> input, DiscreteFourierTransform.Directive directive, Mutate2D.ModifiableReceiver<ComplexNumber> output)
      Specified by:
      transform in class DiscreteFourierTransform
    • transform

      public MatrixStore<ComplexNumber> transform(double... input)
      Overrides:
      transform in class DiscreteFourierTransform