Package org.ojalgo.data.transform
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
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.ojalgo.data.transform.DiscreteFourierTransform
DiscreteFourierTransform.Directive, DiscreteFourierTransform.FFT, DiscreteFourierTransform.FullMatrix, DiscreteFourierTransform.Single
-
-
Field Summary
Fields Modifier and Type Field Description private int[]
myBitReversedIndices
private int
myStages
private ComplexNumber[]
myUnitRoots
private double[]
myWorkIm
private double[]
myWorkRe
-
Fields inherited from class org.ojalgo.data.transform.DiscreteFourierTransform
DEFAULT, INVERSE
-
-
Constructor Summary
Constructors Constructor Description FFT(int size)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
doStages(int nbStages, ComplexNumber[] roots, double[] workRe, double[] workIm)
Perform the remaining stage calculations (stage>=1).private static void
setup0(double[] input, double[] workRe, double[] workIm)
private static void
setup0(Access1D<?> input, boolean complex, boolean conjugate, double[] workRe, double[] workIm)
private static void
setup1(double[] input, double[] workRe, double[] workIm)
private static void
setup1(Access1D<?> input, boolean complex, boolean conjugate, double[] workRe, double[] workIm)
private static void
setup2(double[] input, int[] reversed, double[] workRe, double[] workIm)
private static void
setup2(Access1D<?> input, boolean complex, boolean conjugate, int[] reversed, double[] workRe, double[] workIm)
private static void
toOutput(double[] workRe, double[] workIm, boolean conjugate, boolean scale, Mutate2D.ModifiableReceiver<ComplexNumber> output)
Copy the results to the output data structure.private static void
toWork(int index1, int index2, double re1, double im1, double re2, double im2, double[] workRe, double[] workIm)
MatrixStore<ComplexNumber>
transform(double... input)
void
transform(Access1D<?> input, DiscreteFourierTransform.Directive directive, Mutate2D.ModifiableReceiver<ComplexNumber> output)
private static void
update(double[] workRe, double[] workIm, int index1, int index2)
private static void
update(double[] workRe, double[] workIm, int index1, int index2, ComplexNumber scalar)
-
Methods inherited from class org.ojalgo.data.transform.DiscreteFourierTransform
generate, getBitReversedIndices, getUnitRoots, inverse, inverse, inverse2D, lookupIndices, lookupRoots, newInstance, newVandermonde, newVandermondeMatrix, sample, sample, shift, size, toPowerOf2Exponent, transform, transform, transform2D, transform2D
-
-
-
-
Field Detail
-
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
-
-
Method Detail
-
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 classDiscreteFourierTransform
-
transform
public MatrixStore<ComplexNumber> transform(double... input)
- Overrides:
transform
in classDiscreteFourierTransform
-
-