Commit 8469bd0e authored by Rossen Apostolov's avatar Rossen Apostolov
Browse files

Changed to BSD license for the fftpack files

parent 96550721
/* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup"; -*- /*
* * This file contains a Fortran to C translation of the 1D transformations
* * based on the original FFTPACK, written by paul n swarztrauber
* Gromacs 4.0 Copyright (c) 1991-2003 * at the national center for atmospheric research and available
* David van der Spoel, Erik Lindahl, University of Groningen. * at www.netlib.org. FFTPACK is in the public domain.
* *
* This program is free software; you can redistribute it and/or * Higher-dimension transforms copyright Erik Lindahl, 2008-2009.
* modify it under the terms of the GNU General Public License * Just as FFTPACK, this file may be redistributed freely, and can be
* as published by the Free Software Foundation; either version 2 * considered to be in the public domain.
* of the License, or (at your option) any later version. *
* * Any errors in this (threadsafe, but not threaded) C version
* To help us fund GROMACS development, we humbly ask that you cite * are due to the f2c translator, or hacks by Erik Lindahl.
* the research papers on the package. Check out http://www.gromacs.org *
* * Erik Lindahl, lindahl@cbr.su.se
* And Hey: * Center for Biomembrane Research
* Gnomes, ROck Monsters And Chili Sauce * Stockholm University, Sweden
*
* Copyright (c) 2009, Erik Lindahl
* All rights reserved.
* Contact: lindahl@cbr.su.se Stockholm University, Sweden.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. Redistributions in binary
* form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided
* with the distribution.
* Neither the name of the author/university nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "../SimTKUtilities/SimTKOpenMMCommon.h" #include "../SimTKUtilities/SimTKOpenMMCommon.h"
#ifndef _FFTPACK_H_ #ifndef _FFTPACK_H_
...@@ -39,10 +67,10 @@ typedef struct { ...@@ -39,10 +67,10 @@ typedef struct {
} t_complex; } t_complex;
/*! \brief Datatype for FFT setup /*! \brief Datatype for FFT setup
* *
* The fftpack_t type contains all the setup information, e.g. twiddle * The fftpack_t type contains all the setup information, e.g. twiddle
* factors, necessary to perform an FFT. Internally it is mapped to * factors, necessary to perform an FFT. Internally it is mapped to
* whatever FFT library we are using, or the built-in FFTPACK if no fast * whatever FFT library we are using, or the built-in FFTPACK if no fast
* external library is available. * external library is available.
*/ */
...@@ -52,7 +80,7 @@ fftpack_t; ...@@ -52,7 +80,7 @@ fftpack_t;
/*! \brief Specifier for FFT direction. /*! \brief Specifier for FFT direction.
* *
* The definition of the 1D forward transform from input x[] to output y[] is * The definition of the 1D forward transform from input x[] to output y[] is
* \f[ * \f[
...@@ -76,10 +104,10 @@ typedef enum fftpack_direction ...@@ -76,10 +104,10 @@ typedef enum fftpack_direction
/*! \brief Setup a 1-dimensional complex-to-complex transform /*! \brief Setup a 1-dimensional complex-to-complex transform
* *
* \param fft Pointer to opaque Gromacs FFT datatype * \param fft Pointer to opaque Gromacs FFT datatype
* \param nx Length of transform * \param nx Length of transform
* *
* \return status - 0 or a standard error message. * \return status - 0 or a standard error message.
*/ */
...@@ -89,24 +117,24 @@ fftpack_init_1d (fftpack_t * fft, ...@@ -89,24 +117,24 @@ fftpack_init_1d (fftpack_t * fft,
/*! \brief Setup a 2-dimensional complex-to-complex transform /*! \brief Setup a 2-dimensional complex-to-complex transform
* *
* \param fft Pointer to opaque Gromacs FFT datatype * \param fft Pointer to opaque Gromacs FFT datatype
* \param nx Length of transform in first dimension * \param nx Length of transform in first dimension
* \param ny Length of transform in second dimension * \param ny Length of transform in second dimension
* *
* \return status - 0 or a standard error message. * \return status - 0 or a standard error message.
* *
*/ */
int int
fftpack_init_2d (fftpack_t * fft, fftpack_init_2d (fftpack_t * fft,
int nx, int nx,
int ny); int ny);
/*! \brief Setup a 3-dimensional complex-to-complex transform /*! \brief Setup a 3-dimensional complex-to-complex transform
* *
* \param fft Pointer to opaque Gromacs FFT datatype * \param fft Pointer to opaque Gromacs FFT datatype
* \param nx Length of transform in first dimension * \param nx Length of transform in first dimension
...@@ -114,11 +142,11 @@ fftpack_init_2d (fftpack_t * fft, ...@@ -114,11 +142,11 @@ fftpack_init_2d (fftpack_t * fft,
* \param nz Length of transform in third dimension * \param nz Length of transform in third dimension
* *
* \return status - 0 or a standard error message. * \return status - 0 or a standard error message.
* *
*/ */
int int
fftpack_init_3d (fftpack_t * fft, fftpack_init_3d (fftpack_t * fft,
int nx, int nx,
int ny, int ny,
int nz); int nz);
...@@ -131,17 +159,17 @@ fftpack_init_3d (fftpack_t * fft, ...@@ -131,17 +159,17 @@ fftpack_init_3d (fftpack_t * fft,
* *
* \param setup Setup returned from fftpack_init_1d() * \param setup Setup returned from fftpack_init_1d()
* \param dir Forward or Backward * \param dir Forward or Backward
* \param in_data Input grid data. * \param in_data Input grid data.
* \param out_data Output grid data. * \param out_data Output grid data.
* You can provide the same pointer for in_data and out_data * You can provide the same pointer for in_data and out_data
* to perform an in-place transform. * to perform an in-place transform.
* *
* \return 0 on success, or an error code. * \return 0 on success, or an error code.
* *
* \note Data pointers are declared as void, to avoid casting pointers * \note Data pointers are declared as void, to avoid casting pointers
* depending on your grid type. * depending on your grid type.
*/ */
int int
fftpack_exec_1d (fftpack_t setup, fftpack_exec_1d (fftpack_t setup,
enum fftpack_direction dir, enum fftpack_direction dir,
t_complex * in_data, t_complex * in_data,
...@@ -153,17 +181,17 @@ fftpack_exec_1d (fftpack_t setup, ...@@ -153,17 +181,17 @@ fftpack_exec_1d (fftpack_t setup,
* *
* \param setup Setup returned from fftpack_init_1d() * \param setup Setup returned from fftpack_init_1d()
* \param dir Forward or Backward * \param dir Forward or Backward
* \param in_data Input grid data. * \param in_data Input grid data.
* \param out_data Output grid data. * \param out_data Output grid data.
* You can provide the same pointer for in_data and out_data * You can provide the same pointer for in_data and out_data
* to perform an in-place transform. * to perform an in-place transform.
* *
* \return 0 on success, or an error code. * \return 0 on success, or an error code.
* *
* \note Data pointers are declared as void, to avoid casting pointers * \note Data pointers are declared as void, to avoid casting pointers
* depending on your grid type. * depending on your grid type.
*/ */
int int
fftpack_exec_2d (fftpack_t setup, fftpack_exec_2d (fftpack_t setup,
enum fftpack_direction dir, enum fftpack_direction dir,
t_complex * in_data, t_complex * in_data,
...@@ -176,24 +204,24 @@ fftpack_exec_2d (fftpack_t setup, ...@@ -176,24 +204,24 @@ fftpack_exec_2d (fftpack_t setup,
* *
* \param setup Setup returned from fftpack_init_1d() * \param setup Setup returned from fftpack_init_1d()
* \param dir Forward or Backward * \param dir Forward or Backward
* \param in_data Input grid data. * \param in_data Input grid data.
* \param out_data Output grid data. * \param out_data Output grid data.
* You can provide the same pointer for in_data and out_data * You can provide the same pointer for in_data and out_data
* to perform an in-place transform. * to perform an in-place transform.
* *
* \return 0 on success, or an error code. * \return 0 on success, or an error code.
* *
* \note Data pointers are declared as void, to avoid casting pointers * \note Data pointers are declared as void, to avoid casting pointers
* depending on your grid type. * depending on your grid type.
*/ */
int int
fftpack_exec_3d (fftpack_t setup, fftpack_exec_3d (fftpack_t setup,
enum fftpack_direction dir, enum fftpack_direction dir,
t_complex * in_data, t_complex * in_data,
t_complex * out_data); t_complex * out_data);
/*! \brief Release an FFT setup structure /*! \brief Release an FFT setup structure
* *
* Destroy setup and release all allocated memory. * Destroy setup and release all allocated memory.
* *
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment