jfftw.real
Class Plan

java.lang.Object
  |
  +--jfftw.real.Plan
All Implemented Interfaces:
Plan

public class Plan
extends java.lang.Object
implements Plan

Corresponds to an FFTW rfftw_plan (plan for real one dimensional transforms) structure. A plan is a choice of algorithm to optimally compute transforms for a given length of data. Once you have a Plan you can use it to compute a number of transforms for data of the same size. Creating a plan results in collection of much information, that will be reused at succeding creation of plans.

For more information see the FFTW documentation. The FFTW library is work of MIT. The jfftw package is work of Daniel Darabos (cyhawk@sch.bme.hu). Both have GPL licenses.


Field Summary
 
Fields inherited from interface jfftw.Plan
BACKWARD, COMPLEX_TO_REAL, ESTIMATE, FORWARD, IN_PLACE, MEASURE, READONLY, REAL_TO_COMPLEX, USE_WISDOM
 
Constructor Summary
Plan(int n)
          Constructs a real-to-complex (see REAL_TO_COMPLEX) Plan for the given length n based on estimations (see ESTIMATE).
Plan(int n, int dir)
          Constructs a Plan for the given length n and direction dir based on estimations (see ESTIMATE).
Plan(int n, int dir, int flags)
          Constructs a Plan for the given length n, direction dir and initialization flags.
Plan(int n, int dir, int flags, double[] in, int idist, double[] out, int odist)
          Constructs a Plan for the given length n, direction dir, initialization flags and actual input/output arrays.
 
Method Summary
protected  void finalize()
          Destroys the rfftw_plan structure.
 double[] transform(double[] in)
          Calculates the Fourier transform of in.
 void transform(int howmany, double[] in, int istride, int idist, double[] out, int ostride, int odist)
          Calculates multiple Fourier transforms.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Plan

public Plan(int n,
            int dir,
            int flags,
            double[] in,
            int idist,
            double[] out,
            int odist)
Constructs a Plan for the given length n, direction dir, initialization flags and actual input/output arrays. The contents of the arrays are not used (they can be uninitialized) but will be destroyed.

(See FFTW documentation on rfftw_create_plan_specific for more insight.)

Parameters:
dir - One of Plan.REAL_TO_COMPLEX and Plan.COMPLEX_TO_REAL.
flags - One of Plan.ESTIMATE (default) and Plan.MEASURE optionally OR'ed with Plan.USE_WISDOM, Plan.IN_PLACE and Plan.READONLY. Any other flag constants from fftw.h might be working, but jfftw has not been tested with them.
Throws:
java.lang.RuntimeException - if the double type of Java is not of the same size as fftw_real. (If this is the case, the library will need to be modified and recompiled. If FFTW was compiled with FFTW_ENABLE_FLOAT all double types should be changed to float in the Java and native source -- or recompile FFTW without FFTW_ENABLE_FLOAT.)

Plan

public Plan(int n,
            int dir,
            int flags)
Constructs a Plan for the given length n, direction dir and initialization flags.

Parameters:
dir - One of Plan.REAL_TO_COMPLEX and Plan.COMPLEX_TO_REAL.
flags - One of Plan.ESTIMATE (default) and Plan.MEASURE optionally OR'ed with Plan.USE_WISDOM, Plan.IN_PLACE and Plan.READONLY. Any other flag constants from fftw.h might be working, but jfftw has not been tested with them.
Throws:
java.lang.RuntimeException - if the double type of Java is not of the same size as fftw_real. (If this is the case, the library will need to be modified and recompiled. If FFTW was compiled with FFTW_ENABLE_FLOAT all double types should be changed to float in the Java and native source -- or recompile FFTW without FFTW_ENABLE_FLOAT.)

Plan

public Plan(int n,
            int dir)
Constructs a Plan for the given length n and direction dir based on estimations (see ESTIMATE). Same as Plan( n, dir, Plan.ESTIMATE ).

Parameters:
dir - One of Plan.REAL_TO_COMPLEX and Plan.COMPLEX_TO_REAL.
Throws:
java.lang.RuntimeException - if the double type of Java is not of the same size as fftw_real. (If this is the case, the library will need to be modified and recompiled. If FFTW was compiled with FFTW_ENABLE_FLOAT all double types should be changed to float in the Java and native source -- or recompile FFTW without FFTW_ENABLE_FLOAT.)

Plan

public Plan(int n)
Constructs a real-to-complex (see REAL_TO_COMPLEX) Plan for the given length n based on estimations (see ESTIMATE). Same as Plan( n, Plan.REAL_TO_COMPLEX, Plan.ESTIMATE ).

Throws:
java.lang.RuntimeException - if the double type of Java is not of the same size as fftw_real. (If this is the case, the library will need to be modified and recompiled. If FFTW was compiled with FFTW_ENABLE_FLOAT all double types should be changed to float in the Java and native source -- or recompile FFTW without FFTW_ENABLE_FLOAT.)
Method Detail

finalize

protected void finalize()
Destroys the rfftw_plan structure.

Overrides:
finalize in class java.lang.Object

transform

public double[] transform(double[] in)
Calculates the Fourier transform of in.

(See FFTW documentation for details. The function behind it is rfftw_one.)

Specified by:
transform in interface Plan
Returns:
the resulting array which is of the same size as in.
Throws:
java.lang.IndexOutOfBoundsException - if in is not of the size that was passed to the constructor.

transform

public void transform(int howmany,
                      double[] in,
                      int istride,
                      int idist,
                      double[] out,
                      int ostride,
                      int odist)
Calculates multiple Fourier transforms.

(See FFTW documentation for details. The function behind it is rfftw, the arguments are mapped to rfftw's arguments of the same name.)

Specified by:
transform in interface Plan
Throws:
java.lang.IndexOutOfBoundsException - if in or out are not of the proper size.