// NIST-developed software is provided by NIST as a public service. You may use, copy and distribute copies of the software in any medium, provided that you keep intact this entire notice. You may improve, modify and create derivative works of the software or any portion of the software, and you may copy and distribute such modifications or works. Modified works should carry a notice stating that you changed the software and should note the date and nature of any such change. Please explicitly acknowledge the National Institute of Standards and Technology as the source of the software.

// NIST-developed software is expressly provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, RELIABILITY, OR USEFULNESS OF THE SOFTWARE.

// You are solely responsible for determining the appropriateness of using and distributing the software and you assume all risks associated with its use, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and the unavailability or interruption of operation. This software is not intended to be used in any situation where a failure could cause risk of injury or damage to property. The software developed by NIST employees is not subject to copyright protection within the United States.



// ================================================================
//
// Author: tjb3
// Date: Aug 1, 2013 3:30:25 PM EST
//
// Time-stamp: <Aug 1, 2013 3:30:25 PM tjb3>
//
//
// ================================================================

package gov.nist.isg.mist.lib.imagetile.fftw;

import org.bridj.BridJ;
import org.bridj.CRuntime;
import org.bridj.Pointer;
import org.bridj.TypedPointer;
import org.bridj.ann.CLong;
import org.bridj.ann.Library;
import org.bridj.ann.Name;
import org.bridj.ann.Ptr;
import org.bridj.ann.Runtime;

/**
 * Wrapper for library <b>FFTW3</b><br> This file was autogenerated by <a
 * href="http://jnaerator.googlecode.com/">JNAerator</a>,<br> a tool written by <a
 * href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses
 * a few opensource projects.</a>.<br> For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a>
 * or <a href="http://bridj.googlecode.com/">BridJ</a> .
 */
@Library("fftw")
@Runtime(CRuntime.class)
@SuppressWarnings({"rawtypes", "unchecked", "deprecation"})
public class FFTW3Library {
  static {
    BridJ.register();
  }

//  /**
//   * enum values<br> <i>native declaration : /usr/local/include/fftw3.h:754</i>
//   */
//  public enum fftw_r2r_kind_do_not_use_me implements IntValuedEnum<fftw_r2r_kind_do_not_use_me> {
//
//    /**
//     * The FFT w_ r2 hc.
//     */
//    FFTW_R2HC(0),
//    /**
//     * The FFT w_ h c2 r.
//     */
//    FFTW_HC2R(1),
//    /**
//     * The fftw dht.
//     */
//    FFTW_DHT(2),
//    /**
//     * The FFT w_ redf t00.
//     */
//    FFTW_REDFT00(3),
//    /**
//     * The FFT w_ redf t01.
//     */
//    FFTW_REDFT01(4),
//    /**
//     * The FFT w_ redf t10.
//     */
//    FFTW_REDFT10(5),
//    /**
//     * The FFT w_ redf t11.
//     */
//    FFTW_REDFT11(6),
//    /**
//     * The FFT w_ rodf t00.
//     */
//    FFTW_RODFT00(7),
//    /**
//     * The FFT w_ rodf t01.
//     */
//    FFTW_RODFT01(8),
//    /**
//     * The FFT w_ rodf t10.
//     */
//    FFTW_RODFT10(9),
//    /**
//     * The FFT w_ rodf t11.
//     */
//    FFTW_RODFT11(10);
//
//    /**
//     * Instantiates a new fftw_r2r_kind_do_not_use_me.
//     *
//     * @param value the value
//     */
//    fftw_r2r_kind_do_not_use_me(long value) {
//      this.value = value;
//    }
//
//    /**
//     * The value.
//     */
//    public final long value;
//
//    /*
//     * (non-Javadoc)
//     *
//     * @see org.bridj.ValuedEnum#value()
//     */
//    @Override
//    public long value() {
//      return this.value;
//    }
//
//    /*
//     * (non-Javadoc)
//     *
//     * @see java.lang.Iterable#iterator()
//     */
//    @Override
//    public Iterator<fftw_r2r_kind_do_not_use_me> iterator() {
//      return Collections.singleton(this).iterator();
//    }
//
//    /**
//     * From value.
//     *
//     * @param value the value
//     * @return the int valued enum
//     */
//    public static IntValuedEnum<fftw_r2r_kind_do_not_use_me> fromValue(int value) {
//      return FlagSet.fromValue(value, values());
//    }
//  }

//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_NONTHREADED.
//   */
//  public static final int FFTW_NO_NONTHREADED = 1 << 10;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_SLOW.
//   */
//  public static final int FFTW_NO_SLOW = 1 << 18;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_VRECURSE.
//   */
//  public static final int FFTW_NO_VRECURSE = 1 << 16;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_BUFFERING.
//   */
//  public static final int FFTW_NO_BUFFERING = 1 << 11;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_TIMELIMIT.
//   */
//  public static final double FFTW_NO_TIMELIMIT = (-1.0);
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_INDIRECT_OP.
//   */
//  public static final int FFTW_NO_INDIRECT_OP = 1 << 12;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_FORWARD.
//   */
//  public static final int FFTW_FORWARD = (-1);
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
  /**
   * The Constant FFTW_MEASURE.
   */
  public static final int FFTW_MEASURE = (0);
  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_SIMD.
//   */
//  public static final int FFTW_NO_SIMD = 1 << 17;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_RANK_SPLITS.
//   */
//  public static final int FFTW_NO_RANK_SPLITS = 1 << 14;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_ALLOW_LARGE_GENERIC.
//   */
//  public static final int FFTW_ALLOW_LARGE_GENERIC = 1 << 13;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_BELIEVE_PCOST.
//   */
//  public static final int FFTW_BELIEVE_PCOST = 1 << 8;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_FIXED_RADIX_LARGE_N.
//   */
//  public static final int FFTW_NO_FIXED_RADIX_LARGE_N = 1 << 19;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_BACKWARD.
//   */
//  public static final int FFTW_BACKWARD = (+1);
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_DESTROY_INPUT.
//   */
//  public static final int FFTW_DESTROY_INPUT = 1 << 0;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_UNALIGNED.
//   */
//  public static final int FFTW_UNALIGNED = 1 << 1;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_ESTIMATE_PATIENT.
//   */
//  public static final int FFTW_ESTIMATE_PATIENT = 1 << 7;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_DFT_R2HC.
//   */
//  public static final int FFTW_NO_DFT_R2HC = 1 << 9;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_PRESERVE_INPUT.
//   */
//  public static final int FFTW_PRESERVE_INPUT = 1 << 4;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_CONSERVE_MEMORY.
//   */
//  public static final int FFTW_CONSERVE_MEMORY = 1 << 2;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
  /**
   * The Constant FFTW_EXHAUSTIVE.
   */
  public static final int FFTW_EXHAUSTIVE = 1 << 3;
  // / <i>native declaration : /usr/local/include/fftw3.h</i>
  /**
   * The Constant FFTW_ESTIMATE.
   */
  public static final int FFTW_ESTIMATE = 1 << 6;
  // / <i>native declaration : /usr/local/include/fftw3.h</i>
  /**
   * The Constant FFTW_PATIENT.
   */
  public static final int FFTW_PATIENT = 1 << 5;
  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_NO_VRANK_SPLITS.
//   */
//  public static final int FFTW_NO_VRANK_SPLITS = 1 << 15;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_WISDOM_ONLY.
//   */
//  public static final int FFTW_WISDOM_ONLY = 1 << 21;
//  // / <i>native declaration : /usr/local/include/fftw3.h</i>
//  /**
//   * The Constant FFTW_ALLOW_PRUNING.
//   */
//  public static final int FFTW_ALLOW_PRUNING = 1 << 20;

  // / <i>native declaration : /usr/local/include/fftw3.h:759</i>
  // / <i>native declaration : /usr/local/include/fftw3.h:759</i>

//  /**
//   * The Class fftw_iodim_do_not_use_me.
//   */
//  public static class fftw_iodim_do_not_use_me extends StructObject {
//    // / dimension size
//
//    /**
//     * N.
//     *
//     * @return the int
//     */
//    @Field(0)
//    public int n() {
//      return this.io.getIntField(this, 0);
//    }
//
//    // / dimension size
//
//    /**
//     * N.
//     *
//     * @param n the n
//     * @return the fftw_iodim_do_not_use_me
//     */
//    @Field(0)
//    public fftw_iodim_do_not_use_me n(int n) {
//      this.io.setIntField(this, 0, n);
//      return this;
//    }
//
//    // / input stride
//
//    /**
//     * Checks if is.
//     *
//     * @return the int
//     */
//    @Field(1)
//    public int is() {
//      return this.io.getIntField(this, 1);
//    }
//
//    // / input stride
//
//    /**
//     * Checks if is.
//     *
//     * @param is the is
//     * @return the fftw_iodim_do_not_use_me
//     */
//    @Field(1)
//    public fftw_iodim_do_not_use_me is(int is) {
//      this.io.setIntField(this, 1, is);
//      return this;
//    }
//
//    // / output stride
//
//    /**
//     * Os.
//     *
//     * @return the int
//     */
//    @Field(2)
//    public int os() {
//      return this.io.getIntField(this, 2);
//    }
//
//    // / output stride
//
//    /**
//     * Os.
//     *
//     * @param os the os
//     * @return the fftw_iodim_do_not_use_me
//     */
//    @Field(2)
//    public fftw_iodim_do_not_use_me os(int os) {
//      this.io.setIntField(this, 2, os);
//      return this;
//    }
//
//    /**
//     * Instantiates a new fftw_iodim_do_not_use_me.
//     */
//    public fftw_iodim_do_not_use_me() {
//    }
//
//    /**
//     * Instantiates a new fftw_iodim_do_not_use_me.
//     *
//     * @param pointer the pointer
//     */
//    public fftw_iodim_do_not_use_me(Pointer pointer) {
//      super(pointer);
//    }
//  }

  // / <i>native declaration : /usr/local/include/fftw3.h:764</i>
  // / <i>native declaration : /usr/local/include/fftw3.h:764</i>

//  /**
//   * The Class fftw_iodim64_do_not_use_me.
//   */
//  public static class fftw_iodim64_do_not_use_me extends StructObject {
//    // / dimension size
//
//    /**
//     * N.
//     *
//     * @return the long
//     */
//    @CLong
//    @Field(0)
//    public long n() {
//      return this.io.getCLongField(this, 0);
//    }
//
//    // / dimension size
//
//    /**
//     * N.
//     *
//     * @param n the n
//     * @return the fftw_iodim64_do_not_use_me
//     */
//    @CLong
//    @Field(0)
//    public fftw_iodim64_do_not_use_me n(long n) {
//      this.io.setCLongField(this, 0, n);
//      return this;
//    }
//
//    // / input stride
//
//    /**
//     * Checks if is.
//     *
//     * @return the long
//     */
//    @CLong
//    @Field(1)
//    public long is() {
//      return this.io.getCLongField(this, 1);
//    }
//
//    // / input stride
//
//    /**
//     * Checks if is.
//     *
//     * @param is the is
//     * @return the fftw_iodim64_do_not_use_me
//     */
//    @CLong
//    @Field(1)
//    public fftw_iodim64_do_not_use_me is(long is) {
//      this.io.setCLongField(this, 1, is);
//      return this;
//    }
//
//    // / output stride
//
//    /**
//     * Os.
//     *
//     * @return the long
//     */
//    @CLong
//    @Field(2)
//    public long os() {
//      return this.io.getCLongField(this, 2);
//    }
//
//    // / output stride
//
//    /**
//     * Os.
//     *
//     * @param os the os
//     * @return the fftw_iodim64_do_not_use_me
//     */
//    @CLong
//    @Field(2)
//    public fftw_iodim64_do_not_use_me os(long os) {
//      this.io.setCLongField(this, 2, os);
//      return this;
//    }
//
//    /**
//     * Instantiates a new fftw_iodim64_do_not_use_me.
//     */
//    public fftw_iodim64_do_not_use_me() {
//    }
//
//    /**
//     * Instantiates a new fftw_iodim64_do_not_use_me.
//     *
//     * @param pointer the pointer
//     */
//    public fftw_iodim64_do_not_use_me(Pointer pointer) {
//      super(pointer);
//    }
//  }

  // / <i>native declaration : /usr/local/include/fftw3.h:765</i>
  // / <i>native declaration : /usr/local/include/fftw3.h:765</i>

//  /**
//   * The Class fftw_write_char_func_do_not_use_me.
//   */
//  public static abstract class fftw_write_char_func_do_not_use_me extends
//      Callback<fftw_write_char_func_do_not_use_me> {
//
//    /**
//     * Apply.
//     *
//     * @param c        the c
//     * @param voidPtr1 the void ptr1
//     */
//    abstract public void apply(byte c, Pointer<?> voidPtr1);
//  }

  // / <i>native declaration : /usr/local/include/fftw3.h:766</i>
  // / <i>native declaration : /usr/local/include/fftw3.h:766</i>
//
//  /**
//   * The Class fftw_read_char_func_do_not_use_me.
//   */
//  public static abstract class fftw_read_char_func_do_not_use_me extends
//      Callback<fftw_read_char_func_do_not_use_me> {
//
//    /**
//     * Apply.
//     *
//     * @param voidPtr1 the void ptr1
//     * @return the int
//     */
//    abstract public int apply(Pointer<?> voidPtr1);
//  }

//  /**
//   * Original signature : <code>void fftw_execute(const fftw_plan)</code><br> <i>native declaration
//   * : /usr/local/include/fftw3.h:776</i>
//   *
//   * @param p the p
//   */
//  public static void fftw_execute(FFTW3Library.fftw_plan p) {
//    fftw_execute(Pointer.getPeer(p));
//  }
//
//  /**
//   * Fftw_execute.
//   *
//   * @param p the p
//   */
//  protected native static void fftw_execute(@Ptr long p);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft(int, const int*, double*, double*, int,
//   * unsigned)</code><br> <i>native declaration : /usr/local/include/fftw3.h:778</i>
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft(int rank, Pointer<Integer> n,
//                                                     Pointer<Double> in, Pointer<Double> out, int sign, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft(rank, Pointer.getPeer(n), Pointer.getPeer(in),
//        Pointer.getPeer(out), sign, flags));
//
//  }
//
//  /**
//   * Fftw_plan_dft.
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft(int rank, @Ptr long n, @Ptr long in, @Ptr long out,
//                                             int sign, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_1d(int, double*, double*, int,
//   * unsigned)</code><br> <i>native declaration : /usr/local/include/fftw3.h:780</i>
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_1d(int n, Pointer<Double> in,
//                                                        Pointer<Double> out, int sign, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_1d(n, Pointer.getPeer(in),
//        Pointer.getPeer(out), sign, flags));
//  }
//
//  /**
//   * Fftw_plan_dft_1d.
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_1d(int n, @Ptr long in, @Ptr long out, int sign,
//                                                int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_2d(int, int, double*, double*, int,
//   * unsigned)</code><br> <i>native declaration : /usr/local/include/fftw3.h:782</i>
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_2d(int n0, int n1, Pointer<Double> in,
//                                                        Pointer<Double> out, int sign, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_2d(n0, n1, Pointer.getPeer(in),
//        Pointer.getPeer(out), sign, flags));
//  }
//
//  /**
//   * Fftw_plan_dft_2d.
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_2d(int n0, int n1, @Ptr long in, @Ptr long out,
//                                                int sign, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_3d(int, int, int, double*, double*, int,
//   * unsigned)</code><br> <i>native declaration : /usr/local/include/fftw3.h:784</i>
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_3d(int n0, int n1, int n2, Pointer<Double> in,
//                                                        Pointer<Double> out, int sign, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_3d(n0, n1, n2, Pointer.getPeer(in),
//        Pointer.getPeer(out), sign, flags));
//  }
//
//  /**
//   * Fftw_plan_dft_3d.
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param sign  the sign
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_3d(int n0, int n1, int n2, @Ptr long in,
//                                                @Ptr long out, int sign, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_many_dft(int, const int*, int, double*, const
//   * int*, int, int, double*, const int*, int, int, int, unsigned)</code><br> <i>native declaration
//   * : /usr/local/include/fftw3.h:786</i>
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param sign    the sign
//   * @param flags   the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_many_dft(int rank, Pointer<Integer> n,
//                                                          int howmany, Pointer<Double> in, Pointer<Integer> inembed, int istride, int idist,
//                                                          Pointer<Double> out, Pointer<Integer> onembed, int ostride, int odist, int sign, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_many_dft(rank, Pointer.getPeer(n), howmany,
//        Pointer.getPeer(in), Pointer.getPeer(inembed), istride, idist, Pointer.getPeer(out),
//        Pointer.getPeer(onembed), ostride, odist, sign, flags));
//  }
//
//  /**
//   * Fftw_plan_many_dft.
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param sign    the sign
//   * @param flags   the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_many_dft(int rank, @Ptr long n, int howmany, @Ptr long in,
//                                                  @Ptr long inembed, int istride, int idist, @Ptr long out, @Ptr long onembed, int ostride,
//                                                  int odist, int sign, int flags);
//
//  /**
//   * Fftw_plan_guru_dft.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param sign         the sign
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_dft(int rank, @Ptr long dims, int howmany_rank,
//                                                  @Ptr long howmany_dims, @Ptr long in, @Ptr long out, int sign, int flags);
//
//  /**
//   * Fftw_plan_guru_split_dft.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param ri           the ri
//   * @param ii           the ii
//   * @param ro           the ro
//   * @param io           the io
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_split_dft(int rank, @Ptr long dims, int howmany_rank,
//                                                        @Ptr long howmany_dims, @Ptr long ri, @Ptr long ii, @Ptr long ro, @Ptr long io, int flags);
//
//  /**
//   * Fftw_plan_guru64_dft.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param sign         the sign
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_dft(int rank, @Ptr long dims, int howmany_rank,
//                                                    @Ptr long howmany_dims, @Ptr long in, @Ptr long out, int sign, int flags);
//
//  /**
//   * Fftw_plan_guru64_split_dft.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param ri           the ri
//   * @param ii           the ii
//   * @param ro           the ro
//   * @param io           the io
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_split_dft(int rank, @Ptr long dims,
//                                                          int howmany_rank, @Ptr long howmany_dims, @Ptr long ri, @Ptr long ii, @Ptr long ro,
//                                                          @Ptr long io, int flags);
//
//  /**
//   * Original signature : <code>void fftw_execute_dft(const fftw_plan, double*, double*)</code><br>
//   * <i>native declaration : /usr/local/include/fftw3.h:796</i>
//   *
//   * @param p   the p
//   * @param in  the in
//   * @param out the out
//   */
//  public static void fftw_execute_dft(FFTW3Library.fftw_plan p, Pointer<Double> in,
//                                      Pointer<Double> out) {
//    fftw_execute_dft(Pointer.getPeer(p), Pointer.getPeer(in), Pointer.getPeer(out));
//  }
//
//  /**
//   * Fftw_execute_dft.
//   *
//   * @param p   the p
//   * @param in  the in
//   * @param out the out
//   */
//  protected native static void fftw_execute_dft(@Ptr long p, @Ptr long in, @Ptr long out);
//
//  /**
//   * Original signature : <code>void fftw_execute_split_dft(const fftw_plan, double*, double*,
//   * double*, double*)</code><br> <i>native declaration : /usr/local/include/fftw3.h:798</i>
//   *
//   * @param p  the p
//   * @param ri the ri
//   * @param ii the ii
//   * @param ro the ro
//   * @param io the io
//   */
//  public static void fftw_execute_split_dft(FFTW3Library.fftw_plan p, Pointer<Double> ri,
//                                            Pointer<Double> ii, Pointer<Double> ro, Pointer<Double> io) {
//    fftw_execute_split_dft(Pointer.getPeer(p), Pointer.getPeer(ri), Pointer.getPeer(ii),
//        Pointer.getPeer(ro), Pointer.getPeer(io));
//  }
//
//  /**
//   * Fftw_execute_split_dft.
//   *
//   * @param p  the p
//   * @param ri the ri
//   * @param ii the ii
//   * @param ro the ro
//   * @param io the io
//   */
//  protected native static void fftw_execute_split_dft(@Ptr long p, @Ptr long ri, @Ptr long ii,
//                                                      @Ptr long ro, @Ptr long io);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_many_dft_r2c(int, const int*, int, double*,
//   * const int*, int, int, double*, const int*, int, int, unsigned)</code><br> <i>native declaration
//   * : /usr/local/include/fftw3.h:800</i>
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param flags   the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_many_dft_r2c(int rank, Pointer<Integer> n,
//                                                              int howmany, Pointer<Double> in, Pointer<Integer> inembed, int istride, int idist,
//                                                              Pointer<Double> out, Pointer<Integer> onembed, int ostride, int odist, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_many_dft_r2c(rank, Pointer.getPeer(n), howmany,
//        Pointer.getPeer(in), Pointer.getPeer(inembed), istride, idist, Pointer.getPeer(out),
//        Pointer.getPeer(onembed), ostride, odist, flags));
//  }
//
//  /**
//   * Fftw_plan_many_dft_r2c.
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param flags   the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_many_dft_r2c(int rank, @Ptr long n, int howmany,
//                                                      @Ptr long in, @Ptr long inembed, int istride, int idist, @Ptr long out, @Ptr long onembed,
//                                                      int ostride, int odist, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_r2c(int, const int*, double*, double*,
//   * unsigned)</code><br> <i>native declaration : /usr/local/include/fftw3.h:802</i>
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_r2c(int rank, Pointer<Integer> n,
//                                                         Pointer<Double> in, Pointer<Double> out, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_r2c(rank, Pointer.getPeer(n),
//        Pointer.getPeer(in), Pointer.getPeer(out), flags));
//  }
//
//  /**
//   * Fftw_plan_dft_r2c.
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_r2c(int rank, @Ptr long n, @Ptr long in,
//                                                 @Ptr long out, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_r2c_1d(int, double*, double*,
//   * unsigned)</code><br> <i>native declaration : /usr/local/include/fftw3.h:804</i>
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_r2c_1d(int n, Pointer<Double> in,
//                                                            Pointer<Double> out, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_r2c_1d(n, Pointer.getPeer(in),
//        Pointer.getPeer(out), flags));
//  }
//
//  /**
//   * Fftw_plan_dft_r2c_1d.
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_r2c_1d(int n, @Ptr long in, @Ptr long out, int flags);

  /**
   * Original signature : <code>fftw_plan fftw_plan_dft_r2c_2d(int, int, double*, double*,
   * unsigned)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:806</i>
   *
   * @param n0    the n0
   * @param n1    the n1
   * @param in    the in
   * @param out   the out
   * @param flags the flags
   * @return the FFT w3 library.fftw_plan
   */
  public static FFTW3Library.fftw_plan fftw_plan_dft_r2c_2d(int n0, int n1, Pointer<Double> in,
                                                            Pointer<Double> out, int flags) {
    return new FFTW3Library.fftw_plan(fftw_plan_dft_r2c_2d(n0, n1, Pointer.getPeer(in),
        Pointer.getPeer(out), flags));
  }

  /**
   * Fftw_plan_dft_r2c_2d.
   *
   * @param n0    the n0
   * @param n1    the n1
   * @param in    the in
   * @param out   the out
   * @param flags the flags
   * @return the long
   */
  @Ptr
  protected native static long fftw_plan_dft_r2c_2d(int n0, int n1, @Ptr long in, @Ptr long out,
                                                    int flags);

//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_r2c_3d(int, int, int, double*, double*,
//   * unsigned)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:808</i>
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_r2c_3d(int n0, int n1, int n2,
//                                                            Pointer<Double> in, Pointer<Double> out, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_r2c_3d(n0, n1, n2, Pointer.getPeer(in),
//        Pointer.getPeer(out), flags));
//  }
//
//  /**
//   * Fftw_plan_dft_r2c_3d.
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_r2c_3d(int n0, int n1, int n2, @Ptr long in,
//                                                    @Ptr long out, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_many_dft_c2r(int, const int*, int, double*,
//   * const int*, int, int, double*, const int*, int, int, unsigned)</code> <br> <i>native
//   * declaration : /usr/local/include/fftw3.h:810</i>
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param flags   the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_many_dft_c2r(int rank, Pointer<Integer> n,
//                                                              int howmany, Pointer<Double> in, Pointer<Integer> inembed, int istride, int idist,
//                                                              Pointer<Double> out, Pointer<Integer> onembed, int ostride, int odist, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_many_dft_c2r(rank, Pointer.getPeer(n), howmany,
//        Pointer.getPeer(in), Pointer.getPeer(inembed), istride, idist, Pointer.getPeer(out),
//        Pointer.getPeer(onembed), ostride, odist, flags));
//  }
//
//  /**
//   * Fftw_plan_many_dft_c2r.
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param flags   the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_many_dft_c2r(int rank, @Ptr long n, int howmany,
//                                                      @Ptr long in, @Ptr long inembed, int istride, int idist, @Ptr long out, @Ptr long onembed,
//                                                      int ostride, int odist, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_c2r(int, const int*, double*, double*,
//   * unsigned)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:812</i>
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_c2r(int rank, Pointer<Integer> n,
//                                                         Pointer<Double> in, Pointer<Double> out, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_c2r(rank, Pointer.getPeer(n),
//        Pointer.getPeer(in), Pointer.getPeer(out), flags));
//  }
//
//  /**
//   * Fftw_plan_dft_c2r.
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_c2r(int rank, @Ptr long n, @Ptr long in,
//                                                 @Ptr long out, int flags);
//
//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_c2r_1d(int, double*, double*,
//   * unsigned)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:814</i>
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_c2r_1d(int n, Pointer<Double> in,
//                                                            Pointer<Double> out, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_c2r_1d(n, Pointer.getPeer(in),
//        Pointer.getPeer(out), flags));
//  }
//
//  /**
//   * Fftw_plan_dft_c2r_1d.
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_c2r_1d(int n, @Ptr long in, @Ptr long out, int flags);

  /**
   * Original signature : <code>fftw_plan fftw_plan_dft_c2r_2d(int, int, double*, double*,
   * unsigned)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:816</i>
   *
   * @param n0    the n0
   * @param n1    the n1
   * @param in    the in
   * @param out   the out
   * @param flags the flags
   * @return the FFT w3 library.fftw_plan
   */
  public static FFTW3Library.fftw_plan fftw_plan_dft_c2r_2d(int n0, int n1, Pointer<Double> in,
                                                            Pointer<Double> out, int flags) {
    return new FFTW3Library.fftw_plan(fftw_plan_dft_c2r_2d(n0, n1, Pointer.getPeer(in),
        Pointer.getPeer(out), flags));
  }

  /**
   * Fftw_plan_dft_c2r_2d.
   *
   * @param n0    the n0
   * @param n1    the n1
   * @param in    the in
   * @param out   the out
   * @param flags the flags
   * @return the long
   */
  @Ptr
  protected native static long fftw_plan_dft_c2r_2d(int n0, int n1, @Ptr long in, @Ptr long out,
                                                    int flags);

//  /**
//   * Original signature : <code>fftw_plan fftw_plan_dft_c2r_3d(int, int, int, double*, double*,
//   * unsigned)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:818</i>
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the FFT w3 library.fftw_plan
//   */
//  public static FFTW3Library.fftw_plan fftw_plan_dft_c2r_3d(int n0, int n1, int n2,
//                                                            Pointer<Double> in, Pointer<Double> out, int flags) {
//    return new FFTW3Library.fftw_plan(fftw_plan_dft_c2r_3d(n0, n1, n2, Pointer.getPeer(in),
//        Pointer.getPeer(out), flags));
//  }
//
//  /**
//   * Fftw_plan_dft_c2r_3d.
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_dft_c2r_3d(int n0, int n1, int n2, @Ptr long in,
//                                                    @Ptr long out, int flags);
//
//  /**
//   * Fftw_plan_guru_dft_r2c.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_dft_r2c(int rank, @Ptr long dims, int howmany_rank,
//                                                      @Ptr long howmany_dims, @Ptr long in, @Ptr long out, int flags);
//
//  /**
//   * Fftw_plan_guru_dft_c2r.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_dft_c2r(int rank, @Ptr long dims, int howmany_rank,
//                                                      @Ptr long howmany_dims, @Ptr long in, @Ptr long out, int flags);
//
//  /**
//   * Fftw_plan_guru_split_dft_r2c.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param ro           the ro
//   * @param io           the io
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_split_dft_r2c(int rank, @Ptr long dims,
//                                                            int howmany_rank, @Ptr long howmany_dims, @Ptr long in, @Ptr long ro, @Ptr long io, int flags);
//
//  /**
//   * Fftw_plan_guru_split_dft_c2r.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param ri           the ri
//   * @param ii           the ii
//   * @param out          the out
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_split_dft_c2r(int rank, @Ptr long dims,
//                                                            int howmany_rank, @Ptr long howmany_dims, @Ptr long ri, @Ptr long ii, @Ptr long out, int flags);
//
//  /**
//   * Fftw_plan_guru64_dft_r2c.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_dft_r2c(int rank, @Ptr long dims, int howmany_rank,
//                                                        @Ptr long howmany_dims, @Ptr long in, @Ptr long out, int flags);
//
//  /**
//   * Fftw_plan_guru64_dft_c2r.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_dft_c2r(int rank, @Ptr long dims, int howmany_rank,
//                                                        @Ptr long howmany_dims, @Ptr long in, @Ptr long out, int flags);
//
//  /**
//   * Fftw_plan_guru64_split_dft_r2c.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param ro           the ro
//   * @param io           the io
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_split_dft_r2c(int rank, @Ptr long dims,
//                                                              int howmany_rank, @Ptr long howmany_dims, @Ptr long in, @Ptr long ro, @Ptr long io, int flags);
//
//  /**
//   * Fftw_plan_guru64_split_dft_c2r.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param ri           the ri
//   * @param ii           the ii
//   * @param out          the out
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_split_dft_c2r(int rank, @Ptr long dims,
//                                                              int howmany_rank, @Ptr long howmany_dims, @Ptr long ri, @Ptr long ii, @Ptr long out, int flags);

  /**
   * Original signature : <code>void fftw_execute_dft_r2c(const fftw_plan, double*, double*)
   * </code><br> <i>native declaration : /usr/local/include/fftw3.h:836</i>
   *
   * @param p   the p
   * @param in  the in
   * @param out the out
   */
  public static void fftw_execute_dft_r2c(FFTW3Library.fftw_plan p, Pointer<Double> in,
                                          Pointer<Double> out) {
    fftw_execute_dft_r2c(Pointer.getPeer(p), Pointer.getPeer(in), Pointer.getPeer(out));
  }

  /**
   * Fftw_execute_dft_r2c.
   *
   * @param p   the p
   * @param in  the in
   * @param out the out
   */
  protected native static void fftw_execute_dft_r2c(@Ptr long p, @Ptr long in, @Ptr long out);

  /**
   * Original signature : <code>void fftw_execute_dft_c2r(const fftw_plan, double*, double*)
   * </code><br> <i>native declaration : /usr/local/include/fftw3.h:838</i>
   *
   * @param p   the p
   * @param in  the in
   * @param out the out
   */
  public static void fftw_execute_dft_c2r(FFTW3Library.fftw_plan p, Pointer<Double> in,
                                          Pointer<Double> out) {
    fftw_execute_dft_c2r(Pointer.getPeer(p), Pointer.getPeer(in), Pointer.getPeer(out));
  }

  /**
   * Fftw_execute_dft_c2r.
   *
   * @param p   the p
   * @param in  the in
   * @param out the out
   */
  protected native static void fftw_execute_dft_c2r(@Ptr long p, @Ptr long in, @Ptr long out);

//  /**
//   * Original signature : <code>void fftw_execute_split_dft_r2c(const fftw_plan, double*, double*,
//   * double*)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:840</i>
//   *
//   * @param p  the p
//   * @param in the in
//   * @param ro the ro
//   * @param io the io
//   */
//  public static void fftw_execute_split_dft_r2c(FFTW3Library.fftw_plan p, Pointer<Double> in,
//                                                Pointer<Double> ro, Pointer<Double> io) {
//    fftw_execute_split_dft_r2c(Pointer.getPeer(p), Pointer.getPeer(in), Pointer.getPeer(ro),
//        Pointer.getPeer(io));
//  }
//
//  /**
//   * Fftw_execute_split_dft_r2c.
//   *
//   * @param p  the p
//   * @param in the in
//   * @param ro the ro
//   * @param io the io
//   */
//  protected native static void fftw_execute_split_dft_r2c(@Ptr long p, @Ptr long in, @Ptr long ro,
//                                                          @Ptr long io);
//
//  /**
//   * Original signature : <code>void fftw_execute_split_dft_c2r(const fftw_plan, double*, double*,
//   * double*)</code> <br> <i>native declaration : /usr/local/include/fftw3.h:842</i>
//   *
//   * @param p   the p
//   * @param ri  the ri
//   * @param ii  the ii
//   * @param out the out
//   */
//  public static void fftw_execute_split_dft_c2r(FFTW3Library.fftw_plan p, Pointer<Double> ri,
//                                                Pointer<Double> ii, Pointer<Double> out) {
//    fftw_execute_split_dft_c2r(Pointer.getPeer(p), Pointer.getPeer(ri), Pointer.getPeer(ii),
//        Pointer.getPeer(out));
//  }
//
//  /**
//   * Fftw_execute_split_dft_c2r.
//   *
//   * @param p   the p
//   * @param ri  the ri
//   * @param ii  the ii
//   * @param out the out
//   */
//  protected native static void fftw_execute_split_dft_c2r(@Ptr long p, @Ptr long ri, @Ptr long ii,
//                                                          @Ptr long out);
//
//  /**
//   * Fftw_plan_many_r2r.
//   *
//   * @param rank    the rank
//   * @param n       the n
//   * @param howmany the howmany
//   * @param in      the in
//   * @param inembed the inembed
//   * @param istride the istride
//   * @param idist   the idist
//   * @param out     the out
//   * @param onembed the onembed
//   * @param ostride the ostride
//   * @param odist   the odist
//   * @param kind    the kind
//   * @param flags   the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_many_r2r(int rank, @Ptr long n, int howmany, @Ptr long in,
//                                                  @Ptr long inembed, int istride, int idist, @Ptr long out, @Ptr long onembed, int ostride,
//                                                  int odist, @Ptr long kind, int flags);
//
//  /**
//   * Fftw_plan_r2r.
//   *
//   * @param rank  the rank
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param kind  the kind
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_r2r(int rank, @Ptr long n, @Ptr long in, @Ptr long out,
//                                             @Ptr long kind, int flags);
//
//  /**
//   * Fftw_plan_r2r_1d.
//   *
//   * @param n     the n
//   * @param in    the in
//   * @param out   the out
//   * @param kind  the kind
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_r2r_1d(int n, @Ptr long in, @Ptr long out, int kind,
//                                                int flags);
//
//  /**
//   * Fftw_plan_r2r_2d.
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param in    the in
//   * @param out   the out
//   * @param kind0 the kind0
//   * @param kind1 the kind1
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_r2r_2d(int n0, int n1, @Ptr long in, @Ptr long out,
//                                                int kind0, int kind1, int flags);
//
//  /**
//   * Fftw_plan_r2r_3d.
//   *
//   * @param n0    the n0
//   * @param n1    the n1
//   * @param n2    the n2
//   * @param in    the in
//   * @param out   the out
//   * @param kind0 the kind0
//   * @param kind1 the kind1
//   * @param kind2 the kind2
//   * @param flags the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_r2r_3d(int n0, int n1, int n2, @Ptr long in,
//                                                @Ptr long out, int kind0, int kind1, int kind2, int flags);
//
//  /**
//   * Fftw_plan_guru_r2r.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param kind         the kind
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru_r2r(int rank, @Ptr long dims, int howmany_rank,
//                                                  @Ptr long howmany_dims, @Ptr long in, @Ptr long out, @Ptr long kind, int flags);
//
//  /**
//   * Fftw_plan_guru64_r2r.
//   *
//   * @param rank         the rank
//   * @param dims         the dims
//   * @param howmany_rank the howmany_rank
//   * @param howmany_dims the howmany_dims
//   * @param in           the in
//   * @param out          the out
//   * @param kind         the kind
//   * @param flags        the flags
//   * @return the long
//   */
//  @Ptr
//  protected native static long fftw_plan_guru64_r2r(int rank, @Ptr long dims, int howmany_rank,
//                                                    @Ptr long howmany_dims, @Ptr long in, @Ptr long out, @Ptr long kind, int flags);
//
//  /**
//   * Original signature : <code>void fftw_execute_r2r(const fftw_plan, double*, double*)</code> <br>
//   * <i>native declaration : /usr/local/include/fftw3.h:858</i>
//   *
//   * @param p   the p
//   * @param in  the in
//   * @param out the out
//   */
//  public static void fftw_execute_r2r(FFTW3Library.fftw_plan p, Pointer<Double> in,
//                                      Pointer<Double> out) {
//    fftw_execute_r2r(Pointer.getPeer(p), Pointer.getPeer(in), Pointer.getPeer(out));
//  }
//
//  /**
//   * Fftw_execute_r2r.
//   *
//   * @param p   the p
//   * @param in  the in
//   * @param out the out
//   */
//  protected native static void fftw_execute_r2r(@Ptr long p, @Ptr long in, @Ptr long out);

  /**
   * Original signature : <code>void fftw_destroy_plan(fftw_plan)</code><br> <i>native declaration :
   * /usr/local/include/fftw3.h:860</i>
   *
   * @param p the p
   */
  public static void fftw_destroy_plan(FFTW3Library.fftw_plan p) {
    fftw_destroy_plan(Pointer.getPeer(p));
  }

  /**
   * Fftw_destroy_plan.
   *
   * @param p the p
   */
  protected native static void fftw_destroy_plan(@Ptr long p);

//  /**
//   * Original signature : <code>void fftw_forget_wisdom()</code><br> <i>native declaration :
//   * /usr/local/include/fftw3.h:862</i>
//   */
//  native public static void fftw_forget_wisdom();

  /**
   * Original signature : <code>void fftw_cleanup()</code><br> <i>native declaration :
   * /usr/local/include/fftw3.h:864</i>
   */
  native public static void fftw_cleanup();

//  /**
//   * Original signature : <code>void fftw_set_timelimit(double)</code><br> <i>native declaration :
//   * /usr/local/include/fftw3.h:866</i>
//   *
//   * @param t the t
//   */
//  native public static void fftw_set_timelimit(double t);

  /**
   * Original signature : <code>int fftw_export_wisdom_to_filename(const char*)</code><br> <i>native
   * declaration : /usr/local/include/fftw3.h:874</i>
   *
   * @param filename the filename
   * @return the int
   */
  public static int fftw_export_wisdom_to_filename(Pointer<Byte> filename) {
    return fftw_export_wisdom_to_filename(Pointer.getPeer(filename));
  }

  /**
   * Fftw_export_wisdom_to_filename.
   *
   * @param filename the filename
   * @return the int
   */
  protected native static int fftw_export_wisdom_to_filename(@Ptr long filename);

//  /**
//   * Original signature : <code>void fftw_export_wisdom_to_file(FILE*)</code> <br> <i>native
//   * declaration : /usr/local/include/fftw3.h:876</i>
//   *
//   * @param output_file the output_file
//   */
//  public static void fftw_export_wisdom_to_file(Pointer output_file) {
//    fftw_export_wisdom_to_file(Pointer.getPeer(output_file));
//  }
//
//  /**
//   * Fftw_export_wisdom_to_file.
//   *
//   * @param output_file the output_file
//   */
//  protected native static void fftw_export_wisdom_to_file(@Ptr long output_file);
//
//  /**
//   * Original signature : <code>char* fftw_export_wisdom_to_string()</code> <br> <i>native
//   * declaration : /usr/local/include/fftw3.h:878</i>
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftw_export_wisdom_to_string() {
//    return Pointer.pointerToAddress(fftw_export_wisdom_to_string$2(), Byte.class);
//  }
//
//  /**
//   * Fftw_export_wisdom_to_string$2.
//   *
//   * @return the long
//   */
//  @Ptr
//  @Name("fftw_export_wisdom_to_string")
//  protected native static long fftw_export_wisdom_to_string$2();
//
//  /**
//   * Original signature : <code>void fftw_export_wisdom(fftw_write_char_func, void*)</code><br>
//   * <i>native declaration : /usr/local/include/fftw3.h:880</i>
//   *
//   * @param write_char the write_char
//   * @param data       the data
//   */
//  public static void fftw_export_wisdom(
//      Pointer<FFTW3Library.fftw_write_char_func_do_not_use_me> write_char, Pointer<?> data) {
//    fftw_export_wisdom(Pointer.getPeer(write_char), Pointer.getPeer(data));
//  }
//
//  /**
//   * Fftw_export_wisdom.
//   *
//   * @param write_char the write_char
//   * @param data       the data
//   */
//  protected native static void fftw_export_wisdom(@Ptr long write_char, @Ptr long data);
//
//  /**
//   * Original signature : <code>int fftw_import_system_wisdom()</code><br> <i>native declaration :
//   * /usr/local/include/fftw3.h:882</i>
//   *
//   * @return the int
//   */
//  native public static int fftw_import_system_wisdom();

  /**
   * Original signature : <code>int fftw_import_wisdom_from_filename(const char*)</code><br>
   * <i>native declaration : /usr/local/include/fftw3.h:884</i>
   *
   * @param filename the filename
   * @return the int
   */
  public static int fftw_import_wisdom_from_filename(Pointer<Byte> filename) {
    return fftw_import_wisdom_from_filename(Pointer.getPeer(filename));
  }

  /**
   * Fftw_import_wisdom_from_filename.
   *
   * @param filename the filename
   * @return the int
   */
  protected native static int fftw_import_wisdom_from_filename(@Ptr long filename);

//  /**
//   * Original signature : <code>int fftw_import_wisdom_from_file(FILE*) </code><br> <i>native
//   * declaration : /usr/local/include/fftw3.h:886</i>
//   *
//   * @param input_file the input_file
//   * @return the int
//   */
//  public static int fftw_import_wisdom_from_file(Pointer input_file) {
//    return fftw_import_wisdom_from_file(Pointer.getPeer(input_file));
//  }
//
//  /**
//   * Fftw_import_wisdom_from_file.
//   *
//   * @param input_file the input_file
//   * @return the int
//   */
//  protected native static int fftw_import_wisdom_from_file(@Ptr long input_file);
//
//  /**
//   * Original signature : <code>int fftw_import_wisdom_from_string(const char*)</code><br> <i>native
//   * declaration : /usr/local/include/fftw3.h:888</i>
//   *
//   * @param input_string the input_string
//   * @return the int
//   */
//  public static int fftw_import_wisdom_from_string(Pointer<Byte> input_string) {
//    return fftw_import_wisdom_from_string(Pointer.getPeer(input_string));
//  }
//
//  /**
//   * Fftw_import_wisdom_from_string.
//   *
//   * @param input_string the input_string
//   * @return the int
//   */
//  protected native static int fftw_import_wisdom_from_string(@Ptr long input_string);
//
//  /**
//   * Original signature : <code>int fftw_import_wisdom(fftw_read_char_func, void*)</code><br>
//   * <i>native declaration : /usr/local/include/fftw3.h:890</i>
//   *
//   * @param read_char the read_char
//   * @param data      the data
//   * @return the int
//   */
//  public static int fftw_import_wisdom(
//      Pointer<FFTW3Library.fftw_read_char_func_do_not_use_me> read_char, Pointer<?> data) {
//    return fftw_import_wisdom(Pointer.getPeer(read_char), Pointer.getPeer(data));
//  }
//
//  /**
//   * Fftw_import_wisdom.
//   *
//   * @param read_char the read_char
//   * @param data      the data
//   * @return the int
//   */
//  protected native static int fftw_import_wisdom(@Ptr long read_char, @Ptr long data);
//
//  /**
//   * Original signature : <code>void fftw_fprint_plan(const fftw_plan, FILE*)</code><br> <i>native
//   * declaration : /usr/local/include/fftw3.h:892</i>
//   *
//   * @param p           the p
//   * @param output_file the output_file
//   */
//  public static void fftw_fprint_plan(FFTW3Library.fftw_plan p, Pointer output_file) {
//    fftw_fprint_plan(Pointer.getPeer(p), Pointer.getPeer(output_file));
//  }
//
//  /**
//   * Fftw_fprint_plan.
//   *
//   * @param p           the p
//   * @param output_file the output_file
//   */
//  protected native static void fftw_fprint_plan(@Ptr long p, @Ptr long output_file);
//
//  /**
//   * Original signature : <code>void fftw_print_plan(const fftw_plan)</code> <br> <i>native
//   * declaration : /usr/local/include/fftw3.h:894</i>
//   *
//   * @param p the p
//   */
//  public static void fftw_print_plan(FFTW3Library.fftw_plan p) {
//    fftw_print_plan(Pointer.getPeer(p));
//  }
//
//  /**
//   * Fftw_print_plan.
//   *
//   * @param p the p
//   */
//  protected native static void fftw_print_plan(@Ptr long p);
//
//  /**
//   * Original signature : <code>void* fftw_malloc(size_t)</code><br> <i>native declaration :
//   * /usr/local/include/fftw3.h:896</i>
//   *
//   * @param n the n
//   * @return the pointer
//   */
//  public static Pointer<?> fftw_malloc(@CLong long n) {
//    return Pointer.pointerToAddress(fftw_malloc$2(n));
//  }
//
//  /**
//   * Fftw_malloc$2.
//   *
//   * @param n the n
//   * @return the long
//   */
//  @Ptr
//  @Name("fftw_malloc")
//  protected native static long fftw_malloc$2(@CLong long n);

  /**
   * Original signature : <code>double* fftw_alloc_real(size_t)</code><br> <i>native declaration :
   * /usr/local/include/fftw3.h:898</i>
   *
   * @param n the n
   * @return the pointer
   */
  public static Pointer<Double> fftw_alloc_real(@CLong long n) {
    return Pointer.pointerToAddress(fftw_alloc_real$2(n), Double.class);
  }

  /**
   * Fftw_alloc_real$2.
   *
   * @param n the n
   * @return the long
   */
  @Ptr
  @Name("fftw_alloc_real")
  protected native static long fftw_alloc_real$2(@CLong long n);

  /**
   * Original signature : <code>double* fftw_alloc_complex(size_t)</code><br> <i>native declaration
   * : /usr/local/include/fftw3.h:900</i>
   *
   * @param n the n
   * @return the pointer
   */
  public static Pointer<Double> fftw_alloc_complex(@CLong long n) {
    return Pointer.pointerToAddress(fftw_alloc_complex$2(n), Double.class);
  }

  /**
   * Fftw_alloc_complex$2.
   *
   * @param n the n
   * @return the long
   */
  @Ptr
  @Name("fftw_alloc_complex")
  protected native static long fftw_alloc_complex$2(@CLong long n);

  /**
   * Original signature : <code>void fftw_free(void*)</code><br> <i>native declaration :
   * /usr/local/include/fftw3.h:902</i>
   *
   * @param p the p
   */
  public static void fftw_free(Pointer<?> p) {
    fftw_free(Pointer.getPeer(p));
  }

  /**
   * Fftw_free.
   *
   * @param p the p
   */
  protected native static void fftw_free(@Ptr long p);

//  /**
//   * Original signature : <code>void fftw_flops(const fftw_plan, double*, double*, double*)</code>
//   * <br> <i>native declaration : /usr/local/include/fftw3.h:904</i>
//   *
//   * @param p    the p
//   * @param add  the add
//   * @param mul  the mul
//   * @param fmas the fmas
//   */
//  public static void fftw_flops(FFTW3Library.fftw_plan p, Pointer<Double> add, Pointer<Double> mul,
//                                Pointer<Double> fmas) {
//    fftw_flops(Pointer.getPeer(p), Pointer.getPeer(add), Pointer.getPeer(mul),
//        Pointer.getPeer(fmas));
//  }
//
//  /**
//   * Fftw_flops.
//   *
//   * @param p    the p
//   * @param add  the add
//   * @param mul  the mul
//   * @param fmas the fmas
//   */
//  protected native static void fftw_flops(@Ptr long p, @Ptr long add, @Ptr long mul, @Ptr long fmas);
//
//  /**
//   * Original signature : <code>double fftw_estimate_cost(const fftw_plan)</code><br> <i>native
//   * declaration : /usr/local/include/fftw3.h:906</i>
//   *
//   * @param p the p
//   * @return the double
//   */
//  public static double fftw_estimate_cost(FFTW3Library.fftw_plan p) {
//    return fftw_estimate_cost(Pointer.getPeer(p));
//  }
//
//  /**
//   * Fftw_estimate_cost.
//   *
//   * @param p the p
//   * @return the double
//   */
//  protected native static double fftw_estimate_cost(@Ptr long p);
//
//  /**
//   * Original signature : <code>double fftw_cost(const fftw_plan)</code><br> <i>native declaration :
//   * /usr/local/include/fftw3.h:908</i>
//   *
//   * @param p the p
//   * @return the double
//   */
//  public static double fftw_cost(FFTW3Library.fftw_plan p) {
//    return fftw_cost(Pointer.getPeer(p));
//  }
//
//  /**
//   * Fftw_cost.
//   *
//   * @param p the p
//   * @return the double
//   */
//  protected native static double fftw_cost(@Ptr long p);
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftw_version.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftw_version() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftw_version")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftw_version.
//   *
//   * @param fftw_version the fftw_version
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftw_version(Pointer<Byte> fftw_version) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftw_version")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).set(fftw_version);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftw_cc.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftw_cc() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftw_cc")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftw_cc.
//   *
//   * @param fftw_cc the fftw_cc
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftw_cc(Pointer<Byte> fftw_cc) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftw_cc")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).set(fftw_cc);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftw_codelet_optim.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftw_codelet_optim() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftw_codelet_optim")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftw_codelet_optim.
//   *
//   * @param fftw_codelet_optim the fftw_codelet_optim
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftw_codelet_optim(Pointer<Byte> fftw_codelet_optim) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftw_codelet_optim")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class))
//            .set(fftw_codelet_optim);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwf_version.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftwf_version() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwf_version")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwf_version.
//   *
//   * @param fftwf_version the fftwf_version
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftwf_version(Pointer<Byte> fftwf_version) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwf_version")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).set(fftwf_version);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwf_cc.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftwf_cc() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwf_cc")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwf_cc.
//   *
//   * @param fftwf_cc the fftwf_cc
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftwf_cc(Pointer<Byte> fftwf_cc) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwf_cc")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).set(fftwf_cc);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwf_codelet_optim.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftwf_codelet_optim() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3")
//          .getSymbolPointer("fftwf_codelet_optim")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwf_codelet_optim.
//   *
//   * @param fftwf_codelet_optim the fftwf_codelet_optim
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftwf_codelet_optim(Pointer<Byte> fftwf_codelet_optim) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwf_codelet_optim")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class))
//            .set(fftwf_codelet_optim);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwl_version.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftwl_version() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwl_version")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwl_version.
//   *
//   * @param fftwl_version the fftwl_version
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftwl_version(Pointer<Byte> fftwl_version) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwl_version")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).set(fftwl_version);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwl_cc.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftwl_cc() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwl_cc")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwl_cc.
//   *
//   * @param fftwl_cc the fftwl_cc
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftwl_cc(Pointer<Byte> fftwl_cc) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwl_cc")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).set(fftwl_cc);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwl_codelet_optim.
//   *
//   * @return the pointer
//   */
//  public static Pointer<Byte> fftwl_codelet_optim() {
//    try {
//      return (Pointer<Byte>) BridJ.getNativeLibrary("FFTW3")
//          .getSymbolPointer("fftwl_codelet_optim")
//          .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class)).get();
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }
//
//  // / C type : extern const char[]
//
//  /**
//   * Fftwl_codelet_optim.
//   *
//   * @param fftwl_codelet_optim the fftwl_codelet_optim
//   * @return the FFT w3 library
//   */
//  public FFTW3Library fftwl_codelet_optim(Pointer<Byte> fftwl_codelet_optim) {
//    try {
//      {
//        BridJ.getNativeLibrary("FFTW3").getSymbolPointer("fftwl_codelet_optim")
//            .as(DefaultParameterizedType.paramType(Pointer.class, Byte.class))
//            .set(fftwl_codelet_optim);
//        return this;
//      }
//    } catch (Throwable $ex$) {
//      throw new RuntimeException($ex$);
//    }
//  }

//  /**
//   * The Class fftwf_plan.
//   */
//  public static class fftwf_plan extends TypedPointer {
//
//    /**
//     * Instantiates a new fftwf_plan.
//     *
//     * @param address the address
//     */
//    public fftwf_plan(long address) {
//      super(address);
//    }
//
//    /**
//     * Instantiates a new fftwf_plan.
//     *
//     * @param address the address
//     */
//    public fftwf_plan(Pointer address) {
//      super(address);
//    }
//  }

  /**
   * The Class fftw_plan.
   */
  public static class fftw_plan extends TypedPointer {

    /**
     * Instantiates a new fftw_plan.
     *
     * @param address the address
     */
    public fftw_plan(long address) {
      super(address);
    }

    /**
     * Instantiates a new fftw_plan.
     *
     * @param address the address
     */
    public fftw_plan(Pointer address) {
      super(address);
    }
  }

//  /**
//   * The Class fftwl_plan.
//   */
//  public static class fftwl_plan extends TypedPointer {
//
//    /**
//     * Instantiates a new fftwl_plan.
//     *
//     * @param address the address
//     */
//    public fftwl_plan(long address) {
//      super(address);
//    }
//
//    /**
//     * Instantiates a new fftwl_plan.
//     *
//     * @param address the address
//     */
//    public fftwl_plan(Pointer address) {
//      super(address);
//    }
//  }
//
//  /**
//   * The Interface fftwl_plan_s.
//   */
//  public static interface fftwl_plan_s {
//
//  }
//
//  /**
//   * The Interface fftw_plan_s.
//   */
//  public static interface fftw_plan_s {
//
//  }
//
//  /**
//   * The Interface fftwf_plan_s.
//   */
//  public static interface fftwf_plan_s {
//
//  }
}
