diff --git a/examples/Integration_with_fftw/Array.h b/examples/Integration_with_fftw/Array.h new file mode 100644 index 0000000..37997da --- /dev/null +++ b/examples/Integration_with_fftw/Array.h @@ -0,0 +1,1649 @@ +/* Array.h: A high-performance multi-dimensional C++ array class + Copyright (C) 1997-2016 John C. Bowman, University of Alberta + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef __Array_h__ +#define __Array_h__ 1 + +#define __ARRAY_H_VERSION__ 1.55 + +// Defining NDEBUG improves optimization but disables argument checking. +// Defining __NOARRAY2OPT inhibits special optimization of Array2[]. + +#include +#include +#include +#include +#include + +#ifdef NDEBUG +#define __check(i,n,dim,m) +#define __checkSize() +#define __checkEqual(a,b,dim,m) +#define __checkActivate(i,align) this->Activate(align) +#else +#define __check(i,n,dim,m) this->Check(i,n,dim,m) +#define __checkSize() this->CheckSize() +#define __checkEqual(a,b,dim,m) this->CheckEqual(a,b,dim,m) +#define __checkActivate(i,align) this->CheckActivate(i,align) +#ifndef __NOARRAY2OPT +#define __NOARRAY2OPT +#endif +#endif + +#ifndef HAVE_POSIX_MEMALIGN + +#ifdef __GLIBC_PREREQ +#if __GLIBC_PREREQ(2,3) +#define HAVE_POSIX_MEMALIGN +#endif +#else +#ifdef _POSIX_SOURCE +#define HAVE_POSIX_MEMALIGN +#endif +#endif + +#else + +#ifdef _AIX +extern "C" int posix_memalign(void **memptr, size_t alignment, size_t size); +#endif + +#endif + +namespace Array { +inline std::ostream& _newl(std::ostream& s) {s << '\n'; return s;} + +inline void ArrayExit(const char *x); + +#ifndef __ExternalArrayExit +inline void ArrayExit(const char *x) +{ + std::cerr << _newl << "ERROR: " << x << "." << std::endl; + exit(1); +} +#endif + +#ifndef __fftwpp_h__ + +// Adapted from FFTW aligned malloc/free. Assumes that malloc is at least +// sizeof(void*)-aligned. Allocated memory must be freed with free0. +inline int posix_memalign0(void **memptr, size_t alignment, size_t size) +{ + if(alignment % sizeof (void *) != 0 || (alignment & (alignment - 1)) != 0) + return EINVAL; + void *p0=malloc(size+alignment); + if(!p0) return ENOMEM; + void *p=(void *)(((size_t) p0+alignment)&~(alignment-1)); + *((void **) p-1)=p0; + *memptr=p; + return 0; +} + +inline void free0(void *p) +{ + if(p) free(*((void **) p-1)); +} + +template +inline void newAlign(T *&v, size_t len, size_t align) +{ + void *mem=NULL; + const char *invalid="Invalid alignment requested"; + const char *nomem="Memory limits exceeded"; +#ifdef HAVE_POSIX_MEMALIGN + int rc=posix_memalign(&mem,align,len*sizeof(T)); +#else + int rc=posix_memalign0(&mem,align,len*sizeof(T)); +#endif + if(rc == EINVAL) Array::ArrayExit(invalid); + if(rc == ENOMEM) Array::ArrayExit(nomem); + v=(T *) mem; + for(size_t i=0; i < len; i++) new(v+i) T; +} + +template +inline void deleteAlign(T *v, size_t len) +{ + for(size_t i=len-1; i > 0; i--) v[i].~T(); + v[0].~T(); +#ifdef HAVE_POSIX_MEMALIGN + free(v); +#else + free0(v); +#endif +} + +#endif + +template +class array1 { +protected: + T *v; + unsigned int size; + mutable int state; +public: + enum alloc_state {unallocated=0, allocated=1, temporary=2, aligned=4}; + virtual unsigned int Size() const {return size;} + void CheckSize() const { + if(!test(allocated) && size == 0) + ArrayExit("Operation attempted on unallocated array"); + } + void CheckEqual(int a, int b, unsigned int dim, unsigned int m) const { + if(a != b) { + std::ostringstream buf; + buf << "Array" << dim << " index "; + if(m) buf << m << " "; + buf << "is incompatible in assignment (" << a << " != " << b << ")"; + const std::string& s=buf.str(); + ArrayExit(s.c_str()); + } + } + + int test(int flag) const {return state & flag;} + void clear(int flag) const {state &= ~flag;} + void set(int flag) const {state |= flag;} + void Activate(size_t align=0) { + if(align) { + newAlign(v,size,align); + set(allocated | aligned); + } else { + v=new T[size]; + set(allocated); + } + } + void CheckActivate(int dim, size_t align=0) { + Deallocate(); + Activate(align); + } + void Deallocate() const { + if(test(allocated)) { + if(test(aligned)) deleteAlign(v,size); + else delete [] v; + state=unallocated; + } + } + virtual void Dimension(unsigned int nx0) {size=nx0;} + void Dimension(unsigned int nx0, T *v0) { + Dimension(nx0); v=v0; clear(allocated); + } + void Dimension(const array1& A) { + Dimension(A.size,A.v); state=A.test(temporary); + } + + void CheckActivate(size_t align=0) { + __checkActivate(1,align); + } + + void Allocate(unsigned int nx0, size_t align=0) { + Dimension(nx0); + CheckActivate(align); + } + + void Reallocate(unsigned int nx0, size_t align=0) { + Deallocate(); + Allocate(nx0,align); + } + + array1() : v(NULL), size(0), state(unallocated) {} + array1(const void *) : size(0), state(unallocated) {} + array1(unsigned int nx0, size_t align=0) : state(unallocated) { + Allocate(nx0,align); + } + array1(unsigned int nx0, T *v0) : state(unallocated) {Dimension(nx0,v0);} + array1(T *v0) : state(unallocated) {Dimension(INT_MAX,v0);} + array1(const array1& A) : v(A.v), size(A.size), + state(A.test(temporary)) {} + + virtual ~array1() {Deallocate();} + + void Freeze() {state=unallocated;} + void Hold() {if(test(allocated)) {state=temporary;}} + void Purge() const {if(test(temporary)) {Deallocate(); state=unallocated;}} + + virtual void Check(int i, int n, unsigned int dim, unsigned int m, + int o=0) const { + if(i < 0 || i >= n) { + std::ostringstream buf; + buf << "Array" << dim << " index "; + if(m) buf << m << " "; + buf << "is out of bounds (" << i+o; + if(n == 0) buf << " index given to empty array"; + else { + if(i < 0) buf << " < " << o; + else buf << " > " << n+o-1; + } + buf << ")"; + const std::string& s=buf.str(); + ArrayExit(s.c_str()); + } + } + + unsigned int Nx() const {return size;} + +#ifdef NDEBUG + typedef T *opt; +#else + typedef array1 opt; +#endif + + T& operator [] (int ix) const {__check(ix,size,1,1); return v[ix];} + T& operator () (int ix) const {__check(ix,size,1,1); return v[ix];} + T* operator () () const {return v;} + operator T* () const {return v;} + + array1 operator + (int i) const {return array1(size-i,v+i);} + + void Load(T a) const { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i]=a; + } + void Load(const T *a) const { + for(unsigned int i=0; i < size; i++) v[i]=a[i]; + } + void Store(T *a) const { + for(unsigned int i=0; i < size; i++) a[i]=v[i]; + } + void Set(T *a) {v=a; clear(allocated);} + T Min() { + if(size == 0) + ArrayExit("Cannot take minimum of empty array"); + T min=v[0]; + for(unsigned int i=1; i < size; i++) if(v[i] < min) min=v[i]; + return min; + } + T Max() { + if(size == 0) + ArrayExit("Cannot take maximum of empty array"); + T max=v[0]; + for(unsigned int i=1; i < size; i++) if(v[i] > max) max=v[i]; + return max; + } + + std::istream& Input (std::istream &s) const { + __checkSize(); + for(unsigned int i=0; i < size; i++) s >> v[i]; + return s; + } + + array1& operator = (T a) {Load(a); return *this;} + array1& operator = (const T *a) {Load(a); return *this;} + array1& operator = (const array1& A) { + if(size != A.Size()) { + Deallocate(); + Allocate(A.Size()); + } + Load(A()); + A.Purge(); + return *this; + } + + array1& operator += (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] += A(i); + return *this; + } + array1& operator -= (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] -= A(i); + return *this; + } + array1& operator *= (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] *= A(i); + return *this; + } + array1& operator /= (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] /= A(i); + return *this; + } + + array1& operator += (T a) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] += a; + return *this; + } + array1& operator -= (T a) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] -= a; + return *this; + } + array1& operator *= (T a) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] *= a; + return *this; + } + array1& operator /= (T a) { + __checkSize(); + T ainv=1.0/a; + for(unsigned int i=0; i < size; i++) v[i] *= ainv; + return *this; + } + + double L1() const { + __checkSize(); + double norm=0.0; + for(unsigned int i=0; i < size; i++) norm += abs(v[i]); + return norm; + } +#ifdef __ArrayExtensions + double Abs2() const { + __checkSize(); + double norm=0.0; + for(unsigned int i=0; i < size; i++) norm += abs2(v[i]); + return norm; + } + double L2() const { + return sqrt(Abs2()); + } + double LInfinity() const { + __checkSize(); + double norm=0.0; + for(unsigned int i=0; i < size; i++) { + T a=abs(v[i]); + if(a > norm) norm=a; + } + return norm; + } + double LMinusInfinity() const { + __checkSize(); + double norm=DBL_MAX; + for(unsigned int i=0; i < size; i++) { + T a=abs(v[i]); + if(a < norm) norm=a; + } + return norm; + } +#endif +}; + +template +void swaparray(T& A, T& B) +{ + T C; + C.Dimension(A); + A.Dimension(B); + B.Dimension(C); +} + +template +void leftshiftarray(T& A, T& B, T& C) +{ + T D; + D.Dimension(A); + A.Dimension(B); + B.Dimension(C); + C.Dimension(D); +} + +template +void rightshiftarray(T& A, T& B, T& C) +{ + T D; + D.Dimension(C); + C.Dimension(B); + B.Dimension(A); + A.Dimension(D); +} + +template +std::ostream& operator << (std::ostream& s, const array1& A) +{ + T *p=A(); + for(unsigned int i=0; i < A.Nx(); i++) { + s << *(p++) << " "; + } + return s; +} + +template +std::istream& operator >> (std::istream& s, const array1& A) +{ + return A.Input(s); +} + +template +class array2 : public array1 { +protected: + unsigned int nx; + unsigned int ny; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0) { + nx=nx0; ny=ny0; + this->size=nx*ny; + } + void Dimension(unsigned int nx0, unsigned int ny0, T *v0) { + Dimension(nx0,ny0); + this->v=v0; + this->clear(this->allocated); + } + void Dimension(const array1 &A) {ArrayExit("Operation not implemented");} + + void Allocate(unsigned int nx0, unsigned int ny0, size_t align=0) { + Dimension(nx0,ny0); + __checkActivate(2,align); + } + + array2() : nx(0), ny(0) {} + array2(unsigned int nx0, unsigned int ny0, size_t align=0) { + Allocate(nx0,ny0,align); + } + array2(unsigned int nx0, unsigned int ny0, T *v0) {Dimension(nx0,ny0,v0);} + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + +#ifndef __NOARRAY2OPT + T *operator [] (int ix) const { + return this->v+ix*ny; + } +#else + array1 operator [] (int ix) const { + __check(ix,nx,2,1); + return array1(ny,this->v+ix*ny); + } +#endif + T& operator () (int ix, int iy) const { + __check(ix,nx,2,1); + __check(iy,ny,2,2); + return this->v[ix*ny+iy]; + } + T& operator () (int i) const { + __check(i,this->size,2,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array2& operator = (T a) {this->Load(a); return *this;} + array2& operator = (T *a) {this->Load(a); return *this;} + array2& operator = (const array2& A) { + __checkEqual(nx,A.Nx(),2,1); + __checkEqual(ny,A.Ny(),2,2); + this->Load(A()); + A.Purge(); + return *this; + } + + array2& operator += (const array2& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array2& operator -= (const array2& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + array2& operator *= (const array2& A); + + array2& operator += (T a) { + __checkSize(); + unsigned int inc=ny+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array2& operator -= (T a) { + __checkSize(); + unsigned int inc=ny+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } + array2& operator *= (T a) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] *= a; + return *this; + } + + void Identity() { + this->Load((T) 0); + __checkSize(); + unsigned int inc=ny+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i]=(T) 1; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array2& A) +{ + T *p=A(); + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + s << *(p++) << " "; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array2& A) +{ + return A.Input(s); +} + +template +class array3 : public array1 { +protected: + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int nyz; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0) { + nx=nx0; ny=ny0; nz=nz0; nyz=ny*nz; + this->size=nx*nyz; + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, T *v0) { + Dimension(nx0,ny0,nz0); + this->v=v0; + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + size_t align=0) { + Dimension(nx0,ny0,nz0); + __checkActivate(3,align); + } + + array3() : nx(0), ny(0), nz(0), nyz(0) {} + array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, + size_t align=0) { + Allocate(nx0,ny0,nz0,align); + } + array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, T *v0) { + Dimension(nx0,ny0,nz0,v0); + } + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + unsigned int Nz() const {return nz;} + + array2 operator [] (int ix) const { + __check(ix,nx,3,1); + return array2(ny,nz,this->v+ix*nyz); + } + T& operator () (int ix, int iy, int iz) const { + __check(ix,nx,3,1); + __check(iy,ny,3,2); + __check(iz,nz,3,3); + return this->v[ix*nyz+iy*nz+iz]; + } + T& operator () (int i) const { + __check(i,this->size,3,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array3& operator = (T a) {this->Load(a); return *this;} + array3& operator = (T *a) {this->Load(a); return *this;} + array3& operator = (const array3& A) { + __checkEqual(nx,A.Nx(),3,1); + __checkEqual(ny,A.Ny(),3,2); + __checkEqual(nz,A.Nz(),3,3); + this->Load(A()); + A.Purge(); + return *this; + } + + array3& operator += (array3& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array3& operator -= (array3& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + + array3& operator += (T a) { + __checkSize(); + unsigned int inc=nyz+nz+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array3& operator -= (T a) { + __checkSize(); + unsigned int inc=nyz+nz+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array3& A) +{ + T *p=A(); + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + for(unsigned int k=0; k < A.Nz(); k++) { + s << *(p++) << " "; + } + s << _newl; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array3& A) +{ + return A.Input(s); +} + +template +class array4 : public array1 { +protected: + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int nw; + unsigned int nyz; + unsigned int nzw; + unsigned int nyzw; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0) { + nx=nx0; ny=ny0; nz=nz0; nw=nw0; nzw=nz*nw; nyzw=ny*nzw; + this->size=nx*nyzw; + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0) { + Dimension(nx0,ny0,nz0,nw0); + this->v=v0; + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, size_t align=0) { + Dimension(nx0,ny0,nz0,nw0); + __checkActivate(4,align); + } + + array4() : nx(0), ny(0), nz(0), nw(0), nyz(0), nzw(0), nyzw(0) {} + array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, size_t align=0) {Allocate(nx0,ny0,nz0,nw0,align);} + array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0) { + Dimension(nx0,ny0,nz0,nw0,v0); + } + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + unsigned int Nz() const {return nz;} + unsigned int N4() const {return nw;} + + array3 operator [] (int ix) const { + __check(ix,nx,3,1); + return array3(ny,nz,nw,this->v+ix*nyzw); + } + T& operator () (int ix, int iy, int iz, int iw) const { + __check(ix,nx,4,1); + __check(iy,ny,4,2); + __check(iz,nz,4,3); + __check(iw,nw,4,4); + return this->v[ix*nyzw+iy*nzw+iz*nw+iw]; + } + T& operator () (int i) const { + __check(i,this->size,4,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array4& operator = (T a) {this->Load(a); return *this;} + array4& operator = (T *a) {this->Load(a); return *this;} + array4& operator = (const array4& A) { + __checkEqual(nx,A.Nx(),4,1); + __checkEqual(ny,A.Ny(),4,2); + __checkEqual(nz,A.Nz(),4,3); + __checkEqual(nw,A.N4(),4,4); + this->Load(A()); + A.Purge(); + return *this; + } + + array4& operator += (array4& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array4& operator -= (array4& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + + array4& operator += (T a) { + __checkSize(); + unsigned int inc=nyzw+nzw+nw+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array4& operator -= (T a) { + __checkSize(); + unsigned int inc=nyzw+nzw+nw+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array4& A) +{ + T *p=A; + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + for(unsigned int k=0; k < A.Nz(); k++) { + for(unsigned int l=0; l < A.N4(); l++) { + s << *(p++) << " "; + } + s << _newl; + } + s << _newl; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array4& A) +{ + return A.Input(s); +} + +template +class array5 : public array1 { +protected: + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int nw; + unsigned int nv; + unsigned int nwv; + unsigned int nzwv; + unsigned int nyzwv; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0) { + nx=nx0; ny=ny0; nz=nz0; nw=nw0; nv=nv0; nwv=nw*nv; nzwv=nz*nwv; + nyzwv=ny*nzwv; + this->size=nx*nyzwv; + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0) { + Dimension(nx0,ny0,nz0,nw0,nv0); + this->v=v0; + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, size_t align=0) { + Dimension(nx0,ny0,nz0,nw0,nv0); + __checkActivate(5,align); + } + + array5() : nx(0), ny(0), nz(0), nw(0), nv(0), nwv(0), nzwv(0), nyzwv(0) {} + array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, size_t align=0) { + Allocate(nx0,ny0,nz0,nw0,nv0,align); + } + array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0) { + Dimension(nx0,ny0,nz0,nw0,nv0,nv0); + } + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + unsigned int Nz() const {return nz;} + unsigned int N4() const {return nw;} + unsigned int N5() const {return nv;} + + array4 operator [] (int ix) const { + __check(ix,nx,4,1); + return array4(ny,nz,nw,nv,this->v+ix*nyzwv); + } + T& operator () (int ix, int iy, int iz, int iw, int iv) const { + __check(ix,nx,5,1); + __check(iy,ny,5,2); + __check(iz,nz,5,3); + __check(iw,nw,5,4); + __check(iv,nv,5,5); + return this->v[ix*nyzwv+iy*nzwv+iz*nwv+iw*nv+iv]; + } + T& operator () (int i) const { + __check(i,this->size,5,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array5& operator = (T a) {this->Load(a); return *this;} + array5& operator = (T *a) {this->Load(a); return *this;} + array5& operator = (const array5& A) { + __checkEqual(nx,A.Nx(),5,1); + __checkEqual(ny,A.Ny(),5,2); + __checkEqual(nz,A.Nz(),5,3); + __checkEqual(nw,A.N4(),5,4); + __checkEqual(nv,A.N5(),5,5); + this->Load(A()); + A.Purge(); + return *this; + } + + array5& operator += (array5& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array5& operator -= (array5& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + + array5& operator += (T a) { + __checkSize(); + unsigned int inc=nyzwv+nzwv+nwv+nv+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array5& operator -= (T a) { + __checkSize(); + unsigned int inc=nyzwv+nzwv+nwv+nv+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array5& A) +{ + T *p=A; + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + for(unsigned int k=0; k < A.Nz(); k++) { + for(unsigned int l=0; l < A.N4(); l++) { + for(unsigned int l=0; l < A.N5(); l++) { + s << *(p++) << " "; + } + s << _newl; + } + s << _newl; + } + s << _newl; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array5& A) +{ + return A.Input(s); +} + +#undef __check + +#ifdef NDEBUG +#define __check(i,n,o,dim,m) +#else +#define __check(i,n,o,dim,m) this->Check(i-o,n,dim,m,o) +#endif + +template +class Array1 : public array1 { +protected: + T *voff; // Offset pointer to memory block + int ox; +public: + void Offsets() { + voff=this->v-ox; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, int ox0=0) { + this->size=nx0; + ox=ox0; + Offsets(); + } + void Dimension(unsigned int nx0, T *v0, int ox0=0) { + this->v=v0; + Dimension(nx0,ox0); + this->clear(this->allocated); + } + void Dimension(const Array1& A) { + Dimension(A.size,A.v,A.ox); this->state=A.test(this->temporary); + } + + void Allocate(unsigned int nx0, int ox0=0, size_t align=0) { + Dimension(nx0,ox0); + __checkActivate(1,align); + Offsets(); + } + + void Reallocate(unsigned int nx0, int ox0=0, size_t align=0) { + this->Deallocate(); + Allocate(nx0,ox0,align); + } + + Array1() : ox(0) {} + Array1(unsigned int nx0, int ox0=0, size_t align=0) { + Allocate(nx0,ox0,align); + } + Array1(unsigned int nx0, T *v0, int ox0=0) { + Dimension(nx0,v0,ox0); + } + Array1(T *v0, int ox0=0) { + Dimension(INT_MAX,v0,ox0); + } + +#ifdef NDEBUG + typedef T *opt; +#else + typedef Array1 opt; +#endif + + T& operator [] (int ix) const {__check(ix,this->size,ox,1,1); return voff[ix];} + T& operator () (int i) const {__check(i,this->size,0,1,1); return this->v[i];} + T* operator () () const {return this->v;} + operator T* () const {return this->v;} + + Array1 operator + (int i) const {return Array1(this->size-i,this->v+i,ox);} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array1& operator = (T a) {this->Load(a); return *this;} + Array1& operator = (const T *a) {this->Load(a); return *this;} + Array1& operator = (const Array1& A) { + __checkEqual(this->size,A.Size(),1,1); + __checkEqual(ox,A.Ox(),1,1); + this->Load(A()); + A.Purge(); + return *this; + } + Array1& operator = (const array1& A) { + __checkEqual(this->size,A.Size(),1,1); + __checkEqual(ox,0,1,1); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} +}; + +template +class Array2 : public array2 { +protected: + T *voff,*vtemp; + int ox,oy; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->ny; + voff=vtemp-oy; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, int ox0=0, int oy0=0) { + this->nx=nx0; this->ny=ny0; + this->size=this->nx*this->ny; + ox=ox0; oy=oy0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, T *v0, int ox0=0, + int oy0=0) { + this->v=v0; + Dimension(nx0,ny0,ox0,oy0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, int ox0=0, int oy0=0, + size_t align=0) { + Dimension(nx0,ny0,ox0,oy0); + __checkActivate(2,align); + Offsets(); + } + + Array2() : ox(0), oy(0) {} + Array2(unsigned int nx0, unsigned int ny0, int ox0=0, int oy0=0, + size_t align=0) { + Allocate(nx0,ny0,ox0,oy0,align); + } + Array2(unsigned int nx0, unsigned int ny0, T *v0, int ox0=0, int oy0=0) { + Dimension(nx0,ny0,v0,ox0,oy0); + } + +#ifndef __NOARRAY2OPT + T *operator [] (int ix) const { + return voff+ix*(int) this->ny; + } +#else + Array1 operator [] (int ix) const { + __check(ix,this->nx,ox,2,1); + return Array1(this->ny,vtemp+ix*(int) this->ny,oy); + } +#endif + + T& operator () (int ix, int iy) const { + __check(ix,this->nx,ox,2,1); + __check(iy,this->ny,oy,2,2); + return voff[ix*(int) this->ny+iy]; + } + T& operator () (int i) const { + __check(i,this->size,0,2,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array2& operator = (T a) {this->Load(a); return *this;} + Array2& operator = (T *a) {this->Load(a); return *this;} + Array2& operator = (const Array2& A) { + __checkEqual(this->nx,A.Nx(),2,1); + __checkEqual(this->ny,A.Ny(),2,2); + __checkEqual(ox,A.Ox(),2,1); + __checkEqual(oy,A.Oy(),2,2); + this->Load(A()); + A.Purge(); + return *this; + } + Array2& operator = (const array2& A) { + __checkEqual(this->nx,A.Nx(),2,1); + __checkEqual(this->ny,A.Ny(),2,2); + __checkEqual(ox,0,2,1); + __checkEqual(oy,0,2,2); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} + int Oy() const {return oy;} + +}; + +template +class Array3 : public array3 { +protected: + T *voff,*vtemp; + int ox,oy,oz; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->nyz; + voff=vtemp-oy*(int) this->nz-oz; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + int ox0=0, int oy0=0, int oz0=0) { + this->nx=nx0; this->ny=ny0; this->nz=nz0; this->nyz=this->ny*this->nz; + this->size=this->nx*this->nyz; + ox=ox0; oy=oy0; oz=oz0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + T *v0, int ox0=0, int oy0=0, int oz0=0) { + this->v=v0; + Dimension(nx0,ny0,nz0,ox0,oy0,oz0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + int ox0=0, int oy0=0, int oz0=0, size_t align=0) { + Dimension(nx0,ny0,nz0,ox0,oy0,oz0); + __checkActivate(3,align); + Offsets(); + } + + Array3() : ox(0), oy(0), oz(0) {} + Array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, + int ox0=0, int oy0=0, int oz0=0, size_t align=0) { + Allocate(nx0,ny0,nz0,ox0,oy0,oz0,align); + } + Array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, T *v0, + int ox0=0, int oy0=0, int oz0=0) { + Dimension(nx0,ny0,nz0,v0,ox0,oy0,oz0); + } + + Array2 operator [] (int ix) const { + __check(ix,this->nx,ox,3,1); + return Array2(this->ny,this->nz,vtemp+ix*(int) this->nyz,oy,oz); + } + T& operator () (int ix, int iy, int iz) const { + __check(ix,this->nx,ox,3,1); + __check(iy,this->ny,oy,3,2); + __check(iz,this->nz,oz,3,3); + return voff[ix*(int) this->nyz+iy*(int) this->nz+iz]; + } + T& operator () (int i) const { + __check(i,this->size,0,3,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array3& operator = (T a) {this->Load(a); return *this;} + Array3& operator = (T *a) {this->Load(a); return *this;} + Array3& operator = (const Array3& A) { + __checkEqual(this->nx,A.Nx(),3,1); + __checkEqual(this->ny,A.Ny(),3,2); + __checkEqual(this->nz,A.Nz(),3,3); + __checkEqual(ox,A.Ox(),3,1); + __checkEqual(oy,A.Oy(),3,2); + __checkEqual(oz,A.Oz(),3,3); + this->Load(A()); + A.Purge(); + return *this; + } + Array3& operator = (const array3& A) { + __checkEqual(this->nx,A.Nx(),3,1); + __checkEqual(this->ny,A.Ny(),3,2); + __checkEqual(this->nz,A.Nz(),3,3); + __checkEqual(ox,0,3,1); + __checkEqual(oy,0,3,2); + __checkEqual(oz,0,3,3); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} + int Oy() const {return oy;} + int Oz() const {return oz;} + +}; + +template +class Array4 : public array4 { +protected: + T *voff,*vtemp; + int ox,oy,oz,ow; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->nyzw; + voff=vtemp-oy*(int) this->nzw-oz*(int) this->nw-ow; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0) { + this->nx=nx0; this->ny=ny0; this->nz=nz0; this->nw=nw0; + this->nzw=this->nz*this->nw; this->nyzw=this->ny*this->nzw; + this->size=this->nx*this->nyzw; + ox=ox0; oy=oy0; oz=oz0; ow=ow0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0) { + this->v=v0; + Dimension(nx0,ny0,nz0,nw0,ox0,oy0,oz0,ow0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, size_t align=0) { + Dimension(nx0,ny0,nz0,nw0,ox0,oy0,oz0,ow0); + __checkActivate(4,align); + Offsets(); + } + + Array4() : ox(0), oy(0), oz(0), ow(0) {} + Array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, size_t align=0) { + Allocate(nx0,ny0,nz0,nw0,ox0,oy0,oz0,ow0,align); + } + Array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0) { + Dimension(nx0,ny0,nz0,nw0,v0,ox0,oy0,oz0,ow0); + } + + Array3 operator [] (int ix) const { + __check(ix,this->nx,ox,3,1); + return Array3(this->ny,this->nz,this->nw,vtemp+ix*(int) this->nyzw, + oy,oz,ow); + } + T& operator () (int ix, int iy, int iz, int iw) const { + __check(ix,this->nx,ox,4,1); + __check(iy,this->ny,oy,4,2); + __check(iz,this->nz,oz,4,3); + __check(iw,this->nw,ow,4,4); + return voff[ix*(int) this->nyzw+iy*(int) this->nzw+iz*(int) this->nw+iw]; + } + T& operator () (int i) const { + __check(i,this->size,0,4,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array4& operator = (T a) {this->Load(a); return *this;} + Array4& operator = (T *a) {this->Load(a); return *this;} + + Array4& operator = (const Array4& A) { + __checkEqual(this->nx,A.Nx(),4,1); + __checkEqual(this->ny,A.Ny(),4,2); + __checkEqual(this->nz,A.Nz(),4,3); + __checkEqual(this->nw,A.N4(),4,4); + __checkEqual(ox,A.Ox(),4,1); + __checkEqual(oy,A.Oy(),4,2); + __checkEqual(oz,A.Oz(),4,3); + __checkEqual(ow,A.O4(),4,4); + this->Load(A()); + A.Purge(); + return *this; + } + Array4& operator = (const array4& A) { + __checkEqual(this->nx,A.Nx(),4,1); + __checkEqual(this->ny,A.Ny(),4,2); + __checkEqual(this->nz,A.Nz(),4,3); + __checkEqual(this->nw,A.N4(),4,4); + __checkEqual(this->nx,A.Nx(),4,1); + __checkEqual(this->ny,A.Nx(),4,2); + __checkEqual(this->nz,A.Nx(),4,3); + __checkEqual(this->nw,A.Nx(),4,4); + __checkEqual(ox,0,4,1); + __checkEqual(oy,0,4,2); + __checkEqual(oz,0,4,3); + __checkEqual(ow,0,4,4); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} + int Oy() const {return oy;} + int Oz() const {return oz;} + int O4() const {return ow;} +}; + +template +class Array5 : public array5 { +protected: + T *voff,*vtemp; + int ox,oy,oz,ow,ov; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->nyzwv; + voff=vtemp-oy*(int) this->nzwv-oz*(int) this->nwv-ow*(int) this->nv-ov; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0) { + this->nx=nx0; this->ny=ny0; this->nz=nz0; this->nw=nw0; this->nv=nv0; + this->nwv=this->nw*this->nv; this->nzwv=this->nz*this->nwv; + this->nyzwv=this->ny*this->nzwv; + this->size=this->nx*this->nyzwv; + ox=ox0; oy=oy0; oz=oz0; ow=ow0; ov=ov0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0) { + this->v=v0; + Dimension(nx0,ny0,nz0,nw0,nv0,ox0,oy0,oz0,ow0,ov0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0, + size_t align=0) { + Dimension(nx0,ny0,nz0,nw0,nv0,ox0,oy0,oz0,ow0,ov0); + __checkActivate(5,align); + Offsets(); + } + + Array5() : ox(0), oy(0), oz(0), ow(0), ov(0) {} + Array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, int ox0=0, int oy0=0, + int oz0=0, int ow0=0, int ov0=0, size_t align=0) { + Allocate(nx0,ny0,nz0,nw0,nv0,ox0,oy0,oz0,ow0,ov0,align); + } + Array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0) { + Dimension(nx0,ny0,nz0,nw0,nv0,v0,ox0,oy0,oz0,ow0,ov0); + } + + Array4 operator [] (int ix) const { + __check(ix,this->nx,ox,4,1); + return Array4(this->ny,this->nz,this->nw,this->nv, + vtemp+ix*(int) this->nyzwv,oy,oz,ow,ov); + } + T& operator () (int ix, int iy, int iz, int iw, int iv) const { + __check(ix,this->nx,ox,5,1); + __check(iy,this->ny,oy,5,2); + __check(iz,this->nz,oz,5,3); + __check(iw,this->nw,ow,5,4); + __check(iv,this->nv,ov,5,5); + return voff[ix*(int) this->nyzwv+iy*(int) this->nzwv+iz*(int) this->nwv + +iw*(int) this->nv+iv]; + } + T& operator () (int i) const { + __check(i,this->size,0,5,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array5& operator = (T a) {this->Load(a); return *this;} + Array5& operator = (T *a) {this->Load(a); return *this;} + + Array5& operator = (const Array5& A) { + __checkEqual(this->nx,A.Nx(),5,1); + __checkEqual(this->ny,A.Ny(),5,2); + __checkEqual(this->nz,A.Nz(),5,3); + __checkEqual(this->nw,A.N4(),5,4); + __checkEqual(this->nv,A.N5(),5,5); + __checkEqual(ox,A.Ox(),5,1); + __checkEqual(oy,A.Oy(),5,2); + __checkEqual(oz,A.Oz(),5,3); + __checkEqual(ow,A.O4(),5,4); + __checkEqual(ov,A.O5(),5,5); + this->Load(A()); + A.Purge(); + return *this; + } + Array5& operator = (const array5& A) { + __checkEqual(this->nx,A.Nx(),5,1); + __checkEqual(this->ny,A.Ny(),5,2); + __checkEqual(this->nz,A.Nz(),5,3); + __checkEqual(this->nw,A.N4(),5,4); + __checkEqual(this->nv,A.N5(),5,5); + __checkEqual(ox,0,5,1); + __checkEqual(oy,0,5,2); + __checkEqual(oz,0,5,3); + __checkEqual(ow,0,5,4); + __checkEqual(ov,0,5,5); + this->Load(A()); + A.Purge(); + return *this; + } + int Ox() const {return ox;} + int Oy() const {return oy;} + int Oz() const {return oz;} + int O4() const {return ow;} + int O5() const {return ov;} +}; + +template +inline bool Active(array1& A) +{ + return A.Size(); +} + +template +inline bool Active(T *A) +{ + return A; +} + +template +inline void Set(T *&A, T *v) +{ + A=v; +} + +template +inline void Set(array1& A, T *v) +{ + A.Set(v); +} + +template +inline void Set(array1& A, const array1& B) +{ + A.Set(B()); +} + +template +inline void Set(Array1& A, T *v) +{ + A.Set(v); +} + +template +inline void Set(Array1& A, const array1& B) +{ + A.Set(B()); +} + +template +inline void Null(T *&A) +{ + A=NULL; +} + +template +inline void Null(array1& A) +{ + A.Dimension(0); +} + +template +inline void Dimension(T *&, unsigned int) +{ +} + +template +inline void Dimension(array1 &A, unsigned int n) +{ + A.Dimension(n); +} + +template +inline void Dimension(T *&A, unsigned int, T *v) +{ + A=v; +} + +template +inline void Dimension(array1& A, unsigned int n, T *v) +{ + A.Dimension(n,v); +} + +template +inline void Dimension(Array1& A, unsigned int n, T *v) +{ + A.Dimension(n,v,0); +} + +template +inline void Dimension(T *&A, T *v) +{ + A=v; +} + +template +inline void Dimension(array1& A, const array1& B) +{ + A.Dimension(B); +} + +template +inline void Dimension(Array1& A, const Array1& B) +{ + A.Dimension(B); +} + +template +inline void Dimension(Array1& A, const array1& B) +{ + A.Dimension(B); +} + +template +inline void Dimension(array1& A, unsigned int n, const array1& B) +{ + A.Dimension(n,B); +} + +template +inline void Dimension(Array1& A, unsigned int n, const array1& B, int o) +{ + A.Dimension(n,B,o); +} + +template +inline void Dimension(Array1& A, unsigned int n, T *v, int o) +{ + A.Dimension(n,v,o); +} + +template +inline void Dimension(T *&A, unsigned int, T *v, int o) +{ + A=v-o; +} + +template +inline void Allocate(T *&A, unsigned int n, size_t align=0) +{ + if(align) newAlign(A,n,align); + else A=new T[n]; +} + +template +inline void Allocate(array1& A, unsigned int n, size_t align=0) +{ + A.Allocate(n,align); +} + +template +inline void Allocate(Array1& A, unsigned int n, size_t align=0) +{ + A.Allocate(n,align); +} + +template +inline void Allocate(T *&A, unsigned int n, int o, size_t align=0) +{ + Allocate(A,n,align); + A -= o; +} + +template +inline void Allocate(Array1& A, unsigned int n, int o, size_t align=0) +{ + A.Allocate(n,o,align); +} + +template +inline void Deallocate(T *A) +{ + if(A) delete [] A; +} + +template +inline void Deallocate(array1& A) +{ + A.Deallocate(); +} + +template +inline void Deallocate(Array1& A) +{ + A.Deallocate(); +} + +template +inline void Deallocate(T *A, int o) +{ + if(A) delete [] (A+o); +} + +template +inline void Deallocate(Array1& A, int) +{ + A.Deallocate(); +} + +template +inline void Reallocate(T *&A, unsigned int n, size_t align=0) +{ + if(A) delete [] A; + Allocate(A,n,align); +} + +template +inline void Reallocate(array1& A, unsigned int n) +{ + A.Reallocate(n); +} + +template +inline void Reallocate(Array1& A, unsigned int n) +{ + A.Reallocate(n); +} + +template +inline void Reallocate(T *&A, unsigned int n, int o, size_t align=0) +{ + if(A) delete [] A; + Allocate(A,n,align); + A -= o; +} + +template +inline void Reallocate(Array1& A, unsigned int n, int o, size_t align=0) +{ + A.Reallocate(n,o,align); +} + +template +inline void CheckReallocate(T& A, unsigned int n, unsigned int& old, + size_t align=0) +{ + if(n > old) {A.Reallocate(n,align); old=n;} +} + +template +inline void CheckReallocate(T& A, unsigned int n, int o, unsigned int& old, + size_t align=0) +{ + if(n > old) {A.Reallocate(n,o,align); old=n;} +} + +} + +#undef __check +#undef __checkSize +#undef __checkActivate + +#endif diff --git a/examples/Integration_with_fftw/Makefile b/examples/Integration_with_fftw/Makefile new file mode 100644 index 0000000..a50432c --- /dev/null +++ b/examples/Integration_with_fftw/Makefile @@ -0,0 +1,69 @@ +# Makefile + +# includes +MMSP_PATH=/home/arun/mmsp +incdir = $(MMSP_PATH)/include +utildir = $(MMSP_PATH)/utility +algodir = $(MMSP_PATH)/algorithms + +# compilers/flags +compiler = g++ -std=c++11 -O3 +pcompiler = mpic++ -std=c++11 -O3 -Wall -pedantic +flags = -I$(incdir) -I$(algodir) -I$(utildir) +prefourierflags = -I fftw/api -fopenmp +postfourierflags = fftw/fftw++.cc +fourierlinkers = -lfftw3 -lfftw3_omp -lm + + + +# IBM compiler for AMOS +BG_XL = /bgsys/drivers/ppcfloor/comm/xl +BG_INC = -I$(BG_XL)/include +BG_LIB = -L$(BG_XL)/lib +qcompiler = $(BG_XL)/bin/mpixlcxx_r -O3 -qflag=w -qstrict -qmaxmem=-1 +qflags = $(BG_INC) $(BG_LIB) $(flags) -I/bgsys/apps/CCNI/zlib/zlib-1.2.7/include -L/bgsys/apps/CCNI/zlib/zlib-1.2.7/lib + +# dependencies +core = #$Thermo.hpp \ + #$(incdir)/MMSP.main.hpp \ + $(incdir)/MMSP.utility.h \ + $(incdir)/MMSP.grid.h \ + $(incdir)/MMSP.sparse.h \ + +# the program +sparse: $(core) + $(compiler) $(flags) $(prefourierflags) main.cpp $(postfourierflags) $(fourierlinkers) $< -o sparse.out -lz #-include mpi.h + +parallel: $(core) + $(pcompiler) $(flags) main_parallel.cpp $< -o parallel.out -lz #-include mpi.h + +sparse_serial: $(core) + $(compiler) $(flags) $(prefourierflags) main.cpp $(postfourierflags) $(fourierlinkers) $< -o sparse_serial.out -lz # + +bgq: sp-xmpf.cpp $(core) + $(qcompiler) -DBGQ $(qflags) $< -o q_sparse.out -lz + +tool: tool.cpp $(core) /usr/include/IL/devil_cpp_wrapper.hpp + $(pcompiler) $(flags) -I /usr/include/IL -include il.h $< -o $@ -lz -lIL -lILU -lILUT + +mmsp2png : mmsp2png.cpp + $(compiler) $(flags) $< -o $@ -lz -lpng + +# convert MMSP grid file to ParaView Data file type +mmsp2pvd : mmsp2pvd.cpp + $(compiler) $(flags) $< -o $@ -lz + +# convert MMSP grid file to tab-delimited ASCII (TSV) file type +mmsp2tsv : mmsp2tsv.cpp + $(compiler) $(flags) $< -o $@ -lz + +# convert MMSP grid file to VTK Image file type +mmsp2vti : mmsp2vti.cpp + $(compiler) $(flags) $< -o $@ -lz + +# convert MMSP grid file to XYZ point cloud file type +mmsp2xyz : mmsp2xyz.cpp + $(compiler) $(flags) $< -o $@ -lz + +clean: + rm -rf sparse.out output_* pf_* delta* c_* IE* *~ diff --git a/examples/Integration_with_fftw/Thermo.hpp b/examples/Integration_with_fftw/Thermo.hpp new file mode 100644 index 0000000..5115dd6 --- /dev/null +++ b/examples/Integration_with_fftw/Thermo.hpp @@ -0,0 +1,206 @@ +#define L0_BCC_Al_Ti_V (32045.963) +#define L1_BCC_Al_Ti_V 0.0 //(-113926.0 + 40*T) +#define L2_BCC_Al_Ti_V 0.0 //(75972.5 - 150*T) +#define L0_HCP_Al_Ti_V 0.0 +#define L1_HCP_Al_Ti_V 0.0 //(-206074.0 - 40*T) +#define L2_HCP_Al_Ti_V 0 +#define L0_BCC_Ti_V (10500-1.5*T) +#define L1_BCC_Ti_V 0.0 //2025.39 +#define L2_BCC_Ti_V 0.0 +#define L0_HCP_Ti_V 20000.0 +#define L1_HCP_Ti_V 0.0 +#define L2_HCP_Ti_V 0.0 +#define L0_BCC_Al_Ti (-125980.0+39*T) +#define L1_BCC_Al_Ti 0.0 //4890.0 +#define L2_BCC_Al_Ti 0.0 //400.0 +#define L0_HCP_Al_Ti (-128664.0+37.863*T) +#define L1_HCP_Al_Ti 0.0 //(-3475.0 + 0.825*T) +#define L2_HCP_Al_Ti 0.0 //-7756.0 +#define L0_HCP_Al_V (-95000.0+20*T) +#define L1_HCP_Al_V 0.0 +#define L2_HCP_Al_V 0.0 +#define L0_BCC_Al_V (-95000.0+20*T) +#define L1_BCC_Al_V 0.0 //6645.0 +#define L2_BCC_Al_V 0.0 //-68596.0 + +#define Al_alpha_a_1 -2495.15 +#define Al_alpha_b_1 135.29 +#define Al_alpha_c_1 -24.37 +#define Al_alpha_d_1 -0.00188 + +#define Al_alpha_a_2 -5795.24 +#define Al_alpha_b_2 221.25 +#define Al_alpha_c_2 -38.58 +#define Al_alpha_d_2 -0.01853 + +#define Al_alpha_a_3 -5797.36 +#define Al_alpha_b_3 186.88 +#define Al_alpha_c_3 -31.75 +#define Al_alpha_d_3 0.0 + +#define Al_beta_a_1 2106.85 +#define Al_beta_b_1 132.28 +#define Al_beta_c_1 -24.37 +#define Al_beta_d_1 -0.00188 + +#define Al_beta_a_2 -1193.24 +#define Al_beta_b_2 218.24 +#define Al_beta_c_2 -38.58 +#define Al_beta_d_2 -0.01853 + +#define Al_beta_a_3 -1195.36 +#define Al_beta_b_3 183.87 +#define Al_beta_c_3 -31.75 +#define Al_beta_d_3 0.0 + +#define Ti_alpha_a_1 -8059.92 +#define Ti_alpha_b_1 133.62 +#define Ti_alpha_c_1 -23.99 +#define Ti_alpha_d_1 -0.00477 + +#define Ti_alpha_a_2 -7811.82 +#define Ti_alpha_b_2 132.98 +#define Ti_alpha_c_2 -23.98 +#define Ti_alpha_d_2 -0.0042 + +#define Ti_alpha_a_3 908.84 +#define Ti_alpha_b_3 66.98 +#define Ti_alpha_c_3 -14.95 +#define Ti_alpha_d_3 -0.00815 + +#define Ti_alpha_a_4 -124526.79 +#define Ti_alpha_b_4 638.81 +#define Ti_alpha_c_4 -87.22 +#define Ti_alpha_d_4 -0.00821 + +#define Ti_beta_a_1 -1272.06 +#define Ti_beta_b_1 134.71 +#define Ti_beta_c_1 -25.58 +#define Ti_beta_d_1 -0.00066 + +#define Ti_beta_a_2 6667.39 +#define Ti_beta_b_2 105.37 +#define Ti_beta_c_2 -22.37 +#define Ti_beta_d_2 0.00122 + +#define Ti_beta_a_3 26483.26 +#define Ti_beta_b_3 -182.43 +#define Ti_beta_c_3 19.09 +#define Ti_beta_d_3 -22.01 + + +#define V_alpha_a_1 -3930.43 +#define V_alpha_b_1 135.74 +#define V_alpha_c_1 -24.13 +#define V_alpha_d_1 -0.0031 + +#define V_alpha_a_2 -3967.84 +#define V_alpha_b_2 145.69 +#define V_alpha_c_2 -25.90 +#define V_alpha_d_2 0.000063 + +#define V_alpha_a_3 -37689.86 +#define V_alpha_b_3 323.54 +#define V_alpha_c_3 -47.43 +#define V_alpha_d_3 0.0 + +#define V_beta_a_1 -7930.43 +#define V_beta_b_1 133.35 +#define V_beta_c_1 -24.13 +#define V_beta_d_1 -0.0031 + +#define V_beta_a_2 -7967.84 +#define V_beta_b_2 143.29 +#define V_beta_c_2 -25.90 +#define V_beta_d_2 0.000063 + +#define V_beta_a_3 -41689.87 +#define V_beta_b_3 321.14 +#define V_beta_c_3 -47.43 +#define V_beta_d_3 0.0 + + +#define q_alpha_al_al -79800 + R*T*log(2.38e-05) +#define q_alpha_al_v -258550 + R*T*log(4.36e-02) +#define q_alpha_al_ti -193200 + R*T*log(1.0e-08) +#define q_alpha_v_al -79800 + R*T*log(2.38e-05) +#define q_alpha_v_v -258550 + R*T*log(4.36e-02) +#define q_alpha_v_ti -251490 -56*T + +#define a_alpha_al_al_ti -491950 +#define a_alpha_al_ti_v 587700 +#define a_alpha_al_al_v 0.0 +#define a_alpha_v_al_ti -529600 +#define a_alpha_v_al_v 0.0 +#define a_alpha_v_ti_v 0.0 + + +#define q_beta_al_al -215000 -80.2*T +#define q_beta_al_v -268000 -97.2*T +#define q_beta_al_ti R*T*log(5.19e-10*exp(-96000/(R*T))) +#define q_beta_v_al -325008.12 -73.99*T +#define q_beta_v_v -325008.12 -73.99*T +#define q_beta_v_ti -179392.69 - 106.68*T + +#define a_beta_al_al_ti -499946.15 + 333.87*T +#define a1_beta_al_al_ti -407271.50 + 286.27*T +#define a_beta_al_al_v -751405.09 +#define a_beta_al_ti_v 0.0 +#define a_beta_v_al_v -1300707.37 +#define a_beta_v_ti_v +159597.07 - 48.62*T +#define a1_beta_v_ti_v -10551.39 +#define a_beta_v_al_ti 0.0 + +void thermo_auxillary_terms(MMSP::vector gradient, MMSP::vector gradientsq, double c_Al, double c_V) +{ + double grad_cal = 0 ; + double grad_cv = 0 ; + double gradsq_cal = 0 ; + double gradsq_cv = 0 ; + for(int i = 0; i < dim ; i++) + { + grad_cal += gradient[i][20] ; + grad_cv += gradient[i][21] ; + gradsq_cal += gradientsq[i][20] ; + gradsq_cv += gradientsq[i][21] ; + } + dGAlpha_dAl = (G_Al_alpha/G_normalize - G_Ti_alpha/G_normalize) + log(c_Al) - log((1-c_Al-c_V)) + c_V*L0_HCP_Al_V/G_normalize + + (1-2*c_Al-c_V)*L0_HCP_Al_Ti/G_normalize - c_V*L0_HCP_Ti_V/G_normalize ; + dGBeta_dAl = (G_Al_beta/G_normalize - G_Ti_beta/G_normalize) + log(c_Al) - log((1-c_Al-c_V)) + c_V*L0_BCC_Al_V/G_normalize + + (1-2*c_Al-c_V)*L0_BCC_Al_Ti/G_normalize - c_V*L0_BCC_Ti_V/G_normalize + (c_V*(1-c_Al-c_V) + - c_Al*c_V)*L0_BCC_Al_Ti_V/G_normalize ; + dGAlpha_dV = (G_V_alpha/G_normalize - G_Ti_alpha/G_normalize) + log(c_V) - log((1-c_Al-c_V)) + c_Al*L0_HCP_Al_V/G_normalize + + (1-c_Al-2*c_V)*L0_HCP_Ti_V/G_normalize - c_Al*L0_HCP_Al_Ti/G_normalize ; + dGBeta_dV = (G_V_beta/G_normalize - G_Ti_beta/G_normalize) + log(c_V) - log((1-c_Al-c_V)) + c_Al*L0_BCC_Al_V/G_normalize + + (1-c_Al-2*c_V)*L0_BCC_Ti_V/G_normalize - c_Al*L0_BCC_Al_Ti/G_normalize + (c_Al*(1-c_Al-c_V) - + c_Al*c_V)*L0_BCC_Al_Ti_V/G_normalize ; + del_dGAlpha_dAl = grad_cal*(1.0/c_Al + 1.0/(1.0-c_Al-c_V) - 2*L0_HCP_Al_Ti/G_normalize) + grad_cv*(1.0/(1.0-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize) ; + del_dGBeta_dAl = grad_cal*(1.0/c_Al + 1/(1-c_Al-c_V) - 2*L0_BCC_Al_Ti/G_normalize - 2*c_V*L0_BCC_Al_Ti_V/G_normalize) + + grad_cv*(1/(1-c_Al-c_V) + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) ; + del_dGAlpha_dV = grad_cv*(1.0/c_V + 1/(1-c_Al-c_V) - 2*L0_HCP_Ti_V/G_normalize) + grad_cal*(1/(1-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize - L0_HCP_Ti_V/G_normalize) ; + del_dGBeta_dV = grad_cv*(1.0/c_V + 1/(1-c_Al-c_V) -2*L0_BCC_Ti_V/G_normalize - 2*c_Al*L0_BCC_Al_Ti_V/G_normalize) + + grad_cal*(1/(1-c_Al-c_V) + L0_BCC_Al_V/G_normalize - L0_BCC_Al_Ti/G_normalize - L0_BCC_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) ; + delsq_dGAlpha_dAl = gradsq_cal*(1.0/c_Al + 1/(1-c_Al-c_V) - 2*L0_HCP_Al_Ti/G_normalize) + gradsq_cv*(1/(1-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize) + grad_cal*(-grad_cal/pow(c_Al,2) + + (grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) + grad_cv*((grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) ; + + delsq_dGAlpha_dV = gradsq_cv*(1.0/c_V + 1/(1-c_Al-c_V) - 2*L0_HCP_Ti_V/G_normalize) + gradsq_cal*(1/(1-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize - L0_HCP_Ti_V/G_normalize) + grad_cv*(-grad_cv/pow(c_V,2) + + (grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) + grad_cal*((grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) ; + + delsq_dGBeta_dAl = gradsq_cal*(1.0/c_Al + 1/(1-c_Al-c_V) - 2*L0_BCC_Al_Ti/G_normalize - 2*c_V*L0_BCC_Al_Ti_V/G_normalize) + + gradsq_cv*(1/(1-c_Al-c_V) + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) + grad_cal*(-grad_cal/pow(c_Al,2) + (grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) - 2*grad_cv*L0_BCC_Al_Ti_V/G_normalize) + grad_cv*((grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) + (-2*grad_cal*grad_cv)*L0_BCC_Al_Ti_V/G_normalize) ; + delsq_dGBeta_dV = gradsq_cv*(1.0/c_V + 1/(1-c_Al-c_V) -2*L0_BCC_Ti_V/G_normalize - 2*c_Al*L0_BCC_Al_Ti_V/G_normalize) + + gradsq_cal*(1/(1-c_Al-c_V) + L0_BCC_Al_V/G_normalize - L0_BCC_Al_Ti/G_normalize - L0_BCC_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) + grad_cv*(-grad_cv/pow(c_V,2) + (grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) - 2*grad_cal*L0_BCC_Al_Ti_V/G_normalize) + grad_cal*((grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) + (-2*grad_cal*grad_cv)*L0_BCC_Al_Ti_V/G_normalize) ; +} + diff --git a/examples/Integration_with_fftw/definitions_v2.hpp b/examples/Integration_with_fftw/definitions_v2.hpp new file mode 100644 index 0000000..c1d5656 --- /dev/null +++ b/examples/Integration_with_fftw/definitions_v2.hpp @@ -0,0 +1,366 @@ + +//------------------------Initialization of global variables/parameters-----------------------// + +double R = 8.314 ; +double T = 1023 ; +double T_orig = 1023; +double cr = 0.0; //Cooling rate (K/s) +double L_orig = 0.139 ; //Phase field mobility +double c_tot = 0.1 ; +double sigma = 0.150; +double V0 = 1.0e-02/60.0 ; +double epsi_sq = 1.0e-07 ; +double L = (sigma*V0)/(epsi_sq*c_tot*R*T); +double G_normalize = R*T ; //Scaling factor for terms having J/mol units +double lold = 9.677*pow(10, -8) ; //Grid size (m) +double lc = 9.677*pow(10,-8) ; //Characteristic length scale, or capillary length +double dx_nd = lold/lc ; // Non-dimensional grid size +double tc = 4.4 ; //Characteristic time scale (s) +double dt_old = 0.44 ; // Dimensional dt (s) +double dt = dt_old/tc; //Non-dimensional dt +double Dalal = 0.001 ; // The next four lines are the components of the Onsager mobility matrix +double Dalv = -0.0008 ; +double Dvv = 0.001 ; +double Dval = -0.0008 ; +double Vm = 0.00001; //Molar volume (m^3/mol) +double w_norm = (R*T)/Vm ; //Scaling factor for the double well height +double epsi_norm = (R*T*pow(lc,2))/Vm; //Scaling factor for the gradient energy coeffcient +int variants = 20 ; // Number of variants : input parameter needed for defining a mmsp-grid +const int dim = 2; //Spatial dimensions +const int nx = 24; +const int ny = 24; +double W_prefac = 6.095 ; //Overall scaling for the double well depth +double W_Al = 0.1 ; //Relative magnitudes of double well depths for the three components +double W_V = 0.1 ; +double W_Ti = 0.15 ; +double scaling = 1.0/(2*3.14*3.14) ; //Scaling factor, needed for Fourier Transformation integrals. +int steps = 10000 ; //Number of simulation steps. +double kappa1 = 0.001 ; +double alpha = 1.0 ; +double gammanuc = 0.5 ; +double kappa_c = 0.076 ; + +//------------------------Definition of global containers/arrays-----------------------// + +const int node_total = nx*ny; +double G_Alpha[node_total], G_Beta[node_total], W[node_total] ; +double hphi[node_total][12], hphiprime[node_total][12], hphidoubleprime[node_total][12]; +double gphi[node_total][12], gphiprime[node_total][12], gphidoubleprime[node_total][12]; +double strain_energy[node_total][3]; +double intenergy[13][nx][ny]; +double dGAlpha_dAl, dGBeta_dAl, dGAlpha_dV, dGBeta_dV, del_dGAlpha_dAl, del_dGBeta_dAl, del_dGAlpha_dV, del_dGBeta_dV, delsq_dGAlpha_dAl, delsq_dGAlpha_dV, delsq_dGBeta_dAl, delsq_dGBeta_dV ; +double G_Al_alpha, G_Ti_alpha, G_V_alpha, G_Al_beta, G_Ti_beta, G_V_beta ; +double epsi[12][3][3] ; + + +//-----------------------Controlling the number and type of output files----------------// + +// If a particular file is not needed, change the value to 0 +bool output_pfsq = 1 ; +bool output_cal = 1 ; +bool output_cv = 1 ; +bool output_chemnuc = 1 ; +bool output_strainintnuc = 1 ; + +//---------------------Definition of functions-------------------------// +void thermo_auxillary_terms(MMSP::vector gradient, MMSP::vector gradientsq, double c_Al, double c_V) ; +void customoutput(int t) ; +void calculate_strains() ; +void fft(CArray& x) ; +void ifft(CArray& x) ; +void intstrain(); +double nodesum() ; + + +//---------------------Definition of grids and grid variables-----------------------// +MMSP::grid grid(variants, 0, nx, 0, ny) ; +MMSP::grid nuc_grid(variants, 0, nx, 0, ny) ; +MMSP::grid gradsqcal_grid(variants, 0, nx, 0, ny) ; +MMSP::grid gradsqcv_grid(variants, 0, nx, 0, ny) ; +MMSP::grid intenergies(variants, 0, nx, 0, ny) ; +MMSP::grid selfenergies(variants, 0, nx, 0, ny) ; + +const double Lx = g1(grid,0) - g0(grid,0) ; +const double Ly = g1(grid,1) - g0(grid,1) ; +const double dx = MMSP::dx(grid, 0) ; +const double dy = MMSP::dx(grid, 1) ; +double fs = nx/Lx; +double k[nx], fk[nx] ; + +//-------------------Definition of user-defined classes---------------------------------// +class sfts +{ + + public: + double e[6] ; + + sfts() + { + e[0] = 0.0 ; + e[1] = 0.0 ; + e[2] = 0.0 ; + e[3] = 0.0 ; + e[4] = 0.0 ; + e[5] = 0.0 ; + + } +}; + +sfts eigen_alpha[12]; + + + +//----------Including the various modules-----------// + +#include "Array.h" +#include "/home/arun/Documents/mmsp-arun/fftw++-2.05/fftw++.h" + +using namespace utils; +using namespace Array; +using namespace fftwpp; + + + +#include "thermo_modules.hpp" +#include "strain_modules.hpp" + + + +//---------User defined functions--------------// + +double nodesum(MMSP::grid grid, MMSP::vector s) +{ + double phisum = 0 ; + for(int h = 0 ; h < length(grid(s)) ; h++) + { + int hindex = MMSP::index(grid(s),h) ; + if((hindex <= 12)) + { + if(grid(s)[hindex] > 0.0001) + { + phisum += grid(s)[hindex] ; + } + } + } + return phisum ; +} + + + +void initialize_epsi() +{ + +epsi[0][0][0] = 0.0806 ; +epsi[0][0][1] = 0.0301 ; +epsi[0][0][2] = -0.0642 ; +epsi[0][1][0] = 0.0301 ; +epsi[0][1][1] = 0.0806 ; +epsi[0][1][2] = -0.0277 ; +epsi[0][2][0] = -0.0642 ; +epsi[0][2][1] = -0.0277 ; +epsi[0][2][2] = 0.3834 ; + +epsi[1][0][0] = 0.3445 ; +epsi[1][0][1] = -0.1183 ; +epsi[1][0][2] = -0.0486 ; +epsi[1][1][0] = -0.1183 ; +epsi[1][1][1] = 0.1056 ; +epsi[1][1][2] = 0.0011 ; +epsi[1][2][0] = -0.0486 ; +epsi[1][2][1] = 0.0011 ; +epsi[1][2][2] = 0.0999 ; + +epsi[2][0][0] = 0.0895 ; +epsi[2][0][1] = -0.0300 ; +epsi[2][0][2] = -0.0635 ; +epsi[2][1][0] = -0.0300 ; +epsi[2][1][1] = 0.0759 ; +epsi[2][1][2] = 0.0214 ; +epsi[2][2][0] = -0.0635 ; +epsi[2][2][1] = 0.0214 ; +epsi[2][2][2] = 0.3847 ; + +epsi[3][0][0] = 0.0895 ; +epsi[3][0][1] = 0.0300 ; +epsi[3][0][2] = -0.0635 ; +epsi[3][1][0] = 0.0300 ; +epsi[3][1][1] = 0.0759 ; +epsi[3][1][2] = -0.0214 ; +epsi[3][2][0] = -0.0635 ; +epsi[3][2][1] = -0.0214 ; +epsi[3][2][2] = 0.3847 ; + +epsi[4][0][0] = 0.0989 ; +epsi[4][0][1] = -0.0021 ; +epsi[4][0][2] = -0.0226 ; +epsi[4][1][0] = -0.0021 ; +epsi[4][1][1] = 0.1575 ; +epsi[4][1][2] = 0.1592 ; +epsi[4][2][0] = -0.0227 ; +epsi[4][2][1] = 0.1592 ; +epsi[4][2][2] = 0.2936 ; + +epsi[5][0][0] = 0.0806 ; +epsi[5][0][1] = -0.0301 ; +epsi[5][0][2] = -0.0642 ; +epsi[5][1][0] = -0.0301 ; +epsi[5][1][1] = 0.0860 ; +epsi[5][1][2] = 0.0277 ; +epsi[5][2][0] = -0.0642 ; +epsi[5][2][1] = 0.0277 ; +epsi[5][2][2] = 0.3834 ; + +epsi[6][0][0] = 0.3240 ; +epsi[6][0][1] = -0.1376 ; +epsi[6][0][2] = -0.0411 ; +epsi[6][1][0] = -0.1376 ; +epsi[6][1][1] = 0.1322 ; +epsi[6][1][2] = -0.0016 ; +epsi[6][2][0] = -0.0411 ; +epsi[6][2][1] = -0.0016 ; +epsi[6][2][2] = 0.0938 ; + +epsi[7][0][0] = 0.0938 ; +epsi[7][0][1] = 0.0016 ; +epsi[7][0][2] = -0.0411 ; +epsi[7][1][0] = 0.0016 ; +epsi[7][1][1] = 0.1322 ; +epsi[7][1][2] = 0.1376 ; +epsi[7][2][0] = -0.0411 ; +epsi[7][2][1] = 0.1376 ; +epsi[7][2][2] = 0.3240 ; + +epsi[8][0][0] = 0.0758 ; +epsi[8][0][1] = -0.0259 ; +epsi[8][0][2] = -0.0278 ; +epsi[8][1][0] = -0.0259 ; +epsi[8][1][1] = 0.0771 ; +epsi[8][1][2] = 0.0101 ; +epsi[8][2][0] = -0.0278 ; +epsi[8][2][1] = 0.0101 ; +epsi[8][2][2] = 0.3971 ; + +epsi[9][0][0] = 0.3456 ; +epsi[9][0][1] = -0.1251 ; +epsi[9][0][2] = -0.0102 ; +epsi[9][1][0] = -0.1251 ; +epsi[9][1][1] = 0.1123 ; +epsi[9][1][2] = -0.0155 ; +epsi[9][2][0] = -0.0102 ; +epsi[9][2][1] = -0.0155 ; +epsi[9][2][2] = 0.0121 ; + +epsi[10][0][0] = 0.0758 ; +epsi[10][0][1] = 0.0259 ; +epsi[10][0][2] = -0.0278 ; +epsi[10][1][0] = 0.0259 ; +epsi[10][1][1] = 0.0771 ; +epsi[10][1][2] = -0.0101 ; +epsi[10][2][0] = -0.0278 ; +epsi[10][2][1] = -0.0101 ; +epsi[10][2][2] = 0.3971 ; + +epsi[11][0][0] = 0.0863 ; +epsi[11][0][1] = 0.0177 ; +epsi[11][0][2] = -0.0254 ; +epsi[11][1][0] = 0.0177 ; +epsi[11][1][1] = 0.0819 ; +epsi[11][1][2] = 0.0729 ; +epsi[11][2][0] = -0.0254 ; +epsi[11][2][1] = 0.0729 ; +epsi[11][2][2] = 0.3818 ; + +} + + +void initialize_alpha_eigen() +{ + +eigen_alpha[0].e[0] = -0.083 ; +eigen_alpha[0].e[5] = 0.0095 ; +eigen_alpha[0].e[4] = 0.0 ; +eigen_alpha[0].e[1] = 0.123 ; +eigen_alpha[0].e[3] = 0.0 ; +eigen_alpha[0].e[2] = 0.035 ; + +eigen_alpha[1].e[0] = -0.083 ; +eigen_alpha[1].e[5] = 0.0 ; +eigen_alpha[1].e[4] = 0.0095 ; +eigen_alpha[1].e[1] = 0.035 ; +eigen_alpha[1].e[3] = 0.0 ; +eigen_alpha[1].e[2] = 0.123 ; + +eigen_alpha[2].e[0] = 0.079 ; +eigen_alpha[2].e[5] = -0.0359 ; +eigen_alpha[2].e[4] = -0.0264 ; +eigen_alpha[2].e[1] = 0.0047 ; +eigen_alpha[2].e[3] = 0.0810 ; +eigen_alpha[2].e[2] = -0.0087 ; + +eigen_alpha[3].e[0] = -0.079 ; +eigen_alpha[3].e[5] = 0.0359 ; +eigen_alpha[3].e[4] = 0.0264 ; +eigen_alpha[3].e[1] = 0.0047 ; +eigen_alpha[3].e[3] = 0.0810 ; +eigen_alpha[3].e[2] = -0.0087 ; + +eigen_alpha[4].e[0] = 0.079 ; +eigen_alpha[4].e[5] = -0.0359 ; +eigen_alpha[4].e[4] = 0.0264 ; +eigen_alpha[4].e[1] = 0.0047 ; +eigen_alpha[4].e[3] = -0.0810 ; +eigen_alpha[4].e[2] = -0.0087 ; + +eigen_alpha[5].e[0] = 0.079 ; +eigen_alpha[5].e[5] = 0.0359 ; +eigen_alpha[5].e[4] = -0.0264 ; +eigen_alpha[5].e[1] = 0.0047 ; +eigen_alpha[5].e[3] = -0.0810 ; +eigen_alpha[5].e[2] = -0.0087 ; + +eigen_alpha[6].e[0] = -0.083 ; +eigen_alpha[6].e[5] = -0.0095 ; +eigen_alpha[6].e[4] = 0.0 ; +eigen_alpha[6].e[1] = 0.123 ; +eigen_alpha[6].e[3] = 0.0 ; +eigen_alpha[6].e[2] = 0.035 ; + +eigen_alpha[7].e[0] = -0.083 ; +eigen_alpha[7].e[5] = 0.0 ; +eigen_alpha[7].e[4] = -0.0095 ; +eigen_alpha[7].e[1] = 0.035 ; +eigen_alpha[7].e[3] = 0.0 ; +eigen_alpha[7].e[2] = 0.123 ; + +eigen_alpha[8].e[0] = 0.079 ; +eigen_alpha[8].e[5] = -0.0264 ; +eigen_alpha[8].e[4] = -0.0359 ; +eigen_alpha[8].e[1] = -0.0087 ; +eigen_alpha[8].e[3] = 0.0810 ; +eigen_alpha[8].e[2] = 0.0047 ; + +eigen_alpha[9].e[0] = 0.079 ; +eigen_alpha[9].e[5] = 0.0264 ; +eigen_alpha[9].e[4] = 0.0359 ; +eigen_alpha[9].e[1] = -0.0087 ; +eigen_alpha[9].e[3] = 0.0810 ; +eigen_alpha[9].e[2] = 0.0047 ; + +eigen_alpha[10].e[0] = 0.079 ; +eigen_alpha[10].e[5] = -0.0264 ; +eigen_alpha[10].e[4] = 0.0359 ; +eigen_alpha[10].e[1] = -0.0087 ; +eigen_alpha[10].e[3] = -0.0810 ; +eigen_alpha[10].e[2] = 0.0047 ; + +eigen_alpha[11].e[0] = 0.079 ; +eigen_alpha[11].e[5] = 0.0264 ; +eigen_alpha[11].e[4] = -0.0359 ; +eigen_alpha[11].e[1] = -0.0087 ; +eigen_alpha[11].e[3] = -0.0810 ; +eigen_alpha[11].e[2] = 0.0047 ; +} + + + + diff --git a/examples/Integration_with_fftw/fftw/.libs/libfftw3.so.3 b/examples/Integration_with_fftw/fftw/.libs/libfftw3.so.3 new file mode 120000 index 0000000..849153d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/.libs/libfftw3.so.3 @@ -0,0 +1 @@ +libfftw3.so.3.5.8 \ No newline at end of file diff --git a/examples/Integration_with_fftw/fftw/.libs/libfftw3.so.3.5.8 b/examples/Integration_with_fftw/fftw/.libs/libfftw3.so.3.5.8 new file mode 100755 index 0000000..73412e8 Binary files /dev/null and b/examples/Integration_with_fftw/fftw/.libs/libfftw3.so.3.5.8 differ diff --git a/examples/Integration_with_fftw/fftw/Array.cc b/examples/Integration_with_fftw/fftw/Array.cc new file mode 100644 index 0000000..1c703dd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/Array.cc @@ -0,0 +1,91 @@ +#include + +// Turning off argument checking with -DNDEBUG improves optimization. + +#include "Array.h" +using namespace Array; +using namespace std; + +int n=2,m=3,p=4; + +typedef array1::opt vector; +typedef Array1::opt Vector; + +using std::cout; + +void f(double *x) {cout << x[0] << endl; return;} + +template +void g(T x) {cout << x << endl; return;} + +template +double h(typename array1::opt& x) {return x[0];} + +int main() +{ + array3 A(n,m,p); + double sum=0.0; + +// Sequential access: + int size=A.Size(); + for(int i=0; i < size; i++) A(i)=i; + +// Random access: + for(int i=0; i < n; i++) { + +// The following statements are equivalent, but the first one optimizes better. + array2 Ai=A[i]; +// array2 Ai(m,p); Ai=A[i]; // This does an extra memory copy. + + for(int j=0; j < m; j++) { +// array1 Aij=Ai[j]; +// For 1D arrays: many compilers optimize array1<>::opt better than array1<>. + vector Aij=Ai[j]; + + for(int k=0; k < p; k++) { +// The following statements are equivalent, but the first one optimizes better. + sum=sum+Aij[k]; +// sum=sum+A(i,j,k); // This does extra index multiplication. + } + } + } + + cout << sum << endl; + + f(A); + g(A); + + vector x; + Allocate(x,1); + x[0]=1.0; + cout << h(x) << endl; + + cout << endl; + +// Arrays with offsets: + + const int offx=-1; + const int offy=-1; + + Array1 B(n,offx); // B(offx)...B(n-1+offx) + Array2 C(n,m,offx,offy); + Array1 D(5); // Functionally equivalent to array1 D(n); + + B=1.0; + C=2.0; + D=3.0; + + for(int i=offx; i < n+offx; i++) cout << B[i] << endl; + + cout << endl; + + for(int i=offx; i < n+offx; i++) { + Vector Ci=C[i]; + for(int j=offy; j < m+offy; j++) + cout << Ci[j] << endl; + } + + cout << D << endl; + + return 0; +} diff --git a/examples/Integration_with_fftw/fftw/Array.h b/examples/Integration_with_fftw/fftw/Array.h new file mode 100644 index 0000000..e32f968 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/Array.h @@ -0,0 +1,1652 @@ +/* Array.h: A high-performance multi-dimensional C++ array class + Copyright (C) 1997-2016 John C. Bowman, University of Alberta + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef __Array_h__ +#define __Array_h__ 1 + +#define __ARRAY_H_VERSION__ 1.52 + +// Defining NDEBUG improves optimization but disables argument checking. +// Defining __NOARRAY2OPT inhibits special optimization of Array2[]. + +#include +#include +#include +#include +#include + +#ifdef NDEBUG +#define __check(i,n,dim,m) +#define __checkSize() +#define __checkEqual(a,b,dim,m) +#define __checkActivate(i,align) this->Activate(align) +#else +#define __check(i,n,dim,m) this->Check(i,n,dim,m) +#define __checkSize() this->CheckSize() +#define __checkEqual(a,b,dim,m) this->CheckEqual(a,b,dim,m) +#define __checkActivate(i,align) this->CheckActivate(i,align) +#ifndef __NOARRAY2OPT +#define __NOARRAY2OPT +#endif +#endif + +#ifndef HAVE_POSIX_MEMALIGN + +#ifdef __GLIBC_PREREQ +#if __GLIBC_PREREQ(2,3) +#define HAVE_POSIX_MEMALIGN +#endif +#else +#ifdef _POSIX_SOURCE +#define HAVE_POSIX_MEMALIGN +#endif +#endif + +#else + +#ifdef _AIX +extern "C" int posix_memalign(void **memptr, size_t alignment, size_t size); +#endif + +#endif + +namespace Array { +inline std::ostream& _newl(std::ostream& s) {s << '\n'; return s;} + +inline void ArrayExit(const char *x); + +#ifndef __ExternalArrayExit +inline void ArrayExit(const char *x) +{ + std::cerr << _newl << "ERROR: " << x << "." << std::endl; + exit(1); +} +#endif + +#ifndef __fftwpp_h__ + +// Adapted from FFTW aligned malloc/free. Assumes that malloc is at least +// sizeof(void*)-aligned. Allocated memory must be freed with free0. +inline int posix_memalign0(void **memptr, size_t alignment, size_t size) +{ + if(alignment % sizeof (void *) != 0 || (alignment & (alignment - 1)) != 0) + return EINVAL; + void *p0=malloc(size+alignment); + if(!p0) return ENOMEM; + void *p=(void *)(((size_t) p0+alignment)&~(alignment-1)); + *((void **) p-1)=p0; + *memptr=p; + return 0; +} + +inline void free0(void *p) +{ + if(p) free(*((void **) p-1)); +} + +template +inline void newAlign(T *&v, size_t len, size_t align) +{ + void *mem=NULL; + const char *invalid="Invalid alignment requested"; + const char *nomem="Memory limits exceeded"; +#ifdef HAVE_POSIX_MEMALIGN + int rc=posix_memalign(&mem,align,len*sizeof(T)); +#else + int rc=posix_memalign0(&mem,align,len*sizeof(T)); +#endif + if(rc == EINVAL) Array::ArrayExit(invalid); + if(rc == ENOMEM) Array::ArrayExit(nomem); + v=(T *) mem; + for(size_t i=0; i < len; i++) new(v+i) T; +} + +template +inline void deleteAlign(T *v, size_t len) +{ + for(size_t i=len-1; i > 0; i--) v[i].~T(); + v[0].~T(); +#ifdef HAVE_POSIX_MEMALIGN + free(v); +#else + free0(v); +#endif +} + +#endif + +template +class array1 { +protected: + T *v; + unsigned int size; + mutable int state; +public: + enum alloc_state {unallocated=0, allocated=1, temporary=2, aligned=4}; + virtual unsigned int Size() const {return size;} + void CheckSize() const { + if(!test(allocated) && size == 0) + ArrayExit("Operation attempted on unallocated array"); + } + void CheckEqual(int a, int b, unsigned int dim, unsigned int m) const { + if(a != b) { + std::ostringstream buf; + buf << "Array" << dim << " index "; + if(m) buf << m << " "; + buf << "is incompatible in assignment (" << a << " != " << b << ")"; + const std::string& s=buf.str(); + ArrayExit(s.c_str()); + } + } + + int test(int flag) const {return state & flag;} + void clear(int flag) const {state &= ~flag;} + void set(int flag) const {state |= flag;} + void Activate(size_t align=0) { + if(align) { + newAlign(v,size,align); + set(allocated | aligned); + } else { + v=new T[size]; + set(allocated); + } + } + void CheckActivate(int dim, size_t align=0) { + if (test(allocated)) { + std::ostringstream buf; + buf << "Reallocation of Array" << dim + << " attempted (must Deallocate first)"; + const std::string& s=buf.str(); + ArrayExit(s.c_str()); + } + Activate(align); + } + void Deallocate() const { + if(test(allocated)) { + if(test(aligned)) deleteAlign(v,size); + else delete [] v; + state=unallocated; + } + } + virtual void Dimension(unsigned int nx0) {size=nx0;} + void Dimension(unsigned int nx0, T *v0) { + Dimension(nx0); v=v0; clear(allocated); + } + void Dimension(const array1& A) { + Dimension(A.size,A.v); state=A.test(temporary); + } + + void CheckActivate(size_t align=0) { + __checkActivate(1,align); + } + + void Allocate(unsigned int nx0, size_t align=0) { + Dimension(nx0); + CheckActivate(align); + } + + void Reallocate(unsigned int nx0, size_t align=0) { + Deallocate(); + Allocate(nx0,align); + } + + array1() : size(0), state(unallocated) {} + array1(const void *) : size(0), state(unallocated) {} + array1(unsigned int nx0, size_t align=0) : state(unallocated) { + Allocate(nx0,align); + } + array1(unsigned int nx0, T *v0) : state(unallocated) {Dimension(nx0,v0);} + array1(T *v0) : state(unallocated) {Dimension(INT_MAX,v0);} + array1(const array1& A) : v(A.v), size(A.size), + state(A.test(temporary)) {} + + virtual ~array1() {Deallocate();} + + void Freeze() {state=unallocated;} + void Hold() {if(test(allocated)) {state=temporary;}} + void Purge() const {if(test(temporary)) {Deallocate(); state=unallocated;}} + + virtual void Check(int i, int n, unsigned int dim, unsigned int m, + int o=0) const { + if(i < 0 || i >= n) { + std::ostringstream buf; + buf << "Array" << dim << " index "; + if(m) buf << m << " "; + buf << "is out of bounds (" << i+o; + if(n == 0) buf << " index given to empty array"; + else { + if(i < 0) buf << " < " << o; + else buf << " > " << n+o-1; + } + buf << ")"; + const std::string& s=buf.str(); + ArrayExit(s.c_str()); + } + } + + unsigned int Nx() const {return size;} + +#ifdef NDEBUG + typedef T *opt; +#else + typedef array1 opt; +#endif + + T& operator [] (int ix) const {__check(ix,size,1,1); return v[ix];} + T& operator () (int ix) const {__check(ix,size,1,1); return v[ix];} + T* operator () () const {return v;} + operator T* () const {return v;} + + array1 operator + (int i) const {return array1(size-i,v+i);} + + void Load(T a) const { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i]=a; + } + void Load(const T *a) const { + for(unsigned int i=0; i < size; i++) v[i]=a[i]; + } + void Store(T *a) const { + for(unsigned int i=0; i < size; i++) a[i]=v[i]; + } + void Set(T *a) {v=a; clear(allocated);} + T Min() { + if(size == 0) + ArrayExit("Cannot take minimum of empty array"); + T min=v[0]; + for(unsigned int i=1; i < size; i++) if(v[i] < min) min=v[i]; + return min; + } + T Max() { + if(size == 0) + ArrayExit("Cannot take maximum of empty array"); + T max=v[0]; + for(unsigned int i=1; i < size; i++) if(v[i] > max) max=v[i]; + return max; + } + + std::istream& Input (std::istream &s) const { + __checkSize(); + for(unsigned int i=0; i < size; i++) s >> v[i]; + return s; + } + + array1& operator = (T a) {Load(a); return *this;} + array1& operator = (const T *a) {Load(a); return *this;} + array1& operator = (const array1& A) { + __checkEqual(size,A.Size(),1,1); + Load(A()); + A.Purge(); + return *this; + } + + array1& operator += (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] += A(i); + return *this; + } + array1& operator -= (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] -= A(i); + return *this; + } + array1& operator *= (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] *= A(i); + return *this; + } + array1& operator /= (const array1& A) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] /= A(i); + return *this; + } + + array1& operator += (T a) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] += a; + return *this; + } + array1& operator -= (T a) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] -= a; + return *this; + } + array1& operator *= (T a) { + __checkSize(); + for(unsigned int i=0; i < size; i++) v[i] *= a; + return *this; + } + array1& operator /= (T a) { + __checkSize(); + T ainv=1.0/a; + for(unsigned int i=0; i < size; i++) v[i] *= ainv; + return *this; + } + + double L1() const { + __checkSize(); + double norm=0.0; + for(unsigned int i=0; i < size; i++) norm += abs(v[i]); + return norm; + } +#ifdef __ArrayExtensions + double Abs2() const { + __checkSize(); + double norm=0.0; + for(unsigned int i=0; i < size; i++) norm += abs2(v[i]); + return norm; + } + double L2() const { + return sqrt(Abs2()); + } + double LInfinity() const { + __checkSize(); + double norm=0.0; + for(unsigned int i=0; i < size; i++) { + T a=abs(v[i]); + if(a > norm) norm=a; + } + return norm; + } + double LMinusInfinity() const { + __checkSize(); + double norm=DBL_MAX; + for(unsigned int i=0; i < size; i++) { + T a=abs(v[i]); + if(a < norm) norm=a; + } + return norm; + } +#endif +}; + +template +void swaparray(T& A, T& B) +{ + T C; + C.Dimension(A); + A.Dimension(B); + B.Dimension(C); +} + +template +void leftshiftarray(T& A, T& B, T& C) +{ + T D; + D.Dimension(A); + A.Dimension(B); + B.Dimension(C); + C.Dimension(D); +} + +template +void rightshiftarray(T& A, T& B, T& C) +{ + T D; + D.Dimension(C); + C.Dimension(B); + B.Dimension(A); + A.Dimension(D); +} + +template +std::ostream& operator << (std::ostream& s, const array1& A) +{ + T *p=A(); + for(unsigned int i=0; i < A.Nx(); i++) { + s << *(p++) << " "; + } + return s; +} + +template +std::istream& operator >> (std::istream& s, const array1& A) +{ + return A.Input(s); +} + +template +class array2 : public array1 { +protected: + unsigned int nx; + unsigned int ny; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0) { + nx=nx0; ny=ny0; + this->size=nx*ny; + } + void Dimension(unsigned int nx0, unsigned int ny0, T *v0) { + Dimension(nx0,ny0); + this->v=v0; + this->clear(this->allocated); + } + void Dimension(const array1 &A) {ArrayExit("Operation not implemented");} + + void Allocate(unsigned int nx0, unsigned int ny0, size_t align=0) { + Dimension(nx0,ny0); + __checkActivate(2,align); + } + + array2() : nx(0), ny(0) {} + array2(unsigned int nx0, unsigned int ny0, size_t align=0) { + Allocate(nx0,ny0,align); + } + array2(unsigned int nx0, unsigned int ny0, T *v0) {Dimension(nx0,ny0,v0);} + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + +#ifndef __NOARRAY2OPT + T *operator [] (int ix) const { + return this->v+ix*ny; + } +#else + array1 operator [] (int ix) const { + __check(ix,nx,2,1); + return array1(ny,this->v+ix*ny); + } +#endif + T& operator () (int ix, int iy) const { + __check(ix,nx,2,1); + __check(iy,ny,2,2); + return this->v[ix*ny+iy]; + } + T& operator () (int i) const { + __check(i,this->size,2,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array2& operator = (T a) {this->Load(a); return *this;} + array2& operator = (T *a) {this->Load(a); return *this;} + array2& operator = (const array2& A) { + __checkEqual(nx,A.Nx(),2,1); + __checkEqual(ny,A.Ny(),2,2); + this->Load(A()); + A.Purge(); + return *this; + } + + array2& operator += (const array2& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array2& operator -= (const array2& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + array2& operator *= (const array2& A); + + array2& operator += (T a) { + __checkSize(); + unsigned int inc=ny+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array2& operator -= (T a) { + __checkSize(); + unsigned int inc=ny+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } + array2& operator *= (T a) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] *= a; + return *this; + } + + void Identity() { + this->Load((T) 0); + __checkSize(); + unsigned int inc=ny+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i]=(T) 1; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array2& A) +{ + T *p=A(); + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + s << *(p++) << " "; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array2& A) +{ + return A.Input(s); +} + +template +class array3 : public array1 { +protected: + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int nyz; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0) { + nx=nx0; ny=ny0; nz=nz0; nyz=ny*nz; + this->size=nx*nyz; + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, T *v0) { + Dimension(nx0,ny0,nz0); + this->v=v0; + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + size_t align=0) { + Dimension(nx0,ny0,nz0); + __checkActivate(3,align); + } + + array3() : nx(0), ny(0), nz(0), nyz(0) {} + array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, + size_t align=0) { + Allocate(nx0,ny0,nz0,align); + } + array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, T *v0) { + Dimension(nx0,ny0,nz0,v0); + } + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + unsigned int Nz() const {return nz;} + + array2 operator [] (int ix) const { + __check(ix,nx,3,1); + return array2(ny,nz,this->v+ix*nyz); + } + T& operator () (int ix, int iy, int iz) const { + __check(ix,nx,3,1); + __check(iy,ny,3,2); + __check(iz,nz,3,3); + return this->v[ix*nyz+iy*nz+iz]; + } + T& operator () (int i) const { + __check(i,this->size,3,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array3& operator = (T a) {this->Load(a); return *this;} + array3& operator = (T *a) {this->Load(a); return *this;} + array3& operator = (const array3& A) { + __checkEqual(nx,A.Nx(),3,1); + __checkEqual(ny,A.Ny(),3,2); + __checkEqual(nz,A.Nz(),3,3); + this->Load(A()); + A.Purge(); + return *this; + } + + array3& operator += (array3& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array3& operator -= (array3& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + + array3& operator += (T a) { + __checkSize(); + unsigned int inc=nyz+nz+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array3& operator -= (T a) { + __checkSize(); + unsigned int inc=nyz+nz+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array3& A) +{ + T *p=A(); + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + for(unsigned int k=0; k < A.Nz(); k++) { + s << *(p++) << " "; + } + s << _newl; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array3& A) +{ + return A.Input(s); +} + +template +class array4 : public array1 { +protected: + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int nw; + unsigned int nyz; + unsigned int nzw; + unsigned int nyzw; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0) { + nx=nx0; ny=ny0; nz=nz0; nw=nw0; nzw=nz*nw; nyzw=ny*nzw; + this->size=nx*nyzw; + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0) { + Dimension(nx0,ny0,nz0,nw0); + this->v=v0; + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, size_t align=0) { + Dimension(nx0,ny0,nz0,nw0); + __checkActivate(4,align); + } + + array4() : nx(0), ny(0), nz(0), nw(0), nyz(0), nzw(0), nyzw(0) {} + array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, size_t align=0) {Allocate(nx0,ny0,nz0,nw0,align);} + array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0) { + Dimension(nx0,ny0,nz0,nw0,v0); + } + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + unsigned int Nz() const {return nz;} + unsigned int N4() const {return nw;} + + array3 operator [] (int ix) const { + __check(ix,nx,3,1); + return array3(ny,nz,nw,this->v+ix*nyzw); + } + T& operator () (int ix, int iy, int iz, int iw) const { + __check(ix,nx,4,1); + __check(iy,ny,4,2); + __check(iz,nz,4,3); + __check(iw,nw,4,4); + return this->v[ix*nyzw+iy*nzw+iz*nw+iw]; + } + T& operator () (int i) const { + __check(i,this->size,4,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array4& operator = (T a) {this->Load(a); return *this;} + array4& operator = (T *a) {this->Load(a); return *this;} + array4& operator = (const array4& A) { + __checkEqual(nx,A.Nx(),4,1); + __checkEqual(ny,A.Ny(),4,2); + __checkEqual(nz,A.Nz(),4,3); + __checkEqual(nw,A.N4(),4,4); + this->Load(A()); + A.Purge(); + return *this; + } + + array4& operator += (array4& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array4& operator -= (array4& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + + array4& operator += (T a) { + __checkSize(); + unsigned int inc=nyzw+nzw+nw+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array4& operator -= (T a) { + __checkSize(); + unsigned int inc=nyzw+nzw+nw+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array4& A) +{ + T *p=A; + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + for(unsigned int k=0; k < A.Nz(); k++) { + for(unsigned int l=0; l < A.N4(); l++) { + s << *(p++) << " "; + } + s << _newl; + } + s << _newl; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array4& A) +{ + return A.Input(s); +} + +template +class array5 : public array1 { +protected: + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int nw; + unsigned int nv; + unsigned int nwv; + unsigned int nzwv; + unsigned int nyzwv; +public: + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0) { + nx=nx0; ny=ny0; nz=nz0; nw=nw0; nv=nv0; nwv=nw*nv; nzwv=nz*nwv; + nyzwv=ny*nzwv; + this->size=nx*nyzwv; + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0) { + Dimension(nx0,ny0,nz0,nw0,nv0); + this->v=v0; + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, size_t align=0) { + Dimension(nx0,ny0,nz0,nw0,nv0); + __checkActivate(5,align); + } + + array5() : nx(0), ny(0), nz(0), nw(0), nv(0), nwv(0), nzwv(0), nyzwv(0) {} + array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, size_t align=0) { + Allocate(nx0,ny0,nz0,nw0,nv0,align); + } + array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0) { + Dimension(nx0,ny0,nz0,nw0,nv0,nv0); + } + + unsigned int Nx() const {return nx;} + unsigned int Ny() const {return ny;} + unsigned int Nz() const {return ny;} + unsigned int N4() const {return nw;} + unsigned int N5() const {return nv;} + + array4 operator [] (int ix) const { + __check(ix,nx,4,1); + return array4(ny,nz,nw,nv,this->v+ix*nyzwv); + } + T& operator () (int ix, int iy, int iz, int iw, int iv) const { + __check(ix,nx,5,1); + __check(iy,ny,5,2); + __check(iz,nz,5,3); + __check(iw,nw,5,4); + __check(iv,nv,5,5); + return this->v[ix*nyzwv+iy*nzwv+iz*nwv+iw*nv+iv]; + } + T& operator () (int i) const { + __check(i,this->size,5,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + + array5& operator = (T a) {this->Load(a); return *this;} + array5& operator = (T *a) {this->Load(a); return *this;} + array5& operator = (const array5& A) { + __checkEqual(nx,A.Nx(),5,1); + __checkEqual(ny,A.Ny(),5,2); + __checkEqual(nz,A.Nz(),5,3); + __checkEqual(nw,A.N4(),5,4); + __checkEqual(nv,A.N5(),5,5); + this->Load(A()); + A.Purge(); + return *this; + } + + array5& operator += (array5& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] += A(i); + return *this; + } + array5& operator -= (array5& A) { + __checkSize(); + for(unsigned int i=0; i < this->size; i++) this->v[i] -= A(i); + return *this; + } + + array5& operator += (T a) { + __checkSize(); + unsigned int inc=nyzwv+nzwv+nwv+nv+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] += a; + return *this; + } + array5& operator -= (T a) { + __checkSize(); + unsigned int inc=nyzwv+nzwv+nwv+nv+1; + for(unsigned int i=0; i < this->size; i += inc) this->v[i] -= a; + return *this; + } +}; + +template +std::ostream& operator << (std::ostream& s, const array5& A) +{ + T *p=A; + for(unsigned int i=0; i < A.Nx(); i++) { + for(unsigned int j=0; j < A.Ny(); j++) { + for(unsigned int k=0; k < A.Nz(); k++) { + for(unsigned int l=0; l < A.N4(); l++) { + for(unsigned int l=0; l < A.N5(); l++) { + s << *(p++) << " "; + } + s << _newl; + } + s << _newl; + } + s << _newl; + } + s << _newl; + } + s << std::flush; + return s; +} + +template +std::istream& operator >> (std::istream& s, const array5& A) +{ + return A.Input(s); +} + +#undef __check + +#ifdef NDEBUG +#define __check(i,n,o,dim,m) +#else +#define __check(i,n,o,dim,m) this->Check(i-o,n,dim,m,o) +#endif + +template +class Array1 : public array1 { +protected: + T *voff; // Offset pointer to memory block + int ox; +public: + void Offsets() { + voff=this->v-ox; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, int ox0=0) { + this->size=nx0; + ox=ox0; + Offsets(); + } + void Dimension(unsigned int nx0, T *v0, int ox0=0) { + this->v=v0; + Dimension(nx0,ox0); + this->clear(this->allocated); + } + void Dimension(const Array1& A) { + Dimension(A.size,A.v,A.ox); this->state=A.test(this->temporary); + } + + void Allocate(unsigned int nx0, int ox0=0, size_t align=0) { + Dimension(nx0,ox0); + __checkActivate(1,align); + Offsets(); + } + + void Reallocate(unsigned int nx0, int ox0=0, size_t align=0) { + this->Deallocate(); + Allocate(nx0,ox0,align); + } + + Array1() : ox(0) {} + Array1(unsigned int nx0, int ox0=0, size_t align=0) { + Allocate(nx0,ox0,align); + } + Array1(unsigned int nx0, T *v0, int ox0=0) { + Dimension(nx0,v0,ox0); + } + Array1(T *v0, int ox0=0) { + Dimension(INT_MAX,v0,ox0); + } + +#ifdef NDEBUG + typedef T *opt; +#else + typedef Array1 opt; +#endif + + T& operator [] (int ix) const {__check(ix,this->size,ox,1,1); return voff[ix];} + T& operator () (int i) const {__check(i,this->size,0,1,1); return this->v[i];} + T* operator () () const {return this->v;} + operator T* () const {return this->v;} + + Array1 operator + (int i) const {return Array1(this->size-i,this->v+i,ox);} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array1& operator = (T a) {this->Load(a); return *this;} + Array1& operator = (const T *a) {this->Load(a); return *this;} + Array1& operator = (const Array1& A) { + __checkEqual(this->size,A.Size(),1,1); + __checkEqual(ox,A.Ox(),1,1); + this->Load(A()); + A.Purge(); + return *this; + } + Array1& operator = (const array1& A) { + __checkEqual(this->size,A.Size(),1,1); + __checkEqual(ox,0,1,1); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} +}; + +template +class Array2 : public array2 { +protected: + T *voff,*vtemp; + int ox,oy; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->ny; + voff=vtemp-oy; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, int ox0=0, int oy0=0) { + this->nx=nx0; this->ny=ny0; + this->size=this->nx*this->ny; + ox=ox0; oy=oy0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, T *v0, int ox0=0, + int oy0=0) { + this->v=v0; + Dimension(nx0,ny0,ox0,oy0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, int ox0=0, int oy0=0, + size_t align=0) { + Dimension(nx0,ny0,ox0,oy0); + __checkActivate(2,align); + Offsets(); + } + + Array2() : ox(0), oy(0) {} + Array2(unsigned int nx0, unsigned int ny0, int ox0=0, int oy0=0, + size_t align=0) { + Allocate(nx0,ny0,ox0,oy0,align); + } + Array2(unsigned int nx0, unsigned int ny0, T *v0, int ox0=0, int oy0=0) { + Dimension(nx0,ny0,v0,ox0,oy0); + } + +#ifndef __NOARRAY2OPT + T *operator [] (int ix) const { + return voff+ix*(int) this->ny; + } +#else + Array1 operator [] (int ix) const { + __check(ix,this->nx,ox,2,1); + return Array1(this->ny,vtemp+ix*(int) this->ny,oy); + } +#endif + + T& operator () (int ix, int iy) const { + __check(ix,this->nx,ox,2,1); + __check(iy,this->ny,oy,2,2); + return voff[ix*(int) this->ny+iy]; + } + T& operator () (int i) const { + __check(i,this->size,0,2,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array2& operator = (T a) {this->Load(a); return *this;} + Array2& operator = (T *a) {this->Load(a); return *this;} + Array2& operator = (const Array2& A) { + __checkEqual(this->nx,A.Nx(),2,1); + __checkEqual(this->ny,A.Ny(),2,2); + __checkEqual(ox,A.Ox(),2,1); + __checkEqual(oy,A.Oy(),2,2); + this->Load(A()); + A.Purge(); + return *this; + } + Array2& operator = (const array2& A) { + __checkEqual(this->nx,A.Nx(),2,1); + __checkEqual(this->ny,A.Ny(),2,2); + __checkEqual(ox,0,2,1); + __checkEqual(oy,0,2,2); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} + int Oy() const {return oy;} + +}; + +template +class Array3 : public array3 { +protected: + T *voff,*vtemp; + int ox,oy,oz; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->nyz; + voff=vtemp-oy*(int) this->nz-oz; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + int ox0=0, int oy0=0, int oz0=0) { + this->nx=nx0; this->ny=ny0; this->nz=nz0; this->nyz=this->ny*this->nz; + this->size=this->nx*this->nyz; + ox=ox0; oy=oy0; oz=oz0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + T *v0, int ox0=0, int oy0=0, int oz0=0) { + this->v=v0; + Dimension(nx0,ny0,nz0,ox0,oy0,oz0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + int ox0=0, int oy0=0, int oz0=0, size_t align=0) { + Dimension(nx0,ny0,nz0,ox0,oy0,oz0); + __checkActivate(3,align); + Offsets(); + } + + Array3() : ox(0), oy(0), oz(0) {} + Array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, + int ox0=0, int oy0=0, int oz0=0, size_t align=0) { + Allocate(nx0,ny0,nz0,ox0,oy0,oz0,align); + } + Array3(unsigned int nx0, unsigned int ny0, unsigned int nz0, T *v0, + int ox0=0, int oy0=0, int oz0=0) { + Dimension(nx0,ny0,nz0,v0,ox0,oy0,oz0); + } + + Array2 operator [] (int ix) const { + __check(ix,this->nx,ox,3,1); + return Array2(this->ny,this->nz,vtemp+ix*(int) this->nyz,oy,oz); + } + T& operator () (int ix, int iy, int iz) const { + __check(ix,this->nx,ox,3,1); + __check(iy,this->ny,oy,3,2); + __check(iz,this->nz,oz,3,3); + return voff[ix*(int) this->nyz+iy*(int) this->nz+iz]; + } + T& operator () (int i) const { + __check(i,this->size,0,3,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array3& operator = (T a) {this->Load(a); return *this;} + Array3& operator = (T *a) {this->Load(a); return *this;} + Array3& operator = (const Array3& A) { + __checkEqual(this->nx,A.Nx(),3,1); + __checkEqual(this->ny,A.Ny(),3,2); + __checkEqual(this->nz,A.Nz(),3,3); + __checkEqual(ox,A.Ox(),3,1); + __checkEqual(oy,A.Oy(),3,2); + __checkEqual(oz,A.Oz(),3,3); + this->Load(A()); + A.Purge(); + return *this; + } + Array3& operator = (const array3& A) { + __checkEqual(this->nx,A.Nx(),3,1); + __checkEqual(this->ny,A.Ny(),3,2); + __checkEqual(this->nz,A.Nz(),3,3); + __checkEqual(ox,0,3,1); + __checkEqual(oy,0,3,2); + __checkEqual(oz,0,3,3); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} + int Oy() const {return oy;} + int Oz() const {return oz;} + +}; + +template +class Array4 : public array4 { +protected: + T *voff,*vtemp; + int ox,oy,oz,ow; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->nyzw; + voff=vtemp-oy*(int) this->nzw-oz*(int) this->nw-ow; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0) { + this->nx=nx0; this->ny=ny0; this->nz=nz0; this->nw=nw0; + this->nzw=this->nz*this->nw; this->nyzw=this->ny*this->nzw; + this->size=this->nx*this->nyzw; + ox=ox0; oy=oy0; oz=oz0; ow=ow0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0) { + this->v=v0; + Dimension(nx0,ny0,nz0,nw0,ox0,oy0,oz0,ow0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, size_t align=0) { + Dimension(nx0,ny0,nz0,nw0,ox0,oy0,oz0,ow0); + __checkActivate(4,align); + Offsets(); + } + + Array4() : ox(0), oy(0), oz(0), ow(0) {} + Array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, size_t align=0) { + Allocate(nx0,ny0,nz0,nw0,ox0,oy0,oz0,ow0,align); + } + Array4(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0) { + Dimension(nx0,ny0,nz0,nw0,v0,ox0,oy0,oz0,ow0); + } + + Array3 operator [] (int ix) const { + __check(ix,this->nx,ox,3,1); + return Array3(this->ny,this->nz,this->nw,vtemp+ix*(int) this->nyzw, + oy,oz,ow); + } + T& operator () (int ix, int iy, int iz, int iw) const { + __check(ix,this->nx,ox,4,1); + __check(iy,this->ny,oy,4,2); + __check(iz,this->nz,oz,4,3); + __check(iw,this->nw,ow,4,4); + return voff[ix*(int) this->nyzw+iy*(int) this->nzw+iz*(int) this->nw+iw]; + } + T& operator () (int i) const { + __check(i,this->size,0,4,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array4& operator = (T a) {this->Load(a); return *this;} + Array4& operator = (T *a) {this->Load(a); return *this;} + + Array4& operator = (const Array4& A) { + __checkEqual(this->nx,A.Nx(),4,1); + __checkEqual(this->ny,A.Ny(),4,2); + __checkEqual(this->nz,A.Nz(),4,3); + __checkEqual(this->nw,A.N4(),4,4); + __checkEqual(ox,A.Ox(),4,1); + __checkEqual(oy,A.Oy(),4,2); + __checkEqual(oz,A.Oz(),4,3); + __checkEqual(ow,A.O4(),4,4); + this->Load(A()); + A.Purge(); + return *this; + } + Array4& operator = (const array4& A) { + __checkEqual(this->nx,A.Nx(),4,1); + __checkEqual(this->ny,A.Ny(),4,2); + __checkEqual(this->nz,A.Nz(),4,3); + __checkEqual(this->nw,A.N4(),4,4); + __checkEqual(this->nx,A.Nx(),4,1); + __checkEqual(this->ny,A.Nx(),4,2); + __checkEqual(this->nz,A.Nx(),4,3); + __checkEqual(this->nw,A.Nx(),4,4); + __checkEqual(ox,0,4,1); + __checkEqual(oy,0,4,2); + __checkEqual(oz,0,4,3); + __checkEqual(ow,0,4,4); + this->Load(A()); + A.Purge(); + return *this; + } + + int Ox() const {return ox;} + int Oy() const {return oy;} + int Oz() const {return oz;} + int O4() const {return ow;} +}; + +template +class Array5 : public array5 { +protected: + T *voff,*vtemp; + int ox,oy,oz,ow,ov; +public: + void Offsets() { + vtemp=this->v-ox*(int) this->nyzwv; + voff=vtemp-oy*(int) this->nzwv-oz*(int) this->nwv-ow*(int) this->nv-ov; + } + using array1::Dimension; + + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0) { + this->nx=nx0; this->ny=ny0; this->nz=nz0; this->nw=nw0; this->nv=nv0; + this->nwv=this->nw*this->nv; this->nzwv=this->nz*this->nwv; + this->nyzwv=this->ny*this->nzwv; + this->size=this->nx*this->nyzwv; + ox=ox0; oy=oy0; oz=oz0; ow=ow0; ov=ov0; + Offsets(); + } + void Dimension(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0) { + this->v=v0; + Dimension(nx0,ny0,nz0,nw0,nv0,ox0,oy0,oz0,ow0,ov0); + this->clear(this->allocated); + } + + void Allocate(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0, + size_t align=0) { + Dimension(nx0,ny0,nz0,nw0,nv0,ox0,oy0,oz0,ow0,ov0); + __checkActivate(5,align); + Offsets(); + } + + Array5() : ox(0), oy(0), oz(0), ow(0), ov(0) {} + Array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, int ox0=0, int oy0=0, + int oz0=0, int ow0=0, int ov0=0, size_t align=0) { + Allocate(nx0,ny0,nz0,nw0,nv0,ox0,oy0,oz0,ow0,ov0,align); + } + Array5(unsigned int nx0, unsigned int ny0, unsigned int nz0, + unsigned int nw0, unsigned int nv0, T *v0, + int ox0=0, int oy0=0, int oz0=0, int ow0=0, int ov0=0) { + Dimension(nx0,ny0,nz0,nw0,nv0,v0,ox0,oy0,oz0,ow0,ov0); + } + + Array4 operator [] (int ix) const { + __check(ix,this->nx,ox,4,1); + return Array4(this->ny,this->nz,this->nw,this->nv, + vtemp+ix*(int) this->nyzwv,oy,oz,ow,ov); + } + T& operator () (int ix, int iy, int iz, int iw, int iv) const { + __check(ix,this->nx,ox,5,1); + __check(iy,this->ny,oy,5,2); + __check(iz,this->nz,oz,5,3); + __check(iw,this->nw,ow,5,4); + __check(iv,this->nv,ov,5,5); + return voff[ix*(int) this->nyzwv+iy*(int) this->nzwv+iz*(int) this->nwv + +iw*(int) this->nv+iv]; + } + T& operator () (int i) const { + __check(i,this->size,0,5,0); + return this->v[i]; + } + T* operator () () const {return this->v;} + void Set(T *a) {this->v=a; Offsets(); this->clear(this->allocated);} + + Array5& operator = (T a) {this->Load(a); return *this;} + Array5& operator = (T *a) {this->Load(a); return *this;} + + Array5& operator = (const Array5& A) { + __checkEqual(this->nx,A.Nx(),5,1); + __checkEqual(this->ny,A.Ny(),5,2); + __checkEqual(this->nz,A.Nz(),5,3); + __checkEqual(this->nw,A.N4(),5,4); + __checkEqual(this->nv,A.N5(),5,5); + __checkEqual(ox,A.Ox(),5,1); + __checkEqual(oy,A.Oy(),5,2); + __checkEqual(oz,A.Oz(),5,3); + __checkEqual(ow,A.O4(),5,4); + __checkEqual(ov,A.O5(),5,5); + this->Load(A()); + A.Purge(); + return *this; + } + Array5& operator = (const array5& A) { + __checkEqual(this->nx,A.Nx(),5,1); + __checkEqual(this->ny,A.Ny(),5,2); + __checkEqual(this->nz,A.Nz(),5,3); + __checkEqual(this->nw,A.N4(),5,4); + __checkEqual(this->nv,A.N5(),5,5); + __checkEqual(ox,0,5,1); + __checkEqual(oy,0,5,2); + __checkEqual(oz,0,5,3); + __checkEqual(ow,0,5,4); + __checkEqual(ov,0,5,5); + this->Load(A()); + A.Purge(); + return *this; + } + int Ox() const {return ox;} + int Oy() const {return oy;} + int Oz() const {return oz;} + int O4() const {return ow;} + int O5() const {return ov;} +}; + +template +inline bool Active(array1& A) +{ + return A.Size(); +} + +template +inline bool Active(T *A) +{ + return A; +} + +template +inline void Set(T *&A, T *v) +{ + A=v; +} + +template +inline void Set(array1& A, T *v) +{ + A.Set(v); +} + +template +inline void Set(array1& A, const array1& B) +{ + A.Set(B()); +} + +template +inline void Set(Array1& A, T *v) +{ + A.Set(v); +} + +template +inline void Set(Array1& A, const array1& B) +{ + A.Set(B()); +} + +template +inline void Null(T *&A) +{ + A=NULL; +} + +template +inline void Null(array1& A) +{ + A.Dimension(0); +} + +template +inline void Dimension(T *&, unsigned int) +{ +} + +template +inline void Dimension(array1 &A, unsigned int n) +{ + A.Dimension(n); +} + +template +inline void Dimension(T *&A, unsigned int, T *v) +{ + A=v; +} + +template +inline void Dimension(array1& A, unsigned int n, T *v) +{ + A.Dimension(n,v); +} + +template +inline void Dimension(Array1& A, unsigned int n, T *v) +{ + A.Dimension(n,v,0); +} + +template +inline void Dimension(T *&A, T *v) +{ + A=v; +} + +template +inline void Dimension(array1& A, const array1& B) +{ + A.Dimension(B); +} + +template +inline void Dimension(Array1& A, const Array1& B) +{ + A.Dimension(B); +} + +template +inline void Dimension(Array1& A, const array1& B) +{ + A.Dimension(B); +} + +template +inline void Dimension(array1& A, unsigned int n, const array1& B) +{ + A.Dimension(n,B); +} + +template +inline void Dimension(Array1& A, unsigned int n, const array1& B, int o) +{ + A.Dimension(n,B,o); +} + +template +inline void Dimension(Array1& A, unsigned int n, T *v, int o) +{ + A.Dimension(n,v,o); +} + +template +inline void Dimension(T *&A, unsigned int, T *v, int o) +{ + A=v-o; +} + +template +inline void Allocate(T *&A, unsigned int n, size_t align=0) +{ + if(align) newAlign(A,n,align); + else A=new T[n]; +} + +template +inline void Allocate(array1& A, unsigned int n, size_t align=0) +{ + A.Allocate(n,align); +} + +template +inline void Allocate(Array1& A, unsigned int n, size_t align=0) +{ + A.Allocate(n,align); +} + +template +inline void Allocate(T *&A, unsigned int n, int o, size_t align=0) +{ + Allocate(A,n,align); + A -= o; +} + +template +inline void Allocate(Array1& A, unsigned int n, int o, size_t align=0) +{ + A.Allocate(n,o,align); +} + +template +inline void Deallocate(T *A) +{ + if(A) delete [] A; +} + +template +inline void Deallocate(array1& A) +{ + A.Deallocate(); +} + +template +inline void Deallocate(Array1& A) +{ + A.Deallocate(); +} + +template +inline void Deallocate(T *A, int o) +{ + if(A) delete [] (A+o); +} + +template +inline void Deallocate(Array1& A, int) +{ + A.Deallocate(); +} + +template +inline void Reallocate(T *&A, unsigned int n, size_t align=0) +{ + if(A) delete [] A; + Allocate(A,n,align); +} + +template +inline void Reallocate(array1& A, unsigned int n) +{ + A.Reallocate(n); +} + +template +inline void Reallocate(Array1& A, unsigned int n) +{ + A.Reallocate(n); +} + +template +inline void Reallocate(T *&A, unsigned int n, int o, size_t align=0) +{ + if(A) delete [] A; + Allocate(A,n,align); + A -= o; +} + +template +inline void Reallocate(Array1& A, unsigned int n, int o, size_t align=0) +{ + A.Reallocate(n,o,align); +} + +template +inline void CheckReallocate(T& A, unsigned int n, unsigned int& old, + size_t align=0) +{ + if(n > old) {A.Reallocate(n,align); old=n;} +} + +template +inline void CheckReallocate(T& A, unsigned int n, int o, unsigned int& old, + size_t align=0) +{ + if(n > old) {A.Reallocate(n,o,align); old=n;} +} + +} + +#undef __check +#undef __checkSize +#undef __checkActivate + +#endif diff --git a/examples/Integration_with_fftw/fftw/align.h b/examples/Integration_with_fftw/fftw/align.h new file mode 100644 index 0000000..f6f2e94 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/align.h @@ -0,0 +1,123 @@ +#ifndef __align_h__ +#define __align_h__ 1 + +#ifndef HAVE_POSIX_MEMALIGN + +#ifdef __GLIBC_PREREQ +#if __GLIBC_PREREQ(2,3) +#define HAVE_POSIX_MEMALIGN +#endif +#else +#ifdef _POSIX_SOURCE +#define HAVE_POSIX_MEMALIGN +#endif +#endif + +#endif + +#ifdef __Array_h__ + +namespace Array { +static const array1 NULL1; +static const array2 NULL2; +static const array3 NULL3; +} + +#else + +#ifdef HAVE_POSIX_MEMALIGN +#ifdef _AIX +extern "C" int posix_memalign(void **memptr, size_t alignment, size_t size); +#endif +#else +namespace Array { + +// Adapted from FFTW aligned malloc/free. Assumes that malloc is at least +// sizeof(void*)-aligned. Allocated memory must be freed with free0. +inline int posix_memalign0(void **memptr, size_t alignment, size_t size) +{ + if(alignment % sizeof (void *) != 0 || (alignment & (alignment - 1)) != 0) + return EINVAL; + void *p0=malloc(size+alignment); + if(!p0) return ENOMEM; + void *p=(void *)(((size_t) p0+alignment)&~(alignment-1)); + *((void **) p-1)=p0; + *memptr=p; + return 0; +} + +inline void free0(void *p) +{ + if(p) free(*((void **) p-1)); +} + +} +#endif + +namespace Array { + +template +inline void newAlign(T *&v, size_t len, size_t align) +{ + void *mem=NULL; + const char *invalid="Invalid alignment requested"; + const char *nomem="Memory limits exceeded"; +#ifdef HAVE_POSIX_MEMALIGN + int rc=posix_memalign(&mem,align,len*sizeof(T)); +#else + int rc=posix_memalign0(&mem,align,len*sizeof(T)); +#endif + if(rc == EINVAL) std::cerr << invalid << std::endl; + if(rc == ENOMEM) std::cerr << nomem << std::endl; + v=(T *) mem; + for(size_t i=0; i < len; i++) new(v+i) T; +} + +template +inline void deleteAlign(T *v, size_t len) +{ + for(size_t i=len; i-- > 0;) v[i].~T(); +#ifdef HAVE_POSIX_MEMALIGN + free(v); +#else + free0(v); +#endif +} +} + +#endif + +namespace utils { + +inline unsigned int ceilquotient(unsigned int a, unsigned int b) +{ + return (a+b-1)/b; +} + +inline Complex *ComplexAlign(size_t size) +{ + Complex *v; + Array::newAlign(v,size,sizeof(Complex)); + return v; +} + +inline double *doubleAlign(size_t size) +{ + double *v; + Array::newAlign(v,size,sizeof(Complex)); + return v; +} + +template +inline void deleteAlign(T *p) +{ +#ifdef HAVE_POSIX_MEMALIGN + free(p); +#else + Array::free0(p); +#endif +} + +} + +#endif diff --git a/examples/Integration_with_fftw/fftw/api/.deps/apiplan.Plo b/examples/Integration_with_fftw/fftw/api/.deps/apiplan.Plo new file mode 100644 index 0000000..3e5be72 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/apiplan.Plo @@ -0,0 +1,153 @@ +apiplan.lo: apiplan.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/configure.Plo b/examples/Integration_with_fftw/fftw/api/.deps/configure.Plo new file mode 100644 index 0000000..611232f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/configure.Plo @@ -0,0 +1,160 @@ +configure.lo: configure.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h \ + ../reodft/reodft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: + +../reodft/reodft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-dft-c2r.Plo new file mode 100644 index 0000000..8362478 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-dft-c2r.Plo @@ -0,0 +1,153 @@ +execute-dft-c2r.lo: execute-dft-c2r.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-dft-r2c.Plo new file mode 100644 index 0000000..deb58f2 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-dft-r2c.Plo @@ -0,0 +1,153 @@ +execute-dft-r2c.lo: execute-dft-r2c.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-dft.Plo new file mode 100644 index 0000000..26e9089 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-dft.Plo @@ -0,0 +1,157 @@ +execute-dft.lo: execute-dft.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-r2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-r2r.Plo new file mode 100644 index 0000000..b28aa06 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-r2r.Plo @@ -0,0 +1,153 @@ +execute-r2r.lo: execute-r2r.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft-c2r.Plo new file mode 100644 index 0000000..1cbfac5 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft-c2r.Plo @@ -0,0 +1,154 @@ +execute-split-dft-c2r.lo: execute-split-dft-c2r.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft-r2c.Plo new file mode 100644 index 0000000..01d127b --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft-r2c.Plo @@ -0,0 +1,154 @@ +execute-split-dft-r2c.lo: execute-split-dft-r2c.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft.Plo new file mode 100644 index 0000000..9a8bd75 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute-split-dft.Plo @@ -0,0 +1,157 @@ +execute-split-dft.lo: execute-split-dft.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/execute.Plo b/examples/Integration_with_fftw/fftw/api/.deps/execute.Plo new file mode 100644 index 0000000..e58d135 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/execute.Plo @@ -0,0 +1,153 @@ +execute.lo: execute.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom-to-file.Plo b/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom-to-file.Plo new file mode 100644 index 0000000..ec8f6d9 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom-to-file.Plo @@ -0,0 +1,154 @@ +export-wisdom-to-file.lo: export-wisdom-to-file.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom-to-string.Plo b/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom-to-string.Plo new file mode 100644 index 0000000..186bbca --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom-to-string.Plo @@ -0,0 +1,154 @@ +export-wisdom-to-string.lo: export-wisdom-to-string.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom.Plo b/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom.Plo new file mode 100644 index 0000000..37ae45d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/export-wisdom.Plo @@ -0,0 +1,153 @@ +export-wisdom.lo: export-wisdom.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/f77api.Plo b/examples/Integration_with_fftw/fftw/api/.deps/f77api.Plo new file mode 100644 index 0000000..5c3b746 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/f77api.Plo @@ -0,0 +1,162 @@ +f77api.lo: f77api.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h \ + ../api/x77.h f77funcs.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: + +../api/x77.h: + +f77funcs.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/flops.Plo b/examples/Integration_with_fftw/fftw/api/.deps/flops.Plo new file mode 100644 index 0000000..f6dc912 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/flops.Plo @@ -0,0 +1,153 @@ +flops.lo: flops.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/forget-wisdom.Plo b/examples/Integration_with_fftw/fftw/api/.deps/forget-wisdom.Plo new file mode 100644 index 0000000..f153edf --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/forget-wisdom.Plo @@ -0,0 +1,153 @@ +forget-wisdom.lo: forget-wisdom.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/import-system-wisdom.Plo b/examples/Integration_with_fftw/fftw/api/.deps/import-system-wisdom.Plo new file mode 100644 index 0000000..8929e88 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/import-system-wisdom.Plo @@ -0,0 +1,154 @@ +import-system-wisdom.lo: import-system-wisdom.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom-from-file.Plo b/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom-from-file.Plo new file mode 100644 index 0000000..3d0fe52 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom-from-file.Plo @@ -0,0 +1,154 @@ +import-wisdom-from-file.lo: import-wisdom-from-file.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom-from-string.Plo b/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom-from-string.Plo new file mode 100644 index 0000000..c3cae42 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom-from-string.Plo @@ -0,0 +1,154 @@ +import-wisdom-from-string.lo: import-wisdom-from-string.c ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom.Plo b/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom.Plo new file mode 100644 index 0000000..c58e79f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/import-wisdom.Plo @@ -0,0 +1,153 @@ +import-wisdom.lo: import-wisdom.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/malloc.Plo b/examples/Integration_with_fftw/fftw/api/.deps/malloc.Plo new file mode 100644 index 0000000..7c5353e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/malloc.Plo @@ -0,0 +1,153 @@ +malloc.lo: malloc.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/map-r2r-kind.Plo b/examples/Integration_with_fftw/fftw/api/.deps/map-r2r-kind.Plo new file mode 100644 index 0000000..c49cf4d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/map-r2r-kind.Plo @@ -0,0 +1,153 @@ +map-r2r-kind.lo: map-r2r-kind.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/mapflags.Plo b/examples/Integration_with_fftw/fftw/api/.deps/mapflags.Plo new file mode 100644 index 0000000..4315f95 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/mapflags.Plo @@ -0,0 +1,180 @@ +mapflags.lo: mapflags.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/math.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/huge_val.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/huge_valf.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/huge_vall.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/inf.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/nan.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/mathdef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/mathcalls.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/mathinline.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/math.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/huge_val.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/huge_valf.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/huge_vall.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/inf.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/nan.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/mathdef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/mathcalls.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/mathinline.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/mkprinter-file.Plo b/examples/Integration_with_fftw/fftw/api/.deps/mkprinter-file.Plo new file mode 100644 index 0000000..1340a29 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/mkprinter-file.Plo @@ -0,0 +1,153 @@ +mkprinter-file.lo: mkprinter-file.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/mkprinter-str.Plo b/examples/Integration_with_fftw/fftw/api/.deps/mkprinter-str.Plo new file mode 100644 index 0000000..daab9ea --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/mkprinter-str.Plo @@ -0,0 +1,153 @@ +mkprinter-str.lo: mkprinter-str.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/mktensor-iodims.Plo b/examples/Integration_with_fftw/fftw/api/.deps/mktensor-iodims.Plo new file mode 100644 index 0000000..a9932b2 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/mktensor-iodims.Plo @@ -0,0 +1,158 @@ +mktensor-iodims.lo: mktensor-iodims.c guru.h mktensor-iodims.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru.h: + +mktensor-iodims.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/mktensor-iodims64.Plo b/examples/Integration_with_fftw/fftw/api/.deps/mktensor-iodims64.Plo new file mode 100644 index 0000000..2806889 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/mktensor-iodims64.Plo @@ -0,0 +1,158 @@ +mktensor-iodims64.lo: mktensor-iodims64.c guru64.h mktensor-iodims.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru64.h: + +mktensor-iodims.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/mktensor-rowmajor.Plo b/examples/Integration_with_fftw/fftw/api/.deps/mktensor-rowmajor.Plo new file mode 100644 index 0000000..02ceb54 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/mktensor-rowmajor.Plo @@ -0,0 +1,153 @@ +mktensor-rowmajor.lo: mktensor-rowmajor.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-1d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-1d.Plo new file mode 100644 index 0000000..f910c7f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-1d.Plo @@ -0,0 +1,157 @@ +plan-dft-1d.lo: plan-dft-1d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-2d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-2d.Plo new file mode 100644 index 0000000..0fe18d8 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-2d.Plo @@ -0,0 +1,157 @@ +plan-dft-2d.lo: plan-dft-2d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-3d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-3d.Plo new file mode 100644 index 0000000..3dfcd78 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-3d.Plo @@ -0,0 +1,157 @@ +plan-dft-3d.lo: plan-dft-3d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-1d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-1d.Plo new file mode 100644 index 0000000..15a19a5 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-1d.Plo @@ -0,0 +1,153 @@ +plan-dft-c2r-1d.lo: plan-dft-c2r-1d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-2d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-2d.Plo new file mode 100644 index 0000000..9d61e89 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-2d.Plo @@ -0,0 +1,153 @@ +plan-dft-c2r-2d.lo: plan-dft-c2r-2d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-3d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-3d.Plo new file mode 100644 index 0000000..c889187 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r-3d.Plo @@ -0,0 +1,153 @@ +plan-dft-c2r-3d.lo: plan-dft-c2r-3d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r.Plo new file mode 100644 index 0000000..9d7c4c6 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-c2r.Plo @@ -0,0 +1,153 @@ +plan-dft-c2r.lo: plan-dft-c2r.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-1d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-1d.Plo new file mode 100644 index 0000000..c54890a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-1d.Plo @@ -0,0 +1,153 @@ +plan-dft-r2c-1d.lo: plan-dft-r2c-1d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-2d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-2d.Plo new file mode 100644 index 0000000..76f9e53 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-2d.Plo @@ -0,0 +1,153 @@ +plan-dft-r2c-2d.lo: plan-dft-r2c-2d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-3d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-3d.Plo new file mode 100644 index 0000000..d2a9ba1 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c-3d.Plo @@ -0,0 +1,153 @@ +plan-dft-r2c-3d.lo: plan-dft-r2c-3d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c.Plo new file mode 100644 index 0000000..255196b --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft-r2c.Plo @@ -0,0 +1,153 @@ +plan-dft-r2c.lo: plan-dft-r2c.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft.Plo new file mode 100644 index 0000000..a5a7d38 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-dft.Plo @@ -0,0 +1,153 @@ +plan-dft.lo: plan-dft.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft-c2r.Plo new file mode 100644 index 0000000..d1c5490 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft-c2r.Plo @@ -0,0 +1,158 @@ +plan-guru-dft-c2r.lo: plan-guru-dft-c2r.c guru.h plan-guru-dft-c2r.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru.h: + +plan-guru-dft-c2r.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft-r2c.Plo new file mode 100644 index 0000000..ad9a5d4 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft-r2c.Plo @@ -0,0 +1,158 @@ +plan-guru-dft-r2c.lo: plan-guru-dft-r2c.c guru.h plan-guru-dft-r2c.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru.h: + +plan-guru-dft-r2c.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft.Plo new file mode 100644 index 0000000..6feeeab --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-dft.Plo @@ -0,0 +1,162 @@ +plan-guru-dft.lo: plan-guru-dft.c guru.h plan-guru-dft.h ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +guru.h: + +plan-guru-dft.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-r2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-r2r.Plo new file mode 100644 index 0000000..434135d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-r2r.Plo @@ -0,0 +1,158 @@ +plan-guru-r2r.lo: plan-guru-r2r.c guru.h plan-guru-r2r.h ../api/api.h \ + ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru.h: + +plan-guru-r2r.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft-c2r.Plo new file mode 100644 index 0000000..9b2622a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft-c2r.Plo @@ -0,0 +1,158 @@ +plan-guru-split-dft-c2r.lo: plan-guru-split-dft-c2r.c guru.h \ + plan-guru-split-dft-c2r.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru.h: + +plan-guru-split-dft-c2r.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft-r2c.Plo new file mode 100644 index 0000000..509239d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft-r2c.Plo @@ -0,0 +1,158 @@ +plan-guru-split-dft-r2c.lo: plan-guru-split-dft-r2c.c guru.h \ + plan-guru-split-dft-r2c.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru.h: + +plan-guru-split-dft-r2c.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft.Plo new file mode 100644 index 0000000..853db0b --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru-split-dft.Plo @@ -0,0 +1,162 @@ +plan-guru-split-dft.lo: plan-guru-split-dft.c guru.h \ + plan-guru-split-dft.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +guru.h: + +plan-guru-split-dft.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft-c2r.Plo new file mode 100644 index 0000000..68c9151 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft-c2r.Plo @@ -0,0 +1,158 @@ +plan-guru64-dft-c2r.lo: plan-guru64-dft-c2r.c guru64.h \ + plan-guru-dft-c2r.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru64.h: + +plan-guru-dft-c2r.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft-r2c.Plo new file mode 100644 index 0000000..87965c5 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft-r2c.Plo @@ -0,0 +1,158 @@ +plan-guru64-dft-r2c.lo: plan-guru64-dft-r2c.c guru64.h \ + plan-guru-dft-r2c.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru64.h: + +plan-guru-dft-r2c.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft.Plo new file mode 100644 index 0000000..72c7952 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-dft.Plo @@ -0,0 +1,162 @@ +plan-guru64-dft.lo: plan-guru64-dft.c guru64.h plan-guru-dft.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +guru64.h: + +plan-guru-dft.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-r2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-r2r.Plo new file mode 100644 index 0000000..fae924e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-r2r.Plo @@ -0,0 +1,158 @@ +plan-guru64-r2r.lo: plan-guru64-r2r.c guru64.h plan-guru-r2r.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru64.h: + +plan-guru-r2r.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft-c2r.Plo new file mode 100644 index 0000000..a30c6a0 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft-c2r.Plo @@ -0,0 +1,158 @@ +plan-guru64-split-dft-c2r.lo: plan-guru64-split-dft-c2r.c guru64.h \ + plan-guru-split-dft-c2r.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru64.h: + +plan-guru-split-dft-c2r.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft-r2c.Plo new file mode 100644 index 0000000..1ff31b9 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft-r2c.Plo @@ -0,0 +1,158 @@ +plan-guru64-split-dft-r2c.lo: plan-guru64-split-dft-r2c.c guru64.h \ + plan-guru-split-dft-r2c.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +guru64.h: + +plan-guru-split-dft-r2c.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft.Plo new file mode 100644 index 0000000..b6ca6b0 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-guru64-split-dft.Plo @@ -0,0 +1,162 @@ +plan-guru64-split-dft.lo: plan-guru64-split-dft.c guru64.h \ + plan-guru-split-dft.h ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +guru64.h: + +plan-guru-split-dft.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft-c2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft-c2r.Plo new file mode 100644 index 0000000..4ad665c --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft-c2r.Plo @@ -0,0 +1,153 @@ +plan-many-dft-c2r.lo: plan-many-dft-c2r.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft-r2c.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft-r2c.Plo new file mode 100644 index 0000000..a933f46 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft-r2c.Plo @@ -0,0 +1,153 @@ +plan-many-dft-r2c.lo: plan-many-dft-r2c.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft.Plo new file mode 100644 index 0000000..7822579 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-dft.Plo @@ -0,0 +1,157 @@ +plan-many-dft.lo: plan-many-dft.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h ../dft/dft.h ../dft/codelet-dft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: + +../dft/dft.h: + +../dft/codelet-dft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-many-r2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-r2r.Plo new file mode 100644 index 0000000..08d98c1 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-many-r2r.Plo @@ -0,0 +1,153 @@ +plan-many-r2r.lo: plan-many-r2r.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-1d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-1d.Plo new file mode 100644 index 0000000..08f7bea --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-1d.Plo @@ -0,0 +1,153 @@ +plan-r2r-1d.lo: plan-r2r-1d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-2d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-2d.Plo new file mode 100644 index 0000000..c4cf6dc --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-2d.Plo @@ -0,0 +1,153 @@ +plan-r2r-2d.lo: plan-r2r-2d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-3d.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-3d.Plo new file mode 100644 index 0000000..8b73688 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r-3d.Plo @@ -0,0 +1,153 @@ +plan-r2r-3d.lo: plan-r2r-3d.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r.Plo b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r.Plo new file mode 100644 index 0000000..37695c4 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/plan-r2r.Plo @@ -0,0 +1,153 @@ +plan-r2r.lo: plan-r2r.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/print-plan.Plo b/examples/Integration_with_fftw/fftw/api/.deps/print-plan.Plo new file mode 100644 index 0000000..a3746dd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/print-plan.Plo @@ -0,0 +1,153 @@ +print-plan.lo: print-plan.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/rdft2-pad.Plo b/examples/Integration_with_fftw/fftw/api/.deps/rdft2-pad.Plo new file mode 100644 index 0000000..274d595 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/rdft2-pad.Plo @@ -0,0 +1,166 @@ +rdft2-pad.lo: rdft2-pad.c \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/string.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/string.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/string2.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/string3.h \ + ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/string.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/string.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/string2.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/string3.h: + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/the-planner.Plo b/examples/Integration_with_fftw/fftw/api/.deps/the-planner.Plo new file mode 100644 index 0000000..9faaaa4 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/the-planner.Plo @@ -0,0 +1,153 @@ +the-planner.lo: the-planner.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/.deps/version.Plo b/examples/Integration_with_fftw/fftw/api/.deps/version.Plo new file mode 100644 index 0000000..7b7de3a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/.deps/version.Plo @@ -0,0 +1,153 @@ +version.lo: version.c ../api/api.h ../api/fftw3.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h \ + ../kernel/ifftw.h ../config.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h \ + /home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h \ + /home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h \ + ../rdft/rdft.h ../rdft/codelet-rdft.h + +../api/api.h: + +../api/fftw3.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/cdefs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wordsize.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/gnu/stubs-64.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stddef.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/typesizes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/libio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/_G_config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/wchar.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdarg.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sys_errlist.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdio2.h: + +../kernel/ifftw.h: + +../config.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdlib.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitflags.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/waitstatus.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/endian.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/byteswap.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/types.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/select.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/sigset.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/sysmacros.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/alloca.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/stdlib.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/limits.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include-fixed/syslimits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix1_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/local_lim.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/linux/limits.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/posix2_lim.h: + +/home/arun/anaconda3/lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdint.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/wchar.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/inttypes.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/sys/time.h: + +/home/arun/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/xlocale.h: + +../rdft/rdft.h: + +../rdft/codelet-rdft.h: diff --git a/examples/Integration_with_fftw/fftw/api/Makefile b/examples/Integration_with_fftw/fftw/api/Makefile new file mode 100644 index 0000000..5600418 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/Makefile @@ -0,0 +1,846 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# api/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/fftw +pkgincludedir = $(includedir)/fftw +pkglibdir = $(libdir)/fftw +pkglibexecdir = $(libexecdir)/fftw +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = api +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/acx_mpi.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_check_compiler_flags.m4 \ + $(top_srcdir)/m4/ax_compiler_vendor.m4 \ + $(top_srcdir)/m4/ax_gcc_aligns_stack.m4 \ + $(top_srcdir)/m4/ax_gcc_version.m4 \ + $(top_srcdir)/m4/ax_openmp.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libapi_la_LIBADD = +am_libapi_la_OBJECTS = apiplan.lo configure.lo execute-dft-c2r.lo \ + execute-dft-r2c.lo execute-dft.lo execute-r2r.lo \ + execute-split-dft-c2r.lo execute-split-dft-r2c.lo \ + execute-split-dft.lo execute.lo export-wisdom-to-file.lo \ + export-wisdom-to-string.lo export-wisdom.lo f77api.lo flops.lo \ + forget-wisdom.lo import-system-wisdom.lo \ + import-wisdom-from-file.lo import-wisdom-from-string.lo \ + import-wisdom.lo malloc.lo map-r2r-kind.lo mapflags.lo \ + mkprinter-file.lo mkprinter-str.lo mktensor-iodims.lo \ + mktensor-rowmajor.lo plan-dft-1d.lo plan-dft-2d.lo \ + plan-dft-3d.lo plan-dft-c2r-1d.lo plan-dft-c2r-2d.lo \ + plan-dft-c2r-3d.lo plan-dft-c2r.lo plan-dft-r2c-1d.lo \ + plan-dft-r2c-2d.lo plan-dft-r2c-3d.lo plan-dft-r2c.lo \ + plan-dft.lo plan-guru-dft-c2r.lo plan-guru-dft-r2c.lo \ + plan-guru-dft.lo plan-guru-r2r.lo plan-guru-split-dft-c2r.lo \ + plan-guru-split-dft-r2c.lo plan-guru-split-dft.lo \ + plan-many-dft-c2r.lo plan-many-dft-r2c.lo plan-many-dft.lo \ + plan-many-r2r.lo plan-r2r-1d.lo plan-r2r-2d.lo plan-r2r-3d.lo \ + plan-r2r.lo print-plan.lo rdft2-pad.lo the-planner.lo \ + version.lo plan-guru64-dft-c2r.lo plan-guru64-dft-r2c.lo \ + plan-guru64-dft.lo plan-guru64-r2r.lo \ + plan-guru64-split-dft-c2r.lo plan-guru64-split-dft-r2c.lo \ + plan-guru64-split-dft.lo mktensor-iodims64.lo +libapi_la_OBJECTS = $(am_libapi_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libapi_la_SOURCES) +DIST_SOURCES = $(libapi_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)" +HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/arun/Documents/mmsp-arun/fftw-3.3.8/missing aclocal-1.15 +ALLOCA = +ALTIVEC_CFLAGS = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-ar +AS = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-as +AUTOCONF = ${SHELL} /home/arun/Documents/mmsp-arun/fftw-3.3.8/missing autoconf +AUTOHEADER = ${SHELL} /home/arun/Documents/mmsp-arun/fftw-3.3.8/missing autoheader +AUTOMAKE = ${SHELL} /home/arun/Documents/mmsp-arun/fftw-3.3.8/missing automake-1.15 +AVX2_CFLAGS = +AVX512_CFLAGS = +AVX_128_FMA_CFLAGS = +AVX_CFLAGS = +AWK = mawk +CC = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-cc +CCDEPMODE = depmode=gcc3 +CFLAGS = -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/arun/anaconda3/include +CHECK_PL_OPTS = +CPP = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-cpp +CPPFLAGS = -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /home/arun/anaconda3/include +CYGPATH_W = echo +C_FFTW_R2R_KIND = C_INT32_T +C_MPI_FINT = +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +F77 = f77 +FFLAGS = -g -O2 +FGREP = /bin/grep -F +FLIBS = -L/home/arun/anaconda3/lib -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. -lgfortran -lm -lquadmath +GREP = /bin/grep +INDENT = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +KCVI_CFLAGS = +LD = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-ld -m elf_x86_64 +LDFLAGS = -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,-rpath,/home/arun/anaconda3/lib -Wl,-rpath-link,/home/arun/anaconda3/lib -L/home/arun/anaconda3/lib +LIBOBJS = +LIBQUADMATH = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAINT = # +MAKEINFO = ${SHELL} /home/arun/Documents/mmsp-arun/fftw-3.3.8/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /bin/mkdir -p +MPICC = +MPILIBS = +MPIRUN = +NEON_CFLAGS = +NM = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-nm +NMEDIT = +OBJDUMP = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-objdump +OBJEXT = o +OCAMLBUILD = +OPENMP_CFLAGS = +OTOOL = +OTOOL64 = +PACKAGE = fftw +PACKAGE_BUGREPORT = fftw@fftw.org +PACKAGE_NAME = fftw +PACKAGE_STRING = fftw 3.3.8 +PACKAGE_TARNAME = fftw +PACKAGE_URL = +PACKAGE_VERSION = 3.3.8 +PATH_SEPARATOR = : +POW_LIB = +PRECISION = d +PREC_SUFFIX = +PTHREAD_CC = +PTHREAD_CFLAGS = +PTHREAD_LIBS = +RANLIB = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-ranlib +SED = /bin/sed +SET_MAKE = +SHARED_VERSION_INFO = 8:8:5 +SHELL = /bin/bash +SSE2_CFLAGS = +STACK_ALIGN_CFLAGS = +STRIP = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-strip +THREADLIBS = +VERSION = 3.3.8 +VSX_CFLAGS = +abs_builddir = /home/arun/Documents/mmsp-arun/fftw-3.3.8/api +abs_srcdir = /home/arun/Documents/mmsp-arun/fftw-3.3.8/api +abs_top_builddir = /home/arun/Documents/mmsp-arun/fftw-3.3.8 +abs_top_srcdir = /home/arun/Documents/mmsp-arun/fftw-3.3.8 +ac_ct_AR = +ac_ct_CC = /home/arun/anaconda3/bin/x86_64-conda_cos6-linux-gnu-cc +ac_ct_DUMPBIN = +ac_ct_F77 = f77 +acx_pthread_config = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/arun/Documents/mmsp-arun/fftw-3.3.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +AM_CPPFLAGS = -I $(top_srcdir) +AM_CFLAGS = $(STACK_ALIGN_CFLAGS) +EXTRA_DIST = f03api.sh genf03.pl fftw3.f03.in +include_HEADERS = fftw3.h fftw3.f fftw3l.f03 fftw3q.f03 +nodist_include_HEADERS = fftw3.f03 +noinst_LTLIBRARIES = libapi.la +libapi_la_SOURCES = apiplan.c configure.c execute-dft-c2r.c \ +execute-dft-r2c.c execute-dft.c execute-r2r.c execute-split-dft-c2r.c \ +execute-split-dft-r2c.c execute-split-dft.c execute.c \ +export-wisdom-to-file.c export-wisdom-to-string.c export-wisdom.c \ +f77api.c flops.c forget-wisdom.c import-system-wisdom.c \ +import-wisdom-from-file.c import-wisdom-from-string.c import-wisdom.c \ +malloc.c map-r2r-kind.c mapflags.c mkprinter-file.c mkprinter-str.c \ +mktensor-iodims.c mktensor-rowmajor.c plan-dft-1d.c plan-dft-2d.c \ +plan-dft-3d.c plan-dft-c2r-1d.c plan-dft-c2r-2d.c plan-dft-c2r-3d.c \ +plan-dft-c2r.c plan-dft-r2c-1d.c plan-dft-r2c-2d.c plan-dft-r2c-3d.c \ +plan-dft-r2c.c plan-dft.c plan-guru-dft-c2r.c plan-guru-dft-r2c.c \ +plan-guru-dft.c plan-guru-r2r.c plan-guru-split-dft-c2r.c \ +plan-guru-split-dft-r2c.c plan-guru-split-dft.c plan-many-dft-c2r.c \ +plan-many-dft-r2c.c plan-many-dft.c plan-many-r2r.c plan-r2r-1d.c \ +plan-r2r-2d.c plan-r2r-3d.c plan-r2r.c print-plan.c rdft2-pad.c \ +the-planner.c version.c api.h f77funcs.h fftw3.h x77.h guru.h \ +guru64.h mktensor-iodims.h plan-guru-dft-c2r.h plan-guru-dft-r2c.h \ +plan-guru-dft.h plan-guru-r2r.h plan-guru-split-dft-c2r.h \ +plan-guru-split-dft-r2c.h plan-guru-split-dft.h plan-guru64-dft-c2r.c \ +plan-guru64-dft-r2c.c plan-guru64-dft.c plan-guru64-r2r.c \ +plan-guru64-split-dft-c2r.c plan-guru64-split-dft-r2c.c \ +plan-guru64-split-dft.c mktensor-iodims64.c + +BUILT_SOURCES = fftw3.f fftw3.f03.in fftw3.f03 fftw3l.f03 fftw3q.f03 +CLEANFILES = fftw3.f03 +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu api/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu api/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libapi.la: $(libapi_la_OBJECTS) $(libapi_la_DEPENDENCIES) $(EXTRA_libapi_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libapi_la_OBJECTS) $(libapi_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/apiplan.Plo +include ./$(DEPDIR)/configure.Plo +include ./$(DEPDIR)/execute-dft-c2r.Plo +include ./$(DEPDIR)/execute-dft-r2c.Plo +include ./$(DEPDIR)/execute-dft.Plo +include ./$(DEPDIR)/execute-r2r.Plo +include ./$(DEPDIR)/execute-split-dft-c2r.Plo +include ./$(DEPDIR)/execute-split-dft-r2c.Plo +include ./$(DEPDIR)/execute-split-dft.Plo +include ./$(DEPDIR)/execute.Plo +include ./$(DEPDIR)/export-wisdom-to-file.Plo +include ./$(DEPDIR)/export-wisdom-to-string.Plo +include ./$(DEPDIR)/export-wisdom.Plo +include ./$(DEPDIR)/f77api.Plo +include ./$(DEPDIR)/flops.Plo +include ./$(DEPDIR)/forget-wisdom.Plo +include ./$(DEPDIR)/import-system-wisdom.Plo +include ./$(DEPDIR)/import-wisdom-from-file.Plo +include ./$(DEPDIR)/import-wisdom-from-string.Plo +include ./$(DEPDIR)/import-wisdom.Plo +include ./$(DEPDIR)/malloc.Plo +include ./$(DEPDIR)/map-r2r-kind.Plo +include ./$(DEPDIR)/mapflags.Plo +include ./$(DEPDIR)/mkprinter-file.Plo +include ./$(DEPDIR)/mkprinter-str.Plo +include ./$(DEPDIR)/mktensor-iodims.Plo +include ./$(DEPDIR)/mktensor-iodims64.Plo +include ./$(DEPDIR)/mktensor-rowmajor.Plo +include ./$(DEPDIR)/plan-dft-1d.Plo +include ./$(DEPDIR)/plan-dft-2d.Plo +include ./$(DEPDIR)/plan-dft-3d.Plo +include ./$(DEPDIR)/plan-dft-c2r-1d.Plo +include ./$(DEPDIR)/plan-dft-c2r-2d.Plo +include ./$(DEPDIR)/plan-dft-c2r-3d.Plo +include ./$(DEPDIR)/plan-dft-c2r.Plo +include ./$(DEPDIR)/plan-dft-r2c-1d.Plo +include ./$(DEPDIR)/plan-dft-r2c-2d.Plo +include ./$(DEPDIR)/plan-dft-r2c-3d.Plo +include ./$(DEPDIR)/plan-dft-r2c.Plo +include ./$(DEPDIR)/plan-dft.Plo +include ./$(DEPDIR)/plan-guru-dft-c2r.Plo +include ./$(DEPDIR)/plan-guru-dft-r2c.Plo +include ./$(DEPDIR)/plan-guru-dft.Plo +include ./$(DEPDIR)/plan-guru-r2r.Plo +include ./$(DEPDIR)/plan-guru-split-dft-c2r.Plo +include ./$(DEPDIR)/plan-guru-split-dft-r2c.Plo +include ./$(DEPDIR)/plan-guru-split-dft.Plo +include ./$(DEPDIR)/plan-guru64-dft-c2r.Plo +include ./$(DEPDIR)/plan-guru64-dft-r2c.Plo +include ./$(DEPDIR)/plan-guru64-dft.Plo +include ./$(DEPDIR)/plan-guru64-r2r.Plo +include ./$(DEPDIR)/plan-guru64-split-dft-c2r.Plo +include ./$(DEPDIR)/plan-guru64-split-dft-r2c.Plo +include ./$(DEPDIR)/plan-guru64-split-dft.Plo +include ./$(DEPDIR)/plan-many-dft-c2r.Plo +include ./$(DEPDIR)/plan-many-dft-r2c.Plo +include ./$(DEPDIR)/plan-many-dft.Plo +include ./$(DEPDIR)/plan-many-r2r.Plo +include ./$(DEPDIR)/plan-r2r-1d.Plo +include ./$(DEPDIR)/plan-r2r-2d.Plo +include ./$(DEPDIR)/plan-r2r-3d.Plo +include ./$(DEPDIR)/plan-r2r.Plo +include ./$(DEPDIR)/print-plan.Plo +include ./$(DEPDIR)/rdft2-pad.Plo +include ./$(DEPDIR)/the-planner.Plo +include ./$(DEPDIR)/version.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) +install-nodist_includeHEADERS: $(nodist_include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-nodist_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS install-nodist_includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-nodist_includeHEADERS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-man install-nodist_includeHEADERS install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ + uninstall-nodist_includeHEADERS + +.PRECIOUS: Makefile + + +fftw3.f03: fftw3.f03.in + (echo "! Generated automatically. DO NOT EDIT!"; echo; \ + echo " integer, parameter :: C_FFTW_R2R_KIND = C_INT32_T"; \ + grep -v "Generated automatically" $(srcdir)/fftw3.f03.in) > $@ + +# convert constants to F77 PARAMETER statements +#fftw3.f: fftw3.h +# rm -f $@ +# perl -pe 's/([A-Z0-9_]+)=([+-]?[0-9]+)/\n INTEGER \1\n PARAMETER (\1=\2)\n/g' $< |egrep 'PARAMETER|INTEGER' > $@ +# perl -pe 's/#define +([A-Z0-9_]+) +\(([+-]?[0-9]+)U?\)/\n INTEGER \1\n PARAMETER (\1=\2)\n/g' $< |egrep 'PARAMETER|INTEGER' >> $@ +# perl -pe 'if (/#define +([A-Z0-9_]+) +\(([0-9]+)U? *<< *([0-9]+)\)/) { print "\n INTEGER $$1\n PARAMETER ($$1=",$$2 << $$3,")\n"; }' $< |egrep 'PARAMETER|INTEGER' >> $@ + +#fftw3.f03.in: fftw3.h f03api.sh genf03.pl +# sh $(srcdir)/f03api.sh d f > $@ + +#fftw3l.f03: fftw3.h f03api.sh genf03.pl +# sh $(srcdir)/f03api.sh l | grep -v parameter > $@ + +#fftw3q.f03: fftw3.h f03api.sh genf03.pl +# sh $(srcdir)/f03api.sh q | grep -v parameter > $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/examples/Integration_with_fftw/fftw/api/Makefile.am b/examples/Integration_with_fftw/fftw/api/Makefile.am new file mode 100644 index 0000000..5cb1082 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/Makefile.am @@ -0,0 +1,59 @@ +AM_CPPFLAGS = -I $(top_srcdir) +AM_CFLAGS = $(STACK_ALIGN_CFLAGS) + +EXTRA_DIST = f03api.sh genf03.pl fftw3.f03.in + +include_HEADERS = fftw3.h fftw3.f fftw3l.f03 fftw3q.f03 +nodist_include_HEADERS = fftw3.f03 +noinst_LTLIBRARIES = libapi.la + +libapi_la_SOURCES = apiplan.c configure.c execute-dft-c2r.c \ +execute-dft-r2c.c execute-dft.c execute-r2r.c execute-split-dft-c2r.c \ +execute-split-dft-r2c.c execute-split-dft.c execute.c \ +export-wisdom-to-file.c export-wisdom-to-string.c export-wisdom.c \ +f77api.c flops.c forget-wisdom.c import-system-wisdom.c \ +import-wisdom-from-file.c import-wisdom-from-string.c import-wisdom.c \ +malloc.c map-r2r-kind.c mapflags.c mkprinter-file.c mkprinter-str.c \ +mktensor-iodims.c mktensor-rowmajor.c plan-dft-1d.c plan-dft-2d.c \ +plan-dft-3d.c plan-dft-c2r-1d.c plan-dft-c2r-2d.c plan-dft-c2r-3d.c \ +plan-dft-c2r.c plan-dft-r2c-1d.c plan-dft-r2c-2d.c plan-dft-r2c-3d.c \ +plan-dft-r2c.c plan-dft.c plan-guru-dft-c2r.c plan-guru-dft-r2c.c \ +plan-guru-dft.c plan-guru-r2r.c plan-guru-split-dft-c2r.c \ +plan-guru-split-dft-r2c.c plan-guru-split-dft.c plan-many-dft-c2r.c \ +plan-many-dft-r2c.c plan-many-dft.c plan-many-r2r.c plan-r2r-1d.c \ +plan-r2r-2d.c plan-r2r-3d.c plan-r2r.c print-plan.c rdft2-pad.c \ +the-planner.c version.c api.h f77funcs.h fftw3.h x77.h guru.h \ +guru64.h mktensor-iodims.h plan-guru-dft-c2r.h plan-guru-dft-r2c.h \ +plan-guru-dft.h plan-guru-r2r.h plan-guru-split-dft-c2r.h \ +plan-guru-split-dft-r2c.h plan-guru-split-dft.h plan-guru64-dft-c2r.c \ +plan-guru64-dft-r2c.c plan-guru64-dft.c plan-guru64-r2r.c \ +plan-guru64-split-dft-c2r.c plan-guru64-split-dft-r2c.c \ +plan-guru64-split-dft.c mktensor-iodims64.c + +BUILT_SOURCES = fftw3.f fftw3.f03.in fftw3.f03 fftw3l.f03 fftw3q.f03 +CLEANFILES = fftw3.f03 + +fftw3.f03: fftw3.f03.in + (echo "! Generated automatically. DO NOT EDIT!"; echo; \ + echo " integer, parameter :: C_FFTW_R2R_KIND = @C_FFTW_R2R_KIND@"; \ + grep -v "Generated automatically" $(srcdir)/fftw3.f03.in) > $@ + +if MAINTAINER_MODE + +# convert constants to F77 PARAMETER statements +fftw3.f: fftw3.h + rm -f $@ + perl -pe 's/([A-Z0-9_]+)=([+-]?[0-9]+)/\n INTEGER \1\n PARAMETER (\1=\2)\n/g' $< |egrep 'PARAMETER|INTEGER' > $@ + perl -pe 's/#define +([A-Z0-9_]+) +\(([+-]?[0-9]+)U?\)/\n INTEGER \1\n PARAMETER (\1=\2)\n/g' $< |egrep 'PARAMETER|INTEGER' >> $@ + perl -pe 'if (/#define +([A-Z0-9_]+) +\(([0-9]+)U? *<< *([0-9]+)\)/) { print "\n INTEGER $$1\n PARAMETER ($$1=",$$2 << $$3,")\n"; }' $< |egrep 'PARAMETER|INTEGER' >> $@ + +fftw3.f03.in: fftw3.h f03api.sh genf03.pl + sh $(srcdir)/f03api.sh d f > $@ + +fftw3l.f03: fftw3.h f03api.sh genf03.pl + sh $(srcdir)/f03api.sh l | grep -v parameter > $@ + +fftw3q.f03: fftw3.h f03api.sh genf03.pl + sh $(srcdir)/f03api.sh q | grep -v parameter > $@ + +endif # MAINTAINER_MODE diff --git a/examples/Integration_with_fftw/fftw/api/Makefile.in b/examples/Integration_with_fftw/fftw/api/Makefile.in new file mode 100644 index 0000000..bf01c48 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/Makefile.in @@ -0,0 +1,846 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = api +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/acx_mpi.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_check_compiler_flags.m4 \ + $(top_srcdir)/m4/ax_compiler_vendor.m4 \ + $(top_srcdir)/m4/ax_gcc_aligns_stack.m4 \ + $(top_srcdir)/m4/ax_gcc_version.m4 \ + $(top_srcdir)/m4/ax_openmp.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libapi_la_LIBADD = +am_libapi_la_OBJECTS = apiplan.lo configure.lo execute-dft-c2r.lo \ + execute-dft-r2c.lo execute-dft.lo execute-r2r.lo \ + execute-split-dft-c2r.lo execute-split-dft-r2c.lo \ + execute-split-dft.lo execute.lo export-wisdom-to-file.lo \ + export-wisdom-to-string.lo export-wisdom.lo f77api.lo flops.lo \ + forget-wisdom.lo import-system-wisdom.lo \ + import-wisdom-from-file.lo import-wisdom-from-string.lo \ + import-wisdom.lo malloc.lo map-r2r-kind.lo mapflags.lo \ + mkprinter-file.lo mkprinter-str.lo mktensor-iodims.lo \ + mktensor-rowmajor.lo plan-dft-1d.lo plan-dft-2d.lo \ + plan-dft-3d.lo plan-dft-c2r-1d.lo plan-dft-c2r-2d.lo \ + plan-dft-c2r-3d.lo plan-dft-c2r.lo plan-dft-r2c-1d.lo \ + plan-dft-r2c-2d.lo plan-dft-r2c-3d.lo plan-dft-r2c.lo \ + plan-dft.lo plan-guru-dft-c2r.lo plan-guru-dft-r2c.lo \ + plan-guru-dft.lo plan-guru-r2r.lo plan-guru-split-dft-c2r.lo \ + plan-guru-split-dft-r2c.lo plan-guru-split-dft.lo \ + plan-many-dft-c2r.lo plan-many-dft-r2c.lo plan-many-dft.lo \ + plan-many-r2r.lo plan-r2r-1d.lo plan-r2r-2d.lo plan-r2r-3d.lo \ + plan-r2r.lo print-plan.lo rdft2-pad.lo the-planner.lo \ + version.lo plan-guru64-dft-c2r.lo plan-guru64-dft-r2c.lo \ + plan-guru64-dft.lo plan-guru64-r2r.lo \ + plan-guru64-split-dft-c2r.lo plan-guru64-split-dft-r2c.lo \ + plan-guru64-split-dft.lo mktensor-iodims64.lo +libapi_la_OBJECTS = $(am_libapi_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libapi_la_SOURCES) +DIST_SOURCES = $(libapi_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)" +HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AVX2_CFLAGS = @AVX2_CFLAGS@ +AVX512_CFLAGS = @AVX512_CFLAGS@ +AVX_128_FMA_CFLAGS = @AVX_128_FMA_CFLAGS@ +AVX_CFLAGS = @AVX_CFLAGS@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CHECK_PL_OPTS = @CHECK_PL_OPTS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +C_FFTW_R2R_KIND = @C_FFTW_R2R_KIND@ +C_MPI_FINT = @C_MPI_FINT@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +FLIBS = @FLIBS@ +GREP = @GREP@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCVI_CFLAGS = @KCVI_CFLAGS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBQUADMATH = @LIBQUADMATH@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPICC = @MPICC@ +MPILIBS = @MPILIBS@ +MPIRUN = @MPIRUN@ +NEON_CFLAGS = @NEON_CFLAGS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OCAMLBUILD = @OCAMLBUILD@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POW_LIB = @POW_LIB@ +PRECISION = @PRECISION@ +PREC_SUFFIX = @PREC_SUFFIX@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ +SHELL = @SHELL@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +STACK_ALIGN_CFLAGS = @STACK_ALIGN_CFLAGS@ +STRIP = @STRIP@ +THREADLIBS = @THREADLIBS@ +VERSION = @VERSION@ +VSX_CFLAGS = @VSX_CFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_F77 = @ac_ct_F77@ +acx_pthread_config = @acx_pthread_config@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I $(top_srcdir) +AM_CFLAGS = $(STACK_ALIGN_CFLAGS) +EXTRA_DIST = f03api.sh genf03.pl fftw3.f03.in +include_HEADERS = fftw3.h fftw3.f fftw3l.f03 fftw3q.f03 +nodist_include_HEADERS = fftw3.f03 +noinst_LTLIBRARIES = libapi.la +libapi_la_SOURCES = apiplan.c configure.c execute-dft-c2r.c \ +execute-dft-r2c.c execute-dft.c execute-r2r.c execute-split-dft-c2r.c \ +execute-split-dft-r2c.c execute-split-dft.c execute.c \ +export-wisdom-to-file.c export-wisdom-to-string.c export-wisdom.c \ +f77api.c flops.c forget-wisdom.c import-system-wisdom.c \ +import-wisdom-from-file.c import-wisdom-from-string.c import-wisdom.c \ +malloc.c map-r2r-kind.c mapflags.c mkprinter-file.c mkprinter-str.c \ +mktensor-iodims.c mktensor-rowmajor.c plan-dft-1d.c plan-dft-2d.c \ +plan-dft-3d.c plan-dft-c2r-1d.c plan-dft-c2r-2d.c plan-dft-c2r-3d.c \ +plan-dft-c2r.c plan-dft-r2c-1d.c plan-dft-r2c-2d.c plan-dft-r2c-3d.c \ +plan-dft-r2c.c plan-dft.c plan-guru-dft-c2r.c plan-guru-dft-r2c.c \ +plan-guru-dft.c plan-guru-r2r.c plan-guru-split-dft-c2r.c \ +plan-guru-split-dft-r2c.c plan-guru-split-dft.c plan-many-dft-c2r.c \ +plan-many-dft-r2c.c plan-many-dft.c plan-many-r2r.c plan-r2r-1d.c \ +plan-r2r-2d.c plan-r2r-3d.c plan-r2r.c print-plan.c rdft2-pad.c \ +the-planner.c version.c api.h f77funcs.h fftw3.h x77.h guru.h \ +guru64.h mktensor-iodims.h plan-guru-dft-c2r.h plan-guru-dft-r2c.h \ +plan-guru-dft.h plan-guru-r2r.h plan-guru-split-dft-c2r.h \ +plan-guru-split-dft-r2c.h plan-guru-split-dft.h plan-guru64-dft-c2r.c \ +plan-guru64-dft-r2c.c plan-guru64-dft.c plan-guru64-r2r.c \ +plan-guru64-split-dft-c2r.c plan-guru64-split-dft-r2c.c \ +plan-guru64-split-dft.c mktensor-iodims64.c + +BUILT_SOURCES = fftw3.f fftw3.f03.in fftw3.f03 fftw3l.f03 fftw3q.f03 +CLEANFILES = fftw3.f03 +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu api/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu api/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libapi.la: $(libapi_la_OBJECTS) $(libapi_la_DEPENDENCIES) $(EXTRA_libapi_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libapi_la_OBJECTS) $(libapi_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apiplan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/configure.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-r2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-split-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-split-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute-split-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execute.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/export-wisdom-to-file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/export-wisdom-to-string.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/export-wisdom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/f77api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flops.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/forget-wisdom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import-system-wisdom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import-wisdom-from-file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import-wisdom-from-string.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import-wisdom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/map-r2r-kind.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapflags.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkprinter-file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkprinter-str.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktensor-iodims.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktensor-iodims64.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktensor-rowmajor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-1d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-3d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-c2r-1d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-c2r-2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-c2r-3d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-r2c-1d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-r2c-2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-r2c-3d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-r2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-split-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-split-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru-split-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-r2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-split-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-split-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-guru64-split-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-many-dft-c2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-many-dft-r2c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-many-dft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-many-r2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-r2r-1d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-r2r-2d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-r2r-3d.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plan-r2r.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-plan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdft2-pad.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/the-planner.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) +install-nodist_includeHEADERS: $(nodist_include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-nodist_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS install-nodist_includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-nodist_includeHEADERS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-man install-nodist_includeHEADERS install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ + uninstall-nodist_includeHEADERS + +.PRECIOUS: Makefile + + +fftw3.f03: fftw3.f03.in + (echo "! Generated automatically. DO NOT EDIT!"; echo; \ + echo " integer, parameter :: C_FFTW_R2R_KIND = @C_FFTW_R2R_KIND@"; \ + grep -v "Generated automatically" $(srcdir)/fftw3.f03.in) > $@ + +# convert constants to F77 PARAMETER statements +@MAINTAINER_MODE_TRUE@fftw3.f: fftw3.h +@MAINTAINER_MODE_TRUE@ rm -f $@ +@MAINTAINER_MODE_TRUE@ perl -pe 's/([A-Z0-9_]+)=([+-]?[0-9]+)/\n INTEGER \1\n PARAMETER (\1=\2)\n/g' $< |egrep 'PARAMETER|INTEGER' > $@ +@MAINTAINER_MODE_TRUE@ perl -pe 's/#define +([A-Z0-9_]+) +\(([+-]?[0-9]+)U?\)/\n INTEGER \1\n PARAMETER (\1=\2)\n/g' $< |egrep 'PARAMETER|INTEGER' >> $@ +@MAINTAINER_MODE_TRUE@ perl -pe 'if (/#define +([A-Z0-9_]+) +\(([0-9]+)U? *<< *([0-9]+)\)/) { print "\n INTEGER $$1\n PARAMETER ($$1=",$$2 << $$3,")\n"; }' $< |egrep 'PARAMETER|INTEGER' >> $@ + +@MAINTAINER_MODE_TRUE@fftw3.f03.in: fftw3.h f03api.sh genf03.pl +@MAINTAINER_MODE_TRUE@ sh $(srcdir)/f03api.sh d f > $@ + +@MAINTAINER_MODE_TRUE@fftw3l.f03: fftw3.h f03api.sh genf03.pl +@MAINTAINER_MODE_TRUE@ sh $(srcdir)/f03api.sh l | grep -v parameter > $@ + +@MAINTAINER_MODE_TRUE@fftw3q.f03: fftw3.h f03api.sh genf03.pl +@MAINTAINER_MODE_TRUE@ sh $(srcdir)/f03api.sh q | grep -v parameter > $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/examples/Integration_with_fftw/fftw/api/api.h b/examples/Integration_with_fftw/fftw/api/api.h new file mode 100644 index 0000000..e3e94dd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/api.h @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* internal API definitions */ +#ifndef __API_H__ +#define __API_H__ + +#ifndef CALLING_FFTW /* defined in hook.c, when calling internal functions */ +# define COMPILING_FFTW /* used for DLL symbol exporting in fftw3.h */ +#endif + +/* When compiling with GNU libtool on Windows, DLL_EXPORT is #defined + for compiling the shared-library code. In this case, we'll #define + FFTW_DLL to add dllexport attributes to the specified functions in + fftw3.h. + + If we don't specify dllexport explicitly, then libtool + automatically exports all symbols. However, if we specify + dllexport explicitly for any functions, then libtool apparently + doesn't do any automatic exporting. (Not documented, grrr, but + this is the observed behavior with libtool 1.5.8.) Thus, using + this forces us to correctly dllexport every exported symbol, or + linking bench.exe will fail. This has the advantage of forcing + us to mark things correctly, which is necessary for other compilers + (such as MS VC++). */ +#ifdef DLL_EXPORT +# define FFTW_DLL +#endif + +/* just in case: force not to use C99 complex numbers + (we need this for IBM xlc because _Complex_I is treated specially + and is defined even if is not included) */ +#define FFTW_NO_Complex + +#include "api/fftw3.h" +#include "kernel/ifftw.h" +#include "rdft/rdft.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/* the API ``plan'' contains both the kernel plan and problem */ +struct X(plan_s) { + plan *pln; + problem *prb; + int sign; +}; + +/* shorthand */ +typedef struct X(plan_s) apiplan; + +/* complex type for internal use */ +typedef R C[2]; + +#define EXTRACT_REIM(sign, c, r, i) X(extract_reim)(sign, (c)[0], r, i) + +#define TAINT_UNALIGNED(p, flg) TAINT(p, ((flg) & FFTW_UNALIGNED) != 0) + +tensor *X(mktensor_rowmajor)(int rnk, const int *n, + const int *niphys, const int *nophys, + int is, int os); + +tensor *X(mktensor_iodims)(int rank, const X(iodim) *dims, int is, int os); +tensor *X(mktensor_iodims64)(int rank, const X(iodim64) *dims, int is, int os); +const int *X(rdft2_pad)(int rnk, const int *n, const int *nembed, + int inplace, int cmplx, int **nfree); + +int X(many_kosherp)(int rnk, const int *n, int howmany); +int X(guru_kosherp)(int rank, const X(iodim) *dims, + int howmany_rank, const X(iodim) *howmany_dims); +int X(guru64_kosherp)(int rank, const X(iodim64) *dims, + int howmany_rank, const X(iodim64) *howmany_dims); + +/* Note: FFTW_EXTERN is used for "internal" functions used in tests/hook.c */ + +FFTW_EXTERN printer *X(mkprinter_file)(FILE *f); + +printer *X(mkprinter_cnt)(size_t *cnt); +printer *X(mkprinter_str)(char *s); + +FFTW_EXTERN planner *X(the_planner)(void); +void X(configure_planner)(planner *plnr); + +void X(mapflags)(planner *, unsigned); + +apiplan *X(mkapiplan)(int sign, unsigned flags, problem *prb); + +rdft_kind *X(map_r2r_kind)(int rank, const X(r2r_kind) * kind); + +typedef void (*planner_hook_t)(void); + +void X(set_planner_hooks)(planner_hook_t before, planner_hook_t after); + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* __API_H__ */ diff --git a/examples/Integration_with_fftw/fftw/api/apiplan.c b/examples/Integration_with_fftw/fftw/api/apiplan.c new file mode 100644 index 0000000..b8642a9 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/apiplan.c @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +static planner_hook_t before_planner_hook = 0, after_planner_hook = 0; + +void X(set_planner_hooks)(planner_hook_t before, planner_hook_t after) +{ + before_planner_hook = before; + after_planner_hook = after; +} + +static plan *mkplan0(planner *plnr, unsigned flags, + const problem *prb, unsigned hash_info, + wisdom_state_t wisdom_state) +{ + /* map API flags into FFTW flags */ + X(mapflags)(plnr, flags); + + plnr->flags.hash_info = hash_info; + plnr->wisdom_state = wisdom_state; + + /* create plan */ + return plnr->adt->mkplan(plnr, prb); +} + +static unsigned force_estimator(unsigned flags) +{ + flags &= ~(FFTW_MEASURE | FFTW_PATIENT | FFTW_EXHAUSTIVE); + return (flags | FFTW_ESTIMATE); +} + +static plan *mkplan(planner *plnr, unsigned flags, + const problem *prb, unsigned hash_info) +{ + plan *pln; + + pln = mkplan0(plnr, flags, prb, hash_info, WISDOM_NORMAL); + + if (plnr->wisdom_state == WISDOM_NORMAL && !pln) { + /* maybe the planner failed because of inconsistent wisdom; + plan again ignoring infeasible wisdom */ + pln = mkplan0(plnr, force_estimator(flags), prb, + hash_info, WISDOM_IGNORE_INFEASIBLE); + } + + if (plnr->wisdom_state == WISDOM_IS_BOGUS) { + /* if the planner detected a wisdom inconsistency, + forget all wisdom and plan again */ + plnr->adt->forget(plnr, FORGET_EVERYTHING); + + A(!pln); + pln = mkplan0(plnr, flags, prb, hash_info, WISDOM_NORMAL); + + if (plnr->wisdom_state == WISDOM_IS_BOGUS) { + /* if it still fails, plan without wisdom */ + plnr->adt->forget(plnr, FORGET_EVERYTHING); + + A(!pln); + pln = mkplan0(plnr, force_estimator(flags), + prb, hash_info, WISDOM_IGNORE_ALL); + } + } + + return pln; +} + +apiplan *X(mkapiplan)(int sign, unsigned flags, problem *prb) +{ + apiplan *p = 0; + plan *pln; + unsigned flags_used_for_planning; + planner *plnr; + static const unsigned int pats[] = {FFTW_ESTIMATE, FFTW_MEASURE, + FFTW_PATIENT, FFTW_EXHAUSTIVE}; + int pat, pat_max; + double pcost = 0; + + if (before_planner_hook) + before_planner_hook(); + + plnr = X(the_planner)(); + + if (flags & FFTW_WISDOM_ONLY) { + /* Special mode that returns a plan only if wisdom is present, + and returns 0 otherwise. This is now documented in the manual, + as a way to detect whether wisdom is available for a problem. */ + flags_used_for_planning = flags; + pln = mkplan0(plnr, flags, prb, 0, WISDOM_ONLY); + } else { + pat_max = flags & FFTW_ESTIMATE ? 0 : + (flags & FFTW_EXHAUSTIVE ? 3 : + (flags & FFTW_PATIENT ? 2 : 1)); + pat = plnr->timelimit >= 0 ? 0 : pat_max; + + flags &= ~(FFTW_ESTIMATE | FFTW_MEASURE | + FFTW_PATIENT | FFTW_EXHAUSTIVE); + + plnr->start_time = X(get_crude_time)(); + + /* plan at incrementally increasing patience until we run + out of time */ + for (pln = 0, flags_used_for_planning = 0; pat <= pat_max; ++pat) { + plan *pln1; + unsigned tmpflags = flags | pats[pat]; + pln1 = mkplan(plnr, tmpflags, prb, 0u); + + if (!pln1) { + /* don't bother continuing if planner failed or timed out */ + A(!pln || plnr->timed_out); + break; + } + + X(plan_destroy_internal)(pln); + pln = pln1; + flags_used_for_planning = tmpflags; + pcost = pln->pcost; + } + } + + if (pln) { + /* build apiplan */ + p = (apiplan *) MALLOC(sizeof(apiplan), PLANS); + p->prb = prb; + p->sign = sign; /* cache for execute_dft */ + + /* re-create plan from wisdom, adding blessing */ + p->pln = mkplan(plnr, flags_used_for_planning, prb, BLESSING); + + /* record pcost from most recent measurement for use in X(cost) */ + p->pln->pcost = pcost; + + if (sizeof(trigreal) > sizeof(R)) { + /* this is probably faster, and we have enough trigreal + bits to maintain accuracy */ + X(plan_awake)(p->pln, AWAKE_SQRTN_TABLE); + } else { + /* more accurate */ + X(plan_awake)(p->pln, AWAKE_SINCOS); + } + + /* we don't use pln for p->pln, above, since by re-creating the + plan we might use more patient wisdom from a timed-out mkplan */ + X(plan_destroy_internal)(pln); + } else + X(problem_destroy)(prb); + + /* discard all information not necessary to reconstruct the plan */ + plnr->adt->forget(plnr, FORGET_ACCURSED); + +#ifdef FFTW_RANDOM_ESTIMATOR + X(random_estimate_seed)++; /* subsequent "random" plans are distinct */ +#endif + + if (after_planner_hook) + after_planner_hook(); + + return p; +} + +void X(destroy_plan)(X(plan) p) +{ + if (p) { + if (before_planner_hook) + before_planner_hook(); + + X(plan_awake)(p->pln, SLEEPY); + X(plan_destroy_internal)(p->pln); + X(problem_destroy)(p->prb); + X(ifree)(p); + + if (after_planner_hook) + after_planner_hook(); + } +} + +int X(alignment_of)(R *p) +{ + return X(ialignment_of(p)); +} diff --git a/examples/Integration_with_fftw/fftw/api/configure.c b/examples/Integration_with_fftw/fftw/api/configure.c new file mode 100644 index 0000000..08b074c --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/configure.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" +#include "rdft/rdft.h" +#include "reodft/reodft.h" + +void X(configure_planner)(planner *plnr) +{ + X(dft_conf_standard)(plnr); + X(rdft_conf_standard)(plnr); + X(reodft_conf_standard)(plnr); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/execute-dft-c2r.c new file mode 100644 index 0000000..436cfea --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-dft-c2r.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +/* guru interface: requires care in alignment, r - i, etcetera. */ +void X(execute_dft_c2r)(const X(plan) p, C *in, R *out) +{ + plan_rdft2 *pln = (plan_rdft2 *) p->pln; + problem_rdft2 *prb = (problem_rdft2 *) p->prb; + pln->apply((plan *) pln, out, out + (prb->r1 - prb->r0), in[0], in[0]+1); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/execute-dft-r2c.c new file mode 100644 index 0000000..0ba2c18 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-dft-r2c.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +/* guru interface: requires care in alignment, r - i, etcetera. */ +void X(execute_dft_r2c)(const X(plan) p, R *in, C *out) +{ + plan_rdft2 *pln = (plan_rdft2 *) p->pln; + problem_rdft2 *prb = (problem_rdft2 *) p->prb; + pln->apply((plan *) pln, in, in + (prb->r1 - prb->r0), out[0], out[0]+1); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-dft.c b/examples/Integration_with_fftw/fftw/api/execute-dft.c new file mode 100644 index 0000000..56e3afe --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-dft.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +/* guru interface: requires care in alignment etcetera. */ +void X(execute_dft)(const X(plan) p, C *in, C *out) +{ + plan_dft *pln = (plan_dft *) p->pln; + if (p->sign == FFT_SIGN) + pln->apply((plan *) pln, in[0], in[0]+1, out[0], out[0]+1); + else + pln->apply((plan *) pln, in[0]+1, in[0], out[0]+1, out[0]); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-r2r.c b/examples/Integration_with_fftw/fftw/api/execute-r2r.c new file mode 100644 index 0000000..2f9beab --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-r2r.c @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +/* guru interface: requires care in alignment, etcetera. */ +void X(execute_r2r)(const X(plan) p, R *in, R *out) +{ + plan_rdft *pln = (plan_rdft *) p->pln; + pln->apply((plan *) pln, in, out); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-split-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/execute-split-dft-c2r.c new file mode 100644 index 0000000..f44e002 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-split-dft-c2r.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +/* guru interface: requires care in alignment, r - i, etcetera. */ +void X(execute_split_dft_c2r)(const X(plan) p, R *ri, R *ii, R *out) +{ + plan_rdft2 *pln = (plan_rdft2 *) p->pln; + problem_rdft2 *prb = (problem_rdft2 *) p->prb; + pln->apply((plan *) pln, out, out + (prb->r1 - prb->r0), ri, ii); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-split-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/execute-split-dft-r2c.c new file mode 100644 index 0000000..d8f0d62 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-split-dft-r2c.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +/* guru interface: requires care in alignment, r - i, etcetera. */ +void X(execute_split_dft_r2c)(const X(plan) p, R *in, R *ro, R *io) +{ + plan_rdft2 *pln = (plan_rdft2 *) p->pln; + problem_rdft2 *prb = (problem_rdft2 *) p->prb; + pln->apply((plan *) pln, in, in + (prb->r1 - prb->r0), ro, io); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute-split-dft.c b/examples/Integration_with_fftw/fftw/api/execute-split-dft.c new file mode 100644 index 0000000..819b9f4 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute-split-dft.c @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +/* guru interface: requires care in alignment, r - i, etcetera. */ +void X(execute_split_dft)(const X(plan) p, R *ri, R *ii, R *ro, R *io) +{ + plan_dft *pln = (plan_dft *) p->pln; + pln->apply((plan *) pln, ri, ii, ro, io); +} diff --git a/examples/Integration_with_fftw/fftw/api/execute.c b/examples/Integration_with_fftw/fftw/api/execute.c new file mode 100644 index 0000000..079b8aa --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/execute.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +void X(execute)(const X(plan) p) +{ + plan *pln = p->pln; + pln->adt->solve(pln, p->prb); +} diff --git a/examples/Integration_with_fftw/fftw/api/export-wisdom-to-file.c b/examples/Integration_with_fftw/fftw/api/export-wisdom-to-file.c new file mode 100644 index 0000000..39dcbaa --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/export-wisdom-to-file.c @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +void X(export_wisdom_to_file)(FILE *output_file) +{ + printer *p = X(mkprinter_file)(output_file); + planner *plnr = X(the_planner)(); + plnr->adt->exprt(plnr, p); + X(printer_destroy)(p); +} + +int X(export_wisdom_to_filename)(const char *filename) +{ + FILE *f = fopen(filename, "w"); + int ret; + if (!f) return 0; /* error opening file */ + X(export_wisdom_to_file)(f); + ret = !ferror(f); + if (fclose(f)) ret = 0; /* error closing file */ + return ret; +} diff --git a/examples/Integration_with_fftw/fftw/api/export-wisdom-to-string.c b/examples/Integration_with_fftw/fftw/api/export-wisdom-to-string.c new file mode 100644 index 0000000..f1fe7ab --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/export-wisdom-to-string.c @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +char *X(export_wisdom_to_string)(void) +{ + printer *p; + planner *plnr = X(the_planner)(); + size_t cnt; + char *s; + + p = X(mkprinter_cnt)(&cnt); + plnr->adt->exprt(plnr, p); + X(printer_destroy)(p); + + s = (char *) malloc(sizeof(char) * (cnt + 1)); + if (s) { + p = X(mkprinter_str)(s); + plnr->adt->exprt(plnr, p); + X(printer_destroy)(p); + } + + return s; +} diff --git a/examples/Integration_with_fftw/fftw/api/export-wisdom.c b/examples/Integration_with_fftw/fftw/api/export-wisdom.c new file mode 100644 index 0000000..baa2f35 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/export-wisdom.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +typedef struct { + printer super; + void (*write_char)(char c, void *); + void *data; +} P; + +static void putchr_generic(printer * p_, char c) +{ + P *p = (P *) p_; + (p->write_char)(c, p->data); +} + +void X(export_wisdom)(void (*write_char)(char c, void *), void *data) +{ + P *p = (P *) X(mkprinter)(sizeof(P), putchr_generic, 0); + planner *plnr = X(the_planner)(); + + p->write_char = write_char; + p->data = data; + plnr->adt->exprt(plnr, (printer *) p); + X(printer_destroy)((printer *) p); +} diff --git a/examples/Integration_with_fftw/fftw/api/f03api.sh b/examples/Integration_with_fftw/fftw/api/f03api.sh new file mode 100755 index 0000000..caaacaf --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/f03api.sh @@ -0,0 +1,42 @@ +#! /bin/sh + +# Script to generate Fortran 2003 interface declarations for FFTW from +# the fftw3.h header file. + +# This is designed so that the Fortran caller can do: +# use, intrinsic :: iso_c_binding +# implicit none +# include 'fftw3.f03' +# and then call the C FFTW functions directly, with type checking. + +echo "! Generated automatically. DO NOT EDIT!" +echo + +# C_FFTW_R2R_KIND is determined by configure and inserted by the Makefile +# echo " integer, parameter :: C_FFTW_R2R_KIND = @C_FFTW_R2R_KIND@" + +# Extract constants +perl -pe 's/([A-Z0-9_]+)=([+-]?[0-9]+)/\n integer\(C_INT\), parameter :: \1 = \2\n/g' < fftw3.h | grep 'integer(C_INT)' +perl -pe 's/#define +([A-Z0-9_]+) +\(([+-]?[0-9]+)U?\)/\n integer\(C_INT\), parameter :: \1 = \2\n/g' < fftw3.h | grep 'integer(C_INT)' +perl -pe 'if (/#define +([A-Z0-9_]+) +\(([0-9]+)U? *<< *([0-9]+)\)/) { print "\n integer\(C_INT\), parameter :: $1 = ",$2 << $3,"\n"; }' < fftw3.h | grep 'integer(C_INT)' + +# Extract function declarations +for p in $*; do + if test "$p" = "d"; then p=""; fi + + echo + cat <f77_write_char(&c, ad->data); +} + +typedef struct { + void (*f77_read_char)(int *, void *); + void *data; +} read_char_data; + +static int read_char(void *d) +{ + read_char_data *ed = (read_char_data *) d; + int c; + ed->f77_read_char(&c, ed->data); + return (c < 0 ? EOF : c); +} + +static X(r2r_kind) *ints2kinds(int rnk, const int *ik) +{ + if (!FINITE_RNK(rnk) || rnk == 0) + return 0; + else { + int i; + X(r2r_kind) *k; + + k = (X(r2r_kind) *) MALLOC(sizeof(X(r2r_kind)) * (unsigned)rnk, PROBLEMS); + /* reverse order for Fortran -> C */ + for (i = 0; i < rnk; ++i) + k[i] = (X(r2r_kind)) ik[rnk - 1 - i]; + return k; + } +} + +/*-----------------------------------------------------------------------*/ + +#define F77(a, A) F77x(x77(a), X77(A)) + +#ifndef WINDOWS_F77_MANGLING + +#if defined(F77_FUNC) +# define F77x(a, A) F77_FUNC(a, A) +# include "f77funcs.h" +#endif + +/* If identifiers with underscores are mangled differently than those + without underscores, then we include *both* mangling versions. The + reason is that the only Fortran compiler that does such differing + mangling is currently g77 (which adds an extra underscore to names + with underscores), whereas other compilers running on the same + machine are likely to use non-underscored mangling. (I'm sick + of users complaining that FFTW works with g77 but not with e.g. + pgf77 or ifc on the same machine.) Note that all FFTW identifiers + contain underscores, and configure picks g77 by default. */ +#if defined(F77_FUNC_) && !defined(F77_FUNC_EQUIV) +# undef F77x +# define F77x(a, A) F77_FUNC_(a, A) +# include "f77funcs.h" +#endif + +#else /* WINDOWS_F77_MANGLING */ + +/* Various mangling conventions common (?) under Windows. */ + +/* g77 */ +# define WINDOWS_F77_FUNC(a, A) a ## __ +# define F77x(a, A) WINDOWS_F77_FUNC(a, A) +# include "f77funcs.h" + +/* Intel, etc. */ +# undef WINDOWS_F77_FUNC +# define WINDOWS_F77_FUNC(a, A) a ## _ +# include "f77funcs.h" + +/* Digital/Compaq/HP Visual Fortran, Intel Fortran. stdcall attribute + is apparently required to adjust for calling conventions (callee + pops stack in stdcall). See also: + http://msdn.microsoft.com/library/en-us/vccore98/html/_core_mixed.2d.language_programming.3a_.overview.asp +*/ +# undef WINDOWS_F77_FUNC +# if defined(__GNUC__) +# define WINDOWS_F77_FUNC(a, A) __attribute__((stdcall)) A +# elif defined(_MSC_VER) || defined(_ICC) || defined(_STDCALL_SUPPORTED) +# define WINDOWS_F77_FUNC(a, A) __stdcall A +# else +# define WINDOWS_F77_FUNC(a, A) A /* oh well */ +# endif +# include "f77funcs.h" + +#endif /* WINDOWS_F77_MANGLING */ + +#endif /* F77_FUNC */ diff --git a/examples/Integration_with_fftw/fftw/api/f77funcs.h b/examples/Integration_with_fftw/fftw/api/f77funcs.h new file mode 100644 index 0000000..1e557dc --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/f77funcs.h @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* Functions in the FFTW Fortran API, mangled according to the + F77(...) macro. This file is designed to be #included by + f77api.c, possibly multiple times in order to support multiple + compiler manglings (via redefinition of F77). */ + +FFTW_VOIDFUNC F77(execute, EXECUTE)(X(plan) * const p) +{ + plan *pln = (*p)->pln; + pln->adt->solve(pln, (*p)->prb); +} + +FFTW_VOIDFUNC F77(destroy_plan, DESTROY_PLAN)(X(plan) *p) +{ + X(destroy_plan)(*p); +} + +FFTW_VOIDFUNC F77(cleanup, CLEANUP)(void) +{ + X(cleanup)(); +} + +FFTW_VOIDFUNC F77(forget_wisdom, FORGET_WISDOM)(void) +{ + X(forget_wisdom)(); +} + +FFTW_VOIDFUNC F77(export_wisdom, EXPORT_WISDOM)(void (*f77_write_char)(char *, void *), + void *data) +{ + write_char_data ad; + ad.f77_write_char = f77_write_char; + ad.data = data; + X(export_wisdom)(write_char, (void *) &ad); +} + +FFTW_VOIDFUNC F77(import_wisdom, IMPORT_WISDOM)(int *isuccess, + void (*f77_read_char)(int *, void *), + void *data) +{ + read_char_data ed; + ed.f77_read_char = f77_read_char; + ed.data = data; + *isuccess = X(import_wisdom)(read_char, (void *) &ed); +} + +FFTW_VOIDFUNC F77(import_system_wisdom, IMPORT_SYSTEM_WISDOM)(int *isuccess) +{ + *isuccess = X(import_system_wisdom)(); +} + +FFTW_VOIDFUNC F77(print_plan, PRINT_PLAN)(X(plan) * const p) +{ + X(print_plan)(*p); + fflush(stdout); +} + +FFTW_VOIDFUNC F77(flops,FLOPS)(X(plan) *p, double *add, double *mul, double *fma) +{ + X(flops)(*p, add, mul, fma); +} + +FFTW_VOIDFUNC F77(estimate_cost,ESTIMATE_COST)(double *cost, X(plan) * const p) +{ + *cost = X(estimate_cost)(*p); +} + +FFTW_VOIDFUNC F77(cost,COST)(double *cost, X(plan) * const p) +{ + *cost = X(cost)(*p); +} + +FFTW_VOIDFUNC F77(set_timelimit,SET_TIMELIMIT)(double *t) +{ + X(set_timelimit)(*t); +} + +/******************************** DFT ***********************************/ + +FFTW_VOIDFUNC F77(plan_dft, PLAN_DFT)(X(plan) *p, int *rank, const int *n, + C *in, C *out, int *sign, int *flags) +{ + int *nrev = reverse_n(*rank, n); + *p = X(plan_dft)(*rank, nrev, in, out, *sign, *flags); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_dft_1d, PLAN_DFT_1D)(X(plan) *p, int *n, C *in, C *out, + int *sign, int *flags) +{ + *p = X(plan_dft_1d)(*n, in, out, *sign, *flags); +} + +FFTW_VOIDFUNC F77(plan_dft_2d, PLAN_DFT_2D)(X(plan) *p, int *nx, int *ny, + C *in, C *out, int *sign, int *flags) +{ + *p = X(plan_dft_2d)(*ny, *nx, in, out, *sign, *flags); +} + +FFTW_VOIDFUNC F77(plan_dft_3d, PLAN_DFT_3D)(X(plan) *p, int *nx, int *ny, int *nz, + C *in, C *out, + int *sign, int *flags) +{ + *p = X(plan_dft_3d)(*nz, *ny, *nx, in, out, *sign, *flags); +} + +FFTW_VOIDFUNC F77(plan_many_dft, PLAN_MANY_DFT)(X(plan) *p, int *rank, const int *n, + int *howmany, + C *in, const int *inembed, + int *istride, int *idist, + C *out, const int *onembed, + int *ostride, int *odist, + int *sign, int *flags) +{ + int *nrev = reverse_n(*rank, n); + int *inembedrev = reverse_n(*rank, inembed); + int *onembedrev = reverse_n(*rank, onembed); + *p = X(plan_many_dft)(*rank, nrev, *howmany, + in, inembedrev, *istride, *idist, + out, onembedrev, *ostride, *odist, + *sign, *flags); + X(ifree0)(onembedrev); + X(ifree0)(inembedrev); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_guru_dft, PLAN_GURU_DFT)(X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + C *in, C *out, int *sign, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + *p = X(plan_guru_dft)(*rank, dims, *howmany_rank, howmany_dims, + in, out, *sign, *flags); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(plan_guru_split_dft, PLAN_GURU_SPLIT_DFT)(X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + R *ri, R *ii, R *ro, R *io, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + *p = X(plan_guru_split_dft)(*rank, dims, *howmany_rank, howmany_dims, + ri, ii, ro, io, *flags); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(execute_dft, EXECUTE_DFT)(X(plan) * const p, C *in, C *out) +{ + plan_dft *pln = (plan_dft *) (*p)->pln; + if ((*p)->sign == FFT_SIGN) + pln->apply((plan *) pln, in[0], in[0]+1, out[0], out[0]+1); + else + pln->apply((plan *) pln, in[0]+1, in[0], out[0]+1, out[0]); +} + +FFTW_VOIDFUNC F77(execute_split_dft, EXECUTE_SPLIT_DFT)(X(plan) * const p, + R *ri, R *ii, R *ro, R *io) +{ + plan_dft *pln = (plan_dft *) (*p)->pln; + pln->apply((plan *) pln, ri, ii, ro, io); +} + +/****************************** DFT r2c *********************************/ + +FFTW_VOIDFUNC F77(plan_dft_r2c, PLAN_DFT_R2C)(X(plan) *p, int *rank, const int *n, + R *in, C *out, int *flags) +{ + int *nrev = reverse_n(*rank, n); + *p = X(plan_dft_r2c)(*rank, nrev, in, out, *flags); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_dft_r2c_1d, PLAN_DFT_R2C_1D)(X(plan) *p, int *n, R *in, C *out, + int *flags) +{ + *p = X(plan_dft_r2c_1d)(*n, in, out, *flags); +} + +FFTW_VOIDFUNC F77(plan_dft_r2c_2d, PLAN_DFT_R2C_2D)(X(plan) *p, int *nx, int *ny, + R *in, C *out, int *flags) +{ + *p = X(plan_dft_r2c_2d)(*ny, *nx, in, out, *flags); +} + +FFTW_VOIDFUNC F77(plan_dft_r2c_3d, PLAN_DFT_R2C_3D)(X(plan) *p, + int *nx, int *ny, int *nz, + R *in, C *out, + int *flags) +{ + *p = X(plan_dft_r2c_3d)(*nz, *ny, *nx, in, out, *flags); +} + +FFTW_VOIDFUNC F77(plan_many_dft_r2c, PLAN_MANY_DFT_R2C)( + X(plan) *p, int *rank, const int *n, + int *howmany, + R *in, const int *inembed, int *istride, int *idist, + C *out, const int *onembed, int *ostride, int *odist, + int *flags) +{ + int *nrev = reverse_n(*rank, n); + int *inembedrev = reverse_n(*rank, inembed); + int *onembedrev = reverse_n(*rank, onembed); + *p = X(plan_many_dft_r2c)(*rank, nrev, *howmany, + in, inembedrev, *istride, *idist, + out, onembedrev, *ostride, *odist, + *flags); + X(ifree0)(onembedrev); + X(ifree0)(inembedrev); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_guru_dft_r2c, PLAN_GURU_DFT_R2C)( + X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + R *in, C *out, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + *p = X(plan_guru_dft_r2c)(*rank, dims, *howmany_rank, howmany_dims, + in, out, *flags); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(plan_guru_split_dft_r2c, PLAN_GURU_SPLIT_DFT_R2C)( + X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + R *in, R *ro, R *io, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + *p = X(plan_guru_split_dft_r2c)(*rank, dims, *howmany_rank, howmany_dims, + in, ro, io, *flags); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(execute_dft_r2c, EXECUTE_DFT_R2C)(X(plan) * const p, R *in, C *out) +{ + plan_rdft2 *pln = (plan_rdft2 *) (*p)->pln; + problem_rdft2 *prb = (problem_rdft2 *) (*p)->prb; + pln->apply((plan *) pln, in, in + (prb->r1 - prb->r0), out[0], out[0]+1); +} + +FFTW_VOIDFUNC F77(execute_split_dft_r2c, EXECUTE_SPLIT_DFT_R2C)(X(plan) * const p, + R *in, R *ro, R *io) +{ + plan_rdft2 *pln = (plan_rdft2 *) (*p)->pln; + problem_rdft2 *prb = (problem_rdft2 *) (*p)->prb; + pln->apply((plan *) pln, in, in + (prb->r1 - prb->r0), ro, io); +} + +/****************************** DFT c2r *********************************/ + +FFTW_VOIDFUNC F77(plan_dft_c2r, PLAN_DFT_C2R)(X(plan) *p, int *rank, const int *n, + C *in, R *out, int *flags) +{ + int *nrev = reverse_n(*rank, n); + *p = X(plan_dft_c2r)(*rank, nrev, in, out, *flags); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_dft_c2r_1d, PLAN_DFT_C2R_1D)(X(plan) *p, int *n, C *in, R *out, + int *flags) +{ + *p = X(plan_dft_c2r_1d)(*n, in, out, *flags); +} + +FFTW_VOIDFUNC F77(plan_dft_c2r_2d, PLAN_DFT_C2R_2D)(X(plan) *p, int *nx, int *ny, + C *in, R *out, int *flags) +{ + *p = X(plan_dft_c2r_2d)(*ny, *nx, in, out, *flags); +} + +FFTW_VOIDFUNC F77(plan_dft_c2r_3d, PLAN_DFT_C2R_3D)(X(plan) *p, + int *nx, int *ny, int *nz, + C *in, R *out, + int *flags) +{ + *p = X(plan_dft_c2r_3d)(*nz, *ny, *nx, in, out, *flags); +} + +FFTW_VOIDFUNC F77(plan_many_dft_c2r, PLAN_MANY_DFT_C2R)( + X(plan) *p, int *rank, const int *n, + int *howmany, + C *in, const int *inembed, int *istride, int *idist, + R *out, const int *onembed, int *ostride, int *odist, + int *flags) +{ + int *nrev = reverse_n(*rank, n); + int *inembedrev = reverse_n(*rank, inembed); + int *onembedrev = reverse_n(*rank, onembed); + *p = X(plan_many_dft_c2r)(*rank, nrev, *howmany, + in, inembedrev, *istride, *idist, + out, onembedrev, *ostride, *odist, + *flags); + X(ifree0)(onembedrev); + X(ifree0)(inembedrev); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_guru_dft_c2r, PLAN_GURU_DFT_C2R)( + X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + C *in, R *out, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + *p = X(plan_guru_dft_c2r)(*rank, dims, *howmany_rank, howmany_dims, + in, out, *flags); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(plan_guru_split_dft_c2r, PLAN_GURU_SPLIT_DFT_C2R)( + X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + R *ri, R *ii, R *out, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + *p = X(plan_guru_split_dft_c2r)(*rank, dims, *howmany_rank, howmany_dims, + ri, ii, out, *flags); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(execute_dft_c2r, EXECUTE_DFT_C2R)(X(plan) * const p, C *in, R *out) +{ + plan_rdft2 *pln = (plan_rdft2 *) (*p)->pln; + problem_rdft2 *prb = (problem_rdft2 *) (*p)->prb; + pln->apply((plan *) pln, out, out + (prb->r1 - prb->r0), in[0], in[0]+1); +} + +FFTW_VOIDFUNC F77(execute_split_dft_c2r, EXECUTE_SPLIT_DFT_C2R)(X(plan) * const p, + R *ri, R *ii, R *out) +{ + plan_rdft2 *pln = (plan_rdft2 *) (*p)->pln; + problem_rdft2 *prb = (problem_rdft2 *) (*p)->prb; + pln->apply((plan *) pln, out, out + (prb->r1 - prb->r0), ri, ii); +} + +/****************************** r2r *********************************/ + +FFTW_VOIDFUNC F77(plan_r2r, PLAN_R2R)(X(plan) *p, int *rank, const int *n, + R *in, R *out, + int *kind, int *flags) +{ + int *nrev = reverse_n(*rank, n); + X(r2r_kind) *k = ints2kinds(*rank, kind); + *p = X(plan_r2r)(*rank, nrev, in, out, k, *flags); + X(ifree0)(k); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_r2r_1d, PLAN_R2R_1D)(X(plan) *p, int *n, R *in, R *out, + int *kind, int *flags) +{ + *p = X(plan_r2r_1d)(*n, in, out, (X(r2r_kind)) *kind, *flags); +} + +FFTW_VOIDFUNC F77(plan_r2r_2d, PLAN_R2R_2D)(X(plan) *p, int *nx, int *ny, + R *in, R *out, + int *kindx, int *kindy, int *flags) +{ + *p = X(plan_r2r_2d)(*ny, *nx, in, out, + (X(r2r_kind)) *kindy, (X(r2r_kind)) *kindx, *flags); +} + +FFTW_VOIDFUNC F77(plan_r2r_3d, PLAN_R2R_3D)(X(plan) *p, + int *nx, int *ny, int *nz, + R *in, R *out, + int *kindx, int *kindy, int *kindz, + int *flags) +{ + *p = X(plan_r2r_3d)(*nz, *ny, *nx, in, out, + (X(r2r_kind)) *kindz, (X(r2r_kind)) *kindy, + (X(r2r_kind)) *kindx, *flags); +} + +FFTW_VOIDFUNC F77(plan_many_r2r, PLAN_MANY_R2R)( + X(plan) *p, int *rank, const int *n, + int *howmany, + R *in, const int *inembed, int *istride, int *idist, + R *out, const int *onembed, int *ostride, int *odist, + int *kind, int *flags) +{ + int *nrev = reverse_n(*rank, n); + int *inembedrev = reverse_n(*rank, inembed); + int *onembedrev = reverse_n(*rank, onembed); + X(r2r_kind) *k = ints2kinds(*rank, kind); + *p = X(plan_many_r2r)(*rank, nrev, *howmany, + in, inembedrev, *istride, *idist, + out, onembedrev, *ostride, *odist, + k, *flags); + X(ifree0)(k); + X(ifree0)(onembedrev); + X(ifree0)(inembedrev); + X(ifree0)(nrev); +} + +FFTW_VOIDFUNC F77(plan_guru_r2r, PLAN_GURU_R2R)( + X(plan) *p, int *rank, const int *n, + const int *is, const int *os, + int *howmany_rank, const int *h_n, + const int *h_is, const int *h_os, + R *in, R *out, int *kind, int *flags) +{ + X(iodim) *dims = make_dims(*rank, n, is, os); + X(iodim) *howmany_dims = make_dims(*howmany_rank, h_n, h_is, h_os); + X(r2r_kind) *k = ints2kinds(*rank, kind); + *p = X(plan_guru_r2r)(*rank, dims, *howmany_rank, howmany_dims, + in, out, k, *flags); + X(ifree0)(k); + X(ifree0)(howmany_dims); + X(ifree0)(dims); +} + +FFTW_VOIDFUNC F77(execute_r2r, EXECUTE_R2R)(X(plan) * const p, R *in, R *out) +{ + plan_rdft *pln = (plan_rdft *) (*p)->pln; + pln->apply((plan *) pln, in, out); +} diff --git a/examples/Integration_with_fftw/fftw/api/fftw3.f b/examples/Integration_with_fftw/fftw/api/fftw3.f new file mode 100644 index 0000000..72d1aaf --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/fftw3.f @@ -0,0 +1,72 @@ + INTEGER FFTW_R2HC + PARAMETER (FFTW_R2HC=0) + INTEGER FFTW_HC2R + PARAMETER (FFTW_HC2R=1) + INTEGER FFTW_DHT + PARAMETER (FFTW_DHT=2) + INTEGER FFTW_REDFT00 + PARAMETER (FFTW_REDFT00=3) + INTEGER FFTW_REDFT01 + PARAMETER (FFTW_REDFT01=4) + INTEGER FFTW_REDFT10 + PARAMETER (FFTW_REDFT10=5) + INTEGER FFTW_REDFT11 + PARAMETER (FFTW_REDFT11=6) + INTEGER FFTW_RODFT00 + PARAMETER (FFTW_RODFT00=7) + INTEGER FFTW_RODFT01 + PARAMETER (FFTW_RODFT01=8) + INTEGER FFTW_RODFT10 + PARAMETER (FFTW_RODFT10=9) + INTEGER FFTW_RODFT11 + PARAMETER (FFTW_RODFT11=10) + INTEGER FFTW_FORWARD + PARAMETER (FFTW_FORWARD=-1) + INTEGER FFTW_BACKWARD + PARAMETER (FFTW_BACKWARD=+1) + INTEGER FFTW_MEASURE + PARAMETER (FFTW_MEASURE=0) + INTEGER FFTW_DESTROY_INPUT + PARAMETER (FFTW_DESTROY_INPUT=1) + INTEGER FFTW_UNALIGNED + PARAMETER (FFTW_UNALIGNED=2) + INTEGER FFTW_CONSERVE_MEMORY + PARAMETER (FFTW_CONSERVE_MEMORY=4) + INTEGER FFTW_EXHAUSTIVE + PARAMETER (FFTW_EXHAUSTIVE=8) + INTEGER FFTW_PRESERVE_INPUT + PARAMETER (FFTW_PRESERVE_INPUT=16) + INTEGER FFTW_PATIENT + PARAMETER (FFTW_PATIENT=32) + INTEGER FFTW_ESTIMATE + PARAMETER (FFTW_ESTIMATE=64) + INTEGER FFTW_WISDOM_ONLY + PARAMETER (FFTW_WISDOM_ONLY=2097152) + INTEGER FFTW_ESTIMATE_PATIENT + PARAMETER (FFTW_ESTIMATE_PATIENT=128) + INTEGER FFTW_BELIEVE_PCOST + PARAMETER (FFTW_BELIEVE_PCOST=256) + INTEGER FFTW_NO_DFT_R2HC + PARAMETER (FFTW_NO_DFT_R2HC=512) + INTEGER FFTW_NO_NONTHREADED + PARAMETER (FFTW_NO_NONTHREADED=1024) + INTEGER FFTW_NO_BUFFERING + PARAMETER (FFTW_NO_BUFFERING=2048) + INTEGER FFTW_NO_INDIRECT_OP + PARAMETER (FFTW_NO_INDIRECT_OP=4096) + INTEGER FFTW_ALLOW_LARGE_GENERIC + PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192) + INTEGER FFTW_NO_RANK_SPLITS + PARAMETER (FFTW_NO_RANK_SPLITS=16384) + INTEGER FFTW_NO_VRANK_SPLITS + PARAMETER (FFTW_NO_VRANK_SPLITS=32768) + INTEGER FFTW_NO_VRECURSE + PARAMETER (FFTW_NO_VRECURSE=65536) + INTEGER FFTW_NO_SIMD + PARAMETER (FFTW_NO_SIMD=131072) + INTEGER FFTW_NO_SLOW + PARAMETER (FFTW_NO_SLOW=262144) + INTEGER FFTW_NO_FIXED_RADIX_LARGE_N + PARAMETER (FFTW_NO_FIXED_RADIX_LARGE_N=524288) + INTEGER FFTW_ALLOW_PRUNING + PARAMETER (FFTW_ALLOW_PRUNING=1048576) diff --git a/examples/Integration_with_fftw/fftw/api/fftw3.f03 b/examples/Integration_with_fftw/fftw/api/fftw3.f03 new file mode 100644 index 0000000..85ba1b6 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/fftw3.f03 @@ -0,0 +1,1254 @@ +! Generated automatically. DO NOT EDIT! + + integer, parameter :: C_FFTW_R2R_KIND = C_INT32_T + + integer(C_INT), parameter :: FFTW_R2HC = 0 + integer(C_INT), parameter :: FFTW_HC2R = 1 + integer(C_INT), parameter :: FFTW_DHT = 2 + integer(C_INT), parameter :: FFTW_REDFT00 = 3 + integer(C_INT), parameter :: FFTW_REDFT01 = 4 + integer(C_INT), parameter :: FFTW_REDFT10 = 5 + integer(C_INT), parameter :: FFTW_REDFT11 = 6 + integer(C_INT), parameter :: FFTW_RODFT00 = 7 + integer(C_INT), parameter :: FFTW_RODFT01 = 8 + integer(C_INT), parameter :: FFTW_RODFT10 = 9 + integer(C_INT), parameter :: FFTW_RODFT11 = 10 + integer(C_INT), parameter :: FFTW_FORWARD = -1 + integer(C_INT), parameter :: FFTW_BACKWARD = +1 + integer(C_INT), parameter :: FFTW_MEASURE = 0 + integer(C_INT), parameter :: FFTW_DESTROY_INPUT = 1 + integer(C_INT), parameter :: FFTW_UNALIGNED = 2 + integer(C_INT), parameter :: FFTW_CONSERVE_MEMORY = 4 + integer(C_INT), parameter :: FFTW_EXHAUSTIVE = 8 + integer(C_INT), parameter :: FFTW_PRESERVE_INPUT = 16 + integer(C_INT), parameter :: FFTW_PATIENT = 32 + integer(C_INT), parameter :: FFTW_ESTIMATE = 64 + integer(C_INT), parameter :: FFTW_WISDOM_ONLY = 2097152 + integer(C_INT), parameter :: FFTW_ESTIMATE_PATIENT = 128 + integer(C_INT), parameter :: FFTW_BELIEVE_PCOST = 256 + integer(C_INT), parameter :: FFTW_NO_DFT_R2HC = 512 + integer(C_INT), parameter :: FFTW_NO_NONTHREADED = 1024 + integer(C_INT), parameter :: FFTW_NO_BUFFERING = 2048 + integer(C_INT), parameter :: FFTW_NO_INDIRECT_OP = 4096 + integer(C_INT), parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192 + integer(C_INT), parameter :: FFTW_NO_RANK_SPLITS = 16384 + integer(C_INT), parameter :: FFTW_NO_VRANK_SPLITS = 32768 + integer(C_INT), parameter :: FFTW_NO_VRECURSE = 65536 + integer(C_INT), parameter :: FFTW_NO_SIMD = 131072 + integer(C_INT), parameter :: FFTW_NO_SLOW = 262144 + integer(C_INT), parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288 + integer(C_INT), parameter :: FFTW_ALLOW_PRUNING = 1048576 + + type, bind(C) :: fftw_iodim + integer(C_INT) n, is, os + end type fftw_iodim + type, bind(C) :: fftw_iodim64 + integer(C_INTPTR_T) n, is, os + end type fftw_iodim64 + + interface + type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftw_plan_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft + + type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d') + import + integer(C_INT), value :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft_1d + + type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftw_plan_dft_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft_2d + + type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftw_plan_dft_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft_3d + + type(C_PTR) function fftw_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) & + bind(C, name='fftw_plan_many_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_many_dft + + type(C_PTR) function fftw_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftw_plan_guru_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_guru_dft + + type(C_PTR) function fftw_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftw_plan_guru_split_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru_split_dft + + type(C_PTR) function fftw_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftw_plan_guru64_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_guru64_dft + + type(C_PTR) function fftw_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftw_plan_guru64_split_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru64_split_dft + + subroutine fftw_execute_dft(p,in,out) bind(C, name='fftw_execute_dft') + import + type(C_PTR), value :: p + complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftw_execute_dft + + subroutine fftw_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftw_execute_split_dft') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: ri + real(C_DOUBLE), dimension(*), intent(inout) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + end subroutine fftw_execute_split_dft + + type(C_PTR) function fftw_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftw_plan_many_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_DOUBLE), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftw_plan_many_dft_r2c + + type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c + + type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_r2c_1d') + import + integer(C_INT), value :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c_1d + + type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_r2c_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c_2d + + type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_r2c_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c_3d + + type(C_PTR) function fftw_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftw_plan_many_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftw_plan_many_dft_c2r + + type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r + + type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_c2r_1d') + import + integer(C_INT), value :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r_1d + + type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_c2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r_2d + + type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_c2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r_3d + + type(C_PTR) function fftw_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru_dft_r2c + + type(C_PTR) function fftw_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru_dft_c2r + + type(C_PTR) function fftw_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftw_plan_guru_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru_split_dft_r2c + + type(C_PTR) function fftw_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftw_plan_guru_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru_split_dft_c2r + + type(C_PTR) function fftw_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru64_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru64_dft_r2c + + type(C_PTR) function fftw_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru64_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru64_dft_c2r + + type(C_PTR) function fftw_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftw_plan_guru64_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru64_split_dft_r2c + + type(C_PTR) function fftw_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftw_plan_guru64_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru64_split_dft_c2r + + subroutine fftw_execute_dft_r2c(p,in,out) bind(C, name='fftw_execute_dft_r2c') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftw_execute_dft_r2c + + subroutine fftw_execute_dft_c2r(p,in,out) bind(C, name='fftw_execute_dft_c2r') + import + type(C_PTR), value :: p + complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftw_execute_dft_c2r + + subroutine fftw_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftw_execute_split_dft_r2c') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: in + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + end subroutine fftw_execute_split_dft_r2c + + subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftw_execute_split_dft_c2r') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: ri + real(C_DOUBLE), dimension(*), intent(inout) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftw_execute_split_dft_c2r + + type(C_PTR) function fftw_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) & + bind(C, name='fftw_plan_many_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_DOUBLE), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_many_r2r + + type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftw_plan_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_r2r + + type(C_PTR) function fftw_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftw_plan_r2r_1d') + import + integer(C_INT), value :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind + integer(C_INT), value :: flags + end function fftw_plan_r2r_1d + + type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftw_plan_r2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_INT), value :: flags + end function fftw_plan_r2r_2d + + type(C_PTR) function fftw_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftw_plan_r2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_FFTW_R2R_KIND), value :: kind2 + integer(C_INT), value :: flags + end function fftw_plan_r2r_3d + + type(C_PTR) function fftw_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftw_plan_guru_r2r') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_guru_r2r + + type(C_PTR) function fftw_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftw_plan_guru64_r2r') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_guru64_r2r + + subroutine fftw_execute_r2r(p,in,out) bind(C, name='fftw_execute_r2r') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftw_execute_r2r + + subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan') + import + type(C_PTR), value :: p + end subroutine fftw_destroy_plan + + subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom') + import + end subroutine fftw_forget_wisdom + + subroutine fftw_cleanup() bind(C, name='fftw_cleanup') + import + end subroutine fftw_cleanup + + subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit') + import + real(C_DOUBLE), value :: t + end subroutine fftw_set_timelimit + + subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads') + import + integer(C_INT), value :: nthreads + end subroutine fftw_plan_with_nthreads + + integer(C_INT) function fftw_init_threads() bind(C, name='fftw_init_threads') + import + end function fftw_init_threads + + subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads') + import + end subroutine fftw_cleanup_threads + + subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe') + import + end subroutine fftw_make_planner_thread_safe + + integer(C_INT) function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftw_export_wisdom_to_filename + + subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file') + import + type(C_PTR), value :: output_file + end subroutine fftw_export_wisdom_to_file + + type(C_PTR) function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string') + import + end function fftw_export_wisdom_to_string + + subroutine fftw_export_wisdom(write_char,data) bind(C, name='fftw_export_wisdom') + import + type(C_FUNPTR), value :: write_char + type(C_PTR), value :: data + end subroutine fftw_export_wisdom + + integer(C_INT) function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom') + import + end function fftw_import_system_wisdom + + integer(C_INT) function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftw_import_wisdom_from_filename + + integer(C_INT) function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file') + import + type(C_PTR), value :: input_file + end function fftw_import_wisdom_from_file + + integer(C_INT) function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string') + import + character(C_CHAR), dimension(*), intent(in) :: input_string + end function fftw_import_wisdom_from_string + + integer(C_INT) function fftw_import_wisdom(read_char,data) bind(C, name='fftw_import_wisdom') + import + type(C_FUNPTR), value :: read_char + type(C_PTR), value :: data + end function fftw_import_wisdom + + subroutine fftw_fprint_plan(p,output_file) bind(C, name='fftw_fprint_plan') + import + type(C_PTR), value :: p + type(C_PTR), value :: output_file + end subroutine fftw_fprint_plan + + subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan') + import + type(C_PTR), value :: p + end subroutine fftw_print_plan + + type(C_PTR) function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan') + import + type(C_PTR), value :: p + end function fftw_sprint_plan + + type(C_PTR) function fftw_malloc(n) bind(C, name='fftw_malloc') + import + integer(C_SIZE_T), value :: n + end function fftw_malloc + + type(C_PTR) function fftw_alloc_real(n) bind(C, name='fftw_alloc_real') + import + integer(C_SIZE_T), value :: n + end function fftw_alloc_real + + type(C_PTR) function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex') + import + integer(C_SIZE_T), value :: n + end function fftw_alloc_complex + + subroutine fftw_free(p) bind(C, name='fftw_free') + import + type(C_PTR), value :: p + end subroutine fftw_free + + subroutine fftw_flops(p,add,mul,fmas) bind(C, name='fftw_flops') + import + type(C_PTR), value :: p + real(C_DOUBLE), intent(out) :: add + real(C_DOUBLE), intent(out) :: mul + real(C_DOUBLE), intent(out) :: fmas + end subroutine fftw_flops + + real(C_DOUBLE) function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost') + import + type(C_PTR), value :: p + end function fftw_estimate_cost + + real(C_DOUBLE) function fftw_cost(p) bind(C, name='fftw_cost') + import + type(C_PTR), value :: p + end function fftw_cost + + integer(C_INT) function fftw_alignment_of(p) bind(C, name='fftw_alignment_of') + import + real(C_DOUBLE), dimension(*), intent(out) :: p + end function fftw_alignment_of + + end interface + + type, bind(C) :: fftwf_iodim + integer(C_INT) n, is, os + end type fftwf_iodim + type, bind(C) :: fftwf_iodim64 + integer(C_INTPTR_T) n, is, os + end type fftwf_iodim64 + + interface + type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwf_plan_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft + + type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwf_plan_dft_1d') + import + integer(C_INT), value :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft_1d + + type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwf_plan_dft_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft_2d + + type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwf_plan_dft_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft_3d + + type(C_PTR) function fftwf_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) & + bind(C, name='fftwf_plan_many_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_many_dft + + type(C_PTR) function fftwf_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwf_plan_guru_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_guru_dft + + type(C_PTR) function fftwf_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwf_plan_guru_split_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru_split_dft + + type(C_PTR) function fftwf_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwf_plan_guru64_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_guru64_dft + + type(C_PTR) function fftwf_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwf_plan_guru64_split_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru64_split_dft + + subroutine fftwf_execute_dft(p,in,out) bind(C, name='fftwf_execute_dft') + import + type(C_PTR), value :: p + complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftwf_execute_dft + + subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwf_execute_split_dft') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: ri + real(C_FLOAT), dimension(*), intent(inout) :: ii + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + end subroutine fftwf_execute_split_dft + + type(C_PTR) function fftwf_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwf_plan_many_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_FLOAT), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwf_plan_many_dft_r2c + + type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c + + type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_1d') + import + integer(C_INT), value :: n + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c_1d + + type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c_2d + + type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c_3d + + type(C_PTR) function fftwf_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwf_plan_many_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwf_plan_many_dft_c2r + + type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r + + type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_1d') + import + integer(C_INT), value :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r_1d + + type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r_2d + + type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r_3d + + type(C_PTR) function fftwf_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru_dft_r2c + + type(C_PTR) function fftwf_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru_dft_c2r + + type(C_PTR) function fftwf_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwf_plan_guru_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru_split_dft_r2c + + type(C_PTR) function fftwf_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwf_plan_guru_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru_split_dft_c2r + + type(C_PTR) function fftwf_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru64_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru64_dft_r2c + + type(C_PTR) function fftwf_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru64_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru64_dft_c2r + + type(C_PTR) function fftwf_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwf_plan_guru64_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru64_split_dft_r2c + + type(C_PTR) function fftwf_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwf_plan_guru64_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru64_split_dft_c2r + + subroutine fftwf_execute_dft_r2c(p,in,out) bind(C, name='fftwf_execute_dft_r2c') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftwf_execute_dft_r2c + + subroutine fftwf_execute_dft_c2r(p,in,out) bind(C, name='fftwf_execute_dft_c2r') + import + type(C_PTR), value :: p + complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + end subroutine fftwf_execute_dft_c2r + + subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwf_execute_split_dft_r2c') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: in + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + end subroutine fftwf_execute_split_dft_r2c + + subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwf_execute_split_dft_c2r') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: ri + real(C_FLOAT), dimension(*), intent(inout) :: ii + real(C_FLOAT), dimension(*), intent(out) :: out + end subroutine fftwf_execute_split_dft_c2r + + type(C_PTR) function fftwf_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) & + bind(C, name='fftwf_plan_many_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_FLOAT), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_many_r2r + + type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_r2r + + type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r_1d') + import + integer(C_INT), value :: n + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind + integer(C_INT), value :: flags + end function fftwf_plan_r2r_1d + + type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwf_plan_r2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_INT), value :: flags + end function fftwf_plan_r2r_2d + + type(C_PTR) function fftwf_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwf_plan_r2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_FFTW_R2R_KIND), value :: kind2 + integer(C_INT), value :: flags + end function fftwf_plan_r2r_3d + + type(C_PTR) function fftwf_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwf_plan_guru_r2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_guru_r2r + + type(C_PTR) function fftwf_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwf_plan_guru64_r2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_guru64_r2r + + subroutine fftwf_execute_r2r(p,in,out) bind(C, name='fftwf_execute_r2r') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + end subroutine fftwf_execute_r2r + + subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan') + import + type(C_PTR), value :: p + end subroutine fftwf_destroy_plan + + subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom') + import + end subroutine fftwf_forget_wisdom + + subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup') + import + end subroutine fftwf_cleanup + + subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit') + import + real(C_DOUBLE), value :: t + end subroutine fftwf_set_timelimit + + subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads') + import + integer(C_INT), value :: nthreads + end subroutine fftwf_plan_with_nthreads + + integer(C_INT) function fftwf_init_threads() bind(C, name='fftwf_init_threads') + import + end function fftwf_init_threads + + subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads') + import + end subroutine fftwf_cleanup_threads + + subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe') + import + end subroutine fftwf_make_planner_thread_safe + + integer(C_INT) function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwf_export_wisdom_to_filename + + subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file') + import + type(C_PTR), value :: output_file + end subroutine fftwf_export_wisdom_to_file + + type(C_PTR) function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string') + import + end function fftwf_export_wisdom_to_string + + subroutine fftwf_export_wisdom(write_char,data) bind(C, name='fftwf_export_wisdom') + import + type(C_FUNPTR), value :: write_char + type(C_PTR), value :: data + end subroutine fftwf_export_wisdom + + integer(C_INT) function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom') + import + end function fftwf_import_system_wisdom + + integer(C_INT) function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwf_import_wisdom_from_filename + + integer(C_INT) function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file') + import + type(C_PTR), value :: input_file + end function fftwf_import_wisdom_from_file + + integer(C_INT) function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string') + import + character(C_CHAR), dimension(*), intent(in) :: input_string + end function fftwf_import_wisdom_from_string + + integer(C_INT) function fftwf_import_wisdom(read_char,data) bind(C, name='fftwf_import_wisdom') + import + type(C_FUNPTR), value :: read_char + type(C_PTR), value :: data + end function fftwf_import_wisdom + + subroutine fftwf_fprint_plan(p,output_file) bind(C, name='fftwf_fprint_plan') + import + type(C_PTR), value :: p + type(C_PTR), value :: output_file + end subroutine fftwf_fprint_plan + + subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan') + import + type(C_PTR), value :: p + end subroutine fftwf_print_plan + + type(C_PTR) function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan') + import + type(C_PTR), value :: p + end function fftwf_sprint_plan + + type(C_PTR) function fftwf_malloc(n) bind(C, name='fftwf_malloc') + import + integer(C_SIZE_T), value :: n + end function fftwf_malloc + + type(C_PTR) function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real') + import + integer(C_SIZE_T), value :: n + end function fftwf_alloc_real + + type(C_PTR) function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex') + import + integer(C_SIZE_T), value :: n + end function fftwf_alloc_complex + + subroutine fftwf_free(p) bind(C, name='fftwf_free') + import + type(C_PTR), value :: p + end subroutine fftwf_free + + subroutine fftwf_flops(p,add,mul,fmas) bind(C, name='fftwf_flops') + import + type(C_PTR), value :: p + real(C_DOUBLE), intent(out) :: add + real(C_DOUBLE), intent(out) :: mul + real(C_DOUBLE), intent(out) :: fmas + end subroutine fftwf_flops + + real(C_DOUBLE) function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost') + import + type(C_PTR), value :: p + end function fftwf_estimate_cost + + real(C_DOUBLE) function fftwf_cost(p) bind(C, name='fftwf_cost') + import + type(C_PTR), value :: p + end function fftwf_cost + + integer(C_INT) function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of') + import + real(C_FLOAT), dimension(*), intent(out) :: p + end function fftwf_alignment_of + + end interface diff --git a/examples/Integration_with_fftw/fftw/api/fftw3.f03.in b/examples/Integration_with_fftw/fftw/api/fftw3.f03.in new file mode 100644 index 0000000..c18e3c9 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/fftw3.f03.in @@ -0,0 +1,1252 @@ +! Generated automatically. DO NOT EDIT! + + integer(C_INT), parameter :: FFTW_R2HC = 0 + integer(C_INT), parameter :: FFTW_HC2R = 1 + integer(C_INT), parameter :: FFTW_DHT = 2 + integer(C_INT), parameter :: FFTW_REDFT00 = 3 + integer(C_INT), parameter :: FFTW_REDFT01 = 4 + integer(C_INT), parameter :: FFTW_REDFT10 = 5 + integer(C_INT), parameter :: FFTW_REDFT11 = 6 + integer(C_INT), parameter :: FFTW_RODFT00 = 7 + integer(C_INT), parameter :: FFTW_RODFT01 = 8 + integer(C_INT), parameter :: FFTW_RODFT10 = 9 + integer(C_INT), parameter :: FFTW_RODFT11 = 10 + integer(C_INT), parameter :: FFTW_FORWARD = -1 + integer(C_INT), parameter :: FFTW_BACKWARD = +1 + integer(C_INT), parameter :: FFTW_MEASURE = 0 + integer(C_INT), parameter :: FFTW_DESTROY_INPUT = 1 + integer(C_INT), parameter :: FFTW_UNALIGNED = 2 + integer(C_INT), parameter :: FFTW_CONSERVE_MEMORY = 4 + integer(C_INT), parameter :: FFTW_EXHAUSTIVE = 8 + integer(C_INT), parameter :: FFTW_PRESERVE_INPUT = 16 + integer(C_INT), parameter :: FFTW_PATIENT = 32 + integer(C_INT), parameter :: FFTW_ESTIMATE = 64 + integer(C_INT), parameter :: FFTW_WISDOM_ONLY = 2097152 + integer(C_INT), parameter :: FFTW_ESTIMATE_PATIENT = 128 + integer(C_INT), parameter :: FFTW_BELIEVE_PCOST = 256 + integer(C_INT), parameter :: FFTW_NO_DFT_R2HC = 512 + integer(C_INT), parameter :: FFTW_NO_NONTHREADED = 1024 + integer(C_INT), parameter :: FFTW_NO_BUFFERING = 2048 + integer(C_INT), parameter :: FFTW_NO_INDIRECT_OP = 4096 + integer(C_INT), parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192 + integer(C_INT), parameter :: FFTW_NO_RANK_SPLITS = 16384 + integer(C_INT), parameter :: FFTW_NO_VRANK_SPLITS = 32768 + integer(C_INT), parameter :: FFTW_NO_VRECURSE = 65536 + integer(C_INT), parameter :: FFTW_NO_SIMD = 131072 + integer(C_INT), parameter :: FFTW_NO_SLOW = 262144 + integer(C_INT), parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288 + integer(C_INT), parameter :: FFTW_ALLOW_PRUNING = 1048576 + + type, bind(C) :: fftw_iodim + integer(C_INT) n, is, os + end type fftw_iodim + type, bind(C) :: fftw_iodim64 + integer(C_INTPTR_T) n, is, os + end type fftw_iodim64 + + interface + type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftw_plan_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft + + type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d') + import + integer(C_INT), value :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft_1d + + type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftw_plan_dft_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft_2d + + type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftw_plan_dft_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_dft_3d + + type(C_PTR) function fftw_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) & + bind(C, name='fftw_plan_many_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_many_dft + + type(C_PTR) function fftw_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftw_plan_guru_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_guru_dft + + type(C_PTR) function fftw_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftw_plan_guru_split_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru_split_dft + + type(C_PTR) function fftw_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftw_plan_guru64_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftw_plan_guru64_dft + + type(C_PTR) function fftw_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftw_plan_guru64_split_dft') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru64_split_dft + + subroutine fftw_execute_dft(p,in,out) bind(C, name='fftw_execute_dft') + import + type(C_PTR), value :: p + complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftw_execute_dft + + subroutine fftw_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftw_execute_split_dft') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: ri + real(C_DOUBLE), dimension(*), intent(inout) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + end subroutine fftw_execute_split_dft + + type(C_PTR) function fftw_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftw_plan_many_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_DOUBLE), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftw_plan_many_dft_r2c + + type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c + + type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_r2c_1d') + import + integer(C_INT), value :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c_1d + + type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_r2c_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c_2d + + type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_r2c_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_r2c_3d + + type(C_PTR) function fftw_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftw_plan_many_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftw_plan_many_dft_c2r + + type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r + + type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_c2r_1d') + import + integer(C_INT), value :: n + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r_1d + + type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_c2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r_2d + + type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_c2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_dft_c2r_3d + + type(C_PTR) function fftw_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru_dft_r2c + + type(C_PTR) function fftw_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru_dft_c2r + + type(C_PTR) function fftw_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftw_plan_guru_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru_split_dft_r2c + + type(C_PTR) function fftw_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftw_plan_guru_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru_split_dft_c2r + + type(C_PTR) function fftw_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru64_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru64_dft_r2c + + type(C_PTR) function fftw_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftw_plan_guru64_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru64_dft_c2r + + type(C_PTR) function fftw_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftw_plan_guru64_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftw_plan_guru64_split_dft_r2c + + type(C_PTR) function fftw_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftw_plan_guru64_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: ri + real(C_DOUBLE), dimension(*), intent(out) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftw_plan_guru64_split_dft_c2r + + subroutine fftw_execute_dft_r2c(p,in,out) bind(C, name='fftw_execute_dft_r2c') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: in + complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftw_execute_dft_r2c + + subroutine fftw_execute_dft_c2r(p,in,out) bind(C, name='fftw_execute_dft_c2r') + import + type(C_PTR), value :: p + complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftw_execute_dft_c2r + + subroutine fftw_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftw_execute_split_dft_r2c') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: in + real(C_DOUBLE), dimension(*), intent(out) :: ro + real(C_DOUBLE), dimension(*), intent(out) :: io + end subroutine fftw_execute_split_dft_r2c + + subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftw_execute_split_dft_c2r') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: ri + real(C_DOUBLE), dimension(*), intent(inout) :: ii + real(C_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftw_execute_split_dft_c2r + + type(C_PTR) function fftw_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) & + bind(C, name='fftw_plan_many_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_DOUBLE), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_many_r2r + + type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftw_plan_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_r2r + + type(C_PTR) function fftw_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftw_plan_r2r_1d') + import + integer(C_INT), value :: n + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind + integer(C_INT), value :: flags + end function fftw_plan_r2r_1d + + type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftw_plan_r2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_INT), value :: flags + end function fftw_plan_r2r_2d + + type(C_PTR) function fftw_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftw_plan_r2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_FFTW_R2R_KIND), value :: kind2 + integer(C_INT), value :: flags + end function fftw_plan_r2r_3d + + type(C_PTR) function fftw_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftw_plan_guru_r2r') + import + integer(C_INT), value :: rank + type(fftw_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_guru_r2r + + type(C_PTR) function fftw_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftw_plan_guru64_r2r') + import + integer(C_INT), value :: rank + type(fftw_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_DOUBLE), dimension(*), intent(out) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftw_plan_guru64_r2r + + subroutine fftw_execute_r2r(p,in,out) bind(C, name='fftw_execute_r2r') + import + type(C_PTR), value :: p + real(C_DOUBLE), dimension(*), intent(inout) :: in + real(C_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftw_execute_r2r + + subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan') + import + type(C_PTR), value :: p + end subroutine fftw_destroy_plan + + subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom') + import + end subroutine fftw_forget_wisdom + + subroutine fftw_cleanup() bind(C, name='fftw_cleanup') + import + end subroutine fftw_cleanup + + subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit') + import + real(C_DOUBLE), value :: t + end subroutine fftw_set_timelimit + + subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads') + import + integer(C_INT), value :: nthreads + end subroutine fftw_plan_with_nthreads + + integer(C_INT) function fftw_init_threads() bind(C, name='fftw_init_threads') + import + end function fftw_init_threads + + subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads') + import + end subroutine fftw_cleanup_threads + + subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe') + import + end subroutine fftw_make_planner_thread_safe + + integer(C_INT) function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftw_export_wisdom_to_filename + + subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file') + import + type(C_PTR), value :: output_file + end subroutine fftw_export_wisdom_to_file + + type(C_PTR) function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string') + import + end function fftw_export_wisdom_to_string + + subroutine fftw_export_wisdom(write_char,data) bind(C, name='fftw_export_wisdom') + import + type(C_FUNPTR), value :: write_char + type(C_PTR), value :: data + end subroutine fftw_export_wisdom + + integer(C_INT) function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom') + import + end function fftw_import_system_wisdom + + integer(C_INT) function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftw_import_wisdom_from_filename + + integer(C_INT) function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file') + import + type(C_PTR), value :: input_file + end function fftw_import_wisdom_from_file + + integer(C_INT) function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string') + import + character(C_CHAR), dimension(*), intent(in) :: input_string + end function fftw_import_wisdom_from_string + + integer(C_INT) function fftw_import_wisdom(read_char,data) bind(C, name='fftw_import_wisdom') + import + type(C_FUNPTR), value :: read_char + type(C_PTR), value :: data + end function fftw_import_wisdom + + subroutine fftw_fprint_plan(p,output_file) bind(C, name='fftw_fprint_plan') + import + type(C_PTR), value :: p + type(C_PTR), value :: output_file + end subroutine fftw_fprint_plan + + subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan') + import + type(C_PTR), value :: p + end subroutine fftw_print_plan + + type(C_PTR) function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan') + import + type(C_PTR), value :: p + end function fftw_sprint_plan + + type(C_PTR) function fftw_malloc(n) bind(C, name='fftw_malloc') + import + integer(C_SIZE_T), value :: n + end function fftw_malloc + + type(C_PTR) function fftw_alloc_real(n) bind(C, name='fftw_alloc_real') + import + integer(C_SIZE_T), value :: n + end function fftw_alloc_real + + type(C_PTR) function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex') + import + integer(C_SIZE_T), value :: n + end function fftw_alloc_complex + + subroutine fftw_free(p) bind(C, name='fftw_free') + import + type(C_PTR), value :: p + end subroutine fftw_free + + subroutine fftw_flops(p,add,mul,fmas) bind(C, name='fftw_flops') + import + type(C_PTR), value :: p + real(C_DOUBLE), intent(out) :: add + real(C_DOUBLE), intent(out) :: mul + real(C_DOUBLE), intent(out) :: fmas + end subroutine fftw_flops + + real(C_DOUBLE) function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost') + import + type(C_PTR), value :: p + end function fftw_estimate_cost + + real(C_DOUBLE) function fftw_cost(p) bind(C, name='fftw_cost') + import + type(C_PTR), value :: p + end function fftw_cost + + integer(C_INT) function fftw_alignment_of(p) bind(C, name='fftw_alignment_of') + import + real(C_DOUBLE), dimension(*), intent(out) :: p + end function fftw_alignment_of + + end interface + + type, bind(C) :: fftwf_iodim + integer(C_INT) n, is, os + end type fftwf_iodim + type, bind(C) :: fftwf_iodim64 + integer(C_INTPTR_T) n, is, os + end type fftwf_iodim64 + + interface + type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwf_plan_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft + + type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwf_plan_dft_1d') + import + integer(C_INT), value :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft_1d + + type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwf_plan_dft_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft_2d + + type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwf_plan_dft_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_dft_3d + + type(C_PTR) function fftwf_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) & + bind(C, name='fftwf_plan_many_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_many_dft + + type(C_PTR) function fftwf_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwf_plan_guru_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_guru_dft + + type(C_PTR) function fftwf_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwf_plan_guru_split_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru_split_dft + + type(C_PTR) function fftwf_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwf_plan_guru64_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwf_plan_guru64_dft + + type(C_PTR) function fftwf_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwf_plan_guru64_split_dft') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru64_split_dft + + subroutine fftwf_execute_dft(p,in,out) bind(C, name='fftwf_execute_dft') + import + type(C_PTR), value :: p + complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftwf_execute_dft + + subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwf_execute_split_dft') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: ri + real(C_FLOAT), dimension(*), intent(inout) :: ii + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + end subroutine fftwf_execute_split_dft + + type(C_PTR) function fftwf_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwf_plan_many_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_FLOAT), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwf_plan_many_dft_r2c + + type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c + + type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_1d') + import + integer(C_INT), value :: n + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c_1d + + type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c_2d + + type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_r2c_3d + + type(C_PTR) function fftwf_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwf_plan_many_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwf_plan_many_dft_c2r + + type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r + + type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_1d') + import + integer(C_INT), value :: n + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r_1d + + type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r_2d + + type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_dft_c2r_3d + + type(C_PTR) function fftwf_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru_dft_r2c + + type(C_PTR) function fftwf_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru_dft_c2r + + type(C_PTR) function fftwf_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwf_plan_guru_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru_split_dft_r2c + + type(C_PTR) function fftwf_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwf_plan_guru_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru_split_dft_c2r + + type(C_PTR) function fftwf_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru64_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru64_dft_r2c + + type(C_PTR) function fftwf_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwf_plan_guru64_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru64_dft_c2r + + type(C_PTR) function fftwf_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwf_plan_guru64_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwf_plan_guru64_split_dft_r2c + + type(C_PTR) function fftwf_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwf_plan_guru64_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: ri + real(C_FLOAT), dimension(*), intent(out) :: ii + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwf_plan_guru64_split_dft_c2r + + subroutine fftwf_execute_dft_r2c(p,in,out) bind(C, name='fftwf_execute_dft_r2c') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: in + complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftwf_execute_dft_r2c + + subroutine fftwf_execute_dft_c2r(p,in,out) bind(C, name='fftwf_execute_dft_c2r') + import + type(C_PTR), value :: p + complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + end subroutine fftwf_execute_dft_c2r + + subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwf_execute_split_dft_r2c') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: in + real(C_FLOAT), dimension(*), intent(out) :: ro + real(C_FLOAT), dimension(*), intent(out) :: io + end subroutine fftwf_execute_split_dft_r2c + + subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwf_execute_split_dft_c2r') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: ri + real(C_FLOAT), dimension(*), intent(inout) :: ii + real(C_FLOAT), dimension(*), intent(out) :: out + end subroutine fftwf_execute_split_dft_c2r + + type(C_PTR) function fftwf_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) & + bind(C, name='fftwf_plan_many_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_FLOAT), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_many_r2r + + type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_r2r + + type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r_1d') + import + integer(C_INT), value :: n + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind + integer(C_INT), value :: flags + end function fftwf_plan_r2r_1d + + type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwf_plan_r2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_INT), value :: flags + end function fftwf_plan_r2r_2d + + type(C_PTR) function fftwf_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwf_plan_r2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_FFTW_R2R_KIND), value :: kind2 + integer(C_INT), value :: flags + end function fftwf_plan_r2r_3d + + type(C_PTR) function fftwf_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwf_plan_guru_r2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_guru_r2r + + type(C_PTR) function fftwf_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwf_plan_guru64_r2r') + import + integer(C_INT), value :: rank + type(fftwf_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_FLOAT), dimension(*), intent(out) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwf_plan_guru64_r2r + + subroutine fftwf_execute_r2r(p,in,out) bind(C, name='fftwf_execute_r2r') + import + type(C_PTR), value :: p + real(C_FLOAT), dimension(*), intent(inout) :: in + real(C_FLOAT), dimension(*), intent(out) :: out + end subroutine fftwf_execute_r2r + + subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan') + import + type(C_PTR), value :: p + end subroutine fftwf_destroy_plan + + subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom') + import + end subroutine fftwf_forget_wisdom + + subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup') + import + end subroutine fftwf_cleanup + + subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit') + import + real(C_DOUBLE), value :: t + end subroutine fftwf_set_timelimit + + subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads') + import + integer(C_INT), value :: nthreads + end subroutine fftwf_plan_with_nthreads + + integer(C_INT) function fftwf_init_threads() bind(C, name='fftwf_init_threads') + import + end function fftwf_init_threads + + subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads') + import + end subroutine fftwf_cleanup_threads + + subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe') + import + end subroutine fftwf_make_planner_thread_safe + + integer(C_INT) function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwf_export_wisdom_to_filename + + subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file') + import + type(C_PTR), value :: output_file + end subroutine fftwf_export_wisdom_to_file + + type(C_PTR) function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string') + import + end function fftwf_export_wisdom_to_string + + subroutine fftwf_export_wisdom(write_char,data) bind(C, name='fftwf_export_wisdom') + import + type(C_FUNPTR), value :: write_char + type(C_PTR), value :: data + end subroutine fftwf_export_wisdom + + integer(C_INT) function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom') + import + end function fftwf_import_system_wisdom + + integer(C_INT) function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwf_import_wisdom_from_filename + + integer(C_INT) function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file') + import + type(C_PTR), value :: input_file + end function fftwf_import_wisdom_from_file + + integer(C_INT) function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string') + import + character(C_CHAR), dimension(*), intent(in) :: input_string + end function fftwf_import_wisdom_from_string + + integer(C_INT) function fftwf_import_wisdom(read_char,data) bind(C, name='fftwf_import_wisdom') + import + type(C_FUNPTR), value :: read_char + type(C_PTR), value :: data + end function fftwf_import_wisdom + + subroutine fftwf_fprint_plan(p,output_file) bind(C, name='fftwf_fprint_plan') + import + type(C_PTR), value :: p + type(C_PTR), value :: output_file + end subroutine fftwf_fprint_plan + + subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan') + import + type(C_PTR), value :: p + end subroutine fftwf_print_plan + + type(C_PTR) function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan') + import + type(C_PTR), value :: p + end function fftwf_sprint_plan + + type(C_PTR) function fftwf_malloc(n) bind(C, name='fftwf_malloc') + import + integer(C_SIZE_T), value :: n + end function fftwf_malloc + + type(C_PTR) function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real') + import + integer(C_SIZE_T), value :: n + end function fftwf_alloc_real + + type(C_PTR) function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex') + import + integer(C_SIZE_T), value :: n + end function fftwf_alloc_complex + + subroutine fftwf_free(p) bind(C, name='fftwf_free') + import + type(C_PTR), value :: p + end subroutine fftwf_free + + subroutine fftwf_flops(p,add,mul,fmas) bind(C, name='fftwf_flops') + import + type(C_PTR), value :: p + real(C_DOUBLE), intent(out) :: add + real(C_DOUBLE), intent(out) :: mul + real(C_DOUBLE), intent(out) :: fmas + end subroutine fftwf_flops + + real(C_DOUBLE) function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost') + import + type(C_PTR), value :: p + end function fftwf_estimate_cost + + real(C_DOUBLE) function fftwf_cost(p) bind(C, name='fftwf_cost') + import + type(C_PTR), value :: p + end function fftwf_cost + + integer(C_INT) function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of') + import + real(C_FLOAT), dimension(*), intent(out) :: p + end function fftwf_alignment_of + + end interface diff --git a/examples/Integration_with_fftw/fftw/api/fftw3.h b/examples/Integration_with_fftw/fftw/api/fftw3.h new file mode 100644 index 0000000..7bd4c6e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/fftw3.h @@ -0,0 +1,514 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * The following statement of license applies *only* to this header file, + * and *not* to the other files distributed with FFTW or derived therefrom: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + */ + +/***************************** NOTE TO USERS ********************************* + * + * THIS IS A HEADER FILE, NOT A MANUAL + * + * If you want to know how to use FFTW, please read the manual, + * online at http://www.fftw.org/doc/ and also included with FFTW. + * For a quick start, see the manual's tutorial section. + * + * (Reading header files to learn how to use a library is a habit + * stemming from code lacking a proper manual. Arguably, it's a + * *bad* habit in most cases, because header files can contain + * interfaces that are not part of the public, stable API.) + * + ****************************************************************************/ + +#ifndef FFTW3_H +#define FFTW3_H + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/* If is included, use the C99 complex type. Otherwise + define a type bit-compatible with C99 complex */ +#if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I) +# define FFTW_DEFINE_COMPLEX(R, C) typedef R _Complex C +#else +# define FFTW_DEFINE_COMPLEX(R, C) typedef R C[2] +#endif + +#define FFTW_CONCAT(prefix, name) prefix ## name +#define FFTW_MANGLE_DOUBLE(name) FFTW_CONCAT(fftw_, name) +#define FFTW_MANGLE_FLOAT(name) FFTW_CONCAT(fftwf_, name) +#define FFTW_MANGLE_LONG_DOUBLE(name) FFTW_CONCAT(fftwl_, name) +#define FFTW_MANGLE_QUAD(name) FFTW_CONCAT(fftwq_, name) + +/* IMPORTANT: for Windows compilers, you should add a line + #define FFTW_DLL + here and in kernel/ifftw.h if you are compiling/using FFTW as a + DLL, in order to do the proper importing/exporting, or + alternatively compile with -DFFTW_DLL or the equivalent + command-line flag. This is not necessary under MinGW/Cygwin, where + libtool does the imports/exports automatically. */ +#if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__)) + /* annoying Windows syntax for shared-library declarations */ +# if defined(COMPILING_FFTW) /* defined in api.h when compiling FFTW */ +# define FFTW_EXTERN extern __declspec(dllexport) +# else /* user is calling FFTW; import symbol */ +# define FFTW_EXTERN extern __declspec(dllimport) +# endif +#else +# define FFTW_EXTERN extern +#endif + +/* specify calling convention (Windows only) */ +#if defined(_WIN32) || defined(__WIN32__) +# define FFTW_CDECL __cdecl +#else +# define FFTW_CDECL +#endif + +enum fftw_r2r_kind_do_not_use_me { + FFTW_R2HC=0, FFTW_HC2R=1, FFTW_DHT=2, + FFTW_REDFT00=3, FFTW_REDFT01=4, FFTW_REDFT10=5, FFTW_REDFT11=6, + FFTW_RODFT00=7, FFTW_RODFT01=8, FFTW_RODFT10=9, FFTW_RODFT11=10 +}; + +struct fftw_iodim_do_not_use_me { + int n; /* dimension size */ + int is; /* input stride */ + int os; /* output stride */ +}; + +#include /* for ptrdiff_t */ +struct fftw_iodim64_do_not_use_me { + ptrdiff_t n; /* dimension size */ + ptrdiff_t is; /* input stride */ + ptrdiff_t os; /* output stride */ +}; + +typedef void (FFTW_CDECL *fftw_write_char_func_do_not_use_me)(char c, void *); +typedef int (FFTW_CDECL *fftw_read_char_func_do_not_use_me)(void *); + +/* + huge second-order macro that defines prototypes for all API + functions. We expand this macro for each supported precision + + X: name-mangling macro + R: real data type + C: complex data type +*/ + +#define FFTW_DEFINE_API(X, R, C) \ + \ +FFTW_DEFINE_COMPLEX(R, C); \ + \ +typedef struct X(plan_s) *X(plan); \ + \ +typedef struct fftw_iodim_do_not_use_me X(iodim); \ +typedef struct fftw_iodim64_do_not_use_me X(iodim64); \ + \ +typedef enum fftw_r2r_kind_do_not_use_me X(r2r_kind); \ + \ +typedef fftw_write_char_func_do_not_use_me X(write_char_func); \ +typedef fftw_read_char_func_do_not_use_me X(read_char_func); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute)(const X(plan) p); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft)(int rank, const int *n, \ + C *in, C *out, int sign, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_1d)(int n, C *in, C *out, int sign, \ + unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_2d)(int n0, int n1, \ + C *in, C *out, int sign, unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_3d)(int n0, int n1, int n2, \ + C *in, C *out, int sign, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_dft)(int rank, const int *n, \ + int howmany, \ + C *in, const int *inembed, \ + int istride, int idist, \ + C *out, const int *onembed, \ + int ostride, int odist, \ + int sign, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_dft)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + C *in, C *out, \ + int sign, unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_split_dft)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *ri, R *ii, R *ro, R *io, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_dft)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + C *in, C *out, \ + int sign, unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_split_dft)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *ri, R *ii, R *ro, R *io, \ + unsigned flags); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_dft)(const X(plan) p, C *in, C *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_split_dft)(const X(plan) p, R *ri, R *ii, \ + R *ro, R *io); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_dft_r2c)(int rank, const int *n, \ + int howmany, \ + R *in, const int *inembed, \ + int istride, int idist, \ + C *out, const int *onembed, \ + int ostride, int odist, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c)(int rank, const int *n, \ + R *in, C *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c_1d)(int n,R *in,C *out,unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c_2d)(int n0, int n1, \ + R *in, C *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_r2c_3d)(int n0, int n1, \ + int n2, \ + R *in, C *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_dft_c2r)(int rank, const int *n, \ + int howmany, \ + C *in, const int *inembed, \ + int istride, int idist, \ + R *out, const int *onembed, \ + int ostride, int odist, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r)(int rank, const int *n, \ + C *in, R *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r_1d)(int n,C *in,R *out,unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r_2d)(int n0, int n1, \ + C *in, R *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_dft_c2r_3d)(int n0, int n1, \ + int n2, \ + C *in, R *out, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_dft_r2c)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *in, C *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_dft_c2r)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + C *in, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_split_dft_r2c)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *in, R *ro, R *io, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_split_dft_c2r)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *ri, R *ii, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_dft_r2c)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *in, C *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_dft_c2r)(int rank, \ + const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + C *in, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_split_dft_r2c)(int rank, const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *in, R *ro, R *io, \ + unsigned flags); \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_split_dft_c2r)(int rank, const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *ri, R *ii, R *out, \ + unsigned flags); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_dft_r2c)(const X(plan) p, R *in, C *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_dft_c2r)(const X(plan) p, C *in, R *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_split_dft_r2c)(const X(plan) p, \ + R *in, R *ro, R *io); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_split_dft_c2r)(const X(plan) p, \ + R *ri, R *ii, R *out); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_many_r2r)(int rank, const int *n, \ + int howmany, \ + R *in, const int *inembed, \ + int istride, int idist, \ + R *out, const int *onembed, \ + int ostride, int odist, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r)(int rank, const int *n, R *in, R *out, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r_1d)(int n, R *in, R *out, \ + X(r2r_kind) kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r_2d)(int n0, int n1, R *in, R *out, \ + X(r2r_kind) kind0, X(r2r_kind) kind1, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_r2r_3d)(int n0, int n1, int n2, \ + R *in, R *out, X(r2r_kind) kind0, \ + X(r2r_kind) kind1, X(r2r_kind) kind2, \ + unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru_r2r)(int rank, const X(iodim) *dims, \ + int howmany_rank, \ + const X(iodim) *howmany_dims, \ + R *in, R *out, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN X(plan) \ +FFTW_CDECL X(plan_guru64_r2r)(int rank, const X(iodim64) *dims, \ + int howmany_rank, \ + const X(iodim64) *howmany_dims, \ + R *in, R *out, \ + const X(r2r_kind) *kind, unsigned flags); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(execute_r2r)(const X(plan) p, R *in, R *out); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(destroy_plan)(X(plan) p); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(forget_wisdom)(void); \ +FFTW_EXTERN void \ +FFTW_CDECL X(cleanup)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(set_timelimit)(double t); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(plan_with_nthreads)(int nthreads); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(init_threads)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(cleanup_threads)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(make_planner_thread_safe)(void); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(export_wisdom_to_filename)(const char *filename); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(export_wisdom_to_file)(FILE *output_file); \ + \ +FFTW_EXTERN char * \ +FFTW_CDECL X(export_wisdom_to_string)(void); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(export_wisdom)(X(write_char_func) write_char, \ + void *data); \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_system_wisdom)(void); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom_from_filename)(const char *filename); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom_from_file)(FILE *input_file); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom_from_string)(const char *input_string); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(import_wisdom)(X(read_char_func) read_char, void *data); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(fprint_plan)(const X(plan) p, FILE *output_file); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(print_plan)(const X(plan) p); \ + \ +FFTW_EXTERN char * \ +FFTW_CDECL X(sprint_plan)(const X(plan) p); \ + \ +FFTW_EXTERN void * \ +FFTW_CDECL X(malloc)(size_t n); \ + \ +FFTW_EXTERN R * \ +FFTW_CDECL X(alloc_real)(size_t n); \ +FFTW_EXTERN C * \ +FFTW_CDECL X(alloc_complex)(size_t n); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(free)(void *p); \ + \ +FFTW_EXTERN void \ +FFTW_CDECL X(flops)(const X(plan) p, \ + double *add, double *mul, double *fmas); \ +FFTW_EXTERN double \ +FFTW_CDECL X(estimate_cost)(const X(plan) p); \ + \ +FFTW_EXTERN double \ +FFTW_CDECL X(cost)(const X(plan) p); \ + \ +FFTW_EXTERN int \ +FFTW_CDECL X(alignment_of)(R *p); \ + \ +FFTW_EXTERN const char X(version)[]; \ +FFTW_EXTERN const char X(cc)[]; \ +FFTW_EXTERN const char X(codelet_optim)[]; + + +/* end of FFTW_DEFINE_API macro */ + +FFTW_DEFINE_API(FFTW_MANGLE_DOUBLE, double, fftw_complex) +FFTW_DEFINE_API(FFTW_MANGLE_FLOAT, float, fftwf_complex) +FFTW_DEFINE_API(FFTW_MANGLE_LONG_DOUBLE, long double, fftwl_complex) + +/* __float128 (quad precision) is a gcc extension on i386, x86_64, and ia64 + for gcc >= 4.6 (compiled in FFTW with --enable-quad-precision) */ +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) \ + && !(defined(__ICC) || defined(__INTEL_COMPILER) || defined(__CUDACC__) || defined(__PGI)) \ + && (defined(__i386__) || defined(__x86_64__) || defined(__ia64__)) +# if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I) +/* note: __float128 is a typedef, which is not supported with the _Complex + keyword in gcc, so instead we use this ugly __attribute__ version. + However, we can't simply pass the __attribute__ version to + FFTW_DEFINE_API because the __attribute__ confuses gcc in pointer + types. Hence redefining FFTW_DEFINE_COMPLEX. Ugh. */ +# undef FFTW_DEFINE_COMPLEX +# define FFTW_DEFINE_COMPLEX(R, C) typedef _Complex float __attribute__((mode(TC))) C +# endif +FFTW_DEFINE_API(FFTW_MANGLE_QUAD, __float128, fftwq_complex) +#endif + +#define FFTW_FORWARD (-1) +#define FFTW_BACKWARD (+1) + +#define FFTW_NO_TIMELIMIT (-1.0) + +/* documented flags */ +#define FFTW_MEASURE (0U) +#define FFTW_DESTROY_INPUT (1U << 0) +#define FFTW_UNALIGNED (1U << 1) +#define FFTW_CONSERVE_MEMORY (1U << 2) +#define FFTW_EXHAUSTIVE (1U << 3) /* NO_EXHAUSTIVE is default */ +#define FFTW_PRESERVE_INPUT (1U << 4) /* cancels FFTW_DESTROY_INPUT */ +#define FFTW_PATIENT (1U << 5) /* IMPATIENT is default */ +#define FFTW_ESTIMATE (1U << 6) +#define FFTW_WISDOM_ONLY (1U << 21) + +/* undocumented beyond-guru flags */ +#define FFTW_ESTIMATE_PATIENT (1U << 7) +#define FFTW_BELIEVE_PCOST (1U << 8) +#define FFTW_NO_DFT_R2HC (1U << 9) +#define FFTW_NO_NONTHREADED (1U << 10) +#define FFTW_NO_BUFFERING (1U << 11) +#define FFTW_NO_INDIRECT_OP (1U << 12) +#define FFTW_ALLOW_LARGE_GENERIC (1U << 13) /* NO_LARGE_GENERIC is default */ +#define FFTW_NO_RANK_SPLITS (1U << 14) +#define FFTW_NO_VRANK_SPLITS (1U << 15) +#define FFTW_NO_VRECURSE (1U << 16) +#define FFTW_NO_SIMD (1U << 17) +#define FFTW_NO_SLOW (1U << 18) +#define FFTW_NO_FIXED_RADIX_LARGE_N (1U << 19) +#define FFTW_ALLOW_PRUNING (1U << 20) + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* FFTW3_H */ diff --git a/examples/Integration_with_fftw/fftw/api/fftw3l.f03 b/examples/Integration_with_fftw/fftw/api/fftw3l.f03 new file mode 100644 index 0000000..59e7ed2 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/fftw3l.f03 @@ -0,0 +1,609 @@ +! Generated automatically. DO NOT EDIT! + + + type, bind(C) :: fftwl_iodim + integer(C_INT) n, is, os + end type fftwl_iodim + type, bind(C) :: fftwl_iodim64 + integer(C_INTPTR_T) n, is, os + end type fftwl_iodim64 + + interface + type(C_PTR) function fftwl_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwl_plan_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_dft + + type(C_PTR) function fftwl_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwl_plan_dft_1d') + import + integer(C_INT), value :: n + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_dft_1d + + type(C_PTR) function fftwl_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwl_plan_dft_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_dft_2d + + type(C_PTR) function fftwl_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwl_plan_dft_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_dft_3d + + type(C_PTR) function fftwl_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) & + bind(C, name='fftwl_plan_many_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_many_dft + + type(C_PTR) function fftwl_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwl_plan_guru_dft') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_guru_dft + + type(C_PTR) function fftwl_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwl_plan_guru_split_dft') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro + real(C_LONG_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwl_plan_guru_split_dft + + type(C_PTR) function fftwl_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwl_plan_guru64_dft') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwl_plan_guru64_dft + + type(C_PTR) function fftwl_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwl_plan_guru64_split_dft') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro + real(C_LONG_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwl_plan_guru64_split_dft + + subroutine fftwl_execute_dft(p,in,out) bind(C, name='fftwl_execute_dft') + import + type(C_PTR), value :: p + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftwl_execute_dft + + subroutine fftwl_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwl_execute_split_dft') + import + type(C_PTR), value :: p + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ri + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ii + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro + real(C_LONG_DOUBLE), dimension(*), intent(out) :: io + end subroutine fftwl_execute_split_dft + + type(C_PTR) function fftwl_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwl_plan_many_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwl_plan_many_dft_r2c + + type(C_PTR) function fftwl_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwl_plan_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_r2c + + type(C_PTR) function fftwl_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_1d') + import + integer(C_INT), value :: n + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_r2c_1d + + type(C_PTR) function fftwl_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_r2c_2d + + type(C_PTR) function fftwl_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_r2c_3d + + type(C_PTR) function fftwl_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwl_plan_many_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwl_plan_many_dft_c2r + + type(C_PTR) function fftwl_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwl_plan_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_c2r + + type(C_PTR) function fftwl_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_1d') + import + integer(C_INT), value :: n + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_c2r_1d + + type(C_PTR) function fftwl_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_c2r_2d + + type(C_PTR) function fftwl_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_dft_c2r_3d + + type(C_PTR) function fftwl_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwl_plan_guru_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_guru_dft_r2c + + type(C_PTR) function fftwl_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwl_plan_guru_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_guru_dft_c2r + + type(C_PTR) function fftwl_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwl_plan_guru_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro + real(C_LONG_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwl_plan_guru_split_dft_r2c + + type(C_PTR) function fftwl_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwl_plan_guru_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_guru_split_dft_c2r + + type(C_PTR) function fftwl_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwl_plan_guru64_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_guru64_dft_r2c + + type(C_PTR) function fftwl_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwl_plan_guru64_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_guru64_dft_c2r + + type(C_PTR) function fftwl_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwl_plan_guru64_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro + real(C_LONG_DOUBLE), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwl_plan_guru64_split_dft_r2c + + type(C_PTR) function fftwl_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwl_plan_guru64_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwl_plan_guru64_split_dft_c2r + + subroutine fftwl_execute_dft_r2c(p,in,out) bind(C, name='fftwl_execute_dft_r2c') + import + type(C_PTR), value :: p + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: in + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out + end subroutine fftwl_execute_dft_r2c + + subroutine fftwl_execute_dft_c2r(p,in,out) bind(C, name='fftwl_execute_dft_c2r') + import + type(C_PTR), value :: p + complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftwl_execute_dft_c2r + + subroutine fftwl_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwl_execute_split_dft_r2c') + import + type(C_PTR), value :: p + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro + real(C_LONG_DOUBLE), dimension(*), intent(out) :: io + end subroutine fftwl_execute_split_dft_r2c + + subroutine fftwl_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwl_execute_split_dft_c2r') + import + type(C_PTR), value :: p + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ri + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ii + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftwl_execute_split_dft_c2r + + type(C_PTR) function fftwl_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) & + bind(C, name='fftwl_plan_many_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwl_plan_many_r2r + + type(C_PTR) function fftwl_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwl_plan_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwl_plan_r2r + + type(C_PTR) function fftwl_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwl_plan_r2r_1d') + import + integer(C_INT), value :: n + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind + integer(C_INT), value :: flags + end function fftwl_plan_r2r_1d + + type(C_PTR) function fftwl_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwl_plan_r2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_INT), value :: flags + end function fftwl_plan_r2r_2d + + type(C_PTR) function fftwl_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwl_plan_r2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_FFTW_R2R_KIND), value :: kind2 + integer(C_INT), value :: flags + end function fftwl_plan_r2r_3d + + type(C_PTR) function fftwl_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwl_plan_guru_r2r') + import + integer(C_INT), value :: rank + type(fftwl_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwl_plan_guru_r2r + + type(C_PTR) function fftwl_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwl_plan_guru64_r2r') + import + integer(C_INT), value :: rank + type(fftwl_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims + real(C_LONG_DOUBLE), dimension(*), intent(out) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwl_plan_guru64_r2r + + subroutine fftwl_execute_r2r(p,in,out) bind(C, name='fftwl_execute_r2r') + import + type(C_PTR), value :: p + real(C_LONG_DOUBLE), dimension(*), intent(inout) :: in + real(C_LONG_DOUBLE), dimension(*), intent(out) :: out + end subroutine fftwl_execute_r2r + + subroutine fftwl_destroy_plan(p) bind(C, name='fftwl_destroy_plan') + import + type(C_PTR), value :: p + end subroutine fftwl_destroy_plan + + subroutine fftwl_forget_wisdom() bind(C, name='fftwl_forget_wisdom') + import + end subroutine fftwl_forget_wisdom + + subroutine fftwl_cleanup() bind(C, name='fftwl_cleanup') + import + end subroutine fftwl_cleanup + + subroutine fftwl_set_timelimit(t) bind(C, name='fftwl_set_timelimit') + import + real(C_DOUBLE), value :: t + end subroutine fftwl_set_timelimit + + subroutine fftwl_plan_with_nthreads(nthreads) bind(C, name='fftwl_plan_with_nthreads') + import + integer(C_INT), value :: nthreads + end subroutine fftwl_plan_with_nthreads + + integer(C_INT) function fftwl_init_threads() bind(C, name='fftwl_init_threads') + import + end function fftwl_init_threads + + subroutine fftwl_cleanup_threads() bind(C, name='fftwl_cleanup_threads') + import + end subroutine fftwl_cleanup_threads + + subroutine fftwl_make_planner_thread_safe() bind(C, name='fftwl_make_planner_thread_safe') + import + end subroutine fftwl_make_planner_thread_safe + + integer(C_INT) function fftwl_export_wisdom_to_filename(filename) bind(C, name='fftwl_export_wisdom_to_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwl_export_wisdom_to_filename + + subroutine fftwl_export_wisdom_to_file(output_file) bind(C, name='fftwl_export_wisdom_to_file') + import + type(C_PTR), value :: output_file + end subroutine fftwl_export_wisdom_to_file + + type(C_PTR) function fftwl_export_wisdom_to_string() bind(C, name='fftwl_export_wisdom_to_string') + import + end function fftwl_export_wisdom_to_string + + subroutine fftwl_export_wisdom(write_char,data) bind(C, name='fftwl_export_wisdom') + import + type(C_FUNPTR), value :: write_char + type(C_PTR), value :: data + end subroutine fftwl_export_wisdom + + integer(C_INT) function fftwl_import_system_wisdom() bind(C, name='fftwl_import_system_wisdom') + import + end function fftwl_import_system_wisdom + + integer(C_INT) function fftwl_import_wisdom_from_filename(filename) bind(C, name='fftwl_import_wisdom_from_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwl_import_wisdom_from_filename + + integer(C_INT) function fftwl_import_wisdom_from_file(input_file) bind(C, name='fftwl_import_wisdom_from_file') + import + type(C_PTR), value :: input_file + end function fftwl_import_wisdom_from_file + + integer(C_INT) function fftwl_import_wisdom_from_string(input_string) bind(C, name='fftwl_import_wisdom_from_string') + import + character(C_CHAR), dimension(*), intent(in) :: input_string + end function fftwl_import_wisdom_from_string + + integer(C_INT) function fftwl_import_wisdom(read_char,data) bind(C, name='fftwl_import_wisdom') + import + type(C_FUNPTR), value :: read_char + type(C_PTR), value :: data + end function fftwl_import_wisdom + + subroutine fftwl_fprint_plan(p,output_file) bind(C, name='fftwl_fprint_plan') + import + type(C_PTR), value :: p + type(C_PTR), value :: output_file + end subroutine fftwl_fprint_plan + + subroutine fftwl_print_plan(p) bind(C, name='fftwl_print_plan') + import + type(C_PTR), value :: p + end subroutine fftwl_print_plan + + type(C_PTR) function fftwl_sprint_plan(p) bind(C, name='fftwl_sprint_plan') + import + type(C_PTR), value :: p + end function fftwl_sprint_plan + + type(C_PTR) function fftwl_malloc(n) bind(C, name='fftwl_malloc') + import + integer(C_SIZE_T), value :: n + end function fftwl_malloc + + type(C_PTR) function fftwl_alloc_real(n) bind(C, name='fftwl_alloc_real') + import + integer(C_SIZE_T), value :: n + end function fftwl_alloc_real + + type(C_PTR) function fftwl_alloc_complex(n) bind(C, name='fftwl_alloc_complex') + import + integer(C_SIZE_T), value :: n + end function fftwl_alloc_complex + + subroutine fftwl_free(p) bind(C, name='fftwl_free') + import + type(C_PTR), value :: p + end subroutine fftwl_free + + subroutine fftwl_flops(p,add,mul,fmas) bind(C, name='fftwl_flops') + import + type(C_PTR), value :: p + real(C_DOUBLE), intent(out) :: add + real(C_DOUBLE), intent(out) :: mul + real(C_DOUBLE), intent(out) :: fmas + end subroutine fftwl_flops + + real(C_DOUBLE) function fftwl_estimate_cost(p) bind(C, name='fftwl_estimate_cost') + import + type(C_PTR), value :: p + end function fftwl_estimate_cost + + real(C_DOUBLE) function fftwl_cost(p) bind(C, name='fftwl_cost') + import + type(C_PTR), value :: p + end function fftwl_cost + + integer(C_INT) function fftwl_alignment_of(p) bind(C, name='fftwl_alignment_of') + import + real(C_LONG_DOUBLE), dimension(*), intent(out) :: p + end function fftwl_alignment_of + + end interface diff --git a/examples/Integration_with_fftw/fftw/api/fftw3q.f03 b/examples/Integration_with_fftw/fftw/api/fftw3q.f03 new file mode 100644 index 0000000..61dacd6 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/fftw3q.f03 @@ -0,0 +1,609 @@ +! Generated automatically. DO NOT EDIT! + + + type, bind(C) :: fftwq_iodim + integer(C_INT) n, is, os + end type fftwq_iodim + type, bind(C) :: fftwq_iodim64 + integer(C_INTPTR_T) n, is, os + end type fftwq_iodim64 + + interface + type(C_PTR) function fftwq_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwq_plan_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_dft + + type(C_PTR) function fftwq_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwq_plan_dft_1d') + import + integer(C_INT), value :: n + complex(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_dft_1d + + type(C_PTR) function fftwq_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwq_plan_dft_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_dft_2d + + type(C_PTR) function fftwq_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwq_plan_dft_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_dft_3d + + type(C_PTR) function fftwq_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) & + bind(C, name='fftwq_plan_many_dft') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(16), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(16), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_many_dft + + type(C_PTR) function fftwq_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwq_plan_guru_dft') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + complex(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_guru_dft + + type(C_PTR) function fftwq_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwq_plan_guru_split_dft') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: ri + real(16), dimension(*), intent(out) :: ii + real(16), dimension(*), intent(out) :: ro + real(16), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwq_plan_guru_split_dft + + type(C_PTR) function fftwq_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) & + bind(C, name='fftwq_plan_guru64_dft') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + complex(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: sign + integer(C_INT), value :: flags + end function fftwq_plan_guru64_dft + + type(C_PTR) function fftwq_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) & + bind(C, name='fftwq_plan_guru64_split_dft') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: ri + real(16), dimension(*), intent(out) :: ii + real(16), dimension(*), intent(out) :: ro + real(16), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwq_plan_guru64_split_dft + + subroutine fftwq_execute_dft(p,in,out) bind(C, name='fftwq_execute_dft') + import + type(C_PTR), value :: p + complex(16), dimension(*), intent(inout) :: in + complex(16), dimension(*), intent(out) :: out + end subroutine fftwq_execute_dft + + subroutine fftwq_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwq_execute_split_dft') + import + type(C_PTR), value :: p + real(16), dimension(*), intent(inout) :: ri + real(16), dimension(*), intent(inout) :: ii + real(16), dimension(*), intent(out) :: ro + real(16), dimension(*), intent(out) :: io + end subroutine fftwq_execute_split_dft + + type(C_PTR) function fftwq_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwq_plan_many_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(16), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + complex(16), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwq_plan_many_dft_r2c + + type(C_PTR) function fftwq_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_r2c + + type(C_PTR) function fftwq_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_1d') + import + integer(C_INT), value :: n + real(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_r2c_1d + + type(C_PTR) function fftwq_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_r2c_2d + + type(C_PTR) function fftwq_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_r2c_3d + + type(C_PTR) function fftwq_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) & + bind(C, name='fftwq_plan_many_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + complex(16), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(16), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_INT), value :: flags + end function fftwq_plan_many_dft_c2r + + type(C_PTR) function fftwq_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + complex(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_c2r + + type(C_PTR) function fftwq_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_1d') + import + integer(C_INT), value :: n + complex(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_c2r_1d + + type(C_PTR) function fftwq_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + complex(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_c2r_2d + + type(C_PTR) function fftwq_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + complex(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_dft_c2r_3d + + type(C_PTR) function fftwq_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwq_plan_guru_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_guru_dft_r2c + + type(C_PTR) function fftwq_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwq_plan_guru_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + complex(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_guru_dft_c2r + + type(C_PTR) function fftwq_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwq_plan_guru_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: ro + real(16), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwq_plan_guru_split_dft_r2c + + type(C_PTR) function fftwq_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwq_plan_guru_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: ri + real(16), dimension(*), intent(out) :: ii + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_guru_split_dft_c2r + + type(C_PTR) function fftwq_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwq_plan_guru64_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: in + complex(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_guru64_dft_r2c + + type(C_PTR) function fftwq_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) & + bind(C, name='fftwq_plan_guru64_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + complex(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_guru64_dft_c2r + + type(C_PTR) function fftwq_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) & + bind(C, name='fftwq_plan_guru64_split_dft_r2c') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: ro + real(16), dimension(*), intent(out) :: io + integer(C_INT), value :: flags + end function fftwq_plan_guru64_split_dft_r2c + + type(C_PTR) function fftwq_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) & + bind(C, name='fftwq_plan_guru64_split_dft_c2r') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: ri + real(16), dimension(*), intent(out) :: ii + real(16), dimension(*), intent(out) :: out + integer(C_INT), value :: flags + end function fftwq_plan_guru64_split_dft_c2r + + subroutine fftwq_execute_dft_r2c(p,in,out) bind(C, name='fftwq_execute_dft_r2c') + import + type(C_PTR), value :: p + real(16), dimension(*), intent(inout) :: in + complex(16), dimension(*), intent(out) :: out + end subroutine fftwq_execute_dft_r2c + + subroutine fftwq_execute_dft_c2r(p,in,out) bind(C, name='fftwq_execute_dft_c2r') + import + type(C_PTR), value :: p + complex(16), dimension(*), intent(inout) :: in + real(16), dimension(*), intent(out) :: out + end subroutine fftwq_execute_dft_c2r + + subroutine fftwq_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwq_execute_split_dft_r2c') + import + type(C_PTR), value :: p + real(16), dimension(*), intent(inout) :: in + real(16), dimension(*), intent(out) :: ro + real(16), dimension(*), intent(out) :: io + end subroutine fftwq_execute_split_dft_r2c + + subroutine fftwq_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwq_execute_split_dft_c2r') + import + type(C_PTR), value :: p + real(16), dimension(*), intent(inout) :: ri + real(16), dimension(*), intent(inout) :: ii + real(16), dimension(*), intent(out) :: out + end subroutine fftwq_execute_split_dft_c2r + + type(C_PTR) function fftwq_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) & + bind(C, name='fftwq_plan_many_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + integer(C_INT), value :: howmany + real(16), dimension(*), intent(out) :: in + integer(C_INT), dimension(*), intent(in) :: inembed + integer(C_INT), value :: istride + integer(C_INT), value :: idist + real(16), dimension(*), intent(out) :: out + integer(C_INT), dimension(*), intent(in) :: onembed + integer(C_INT), value :: ostride + integer(C_INT), value :: odist + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwq_plan_many_r2r + + type(C_PTR) function fftwq_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r') + import + integer(C_INT), value :: rank + integer(C_INT), dimension(*), intent(in) :: n + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwq_plan_r2r + + type(C_PTR) function fftwq_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r_1d') + import + integer(C_INT), value :: n + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind + integer(C_INT), value :: flags + end function fftwq_plan_r2r_1d + + type(C_PTR) function fftwq_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwq_plan_r2r_2d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_INT), value :: flags + end function fftwq_plan_r2r_2d + + type(C_PTR) function fftwq_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwq_plan_r2r_3d') + import + integer(C_INT), value :: n0 + integer(C_INT), value :: n1 + integer(C_INT), value :: n2 + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), value :: kind0 + integer(C_FFTW_R2R_KIND), value :: kind1 + integer(C_FFTW_R2R_KIND), value :: kind2 + integer(C_INT), value :: flags + end function fftwq_plan_r2r_3d + + type(C_PTR) function fftwq_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwq_plan_guru_r2r') + import + integer(C_INT), value :: rank + type(fftwq_iodim), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwq_plan_guru_r2r + + type(C_PTR) function fftwq_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) & + bind(C, name='fftwq_plan_guru64_r2r') + import + integer(C_INT), value :: rank + type(fftwq_iodim64), dimension(*), intent(in) :: dims + integer(C_INT), value :: howmany_rank + type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims + real(16), dimension(*), intent(out) :: in + real(16), dimension(*), intent(out) :: out + integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind + integer(C_INT), value :: flags + end function fftwq_plan_guru64_r2r + + subroutine fftwq_execute_r2r(p,in,out) bind(C, name='fftwq_execute_r2r') + import + type(C_PTR), value :: p + real(16), dimension(*), intent(inout) :: in + real(16), dimension(*), intent(out) :: out + end subroutine fftwq_execute_r2r + + subroutine fftwq_destroy_plan(p) bind(C, name='fftwq_destroy_plan') + import + type(C_PTR), value :: p + end subroutine fftwq_destroy_plan + + subroutine fftwq_forget_wisdom() bind(C, name='fftwq_forget_wisdom') + import + end subroutine fftwq_forget_wisdom + + subroutine fftwq_cleanup() bind(C, name='fftwq_cleanup') + import + end subroutine fftwq_cleanup + + subroutine fftwq_set_timelimit(t) bind(C, name='fftwq_set_timelimit') + import + real(C_DOUBLE), value :: t + end subroutine fftwq_set_timelimit + + subroutine fftwq_plan_with_nthreads(nthreads) bind(C, name='fftwq_plan_with_nthreads') + import + integer(C_INT), value :: nthreads + end subroutine fftwq_plan_with_nthreads + + integer(C_INT) function fftwq_init_threads() bind(C, name='fftwq_init_threads') + import + end function fftwq_init_threads + + subroutine fftwq_cleanup_threads() bind(C, name='fftwq_cleanup_threads') + import + end subroutine fftwq_cleanup_threads + + subroutine fftwq_make_planner_thread_safe() bind(C, name='fftwq_make_planner_thread_safe') + import + end subroutine fftwq_make_planner_thread_safe + + integer(C_INT) function fftwq_export_wisdom_to_filename(filename) bind(C, name='fftwq_export_wisdom_to_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwq_export_wisdom_to_filename + + subroutine fftwq_export_wisdom_to_file(output_file) bind(C, name='fftwq_export_wisdom_to_file') + import + type(C_PTR), value :: output_file + end subroutine fftwq_export_wisdom_to_file + + type(C_PTR) function fftwq_export_wisdom_to_string() bind(C, name='fftwq_export_wisdom_to_string') + import + end function fftwq_export_wisdom_to_string + + subroutine fftwq_export_wisdom(write_char,data) bind(C, name='fftwq_export_wisdom') + import + type(C_FUNPTR), value :: write_char + type(C_PTR), value :: data + end subroutine fftwq_export_wisdom + + integer(C_INT) function fftwq_import_system_wisdom() bind(C, name='fftwq_import_system_wisdom') + import + end function fftwq_import_system_wisdom + + integer(C_INT) function fftwq_import_wisdom_from_filename(filename) bind(C, name='fftwq_import_wisdom_from_filename') + import + character(C_CHAR), dimension(*), intent(in) :: filename + end function fftwq_import_wisdom_from_filename + + integer(C_INT) function fftwq_import_wisdom_from_file(input_file) bind(C, name='fftwq_import_wisdom_from_file') + import + type(C_PTR), value :: input_file + end function fftwq_import_wisdom_from_file + + integer(C_INT) function fftwq_import_wisdom_from_string(input_string) bind(C, name='fftwq_import_wisdom_from_string') + import + character(C_CHAR), dimension(*), intent(in) :: input_string + end function fftwq_import_wisdom_from_string + + integer(C_INT) function fftwq_import_wisdom(read_char,data) bind(C, name='fftwq_import_wisdom') + import + type(C_FUNPTR), value :: read_char + type(C_PTR), value :: data + end function fftwq_import_wisdom + + subroutine fftwq_fprint_plan(p,output_file) bind(C, name='fftwq_fprint_plan') + import + type(C_PTR), value :: p + type(C_PTR), value :: output_file + end subroutine fftwq_fprint_plan + + subroutine fftwq_print_plan(p) bind(C, name='fftwq_print_plan') + import + type(C_PTR), value :: p + end subroutine fftwq_print_plan + + type(C_PTR) function fftwq_sprint_plan(p) bind(C, name='fftwq_sprint_plan') + import + type(C_PTR), value :: p + end function fftwq_sprint_plan + + type(C_PTR) function fftwq_malloc(n) bind(C, name='fftwq_malloc') + import + integer(C_SIZE_T), value :: n + end function fftwq_malloc + + type(C_PTR) function fftwq_alloc_real(n) bind(C, name='fftwq_alloc_real') + import + integer(C_SIZE_T), value :: n + end function fftwq_alloc_real + + type(C_PTR) function fftwq_alloc_complex(n) bind(C, name='fftwq_alloc_complex') + import + integer(C_SIZE_T), value :: n + end function fftwq_alloc_complex + + subroutine fftwq_free(p) bind(C, name='fftwq_free') + import + type(C_PTR), value :: p + end subroutine fftwq_free + + subroutine fftwq_flops(p,add,mul,fmas) bind(C, name='fftwq_flops') + import + type(C_PTR), value :: p + real(C_DOUBLE), intent(out) :: add + real(C_DOUBLE), intent(out) :: mul + real(C_DOUBLE), intent(out) :: fmas + end subroutine fftwq_flops + + real(C_DOUBLE) function fftwq_estimate_cost(p) bind(C, name='fftwq_estimate_cost') + import + type(C_PTR), value :: p + end function fftwq_estimate_cost + + real(C_DOUBLE) function fftwq_cost(p) bind(C, name='fftwq_cost') + import + type(C_PTR), value :: p + end function fftwq_cost + + integer(C_INT) function fftwq_alignment_of(p) bind(C, name='fftwq_alignment_of') + import + real(16), dimension(*), intent(out) :: p + end function fftwq_alignment_of + + end interface diff --git a/examples/Integration_with_fftw/fftw/api/flops.c b/examples/Integration_with_fftw/fftw/api/flops.c new file mode 100644 index 0000000..7145ab5 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/flops.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +void X(flops)(const X(plan) p, double *add, double *mul, double *fma) +{ + planner *plnr = X(the_planner)(); + opcnt *o = &p->pln->ops; + *add = o->add; *mul = o->mul; *fma = o->fma; + if (plnr->cost_hook) { + *add = plnr->cost_hook(p->prb, *add, COST_SUM); + *mul = plnr->cost_hook(p->prb, *mul, COST_SUM); + *fma = plnr->cost_hook(p->prb, *fma, COST_SUM); + } +} + +double X(estimate_cost)(const X(plan) p) +{ + return X(iestimate_cost)(X(the_planner)(), p->pln, p->prb); +} + +double X(cost)(const X(plan) p) +{ + return p->pln->pcost; +} diff --git a/examples/Integration_with_fftw/fftw/api/forget-wisdom.c b/examples/Integration_with_fftw/fftw/api/forget-wisdom.c new file mode 100644 index 0000000..09a0e85 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/forget-wisdom.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +void X(forget_wisdom)(void) +{ + planner *plnr = X(the_planner)(); + plnr->adt->forget(plnr, FORGET_EVERYTHING); +} diff --git a/examples/Integration_with_fftw/fftw/api/genf03.pl b/examples/Integration_with_fftw/fftw/api/genf03.pl new file mode 100755 index 0000000..1905d9c --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/genf03.pl @@ -0,0 +1,213 @@ +#!/usr/bin/perl -w +# Generate Fortran 2003 interfaces from a sequence of C function declarations +# of the form (one per line): +# extern (...args...) +# extern (...args...) +# ... +# with no line breaks within a given function. (It's too much work to +# write a general parser, since we just have to handle FFTW's header files.) + +sub canonicalize_type { + my($type); + ($type) = @_; + $type =~ s/ +/ /g; + $type =~ s/^ //; + $type =~ s/ $//; + $type =~ s/([^\* ])\*/$1 \*/g; + return $type; +} + +# C->Fortran map of supported return types +%return_types = ( + "int" => "integer(C_INT)", + "ptrdiff_t" => "integer(C_INTPTR_T)", + "size_t" => "integer(C_SIZE_T)", + "double" => "real(C_DOUBLE)", + "float" => "real(C_FLOAT)", + "long double" => "real(C_LONG_DOUBLE)", + "__float128" => "real(16)", + "fftw_plan" => "type(C_PTR)", + "fftwf_plan" => "type(C_PTR)", + "fftwl_plan" => "type(C_PTR)", + "fftwq_plan" => "type(C_PTR)", + "void *" => "type(C_PTR)", + "char *" => "type(C_PTR)", + "double *" => "type(C_PTR)", + "float *" => "type(C_PTR)", + "long double *" => "type(C_PTR)", + "__float128 *" => "type(C_PTR)", + "fftw_complex *" => "type(C_PTR)", + "fftwf_complex *" => "type(C_PTR)", + "fftwl_complex *" => "type(C_PTR)", + "fftwq_complex *" => "type(C_PTR)", + ); + +# C->Fortran map of supported argument types +%arg_types = ( + "int" => "integer(C_INT), value", + "unsigned" => "integer(C_INT), value", + "size_t" => "integer(C_SIZE_T), value", + "ptrdiff_t" => "integer(C_INTPTR_T), value", + + "fftw_r2r_kind" => "integer(C_FFTW_R2R_KIND), value", + "fftwf_r2r_kind" => "integer(C_FFTW_R2R_KIND), value", + "fftwl_r2r_kind" => "integer(C_FFTW_R2R_KIND), value", + "fftwq_r2r_kind" => "integer(C_FFTW_R2R_KIND), value", + + "double" => "real(C_DOUBLE), value", + "float" => "real(C_FLOAT), value", + "long double" => "real(C_LONG_DOUBLE), value", + "__float128" => "real(16), value", + + "fftw_complex" => "complex(C_DOUBLE_COMPLEX), value", + "fftwf_complex" => "complex(C_DOUBLE_COMPLEX), value", + "fftwl_complex" => "complex(C_LONG_DOUBLE), value", + "fftwq_complex" => "complex(16), value", + + "fftw_plan" => "type(C_PTR), value", + "fftwf_plan" => "type(C_PTR), value", + "fftwl_plan" => "type(C_PTR), value", + "fftwq_plan" => "type(C_PTR), value", + "const fftw_plan" => "type(C_PTR), value", + "const fftwf_plan" => "type(C_PTR), value", + "const fftwl_plan" => "type(C_PTR), value", + "const fftwq_plan" => "type(C_PTR), value", + + "const int *" => "integer(C_INT), dimension(*), intent(in)", + "ptrdiff_t *" => "integer(C_INTPTR_T), intent(out)", + "const ptrdiff_t *" => "integer(C_INTPTR_T), dimension(*), intent(in)", + + "const fftw_r2r_kind *" => "integer(C_FFTW_R2R_KIND), dimension(*), intent(in)", + "const fftwf_r2r_kind *" => "integer(C_FFTW_R2R_KIND), dimension(*), intent(in)", + "const fftwl_r2r_kind *" => "integer(C_FFTW_R2R_KIND), dimension(*), intent(in)", + "const fftwq_r2r_kind *" => "integer(C_FFTW_R2R_KIND), dimension(*), intent(in)", + + "double *" => "real(C_DOUBLE), dimension(*), intent(out)", + "float *" => "real(C_FLOAT), dimension(*), intent(out)", + "long double *" => "real(C_LONG_DOUBLE), dimension(*), intent(out)", + "__float128 *" => "real(16), dimension(*), intent(out)", + + "fftw_complex *" => "complex(C_DOUBLE_COMPLEX), dimension(*), intent(out)", + "fftwf_complex *" => "complex(C_FLOAT_COMPLEX), dimension(*), intent(out)", + "fftwl_complex *" => "complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out)", + "fftwq_complex *" => "complex(16), dimension(*), intent(out)", + + "const fftw_iodim *" => "type(fftw_iodim), dimension(*), intent(in)", + "const fftwf_iodim *" => "type(fftwf_iodim), dimension(*), intent(in)", + "const fftwl_iodim *" => "type(fftwl_iodim), dimension(*), intent(in)", + "const fftwq_iodim *" => "type(fftwq_iodim), dimension(*), intent(in)", + + "const fftw_iodim64 *" => "type(fftw_iodim64), dimension(*), intent(in)", + "const fftwf_iodim64 *" => "type(fftwf_iodim64), dimension(*), intent(in)", + "const fftwl_iodim64 *" => "type(fftwl_iodim64), dimension(*), intent(in)", + "const fftwq_iodim64 *" => "type(fftwq_iodim64), dimension(*), intent(in)", + + "void *" => "type(C_PTR), value", + "FILE *" => "type(C_PTR), value", + + "const char *" => "character(C_CHAR), dimension(*), intent(in)", + + "fftw_write_char_func" => "type(C_FUNPTR), value", + "fftwf_write_char_func" => "type(C_FUNPTR), value", + "fftwl_write_char_func" => "type(C_FUNPTR), value", + "fftwq_write_char_func" => "type(C_FUNPTR), value", + "fftw_read_char_func" => "type(C_FUNPTR), value", + "fftwf_read_char_func" => "type(C_FUNPTR), value", + "fftwl_read_char_func" => "type(C_FUNPTR), value", + "fftwq_read_char_func" => "type(C_FUNPTR), value", + + # Although the MPI standard defines this type as simply "integer", + # if we use integer without a 'C_' kind in a bind(C) interface then + # gfortran complains. Instead, since MPI also requires the C type + # MPI_Fint to match Fortran integers, we use the size of this type + # (extracted by configure and substituted by the Makefile). + "MPI_Comm" => "integer(C_MPI_FINT), value" + ); + +while (<>) { + next if /^ *$/; + if (/^ *extern +([a-zA-Z_0-9 ]+[ \*]) *([a-zA-Z_0-9]+) *\((.*)\) *$/) { + $ret = &canonicalize_type($1); + $name = $2; + + $args = $3; + $args =~ s/^ *void *$//; + + $bad = ($ret ne "void") && !exists($return_types{$ret}); + foreach $arg (split(/ *, */, $args)) { + $arg =~ /^([a-zA-Z_0-9 ]+[ \*]) *([a-zA-Z_0-9]+) *$/; + $argtype = &canonicalize_type($1); + $bad = 1 if !exists($arg_types{$argtype}); + } + if ($bad) { + print "! Unable to generate Fortran interface for $name\n"; + next; + } + + # any function taking an MPI_Comm arg needs a C wrapper (grr). + if ($args =~ /MPI_Comm/) { + $cname = $name . "_f03"; + } + else { + $cname = $name; + } + + # Fortran has a 132-character line-length limit by default (grr) + $len = 0; + + print " "; $len = $len + length(" "); + if ($ret eq "void") { + $kind = "subroutine" + } + else { + print "$return_types{$ret} "; + $len = $len + length("$return_types{$ret} "); + $kind = "function" + } + print "$kind $name("; $len = $len + length("$kind $name("); + $len0 = $len; + + $argnames = $args; + $argnames =~ s/([a-zA-Z_0-9 ]+[ \*]) *([a-zA-Z_0-9]+) */$2/g; + $comma = ""; + foreach $argname (split(/ *, */, $argnames)) { + if ($len + length("$comma$argname") + 3 > 132) { + printf ", &\n%*s", $len0, ""; + $len = $len0; + $comma = ""; + } + print "$comma$argname"; + $len = $len + length("$comma$argname"); + $comma = ","; + } + print ") "; $len = $len + 2; + + if ($len + length("bind(C, name='$cname')") > 132) { + printf "&\n%*s", $len0 - length("$name("), ""; + } + print "bind(C, name='$cname')\n"; + + print " import\n"; + foreach $arg (split(/ *, */, $args)) { + $arg =~ /^([a-zA-Z_0-9 ]+[ \*]) *([a-zA-Z_0-9]+) *$/; + $argtype = &canonicalize_type($1); + $argname = $2; + $ftype = $arg_types{$argtype}; + + # Various special cases for argument types: + if ($name =~ /_flops$/ && $argtype eq "double *") { + $ftype = "real(C_DOUBLE), intent(out)" + } + if ($name =~ /_execute/ && ($argname eq "ri" || + $argname eq "ii" || + $argname eq "in")) { + $ftype =~ s/intent\(out\)/intent(inout)/; + } + + print " $ftype :: $argname\n" + } + + print " end $kind $name\n"; + print " \n"; + } +} diff --git a/examples/Integration_with_fftw/fftw/api/guru.h b/examples/Integration_with_fftw/fftw/api/guru.h new file mode 100644 index 0000000..c54262d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/guru.h @@ -0,0 +1,4 @@ +#define XGURU(name) X(plan_guru_ ## name) +#define IODIM X(iodim) +#define MKTENSOR_IODIMS X(mktensor_iodims) +#define GURU_KOSHERP X(guru_kosherp) diff --git a/examples/Integration_with_fftw/fftw/api/guru64.h b/examples/Integration_with_fftw/fftw/api/guru64.h new file mode 100644 index 0000000..376ef2d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/guru64.h @@ -0,0 +1,4 @@ +#define XGURU(name) X(plan_guru64_ ## name) +#define IODIM X(iodim64) +#define MKTENSOR_IODIMS X(mktensor_iodims64) +#define GURU_KOSHERP X(guru64_kosherp) diff --git a/examples/Integration_with_fftw/fftw/api/import-system-wisdom.c b/examples/Integration_with_fftw/fftw/api/import-system-wisdom.c new file mode 100644 index 0000000..b30521a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/import-system-wisdom.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +#if defined(FFTW_SINGLE) +# define WISDOM_NAME "wisdomf" +#elif defined(FFTW_LDOUBLE) +# define WISDOM_NAME "wisdoml" +#else +# define WISDOM_NAME "wisdom" +#endif + +/* OS-specific configuration-file directory */ +#if defined(__DJGPP__) +# define WISDOM_DIR "/dev/env/DJDIR/etc/fftw/" +#else +# define WISDOM_DIR "/etc/fftw/" +#endif + +int X(import_system_wisdom)(void) +{ +#if defined(__WIN32__) || defined(WIN32) || defined(_WINDOWS) + return 0; /* TODO? */ +#else + + FILE *f; + f = fopen(WISDOM_DIR WISDOM_NAME, "r"); + if (f) { + int ret = X(import_wisdom_from_file)(f); + fclose(f); + return ret; + } else + return 0; +#endif +} diff --git a/examples/Integration_with_fftw/fftw/api/import-wisdom-from-file.c b/examples/Integration_with_fftw/fftw/api/import-wisdom-from-file.c new file mode 100644 index 0000000..f6b293c --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/import-wisdom-from-file.c @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include + +/* getc()/putc() are *unbelievably* slow on linux. Looks like glibc + is grabbing a lock for each call to getc()/putc(), or something + like that. You pay the price for these idiotic posix threads + whether you use them or not. + + So, we do our own buffering. This completely defeats the purpose + of having stdio in the first place, of course. +*/ + +#define BUFSZ 256 + +typedef struct { + scanner super; + FILE *f; + char buf[BUFSZ]; + char *bufr, *bufw; +} S; + +static int getchr_file(scanner * sc_) +{ + S *sc = (S *) sc_; + + if (sc->bufr >= sc->bufw) { + sc->bufr = sc->buf; + sc->bufw = sc->buf + fread(sc->buf, 1, BUFSZ, sc->f); + if (sc->bufr >= sc->bufw) + return EOF; + } + + return *(sc->bufr++); +} + +static scanner *mkscanner_file(FILE *f) +{ + S *sc = (S *) X(mkscanner)(sizeof(S), getchr_file); + sc->f = f; + sc->bufr = sc->bufw = sc->buf; + return &sc->super; +} + +int X(import_wisdom_from_file)(FILE *input_file) +{ + scanner *s = mkscanner_file(input_file); + planner *plnr = X(the_planner)(); + int ret = plnr->adt->imprt(plnr, s); + X(scanner_destroy)(s); + return ret; +} + +int X(import_wisdom_from_filename)(const char *filename) +{ + FILE *f = fopen(filename, "r"); + int ret; + if (!f) return 0; /* error opening file */ + ret = X(import_wisdom_from_file)(f); + if (fclose(f)) ret = 0; /* error closing file */ + return ret; +} diff --git a/examples/Integration_with_fftw/fftw/api/import-wisdom-from-string.c b/examples/Integration_with_fftw/fftw/api/import-wisdom-from-string.c new file mode 100644 index 0000000..9eb3a0b --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/import-wisdom-from-string.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +typedef struct { + scanner super; + const char *s; +} S_str; + +static int getchr_str(scanner * sc_) +{ + S_str *sc = (S_str *) sc_; + if (!*sc->s) + return EOF; + return *sc->s++; +} + +static scanner *mkscanner_str(const char *s) +{ + S_str *sc = (S_str *) X(mkscanner)(sizeof(S_str), getchr_str); + sc->s = s; + return &sc->super; +} + +int X(import_wisdom_from_string)(const char *input_string) +{ + scanner *s = mkscanner_str(input_string); + planner *plnr = X(the_planner)(); + int ret = plnr->adt->imprt(plnr, s); + X(scanner_destroy)(s); + return ret; +} diff --git a/examples/Integration_with_fftw/fftw/api/import-wisdom.c b/examples/Integration_with_fftw/fftw/api/import-wisdom.c new file mode 100644 index 0000000..834fc04 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/import-wisdom.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +typedef struct { + scanner super; + int (*read_char)(void *); + void *data; +} S; + +static int getchr_generic(scanner * s_) +{ + S *s = (S *) s_; + return (s->read_char)(s->data); +} + +int X(import_wisdom)(int (*read_char)(void *), void *data) +{ + S *s = (S *) X(mkscanner)(sizeof(S), getchr_generic); + planner *plnr = X(the_planner)(); + int ret; + + s->read_char = read_char; + s->data = data; + ret = plnr->adt->imprt(plnr, (scanner *) s); + X(scanner_destroy)((scanner *) s); + return ret; +} diff --git a/examples/Integration_with_fftw/fftw/api/malloc.c b/examples/Integration_with_fftw/fftw/api/malloc.c new file mode 100644 index 0000000..3994b4a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/malloc.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + + +void *X(malloc)(size_t n) +{ + return X(kernel_malloc)(n); +} + +void X(free)(void *p) +{ + X(kernel_free)(p); +} + +/* The following two routines are mainly for the convenience of + the Fortran 2003 API, although C users may find them convienent + as well. The problem is that, although Fortran 2003 has a + c_sizeof intrinsic that is equivalent to sizeof, it is broken + in some gfortran versions, and in any case is a bit unnatural + in a Fortran context. So we provide routines to allocate real + and complex arrays, which are all that are really needed by FFTW. */ + +R *X(alloc_real)(size_t n) +{ + return (R *) X(malloc)(sizeof(R) * n); +} + +C *X(alloc_complex)(size_t n) +{ + return (C *) X(malloc)(sizeof(C) * n); +} diff --git a/examples/Integration_with_fftw/fftw/api/map-r2r-kind.c b/examples/Integration_with_fftw/fftw/api/map-r2r-kind.c new file mode 100644 index 0000000..c17c69e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/map-r2r-kind.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +rdft_kind *X(map_r2r_kind)(int rank, const X(r2r_kind) * kind) +{ + int i; + rdft_kind *k; + + A(FINITE_RNK(rank)); + k = (rdft_kind *) MALLOC((unsigned)rank * sizeof(rdft_kind), PROBLEMS); + for (i = 0; i < rank; ++i) { + rdft_kind m; + switch (kind[i]) { + case FFTW_R2HC: m = R2HC; break; + case FFTW_HC2R: m = HC2R; break; + case FFTW_DHT: m = DHT; break; + case FFTW_REDFT00: m = REDFT00; break; + case FFTW_REDFT01: m = REDFT01; break; + case FFTW_REDFT10: m = REDFT10; break; + case FFTW_REDFT11: m = REDFT11; break; + case FFTW_RODFT00: m = RODFT00; break; + case FFTW_RODFT01: m = RODFT01; break; + case FFTW_RODFT10: m = RODFT10; break; + case FFTW_RODFT11: m = RODFT11; break; + default: m = R2HC; A(0); + } + k[i] = m; + } + return k; +} diff --git a/examples/Integration_with_fftw/fftw/api/mapflags.c b/examples/Integration_with_fftw/fftw/api/mapflags.c new file mode 100644 index 0000000..de8d8df --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mapflags.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include + +/* a flag operation: x is either a flag, in which case xm == 0, or + a mask, in which case xm == x; using this we can compactly code + the various bit operations via (flags & x) ^ xm or (flags | x) ^ xm. */ +typedef struct { + unsigned x, xm; +} flagmask; + +typedef struct { + flagmask flag; + flagmask op; +} flagop; + +#define FLAGP(f, msk)(((f) & (msk).x) ^ (msk).xm) +#define OP(f, msk)(((f) | (msk).x) ^ (msk).xm) + +#define YES(x) {x, 0} +#define NO(x) {x, x} +#define IMPLIES(predicate, consequence) { predicate, consequence } +#define EQV(a, b) IMPLIES(YES(a), YES(b)), IMPLIES(NO(a), NO(b)) +#define NEQV(a, b) IMPLIES(YES(a), NO(b)), IMPLIES(NO(a), YES(b)) + +static void map_flags(unsigned *iflags, unsigned *oflags, + const flagop flagmap[], size_t nmap) +{ + size_t i; + for (i = 0; i < nmap; ++i) + if (FLAGP(*iflags, flagmap[i].flag)) + *oflags = OP(*oflags, flagmap[i].op); +} + +/* encoding of the planner timelimit into a BITS_FOR_TIMELIMIT-bits + nonnegative integer, such that we can still view the integer as + ``impatience'': higher means *lower* time limit, and 0 is the + highest possible value (about 1 year of calendar time) */ +static unsigned timelimit_to_flags(double timelimit) +{ + const double tmax = 365 * 24 * 3600; + const double tstep = 1.05; + const int nsteps = (1 << BITS_FOR_TIMELIMIT); + int x; + + if (timelimit < 0 || timelimit >= tmax) + return 0; + if (timelimit <= 1.0e-10) + return nsteps - 1; + + x = (int) (0.5 + (log(tmax / timelimit) / log(tstep))); + + if (x < 0) x = 0; + if (x >= nsteps) x = nsteps - 1; + return x; +} + +void X(mapflags)(planner *plnr, unsigned flags) +{ + unsigned l, u, t; + + /* map of api flags -> api flags, to implement consistency rules + and combination flags */ + const flagop self_flagmap[] = { + /* in some cases (notably for halfcomplex->real transforms), + DESTROY_INPUT is the default, so we need to support + an inverse flag to disable it. + + (PRESERVE, DESTROY) -> (PRESERVE, DESTROY) + (0, 0) (1, 0) + (0, 1) (0, 1) + (1, 0) (1, 0) + (1, 1) (1, 0) + */ + IMPLIES(YES(FFTW_PRESERVE_INPUT), NO(FFTW_DESTROY_INPUT)), + IMPLIES(NO(FFTW_DESTROY_INPUT), YES(FFTW_PRESERVE_INPUT)), + + IMPLIES(YES(FFTW_EXHAUSTIVE), YES(FFTW_PATIENT)), + + IMPLIES(YES(FFTW_ESTIMATE), NO(FFTW_PATIENT)), + IMPLIES(YES(FFTW_ESTIMATE), + YES(FFTW_ESTIMATE_PATIENT + | FFTW_NO_INDIRECT_OP + | FFTW_ALLOW_PRUNING)), + + IMPLIES(NO(FFTW_EXHAUSTIVE), + YES(FFTW_NO_SLOW)), + + /* a canonical set of fftw2-like impatience flags */ + IMPLIES(NO(FFTW_PATIENT), + YES(FFTW_NO_VRECURSE + | FFTW_NO_RANK_SPLITS + | FFTW_NO_VRANK_SPLITS + | FFTW_NO_NONTHREADED + | FFTW_NO_DFT_R2HC + | FFTW_NO_FIXED_RADIX_LARGE_N + | FFTW_BELIEVE_PCOST)) + }; + + /* map of (processed) api flags to internal problem/planner flags */ + const flagop l_flagmap[] = { + EQV(FFTW_PRESERVE_INPUT, NO_DESTROY_INPUT), + EQV(FFTW_NO_SIMD, NO_SIMD), + EQV(FFTW_CONSERVE_MEMORY, CONSERVE_MEMORY), + EQV(FFTW_NO_BUFFERING, NO_BUFFERING), + NEQV(FFTW_ALLOW_LARGE_GENERIC, NO_LARGE_GENERIC) + }; + + const flagop u_flagmap[] = { + IMPLIES(YES(FFTW_EXHAUSTIVE), NO(0xFFFFFFFF)), + IMPLIES(NO(FFTW_EXHAUSTIVE), YES(NO_UGLY)), + + /* the following are undocumented, "beyond-guru" flags that + require some understanding of FFTW internals */ + EQV(FFTW_ESTIMATE_PATIENT, ESTIMATE), + EQV(FFTW_ALLOW_PRUNING, ALLOW_PRUNING), + EQV(FFTW_BELIEVE_PCOST, BELIEVE_PCOST), + EQV(FFTW_NO_DFT_R2HC, NO_DFT_R2HC), + EQV(FFTW_NO_NONTHREADED, NO_NONTHREADED), + EQV(FFTW_NO_INDIRECT_OP, NO_INDIRECT_OP), + EQV(FFTW_NO_RANK_SPLITS, NO_RANK_SPLITS), + EQV(FFTW_NO_VRANK_SPLITS, NO_VRANK_SPLITS), + EQV(FFTW_NO_VRECURSE, NO_VRECURSE), + EQV(FFTW_NO_SLOW, NO_SLOW), + EQV(FFTW_NO_FIXED_RADIX_LARGE_N, NO_FIXED_RADIX_LARGE_N) + }; + + map_flags(&flags, &flags, self_flagmap, NELEM(self_flagmap)); + + l = u = 0; + map_flags(&flags, &l, l_flagmap, NELEM(l_flagmap)); + map_flags(&flags, &u, u_flagmap, NELEM(u_flagmap)); + + /* enforce l <= u */ + PLNR_L(plnr) = l; + PLNR_U(plnr) = u | l; + + /* assert that the conversion didn't lose bits */ + A(PLNR_L(plnr) == l); + A(PLNR_U(plnr) == (u | l)); + + /* compute flags representation of the timelimit */ + t = timelimit_to_flags(plnr->timelimit); + + PLNR_TIMELIMIT_IMPATIENCE(plnr) = t; + A(PLNR_TIMELIMIT_IMPATIENCE(plnr) == t); +} diff --git a/examples/Integration_with_fftw/fftw/api/mkprinter-file.c b/examples/Integration_with_fftw/fftw/api/mkprinter-file.c new file mode 100644 index 0000000..df44b2f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mkprinter-file.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include + +#define BUFSZ 256 + +typedef struct { + printer super; + FILE *f; + char buf[BUFSZ]; + char *bufw; +} P; + +static void myflush(P *p) +{ + fwrite(p->buf, 1, p->bufw - p->buf, p->f); + p->bufw = p->buf; +} + +static void myputchr(printer *p_, char c) +{ + P *p = (P *) p_; + if (p->bufw >= p->buf + BUFSZ) + myflush(p); + *p->bufw++ = c; +} + +static void mycleanup(printer *p_) +{ + P *p = (P *) p_; + myflush(p); +} + +printer *X(mkprinter_file)(FILE *f) +{ + P *p = (P *) X(mkprinter)(sizeof(P), myputchr, mycleanup); + p->f = f; + p->bufw = p->buf; + return &p->super; +} diff --git a/examples/Integration_with_fftw/fftw/api/mkprinter-str.c b/examples/Integration_with_fftw/fftw/api/mkprinter-str.c new file mode 100644 index 0000000..142fd62 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mkprinter-str.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +typedef struct { + printer super; + size_t *cnt; +} P_cnt; + +static void putchr_cnt(printer * p_, char c) +{ + P_cnt *p = (P_cnt *) p_; + UNUSED(c); + ++*p->cnt; +} + +printer *X(mkprinter_cnt)(size_t *cnt) +{ + P_cnt *p = (P_cnt *) X(mkprinter)(sizeof(P_cnt), putchr_cnt, 0); + p->cnt = cnt; + *cnt = 0; + return &p->super; +} + +typedef struct { + printer super; + char *s; +} P_str; + +static void putchr_str(printer * p_, char c) +{ + P_str *p = (P_str *) p_; + *p->s++ = c; + *p->s = 0; +} + +printer *X(mkprinter_str)(char *s) +{ + P_str *p = (P_str *) X(mkprinter)(sizeof(P_str), putchr_str, 0); + p->s = s; + *s = 0; + return &p->super; +} diff --git a/examples/Integration_with_fftw/fftw/api/mktensor-iodims.c b/examples/Integration_with_fftw/fftw/api/mktensor-iodims.c new file mode 100644 index 0000000..ae5924e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mktensor-iodims.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "mktensor-iodims.h" diff --git a/examples/Integration_with_fftw/fftw/api/mktensor-iodims.h b/examples/Integration_with_fftw/fftw/api/mktensor-iodims.h new file mode 100644 index 0000000..cdedd39 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mktensor-iodims.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +tensor *MKTENSOR_IODIMS(int rank, const IODIM *dims, int is, int os) +{ + int i; + tensor *x = X(mktensor)(rank); + + if (FINITE_RNK(rank)) { + for (i = 0; i < rank; ++i) { + x->dims[i].n = dims[i].n; + x->dims[i].is = dims[i].is * is; + x->dims[i].os = dims[i].os * os; + } + } + return x; +} + +static int iodims_kosherp(int rank, const IODIM *dims, int allow_minfty) +{ + int i; + + if (rank < 0) return 0; + + if (allow_minfty) { + if (!FINITE_RNK(rank)) return 1; + for (i = 0; i < rank; ++i) + if (dims[i].n < 0) return 0; + } else { + if (!FINITE_RNK(rank)) return 0; + for (i = 0; i < rank; ++i) + if (dims[i].n <= 0) return 0; + } + + return 1; +} + +int GURU_KOSHERP(int rank, const IODIM *dims, + int howmany_rank, const IODIM *howmany_dims) +{ + return (iodims_kosherp(rank, dims, 0) && + iodims_kosherp(howmany_rank, howmany_dims, 1)); +} diff --git a/examples/Integration_with_fftw/fftw/api/mktensor-iodims64.c b/examples/Integration_with_fftw/fftw/api/mktensor-iodims64.c new file mode 100644 index 0000000..df5b4e0 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mktensor-iodims64.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "mktensor-iodims.h" diff --git a/examples/Integration_with_fftw/fftw/api/mktensor-rowmajor.c b/examples/Integration_with_fftw/fftw/api/mktensor-rowmajor.c new file mode 100644 index 0000000..d470356 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/mktensor-rowmajor.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +tensor *X(mktensor_rowmajor)(int rnk, const int *n, + const int *niphys, const int *nophys, + int is, int os) +{ + tensor *x = X(mktensor)(rnk); + + if (FINITE_RNK(rnk) && rnk > 0) { + int i; + + A(n && niphys && nophys); + x->dims[rnk - 1].is = is; + x->dims[rnk - 1].os = os; + x->dims[rnk - 1].n = n[rnk - 1]; + for (i = rnk - 1; i > 0; --i) { + x->dims[i - 1].is = x->dims[i].is * niphys[i]; + x->dims[i - 1].os = x->dims[i].os * nophys[i]; + x->dims[i - 1].n = n[i - 1]; + } + } + return x; +} + +static int rowmajor_kosherp(int rnk, const int *n) +{ + int i; + + if (!FINITE_RNK(rnk)) return 0; + if (rnk < 0) return 0; + + for (i = 0; i < rnk; ++i) + if (n[i] <= 0) return 0; + + return 1; +} + +int X(many_kosherp)(int rnk, const int *n, int howmany) +{ + return (howmany >= 0) && rowmajor_kosherp(rnk, n); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-1d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-1d.c new file mode 100644 index 0000000..d18e08e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-1d.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +X(plan) X(plan_dft_1d)(int n, C *in, C *out, int sign, unsigned flags) +{ + return X(plan_dft)(1, &n, in, out, sign, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-2d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-2d.c new file mode 100644 index 0000000..53c68cd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-2d.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +X(plan) X(plan_dft_2d)(int nx, int ny, C *in, C *out, int sign, unsigned flags) +{ + int n[2]; + n[0] = nx; + n[1] = ny; + return X(plan_dft)(2, n, in, out, sign, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-3d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-3d.c new file mode 100644 index 0000000..37e9faf --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-3d.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +X(plan) X(plan_dft_3d)(int nx, int ny, int nz, + C *in, C *out, int sign, unsigned flags) +{ + int n[3]; + n[0] = nx; + n[1] = ny; + n[2] = nz; + return X(plan_dft)(3, n, in, out, sign, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-1d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-1d.c new file mode 100644 index 0000000..c0f6ba0 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-1d.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_c2r_1d)(int n, C *in, R *out, unsigned flags) +{ + return X(plan_dft_c2r)(1, &n, in, out, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-2d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-2d.c new file mode 100644 index 0000000..e9dda36 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-2d.c @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_c2r_2d)(int nx, int ny, C *in, R *out, unsigned flags) +{ + int n[2]; + n[0] = nx; + n[1] = ny; + return X(plan_dft_c2r)(2, n, in, out, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-3d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-3d.c new file mode 100644 index 0000000..be9dc9a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r-3d.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_c2r_3d)(int nx, int ny, int nz, + C *in, R *out, unsigned flags) +{ + int n[3]; + n[0] = nx; + n[1] = ny; + n[2] = nz; + return X(plan_dft_c2r)(3, n, in, out, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r.c new file mode 100644 index 0000000..00043a1 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-c2r.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_c2r)(int rank, const int *n, C *in, R *out, unsigned flags) +{ + return X(plan_many_dft_c2r)(rank, n, 1, + in, 0, 1, 1, out, 0, 1, 1, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-1d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-1d.c new file mode 100644 index 0000000..63b0db3 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-1d.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_r2c_1d)(int n, R *in, C *out, unsigned flags) +{ + return X(plan_dft_r2c)(1, &n, in, out, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-2d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-2d.c new file mode 100644 index 0000000..43000b3 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-2d.c @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_r2c_2d)(int nx, int ny, R *in, C *out, unsigned flags) +{ + int n[2]; + n[0] = nx; + n[1] = ny; + return X(plan_dft_r2c)(2, n, in, out, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-3d.c b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-3d.c new file mode 100644 index 0000000..1cd5b64 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c-3d.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_r2c_3d)(int nx, int ny, int nz, + R *in, C *out, unsigned flags) +{ + int n[3]; + n[0] = nx; + n[1] = ny; + n[2] = nz; + return X(plan_dft_r2c)(3, n, in, out, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c.c new file mode 100644 index 0000000..0b19459 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft-r2c.c @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft_r2c)(int rank, const int *n, R *in, C *out, unsigned flags) +{ + return X(plan_many_dft_r2c)(rank, n, 1, + in, 0, 1, 1, + out, 0, 1, 1, + flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-dft.c b/examples/Integration_with_fftw/fftw/api/plan-dft.c new file mode 100644 index 0000000..921af71 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-dft.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_dft)(int rank, const int *n, + C *in, C *out, int sign, unsigned flags) +{ + return X(plan_many_dft)(rank, n, 1, + in, 0, 1, 1, + out, 0, 1, 1, + sign, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-c2r.c new file mode 100644 index 0000000..00226e9 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-c2r.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-dft-c2r.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-dft-c2r.h b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-c2r.h new file mode 100644 index 0000000..30879d6 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-c2r.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) XGURU(dft_c2r)(int rank, const IODIM *dims, + int howmany_rank, const IODIM *howmany_dims, + C *in, R *out, unsigned flags) +{ + R *ri, *ii; + + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + EXTRACT_REIM(FFT_SIGN, in, &ri, &ii); + + if (out != ri) + flags |= FFTW_DESTROY_INPUT; + return X(mkapiplan)( + 0, flags, + X(mkproblem_rdft2_d_3pointers)( + MKTENSOR_IODIMS(rank, dims, 2, 1), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, 2, 1), + TAINT_UNALIGNED(out, flags), + TAINT_UNALIGNED(ri, flags), + TAINT_UNALIGNED(ii, flags), HC2R)); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-r2c.c new file mode 100644 index 0000000..a88945f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-r2c.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-dft-r2c.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-dft-r2c.h b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-r2c.h new file mode 100644 index 0000000..4297696 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-dft-r2c.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) XGURU(dft_r2c)(int rank, const IODIM *dims, + int howmany_rank, + const IODIM *howmany_dims, + R *in, C *out, unsigned flags) +{ + R *ro, *io; + + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + EXTRACT_REIM(FFT_SIGN, out, &ro, &io); + + return X(mkapiplan)( + 0, flags, + X(mkproblem_rdft2_d_3pointers)( + MKTENSOR_IODIMS(rank, dims, 1, 2), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, 1, 2), + TAINT_UNALIGNED(in, flags), + TAINT_UNALIGNED(ro, flags), + TAINT_UNALIGNED(io, flags), R2HC)); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-dft.c b/examples/Integration_with_fftw/fftw/api/plan-guru-dft.c new file mode 100644 index 0000000..85873da --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-dft.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-dft.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-dft.h b/examples/Integration_with_fftw/fftw/api/plan-guru-dft.h new file mode 100644 index 0000000..9e7c836 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-dft.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +X(plan) XGURU(dft)(int rank, const IODIM *dims, + int howmany_rank, const IODIM *howmany_dims, + C *in, C *out, int sign, unsigned flags) +{ + R *ri, *ii, *ro, *io; + + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + EXTRACT_REIM(sign, in, &ri, &ii); + EXTRACT_REIM(sign, out, &ro, &io); + + return X(mkapiplan)( + sign, flags, + X(mkproblem_dft_d)(MKTENSOR_IODIMS(rank, dims, 2, 2), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, + 2, 2), + TAINT_UNALIGNED(ri, flags), + TAINT_UNALIGNED(ii, flags), + TAINT_UNALIGNED(ro, flags), + TAINT_UNALIGNED(io, flags))); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-r2r.c b/examples/Integration_with_fftw/fftw/api/plan-guru-r2r.c new file mode 100644 index 0000000..c6ebaed --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-r2r.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-r2r.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-r2r.h b/examples/Integration_with_fftw/fftw/api/plan-guru-r2r.h new file mode 100644 index 0000000..baf1048 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-r2r.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) XGURU(r2r)(int rank, const IODIM *dims, + int howmany_rank, + const IODIM *howmany_dims, + R *in, R *out, + const X(r2r_kind) * kind, unsigned flags) +{ + X(plan) p; + rdft_kind *k; + + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + k = X(map_r2r_kind)(rank, kind); + p = X(mkapiplan)( + 0, flags, + X(mkproblem_rdft_d)(MKTENSOR_IODIMS(rank, dims, 1, 1), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, + 1, 1), + TAINT_UNALIGNED(in, flags), + TAINT_UNALIGNED(out, flags), k)); + X(ifree0)(k); + return p; +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-c2r.c new file mode 100644 index 0000000..2831f02 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-c2r.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-split-dft-c2r.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-c2r.h b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-c2r.h new file mode 100644 index 0000000..69a8803 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-c2r.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) XGURU(split_dft_c2r)(int rank, const IODIM *dims, + int howmany_rank, const IODIM *howmany_dims, + R *ri, R *ii, R *out, unsigned flags) +{ + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + if (out != ri) + flags |= FFTW_DESTROY_INPUT; + return X(mkapiplan)( + 0, flags, + X(mkproblem_rdft2_d_3pointers)( + MKTENSOR_IODIMS(rank, dims, 1, 1), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, 1, 1), + TAINT_UNALIGNED(out, flags), + TAINT_UNALIGNED(ri, flags), + TAINT_UNALIGNED(ii, flags), HC2R)); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-r2c.c new file mode 100644 index 0000000..32cac9e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-r2c.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-split-dft-r2c.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-r2c.h b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-r2c.h new file mode 100644 index 0000000..e095551 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft-r2c.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) XGURU(split_dft_r2c)(int rank, const IODIM *dims, + int howmany_rank, + const IODIM *howmany_dims, + R *in, R *ro, R *io, unsigned flags) +{ + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + return X(mkapiplan)( + 0, flags, + X(mkproblem_rdft2_d_3pointers)( + MKTENSOR_IODIMS(rank, dims, 1, 1), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, 1, 1), + TAINT_UNALIGNED(in, flags), + TAINT_UNALIGNED(ro, flags), + TAINT_UNALIGNED(io, flags), R2HC)); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft.c b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft.c new file mode 100644 index 0000000..328aa7d --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft.c @@ -0,0 +1,2 @@ +#include "guru.h" +#include "plan-guru-split-dft.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft.h b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft.h new file mode 100644 index 0000000..0f7a963 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru-split-dft.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +X(plan) XGURU(split_dft)(int rank, const IODIM *dims, + int howmany_rank, const IODIM *howmany_dims, + R *ri, R *ii, R *ro, R *io, unsigned flags) +{ + if (!GURU_KOSHERP(rank, dims, howmany_rank, howmany_dims)) return 0; + + return X(mkapiplan)( + ii - ri == 1 && io - ro == 1 ? FFT_SIGN : -FFT_SIGN, flags, + X(mkproblem_dft_d)(MKTENSOR_IODIMS(rank, dims, 1, 1), + MKTENSOR_IODIMS(howmany_rank, howmany_dims, + 1, 1), + TAINT_UNALIGNED(ri, flags), + TAINT_UNALIGNED(ii, flags), + TAINT_UNALIGNED(ro, flags), + TAINT_UNALIGNED(io, flags))); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-dft-c2r.c new file mode 100644 index 0000000..6e2dddf --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-dft-c2r.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-dft-c2r.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-dft-r2c.c new file mode 100644 index 0000000..a9e776c --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-dft-r2c.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-dft-r2c.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-dft.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-dft.c new file mode 100644 index 0000000..5ea218f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-dft.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-dft.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-r2r.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-r2r.c new file mode 100644 index 0000000..46012dd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-r2r.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-r2r.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft-c2r.c new file mode 100644 index 0000000..f20d12c --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft-c2r.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-split-dft-c2r.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft-r2c.c new file mode 100644 index 0000000..3dfa81a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft-r2c.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-split-dft-r2c.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft.c b/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft.c new file mode 100644 index 0000000..25b94ae --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-guru64-split-dft.c @@ -0,0 +1,2 @@ +#include "guru64.h" +#include "plan-guru-split-dft.h" diff --git a/examples/Integration_with_fftw/fftw/api/plan-many-dft-c2r.c b/examples/Integration_with_fftw/fftw/api/plan-many-dft-c2r.c new file mode 100644 index 0000000..5f719a6 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-many-dft-c2r.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) X(plan_many_dft_c2r)(int rank, const int *n, + int howmany, + C *in, const int *inembed, + int istride, int idist, + R *out, const int *onembed, + int ostride, int odist, unsigned flags) +{ + R *ri, *ii; + int *nfi, *nfo; + int inplace; + X(plan) p; + + if (!X(many_kosherp)(rank, n, howmany)) return 0; + + EXTRACT_REIM(FFT_SIGN, in, &ri, &ii); + inplace = out == ri; + + if (!inplace) + flags |= FFTW_DESTROY_INPUT; + p = X(mkapiplan)( + 0, flags, + X(mkproblem_rdft2_d_3pointers)( + X(mktensor_rowmajor)( + rank, n, + X(rdft2_pad)(rank, n, inembed, inplace, 1, &nfi), + X(rdft2_pad)(rank, n, onembed, inplace, 0, &nfo), + 2 * istride, ostride), + X(mktensor_1d)(howmany, 2 * idist, odist), + TAINT_UNALIGNED(out, flags), + TAINT_UNALIGNED(ri, flags), TAINT_UNALIGNED(ii, flags), + HC2R)); + + X(ifree0)(nfi); + X(ifree0)(nfo); + return p; +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-many-dft-r2c.c b/examples/Integration_with_fftw/fftw/api/plan-many-dft-r2c.c new file mode 100644 index 0000000..ad05231 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-many-dft-r2c.c @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +X(plan) X(plan_many_dft_r2c)(int rank, const int *n, + int howmany, + R *in, const int *inembed, + int istride, int idist, + C *out, const int *onembed, + int ostride, int odist, unsigned flags) +{ + R *ro, *io; + int *nfi, *nfo; + int inplace; + X(plan) p; + + if (!X(many_kosherp)(rank, n, howmany)) return 0; + + EXTRACT_REIM(FFT_SIGN, out, &ro, &io); + inplace = in == ro; + + p = X(mkapiplan)( + 0, flags, + X(mkproblem_rdft2_d_3pointers)( + X(mktensor_rowmajor)( + rank, n, + X(rdft2_pad)(rank, n, inembed, inplace, 0, &nfi), + X(rdft2_pad)(rank, n, onembed, inplace, 1, &nfo), + istride, 2 * ostride), + X(mktensor_1d)(howmany, idist, 2 * odist), + TAINT_UNALIGNED(in, flags), + TAINT_UNALIGNED(ro, flags), TAINT_UNALIGNED(io, flags), + R2HC)); + + X(ifree0)(nfi); + X(ifree0)(nfo); + return p; +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-many-dft.c b/examples/Integration_with_fftw/fftw/api/plan-many-dft.c new file mode 100644 index 0000000..69643cd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-many-dft.c @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "dft/dft.h" + +#define N0(nembed)((nembed) ? (nembed) : n) + +X(plan) X(plan_many_dft)(int rank, const int *n, + int howmany, + C *in, const int *inembed, + int istride, int idist, + C *out, const int *onembed, + int ostride, int odist, int sign, unsigned flags) +{ + R *ri, *ii, *ro, *io; + + if (!X(many_kosherp)(rank, n, howmany)) return 0; + + EXTRACT_REIM(sign, in, &ri, &ii); + EXTRACT_REIM(sign, out, &ro, &io); + + return + X(mkapiplan)(sign, flags, + X(mkproblem_dft_d)( + X(mktensor_rowmajor)(rank, n, + N0(inembed), N0(onembed), + 2 * istride, 2 * ostride), + X(mktensor_1d)(howmany, 2 * idist, 2 * odist), + TAINT_UNALIGNED(ri, flags), + TAINT_UNALIGNED(ii, flags), + TAINT_UNALIGNED(ro, flags), + TAINT_UNALIGNED(io, flags))); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-many-r2r.c b/examples/Integration_with_fftw/fftw/api/plan-many-r2r.c new file mode 100644 index 0000000..6cc7a96 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-many-r2r.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" +#include "rdft/rdft.h" + +#define N0(nembed)((nembed) ? (nembed) : n) + +X(plan) X(plan_many_r2r)(int rank, const int *n, + int howmany, + R *in, const int *inembed, + int istride, int idist, + R *out, const int *onembed, + int ostride, int odist, + const X(r2r_kind) * kind, unsigned flags) +{ + X(plan) p; + rdft_kind *k; + + if (!X(many_kosherp)(rank, n, howmany)) return 0; + + k = X(map_r2r_kind)(rank, kind); + p = X(mkapiplan)( + 0, flags, + X(mkproblem_rdft_d)(X(mktensor_rowmajor)(rank, n, + N0(inembed), N0(onembed), + istride, ostride), + X(mktensor_1d)(howmany, idist, odist), + TAINT_UNALIGNED(in, flags), + TAINT_UNALIGNED(out, flags), k)); + X(ifree0)(k); + return p; +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-r2r-1d.c b/examples/Integration_with_fftw/fftw/api/plan-r2r-1d.c new file mode 100644 index 0000000..1f7e033 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-r2r-1d.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_r2r_1d)(int n, R *in, R *out, X(r2r_kind) kind, unsigned flags) +{ + return X(plan_r2r)(1, &n, in, out, &kind, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-r2r-2d.c b/examples/Integration_with_fftw/fftw/api/plan-r2r-2d.c new file mode 100644 index 0000000..3e6004e --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-r2r-2d.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_r2r_2d)(int nx, int ny, R *in, R *out, + X(r2r_kind) kindx, X(r2r_kind) kindy, unsigned flags) +{ + int n[2]; + X(r2r_kind) kind[2]; + n[0] = nx; + n[1] = ny; + kind[0] = kindx; + kind[1] = kindy; + return X(plan_r2r)(2, n, in, out, kind, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-r2r-3d.c b/examples/Integration_with_fftw/fftw/api/plan-r2r-3d.c new file mode 100644 index 0000000..77ebefc --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-r2r-3d.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_r2r_3d)(int nx, int ny, int nz, + R *in, R *out, X(r2r_kind) kindx, + X(r2r_kind) kindy, X(r2r_kind) kindz, unsigned flags) +{ + int n[3]; + X(r2r_kind) kind[3]; + n[0] = nx; + n[1] = ny; + n[2] = nz; + kind[0] = kindx; + kind[1] = kindy; + kind[2] = kindz; + return X(plan_r2r)(3, n, in, out, kind, flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/plan-r2r.c b/examples/Integration_with_fftw/fftw/api/plan-r2r.c new file mode 100644 index 0000000..4c4b9dd --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/plan-r2r.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +X(plan) X(plan_r2r)(int rank, const int *n, R *in, R *out, + const X(r2r_kind) * kind, unsigned flags) +{ + return X(plan_many_r2r)(rank, n, 1, in, 0, 1, 1, out, 0, 1, 1, kind, + flags); +} diff --git a/examples/Integration_with_fftw/fftw/api/print-plan.c b/examples/Integration_with_fftw/fftw/api/print-plan.c new file mode 100644 index 0000000..6b38816 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/print-plan.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +char *X(sprint_plan)(const X(plan) p) +{ + size_t cnt; + char *s; + plan *pln = p->pln; + + printer *pr = X(mkprinter_cnt)(&cnt); + pln->adt->print(pln, pr); + X(printer_destroy)(pr); + + s = (char *) malloc(sizeof(char) * (cnt + 1)); + if (s) { + pr = X(mkprinter_str)(s); + pln->adt->print(pln, pr); + X(printer_destroy)(pr); + } + return s; +} + +void X(fprint_plan)(const X(plan) p, FILE *output_file) +{ + printer *pr = X(mkprinter_file)(output_file); + plan *pln = p->pln; + pln->adt->print(pln, pr); + X(printer_destroy)(pr); +} + +void X(print_plan)(const X(plan) p) +{ + X(fprint_plan)(p, stdout); +} diff --git a/examples/Integration_with_fftw/fftw/api/rdft2-pad.c b/examples/Integration_with_fftw/fftw/api/rdft2-pad.c new file mode 100644 index 0000000..5e1026f --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/rdft2-pad.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include +#include "api/api.h" + +const int *X(rdft2_pad)(int rnk, const int *n, const int *nembed, + int inplace, int cmplx, int **nfree) +{ + A(FINITE_RNK(rnk)); + *nfree = 0; + if (!nembed && rnk > 0) { + if (inplace || cmplx) { + int *np = (int *) MALLOC(sizeof(int) * (unsigned)rnk, PROBLEMS); + memcpy(np, n, sizeof(int) * (unsigned)rnk); + np[rnk - 1] = (n[rnk - 1] / 2 + 1) * (1 + !cmplx); + nembed = *nfree = np; + } else + nembed = n; + } + return nembed; +} diff --git a/examples/Integration_with_fftw/fftw/api/the-planner.c b/examples/Integration_with_fftw/fftw/api/the-planner.c new file mode 100644 index 0000000..0313a26 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/the-planner.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "api/api.h" + +static planner *plnr = 0; + +/* create the planner for the rest of the API */ +planner *X(the_planner)(void) +{ + if (!plnr) { + plnr = X(mkplanner)(); + X(configure_planner)(plnr); + } + + return plnr; +} + +void X(cleanup)(void) +{ + if (plnr) { + X(planner_destroy)(plnr); + plnr = 0; + } +} + +void X(set_timelimit)(double tlim) +{ + /* PLNR is not necessarily initialized when this function is + called, so use X(the_planner)() */ + X(the_planner)()->timelimit = tlim; +} diff --git a/examples/Integration_with_fftw/fftw/api/version.c b/examples/Integration_with_fftw/fftw/api/version.c new file mode 100644 index 0000000..4f14de1 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/version.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + + +#include "api/api.h" + +const char X(cc)[] = FFTW_CC; + +/* fftw <= 3.2.2 had special compiler flags for codelets, which are + not used anymore. We keep this variable around because it is part + of the ABI */ +const char X(codelet_optim)[] = ""; + +const char X(version)[] = PACKAGE "-" PACKAGE_VERSION + +#if HAVE_FMA + "-fma" +#endif + +#if HAVE_SSE2 + "-sse2" +#endif + + /* Earlier versions of FFTW only provided 256-bit AVX, which meant + * it was important to also enable sse2 for best performance for + * short transforms. Since some programs check for this and warn + * the user, we explicitly add avx_128 to the suffix to emphasize + * that this version is more capable. + */ + +#if HAVE_AVX + "-avx" +#endif + +#if HAVE_AVX_128_FMA + "-avx_128_fma" +#endif + +#if HAVE_AVX2 + "-avx2-avx2_128" +#endif + +#if HAVE_AVX512 + "-avx512" +#endif + +#if HAVE_KCVI + "-kcvi" +#endif + +#if HAVE_ALTIVEC + "-altivec" +#endif + +#if HAVE_VSX + "-vsx" +#endif + +#if HAVE_NEON + "-neon" +#endif + +#if defined(HAVE_GENERIC_SIMD128) + "-generic_simd128" +#endif + +#if defined(HAVE_GENERIC_SIMD256) + "-generic_simd256" +#endif + +; diff --git a/examples/Integration_with_fftw/fftw/api/x77.h b/examples/Integration_with_fftw/fftw/api/x77.h new file mode 100644 index 0000000..9a1ab83 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/api/x77.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2003, 2007-14 Matteo Frigo + * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* Fortran-like (e.g. as in BLAS) type prefixes for F77 interface */ +#if defined(FFTW_SINGLE) +# define x77(name) CONCAT(sfftw_, name) +# define X77(NAME) CONCAT(SFFTW_, NAME) +#elif defined(FFTW_LDOUBLE) +/* FIXME: what is best? BLAS uses D..._X, apparently. Ugh. */ +# define x77(name) CONCAT(lfftw_, name) +# define X77(NAME) CONCAT(LFFTW_, NAME) +#elif defined(FFTW_QUAD) +# define x77(name) CONCAT(qfftw_, name) +# define X77(NAME) CONCAT(QFFTW_, NAME) +#else +# define x77(name) CONCAT(dfftw_, name) +# define X77(NAME) CONCAT(DFFTW_, NAME) +#endif + +/* If F77_FUNC is not defined and the user didn't explicitly specify + --disable-fortran, then make our best guess at default wrappers + (since F77_FUNC_EQUIV should not be defined in this case, we + will use both double-underscored g77 wrappers and single- or + non-underscored wrappers). This saves us from dealing with + complaints in the cases where the user failed to specify + an F77 compiler or wrapper detection failed for some reason. */ +#if !defined(F77_FUNC) && !defined(DISABLE_FORTRAN) +# if (defined(_WIN32) || defined(__WIN32__)) && !defined(WINDOWS_F77_MANGLING) +# define WINDOWS_F77_MANGLING 1 +# endif +# if defined(_AIX) || defined(__hpux) || defined(hpux) +# define F77_FUNC(a, A) a +# elif defined(CRAY) || defined(_CRAY) || defined(_UNICOS) +# define F77_FUNC(a, A) A +# else +# define F77_FUNC(a, A) a ## _ +# endif +# define F77_FUNC_(a, A) a ## __ +#endif + +#if defined(WITH_G77_WRAPPERS) && !defined(DISABLE_FORTRAN) +# undef F77_FUNC_ +# define F77_FUNC_(a, A) a ## __ +# undef F77_FUNC_EQUIV +#endif + +/* annoying Windows syntax for shared-library declarations */ +#if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__)) +# define FFTW_VOIDFUNC __declspec(dllexport) void +#else +# define FFTW_VOIDFUNC void +#endif diff --git a/examples/Integration_with_fftw/fftw/fftw++.cc b/examples/Integration_with_fftw/fftw/fftw++.cc new file mode 100644 index 0000000..fa71015 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/fftw++.cc @@ -0,0 +1,75 @@ +#include +#include +#include "fftw++.h" + +using namespace std; + +namespace fftwpp { + +const double fftw::twopi=2.0*acos(-1.0); + +// User settings: +unsigned int fftw::effort=FFTW_MEASURE; +const char *fftw::WisdomName="wisdom3.txt"; +unsigned int fftw::maxthreads=1; +double fftw::testseconds=0.2; // Time limit for threading efficiency tests + +fftw_plan (*fftw::planner)(fftw *f, Complex *in, Complex *out)=Planner; + +const char *fftw::oddshift="Shift is not implemented for odd nx"; +const char *inout= + "constructor and call must be both in place or both out of place"; + +fft1d::Table fft1d::threadtable; +mfft1d::Table mfft1d::threadtable; +rcfft1d::Table rcfft1d::threadtable; +crfft1d::Table crfft1d::threadtable; +mrcfft1d::Table mrcfft1d::threadtable; +mcrfft1d::Table mcrfft1d::threadtable; +fft2d::Table fft2d::threadtable; + +void LoadWisdom() +{ + static bool Wise=false; + if(!Wise) { + ifstream ifWisdom; + ifWisdom.open(fftw::WisdomName); + ostringstream wisdom; + wisdom << ifWisdom.rdbuf(); + ifWisdom.close(); + const string& s=wisdom.str(); + fftw_import_wisdom_from_string(s.c_str()); + Wise=true; + } +} + +void SaveWisdom() +{ + ofstream ofWisdom; + ofWisdom.open(fftw::WisdomName); + char *wisdom=fftw_export_wisdom_to_string(); + ofWisdom << wisdom; + fftw_free(wisdom); + ofWisdom.close(); +} + +fftw_plan Planner(fftw *F, Complex *in, Complex *out) +{ + LoadWisdom(); + fftw::effort |= FFTW_WISDOM_ONLY; + fftw_plan plan=F->Plan(in,out); + fftw::effort &= !FFTW_WISDOM_ONLY; + if(!plan) { + plan=F->Plan(in,out); + SaveWisdom(); + } + return plan; +} + +ThreadBase::ThreadBase() {threads=fftw::maxthreads;} + +} + +namespace utils { +unsigned int defaultmpithreads=1; +} diff --git a/examples/Integration_with_fftw/fftw/fftw++.h b/examples/Integration_with_fftw/fftw/fftw++.h new file mode 100644 index 0000000..c3db15a --- /dev/null +++ b/examples/Integration_with_fftw/fftw/fftw++.h @@ -0,0 +1,1551 @@ +/* Fast Fourier transform C++ header class for the FFTW3 Library + Copyright (C) 2004-16 + John C. Bowman, University of Alberta + Malcolm Roberts, University of Strasbourg + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef __fftwpp_h__ +#define __fftwpp_h__ 1 + +#define __FFTWPP_H_VERSION__ 2.05 + +#include +#include +#include +#include +#include +#include + +#ifndef _OPENMP +#ifndef FFTWPP_SINGLE_THREAD +#define FFTWPP_SINGLE_THREAD +#endif +#endif + +#ifndef FFTWPP_SINGLE_THREAD +#include +#endif + +inline int get_thread_num() +{ +#ifdef FFTWPP_SINGLE_THREAD + return 0; +#else + return omp_get_thread_num(); +#endif +} + +inline int get_max_threads() +{ +#ifdef FFTWPP_SINGLE_THREAD + return 1; +#else + return omp_get_max_threads(); +#endif +} + +#ifndef FFTWPP_SINGLE_THREAD +#define PARALLEL(code) \ + if(threads > 1) { \ + _Pragma("omp parallel for num_threads(threads)") \ + code \ + } else { \ + code \ + } +#else +#define PARALLEL(code) \ + { \ + code \ + } +#endif + +#ifndef __Complex_h__ +#include +typedef std::complex Complex; +#endif + +#include "seconds.h" +#include "statistics.h" +#include "align.h" + +namespace fftwpp { + +// Obsolete names: +#define FFTWComplex ComplexAlign +#define FFTWdouble doubleAlign +#define FFTWdelete deleteAlign + +class fftw; + +extern "C" fftw_plan Planner(fftw *F, Complex *in, Complex *out); +void LoadWisdom(); +void SaveWisdom(); + +extern const char *inout; + +struct threaddata { + unsigned int threads; + double mean; + double stdev; + threaddata() : threads(0), mean(0.0), stdev(0.0) {} + threaddata(unsigned int threads, double mean, double stdev) : + threads(threads), mean(mean), stdev(stdev) {} +}; + +class fftw; + +class ThreadBase +{ +protected: + unsigned int threads; + unsigned int innerthreads; +public: + ThreadBase(); + ThreadBase(unsigned int threads) : threads(threads) {} + void Threads(unsigned int nthreads) {threads=nthreads;} + unsigned int Threads() {return threads;} + + void multithread(unsigned int nx) { + if(nx >= threads) { + innerthreads=1; + } else { + innerthreads=threads; + threads=1; + } + } +}; + +inline unsigned int realsize(unsigned int n, Complex *in, Complex *out=NULL) +{ + return (!out || in == out) ? 2*(n/2+1) : n; +} + +inline unsigned int realsize(unsigned int n, Complex *in, double *out) +{ + return realsize(n,in,(Complex *) out); +} + +inline unsigned int realsize(unsigned int n, double *in, Complex *out) +{ + return realsize(n,(Complex *) in,out); +} + +// Base clase for fft routines +// +class fftw : public ThreadBase { +protected: + unsigned int doubles; // number of double precision values in dataset + int sign; + unsigned int threads; + double norm; + + fftw_plan plan; + bool inplace; + + unsigned int Dist(unsigned int n, size_t stride, size_t dist) { + return dist ? dist : ((stride == 1) ? n : 1); + } + + static const double twopi; + +public: + static unsigned int effort; + static unsigned int maxthreads; + static double testseconds; + static const char *WisdomName; + static fftw_plan (*planner)(fftw *f, Complex *in, Complex *out); + + virtual unsigned int Threads() {return threads;} + + static const char *oddshift; + + // Inplace shift of Fourier origin to (nx/2,0) for even nx. + static void Shift(Complex *data, unsigned int nx, unsigned int ny, + unsigned int threads) { + unsigned int nyp=ny/2+1; + unsigned int stop=nx*nyp; + if(nx % 2 == 0) { + unsigned int inc=2*nyp; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=nyp; i < stop; i += inc) { + Complex *p=data+i; + for(unsigned int j=0; j < nyp; j++) p[j]=-p[j]; + } + } else { + std::cerr << oddshift << std::endl; + exit(1); + } + } + + // Out-of-place shift of Fourier origin to (nx/2,0) for even nx. + static void Shift(double *data, unsigned int nx, unsigned int ny, + unsigned int threads) { + if(nx % 2 == 0) { + unsigned int stop=nx*ny; + unsigned int inc=2*ny; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=ny; i < stop; i += inc) { + double *p=data+i; + for(unsigned int j=0; j < ny; j++) p[j]=-p[j]; + } + } else { + std::cerr << oddshift << std::endl; + exit(1); + } + } + + // Inplace shift of Fourier origin to (nx/2,ny/2,0) for even nx and ny. + static void Shift(Complex *data, unsigned int nx, unsigned int ny, + unsigned int nz, unsigned int threads) { + unsigned int nzp=nz/2+1; + unsigned int nyzp=ny*nzp; + if(nx % 2 == 0 && ny % 2 == 0) { + unsigned int pinc=2*nzp; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; i++) { + Complex *pstart=data+i*nyzp; + Complex *pstop=pstart+nyzp; + for(Complex *p=pstart+(1-(i % 2))*nzp; p < pstop; p += pinc) { + for(unsigned int k=0; k < nzp; k++) p[k]=-p[k]; + } + } + } else { + std::cerr << oddshift << " or odd ny" << std::endl; + exit(1); + } + } + + // Out-of-place shift of Fourier origin to (nx/2,ny/2,0) for even nx and ny. + static void Shift(double *data, unsigned int nx, unsigned int ny, + unsigned int nz, unsigned int threads) { + unsigned int nyz=ny*nz; + if(nx % 2 == 0 && ny % 2 == 0) { + unsigned int pinc=2*nz; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; i++) { + double *pstart=data+i*nyz; + double *pstop=pstart+nyz; + for(double *p=pstart+(1-(i % 2))*nz; p < pstop; p += pinc) { + for(unsigned int k=0; k < nz; k++) p[k]=-p[k]; + } + } + } else { + std::cerr << oddshift << " or odd ny" << std::endl; + exit(1); + } + } + + fftw() : plan(NULL) {} + fftw(unsigned int doubles, int sign, unsigned int threads, + unsigned int n=0) : + doubles(doubles), sign(sign), threads(threads), + norm(1.0/(n ? n : doubles/2)), plan(NULL) { +#ifndef FFTWPP_SINGLE_THREAD + fftw_init_threads(); +#endif + } + + virtual ~fftw() { + if(plan) fftw_destroy_plan(plan); + } + + virtual fftw_plan Plan(Complex *in, Complex *out) {return NULL;}; + + inline void CheckAlign(Complex *p, const char *s) { + if((size_t) p % sizeof(Complex) == 0) return; + std::cerr << "WARNING: " << s << " array is not " << sizeof(Complex) + << "-byte aligned: address " << p << std::endl; + } + + void noplan() { + std::cerr << "Unable to construct FFTW plan" << std::endl; + exit(1); + } + + static void planThreads(unsigned int threads) { +#ifndef FFTWPP_SINGLE_THREAD + omp_set_num_threads(threads); + fftw_plan_with_nthreads(threads); +#endif + } + + threaddata time(fftw_plan plan1, fftw_plan planT, Complex *in, Complex *out, + unsigned int Threads) { + utils::statistics S,ST; + double stop=utils::totalseconds()+testseconds; + threads=1; + plan=plan1; + fft(in,out); + threads=Threads; + plan=planT; + fft(in,out); + unsigned int N=1; + for(;;) { + double t0=utils::totalseconds(); + threads=1; + plan=plan1; + for(unsigned int i=0; i < N; ++i) + fft(in,out); + double t1=utils::totalseconds(); + threads=Threads; + plan=planT; + for(unsigned int i=0; i < N; ++i) + fft(in,out); + double t=utils::totalseconds(); + S.add(t1-t0); + ST.add(t-t1); + if(S.mean() < 100.0/CLOCKS_PER_SEC) N *= 2; + if(S.count() >= 10) { + double error=S.stdev(); + double diff=ST.mean()-S.mean(); + if(diff >= 0.0 || t > stop) { + threads=1; + plan=plan1; + fftw_destroy_plan(planT); + break; + } + if(diff < -error) { + threads=Threads; + fftw_destroy_plan(plan1); + break; + } + } + } + return threaddata(threads,S.mean(),S.stdev()); + } + + virtual threaddata lookup(bool inplace, unsigned int threads) { + return threaddata(); + } + virtual void store(bool inplace, const threaddata& data) {} + + inline Complex *CheckAlign(Complex *in, Complex *out, bool constructor=true) + { +#ifndef NO_CHECK_ALIGN + CheckAlign(in,constructor ? "constructor input" : "input"); + if(out) CheckAlign(out,constructor ? "constructor output" : "output"); + else out=in; +#else + if(!out) out=in; +#endif + return out; + } + + threaddata Setup(Complex *in, Complex *out=NULL) { + bool alloc=!in; + if(alloc) in=utils::ComplexAlign((doubles+1)/2); + out=CheckAlign(in,out); + inplace=(out==in); + + threaddata data; + unsigned int Threads=threads; + if(threads > 1) data=lookup(inplace,threads); + threads=data.threads > 0 ? data.threads : 1; + planThreads(threads); + plan=(*planner)(this,in,out); + if(!plan) noplan(); + + fftw_plan planT; + if(fftw::maxthreads > 1) { + threads=Threads; + planThreads(threads); + planT=(*planner)(this,in,out); + + if(data.threads == 0) { + if(planT) + data=time(plan,planT,in,out,threads); + else noplan(); + store(inplace,threaddata(threads,data.mean,data.stdev)); + } + } + + if(alloc) Array::deleteAlign(in,(doubles+1)/2); + return data; + } + + threaddata Setup(Complex *in, double *out) { + return Setup(in,(Complex *) out); + } + + threaddata Setup(double *in, Complex *out=NULL) { + return Setup((Complex *) in,out); + } + + virtual void Execute(Complex *in, Complex *out, bool=false) { + fftw_execute_dft(plan,(fftw_complex *) in,(fftw_complex *) out); + } + + Complex *Setout(Complex *in, Complex *out) { + out=CheckAlign(in,out,false); + if(inplace ^ (out == in)) { + std::cerr << "ERROR: fft " << inout << std::endl; + exit(1); + } + return out; + } + + void fft(Complex *in, Complex *out=NULL) { + out=Setout(in,out); + Execute(in,out); + } + + void fft(double *in, Complex *out=NULL) { + fft((Complex *) in,out); + } + + void fft(Complex *in, double *out) { + fft(in,(Complex *) out); + } + + void fft0(Complex *in, Complex *out=NULL) { + out=Setout(in,out); + Execute(in,out,true); + } + + void fft0(double *in, Complex *out=NULL) { + fft0((Complex *) in,out); + } + + void fft0(Complex *in, double *out) { + fft0(in,(Complex *) out); + } + + void Normalize(Complex *out) { + unsigned int stop=doubles/2; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < stop; i++) out[i] *= norm; + } + + void Normalize(double *out) { +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < doubles; i++) out[i] *= norm; + } + + virtual void fftNormalized(Complex *in, Complex *out=NULL, bool shift=false) + { + out=Setout(in,out); + Execute(in,out,shift); + Normalize(out); + } + + void fftNormalized(Complex *in, double *out, bool shift=false) { + out=(double *) Setout(in,(Complex *) out); + Execute(in,(Complex *) out,shift); + Normalize(out); + } + + void fftNormalized(double *in, Complex *out, bool shift=false) { + fftNormalized((Complex *) in,out,shift); + } + + template + void fft0Normalized(I in, O out) { + fftNormalized(in,out,true); + } + + template + void Normalize(unsigned int nx, unsigned int M, size_t ostride, + size_t odist, O *out) { + unsigned int stop=nx*ostride; + O *outMdist=out+M*odist; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < stop; i += ostride) { + O *pstop=outMdist+i; + for(O *p=out+i; p < pstop; p += odist) { + *p *= norm; + } + } + } + + template + void fftNormalized(unsigned int nx, unsigned int M, size_t ostride, + size_t odist, I *in, O *out=NULL, bool shift=false) { + out=(O *) Setout((Complex *) in,(Complex *) out); + Execute((Complex *) in,(Complex *) out,shift); + Normalize(nx,M,ostride,odist,out); + } + +}; // class fftw + +class Transpose { + fftw_plan plan; + fftw_plan plan2; + unsigned int a,b; + unsigned int nlength,mlength; + unsigned int ilast,jlast; + unsigned int rows,cols; + unsigned int threads; + bool inplace; + unsigned int size; +public: + template + Transpose(unsigned int rows, unsigned int cols, unsigned int length, + T *in, T *out=NULL, unsigned int threads=fftw::maxthreads) : + rows(rows), cols(cols), threads(threads) { + size=sizeof(T); + if(size % sizeof(double) != 0) { + std::cerr << "ERROR: Transpose is not implemented for type of size " + << size; + exit(1); + } + plan=plan2=NULL; + if(rows == 0 || cols == 0) return; + size /= sizeof(double); + length *= size; + + if(!out) out=in; + inplace=(out==in); + if(inplace) { + fftw::planThreads(threads); + threads=1; + } else fftw::planThreads(1); + + fftw_iodim dims[3]; + + a=std::min(rows,threads); + b=std::min(cols,threads/a); + + unsigned int n=utils::ceilquotient(rows,a); + unsigned int m=utils::ceilquotient(cols,b); + + // If rows <= threads then a=rows and n=1. + // If rows >= threads then b=1 and m=cols. + + nlength=n*length; + mlength=m*length; + + dims[0].n=n; + dims[0].is=cols*length; + dims[0].os=length; + + dims[1].n=m; + dims[1].is=length; + dims[1].os=rows*length; + + dims[2].n=length; + dims[2].is=1; + dims[2].os=1; + + // A plan with rank=0 is a transpose. + plan=fftw_plan_guru_r2r(0,NULL,3,dims,(double *) in,(double *) out, + NULL,fftw::effort); + ilast=a; + jlast=b; + + if(n*a > rows) { // Only happens when rows > threads. + a=utils::ceilquotient(rows,n); + ilast=a-1; + dims[0].n=rows-n*ilast; + plan2=fftw_plan_guru_r2r(0,NULL,3,dims,(double *) in,(double *) out, + NULL,fftw::effort); + } else { // Only happens when rows < threads. + if(m*b > cols) { + b=utils::ceilquotient(cols,m); + jlast=b-1; + dims[1].n=cols-m*jlast; + plan2=fftw_plan_guru_r2r(0,NULL,3,dims,(double *) in,(double *) out, + NULL,fftw::effort); + } + } + } + + ~Transpose() { + if(plan) fftw_destroy_plan(plan); + if(plan2) fftw_destroy_plan(plan2); + } + + template + void transpose(T *in, T *out=NULL) { + if(rows == 0 || cols == 0) return; + if(!out) out=in; + if(inplace ^ (out == in)) { + std::cerr << "ERROR: Transpose " << inout << std::endl; + exit(1); + } +#ifndef FFTWPP_SINGLE_THREAD + if(a > 1) { + if(b > 1) { + int A=a, B=b; +#pragma omp parallel for num_threads(A) + for(unsigned int i=0; i < a; ++i) { + unsigned int I=i*nlength; +#pragma omp parallel for num_threads(B) + for(unsigned int j=0; j < b; ++j) { + unsigned int J=j*mlength; + fftw_execute_r2r((i < ilast && j < jlast) ? plan : plan2, + (double *) in+cols*I+J, + (double *) out+rows*J+I); + } + } + } else { + int A=a; +#pragma omp parallel for num_threads(A) + for(unsigned int i=0; i < a; ++i) { + unsigned int I=i*nlength; + fftw_execute_r2r(i < ilast ? plan : plan2, + (double *) in+cols*I,(double *) out+I); + } + } + } else if(b > 1) { + int B=b; +#pragma omp parallel for num_threads(B) + for(unsigned int j=0; j < b; ++j) { + unsigned int J=j*mlength; + fftw_execute_r2r(j < jlast ? plan : plan2, + (double *) in+J,(double *) out+rows*J); + } + } else +#endif + fftw_execute_r2r(plan,(double *) in,(double*) out); + } +}; + +template +class Threadtable { +public: + typedef std::map Table; + + threaddata Lookup(Table& table, T key) { + typename Table::iterator p=table.find(key); + return p == table.end() ? threaddata() : p->second; + } + + void Store(Table& threadtable, T key, const threaddata& data) { + threadtable[key]=data; + } +}; + +struct keytype1 { + unsigned int nx; + unsigned int threads; + bool inplace; + keytype1(unsigned int nx, unsigned int threads, bool inplace) : + nx(nx), threads(threads), inplace(inplace) {} +}; + +struct keyless1 { + bool operator()(const keytype1& a, const keytype1& b) const { + return a.nx < b.nx || (a.nx == b.nx && + (a.threads < b.threads || (a.threads == b.threads && + a.inplace < b.inplace))); + } +}; + +struct keytype2 { + unsigned int nx; + unsigned int ny; + unsigned int threads; + bool inplace; + keytype2(unsigned int nx, unsigned int ny, unsigned int threads, + bool inplace) : + nx(nx), ny(ny), threads(threads), inplace(inplace) {} +}; + +struct keyless2 { + bool operator()(const keytype2& a, const keytype2& b) const { + return a.nx < b.nx || (a.nx == b.nx && + (a.ny < b.ny || (a.ny == b.ny && + (a.threads < b.threads || + (a.threads == b.threads && + a.inplace < b.inplace))))); + } +}; + +struct keytype3 { + unsigned int nx; + unsigned int ny; + unsigned int nz; + unsigned int threads; + bool inplace; + keytype3(unsigned int nx, unsigned int ny, unsigned int nz, + unsigned int threads, bool inplace) : + nx(nx), ny(ny), nz(nz), threads(threads), inplace(inplace) {} +}; + +struct keyless3 { + bool operator()(const keytype3& a, const keytype3& b) const { + return a.nx < b.nx || (a.nx == b.nx && + (a.ny < b.ny || (a.ny == b.ny && + (a.nz < b.nz || + (a.nz == b.nz && + (a.threads < b.threads || + (a.threads == b.threads && + a.inplace < b.inplace))))))); + } +}; + +// Compute the complex Fourier transform of n complex values. +// Before calling fft(), the arrays in and out (which may coincide) must be +// allocated as Complex[n]. +// +// Out-of-place usage: +// +// fft1d Forward(n,-1,in,out); +// Forward.fft(in,out); +// +// fft1d Backward(n,1,in,out); +// Backward.fft(in,out); +// +// fft1d Backward(n,1,in,out); +// Backward.fftNormalized(in,out); // True inverse of Forward.fft(out,in); +// +// In-place usage: +// +// fft1d Forward(n,-1); +// Forward.fft(in); +// +// fft1d Backward(n,1); +// Backward.fft(in); +// +class fft1d : public fftw, public Threadtable { + unsigned int nx; + static Table threadtable; +public: + fft1d(unsigned int nx, int sign, Complex *in=NULL, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*nx,sign,threads), nx(nx) {Setup(in,out);} + +#ifdef __Array_h__ + fft1d(int sign, const Array::array1& in, + const Array::array1& out=Array::NULL1, + unsigned int threads=maxthreads) + : fftw(2*in.Nx(),sign,threads), nx(in.Nx()) {Setup(in,out);} +#endif + + threaddata lookup(bool inplace, unsigned int threads) { + return this->Lookup(threadtable,keytype1(nx,threads,inplace)); + } + void store(bool inplace, const threaddata& data) { + this->Store(threadtable,keytype1(nx,data.threads,inplace),data); + } + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_1d(nx,(fftw_complex *) in,(fftw_complex *) out, + sign,effort); + } +}; + +template +class fftwblock : public virtual fftw { +public: + int nx; + unsigned int M; + size_t istride,ostride; + size_t idist,odist; + fftw_plan plan1,plan2; + unsigned int T,Q,R; + fftwblock(unsigned int nx, unsigned int M, + size_t istride, size_t ostride, size_t idist, size_t odist, + Complex *in, Complex *out, unsigned int Threads) + : fftw(), nx(nx), M(M), istride(istride), ostride(ostride), + idist(Dist(nx,istride,idist)), odist(Dist(nx,ostride,odist)), + plan1(NULL), plan2(NULL) { + T=1; + Q=M; + R=0; + + threaddata S1=Setup(in,out); + fftw_plan planT1=plan; + + if(fftw::maxthreads > 1) { + if(Threads > 1) { + T=std::min(M,Threads); + Q=T > 0 ? M/T : 0; + R=M-Q*T; + + threads=Threads; + threaddata ST=Setup(in,out); + + if(R > 0 && threads == 1 && plan1 != plan2) { + fftw_destroy_plan(plan2); + plan2=plan1; + } + + if(ST.mean > S1.mean-S1.stdev) { // Use FFTW's multi-threading + fftw_destroy_plan(plan); + if(R > 0) { + fftw_destroy_plan(plan2); + plan2=NULL; + } + T=1; + Q=M; + R=0; + plan=planT1; + threads=S1.threads; + } else { // Do the multi-threading ourselves + fftw_destroy_plan(planT1); + threads=ST.threads; + } + } else + Setup(in,out); // Synchronize wisdom + } + } + + fftw_plan Plan(int Q, fftw_complex *in, fftw_complex *out) { + return fftw_plan_many_dft(1,&nx,Q,in,NULL,istride,idist, + out,NULL,ostride,odist,sign,effort); + } + + fftw_plan Plan(int Q, double *in, fftw_complex *out) { + return fftw_plan_many_dft_r2c(1,&nx,Q,in,NULL,istride,idist, + out,NULL,ostride,odist,effort); + } + + fftw_plan Plan(int Q, fftw_complex *in, double *out) { + return fftw_plan_many_dft_c2r(1,&nx,Q,in,NULL,istride,idist, + out,NULL,ostride,odist,effort); + } + + fftw_plan Plan(Complex *in, Complex *out) { + if(R > 0) { + plan2=Plan(Q+1,(I *) in,(O *) out); + if(!plan2) return NULL; + if(threads == 1) plan1=plan2; + } + return Plan(Q,(I *) in,(O *) out); + } + + void Execute(fftw_plan plan, fftw_complex *in, fftw_complex *out) { + fftw_execute_dft(plan,in,out); + } + + void Execute(fftw_plan plan, double *in, fftw_complex *out) { + fftw_execute_dft_r2c(plan,in,out); + } + + void Execute(fftw_plan plan, fftw_complex *in, double *out) { + fftw_execute_dft_c2r(plan,in,out); + } + + void Execute(Complex *in, Complex *out, bool=false) { + if(T == 1) + Execute(plan,(I *) in,(O *) out); + else { + unsigned int extra=T-R; +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(T) +#endif + for(unsigned int i=0; i < T; ++i) { + unsigned int iQ=i*Q; + if(i < extra) + Execute(plan,(I *) in+iQ*idist,(O *) out+iQ*odist); + else { + unsigned int offset=iQ+i-extra; + Execute(plan2,(I *) in+offset*idist,(O *) out+offset*odist); + } + } + } + } + + unsigned int Threads() {return std::max(T,threads);} + + ~fftwblock() { + if(plan2) fftw_destroy_plan(plan2); + } +}; + +// Compute the complex Fourier transform of M complex vectors, each of +// length n. +// Before calling fft(), the arrays in and out (which may coincide) must be +// allocated as Complex[M*n]. +// +// Out-of-place usage: +// +// mfft1d Forward(n,-1,M,stride,dist,in,out); +// Forward.fft(in,out); +// +// In-place usage: +// +// mfft1d Forward(n,-1,M,stride,dist); +// Forward.fft(in); +// +// Notes: +// stride is the spacing between the elements of each Complex vector; +// dist is the spacing between the first elements of the vectors. +// +// +class mfft1d : public fftwblock, + public Threadtable { + static Table threadtable; +public: + mfft1d(unsigned int nx, int sign, unsigned int M=1, size_t stride=1, + size_t dist=0, Complex *in=NULL, Complex *out=NULL, + unsigned int threads=maxthreads) : + fftw(2*((nx-1)*stride+(M-1)*Dist(nx,stride,dist)+1),sign,threads,nx), + fftwblock + (nx,M,stride,stride,dist,dist,in,out,threads) {} + + mfft1d(unsigned int nx, int sign, unsigned int M, + size_t istride, size_t ostride, size_t idist, size_t odist, + Complex *in=NULL, Complex *out=NULL, unsigned int threads=maxthreads): + fftw(std::max(2*((nx-1)*istride+(M-1)*Dist(nx,istride,idist)+1), + 2*((nx-1)*ostride+(M-1)*Dist(nx,ostride,odist)+1)),sign, + threads, nx), + fftwblock(nx,M,istride,ostride,idist,odist,in, + out,threads) {} + + threaddata lookup(bool inplace, unsigned int threads) { + return Lookup(threadtable,keytype3(nx,Q,R,threads,inplace)); + } + void store(bool inplace, const threaddata& data) { + Store(threadtable,keytype3(nx,Q,R,data.threads,inplace),data); + } +}; + +// Compute the complex Fourier transform of n real values, using phase sign -1. +// Before calling fft(), the array in must be allocated as double[n] and +// the array out must be allocated as Complex[n/2+1]. The arrays in and out +// may coincide, allocated as Complex[n/2+1]. +// +// Out-of-place usage: +// +// rcfft1d Forward(n,in,out); +// Forward.fft(in,out); +// +// In-place usage: +// +// rcfft1d Forward(n); +// Forward.fft(out); +// +// Notes: +// in contains the n real values stored as a Complex array; +// out contains the first n/2+1 Complex Fourier values. +// +class rcfft1d : public fftw, public Threadtable { + unsigned int nx; + static Table threadtable; +public: + rcfft1d(unsigned int nx, Complex *out=NULL, unsigned int threads=maxthreads) + : fftw(2*(nx/2+1),-1,threads,nx), nx(nx) {Setup(out,(double*) NULL);} + + rcfft1d(unsigned int nx, double *in, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*(nx/2+1),-1,threads,nx), nx(nx) {Setup(in,out);} + + threaddata lookup(bool inplace, unsigned int threads) { + return Lookup(threadtable,keytype1(nx,threads,inplace)); + } + void store(bool inplace, const threaddata& data) { + Store(threadtable,keytype1(nx,data.threads,inplace),data); + } + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_r2c_1d(nx,(double *) in,(fftw_complex *) out, effort); + } + + void Execute(Complex *in, Complex *out, bool=false) { + fftw_execute_dft_r2c(plan,(double *) in,(fftw_complex *) out); + } +}; + +// Compute the real inverse Fourier transform of the n/2+1 Complex values +// corresponding to the non-negative part of the frequency spectrum, using +// phase sign +1. +// Before calling fft(), the array in must be allocated as Complex[n/2+1] +// and the array out must be allocated as double[n]. The arrays in and out +// may coincide, allocated as Complex[n/2+1]. +// +// Out-of-place usage (input destroyed): +// +// crfft1d Backward(n,in,out); +// Backward.fft(in,out); +// +// In-place usage: +// +// crfft1d Backward(n); +// Backward.fft(in); +// +// Notes: +// in contains the first n/2+1 Complex Fourier values. +// out contains the n real values stored as a Complex array; +// +class crfft1d : public fftw, public Threadtable { + unsigned int nx; + static Table threadtable; +public: + crfft1d(unsigned int nx, double *out=NULL, unsigned int threads=maxthreads) + : fftw(2*(nx/2+1),1,threads,nx), nx(nx) {Setup(out);} + + crfft1d(unsigned int nx, Complex *in, double *out=NULL, + unsigned int threads=maxthreads) + : fftw(realsize(nx,in,out),1,threads,nx), nx(nx) {Setup(in,out);} + + threaddata lookup(bool inplace, unsigned int threads) { + return Lookup(threadtable,keytype1(nx,threads,inplace)); + } + void store(bool inplace, const threaddata& data) { + Store(threadtable,keytype1(nx,data.threads,inplace),data); + } + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_c2r_1d(nx,(fftw_complex *) in,(double *) out,effort); + } + + void Execute(Complex *in, Complex *out, bool=false) { + fftw_execute_dft_c2r(plan,(fftw_complex *) in,(double *) out); + } +}; + +// Compute the real Fourier transform of M real vectors, each of length n, +// using phase sign -1. Before calling fft(), the array in must be +// allocated as double[M*n] and the array out must be allocated as +// Complex[M*(n/2+1)]. The arrays in and out may coincide, +// allocated as Complex[M*(n/2+1)]. +// +// Out-of-place usage: +// +// mrcfft1d Forward(n,M,istride,ostride,idist,odist,in,out); +// Forward.fft(in,out); +// +// In-place usage: +// +// mrcfft1d Forward(n,M,istride,ostride,idist,odist); +// Forward.fft(out); +// +// Notes: +// istride is the spacing between the elements of each real vector; +// ostride is the spacing between the elements of each Complex vector; +// idist is the spacing between the first elements of the real vectors; +// odist is the spacing between the first elements of the Complex vectors; +// in contains the n real values stored as a Complex array; +// out contains the first n/2+1 Complex Fourier values. +// +class mrcfft1d : public fftwblock, + public Threadtable { + static Table threadtable; +public: + mrcfft1d(unsigned int nx, unsigned int M, + size_t istride, size_t ostride, + size_t idist, size_t odist, + double *in=NULL, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(std::max((realsize(nx,in,out)-2)*istride+(M-1)*idist+2, + 2*(nx/2*ostride+(M-1)*odist+1)),-1,threads,nx), + fftwblock + (nx,M,istride,ostride,idist,odist,(Complex *) in,out,threads) {} + + threaddata lookup(bool inplace, unsigned int threads) { + return Lookup(threadtable,keytype3(nx,Q,R,threads,inplace)); + } + + void store(bool inplace, const threaddata& data) { + Store(threadtable,keytype3(nx,Q,R,data.threads,inplace),data); + } + + void Normalize(Complex *out) { + fftw::Normalize(nx/2+1,M,ostride,odist,out); + } + + void fftNormalized(double *in, Complex *out=NULL) { + fftw::fftNormalized(nx/2+1,M,ostride,odist,in,out,false); + } + + void fft0Normalized(double *in, Complex *out=NULL) { + fftw::fftNormalized(nx/2+1,M,ostride,odist,in,out,true); + } +}; + +// Compute the real inverse Fourier transform of M complex vectors, each of +// length n/2+1, corresponding to the non-negative parts of the frequency +// spectra, using phase sign +1. Before calling fft(), the array in must be +// allocated as Complex[M*(n/2+1)] and the array out must be allocated as +// double[M*n]. The arrays in and out may coincide, +// allocated as Complex[M*(n/2+1)]. +// +// Out-of-place usage (input destroyed): +// +// mcrfft1d Backward(n,M,istride,ostride,idist,odist,in,out); +// Backward.fft(in,out); +// +// In-place usage: +// +// mcrfft1d Backward(n,M,istride,ostride,idist,odist); +// Backward.fft(out); +// +// Notes: +// stride is the spacing between the elements of each Complex vector; +// dist is the spacing between the first elements of the vectors; +// in contains the first n/2+1 Complex Fourier values; +// out contains the n real values stored as a Complex array. +// +class mcrfft1d : public fftwblock, + public Threadtable { + static Table threadtable; +public: + mcrfft1d(unsigned int nx, unsigned int M, size_t istride, size_t ostride, + size_t idist, size_t odist, Complex *in=NULL, double *out=NULL, + unsigned int threads=maxthreads) + : fftw(std::max(2*(nx/2*istride+(M-1)*idist+1), + (realsize(nx,in,out)-2)*ostride+(M-1)*odist+2),1,threads,nx), + fftwblock + (nx,M,istride,ostride,idist,odist,in,(Complex *) out,threads) {} + + threaddata lookup(bool inplace, unsigned int threads) { + return Lookup(threadtable,keytype3(nx,Q,R,threads,inplace)); + } + + void store(bool inplace, const threaddata& data) { + Store(threadtable,keytype3(nx,Q,R,data.threads,inplace),data); + } + + void Normalize(double *out) { + fftw::Normalize(nx,M,ostride,odist,out); + } + + void fftNormalized(Complex *in, double *out=NULL) { + fftw::fftNormalized(nx,M,ostride,odist,in,out,false); + } + + void fft0Normalized(Complex *in, double *out=NULL) { + fftw::fftNormalized(nx,M,ostride,odist,in,out,true); + } +}; + +// Compute the complex two-dimensional Fourier transform of nx times ny +// complex values. Before calling fft(), the arrays in and out (which may +// coincide) must be allocated as Complex[nx*ny]. +// +// Out-of-place usage: +// +// fft2d Forward(nx,ny,-1,in,out); +// Forward.fft(in,out); +// +// fft2d Backward(nx,ny,1,in,out); +// Backward.fft(in,out); +// +// fft2d Backward(nx,ny,1,in,out); +// Backward.fftNormalized(in,out); // True inverse of Forward.fft(out,in); +// +// In-place usage: +// +// fft2d Forward(nx,ny,-1); +// Forward.fft(in); +// +// fft2d Backward(nx,ny,1); +// Backward.fft(in); +// +// Note: +// in[ny*i+j] contains the ny Complex values for each i=0,...,nx-1. +// +class fft2d : public fftw, public Threadtable { + unsigned int nx; + unsigned int ny; + static Table threadtable; +public: + fft2d(unsigned int nx, unsigned int ny, int sign, Complex *in=NULL, + Complex *out=NULL, unsigned int threads=maxthreads) + : fftw(2*nx*ny,sign,threads), nx(nx), ny(ny) {Setup(in,out);} + +#ifdef __Array_h__ + fft2d(int sign, const Array::array2& in, + const Array::array2& out=Array::NULL2, + unsigned int threads=maxthreads) + : fftw(2*in.Size(),sign,threads), nx(in.Nx()), ny(in.Ny()) { + Setup(in,out); + } +#endif + + threaddata lookup(bool inplace, unsigned int threads) { + return this->Lookup(threadtable,keytype2(nx,ny,threads,inplace)); + } + void store(bool inplace, const threaddata& data) { + this->Store(threadtable,keytype2(nx,ny,data.threads,inplace),data); + } + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_2d(nx,ny,(fftw_complex *) in,(fftw_complex *) out, + sign,effort); + } + + void Execute(Complex *in, Complex *out, bool=false) { + fftw_execute_dft(plan,(fftw_complex *) in,(fftw_complex *) out); + } +}; + +// Compute the complex two-dimensional Fourier transform of nx times ny real +// values, using phase sign -1. +// Before calling fft(), the array in must be allocated as double[nx*ny] and +// the array out must be allocated as Complex[nx*(ny/2+1)]. The arrays in +// and out may coincide, allocated as Complex[nx*(ny/2+1)]. +// +// Out-of-place usage: +// +// rcfft2d Forward(nx,ny,in,out); +// Forward.fft(in,out); // Origin of Fourier domain at (0,0) +// Forward.fft0(in,out); // Origin of Fourier domain at (nx/2,0); +// input destroyed. +// +// In-place usage: +// +// rcfft2d Forward(nx,ny); +// Forward.fft(in); // Origin of Fourier domain at (0,0) +// Forward.fft0(in); // Origin of Fourier domain at (nx/2,0) +// +// Notes: +// in contains the nx*ny real values stored as a Complex array; +// out contains the upper-half portion (ky >= 0) of the Complex transform. +// +class rcfft2d : public fftw { + unsigned int nx; + unsigned int ny; +public: + rcfft2d(unsigned int nx, unsigned int ny, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*nx*(ny/2+1),-1,threads,nx*ny), nx(nx), ny(ny) {Setup(out);} + + rcfft2d(unsigned int nx, unsigned int ny, double *in, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*nx*(ny/2+1),-1,threads,nx*ny), nx(nx), ny(ny) { + Setup(in,out); + } + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_r2c_2d(nx,ny,(double *) in,(fftw_complex *) out, + effort); + } + + void Execute(Complex *in, Complex *out, bool shift=false) { + if(shift) { + if(inplace) Shift(in,nx,ny,threads); + else Shift((double *) in,nx,ny,threads); + } + fftw_execute_dft_r2c(plan,(double *) in,(fftw_complex *) out); + } + + // Set Nyquist modes of even shifted transforms to zero. + void deNyquist(Complex *f) { + unsigned int nyp=ny/2+1; + if(nx % 2 == 0) +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int j=0; j < nyp; ++j) + f[j]=0.0; + if(ny % 2 == 0) +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; ++i) + f[(i+1)*nyp-1]=0.0; + } +}; + +// Compute the real two-dimensional inverse Fourier transform of the +// nx*(ny/2+1) Complex values corresponding to the spectral values in the +// half-plane ky >= 0, using phase sign +1. +// Before calling fft(), the array in must be allocated as +// Complex[nx*(ny/2+1)] and the array out must be allocated as +// double[nx*ny]. The arrays in and out may coincide, +// allocated as Complex[nx*(ny/2+1)]. +// +// Out-of-place usage (input destroyed): +// +// crfft2d Backward(nx,ny,in,out); +// Backward.fft(in,out); // Origin of Fourier domain at (0,0) +// Backward.fft0(in,out); // Origin of Fourier domain at (nx/2,0) +// +// In-place usage: +// +// crfft2d Backward(nx,ny); +// Backward.fft(in); // Origin of Fourier domain at (0,0) +// Backward.fft0(in); // Origin of Fourier domain at (nx/2,0) +// +// Notes: +// in contains the upper-half portion (ky >= 0) of the Complex transform; +// out contains the nx*ny real values stored as a Complex array. +// +class crfft2d : public fftw { + unsigned int nx; + unsigned int ny; +public: + crfft2d(unsigned int nx, unsigned int ny, double *out=NULL, + unsigned int threads=maxthreads) : + fftw(2*nx*(ny/2+1),1,threads,nx*ny), nx(nx), ny(ny) {Setup(out);} + + crfft2d(unsigned int nx, unsigned int ny, Complex *in, double *out=NULL, + unsigned int threads=maxthreads) + : fftw(nx*realsize(ny,in,out),1,threads,nx*ny), nx(nx), ny(ny) { + Setup(in,out); + } + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_c2r_2d(nx,ny,(fftw_complex *) in,(double *) out, + effort); + } + + void Execute(Complex *in, Complex *out, bool shift=false) { + fftw_execute_dft_c2r(plan,(fftw_complex *) in,(double *) out); + if(shift) { + if(inplace) Shift(out,nx,ny,threads); + else Shift((double *) out,nx,ny,threads); + } + } + + // Set Nyquist modes of even shifted transforms to zero. + void deNyquist(Complex *f) { + unsigned int nyp=ny/2+1; + if(nx % 2 == 0) +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int j=0; j < nyp; ++j) + f[j]=0.0; + if(ny % 2 == 0) +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; ++i) + f[(i+1)*nyp-1]=0.0; + } +}; + +// Compute the complex three-dimensional Fourier transform of +// nx times ny times nz complex values. Before calling fft(), the arrays in +// and out (which may coincide) must be allocated as Complex[nx*ny*nz]. +// +// Out-of-place usage: +// +// fft3d Forward(nx,ny,nz,-1,in,out); +// Forward.fft(in,out); +// +// fft3d Backward(nx,ny,nz,1,in,out); +// Backward.fft(in,out); +// +// fft3d Backward(nx,ny,nz,1,in,out); +// Backward.fftNormalized(in,out); // True inverse of Forward.fft(out,in); +// +// In-place usage: +// +// fft3d Forward(nx,ny,nz,-1); +// Forward.fft(in); +// +// fft3d Backward(nx,ny,nz,1); +// Backward.fft(in); +// +// Note: +// in[nz*(ny*i+j)+k] contains the (i,j,k)th Complex value, +// indexed by i=0,...,nx-1, j=0,...,ny-1, and k=0,...,nz-1. +// +class fft3d : public fftw { + unsigned int nx; + unsigned int ny; + unsigned int nz; +public: + fft3d(unsigned int nx, unsigned int ny, unsigned int nz, + int sign, Complex *in=NULL, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*nx*ny*nz,sign,threads), nx(nx), ny(ny), nz(nz) {Setup(in,out);} + +#ifdef __Array_h__ + fft3d(int sign, const Array::array3& in, + const Array::array3& out=Array::NULL3, + unsigned int threads=maxthreads) + : fftw(2*in.Size(),sign,threads), nx(in.Nx()), ny(in.Ny()), nz(in.Nz()) + {Setup(in,out);} +#endif + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_3d(nx,ny,nz,(fftw_complex *) in, + (fftw_complex *) out, sign, effort); + } +}; + +// Compute the complex two-dimensional Fourier transform of +// nx times ny times nz real values, using phase sign -1. +// Before calling fft(), the array in must be allocated as double[nx*ny*nz] +// and the array out must be allocated as Complex[nx*ny*(nz/2+1)]. The +// arrays in and out may coincide, allocated as Complex[nx*ny*(nz/2+1)]. +// +// Out-of-place usage: +// +// rcfft3d Forward(nx,ny,nz,in,out); +// Forward.fft(in,out); // Origin of Fourier domain at (0,0) +// Forward.fft0(in,out); // Origin of Fourier domain at (nx/2,ny/2,0); +// input destroyed +// In-place usage: +// +// rcfft3d Forward(nx,ny,nz); +// Forward.fft(in); // Origin of Fourier domain at (0,0) +// Forward.fft0(in); // Origin of Fourier domain at (nx/2,ny/2,0) +// +// Notes: +// in contains the nx*ny*nz real values stored as a Complex array; +// out contains the upper-half portion (kz >= 0) of the Complex transform. +// +class rcfft3d : public fftw { + unsigned int nx; + unsigned int ny; + unsigned int nz; +public: + rcfft3d(unsigned int nx, unsigned int ny, unsigned int nz, Complex *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*nx*ny*(nz/2+1),-1,threads,nx*ny*nz), nx(nx), ny(ny), nz(nz) { + Setup(out); + } + + rcfft3d(unsigned int nx, unsigned int ny, unsigned int nz, double *in, + Complex *out=NULL, unsigned int threads=maxthreads) + : fftw(2*nx*ny*(nz/2+1),-1,threads,nx*ny*nz), + nx(nx), ny(ny), nz(nz) {Setup(in,out);} + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_r2c_3d(nx,ny,nz,(double *) in,(fftw_complex *) out, + effort); + } + + void Execute(Complex *in, Complex *out, bool shift=false) { + if(shift) { + if(inplace) Shift(in,nx,ny,nz,threads); + else Shift((double *) in,nx,ny,nz,threads); + } + fftw_execute_dft_r2c(plan,(double *) in,(fftw_complex *) out); + } + + // Set Nyquist modes of even shifted transforms to zero. + void deNyquist(Complex *f) { + unsigned int nzp=nz/2+1; + unsigned int yz=ny*nzp; + if(nx % 2 == 0) { +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int k=0; k < yz; ++k) + f[k]=0.0; + } + + if(ny % 2 == 0) { +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; ++i) { + unsigned int iyz=i*yz; + for(unsigned int k=0; k < nzp; ++k) + f[iyz+k]=0.0; + } + } + + if(nz % 2 == 0) +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; ++i) + for(unsigned int j=0; j < ny; ++j) + f[i*yz+(j+1)*nzp-1]=0.0; + } +}; + +// Compute the real two-dimensional inverse Fourier transform of the +// nx*ny*(nz/2+1) Complex values corresponding to the spectral values in the +// half-plane kz >= 0, using phase sign +1. +// Before calling fft(), the array in must be allocated as +// Complex[nx*ny*(nz+1)/2] and the array out must be allocated as +// double[nx*ny*nz]. The arrays in and out may coincide, +// allocated as Complex[nx*ny*(nz/2+1)]. +// +// Out-of-place usage (input destroyed): +// +// crfft3d Backward(nx,ny,nz,in,out); +// Backward.fft(in,out); // Origin of Fourier domain at (0,0) +// Backward.fft0(in,out); // Origin of Fourier domain at (nx/2,ny/2,0) +// +// In-place usage: +// +// crfft3d Backward(nx,ny,nz); +// Backward.fft(in); // Origin of Fourier domain at (0,0) +// Backward.fft0(in); // Origin of Fourier domain at (nx/2,ny/2,0) +// +// Notes: +// in contains the upper-half portion (kz >= 0) of the Complex transform; +// out contains the nx*ny*nz real values stored as a Complex array. +// +class crfft3d : public fftw { + unsigned int nx; + unsigned int ny; + unsigned int nz; +public: + crfft3d(unsigned int nx, unsigned int ny, unsigned int nz, double *out=NULL, + unsigned int threads=maxthreads) + : fftw(2*nx*ny*(nz/2+1),1,threads,nx*ny*nz), nx(nx), ny(ny), nz(nz) + {Setup(out);} + + crfft3d(unsigned int nx, unsigned int ny, unsigned int nz, Complex *in, + double *out=NULL, unsigned int threads=maxthreads) + : fftw(nx*ny*(realsize(nz,in,out)),1,threads,nx*ny*nz), nx(nx), ny(ny), + nz(nz) {Setup(in,out);} + + fftw_plan Plan(Complex *in, Complex *out) { + return fftw_plan_dft_c2r_3d(nx,ny,nz,(fftw_complex *) in,(double *) out, + effort); + } + + void Execute(Complex *in, Complex *out, bool shift=false) { + fftw_execute_dft_c2r(plan,(fftw_complex *) in,(double *) out); + if(shift) { + if(inplace) Shift(out,nx,ny,nz,threads); + else Shift((double *) out,nx,ny,nz,threads); + } + } + + // Set Nyquist modes of even shifted transforms to zero. + void deNyquist(Complex *f) { + unsigned int nzp=nz/2+1; + unsigned int yz=ny*nzp; + if(nx % 2 == 0) { +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int k=0; k < yz; ++k) + f[k]=0.0; + } + + if(ny % 2 == 0) { +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; ++i) { + unsigned int iyz=i*yz; + for(unsigned int k=0; k < nzp; ++k) + f[iyz+k]=0.0; + } + } + + if(nz % 2 == 0) +#ifndef FFTWPP_SINGLE_THREAD +#pragma omp parallel for num_threads(threads) +#endif + for(unsigned int i=0; i < nx; ++i) + for(unsigned int j=0; j < ny; ++j) + f[i*yz+(j+1)*nzp-1]=0.0; + } +}; + +} + +#endif diff --git a/examples/Integration_with_fftw/fftw/seconds.h b/examples/Integration_with_fftw/fftw/seconds.h new file mode 100644 index 0000000..4f157b8 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/seconds.h @@ -0,0 +1,100 @@ +#ifndef __seconds_h__ +#define __seconds_h__ 1 + +#ifdef _WIN32 +#include + +#include +#include +#include + +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 +#else +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL +#endif + +struct timezone +{ + int tz_minuteswest; /* minutes W of Greenwich */ + int tz_dsttime; /* type of dst correction */ +}; + +// Definition of a gettimeofday function + +inline int gettimeofday(struct timeval *tv, struct timezone *tz) +{ +// Define a structure to receive the current Windows filetime + FILETIME ft; + +// Initialize the present time to 0 and the timezone to UTC + unsigned __int64 tmpres = 0; + static int tzflag = 0; + + if (NULL != tv) + { + GetSystemTimeAsFileTime(&ft); + +// The GetSystemTimeAsFileTime returns the number of 100 nanosecond +// intervals since Jan 1, 1601 in a structure. Copy the high bits to +// the 64 bit tmpres, shift it left by 32 then or in the low 32 bits. + tmpres |= ft.dwHighDateTime; + tmpres <<= 32; + tmpres |= ft.dwLowDateTime; + +// Convert to microseconds by dividing by 10 + tmpres /= 10; + +// The Unix epoch starts on Jan 1 1970. Need to subtract the difference +// in seconds from Jan 1 1601. + tmpres -= DELTA_EPOCH_IN_MICROSECS; + +// Finally change microseconds to seconds and place in the seconds value. +// The modulus picks up the microseconds. + tv->tv_sec = (long)(tmpres / 1000000UL); + tv->tv_usec = (long)(tmpres % 1000000UL); + } + + if (NULL != tz) + { + if (!tzflag) + { + _tzset(); + tzflag++; + } + +// Adjust for the timezone west of Greenwich + tz->tz_minuteswest = _timezone / 60; + tz->tz_dsttime = _daylight; + } + + return 0; +} + +#else + +#include + +#endif + +namespace utils { + +inline double totalseconds() +{ + timeval tv; + gettimeofday(&tv,NULL); + return tv.tv_sec+tv.tv_usec/1000000.0; +} + +inline double seconds() +{ + static double lastseconds=totalseconds(); + double t=totalseconds(); + double seconds=t-lastseconds; + lastseconds=t; + return seconds; +} + +} + +#endif diff --git a/examples/Integration_with_fftw/fftw/statistics.h b/examples/Integration_with_fftw/fftw/statistics.h new file mode 100644 index 0000000..56394d6 --- /dev/null +++ b/examples/Integration_with_fftw/fftw/statistics.h @@ -0,0 +1,49 @@ +#ifndef __statistics_h__ +#define __statistics_h__ 1 + +namespace utils { + +class statistics { + unsigned int N; + double A; + double varL; + double varH; +public: + statistics() : N(0), A(0.0), varL(0.0), varH(0.0) {} + double count() {return N;} + double mean() {return A;} + void add(double t) { + ++N; + double diff=t-A; + A += diff/N; + double v=diff*(t-A); + if(diff < 0.0) + varL += v; + else + varH += v; + } + double stdev(double var, double f) { + double factor=N > f ? f/(N-f) : 0.0; + return sqrt(var*factor); + } + double stdev() { + return stdev(varL+varH,1.0); + } + double stdevL() { + return stdev(varL,2.0); + } + double stdevH() { + return stdev(varH,2.0); + } + void output(const char *text, unsigned int m) { + std::cout << text << ":\n" + << m << "\t" + << A << "\t" + << stdevL() << "\t" + << stdevH() << std::endl; + } +}; + +} + +#endif diff --git a/examples/Integration_with_fftw/main.cpp b/examples/Integration_with_fftw/main.cpp new file mode 100644 index 0000000..083fd38 --- /dev/null +++ b/examples/Integration_with_fftw/main.cpp @@ -0,0 +1,813 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include"MMSP.hpp" + + +using namespace std; + +typedef float phi_type; +typedef MMSP::sparse store_type; +typedef std::complex Complex; +typedef std::valarray CArray; + +const double PI = 3.141592653589793238460; + +#include "definitions_v2.hpp" + +const int variant = 1 ; + + +//--------Initializing all the grids--------// + +void initialize() +{ + + G_Al_alpha = (Al_alpha_a_3 + Al_alpha_b_3*T+ Al_alpha_c_3*T*log(T) + Al_alpha_d_3*T*T) ; + G_Al_beta = (Al_beta_a_3 + Al_beta_b_3*T+ Al_beta_c_3*T*log(T) + Al_beta_d_3*T*T) ; + + G_Ti_alpha = (Ti_alpha_a_2 + Ti_alpha_b_2*T+ Ti_alpha_c_2*T*log(T) + Ti_alpha_d_2*T*T) ; + G_Ti_beta = (Ti_beta_a_1 + Ti_beta_b_1*T+ Ti_beta_c_1*T*log(T) + Ti_beta_d_1*T*T) ; + + G_V_alpha = (V_alpha_a_2 + V_alpha_b_2*T+ V_alpha_c_2*T*log(T) + V_alpha_d_2*T*T) ; //(21.96 - T/50) + G_V_beta = (V_beta_a_2 + V_beta_b_2*T+ V_beta_c_2*T*log(T) + V_beta_d_2*T*T) ; + + for(int n = 0; n < nodes(grid); n++) + { + MMSP::vector x = position(grid, n); + + store_type newGrain; + store_type nuc_newGrain ; + + set(nuc_newGrain, 1) = 0.0 ; + set(nuc_newGrain, 3) = 0.0 ; + nuc_grid(n) = nuc_newGrain ; + + set(intenergies(n), 1) = 0.0 ; + set(intenergies(n), 3) = 0.0 ; + set(selfenergies(n), 1) = 0.0 ; + set(selfenergies(n), 3) = 0.0 ; + + set(newGrain, 1) = 0.0; + set(newGrain, 2) = 0.0; + set(newGrain, 3) = 0.0; + set(newGrain, 4) = 0.0; + set(newGrain, 5) = 0.0; + set(newGrain, 6) = 0.0; + set(newGrain, 7) = 0.0; + set(newGrain, 8) = 0.0; + set(newGrain, 9) = 0.0; + set(newGrain, 10) = 0.0; + set(newGrain, 11) = 0.0; + set(newGrain, 12) = 0.0; + + if((pow((x[0]*MMSP::dx(grid,0)-0.2*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.8*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 1) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.4*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.8*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 2) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.6*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.8*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 3) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.8*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.8*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 4) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.2*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.5*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 5) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.4*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.5*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 6) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.6*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.5*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 7) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.8*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.5*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 8) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.2*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.2*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 9) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.4*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.2*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 10) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.6*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.2*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 11) = 1.0; + } + + else if((pow((x[0]*MMSP::dx(grid,0)-0.8*Lx),2) + pow((x[1]*MMSP::dx(grid,1)-0.2*Ly),2)) < 100*MMSP::dx(grid,0)*MMSP::dx(grid,0)) + { + set(newGrain, 12) = 1.0; + } + + + grid(n) = newGrain; + + } + +} + + + +int main() +{ + + initialize(); + initialize_epsi(); + initialize_alpha_eigen() ; + define_c_sigma() ; + + fftw::maxthreads=get_max_threads(); + + unsigned int nyp=ny/2+1; + + + +size_t align=sizeof(Complex); + +array2 f1(nx,ny,align); +array2 F1(nx,nyp,align); +rcfft2d Forward1(nx,ny,f1,F1); + +array2 f2(nx,ny,align); +array2 F2(nx,nyp,align); +rcfft2d Forward2(nx,ny,f2,F2); + +array2 f3(nx,ny,align); +array2 F3(nx,nyp,align); +rcfft2d Forward3(nx,ny,f3,F3); + +array2 f4(nx,ny,align); +array2 F4(nx,nyp,align); +rcfft2d Forward4(nx,ny,f4,F4); + +array2 f5(nx,ny,align); +array2 F5(nx,nyp,align); +rcfft2d Forward5(nx,ny,f5,F5); + +array2 f6(nx,ny,align); +array2 F6(nx,nyp,align); +rcfft2d Forward6(nx,ny,f6,F6); + +array2 f7(nx,ny,align); +array2 F7(nx,nyp,align); +rcfft2d Forward7(nx,ny,f7,F7); + +array2 f8(nx,ny,align); +array2 F8(nx,nyp,align); +rcfft2d Forward8(nx,ny,f8,F8); + +array2 f9(nx,ny,align); +array2 F9(nx,nyp,align); +rcfft2d Forward9(nx,ny,f9,F9); + +array2 f10(nx,ny,align); +array2 F10(nx,nyp,align); +rcfft2d Forward10(nx,ny,f10,F10); + +array2 f11(nx,ny,align); +array2 F11(nx,nyp,align); +rcfft2d Forward11(nx,ny,f11,F11); + +array2 f12(nx,ny,align); +array2 F12(nx,nyp,align); +rcfft2d Forward12(nx,ny,f12,F12); + +array2 dfdstr1(nx,nyp,align); +array2 dfdstr_real1(nx,ny,align); +crfft2d Backward1(nx,ny,dfdstr1,dfdstr_real1); + +array2 dfdstr2(nx,nyp,align); +array2 dfdstr_real2(nx,ny,align); +crfft2d Backward2(nx,ny,dfdstr2,dfdstr_real2); + +array2 dfdstr3(nx,nyp,align); +array2 dfdstr_real3(nx,ny,align); +crfft2d Backward3(nx,ny,dfdstr3,dfdstr_real3); + +array2 dfdstr4(nx,nyp,align); +array2 dfdstr_real4(nx,ny,align); +crfft2d Backward4(nx,ny,dfdstr4,dfdstr_real4); + +array2 dfdstr5(nx,nyp,align); +array2 dfdstr_real5(nx,ny,align); +crfft2d Backward5(nx,ny,dfdstr5,dfdstr_real5); + +array2 dfdstr6(nx,nyp,align); +array2 dfdstr_real6(nx,ny,align); +crfft2d Backward6(nx,ny,dfdstr6,dfdstr_real6); + +array2 dfdstr7(nx,nyp,align); +array2 dfdstr_real7(nx,ny,align); +crfft2d Backward7(nx,ny,dfdstr7,dfdstr_real7); + +array2 dfdstr8(nx,nyp,align); +array2 dfdstr_real8(nx,ny,align); +crfft2d Backward8(nx,ny,dfdstr8,dfdstr_real8); + +array2 dfdstr9(nx,nyp,align); +array2 dfdstr_real9(nx,ny,align); +crfft2d Backward9(nx,ny,dfdstr9,dfdstr_real9); + +array2 dfdstr10(nx,nyp,align); +array2 dfdstr_real10(nx,ny,align); +crfft2d Backward10(nx,ny,dfdstr10,dfdstr_real10); + +array2 dfdstr11(nx,nyp,align); +array2 dfdstr_real11(nx,ny,align); +crfft2d Backward11(nx,ny,dfdstr11,dfdstr_real11); + +array2 dfdstr12(nx,nyp,align); +array2 dfdstr_real12(nx,ny,align); +crfft2d Backward12(nx,ny,dfdstr12,dfdstr_real12); + +array2 elint1(nx,nyp,align); +array2 elint_real1(nx,ny,align); + +array2 elint3(nx,nyp,align); +array2 elint_real3(nx,ny,align); + +crfft2d Backward13(nx,ny,elint1,elint_real1); +crfft2d Backward14(nx,ny,elint3,elint_real3); + +array2 self1(nx,nyp,align); +array2 self_real1(nx,ny,align); +array2 self3(nx,nyp,align); +array2 self_real3(nx,ny,align); + +crfft2d Backward15(nx, ny, self1, self_real1); +crfft2d Backward16(nx, ny, self3, self_real3); + +array2 fstr(nx,nyp,align); +array2 fstr_real(nx,ny,align); + +crfft2d Backward17(nx,ny,fstr,fstr_real); + + + //-------Setting the boundary conditions for various grids-------// + MMSP::b0(grid,0) = MMSP::Dirichlet; + MMSP::b1(grid,0) = MMSP::Dirichlet; + + MMSP::b0(grid,1) = MMSP::Dirichlet; + MMSP::b1(grid,1) = MMSP::Dirichlet; + + MMSP::b0(grid,2) = MMSP::Dirichlet; + MMSP::b1(grid,2) = MMSP::Dirichlet; + + + //------Defining the lattice in the Fourier space------// + for(int i = 0 ; i < nx ; i++) + { + fk[i] = (2.0*3.14*i)/(double)nx ; + } + + + srand(time(NULL)); + + for(int t = 0 ; t 100.0) //Implementing the variation of Temperature based on the given cooling rate + { T= T- dt*tc*cr ; } + + + if(cr!=0.0) + { + G_Al_alpha = (Al_alpha_a_3 + Al_alpha_b_3*T+ Al_alpha_c_3*T*log(T) + Al_alpha_d_3*T*T) ; + G_Al_beta = (Al_beta_a_3 + Al_beta_b_3*T+ Al_beta_c_3*T*log(T) + Al_beta_d_3*T*T) ; + + G_Ti_alpha = (Ti_alpha_a_2 + Ti_alpha_b_2*T+ Ti_alpha_c_2*T*log(T) + Ti_alpha_d_2*T*T) ; + G_Ti_beta = (Ti_beta_a_1 + Ti_beta_b_1*T+ Ti_beta_c_1*T*log(T) + Ti_beta_d_1*T*T) ; + + G_V_alpha = (V_alpha_a_2 + V_alpha_b_2*T+ V_alpha_c_2*T*log(T) + V_alpha_d_2*T*T) ; //(21.96 - T/50) + G_V_beta = (V_beta_a_2 + V_beta_b_2*T+ V_beta_c_2*T*log(T) + V_beta_d_2*T*T) ; + } + + MMSP::grid update(grid); + + MMSP::b0(update,0) = MMSP::Dirichlet; + MMSP::b1(update,0) = MMSP::Dirichlet; + + MMSP::b0(update,1) = MMSP::Dirichlet; + MMSP::b1(update,1) = MMSP::Dirichlet; + + MMSP::b0(update,2) = MMSP::Dirichlet; + MMSP::b1(update,2) = MMSP::Dirichlet; + + + + + + for(int n = 0 ; n < nodes(grid) ; n++) + { + MMSP::vector x = position(grid, n) ; + f1(x[0], x[1])=grid(n)[1] ; + f2(x[0], x[1])=grid(n)[2] ; + f3(x[0], x[1])=grid(n)[3] ; + f4(x[0], x[1])=grid(n)[4] ; + f5(x[0], x[1])=grid(n)[5] ; + f6(x[0], x[1])=grid(n)[6] ; + f7(x[0], x[1])=grid(n)[7] ; + f8(x[0], x[1])=grid(n)[8] ; + f9(x[0], x[1])=grid(n)[9] ; + f10(x[0], x[1])=grid(n)[10] ; + f11(x[0], x[1])=grid(n)[11] ; + f12(x[0], x[1])=grid(n)[12] ; + } + + Forward1.fft0(f1,F1); + Forward2.fft0(f2,F2); + Forward3.fft0(f3,F3); + Forward4.fft0(f4,F4); + Forward5.fft0(f5,F5); + Forward6.fft0(f6,F6); + Forward7.fft0(f7,F7); + Forward8.fft0(f8,F8); + Forward9.fft0(f9,F9); + Forward10.fft0(f10,F10); + Forward11.fft0(f11,F11); + Forward12.fft0(f12,F12); + + for(int i = 0 ; i < nx ; i++) + { + for(int j = 0 ; j < nyp ; j++) + { + double k1 = fk[i] ; + double k2 = fk[j] ; + + double modk = (sqrt(k1*k1 + k2*k2)) ; + if(modk==0.0) + { + elint1(i,j) = 0.0 ; + elint3(i,j) = 0.0 ; + self1(i,j) = 0.0 ; + self3(i,j) = 0.0 ; + } + else + { + self1(i,j) = Bpq(k1, k2, modk, 1, 1) ; + self3(i,j) = Bpq(k1, k2, modk, 3, 3) ; + elint1(i,j) = Bpq(k1, k2, modk, 1, 1)*F1(i,j) + Bpq(k1, k2, modk, 2, 1)*F2(i,j) + Bpq(k1, k2, modk, 3, 1)*F3(i,j) + Bpq(k1, k2, modk, 4, 1)*F4(i,j) + + Bpq(k1, k2, modk, 5, 1)*F5(i,j) + Bpq(k1, k2, modk, 6, 1)*F6(i,j) + Bpq(k1, k2, modk, 7, 1)*F7(i,j) + Bpq(k1, k2, modk, 8, 1)*F8(i,j) + Bpq(k1, k2, modk, 9, 1)*F9(i,j) + + Bpq(k1, k2, modk, 10, 1)*F10(i,j) + Bpq(k1, k2, modk, 11, 1)*F11(i,j) + Bpq(k1, k2, modk, 12, 1)*F12(i,j) ; + + elint3(i,j) = Bpq(k1, k2, modk, 1, 3)*F1(i,j) + Bpq(k1, k2, modk, 2, 3)*F2(i,j) + Bpq(k1, k2, modk, 3, 3)*F3(i,j) + Bpq(k1, k2, modk, 4, 3)*F4(i,j) + + Bpq(k1, k2, modk, 5, 3)*F5(i,j) + Bpq(k1, k2, modk, 6, 3)*F6(i,j) + Bpq(k1, k2, modk, 7, 3)*F7(i,j) + Bpq(k1, k2, modk, 8, 3)*F8(i,j) + Bpq(k1, k2, modk, 9, 3)*F9(i,j) + + Bpq(k1, k2, modk, 10, 3)*F10(i,j) + Bpq(k1, k2, modk, 11, 3)*F11(i,j) + Bpq(k1, k2, modk, 12, 3)*F12(i,j) ; + } + } + } + + Backward13.fft0Normalized(elint1, elint_real1); + Backward14.fft0Normalized(elint3, elint_real3); + Backward15.fft0Normalized(self1, self_real1); + Backward16.fft0Normalized(self3, self_real3); + + + for(int n = 0 ; n < nodes(grid) ; n++) + { + MMSP::vector x = position(grid, n) ; + set(nuc_grid(n), 1) = 1.0 ; + set(nuc_grid(n), 3) = 1.0 ; + double phisum = 0.0 ; + for(int h = 0 ; h < length(grid(x)) ; h++) + { + int hindex = MMSP::index(grid(x),h) ; + if(hindex <= 12) + { + phisum += grid(n)[hindex] ; + } + } + if(phisum > 0.1) + { + set(intenergies(n), 1) = 0 ; + set(intenergies(n), 3) = 0 ; + set(selfenergies(n), 1) = 0 ; + set(selfenergies(n), 3) = 0 ; + set(nuc_grid(n), 1) = 0.0 ; + set(nuc_grid(n), 3) = 0.0 ; + } + else + { + set(intenergies(n), 1) = 4*3.14*9*dx*dx*nuc_grid(n)[1]*(elint_real1[x[0]][x[1]]); + set(intenergies(n), 3) = 4*3.14*9*dx*dx*nuc_grid(n)[3]*(elint_real3[x[0]][x[1]]); + set(selfenergies(n), 1) = 4*3.14*9*dx*dx*nuc_grid(n)[1]*nuc_grid(n)[1]*(self_real1[x[0]][x[1]]); + set(selfenergies(n), 3) = 4*3.14*9*dx*dx*nuc_grid(n)[3]*nuc_grid(n)[3]*(self_real3[x[0]][x[1]]); + } + } + + //cout<<"Finished nuc"< s = position(grid,n) ; + double sum = 0 ; + for(int h = 0 ; h < length(grid(s)) ; h++) + { + int hindex = MMSP::index(grid(s),h) ; + if(hindex <= 12) + { + sum+=grid(s)[hindex]*grid(s)[hindex] ; + } + } + + double sfts_sum = 0 ; + for(int i = 0 ; i < 6 ; i++) + { + for(int j = 0 ; j < 6 ; j++) + { + sfts_sum+= eigen_alpha[variant-1].e[i]*c[i][j]*eigen_alpha[variant-1].e[j] ; + } + } + + double felastic = 0.5*grid(n)[1]*sfts_sum - 0.5*fstr_real[s[0]][s[1]]/(nx*ny) ; + + myfile< x = position(grid, n); + MMSP::vector gradientsqtemp = gradsq(grid, x) ; + double temp1 = 0.0 ; + double temp2 = 0.0 ; + for(int i = 0 ; i < dim ; i++) + { + temp1 += gradientsqtemp[i][20] ; + temp1 += gradientsqtemp[i][21] ; + } + set(gradsqcal_grid(n),1) = temp1 ; + set(gradsqcv_grid(n), 1) = temp2 ; + + } + + + + for(int n = 0 ; n < nodes(grid) ; n++) + { + MMSP::vector x = position(grid, n); + + double strain_energy[13]; + strain_energy[0] = 0.0 ; + strain_energy[1] = (double)(1.0/(nx*ny))*(dfdstr_real1[x[0]][x[1]]) ; + strain_energy[2] = (double)(1.0/(nx*ny))*(dfdstr_real2[x[0]][x[1]]) ; + strain_energy[3] = (double)(1.0/(nx*ny))*(dfdstr_real3[x[0]][x[1]]) ; + strain_energy[4] = (double)(1.0/(nx*ny))*(dfdstr_real4[x[0]][x[1]]) ; + strain_energy[5] = (double)(1.0/(nx*ny))*(dfdstr_real5[x[0]][x[1]]) ; + strain_energy[6] = (double)(1.0/(nx*ny))*(dfdstr_real6[x[0]][x[1]]) ; + strain_energy[7] = (double)(1.0/(nx*ny))*(dfdstr_real7[x[0]][x[1]]) ; + strain_energy[8] = (double)(1.0/(nx*ny))*(dfdstr_real8[x[0]][x[1]]) ; + strain_energy[9] = (double)(1.0/(nx*ny))*(dfdstr_real9[x[0]][x[1]]) ; + strain_energy[10] = (double)(1.0/(nx*ny))*(dfdstr_real10[x[0]][x[1]]) ; + strain_energy[11] = (double)(1.0/(nx*ny))*(dfdstr_real11[x[0]][x[1]]) ; + strain_energy[12] = (double)(1.0/(nx*ny))*(dfdstr_real12[x[0]][x[1]]) ; + + + + + G_Alpha[n] = ((grid(n)[20]*G_Al_alpha + grid(n)[21]*G_V_alpha + (1-grid(n)[20]-grid(n)[21])*G_Ti_alpha + + R*T*(grid(n)[20]*log(grid(n)[20]) + grid(n)[21]*log(grid(n)[21]) + (1-grid(n)[20]-grid(n)[21])*log((1-grid(n)[20]-grid(n)[21]))) + + grid(n)[20]*grid(n)[21]*L0_HCP_Al_V + grid(n)[20]*(1-grid(n)[20]-grid(n)[21])*L0_HCP_Al_Ti + grid(n)[21]*(1-grid(n)[20]-grid(n)[21])*L0_HCP_Ti_V))/G_normalize ; + + G_Beta[n] = (grid(n)[20]*G_Al_beta + grid(n)[21]*G_V_beta + (1-grid(n)[20]-grid(n)[21])*G_Ti_beta + + R*T*(grid(n)[20]*log(grid(n)[20]) + grid(n)[21]*log(grid(n)[21]) + (1-grid(n)[20]-grid(n)[21])*log((1-grid(n)[20]-grid(n)[21]))) + + grid(n)[20]*grid(n)[21]*L0_BCC_Al_V + grid(n)[20]*(1-grid(n)[20]-grid(n)[21])*L0_BCC_Al_Ti + grid(n)[21]*(1-grid(n)[20]-grid(n)[21])*L0_BCC_Ti_V + + grid(n)[20]*grid(n)[21]*(1-grid(n)[20]-grid(n)[21])*L0_BCC_Al_Ti_V)/G_normalize ; + + W[n] = W_prefac*(grid(n)[20]*W_Al + grid(n)[21]*W_V + (1-grid(n)[20]-grid(n)[21])*W_Ti) ; + + + MMSP::vector gradient = grad(grid, x) ; + MMSP::vector gradientsq = gradsq(grid, x) ; + + + thermo_auxillary_terms(gradient, gradientsq, grid(n)[20], grid(n)[21]) ; + + MMSP::vector gradcalp4 = gradsq(gradsqcal_grid, x) ; + MMSP::vector gradcvp4 = gradsq(gradsqcv_grid, x) ; + + double gradp4_cal = 0 ; + double gradp4_cv = 0 ; + + for(int i = 0 ; i < dim ; i++) + { + gradp4_cal += gradcalp4[i][1] ; + gradp4_cv += gradcvp4[i][1] ; + } + + double phi_grad[12] ; + double phi_gradientsq[12] ; + for(int h = 0 ; h < length(grid(x)) ; h++) + { + int hindex = MMSP::index(grid(x),h) ; + if(hindex <= 12) + { + phi_grad[hindex-1] = 0 ; + phi_gradientsq[hindex-1] = 0 ; + for(int i = 0 ; i < dim ; i++) + { + phi_grad[hindex-1]+= gradient[i][hindex] ; + phi_gradientsq[hindex-1]+= gradientsq[i][hindex] ; + } + } + } + + + + for(int h = 0 ; h < length(grid(x)) ; h++) + { + int hindex = MMSP::index(grid(x),h) ; + if(hindex <= 12) + { + + /*hphidoubleprime[n][hindex-1] = 60*grid(n)[hindex]*(2*grid(n)[hindex]-1)*(grid(n)[hindex]-1) ; + hphi[n][hindex-1] = pow(grid(n)[hindex],3)*(6*pow(grid(n)[hindex],2) - 15*grid(n)[hindex] + 10) ; + hphiprime[n][hindex-1] = 30*pow(grid(n)[hindex],2)*pow((grid(n)[hindex]-1),2) ;*/ + + hphidoubleprime[n][hindex-1] = 2*pow(grid(n)[hindex],1) - 3*pow(grid(n)[hindex],2) ; + hphi[n][hindex-1] = pow(grid(n)[hindex],3)/3 - pow(grid(n)[hindex],4)/4 ; + hphiprime[n][hindex-1] = pow(grid(n)[hindex],2) - pow(grid(n)[hindex],3) ; + + gphidoubleprime[n][hindex-1] = 2*(6*pow(grid(n)[hindex],2) - 6*grid(n)[hindex] + 1) ; + gphiprime[n][hindex-1] = 2*grid(n)[hindex]*(1-grid(n)[hindex])*(1-2*grid(n)[hindex]) ; + gphi[n][hindex-1] = pow(grid(n)[hindex],2)*pow((1-grid(n)[hindex]),2) ; + + + } + } + + double hphidoubleprimesum = 0; + double hphiprimesum1 = 0; + double hphiprimesum2 = 0; + double hphisum = 0; + double gphidoubleprimesum = 0; + double gphiprimesum = 0; + double gphisum = 0; + + for(int h = 0 ; h < length(grid(x)) ; h++) + { + int hindex = MMSP::index(grid(x),h) ; + if(hindex <= 12) + { + hphidoubleprimesum += hphidoubleprime[n][hindex-1]*pow(phi_grad[hindex-1],2) ; + hphiprimesum1 += hphiprime[n][hindex-1]*phi_gradientsq[hindex-1]; + hphiprimesum2 += hphiprime[n][hindex-1]*phi_grad[hindex-1] ; + hphisum += hphi[n][hindex-1] ; + + gphiprimesum += gphiprime[n][hindex-1]*phi_gradientsq[hindex-1] ; + gphidoubleprimesum += gphidoubleprime[n][hindex-1]*phi_grad[hindex-1] ; + } + } + + + double c_al_rhs = 2*(del_dGAlpha_dAl - del_dGBeta_dAl)*hphiprimesum2 + delsq_dGAlpha_dAl*hphisum + delsq_dGBeta_dAl*(1-hphisum) + + (dGAlpha_dAl - dGBeta_dAl)*(hphidoubleprimesum + hphiprimesum1) + (W_Al - W_Ti)*(gphiprimesum + gphidoubleprimesum) ; + double c_v_rhs = 2*(del_dGAlpha_dV - del_dGBeta_dV)*hphiprimesum2 + delsq_dGAlpha_dV*hphisum + delsq_dGBeta_dV*(1-hphisum) + + (dGAlpha_dV - dGBeta_dV)*(hphidoubleprimesum + hphiprimesum1) + (W_V - W_Ti)*(gphiprimesum + gphidoubleprimesum) ; + + set(update(n), 20) = grid(n)[20] + dt*(Dalal*(c_al_rhs)- kappa_c*gradp4_cal + Dalv*(c_v_rhs)- 0.5*kappa_c*gradp4_cv) ; + set(update(n), 21) = grid(n)[21] + dt*(Dvv*(c_v_rhs) - kappa_c*gradp4_cv + Dval*(c_al_rhs)- 0.5*kappa_c*gradp4_cal) ; + + double lap_aniso[13]; + + + + MMSP::sparse dFdp; + phi_type dFall = 0.0; + phi_type dFall_no = 0 ; + phi_type phi_sum = 0.0 ; + + for (int j = 0; j < length(grid(n)); j++) + { + int jindex = MMSP::index(grid(n), j); + if(jindex<=12) + { + phi_sum += grid(n)[jindex] ; + } + } + + phi_type phi_beta = 1 - phi_sum ; + + for (int j = 0; j < length(grid(n)); j++) + { + int jindex = MMSP::index(grid(n), j); + + MMSP::vector x = position(grid, n); + + W[n] = W_prefac*(grid(n)[20]*W_Al + grid(n)[21]*W_V + (1-grid(n)[20]-grid(n)[21])*W_Ti) ; + + if(jindex <= 12) + { + phi_type lap_aniso = 0.0 ; + lap_aniso+= (gradientsq[0][jindex]*epsi[jindex-1][0][0] + gradientsq[1][jindex]*epsi[jindex-1][1][1]) ; + + + + + double interaction_energy = 0 ; + interaction_energy+= W[n]*grid(n)[jindex]*pow(phi_beta, 2); + interaction_energy-= W[n]*pow(grid(n)[jindex],2)*(phi_beta); + + int check = 0; + for(int k = 0 ; k < length(grid(n)); k++) + { + int tempindex = MMSP::index(grid(n), k); + if((tempindex!=jindex)&&(tempindex <=12)) + { + interaction_energy+= W[n]*pow(grid(n)[tempindex],2)*grid(n)[jindex]; + interaction_energy-= W[n]*pow(grid(n)[tempindex],2)*(phi_beta); + } + } + + + double Gdiff = G_Alpha[n] - G_Beta[n]; + + set(dFdp, jindex) = -1*hphiprime[n][jindex-1] + strain_energy[jindex] - lap_aniso ; + + + + dFall += dFdp[jindex]; + dFall_no+=1; + } + + } + L = 0.1; + + for (int h = 0; h < length(grid(n)); h++) + { + + int hindex = MMSP::index(grid(n), h); + if(hindex<=12) + { + store_type dpdt; + set(dpdt, hindex) = -L * (dFdp[hindex]); + //set(dpdt, hindex) = -L * ((dFall_no+1)*dFdp[hindex] - dFall); + set(update(n), hindex) = grid(n)[hindex] + dt * dpdt[hindex]; + } + } + + } + + swap(grid, update); + +} + + + + + + + + + +return 0 ; + +} + + + + + + + diff --git a/examples/Integration_with_fftw/strain_modules.hpp b/examples/Integration_with_fftw/strain_modules.hpp new file mode 100644 index 0000000..05eb531 --- /dev/null +++ b/examples/Integration_with_fftw/strain_modules.hpp @@ -0,0 +1,180 @@ +using namespace std ; + +double c[6][6], sigma00[12][6] ; +double c_norm = 1; + +double omega_inv_ij(double* cnew, double* k , double modk) +{ + double sum = 0.0 ; + for(int i = 0 ; i < 4 ; i++) + { + sum += cnew[i]*k[i] ; + } + return (sum)/(modk*modk) ; +} + +void define_c_sigma() +{ + + for(int i = 0 ; i < 6 ; i++) + { + for(int j = 0 ; j < 6 ; j++) + { + c[i][j] = 0.0 ; + } + } + double scale = 1.0 ; + c[0][0] = 175.0/scale; + c[1][1] = 175.0/scale; + c[2][2] = 220.0/scale; + c[0][1] = 88.7/scale ; + c[0][2] = 62.3/scale ; + c[1][2] = 62.3/scale ; + c[3][3] = 62.2/scale ; + c[4][4] = 62.2/scale ; + c[5][5] = (c[0][0]-c[0][1])/2.0 ; + c[5][5] /= scale ; + + + + for(int variant = 0 ; variant < 12 ; variant++) + { + for(int i = 0 ; i < 6 ; i++) + { + sigma00[variant][i] = 0.0 ; + for(int j = 0 ; j < 6 ; j++) + { + sigma00[variant][i] += c[i][j]*eigen_alpha[variant].e[j] ; + } + } + } + + + +} + + +double B(double k1, double k2, double modk, int variant) { + double c11[4] = {c[0][0], c[0][5], c[5][0], c[5][5]} ; + double c12[4] = {c[0][5], c[0][1], c[5][5], c[5][1]} ; + double c21[4] = {c[5][0], c[5][5], c[1][0], c[1][5]} ; + double c22[4] = {c[5][5], c[5][1], c[1][5], c[1][1]} ; + double k[4] = {k1*k1, k1*k2, k2*k1, k2*k2} ; + + + double omega_inv[2][2] = {{omega_inv_ij(c11, k, modk), omega_inv_ij(c12, k, modk)}, {omega_inv_ij(c21, k, modk), omega_inv_ij(c22, k, modk)}} ; + + + double det_omega_inv = omega_inv[0][0]*omega_inv[1][1] - omega_inv[1][0]*omega_inv[0][1] + 1e-05 ; + if(det_omega_inv==0) cout<<"Found zero det"< gradient, MMSP::vector gradientsq, double c_Al, double c_V) +{ + double grad_cal = gradient[0][20] ;// + gradient[1][20] ;// + gradient[2][20] ; + double grad_cv = gradient[0][21] ;// + gradient[1][21] ;//+ gradient[2][21] ; + double gradsq_cal = gradientsq[0][20] ;// + gradientsq[1][20] ;//+ gradientsq[2][20] ; + double gradsq_cv = gradientsq[0][21] ;//+ gradientsq[1][21] ;//+ gradientsq[2][21] ; + dGAlpha_dAl = (G_Al_alpha/G_normalize - G_Ti_alpha/G_normalize) + log(c_Al) - log((1-c_Al-c_V)) + c_V*L0_HCP_Al_V/G_normalize + + (1-2*c_Al-c_V)*L0_HCP_Al_Ti/G_normalize - c_V*L0_HCP_Ti_V/G_normalize ; + dGBeta_dAl = (G_Al_beta/G_normalize - G_Ti_beta/G_normalize) + log(c_Al) - log((1-c_Al-c_V)) + c_V*L0_BCC_Al_V/G_normalize + + (1-2*c_Al-c_V)*L0_BCC_Al_Ti/G_normalize - c_V*L0_BCC_Ti_V/G_normalize + (c_V*(1-c_Al-c_V) + - c_Al*c_V)*L0_BCC_Al_Ti_V/G_normalize ; + dGAlpha_dV = (G_V_alpha/G_normalize - G_Ti_alpha/G_normalize) + log(c_V) - log((1-c_Al-c_V)) + c_Al*L0_HCP_Al_V/G_normalize + + (1-c_Al-2*c_V)*L0_HCP_Ti_V/G_normalize - c_Al*L0_HCP_Al_Ti/G_normalize ; + dGBeta_dV = (G_V_beta/G_normalize - G_Ti_beta/G_normalize) + log(c_V) - log((1-c_Al-c_V)) + c_Al*L0_BCC_Al_V/G_normalize + + (1-c_Al-2*c_V)*L0_BCC_Ti_V/G_normalize - c_Al*L0_BCC_Al_Ti/G_normalize + (c_Al*(1-c_Al-c_V) - + c_Al*c_V)*L0_BCC_Al_Ti_V/G_normalize ; + del_dGAlpha_dAl = grad_cal*(1.0/c_Al + 1.0/(1.0-c_Al-c_V) - 2*L0_HCP_Al_Ti/G_normalize) + grad_cv*(1.0/(1.0-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize) ; + del_dGBeta_dAl = grad_cal*(1.0/c_Al + 1/(1-c_Al-c_V) - 2*L0_BCC_Al_Ti/G_normalize - 2*c_V*L0_BCC_Al_Ti_V/G_normalize) + + grad_cv*(1/(1-c_Al-c_V) + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) ; + del_dGAlpha_dV = grad_cv*(1.0/c_V + 1/(1-c_Al-c_V) - 2*L0_HCP_Ti_V/G_normalize) + grad_cal*(1/(1-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize - L0_HCP_Ti_V/G_normalize) ; + del_dGBeta_dV = grad_cv*(1.0/c_V + 1/(1-c_Al-c_V) -2*L0_BCC_Ti_V/G_normalize - 2*c_Al*L0_BCC_Al_Ti_V/G_normalize) + + grad_cal*(1/(1-c_Al-c_V) + L0_BCC_Al_V/G_normalize - L0_BCC_Al_Ti/G_normalize - L0_BCC_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) ; + delsq_dGAlpha_dAl = gradsq_cal*(1.0/c_Al + 1/(1-c_Al-c_V) - 2*L0_HCP_Al_Ti/G_normalize) + gradsq_cv*(1/(1-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize) + grad_cal*(-grad_cal/pow(c_Al,2) + + (grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) + grad_cv*((grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) ; + + delsq_dGAlpha_dV = gradsq_cv*(1.0/c_V + 1/(1-c_Al-c_V) - 2*L0_HCP_Ti_V/G_normalize) + gradsq_cal*(1/(1-c_Al-c_V) + + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize - L0_HCP_Ti_V/G_normalize) + grad_cv*(-grad_cv/pow(c_V,2) + + (grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) + grad_cal*((grad_cal + grad_cv)/pow((1-c_Al-c_V),2)) ; + + delsq_dGBeta_dAl = gradsq_cal*(1.0/c_Al + 1/(1-c_Al-c_V) - 2*L0_BCC_Al_Ti/G_normalize - 2*c_V*L0_BCC_Al_Ti_V/G_normalize) + + gradsq_cv*(1/(1-c_Al-c_V) + L0_HCP_Al_V/G_normalize - L0_HCP_Al_Ti/G_normalize -L0_HCP_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) + grad_cal*(-grad_cal/pow(c_Al,2) + (grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) - 2*grad_cv*L0_BCC_Al_Ti_V/G_normalize) + grad_cv*((grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) + (-2*grad_cal*grad_cv)*L0_BCC_Al_Ti_V/G_normalize) ; + delsq_dGBeta_dV = gradsq_cv*(1.0/c_V + 1/(1-c_Al-c_V) -2*L0_BCC_Ti_V/G_normalize - 2*c_Al*L0_BCC_Al_Ti_V/G_normalize) + + gradsq_cal*(1/(1-c_Al-c_V) + L0_BCC_Al_V/G_normalize - L0_BCC_Al_Ti/G_normalize - L0_BCC_Ti_V/G_normalize + + (1-2*c_Al-2*c_V)*L0_BCC_Al_Ti_V/G_normalize) + grad_cv*(-grad_cv/pow(c_V,2) + (grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) - 2*grad_cal*L0_BCC_Al_Ti_V/G_normalize) + grad_cal*((grad_cal + + grad_cv)/pow((1-c_Al-c_V),2) + (-2*grad_cal*grad_cv)*L0_BCC_Al_Ti_V/G_normalize) ; +} + diff --git a/examples/Integration_with_fftw/wisdom3.txt b/examples/Integration_with_fftw/wisdom3.txt new file mode 100644 index 0000000..d25af0e --- /dev/null +++ b/examples/Integration_with_fftw/wisdom3.txt @@ -0,0 +1,132 @@ +(fftw-3.3.8 fftw_wisdom #xb400f3dc #xe7b0abe3 #xf6045330 #xbdf50fd0 + (fftw_rdft_rank0_register 2 #x10bdd #x10bdd #x0 #x2f277dd9 #x8872c036 #x15af74cf #x92533a7a) + (fftw_rdft2_rank_geq2_register 0 #x10bdd #x10bdd #x0 #xc4c2d3ae #x47fb9fbd #x832b5514 #x988a4c64) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xbfd744fa #xcd0c0147 #x3c55b600 #xa40fcf94) + (fftw_rdft_nop_register 0 #x11bdd #x11bdd #x0 #xd0702255 #xe76a9ab3 #x5398ff07 #x60ee718e) + (fftw_codelet_hc2cb_12 0 #x10bdd #x10bdd #x0 #xbc0ac07d #xfe0bec6d #xd708004c #x36fd29f0) + (fftw_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #x0d8c5a5e #xc54c873f #x709164ac #x29cb57ce) + (fftw_dft_thr_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x9bced310 #xefba81cd #x422b6992 #xf22cc2e5) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x2dff3680 #x4df65c6f #x8a1d36a9 #x581e071e) + (fftw_rdft2_rank_geq2_register 0 #x10bdd #x10bdd #x0 #x4e9de8b8 #x2468c9ce #x7579b120 #x6913873f) + (fftw_rdft_rank0_register 3 #x10bdd #x10bdd #x0 #xd5f02a58 #x0f9b3f0e #x5bce0409 #x8f5fae61) + (fftw_rdft2_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xccf40585 #x20d1e6c7 #x9ace79d3 #x080fc256) + (fftw_rdft2_rank_geq2_register 0 #x10bdd #x10bdd #x0 #x3761c399 #x019a772b #x77598fc2 #x456f097e) + (fftw_codelet_n1_20 1 #x10fdd #x10fdd #x0 #xe175531b #x706e2fba #x1c3c548d #xafdc3c73) + (fftw_codelet_r2cb_12 0 #x10bdd #x10bdd #x0 #x7136fc37 #x70708b30 #xccf04970 #xd3124c27) + (fftw_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #x380b5628 #x5dbcf8cb #x4762452d #x994fabc4) + (fftw_dft_nop_register 0 #x10bdd #x10bdd #x0 #xad3918fd #x2496a2a0 #x922ec9ab #x4b4b5ebe) + (fftw_dft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x1aac7279 #x62248f8e #x0c6d17fb #xccc5f6e3) + (fftw_dft_buffered_register 1 #x11bdd #x11bdd #x0 #x5e71e465 #x6c7feebb #xf25cee49 #x4eb31d2c) + (fftw_dft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x3bb9cc72 #xc20e5aa7 #xef190cab #x3098a596) + (fftw_rdft2_rank_geq2_register 0 #x11bdd #x11bdd #x0 #xe1f15505 #x2adbce96 #x6d412cf6 #xf9b4e43b) + (fftw_codelet_t1_15 0 #x10bdd #x10bdd #x0 #xbeaef693 #x1c489eed #xbc46ff97 #xdc117086) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x217ac1bc #x5ca85f8d #x353c6d1b #xcfe9dc7f) + (fftw_codelet_t1_15 0 #x10fdd #x10fdd #x0 #xe569912e #x52cc0fd3 #x52f038f9 #x5c947057) + (fftw_rdft_rank0_register 3 #x10bdd #x10bdd #x0 #x2da028d5 #xb58c3e82 #x6639caa7 #xb0df57a1) + (fftw_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #xb5fa8cd8 #x6260ffdd #x3ab7f61a #xeaf64130) + (fftw_rdft_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x58f130a7 #x00ffde33 #x2a929d8c #x0ce428b9) + (fftw_codelet_n1_20 1 #x10bdd #x10bdd #x0 #x02cccfd1 #x36365990 #x2ddc0d2e #x3f79cbb4) + (fftw_dft_vrank_geq1_register 0 #x10fdd #x10fdd #x0 #xe1ed72ce #x8950b1e9 #xcb197278 #xbeead0d6) + (fftw_rdft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x7dbbe4e6 #x83ce0a70 #x049cddce #x3e23fef4) + (fftw_codelet_t1_4 0 #x10bdd #x10bdd #x0 #x60ec8cbc #x4f39217d #xe6a50464 #x41fbbe18) + (fftw_rdft2_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x4f997380 #xf3892789 #xc65a829f #x4050040b) + (fftw_codelet_n1_20 0 #x10bdd #x10bdd #x0 #x4b66270c #x0d3a4d5a #x2f71ae85 #x9e57fd84) + (fftw_dft_buffered_register 1 #x10bdd #x10bdd #x0 #x98055601 #xba6c8c42 #x27af0434 #xe89cde6c) + (fftw_codelet_n1_6 0 #x10bdd #x10bdd #x0 #x42e777e2 #x19a6cc19 #x95570d81 #x08abb6c1) + (fftw_codelet_n1_20 1 #x10fdd #x10fdd #x0 #x4e88d013 #xa939335f #xea785f0c #x78ee25de) + (fftw_codelet_t1_15 0 #x10bdd #x10bdd #x0 #x528c9a4a #x2f4e6a2a #xdb6dfc61 #x7b991c49) + (fftw_codelet_t1_2 0 #x11bdd #x11bdd #x0 #x99aff498 #xacae7a61 #xbf828521 #x74dfedad) + (fftw_codelet_r2cf_10 0 #x11bdd #x11bdd #x0 #x33061f91 #xc801f5bd #x6c71b50c #x231458b8) + (fftw_rdft2_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #xdb6fb085 #xb8b5b225 #x72bb727c #xeb1fb6dd) + (fftw_dft_thr_vrank_geq1_register 0 #x10fdd #x10fdd #x0 #xca6534fb #x1ebfc6b6 #x89e9b80c #xaebe5d12) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x176da321 #xdcd80be5 #xc3763fdc #x6a902049) + (fftw_rdft_rank0_register 3 #x11bdd #x11bdd #x0 #xd5f02a58 #x0f9b3f0e #x5bce0409 #x8f5fae61) + (fftw_dft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xc168f1ca #x0952ab9d #x0fc451e8 #x7c556320) + (fftw_rdft_rank0_register 3 #x11bdd #x11bdd #x0 #xc05be51f #xb9d6d82d #x3351fcfa #x7b64f1f7) + (fftw_dft_indirect_register 0 #x10bdd #x10bdd #x0 #x0b8ce4be #x4dbf31c9 #x15dffd89 #x59cc8481) + (fftw_codelet_t1_15 0 #x10fdd #x10fdd #x0 #x2dbdb995 #xf32b6d1c #x616763e2 #xf96ed6be) + (fftw_codelet_hc2cb_2 0 #x10bdd #x10bdd #x0 #xc7ded0df #xef8125d2 #x283e0883 #x4c6ec45b) + (fftw_codelet_hf_10 0 #x11bdd #x11bdd #x0 #xec60a60a #x060fde4b #x4346b092 #x6f6ffb14) + (fftw_dft_buffered_register 1 #x11bdd #x11bdd #x0 #xb2ee0e47 #x9cfec5f0 #x62d36fcd #x4983ad94) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x79003252 #xb8ff8889 #x75736c33 #xd3b94731) + (fftw_dft_vrank_geq1_register 0 #x10fdd #x10fdd #x0 #x7d339db8 #xd192acfc #xc314a4a8 #xd81b1b2b) + (fftw_rdft2_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xe8edb5a4 #x82ee5026 #x1c8a6a05 #xa9930ede) + (fftw_rdft_rank0_register 3 #x11bdd #x11bdd #x0 #xb61a5e15 #xeeaa58e9 #x767eb0f5 #x351cc85c) + (fftw_codelet_r2cbIII_2 2 #x10bdd #x10bdd #x0 #x9b039ffd #xd7b7cf26 #xbe926655 #x31a0e74b) + (fftw_rdft2_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xf8c35884 #xd784c83b #xc087d883 #xc01efddb) + (fftw_dft_buffered_register 1 #x10bdd #x10bdd #x0 #x61ac5947 #xb8c72df3 #xe2b489eb #xb71b6e9c) + (fftw_codelet_t1_4 0 #x10bdd #x10bdd #x0 #x39fe97c3 #xdeb36357 #x0c79f0e2 #x4d5eeb7d) + (fftw_dft_nop_register 0 #x10bdd #x10bdd #x0 #xb93c6c58 #x3ccd439d #xe679137c #xcfc78bd8) + (fftw_dft_buffered_register 1 #x11bdd #x11bdd #x0 #xb6bf0d5f #x163fa984 #x43fa1d83 #xa4766906) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #x5745ba77 #x7f114a6f #x85dc5f8e #x2dc69d37) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xa9fae182 #x5d008b30 #xcd8b3861 #x9db5bcbf) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x13f36872 #x2a15ca26 #xaed208ef #xeffd771e) + (fftw_rdft2_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x7719941e #xe121aaaf #x3955d46a #x120b9fad) + (fftw_rdft2_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x4fb58f4f #x780feafb #x0db1409f #xdfddfce4) + (fftw_dft_nop_register 0 #x11bdd #x11bdd #x0 #x33c09a7c #xf22ba281 #x430fb52f #x8390e6e1) + (fftw_rdft_rank0_register 3 #x10bdd #x10bdd #x0 #x9570856d #x43933383 #xbbc26567 #xa2b79dae) + (fftw_dft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xaab80b9c #xcc08b9cb #x3b290a85 #x473ea93a) + (fftw_codelet_t1_15 0 #x10bdd #x10bdd #x0 #x0a86cf7a #x677daffa #xf1520de5 #xf74a1d9b) + (fftw_rdft2_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #xa13bb74d #xf613935e #xbf4ebf2a #xb4e2cd38) + (fftw_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #xd2999da4 #x81c5f070 #x7e1a45d0 #x4b0687ef) + (fftw_rdft_rank0_register 3 #x11bdd #x11bdd #x0 #xb7a70da5 #x3fb5ead6 #x34f3ae69 #x7b014b3a) + (fftw_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #x101174f0 #x949abca1 #x293a1ba8 #x94b288d8) + (fftw_dft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x365e283b #xe0265b20 #x87f7846b #xb38cb662) + (fftw_codelet_t1_4 0 #x10bdd #x10bdd #x0 #xe69427d6 #xb88e824b #xdc536b5e #x5ac5a35d) + (fftw_dft_vrank_geq1_register 0 #x10fdd #x10fdd #x0 #x7222edf7 #x7641a9d1 #xfa1ff78c #x397a0ab1) + (fftw_codelet_r2cf_12 2 #x11bdd #x11bdd #x0 #x56eacc8e #x18d6d621 #xb220a60e #x6db60cfe) + (fftw_dft_buffered_register 1 #x11bdd #x11bdd #x0 #x57e454d8 #x644aa6a9 #xd2fbcdab #x8aff2db8) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xd9b2d781 #xc3a20e37 #x6b354a90 #x849de0dd) + (fftw_rdft2_rank_geq2_register 0 #x11bdd #x11bdd #x0 #x787150e9 #x884570c2 #xab6e2ad5 #xe7162fe5) + (fftw_codelet_r2cb_2 2 #x10bdd #x10bdd #x0 #x1cc9ba97 #x6b24dc97 #x5797b4b9 #x35499215) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #x26456032 #x2b651f35 #xec10ba0a #xdfe17a4f) + (fftw_rdft2_rank_geq2_register 0 #x11bdd #x11bdd #x0 #xc464372d #xccd9f299 #x663a6229 #xa6c9e858) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xbfc8b7ee #x071d248f #x31bb51c9 #x669b9625) + (fftw_rdft2_nop_register 0 #x10bdd #x10bdd #x0 #xd42fd6ca #xa45b352a #xfe64bf12 #xc4183293) + (fftw_codelet_n1_20 0 #x10bdd #x10bdd #x0 #xf869bbe7 #x0b032b77 #x3e3ccc84 #xc680d0ec) + (fftw_rdft2_thr_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #xfc5937ff #xdbe2d255 #x92d6f20a #x49d6e142) + (fftw_rdft2_thr_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x1b0d8308 #x07efb47f #x45941e11 #x801394ad) + (fftw_dft_indirect_register 0 #x10bdd #x10bdd #x0 #xd5040d06 #xd9c0f5fa #x82633681 #xef09d8a1) + (fftw_dft_r2hc_register 0 #x11bdd #x11bdd #x0 #x911ad070 #x18bddf79 #x1ecc2380 #xb54c5873) + (fftw_dft_vrank_geq1_register 0 #x10fdd #x10fdd #x0 #x17402c7b #x5a5f6538 #xed010f79 #x7119189c) + (fftw_dft_buffered_register 0 #x10bdd #x10bdd #x0 #xaf8d7e2c #x497c11cc #xccc920a3 #xc9dcdf52) + (fftw_codelet_hc2cf_2 0 #x11bdd #x11bdd #x0 #x7a888533 #xff9a7700 #xe7902481 #xc2a04da7) + (fftw_dft_thr_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x8bd5bf4f #xcfb0e9ac #x7eeaa210 #xca6e6053) + (fftw_codelet_r2cfII_2 2 #x11bdd #x11bdd #x0 #xf61fc70e #x5e3d94a7 #x2045059b #x70a29d3a) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #x1d734f02 #x7f930ca3 #x7bc890a3 #xb1c17b95) + (fftw_dft_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x8c43a74c #x92788a44 #xda64d483 #x65b511e2) + (fftw_dft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x03cfbc78 #x40b9cf7b #x6face781 #xd00a60e0) + (fftw_codelet_r2cf_2 2 #x11bdd #x11bdd #x0 #x0bb8809a #xbe2cd196 #xb827886d #xebd4c73f) + (fftw_rdft_rank0_register 3 #x10bdd #x10bdd #x0 #xc05be51f #xb9d6d82d #x3351fcfa #x7b64f1f7) + (fftw_rdft_thr_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #x7dbbe4e6 #x83ce0a70 #x049cddce #x3e23fef4) + (fftw_codelet_hc2cfdft_12 0 #x11bdd #x11bdd #x0 #xf031f926 #x8173207b #xeaab2e1d #xc1a055c1) + (fftw_dft_buffered_register 1 #x10bdd #x10bdd #x0 #x17d50620 #x24ea06d7 #x329b46f7 #x2803c17c) + (fftw_rdft_rank0_register 3 #x11bdd #x11bdd #x0 #x2da028d5 #xb58c3e82 #x6639caa7 #xb0df57a1) + (fftw_rdft_rank0_register 2 #x10bdd #x10bdd #x0 #xc1873e43 #xe2c8f0c9 #x0b3f6064 #x6383d018) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #x80f76640 #x8b389368 #x688927df #xd8daf609) + (fftw_codelet_r2cb_12 2 #x10bdd #x10bdd #x0 #xfbf5b5be #x58e1bb86 #x857be923 #x92fe283b) + (fftw_rdft_rank0_register 3 #x10bdd #x10bdd #x0 #xb61a5e15 #xeeaa58e9 #x767eb0f5 #x351cc85c) + (fftw_dft_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x0d60708b #x48ca23d4 #xe14df776 #xfc9d4649) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #xe3947dd9 #x98dc6e46 #x4d53bde2 #x72d7afb7) + (fftw_codelet_n1_20 1 #x11bdd #x11bdd #x0 #x56c6562d #x074670dc #x5f602442 #xef74bd91) + (fftw_codelet_r2cb_25 0 #x10bdd #x10bdd #x0 #x05c49e16 #x6bbc331d #xfaa21e3d #x789f9879) + (fftw_rdft_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #xa4d5568d #xd3d0d558 #xa80bae0a #xae3d3a84) + (fftw_rdft2_rank_geq2_register 0 #x10bdd #x10bdd #x0 #x32803077 #xa03afe76 #x783a6b0c #xdf03f4b2) + (fftw_codelet_r2cfII_12 2 #x11bdd #x11bdd #x0 #x57c8d1d8 #x0f629f33 #xaa4a46db #xd650e8f2) + (fftw_rdft_rank0_register 2 #x11bdd #x11bdd #x0 #xc1873e43 #xe2c8f0c9 #x0b3f6064 #x6383d018) + (fftw_rdft_rank0_register 2 #x11bdd #x11bdd #x0 #x2f277dd9 #x8872c036 #x15af74cf #x92533a7a) + (fftw_codelet_n1_2 0 #x11bdd #x11bdd #x0 #x56bf3ab6 #x6955936b #x158dc279 #x21520901) + (fftw_rdft2_rank_geq2_register 0 #x11bdd #x11bdd #x0 #x6dc98a76 #x488c2164 #xa6f257dd #x13faf8de) + (fftw_dft_nop_register 0 #x11bdd #x11bdd #x0 #x712d86dd #x873f405a #xff3498aa #x1b664ebd) + (fftw_codelet_r2cf_15 0 #x11bdd #x11bdd #x0 #xa809042c #xf1dfc1b7 #xc6aa7f91 #xdabf73bd) + (fftw_dft_buffered_register 0 #x11bdd #x11bdd #x0 #xd2453370 #xeb2aef14 #xbab8606e #x094dbccc) + (fftw_codelet_n1_6 0 #x10bdd #x10bdd #x0 #xb2d9faaf #x5f5d3f75 #x2db433a4 #xac4cadf8) + (fftw_codelet_n1_12 1 #x11bdd #x11bdd #x0 #xaae93e76 #x9f5e7e9c #x92c9a700 #xdbf91043) + (fftw_codelet_t1_15 0 #x11bdd #x11bdd #x0 #xb774e892 #x5bbd26ce #x461096ec #x8d62132d) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #x0758893b #x0662d666 #xf5feb6f9 #xdbe4dd82) + (fftw_rdft2_thr_vrank_geq1_register 0 #x10bdd #x10bdd #x0 #x8ea61c8e #xdd714d51 #x2aeeddba #xda93853f) + (fftw_codelet_n1_6 1 #x10bdd #x10bdd #x0 #x05887c3a #xa9e7a1ed #xd5757b27 #xb3ba699c) + (fftw_dft_r2hc_register 0 #x10bdd #x10bdd #x0 #x310abcad #x604bf333 #xd257a615 #x801725a4) + (fftw_dft_thr_vrank_geq1_register 0 #x10fdd #x10fdd #x0 #xc5f02fae #x30de4b46 #xfd219713 #x2fc0657f) + (fftw_rdft2_vrank_geq1_register 0 #x11bdd #x11bdd #x0 #xe48298c7 #x5ec0f615 #x1b474cc0 #x3efee3bd) +) diff --git a/examples/beginners_diffusion/1stDiffusion b/examples/beginners_diffusion/1stDiffusion new file mode 100755 index 0000000..e588708 Binary files /dev/null and b/examples/beginners_diffusion/1stDiffusion differ diff --git a/examples/beginners_diffusion/MMSPDiffusion b/examples/beginners_diffusion/MMSPDiffusion new file mode 100755 index 0000000..dc52f13 Binary files /dev/null and b/examples/beginners_diffusion/MMSPDiffusion differ diff --git a/examples/beginners_diffusion/MMSPDiffusion2D b/examples/beginners_diffusion/MMSPDiffusion2D new file mode 100755 index 0000000..5492c4a Binary files /dev/null and b/examples/beginners_diffusion/MMSPDiffusion2D differ diff --git a/examples/pfhub_bm8/F.txt b/examples/pfhub_bm8/F.txt new file mode 100644 index 0000000..f3ec621 --- /dev/null +++ b/examples/pfhub_bm8/F.txt @@ -0,0 +1,2 @@ +37.3603 +45.0504 diff --git a/examples/pfhub_bm8/MMSPNucleation b/examples/pfhub_bm8/MMSPNucleation new file mode 100755 index 0000000..bb4ad68 Binary files /dev/null and b/examples/pfhub_bm8/MMSPNucleation differ diff --git a/examples/pfhub_bm8/MMSPNucleation.cpp b/examples/pfhub_bm8/MMSPNucleation.cpp new file mode 100644 index 0000000..159d145 --- /dev/null +++ b/examples/pfhub_bm8/MMSPNucleation.cpp @@ -0,0 +1,119 @@ +#include +#include +#include"MMSP.hpp" +using namespace MMSP; + +typedef float phi_type; +typedef MMSP::sparse store_type; + +double hphi(double phi) +{ + return pow(phi,3)*(10-15*phi+6*pow(phi,2)) ; +} + +double hphiprime(double phi) +{ + return 30*pow(phi,2)*pow((phi-1),2) ; +} +int main(int argc, char* argv[]) +{ + Init(argc, argv); + + double R = 8.314 ; + double T = 1200.0 ; + double dt = 0.01 ; + double Vm = 0.00001; + int variants = 20 ; + const int dim = 2; + const int nx = 100; + const int ny = 100; + long steps = 5e+8 ; + int iterations = 200; + const int node_total = nx*ny; + double epsisq = 1 ; + double W[node_total] ; + double diffusionCoefficient = 1.0; + + + grid<1,scalar > oldGrid(1,0,nx); + grid<2, store_type> newGrid(variants, 0, nx, 0, ny) ; + grid<2, store_type > update(newGrid); + + const double Lx = g1(newGrid,0) - g0(newGrid,0) ; + const double Ly = g1(newGrid,1) - g0(newGrid,1) ; + const double dx = MMSP::dx(newGrid, 0) ; + const double dy = MMSP::dx(newGrid, 1) ; + + MMSP::b0(newGrid,0) = MMSP::Dirichlet; + MMSP::b1(newGrid,0) = MMSP::Dirichlet; + + MMSP::b0(newGrid,1) = MMSP::Dirichlet; + MMSP::b1(newGrid,1) = MMSP::Dirichlet; + + MMSP::b0(update,0) = MMSP::Dirichlet; + MMSP::b1(update,0) = MMSP::Dirichlet; + + MMSP::b0(update,1) = MMSP::Dirichlet; + MMSP::b1(update,1) = MMSP::Dirichlet; + double rstar = 5.0 ; + double r0 = rstar ; + double x0 = 0.5*Lx ; + double y0 = 0.5*Ly ; + for(int n = 0; n < nodes(newGrid); n++) + { + MMSP::vector x = position(newGrid, n); + store_type newGrain; + double x1 = x[0]*dx ; + double y1 = x[1]*dy ; + double r = sqrt(pow((x1-x0),2) + pow((y1-y0),2)) ; + set(newGrain, 1) = 0.5*(1-tanh(r-r0)/sqrt(2)) ; + newGrid(n) = newGrain; + update(n) = newGrain ; + } + + + double F = 0.0 ; + std::string file_name = "F.txt" ; + std::ofstream file1; + file1.open(file_name.c_str()); + + for (int k=0; k s = position(newGrid, n); + MMSP::vector gradient = grad(update, s) ; + double maggrad = gradient[0][1] + gradient[1][1] ; + F += 0.5*epsisq*pow(maggrad,2) + pow(update(n)[1],2) * pow((1 - update(n)[1]),2) -1.0/(15.0*sqrt(2.0))*hphi(update(n)[1]) ; + std::cout< x = position(update, n); + MMSP::vector gradsq = gradientsq(update, x) ; + MMSP::sparse dFdp; + store_type dpdt; + phi_type lap_aniso = (gradsq[0][1]*epsisq + gradsq[1][1]*epsisq) ; + double interaction_energy = update(n)[1]*pow((1-update(n)[1]), 2) - pow(update(n)[1],2)*(1-update(n)[1]) ; + set(dFdp, 1) = -(1)*hphiprime(update(n)[1]) + interaction_energy - lap_aniso ; + set(dpdt, 1) = -0.1* (dFdp[1]); + set(update(n), 1) = update(n)[1] + dt * dpdt[1]; + } + swap(update, newGrid); + } + file1.close(); + Finalize(); + return 0; +} + diff --git a/examples/pfhub_bm8/MMSP_for_Beginners.tex b/examples/pfhub_bm8/MMSP_for_Beginners.tex new file mode 100644 index 0000000..36dba7d --- /dev/null +++ b/examples/pfhub_bm8/MMSP_for_Beginners.tex @@ -0,0 +1,321 @@ +\documentclass[10pt]{article} +\topmargin=-.5in % topmargin is 1/2 inch (note negative value) +\oddsidemargin=0in +\textwidth=6.5in % leaves 1 inch for the right margin +\textheight=9in % 9 inches reserved for the text +\usepackage{listings} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage{amsmath} +\usepackage{graphicx} +\usepackage[colorinlistoftodos]{todonotes} +\usepackage{shadethm} +\definecolor{shadethmcolor}{rgb}{0.96,0.96,0.96} +\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref} +\def\MMSP{{\tt MMSP\ }} + +\title{MMSP for Beginners} + +\author{Paul Detwiler, Andrew Lauer, Daniel Lewis} + +\date{\today} + +\begin{document} +\maketitle +\section{Introduction} +The following is a brief tutorial on how to use \MMSP and some of it's +basic functions. If you are unfamiliar with the basics of c++ or how +to compile and run programs, please refer to the main \MMSP +documentation or an online C/C++ tutorial. Some basic help will be +found in the Makefiles and README files. + +\section{The Diffusion Equation} + +The diffusion equation relates the time rate of change of a diffusing +species to the divergence of the gradients in the concentration of the +diffusing species. + +\begin{eqnarray} +\texttt{c[x,t] = (dt*D/dx**2)*(c[x-1,t-1]-2c[x,t-1]+c[x-1,t-1])+c[x,t-1]} +\end{eqnarray} + +This discrete equation will be used in our example calculation along with +some MMSP functionality. + +\section{Example Codes} +\label{sec:examples} + +\begin{listings} +\end{listings} + +\subsection{1D Diffusion couple, Cish} + +The first code is called 1stDiffusion.cpp. It is found in the +examples directory under {\tt beginners\_diffusion}. Use the {\tt g++} +or MPI commands outlined in the introduction to create an executable. + +The first thing to notice is that the include, using, and finalize commands are in the same place as in the “Hello World” script handled before. These are standard for all MMSP codes. The important MMSP commands are lines 22 and 23: +\\ \textit{grid\textless 1,scalar\textless float\textgreater \textgreater GRID(1,0,length);} +\\A breakdown of what this line means is: +\\ \textit{grid\textless \# of dimensions,data type\textgreater “GRID name”(Vector quantity, start position, number of terms in first dimension);} +\\ \begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item The vector quantity is 1 unless the vector data type is used. +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item vectors in MMSP are used to store multiple data values of interest in a single node on the grid +\end{itemize} +\item Start position is generally 0, but any number can be used +\item When using multi-dimensions, the only required change is to add more upper and lower boundaries for each subsequent dimension +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item E.g. for 2 dimensions: \textit{grid\textless 2,scalar\textless float\textgreater \textgreater GRID(1,0,lengthx,0,lengthy)} +\end{itemize} +\end{itemize} +Also, in line 28, the commands “x0(GRID)” and “x1(GRID)” are used. MMSP reads this as the initial and final nodes in the x direction, respectively. x, y, and z commands can be used for this, as well, if the number of dimensions agrees. +Some other items of interest are: +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item line 43, which defines the steady state boundary conditions +\item line 45, which refers to the “stability criterion.” This criterion is defined by $D\frac{\Delta t}{(\Delta x)^2}$ +\item line 48, which operates on each point in the GRID +\item line 49, which defines when GRID gets updated. +\item line 50, which uses the swap command. The swap command has the syntax: +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item swap(grid to be replaced, grid to use to replace) +\item In this specific example, the swap command is used to swap all points in GRID1 with all corresponding points in GRID2 +\end{itemize} +\end{itemize} +\begin{shadebox} + +\begin{enumerate} \itemsep1pt \parskip0pt \parsep0pt +\item include"MMSP.hpp" +\item using namespace MMSP; +\item +\item int main() +\item \{ +\item // Here is where all variables are called. In c++ all variables must be defined before they can be used +\item // The first word is the data type associated with the variable. “int”=integer type. +\item int length; +\item int offlength; +\item int iterate; +\item +\item // We make it so that the length of the diffusion couple and the number of iterations can be changed each time the code is run +\item std::cout\textless \textless "input couple length"\textless \textless std::endl; +\item std::cin\textgreater \textgreater length; +\item std::cout\textless \textless ""\textless \textless std::endl; +\item +\item std::cout\textless \textless "input number of iterations"\textless \textless std::endl; +\item std::cin\textgreater \textgreater iterate; +\item std::cout\textless \textless ""\textless \textless std::endl; +\item +\item //here we define some 1 dimensional grids with float variable types +\item grid\textless 1,scalar\textless float\textgreater \textgreater GRID(1,0,length); +\item grid\textless 1,scalar\textless float\textgreater \textgreater GRID2(1,0,length); +\item //this value is defined for looping control +\item offlength=x1(GRID)-3; +\item +\item //this creates two identical grids GRID and GRID2 that are 1 for the first half and 0 for the second. These represent diffusion couples. +\item for (int x=x0(GRID); x\textless x1(GRID); x++) +\item \hspace{10pt} if (x\textless length/2) \{ +\item \hspace{10pt} \hspace{10pt} GRID[x]=1; +\item \hspace{10pt} \hspace{10pt} GRID2[x]=1; +\item \hspace{10pt} \} +\item \hspace{10pt} else \{ +\item \hspace{10pt} \hspace{10pt} GRID[x]=0; +\item \hspace{10pt} \hspace{10pt} GRID2[x]=0; +\item \hspace{10pt} \} +\item +\end{enumerate} +\end{shadebox} + +\begin{shadebox} +\begin{enumerate} \itemsep1pt \parskip0pt \parsep0pt +\setcounter{enumi}{37} +\item //This step controls the number of time steps based on the user input from before +\item for (int i=0;i\textless iterate;i++) \{ +\item //Iterate through grid +\item \hspace{10pt} for (int x=x0(GRID); x\textless x1(GRID); x++) \{ +\item //Define fixed boundaries by preventing the first and last nodes of the grid from changing +\item \hspace{10pt} \hspace{10pt} if (x==0 \textbar \textbar x==length-1\{ +\item \hspace{10pt} \hspace{10pt} \} +\item //Take one time step of the discrete Fick's Law with maximum stability criterion (.5) +\item //to keep calculations from interfering with each other, the results of computations are stored in GRID2, then copied back to GRID after the last computation +\item \hspace{10pt} \hspace{10pt} else \{ +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} GRID2[x]=0.5*(GRID[x-1]-2*GRID[x]+GRID[x+1])+GRID[x]; +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} if (x\textgreater offlength) \{ +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} \hspace{10pt} swap(GRID,GRID2); +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} \} +\item \hspace{10pt} \hspace{10pt} \} +\item \hspace{10pt} \} +\item \} +\item //This prints the results of the grid to cout +\item for (int x=x0(GRID); x\textless x1(GRID); x++) \{ +\item \hspace{10pt} std::cout\textless \textless GRID[x]\textless \textless std::endl; +\item \} +\item Finalize(); +\item \} +\end{enumerate} + +\end{shadebox} + +\subsection{1D Diffusion Couple, MMSPish} +The second time through uses more MMSP functionality. The code for this example is called MMSPDiffusion.cpp in the {\tt beginners\_diffusion} directory. Important differences from the previous example: +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item line 19: instead of GRID2, the MMSP standard name “update” is used for the second grid. +\item lines 33-36: define the boundary conditions (bulkier in this case, but using other MMSP standard boundaries makes this step very useful). +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item The syntax in line 33, b0(GRID,0), can be generalized to: +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item \textit{boundary condition side(grid to be applied to, dimension to apply the boundary to)} +\item for this specific example, b0 corresponds to the left-hand boundary, GRID is the grid that the condition is applied to, and 0 corresponds to the 1st (or x) dimension. +\end {itemize} +\end {itemize} +\item line 43: by using the MMSP standard loop, the grid is updated at the correct time without any commands from the operator +\item line 44: ghostswap command is used in parallel processing - it has no effect when only one processor is used, but is vital when using more than one. +\end {itemize} + +\begin{shadebox} +\begin{enumerate} \itemsep1pt \parskip0pt \parsep0pt +\item \#include"MMSP.hpp" +\item using namespace MMSP; +\item +\item //we start the program off the same way as before, but this time we do not need the offset length variable +\item int main() +\item \{ +\item int length; +\item int iterate; +\item +\item std::cout\textless \textless "input couple length"\textless \textless std::endl; +\item std::cin\textgreater \textgreater length; +\item std::cout\textless \textless ""\textless \textless std::endl; +\item +\item std::cout\textless \textless "input number of iterations"\textless \textless std::endl; +\item std::cin\textgreater \textgreater iterate; +\item std::cout\textless \textless ""\textless \textless std::endl; +\item +\item grid\textless 1,scalar\textless float\textgreater \textgreater GRID(1,0,length); +\item grid\textless 1,scalar\textless float\textgreater \textgreater update(1,0,length); +\item +\item for (int x=x0(GRID); x\textless x1(GRID); x++) +\item \hspace{10pt} if (x\textless length/2) \{ +\item \hspace{10pt} \hspace{10pt} GRID[x]=1; +\item \hspace{10pt} \hspace{10pt} update[x]=1; +\item \hspace{10pt} \} +\item \hspace{10pt} else \{ +\item \hspace{10pt} \hspace{10pt} GRID[x]=0; +\item \hspace{10pt} \hspace{10pt} update[x]=1; +\item \} +\item +\end{enumerate} +\end{shadebox} + +\begin{shadebox} +\begin{enumerate} \itemsep1pt \parskip0pt \parsep0pt +\setcounter{enumi}{30} +\item //now we set the boundary conditions of both grids. By choosing the Dirichlet conditions, it is nearly identical to the manually set boundaries. +\item //the difference is that the first and last nodes of the grid can change, and the theoretical points outside the grid are fixed. +\item b0(GRID,0) = Dirichlet; +\item b1(GRID,0) = Dirichlet; +\item b0(update,0) = Dirichlet; +\item b1(update,0) = Dirichlet; +\item + +\item for (int k=0; k\textless iterate; k++) \{ +\item \hspace{10pt} for (int i=0; i\textless nodes(GRID); i++) \{ +\item //we can use MMSP's definition for laplacian instead of hardcoding it. +\item \hspace{10pt} \hspace{10pt} update(i)=0.5*laplacian(GRID,i)+GRID[i]; +\item \hspace{10pt} \} +\item \hspace{10pt} swap(GRID,update); +\item \hspace{10pt} ghostswap(GRID); +\item \}; +\item +\item +\item for (int x=x0(GRID); x\textless x1(GRID); x++) +\item \hspace{10pt} std::cout\textless \textless GRID[x]\textless \textless std::endl; +\item +\item Finalize(); +\item \} +\end{enumerate} +\end{shadebox} + +\subsection{2D Diffusion} +Now, we have a two dimensional diffusion situation (the upper left quadrant of a square is one species, the other three are another). The code for this example is named MMSPDiffusion2d.cpp and is also located in the {\tt beginners\_diffusion} directory MMSP makes adding dimensions easy, the only necessary changes are +\begin{itemize} \itemsep1pt \parskip0pt \parsep0pt +\item line 19 \& 20: change 1 to 2 when setting the number of dimensions in the grid. +\item lines 38-45: boundary conditions in both dimensions must be specified +\end{itemize} +Thats it. Those are the only changes that MMSP requires to operate in multiple dimensions. Other changes include redefining how the grid is set up, but generally the grid comes from a data set, so you will not have to worry about that, and the coefficient representing the diffusion was changed to reflect how the stability criterion changes in multiple dimensions. +\begin{shadebox} +\begin{enumerate} \itemsep1pt \parskip0pt \parsep0pt +\item \#include"MMSP.hpp" +\item using namespace MMSP; +\item +\item //we start the program off the same way as before, but this time we do not need the +\item offset length variable. Also, this creates a square grid. +\item int main() +\item \{ +\item int length; +\item int iterate; +\item +\item std::cout\textless \textless "input couple length"\textless \textless std::endl; +\item std::cin\textgreater \textgreater length; +\item std::cout\textless \textless ""\textless \textless std::endl; +\item +\item std::cout\textless \textless "input number of iterations"\textless \textless std::endl; +\item std::cin\textgreater \textgreater iterate; +\item std::cout\textless \textless ""\textless \textless std::endl; +\item +\item grid\textless 2,scalar\textless float\textgreater \textgreater GRID(1,0,length,0,length); +\item grid\textless 2,scalar\textless float\textgreater \textgreater update(1,0,length,0,length); +\item +\item //This creates a grid with 1’s in the upper left quadrant, and zeroes in the remaining 3 +\item +\item for (int x=x0(GRID); x\textless x1(GRID); x++) \{ +\item \hspace{10pt} for (int y=y0(GRID); y\textless y1(GRID); y++) \{ +\item \hspace{10pt} \hspace{10pt} if ((x\textless length/2)\& \&(y\textless length/2)) \{ +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} GRID[x][y]=1; +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} update[x][y]=1; +\item \hspace{10pt} \hspace{10pt} \} +\item \hspace{10pt} \hspace{10pt} else \{ +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} GRID[x][y]=0; +\item \hspace{10pt} \hspace{10pt} \hspace{10pt} update[x][y]=1; +\item \hspace{10pt} \hspace{10pt} \} +\item \hspace{10pt} \} +\item \} +\end{enumerate} +\end{shadebox} + +\begin{shadebox} +\begin{enumerate} \itemsep1pt \parskip0pt \parsep0pt +\setcounter{enumi}{35} +\item //now we set the boundary conditions of both grids. By choosing the Dirichlet conditions, it is nearly identical to the manually set boudaries. +\item //the difference is that the first and last nodes of the grid can change, and the theoretical points outside the grid are fixed. +\item b0(GRID,0) = Dirichlet; +\item b1(GRID,0) = Dirichlet; +\item b0(GRID,1) = Dirichlet; +\item b1(GRID,1) = Dirichlet; +\item b0(update,0) = Dirichlet; +\item b1(update,0) = Dirichlet; +\item b0(update,1) = Dirichlet; +\item b1(update,1) = Dirichlet; +\item +\item +\item for (int k=0; k\textless iterate; k++) \{ +\item \hspace{10pt} for (int i=0; i\textless nodes(GRID); i++) \{ +\item //we can use MMSP's definition for laplacian instead of hardcoding it. +\item \hspace{10pt} \hspace{10pt} update(i)=0.2*laplacian(GRID,i)+GRID(i); +\item \hspace{10pt} \} +\item \hspace{10pt} swap(GRID,update); +\item \hspace{10pt} ghostswap(GRID); +\item \} ; +\item +\item +\item for (int x=x0(GRID); x\textless x1(GRID); x++) \{ +\item \hspace{10pt} for (int y=y0(GRID); y\textless y1(GRID); y++) \{ +\item \hspace{10pt} \hspace{10pt} std::cout\textless \textless GRID[x][y]; +\item \hspace{10pt} \hspace{10pt} std::cout\textless \textless " "; +\item \hspace{10pt} \} +\item \hspace{10pt} std::cout\textless \textless std::endl; +\item \} +\item Finalize(); +\item \} +\end{enumerate} +\end{shadebox} +\end{document} diff --git a/examples/pfhub_bm8/Makefile b/examples/pfhub_bm8/Makefile new file mode 100644 index 0000000..d59741b --- /dev/null +++ b/examples/pfhub_bm8/Makefile @@ -0,0 +1,53 @@ +# If you have a different compiler then you can +# specify this by override, e.g.: make CC='pgcc' +CC = g++ +CCOPTS = -g +PGOPTS = +LIBS = -lm + +incdir = include + +# If you have gnuplot pipes on your system, change this +# value to 'yes' and change the options in the source +# code to get graphical output. +GNUPLOT_I = no + +# If different compilers have different options, then +# those can be handled here. +ifeq ($(CC),gcc) + CCOPTIONS = $(CCOPTS) +endif + +ifeq ($(CC),pgcc) + CCOPTIONS = $(PGOPTS) +endif + +ifeq ($(CC),g++) + CCOPTIONS = +endif + +ifeq ($(GNUPLOT_I),yes) + OBJECT1 = MMSPNucleation.o +else + OBJECT1 = MMSPNucleation.o +endif + +#Program dependencies below here. +all : MMSPNucleation +.PHONY : all + +MMSPNucleation : $(OBJECT1) + $(CC) $(CCOPTIONS) -o $@ MMSPNucleation.o $(LIBS) + + +# Object defs below here. + +MMSPNucleation.o : MMSPNucleation.cpp + $(CC) $(CCOPTIONS) -I$(incdir) -c $< + +gnuplot_i.hpp.gch : gnuplot_i.hpp + $(CC) $(CCOPTIONS) -c gnuplot_i.hpp + +clean : + rm -rf 1stDiffusion MMSPDiffusion MMSPDiffusion2D *.o *~ *.gch + diff --git a/examples/pfhub_bm8/include/MMSP.grid.cpp b/examples/pfhub_bm8/include/MMSP.grid.cpp new file mode 100644 index 0000000..d2c95b3 --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.grid.cpp @@ -0,0 +1,2242 @@ +// MMSP.grid.cpp +// MMSP grid class implementation +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef RAW +#include +#endif + +namespace MMSP +{ + +template +grid::grid(int FIELDS, int min[dim], int max[dim], int GHOSTS, bool SINGLE) +{ + // set number of fields + fields = FIELDS; + + // read function arguments + for (int i=0; i +grid::grid(int FIELDS, ...) +{ + // set number of fields + fields = FIELDS; + + // read function arguments + va_list list; + va_start(list, FIELDS); + for (int i=0; i +grid::grid(const grid& GRID) +{ + // set number of fields + fields = MMSP::fields(GRID); + + // read function arguments + for (int i=0; i template +grid::grid(const grid& GRID, int FIELDS) +{ + // set number of fields + fields = FIELDS; + + // read function arguments + for (int i=0; i +grid::grid(const char* filename, int GHOSTS) +{ + // initialize data + data=NULL; + + // read data from file + input(filename, GHOSTS); +} + +template +void grid::setup(bool SINGLE) +{ + // setup default grid parameters + for (int i=0; i 0) { + if (pos[i] < rem) { + x0[i] += pos[i]; + x1[i] = x0[i] + nom + 1; + } else if (pos[i] == rem) { + x0[i] += pos[i]; + x1[i] = x0[i] + nom; + } else { + x0[i] += rem; + x1[i] = x0[i] + nom; + } + } + } + + // determine neighbor processors + for (int i=0; i +grid::~grid() +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } +} + +// assignment operators + +template template grid& grid::operator=(const U& value) +{ + for (int i=0; i(value); + return *this; +} + +template template grid& grid::operator=(const grid& GRID) +{ + for (int i=0; i(GRID.data[i]); + return *this; +} + +template template grid& grid::operator+=(const grid& GRID) +{ + for (int i=0; i(GRID.data[i]); + return *this; +} + +template template grid& grid::operator-=(const grid& GRID) +{ + for (int i=0; i(GRID.data[i]); + return *this; +} + +// subscript operators +template target < dim - 1, 0, T > grid::operator [](int x) const +{ + check_boundary(x, x0[0], x1[0], b0[0], b1[0]); + return target < dim - 1, 0, T > (data + (x - s0[0]) * sx[0], s0, sx, x0, x1, b0, b1); +} + +template T& grid::operator()(MMSP::vector x) const +{ + T* p = data; + for (int i=0; i T& grid::operator()(int i) const +{ + #ifdef MPI_VERSION + int x[dim]; + for (int j=0; j MMSP::vector grid::position(int i) const +{ + MMSP::vector x(dim); + for (int j=0; j void grid::ghostswap() +{ + #ifdef MPI_VERSION + MPI::COMM_WORLD.Barrier(); + for (int i=0; ibuffer_size(send_min, send_max); + unsigned long recv_size = 0; + + // Small data transfer: blocking Sendrecv should scale -- but don't plan on it. + MPI::Request requests[2]; + requests[0] = MPI::COMM_WORLD.Isend(&send_size, 1, MPI_UNSIGNED_LONG, send_proc, 100); // send number of ghosts + requests[1] = MPI::COMM_WORLD.Irecv(&recv_size, 1, MPI_UNSIGNED_LONG, recv_proc, 100); // receive number of ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + char* send_buffer = new char[send_size]; + char* recv_buffer = new char[recv_size]; + send_size = this->to_buffer(send_buffer, send_min, send_max); + + // Large data transfer requires non-blocking communication + requests[0] = MPI::COMM_WORLD.Isend(send_buffer, send_size, MPI_CHAR, send_proc, 200); // send ghosts + requests[1] = MPI::COMM_WORLD.Irecv(recv_buffer, recv_size, MPI_CHAR, recv_proc, 200); // receive ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + this->from_buffer(recv_buffer, recv_min, recv_max); // populate ghost cell data from buffer + delete [] send_buffer; + send_buffer=NULL; + delete [] recv_buffer; + recv_buffer=NULL; + } + + if (1) { + // send to processor below and receive from processor above + int send_proc = n0[i]; + int recv_proc = n1[i]; + + int send_min[dim], send_max[dim]; + int recv_min[dim], recv_max[dim]; + for (int j=0; jbuffer_size(send_min, send_max); + unsigned long recv_size = 0; + + // Small data transfer: blocking Sendrecv should scale -- but don't plan on it. + MPI::Request requests[2]; + requests[0] = MPI::COMM_WORLD.Isend(&send_size, 1, MPI_UNSIGNED_LONG, send_proc, 300); // send number of ghosts + requests[1] = MPI::COMM_WORLD.Irecv(&recv_size, 1, MPI_UNSIGNED_LONG, recv_proc, 300); // receive number of incoming ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + char* send_buffer = new char[send_size]; + char* recv_buffer = new char[recv_size]; + send_size = this->to_buffer(send_buffer, send_min, send_max); + + // Large data transfer requires non-blocking communication + requests[0] = MPI::COMM_WORLD.Isend(send_buffer, send_size, MPI_CHAR, send_proc, 400); // send ghosts + requests[1] = MPI::COMM_WORLD.Irecv(recv_buffer, recv_size, MPI_CHAR, recv_proc, 400); // receive ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + + this->from_buffer(recv_buffer, recv_min, recv_max); // populate ghost cell data from buffer + + delete [] send_buffer; + send_buffer=NULL; + delete [] recv_buffer; + recv_buffer=NULL; + } + } + MPI::COMM_WORLD.Barrier(); + #endif +} + +template void grid::ghostswap(const int sublattice) // ghostswap for Monte Carlo communiation reduction. +{ + #ifdef MPI_VERSION + MPI::COMM_WORLD.Barrier(); + for (int i=0; ibuffer_size_save(send_min, send_max); + unsigned long recv_size = 0; + + // Small data transfer: blocking Sendrecv should scale -- but don't plan on it. + MPI::Request requests[2]; + requests[0] = MPI::COMM_WORLD.Isend(&send_size, 1, MPI_UNSIGNED_LONG, send_proc, 100); // send number of ghosts + requests[1] = MPI::COMM_WORLD.Irecv(&recv_size, 1, MPI_UNSIGNED_LONG, recv_proc, 100); // receive number of ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + char* send_buffer = new char[send_size]; + char* recv_buffer = new char[recv_size]; + send_size = this->to_buffer_save(send_buffer, send_min, send_max); + + // Large data transfer requires non-blocking communication + requests[0] = MPI::COMM_WORLD.Isend(send_buffer, send_size, MPI_CHAR, send_proc, 200); // send ghosts + requests[1] = MPI::COMM_WORLD.Irecv(recv_buffer, recv_size, MPI_CHAR, recv_proc, 200); // receive ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + + this->from_buffer_save(recv_buffer, recv_min, recv_max); // populate ghost cell data from buffer + + delete [] send_buffer; + send_buffer=NULL; + delete [] recv_buffer; + recv_buffer=NULL; + } + + if (1) { + // send to processor below and receive from processor above + int send_proc = n0[i]; + int recv_proc = n1[i]; + + int send_min[dim], send_max[dim]; + int recv_min[dim], recv_max[dim]; + for (int j=0; jbuffer_size_save(send_min, send_max); + unsigned long recv_size = 0; + + // Small data transfer: blocking Sendrecv should scale -- but don't plan on it. + MPI::Request requests[2]; + requests[0] = MPI::COMM_WORLD.Isend(&send_size, 1, MPI_UNSIGNED_LONG, send_proc, 300); // send number of ghosts + requests[1] = MPI::COMM_WORLD.Irecv(&recv_size, 1, MPI_UNSIGNED_LONG, recv_proc, 300); // receive number of incoming ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + char* send_buffer = new char[send_size]; + char* recv_buffer = new char[recv_size]; + + send_size = this->to_buffer_save(send_buffer, send_min, send_max); + + // Large data transfer requires non-blocking communication + requests[0] = MPI::COMM_WORLD.Isend(send_buffer, send_size, MPI_CHAR, send_proc, 400); // send ghosts + requests[1] = MPI::COMM_WORLD.Irecv(recv_buffer, recv_size, MPI_CHAR, recv_proc, 400); // receive ghosts + MPI::Request::Waitall(2, requests); + MPI::COMM_WORLD.Barrier(); + + this->from_buffer_save(recv_buffer, recv_min, recv_max); // populate ghost cell data from buffer + + delete [] send_buffer; + send_buffer=NULL; + delete [] recv_buffer; + recv_buffer=NULL; + } + } + MPI::COMM_WORLD.Barrier(); + #endif +} + +template unsigned long grid::buffer_size_save(const int min[dim], const int max[dim]) const +{ + return buffer_size_save(data, 0, min, max); +} + +template unsigned long grid::buffer_size_save(T* p, int i, const int min[dim], const int max[dim]) const +{ + unsigned long size = 0; + if (i == dim - 1) { + for (int x = min[i]; x < max[i]; x+=2) + size += MMSP::buffer_size(*(p + (x - s0[i]) * sx[i])); + } else if (i >= 0 && i < dim) { + for (int x = min[i]; x < max[i]; x+=2) + size += buffer_size_save(p + (x - s0[i]) * sx[i], i + 1, min, max); + } + return size; +} + +template unsigned long grid::to_buffer_save(char* buffer, const int min[dim], const int max[dim]) const +{ + return to_buffer_save(buffer, data, 0, min, max); +} + +template unsigned long grid::to_buffer_save(char* buffer, T* p, int i, const int min[dim], const int max[dim]) const +{ + unsigned long size = 0; + if (i == dim - 1) { + for (int x = min[i]; x < max[i]; x+=2) + size += MMSP::to_buffer(*(p + (x - s0[i]) * sx[i]), buffer + size); + } else if (i >= 0 && i < dim) { + for (int x = min[i]; x < max[i]; x+=2) + size += to_buffer_save(buffer + size, p + (x - s0[i]) * sx[i], i + 1, min, max); + } + return size; +} + +template unsigned long grid::from_buffer_save(char* buffer, const int min[dim], const int max[dim]) +{ + return from_buffer_save(buffer, data, 0, min, max); +} + +template unsigned long grid::from_buffer_save(char* buffer, T* p, int i, const int min[dim], const int max[dim]) +{ + unsigned long size = 0; + if (i == dim - 1) { + for (int x = min[i]; x < max[i]; x+=2) + size += MMSP::from_buffer(*(p + (x - s0[i]) * sx[i]), buffer + size); + } else if (i >= 0 && i < dim) { + for (int x = min[i]; x < max[i]; x+=2) + size += from_buffer_save(buffer + size, p + (x - s0[i]) * sx[i], i + 1, min, max); + } + return size; +} + +// buffer I/O +template unsigned long grid::buffer_size(T* p, int i, const int min[dim], const int max[dim]) const +{ + unsigned long size = 0; + if (i == dim - 1) { + for (int x = min[i]; x < max[i]; x++) + size += MMSP::buffer_size(*(p + (x - s0[i]) * sx[i])); + } else if (i >= 0 && i < dim) { + for (int x = min[i]; x < max[i]; x++) + size += buffer_size(p + (x - s0[i]) * sx[i], i + 1, min, max); + } + return size; +} + +template unsigned long grid::buffer_size() const +{ + return buffer_size(x0, x1); +} + +template unsigned long grid::buffer_size(const int min[dim], const int max[dim]) const +{ + return buffer_size(data, 0, min, max); +} + + + +template unsigned long grid::to_buffer(char* buffer) const +{ + return to_buffer(buffer, x0, x1); +} + +template unsigned long grid::to_buffer(char* buffer, const int min[dim], const int max[dim]) const +{ + return to_buffer(buffer, data, 0, min, max); +} + +template unsigned long grid::to_buffer(char* buffer, T* p, int i, const int min[dim], const int max[dim]) const +{ + unsigned long size = 0; + if (i == dim - 1) { + for (int x = min[i]; x < max[i]; x++) + size += MMSP::to_buffer(*(p + (x - s0[i]) * sx[i]), buffer + size); + } else if (i >= 0 && i < dim) { + for (int x = min[i]; x < max[i]; x++) + size += to_buffer(buffer + size, p + (x - s0[i]) * sx[i], i + 1, min, max); + } + return size; +} + +template unsigned long grid::from_buffer(char* buffer) +{ + return from_buffer(buffer, x0, x1); +} + +template unsigned long grid::from_buffer(char* buffer, const int min[dim], const int max[dim]) +{ + return from_buffer(buffer, data, 0, min, max); +} + +template unsigned long grid::from_buffer(char* buffer, T* p, int i, const int min[dim], const int max[dim]) +{ + unsigned long size = 0; + if (i == dim - 1) { + for (int x = min[i]; x < max[i]; x++) + size += MMSP::from_buffer(*(p + (x - s0[i]) * sx[i]), buffer + size); + } else if (i >= 0 && i < dim) { + for (int x = min[i]; x < max[i]; x++) + size += from_buffer(buffer + size, p + (x - s0[i]) * sx[i], i + 1, min, max); + } + return size; +} + +// file I/O +template void grid::input(const char* filename, int GHOSTS, int SINGLE) +{ + // file open error check + std::ifstream input(filename); + if (!input) { + std::cerr << "File input error: could not open "; + std::cerr << filename << "." << std::endl; + exit(-1); + } + + // grid data type error check + std::string type, scalar_type; + getline(input, type, '\n'); + scalar_type = "grid:scalar" + type.substr(type.find_last_of(":", 8)); + if (type != name(*this) && scalar_type == name(*this)) { + type = scalar_type; + } + if (type != name(*this)) { + std::cerr << "File read error: wrong data type (" << type << "), expected (" << name(*this) << ")." << std::endl; + exit(-2); + } + + // dimension error check + int dimen; + input >> dimen; + if (dimen != dim) { + std::cerr << "File read error: wrong dimension (" << dimen << ")." << std::endl; + exit(-3); + } + + // read number of fields + input >> fields; + + // read grid size + for (int i=0; i> g0[i] >> g1[i]; + + // set number of ghosts + ghosts = GHOSTS; + #ifndef MPI_VERSION + ghosts = 0; + #endif + + // setup grid parameters + if (data!=NULL) { + delete [] data; + data=NULL; + } + setup(SINGLE); + + // read cell spacing + for (int i=0; i> dx[i]; + + // ignore trailing endlines + input.ignore(10, '\n'); + + // input grid data + read(input, GHOSTS); + + // ghostswap if necessary + if (not SINGLE) ghostswap(); + input.close(); +} + +template void grid::read(std::ifstream& file, int GHOSTS) +{ + /* + Reads each block of the input file and constructs a + temporary grid, "GRID". Then compares the spatial extents of + the block (lmin, lmax) to the local grid (this->x0, this->x1). + Data is copied from the region where both overlap, if it exists. + Then the next block is read. + */ + // read number of blocks + int blocks; + file.read(reinterpret_cast(&blocks), sizeof(blocks)); + + #ifdef GRIDDEBUG + int actual_read=0; + unsigned long data_read=0; + #endif + + // for each block... + for (int i=0; i(&lmin[j]), sizeof(lmin[j])); + file.read(reinterpret_cast(&lmax[j]), sizeof(lmax[j])); + } + int blo[dim]; + int bhi[dim]; + // read boundary conditions + for (int j=0; j(&blo[j]), sizeof(blo[j])); + file.read(reinterpret_cast(&bhi[j]), sizeof(bhi[j])); + } + + // read block data + unsigned long size_on_disk, size_in_mem; + file.read(reinterpret_cast(&size_in_mem), sizeof(size_in_mem)); // read grid data size + file.read(reinterpret_cast(&size_on_disk), sizeof(size_on_disk)); // read compressed size + + // find overlapping region + int min[dim]; + int max[dim]; + bool overlap = true; + for (int j=0; j x1[j]) ? x1[j] : lmax[j]; + if (min[j] >= max[j]) overlap = false; + } + + if (overlap) { + #ifdef GRIDDEBUG + ++actual_read; + data_read+=size_on_disk; + #endif + char* buffer = new char[size_on_disk]; + file.read(buffer, size_on_disk); + grid GRID(fields, lmin, lmax, 0, true); + if (size_in_mem!=size_on_disk) { + #ifdef RAW + std::cerr<<"Unable to uncompress data: compiled without zlib."<(raw), &size_in_mem, reinterpret_cast(buffer), size_on_disk); + switch ( status ) { + case Z_OK: + break; + case Z_MEM_ERROR: + std::cerr << "Uncompress: out of memory." << std::endl; + exit(1); // quit. + break; + case Z_BUF_ERROR: + std::cerr << "Uncompress: output buffer wasn't large enough." << std::endl; + exit(1); // quit. + break; + } + GRID.from_buffer(raw); + delete [] raw; + raw=NULL; + #endif + } else GRID.from_buffer(buffer); + delete [] buffer; + buffer=NULL; + + // copy block data that overlaps + unsigned long size = GRID.buffer_size(min, max); + buffer = new char[size]; + GRID.to_buffer(buffer, min, max); + this->from_buffer(buffer, min, max); + delete [] buffer; + buffer=NULL; + + // set boundary conditions from file + for (int j=0; j void grid::output(const char* filename) const +{ + #ifndef MPI_VERSION + unsigned int np=1; + // file open error check + std::ofstream output(filename); + if (!output) { + std::cerr << "File output error: could not open "; + std::cerr << filename << "." << std::endl; + MMSP::Abort(-1); + } + + std::stringstream outstr; + + // get grid data type + std::string type = name(*this); + outstr << type << '\n'; + + // get grid dimension + outstr << dim << '\n'; + + // get number of fields + outstr << fields << '\n'; + + // get grid size + for (int i=0; i(&np), sizeof(np)); + + // get grid data to write + char* buffer; + unsigned long size_of_buffer = this->write_buffer(buffer); + // output grid data + output.write(buffer, size_of_buffer); + delete [] buffer; + buffer=NULL; + + + #else + /* MPI-IO write to disk */ + + // MPI C-style functions require char*, not const char*, filename + char fname[FILENAME_MAX] = {}; // initializes array with null chars + // C-style strings are null-terminated ('\0') by definition + for (unsigned int i=0; i(&np), sizeof(np), MPI_CHAR, &status); + + header_offset+=sizeof(np); + delete [] header; + header=NULL; + } + MPI_File_sync(output); + MPI::COMM_WORLD.Barrier(); + MPI::COMM_WORLD.Bcast(&header_offset, 1, MPI_UNSIGNED_LONG, 0); // broadcast header size from rank 0 + + // get grid data to write + char* buffer=NULL; + unsigned long size_of_buffer = this->write_buffer(buffer); + assert(buffer!=NULL); + + // Compute file offsets based on buffer sizes + unsigned long* datasizes = new unsigned long[np]; + MPI::COMM_WORLD.Allgather(&size_of_buffer, 1, MPI_UNSIGNED_LONG, datasizes, 1, MPI_UNSIGNED_LONG); + + // Calculate disk space + unsigned long filesize=0; + for (unsigned int i=0; i(std::numeric_limits::max())); + offsets[n]=offsets[n-1]+datasizes[n-1]; + } + #ifdef GRIDDEBUG + assert(datasizes[rank]==size_of_buffer); + if (rank==0) std::cout<<" Synchronized data offsets on "<(actual_size)); + } + + delete [] offsets; + offsets=NULL; + delete [] datasizes; + datasizes=NULL; + + } else { + + // Custom MPI-IO for large-block filesystems, such as IBM GPFS: + // Two-stage aggregate+write IO, one rank per block at MOST + // create buffer pointers + unsigned long* datasizes = NULL; + unsigned long* offsets = NULL; + unsigned long* aoffsets = NULL; + unsigned long* misalignments = NULL; + char* databuffer=NULL; + char* headbuffer=NULL; + char* filebuffer=NULL; + unsigned int* writeranks=NULL; + MPI_Request* recvrequests = NULL; + MPI_Status* recvstatuses = NULL; + int mpi_err = 0; + + // get grid data to write + const unsigned long size_of_buffer = write_buffer(databuffer); + assert(databuffer!=NULL); + // Generate MMSP header from rank 0 + unsigned long header_offset=0; + if (rank==0) { + // get grid data type + std::string type = name(*this); + + std::stringstream outstr; + outstr << type << '\n'; + outstr << dim << '\n'; + outstr << MMSP::fields(*this) << '\n'; + + for (int i=0; i(&np), sizeof(np)); + header_offset+=sizeof(rank); + } + MPI::COMM_WORLD.Bcast(&header_offset, 1, MPI_UNSIGNED_LONG, 0); // broadcast header size from rank 0 + #ifdef GRIDDEBUG + if (rank==0) std::cout<<"Prepared file header."<(std::numeric_limits::max())); + offsets[n]=offsets[n-1]+datasizes[n-1]; + } + offsets[0]=0; + #ifdef GRIDDEBUG + assert(datasizes[rank]==size_of_buffer); + if (rank==0) std::cout<<" Synchronized data offsets on "<np)?np:blocks; + const unsigned long writesize=blocksize*(blocks/nwriters); + assert(writesize % blocksize==0); + const unsigned long excessblocks=blocks % nwriters; + bool isWriter=false; + #ifdef GRIDDEBUG + if (rank==0) std::cout<<" Preparing "<0)?ws+aoffsets[w-1]:0; + while ((aoffsets[w] > offsets[temprank]+datasizes[temprank]) && temprank=rank) + --prevwriter; + } + if (rank>=writeranks[nwriters-1]) { + nextwriter=nwriters; + } else { + while (writeranks[nextwriter]<=rank) + ++nextwriter; + } + + unsigned long ws = writesize; + if (nextwriter<=excessblocks) + ws+=blocksize; + if (rank>=writeranks[nwriters-1]) + ws=filesize-aoffsets[nwriters-1]; // last block may be only partially-filled + + unsigned long deficiency=0; + if (rank>0) { + unsigned long prevws = (prevwriter>=excessblocks)?writesize:writesize+blocksize; + deficiency = aoffsets[prevwriter]+prevws - offsets[rank]; + if (deficiency>datasizes[rank]) + deficiency=datasizes[rank]; + } + // Collect block misalignments + misalignments = new unsigned long[np]; + MPI::COMM_WORLD.Allgather(&deficiency, 1, MPI_UNSIGNED_LONG, misalignments, 1, MPI_UNSIGNED_LONG); + + #ifdef GRIDDEBUG + if (datasizes[rank]-deficiency>ws) + std::fprintf(stderr, "Error on Rank %u, alignment: buffered %lu B > writesize %lu B.\n", rank, datasizes[rank]-deficiency, ws); + #endif + + // Accumulate data + const unsigned int silentranks=writeranks[nextwriter]-rank; // number of MPI ranks between this rank and the next writer + MPI_Request sendrequest; + MPI::COMM_WORLD.Barrier(); + if (isWriter) { + // This rank is a writer. + assert(misalignments[rank] < datasizes[rank]); + #ifdef GRIDDEBUG + if (rank>0 && writeranks[prevwriter+1]!=rank) + std::fprintf(stderr, "Error on Rank %u, writer ID: %u != %u\n", rank, writeranks[prevwriter+1], rank); + #endif + + // Copy local data into filebuffer + filebuffer = new char[ws]; + char* p = filebuffer; + if (rank==0) { + memcpy(p, headbuffer, header_offset); + p+=header_offset; + } + #ifdef GRIDDEBUG + if (datasizes[rank]-misalignments[rank]>ws) + std::fprintf(stderr, "Error on Rank %u, memcpy: %lu B > %lu B\n", rank, datasizes[rank]-misalignments[rank], ws); + #endif + char* q=databuffer+misalignments[rank]; + memcpy(p, q, datasizes[rank]-misalignments[rank]); + p+=datasizes[rank]-misalignments[rank]; + + // Recv remote data into filebuffer + if (silentranks>0) { + recvrequests = new MPI_Request[silentranks]; + recvstatuses = new MPI_Status[silentranks]; + } + for (unsigned int i=0; inp) + std::fprintf(stderr, "Error on Rank %u, receiving: recv_proc=%i\n", rank, recv_proc); + #endif + unsigned long recv_size = misalignments[recv_proc]; + if (recv_size==0) continue; + #ifdef GRIDDEBUG + if (p+recv_size>filebuffer+ws) + std::fprintf(stderr, "Error on Rank %u, receiving from %i: %lu B > %lu B\n", rank, recv_proc, p-filebuffer, ws-recv_size); + #endif + MPI_Irecv(p, recv_size, MPI_CHAR, recv_proc, recv_proc, MPI::COMM_WORLD, &recvrequests[i]); + p+=recv_size; + } + #ifdef GRIDDEBUG + if (p-filebuffer!=int(ws)) + std::fprintf(stderr, "Error on Rank %u, total received: %i B != %lu B\n", rank, int(p-filebuffer), ws); + #endif + if (rank>0 && misalignments[rank]>0) { + q=databuffer; + assert(writeranks[prevwriter]= datasizes[rank]) { + assert(writeranks[prevwriter]0) MPI_Wait(&sendrequest, &status); + MPI::COMM_WORLD.Barrier(); + + // file open error check + #ifdef GRIDDEBUG + if (rank==0) std::cout<<" Opening "< unsigned long grid::write_buffer(char*& buf) const +{ + // Find out how big the dataset is + unsigned long size_in_mem = this->buffer_size(); + unsigned long size_on_disk = 1.125 * size_in_mem + 12; + #ifdef RAW + size_on_disk=size_in_mem; + #endif + + // Figure out the block extents + unsigned long header_size = 0; + for (int j=0; j(sizeof(x0[j])); + header_size += static_cast(sizeof(x1[j])); + header_size += static_cast(sizeof(b0[j])); + header_size += static_cast(sizeof(b1[j])); + } + // Make a buffer to hold all the data + const unsigned long size_of_buffer = header_size + static_cast(sizeof(size_in_mem)) + + size_on_disk + static_cast(sizeof(size_on_disk)); + buf = new char[size_of_buffer]; + char* dst = buf; + unsigned long increment=0; // number of bytes to copy + + // Write local limits + for (int j=0; j(&x0[j]), increment); + dst += increment; + increment = sizeof(x1[j]); + memcpy(dst, reinterpret_cast(&x1[j]), increment); + dst += increment; + } + + // Write local boundary conditions + for (int j=0; j(&b0[j]), increment); + dst += increment; + increment = sizeof(b1[j]); + memcpy(dst, reinterpret_cast(&b1[j]), increment); + dst += increment; + } + + // Write the size of the raw data block + increment = sizeof(size_in_mem); + memcpy(dst, reinterpret_cast(&size_in_mem), increment); + dst += increment; + + // Write the size of the compressed block + #ifndef RAW + char* q(dst); // save current location: need to re-write this value later + #endif + increment = sizeof(size_on_disk); + memcpy(dst, reinterpret_cast(&size_on_disk), increment); + dst += increment; + + // Read the data block from grid private data + #ifdef RAW + size_on_disk=this->to_buffer(dst); + #else + char* raw = new char[size_in_mem]; + size_in_mem = this->to_buffer(raw); + + // Compress the data block to the buffer + int level=9; // highest compression level (slowest speed) + int status = compress2(reinterpret_cast(dst), &size_on_disk, reinterpret_cast(raw), size_in_mem, level); + switch (status) { + case Z_OK: + break; + case Z_MEM_ERROR: + std::cerr << "Compress: out of memory." << std::endl; + exit(1); + break; + case Z_BUF_ERROR: + std::cerr << "Compress: output buffer wasn't large enough." << std::endl; + exit(1); + break; + } + assert(size_on_disk<=size_of_buffer); // Abort if data was lost in compression process. Duplicate of Z_BUF_ERROR check. + dst=NULL; + delete [] raw; + raw=NULL; + + // Re-write the size of the (compressed) data block + increment = sizeof(size_on_disk); + memcpy(q, reinterpret_cast(&size_on_disk), increment); + #endif + + // Return total size of the populated buffer + return header_size + static_cast(sizeof(size_in_mem)) + static_cast(sizeof(size_on_disk)) + size_on_disk; +} +// grid utility functions + +// utility functions +template void grid::swap(grid& GRID) +{ + // swap grid data + T* DATA = data; + data = GRID.data; + GRID.data = DATA; + + // swap number of nodes + int NODES = nodes; + nodes = GRID.nodes; + GRID.nodes = NODES; + + // swap number of cells + int CELLS = cells; + cells = GRID.cells; + GRID.cells = CELLS; + + // swap number of fields + int FIELDS = fields; + fields = GRID.fields; + GRID.fields = FIELDS; + + // swap number of ghosts + int GHOSTS = ghosts; + ghosts = GRID.ghosts; + GRID.ghosts = GHOSTS; + + // swap grid parameters + for (int i=0; i void grid::copy(const grid& GRID) +{ + // initialize data + if (data != NULL) { + delete [] data; + data=NULL; + } + + // copy number of nodes + nodes = GRID.nodes; + + // copy number of cells + cells = GRID.cells; + + // copy number of fields + fields = GRID.fields; + + // copy number of ghosts + ghosts = GRID.ghosts; + + // copy grid parameters + for (int i=0; i T laplacian(const MMSP::grid& GRID, const vector& x) +{ + T laplacian = 0.0; + MMSP::vector s = x; + const T& y = GRID(x); + + for (int i=0; i vector laplacian(const grid >& GRID, const vector& x) +{ + int N = fields(GRID); + vector laplacian(N, 0.0); + vector s = x; + + const vector& y = GRID(x); + + for (int i=0; i& yh = GRID(s); + s[i] -= 2; + const vector& yl = GRID(s); + s[i] += 1; + + double weight = 1.0 / (dx(GRID, i) * dx(GRID, i)); + for (int j=0; j T laplacian(const grid >& GRID, const vector& x, const int field) +{ + T laplacian = 0.0; + vector s = x; + + const T& y = GRID(x)[field]; + + for (int i=0; i sparse laplacian(const grid >& GRID, const vector& x) +{ + sparse laplacian; + vector s = x; + + const sparse& y = GRID(x); + + for (int i=0; i& yh = GRID(s); + s[i] -= 2; + const sparse& yl = GRID(s); + s[i] += 1; + + double weight = 1.0 / (dx(GRID, i) * dx(GRID, i)); + laplacian += weight * (yh - 2.0 * y + yl); + } + return laplacian; +} + +template T laplacian(const grid& GRID, int i) +{ + vector x = GRID.position(i); + return laplacian(GRID, x); +} + +template vector laplacian(const grid >& GRID, int i) +{ + vector x = GRID.position(i); + return laplacian(GRID, x); +} + +template T laplacian(const grid >& GRID, int i, int f) +{ + vector x = GRID.position(i); + return laplacian(GRID, x, f); +} + +template sparse laplacian(const grid >& GRID, int i) +{ + vector x = GRID.position(i); + return laplacian(GRID, x); +} + +template MMSP::vector gradient(const grid& GRID, const vector& x) +{ + vector gradient(dim); + vector s = x; + + for (int i=0; i MMSP::vector gradientsq(const grid& GRID, const vector& x) +{ + vector gradientsq(dim); + vector s = x; + + const T& y = GRID(x); + + for (int i=0; i MMSP::vector gradient(const grid >& GRID, const vector& x, const int field) +{ + vector gradient(dim); + vector s = x; + + for (int i=0; i vector grad(const grid& GRID, const vector& x) +{ + return gradient(GRID, x); +} + +template vector divergence(const grid >& GRID, const vector& x) +{ + vector divergence(dim, 0.0); + vector s = x; + + int N = length(GRID(x)); + + for (int i=0; i& yh = GRID(s); + s[i] -= 2; + const vector& yl = GRID(s); + s[i] += 1; + + double weight = 1.0 / (2.0 * dx(GRID, i)); + for (int j=0; j T divergence(const grid& GRID, const vector& x) +{ + T divergence = 0.0; + vector s = x; + + for (int i=0; i class grid; + +// grid utility functions +template int nodes(const grid& GRID) +{ + return nodes(GRID); +} +template int fields(const grid& GRID) +{ + return fields(GRID); +} +template int ghosts(const grid& GRID) +{ + return ghosts(GRID); +} +template int g0(const grid& GRID, int i) +{ + return g0(GRID, i); +} +template int g1(const grid& GRID, int i) +{ + return g1(GRID, i); +} +template int b0(const grid& GRID, int i) +{ + return b0(GRID, i); +} +template int b1(const grid& GRID, int i) +{ + return b1(GRID, i); +} +template int& b0(grid& GRID, int i) +{ + return b0(GRID, i); +} +template int& b1(grid& GRID, int i) +{ + return b1(GRID, i); +} + +// grid utility functions (all directions) +template int x0(const grid& GRID, int i) +{ + return x0(GRID, i); +} +template int x1(const grid& GRID, int i) +{ + return x1(GRID, i); +} +template int xmin(const grid& GRID, int i) +{ + return xmin(GRID, i); +} +template int xmax(const grid& GRID, int i) +{ + return xmax(GRID, i); +} +template int xlength(const grid& GRID, int i) +{ + return xlength(GRID, i); +} +template double dx(const grid& GRID, int i) +{ + return dx(GRID, i); +} +template double& dx(grid& GRID, int i) +{ + return dx(GRID, i); +} + +// grid utility functions (x direction) +template int x0(const grid& GRID) +{ + return x0(GRID); +} +template int x1(const grid& GRID) +{ + return x1(GRID); +} +template int xmin(const grid& GRID) +{ + return xmin(GRID); +} +template int xmax(const grid& GRID) +{ + return xmax(GRID); +} +template int xlength(const grid& GRID) +{ + return xlength(GRID); +} +template double dx(const grid& GRID) +{ + return dx(GRID); +} +template double& dx(grid& GRID) +{ + return dx(GRID); +} + +// grid utility functions (y direction) +template int y0(const grid& GRID) +{ + return y0(GRID); +} +template int y1(const grid& GRID) +{ + return y1(GRID); +} +template int ymin(const grid& GRID) +{ + return ymin(GRID); +} +template int ymax(const grid& GRID) +{ + return ymax(GRID); +} +template int ylength(const grid& GRID) +{ + return ylength(GRID); +} +template double dy(const grid& GRID) +{ + return dy(GRID); +} +template double& dy(grid& GRID) +{ + return dy(GRID); +} + +// grid utility functions (z direction) +template int z0(const grid& GRID) +{ + return z0(GRID); +} +template int z1(const grid& GRID) +{ + return z1(GRID); +} +template int zmin(const grid& GRID) +{ + return zmin(GRID); +} +template int zmax(const grid& GRID) +{ + return zmax(GRID); +} +template int zlength(const grid& GRID) +{ + return zlength(GRID); +} +template double dz(const grid& GRID) +{ + return dz(GRID); +} +template double& dz(grid& GRID) +{ + return dz(GRID); +} + + +// instantiation of grid class +template +class grid +{ +public: + // constructors + grid(int FIELDS, int min[dim], int max[dim], int GHOSTS=1, bool SINGLE=false); + + grid(int FIELDS, ...); + + grid(const grid& GRID); + + template + grid(const grid& GRID, int FIELDS); + + grid(const char* filename, int GHOSTS = 1); + + void setup(bool SINGLE = false); + // destructor + ~grid(); + + // assignment operators + + template grid& operator=(const U& value); + + template grid& operator=(const grid& GRID); + + template grid& operator+=(const grid& GRID); + + template grid& operator-=(const grid& GRID); + + // subscript operators + target < dim - 1, 0, T > operator [](int x) const; + + T& operator()(MMSP::vector x) const; + + T& operator()(int i) const; + + + // position utility function + MMSP::vector position(int i) const; + + + // parallelization + void ghostswap(); + + void ghostswap(const int sublattice); + + unsigned long buffer_size_save(const int min[dim], const int max[dim]) const; + + unsigned long buffer_size_save(T* p, int i, const int min[dim], const int max[dim]) const; + + unsigned long to_buffer_save(char* buffer, const int min[dim], const int max[dim]) const; + + unsigned long to_buffer_save(char* buffer, T* p, int i, const int min[dim], const int max[dim]) const; + + unsigned long from_buffer_save(char* buffer, const int min[dim], const int max[dim]); + + unsigned long from_buffer_save(char* buffer, T* p, int i, const int min[dim], const int max[dim]); + + unsigned long buffer_size() const; + + unsigned long buffer_size(const int min[dim], const int max[dim]) const; + + unsigned long buffer_size(T* p, int i, const int min[dim], const int max[dim]) const; + + unsigned long to_buffer(char* buffer) const; + + unsigned long to_buffer(char* buffer, const int min[dim], const int max[dim]) const; + + unsigned long to_buffer(char* buffer, T* p, int i, const int min[dim], const int max[dim]) const; + + unsigned long from_buffer(char* buffer); + + unsigned long from_buffer(char* buffer, const int min[dim], const int max[dim]); + + unsigned long from_buffer(char* buffer, T* p, int i, const int min[dim], const int max[dim]); + + // file I/O + void input(const char* filename, int GHOSTS = 1, int SINGLE = false); + + void read(std::ifstream& file, int GHOSTS = 1); + + void output(const char* filename) const; + + unsigned long write_buffer(char*& buf) const; + + // grid utility functions + friend int nodes(const grid& GRID) + { + return GRID.nodes; + } + friend int fields(const grid& GRID) + { + return GRID.fields; + } + friend int ghosts(const grid& GRID) + { + return GRID.ghosts; + } + friend int g0(const grid& GRID, int i) + { + return GRID.g0[i]; + } + friend int g1(const grid& GRID, int i) + { + return GRID.g1[i]; + } + friend int glength(const grid& GRID, int i) + { + return GRID.g1[i] - GRID.g0[i]; + } + friend int b0(const grid& GRID, int i) + { + return GRID.b0[i]; + } + friend int b1(const grid& GRID, int i) + { + return GRID.b1[i]; + } + friend int& b0(grid& GRID, int i) + { + return GRID.b0[i]; + } + friend int& b1(grid& GRID, int i) + { + return GRID.b1[i]; + } + + // grid utility functions (all directions) + friend int x0(const grid& GRID, int i) + { + return GRID.x0[i]; + } + friend int x1(const grid& GRID, int i) + { + return GRID.x1[i]; + } + friend int xmin(const grid& GRID, int i) + { + return GRID.x0[i]; + } + friend int xmax(const grid& GRID, int i) + { + return GRID.x1[i]; + } + friend int xlength(const grid& GRID, int i) + { + return GRID.x1[i] - GRID.x0[i]; + } + friend double dx(const grid& GRID, int i) + { + return GRID.dx[i]; + } + friend double& dx(grid& GRID, int i) + { + return GRID.dx[i]; + } + friend int N0(const grid& GRID, int i) + { + return GRID.n0[i]; + } + friend int N1(const grid& GRID, int i) + { + return GRID.n1[i]; + } + friend int P0(const grid& GRID, int i) + { + return GRID.p0[i]; + } + friend int P1(const grid& GRID, int i) + { + return GRID.p1[i]; + } + friend int sp(const grid& GRID, int i) + { + return GRID.sp[i]; + } + + // grid utility functions (x direction) + friend int x0(const grid& GRID) + { + return GRID.x0[0]; + } + friend int x1(const grid& GRID) + { + return GRID.x1[0]; + } + friend int xmin(const grid& GRID) + { + return GRID.x0[0]; + } + friend int xmax(const grid& GRID) + { + return GRID.x1[0]; + } + friend int xlength(const grid& GRID) + { + return GRID.x1[0] - GRID.x0[0]; + } + friend double dx(const grid& GRID) + { + return GRID.dx[0]; + } + friend double& dx(grid& GRID) + { + return GRID.dx[0]; + } + + // grid utility functions (y direction) + friend int y0(const grid& GRID) + { + return GRID.x0[1]; + } + friend int y1(const grid& GRID) + { + return GRID.x1[1]; + } + friend int ymin(const grid& GRID) + { + return GRID.x0[1]; + } + friend int ymax(const grid& GRID) + { + return GRID.x1[1]; + } + friend int ylength(const grid& GRID) + { + return GRID.x1[1] - GRID.x0[1]; + } + friend double dy(const grid& GRID) + { + return GRID.dx[1]; + } + friend double& dy(grid& GRID) + { + return GRID.dx[1]; + } + // grid utility functions (z direction) + friend int z0(const grid& GRID) + { + return GRID.x0[2]; + } + friend int z1(const grid& GRID) + { + return GRID.x1[2]; + } + friend int zmin(const grid& GRID) + { + return GRID.x0[2]; + } + friend int zmax(const grid& GRID) + { + return GRID.x1[2]; + } + friend int zlength(const grid& GRID) + { + return GRID.x1[2] - GRID.x0[2]; + } + friend double dz(const grid& GRID) + { + return GRID.dx[2]; + } + friend double& dz(grid& GRID) + { + return GRID.dx[2]; + } + + + // utility functions + void swap(grid& GRID); + + void copy(const grid& GRID); + +protected: + T* data; // local grid data + + int nodes; // number of nodes (excluding ghosts) + int cells; // number of nodes (including ghosts) + int fields; // number of fields + int ghosts; // ghost cell depth + + #define dMax 3 + + int g0[dMax]; // global lower coordinate limit (excluding ghosts) + int g1[dMax]; // global upper coordinate limit (excluding ghosts) + + int x0[dMax]; // local lower coordinate limit (excluding ghosts) + int x1[dMax]; // local upper coordinate limit (excluding ghosts) + int xx[dMax]; // local cells in slice (excluding ghosts) + + int s0[dMax]; // local lower coordinate limit (including ghosts) + int s1[dMax]; // local upper coordinate limit (including ghosts) + int sx[dMax]; // local cells in slice (including ghosts) + + int b0[dMax]; // boundary condition at x0 + int b1[dMax]; // boundary condition at x1 + + double dx[dMax]; // global cell spacing + + int p0[dMax]; + int p1[dMax]; + int sp[dMax]; // global processors in slice + + int n0[dMax]; // neighbor processor at x0 + int n1[dMax]; // neighbor processor at x1 +}; + + +// math functions +template T laplacian(const grid& GRID, const vector& x); + +template vector laplacian(const grid >& GRID, const vector& x); + +template T laplacian(const grid >& GRID, const vector& x, const int field); + +template sparse laplacian(const grid >& GRID, const vector& x); + +template T laplacian(const grid& GRID, int i); + +template vector laplacian(const grid >& GRID, int i); + + +template T laplacian(const grid >& GRID, int i, int f); + +template sparse laplacian(const grid >& GRID, int i); + +template vector gradient(const grid& GRID, const vector& x); + +template vector gradient(const grid >& GRID, const vector& x, const int field); + +template vector gradientsq(const grid& GRID, const vector& x); + +template vector grad(const grid& GRID, const vector& x); + +template T divergence(const grid& GRID, const vector& x); + +template vector divergence(const grid >& GRID, const vector& x); + +template T div(const grid& GRID, const vector& x) +{ + return divergence(GRID, x); +} + +template vector div(const grid >& GRID, const vector& x) +{ + return divergence(GRID, x); +} + +// position utility function +template MMSP::vector position(const grid& GRID, int index) +{ + return GRID.position(index); +} + +// parallelization +template void ghostswap(grid& GRID) +{ + GRID.ghostswap(); +} + +template void ghostswap(grid& GRID, const int sublattice) +{ + GRID.ghostswap(sublattice); +} +// buffer I/O functions +template unsigned long buffer_size(const grid& GRID) +{ + return GRID.buffer_size(); +} +template unsigned long to_buffer(const grid& GRID, char* buffer) +{ + return GRID.to_buffer(buffer); +} +template unsigned long from_buffer(grid& GRID, const char* buffer) +{ + return GRID.from_buffer(buffer); +} + +// file I/O functions +template void read(grid& GRID, std::ifstream& file) +{ + GRID.read(file); +} +template void write(const grid& GRID, std::ifstream& file) +{ + GRID.write(file); +} +template void input(grid& GRID, const char* filename, int GHOSTS = 1, int SINGLE = false) +{ + GRID.input(filename, GHOSTS, SINGLE); +} +template void output(const grid& GRID, const char* filename) +{ + GRID.output(filename); +} +template unsigned long write_buffer(const grid& GRID, char*& buf) +{ + return GRID.write_buffer(buf); +} + +// utility functions +template int length(const grid& GRID) +{ + return nodes(GRID); +} +template void resize(int n, grid& GRID) {} +template void swap(grid& GRID1, grid& GRID2) +{ + GRID1.swap(GRID2); +} +template void copy(grid& GRID1, grid& GRID2) +{ + GRID2.copy(GRID1); +} +template std::string name(const grid& GRID) +{ + return std::string("grid:") + name(T()); +} + + +} // namespace MMSP + + +#include "MMSP.grid.cpp" + +#endif diff --git a/examples/pfhub_bm8/include/MMSP.hpp b/examples/pfhub_bm8/include/MMSP.hpp new file mode 100644 index 0000000..dba8adb --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.hpp @@ -0,0 +1,15 @@ +// MMSP.hpp +// All encompassing MMSP header file +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +#include"MMSP.utility.h" + +#include"MMSP.scalar.h" + +#include"MMSP.vector.h" + +#include"MMSP.sparse.h" + +#include"MMSP.grid.h" + +#include"MMSP.output.h" diff --git a/examples/pfhub_bm8/include/MMSP.main.hpp b/examples/pfhub_bm8/include/MMSP.main.hpp new file mode 100644 index 0000000..9ec3d88 --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.main.hpp @@ -0,0 +1,356 @@ +// MMSP.main.hpp +// Boilerplate source code for MMSP executables +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +// The user must supply the following in any source +// code that includes this file: +// +// #include"..." +// +// void generate(int dim, +// char* filename); +// template +// void update(GRID& grid, int steps); +// +// #include"MMSP.main.hpp" +// +// The first include must provide the functions +// +// std::string PROGRAM = "..."; +// std::string MESSAGE = "..."; +// typedef ... GRID1D; +// typedef ... GRID2D; +// typedef ... GRID3D; +// +// which the main() function calls to generate +// example grids or to perform computations. + + +#ifndef MMSP_MAIN +#define MMSP_MAIN +#include +#include +#include +#include +#include +#include + +int main(int argc, char* argv[]) { + MMSP::Init(argc, argv); + + // check argument list + if (argc < 2) { + std::cout << PROGRAM << ": bad argument list. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + // Many of the example programs call rand(). srand() must be called + // _exactly once_, making this the proper place for it. + int rank = 0; + #ifdef MPI_VERSION + rank = MPI::COMM_WORLD.Get_rank(); + #endif + srand(time(NULL)+rank); + + // print help message and exit + if (std::string(argv[1]) == std::string("--help")) { + std::cout << PROGRAM << ": " << MESSAGE << "\n\n"; + std::cout << "Valid command lines have the form:\n\n"; + std::cout << " " << PROGRAM << " "; + std::cout << "[--help] [--example dimension [outfile]] [infile [outfile] steps [increment]]\n\n"; + std::cout << "A few examples of using the command line follow.\n\n"; + std::cout << "The command\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "generates this help message and exits. "; + std::cout << "The \"--example\" option can be used to gen-\nerate a relevant test grid, e.g.\n\n"; + std::cout << " " << PROGRAM << " --example 3\n\n"; + std::cout << "generates an example test problem on a grid of dimension 3 and writes this to the \n"; + std::cout << "file named \"example\", while\n\n"; + std::cout << " " << PROGRAM << " --example 2 start\n\n"; + std::cout << "generates an example test problem on a grid of dimension 2 and writes this to the \n"; + std::cout << "file named \"start\".\n\n"; + std::cout << " " << PROGRAM << " start 1000\n\n"; + std::cout << "reads the grid contained within \"start\" and runs a simulation for 1000 time steps.\n"; + std::cout << "The final grid is written to a file named \"start.1000\".\n\n"; + std::cout << " " << PROGRAM << " start final 1000\n\n"; + std::cout << "reads the grid contained within \"start\" and runs a simulation for 1000 time steps.\n"; + std::cout << "The final grid is written to a file named \"final.1000\".\n\n"; + std::cout << " " << PROGRAM << " start 1000 100\n\n"; + std::cout << "reads the grid contained within \"start\" and runs a simulation for 1000 time steps.\n"; + std::cout << "The grid is then written to a file every 100 time steps. "; + std::cout << "The resulting files are \nnamed \"start.0100\", \"start.0200\", ... \"start.1000\".\n\n"; + std::cout << " " << PROGRAM << " start final 1000 100\n\n"; + std::cout << "reads the grid contained within \"start\" and runs a simulation for 1000 time steps.\n"; + std::cout << "The grid is then written to a file every 100 time steps. "; + std::cout << "The resulting files are \nnamed \"final.0100\", \"final.0200\", ... \"final.1000\".\n\n"; + exit(0); + } + + // generate example grid + else if (std::string(argv[1]) == std::string("--example")) { + // check argument list + if (argc<3 or argc>4) { + std::cout << PROGRAM << ": bad argument list. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + // check problem dimension + if (std::string(argv[2]).find_first_not_of("0123456789") != std::string::npos) { + std::cout << PROGRAM << ": example grid must have integral dimension. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + int dim = atoi(argv[2]); + + // set output file name + std::string outfile; + if (argc < 4) outfile = "example"; + else outfile = argv[3]; + + char* filename = new char[outfile.length()+1]; + for (unsigned int i=0; i5) { + std::cout << PROGRAM << ": bad argument list. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + int steps; + int increment; + std::string outfile; + + if (std::string(argv[2]).find_first_not_of("0123456789") == std::string::npos) { + // set output file name + outfile = argv[1]; + + // must have integral number of time steps + if (std::string(argv[2]).find_first_not_of("0123456789") != std::string::npos) { + std::cout << PROGRAM << ": number of time steps must have integral value. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + steps = atoi(argv[2]); + increment = steps; + + if (argc > 3) { + // must have integral output increment + if (std::string(argv[3]).find_first_not_of("0123456789") != std::string::npos) { + std::cout << PROGRAM << ": output increment must have integral value. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + increment = atoi(argv[3]); + + // output increment must be smaller than number of steps + if (increment > steps) { + std::cout << PROGRAM << ": output increment must be smaller than number of time steps. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + } + } + + else { + // set output file name + outfile = argv[2]; + + // set number of time steps + if (std::string(argv[3]).find_first_not_of("0123456789") != std::string::npos) { + // must have integral number of time steps + std::cout << PROGRAM << ": number of time steps must have integral value. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + steps = atoi(argv[3]); + increment = steps; + + if (argc > 4) { + // must have integral output increment + if (std::string(argv[4]).find_first_not_of("0123456789") != std::string::npos) { + std::cout << PROGRAM << ": output increment must have integral value. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + + increment = atoi(argv[4]); + + // output increment must be smaller than number of steps + if (increment > steps) { + std::cout << PROGRAM << ": output increment must be smaller than number of time steps. Use\n\n"; + std::cout << " " << PROGRAM << " --help\n\n"; + std::cout << "to generate help message.\n\n"; + MMSP::Abort(-1); + } + } + } + + // file open error check + std::ifstream input(argv[1]); + if (!input) { + std::cerr << "File input error: could not open " << argv[1] << ".\n\n"; + MMSP::Abort(-1); + } + + // read data type + std::string type; + getline(input, type, '\n'); + + // grid type error check + if (type.substr(0, 4) != "grid") { + std::cerr << "File input error: file does not contain grid data." << std::endl; + MMSP::Abort(-1); + } + + // read grid dimension + int dim; + input >> dim; + + input.close(); + + // set output file basename + int iterations_start(0); + if (outfile.find_first_of(".") != outfile.find_last_of(".")) { + std::string number = outfile.substr(outfile.find_first_of(".") + 1, outfile.find_last_of(".") - 1); + iterations_start = atoi(number.c_str()); + } + std::string base; + if (outfile.find(".", outfile.find_first_of(".") + 1) == std::string::npos) // only one dot found + base = outfile.substr(0, outfile.find_last_of(".")) + "."; + else { + int last_dot = outfile.find_last_of("."); + int prev_dot = outfile.rfind('.', last_dot - 1); + std::string number = outfile.substr(prev_dot + 1, last_dot - prev_dot - 1); + bool isNumeric(true); + for (unsigned int i = 0; i < number.size(); ++i) { + if (!isdigit(number[i])) isNumeric = false; + } + if (isNumeric) + base = outfile.substr(0, outfile.rfind(".", outfile.find_last_of(".") - 1)) + "."; + else base = outfile.substr(0, outfile.find_last_of(".")) + "."; + } + + // set output file suffix + std::string suffix = ""; + if (outfile.find_last_of(".") != std::string::npos) + suffix = outfile.substr(outfile.find_last_of("."), std::string::npos); + + // set output filename length + int length = base.length() + suffix.length(); + if (1) { + std::stringstream slength; + slength << steps; + length += slength.str().length(); + } + + + if (dim == 1) { + // construct grid object + GRID1D grid(argv[1]); + + // perform computation + for (int i = iterations_start; i < steps; i += increment) { + MMSP::update(grid, increment); + + // generate output filename + std::stringstream outstr; + int n = outstr.str().length(); + for (int j = 0; n < length; j++) { + outstr.str(""); + outstr << base; + for (int k = 0; k < j; k++) outstr << 0; + outstr << i + increment << suffix; + n = outstr.str().length(); + } + + char filename[FILENAME_MAX] = {}; // initialize null characters + for (unsigned int j=0; j +#include + +namespace MMSP { + +#ifdef PNG_LIBPNG_VER +int writePNG(const int w, const int h, const int bpp, unsigned char* imData, const char* filename) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write PNG in parallel." < +void scalar_field_to_png(const grid& GRID, + const int& mode, int sliceaxis, int slicelevel, + const double& zoomin, const double& zoomax, + const bool coninv, const std::set& levelset, const int& lvlfield, + const double& contol, const unsigned int& bufsize, unsigned char* buffer) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write PNG in parallel." <max) + max=val; + else if (val x(1,0); + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + double val = GRID(x); + if (mode==1) //mag + val = std::fabs(val); + assert(n::iterator it=levelset.begin(); it!=levelset.end(); it++) + if (std::fabs(val-*it)/std::fabs(*it) x(2,0); + for (x[1] = g1(GRID,1)-1; x[1] >= g0(GRID,1); x[1]--) + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + double val = GRID(x); + if (mode==1) //mag + val = std::fabs(val); + assert(n::iterator it=levelset.begin(); it!=levelset.end(); it++) + if (std::fabs(val-*it)/std::fabs(*it) x(3,0); + for (x[2] = g0(GRID,2); x[2] < g1(GRID,2); x[2]++) + for (x[1] = g1(GRID,1)-1; x[1] >= g0(GRID,1); x[1]--) + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + if (x[sliceaxis]!=slicelevel) // clumsy, but effective + continue; + double val = GRID(x); + if (mode==1) //mag + val = std::fabs(val); + assert(n0) //contour + for (std::set::iterator it=levelset.begin(); it!=levelset.end(); it++) + if (std::fabs(val-*it)/std::fabs(*it) +void vector_field_to_png(const grid >& GRID, + const int& mode, int sliceaxis, int slicelevel, + const double& zoomin, const double& zoomax, + const bool coninv, const std::set& levelset, const int& lvlfield, + const double& contol, const std::set& fieldset, + const unsigned int& bufsize, unsigned char* buffer) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write PNG in parallel." <1) + sum += pow(GRID(n)[i],2.0); + else + sum = GRID(n)[i]; + } else if (mode==1) { // --mag + for (int i=0; i1) + for (std::set::iterator it=fieldset.begin(); it!=fieldset.end(); it++) + sum += pow(GRID(n)[*it],2.0); + else + sum = GRID(n)[*fieldset.begin()]; + } else if (mode==3) { // --exclude + for (int i=0; i::iterator it=fieldset.find(i); + if (it == fieldset.end()) { + if (included>1) + sum += pow(GRID(n)[i],2.0); + else + sum = GRID(n)[i]; + } + } + } + if (mode==1 || included!=1) + sum = std::sqrt(sum); + if (sum>max) + max=sum; + else if (sum x(1,0); + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + double sum=0.0; + if (mode==0) { // default selection + for (int i=0; i1) + sum += pow(GRID(x)[i],2.0); + else + sum = GRID(x)[i]; + } + } else if (mode==1) { // --mag + for (int i=0; i::iterator it=fieldset.begin(); it!=fieldset.end(); it++) + sum += pow(GRID(x)[*it],2.0); + } else if (mode==3) { // --exclude + for (int i=0; i::iterator it=fieldset.find(i); + if (it == fieldset.end()) { + if (included>1) + sum += pow(GRID(x)[i],2.0); + else + sum = GRID(x)[i]; + } + } + } + if (mode==1 || included!=1) + sum = std::sqrt(sum); + assert(n0) // --contour + for (std::set::iterator itl=levelset.begin(); itl!=levelset.end(); itl++) + if (std::fabs(GRID(x)[lvlfield]-*itl)/std::fabs(*itl) x(2,0); + for (x[1] = g1(GRID,1)-1; x[1] >= g0(GRID,1); x[1]--) + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + double sum=0.0; + if (mode==0) { // default selection + for (int i=0; i1) + sum += pow(GRID(x)[i],2.0); + else + sum = GRID(x)[i]; + } + } else if (mode==1) { // --mag + for (int i=0; i::iterator it=fieldset.begin(); it!=fieldset.end(); it++) + sum += pow(GRID(x)[*it],2.0); + } + } else if (mode==3) { // --exclude + for (int i=0; i::iterator it=fieldset.find(i); + if (it == fieldset.end()) { + if (included>1) + sum += pow(GRID(x)[i],2.0); + else + sum = GRID(x)[i]; + } + } + } + if (mode==1 || included!=1) + sum = std::sqrt(sum); + assert(n0) // --contour + for (std::set::iterator itl=levelset.begin(); itl!=levelset.end(); itl++) + if (std::fabs(GRID(x)[lvlfield]-*itl)/std::fabs(*itl) x(3,0); + for (x[2] = g0(GRID,2); x[2] < g1(GRID,2); x[2]++) + for (x[1] = g1(GRID,1)-1; x[1] >= g0(GRID,1); x[1]--) + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + if (x[sliceaxis]!=slicelevel) // clumsy, but effective + continue; + double sum=0.0; + if (mode==0) { // default selection + for (int i=0; i1) + sum += pow(GRID(x)[i],2.0); + else + sum = GRID(x)[i]; + } + } else if (mode==1) { // --mag + for (int i=0; i::iterator it=fieldset.begin(); it!=fieldset.end(); it++) + sum += pow(GRID(x)[*it],2.0); + } else if (mode==3) { // --exclude + for (int i=0; i::iterator it=fieldset.find(i); + if (it == fieldset.end()) { + if (included>1) + sum += pow(GRID(x)[i],2.0); + else + sum = GRID(x)[i]; + } + } + } + if (mode==1 || included!=1) + sum = std::sqrt(sum); + assert(n0) // --contour + for (std::set::iterator itl=levelset.begin(); itl!=levelset.end(); itl++) + if (std::fabs(GRID(x)[lvlfield]-*itl)/std::fabs(*itl) +void sparse_field_to_png(const grid >& GRID, + const int& mode, int sliceaxis, int slicelevel, + const double& zoomin, const double& zoomax, + const bool coninv, const std::set& levelset, const int& lvlfield, + const double& contol, const std::set& fieldset, + const unsigned int& bufsize, unsigned char* buffer) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write PNG in parallel." <::iterator it=fieldset.begin(); it!=fieldset.end(); it++) { + if (included>1) + sum += pow(GRID(n)[*it],2.0); + else + sum = GRID(n)[*it]; + } + } else if (mode==3) { // --exclude + for (int h=0; h::iterator it=fieldset.find(i); + if (it == fieldset.end()) + sum += pow(GRID(n).value(h),2.0); + } + } + if (included!=1) + sum = std::sqrt(sum); + if (sum>max) + max=sum; + else if (sum x(1,0); + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + double sum=0.0; + if (mode<2) { // --mag + for (int h=0; h::iterator it=fieldset.begin(); it!=fieldset.end(); it++) { + if (included>1) + sum += pow(GRID(x)[*it],2.0); + else + sum = GRID(x)[*it]; + } + } else if (mode==3) { // --exclude + for (int h=0; h::iterator it=fieldset.find(i); + if (it == fieldset.end()) + sum += pow(GRID(x).value(h),2.0); + } + } + if (mode!=2 || included!=1) + sum = std::sqrt(sum); + assert(n0) // --contour + for (std::set::iterator itl=levelset.begin(); itl!=levelset.end(); itl++) + if (std::fabs(GRID(x)[lvlfield]-*itl)/std::fabs(*itl) x(2,0); + for (x[1] = g1(GRID,1)-1; x[1] >= g0(GRID,1); x[1]--) + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + double sum=0.0; + if (mode<2) { // --mag + for (int h=0; h::iterator it=fieldset.begin(); it!=fieldset.end(); it++) { + if (included>1) + sum += pow(GRID(x)[*it],2.0); + else + sum = GRID(x)[*it]; + } + } else if (mode==3) { // --exclude + for (int h=0; h::iterator it=fieldset.find(i); + if (it == fieldset.end()) + sum += pow(GRID(x).value(h),2.0); + } + } + if (mode!=2 || included!=1) + sum = std::sqrt(sum); + assert(n0) // --contour + for (std::set::iterator itl=levelset.begin(); itl!=levelset.end(); itl++) + if (std::fabs(GRID(x)[lvlfield]-*itl)/std::fabs(*itl) x(3,0); + for (x[2] = g0(GRID,2); x[2] < g1(GRID,2); x[2]++) + for (x[1] = g1(GRID,1)-1; x[1] >= g0(GRID,1); x[1]--) + for (x[0] = g0(GRID,0); x[0] < g1(GRID,0); x[0]++) { + if (x[sliceaxis]!=slicelevel) // clumsy, but effective + continue; + double sum=0.0; + if (mode<2) { // --mag + for (int h=0; h::iterator it=fieldset.begin(); it!=fieldset.end(); it++) { + if (included>1) + sum += pow(GRID(x)[*it],2.0); + else + sum = GRID(x)[*it]; + } + } else if (mode==3) { // --exclude + for (int h=0; h::iterator it=fieldset.find(i); + if (it == fieldset.end()) + sum += pow(GRID(x).value(h),2.0); + } + } + if (mode!=2 || included!=1) + sum = std::sqrt(sum); + assert(n0) // --contour + for (std::set::iterator itl=levelset.begin(); itl!=levelset.end(); itl++) + if (std::fabs(GRID(x)[lvlfield]-*itl)/std::fabs(*itl) +void scalar_field_to_vtk(std::string filename, const grid& GRID, const int mode) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write VTK in parallel." < scalarData = vtkSmartPointer::New(); + + if (dim==1) { + scalarData->SetDimensions(x1(GRID)-x0(GRID), 1, 1); + scalarData->SetExtent(x0(GRID), x1(GRID) - 1, 0, 0, 0, 0); + scalarData->SetSpacing(dx(GRID), 1, 1); + #if VTK_MAJOR_VERSION <= 5 + scalarData->SetScalarTypeToFloat(); + scalarData->SetNumberOfScalarComponents(1); + #else + scalarData->AllocateScalars(VTK_FLOAT, 1); + #endif + + vector x(1,0); + for (x[0]=x0(GRID); x[0](scalarData->GetScalarPointer(x[0], 0, 0)); + if (mode==1) { // --mag + *pixel = std::sqrt(GRID(x)*GRID(x)); + } else { + *pixel = GRID(x); + } + } + } else if (dim==2) { + scalarData->SetDimensions(x1(GRID)-x0(GRID), + y1(GRID)-y0(GRID), + 1); + scalarData->SetExtent(x0(GRID), x1(GRID) - 1, + y0(GRID), y1(GRID) - 1, + 0, 0); + scalarData->SetSpacing(dx(GRID, 0), dx(GRID, 1), 1); + #if VTK_MAJOR_VERSION <= 5 + scalarData->SetScalarTypeToFloat(); + scalarData->SetNumberOfScalarComponents(1); + #else + scalarData->AllocateScalars(VTK_FLOAT, 1); + #endif + + vector x(2,0); + for (x[1]=y0(GRID); x[1](scalarData->GetScalarPointer(x[0], x[1], 0)); + if (mode==1) { // --mag + *pixel = std::sqrt(GRID(x)*GRID(x)); + } else { + *pixel = GRID(x); + } + } + } + } else if (dim==3) { + scalarData->SetDimensions(x1(GRID)-x0(GRID), + y1(GRID)-y0(GRID), + z1(GRID)-z0(GRID)); + scalarData->SetExtent(x0(GRID), x1(GRID) - 1, + y0(GRID), y1(GRID) - 1, + z0(GRID), z1(GRID) - 1); + scalarData->SetSpacing(dx(GRID, 0), dx(GRID, 1), dx(GRID, 2)); + #if VTK_MAJOR_VERSION <= 5 + scalarData->SetScalarTypeToFloat(); + scalarData->SetNumberOfScalarComponents(1); + #else + scalarData->AllocateScalars(VTK_FLOAT, 1); + #endif + + vector x(3,0); + for (x[2]=z0(GRID); x[2](scalarData->GetScalarPointer(x[0], x[1], x[2])); + if (mode==1) { // --mag + *pixel = std::sqrt(GRID(x)*GRID(x)); + } else { + *pixel = GRID(x); + } + } + } + } + } + scalarData->GetPointData()->GetAbstractArray(0)->SetName("scalar_data"); + + vtkSmartPointer writer = vtkSmartPointer::New(); + writer->SetFileName(filename.c_str()); + #if VTK_MAJOR_VERSION <= 5 + writer->SetInputConnection(scalarData->GetProducerPort()); + #else + writer->SetInputData(scalarData); + #endif + writer->SetDataModeToBinary(); + writer->SetCompressorTypeToZLib(); + writer->Write(); + + scalarData = NULL; + writer = NULL; +} + +template +void vector_field_to_vtk(std::string filename, const grid >& GRID, + const int mode, const int field) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write VTK in parallel." < vectorData = vtkSmartPointer::New(); + + if (dim==1) { + vectorData->SetDimensions(x1(GRID)-x0(GRID), 1, 1); + vectorData->SetExtent(x0(GRID), x1(GRID) - 1, 0, 0, 0, 0); + vectorData->SetSpacing(dx(GRID), 1, 1); + #if VTK_MAJOR_VERSION <= 5 + vectorData->SetScalarTypeToFloat(); + if (mode==1 || mode==2 || mode==3) + vectorData->SetNumberOfScalarComponents(1); + else + vectorData->SetNumberOfScalarComponents(fields(GRID)); + #else + if (mode==1 || mode==2 || mode==3) + vectorData->AllocateScalars(VTK_FLOAT, 1); + else + vectorData->AllocateScalars(VTK_FLOAT, fields(GRID)); + #endif + + vector x(1,0); + for (x[0]=x0(GRID); x[0]& v = GRID(x); + float* pixel = static_cast(vectorData->GetScalarPointer(x[0], 0, 0)); + if (mode==1) { // --mag + double sum = 0.0; + for (int h = 0; h < v.length(); h++) + sum += v[h]*v[h]; + *pixel = std::sqrt(sum); + } else if (mode==2) { // --max + // Export index of field with greatest magnitude + int max = 0; + for (int h = 1; h < v.length(); h++) + if (v[h] > v[max]) + max = h; + *pixel = max; + } else if (mode==3) { // --field + *pixel = v[field]; + } else { + for (int h = 0; h < v.length(); h++) + pixel[h] = v[h]; + } + } + } else if (dim==2) { + vectorData->SetDimensions(x1(GRID)-x0(GRID), + y1(GRID)-y0(GRID), + 1); + vectorData->SetExtent(x0(GRID), x1(GRID) - 1, + y0(GRID), y1(GRID) - 1, + 0, 0); + vectorData->SetSpacing(dx(GRID, 0), dx(GRID, 1), 1); + #if VTK_MAJOR_VERSION <= 5 + vectorData->SetScalarTypeToFloat(); + if (mode==1 || mode==2 || mode==3) + vectorData->SetNumberOfScalarComponents(1); + else + vectorData->SetNumberOfScalarComponents(fields(GRID)); + #else + if (mode==1 || mode==2 || mode==3) + vectorData->AllocateScalars(VTK_DOUBLE, 1); + else + vectorData->AllocateScalars(VTK_DOUBLE, fields(GRID)); + #endif + + vector x(2,0); + for (x[1]=y0(GRID); x[1]& v = GRID(x); + double* pixel = static_cast(vectorData->GetScalarPointer(x[0], x[1], 0)); + if (mode==1) { // --mag + double sum = 0.0; + for (int h = 0; h < v.length(); h++) + sum += v[h]*v[h]; + *pixel = std::sqrt(sum); + } else if (mode==2) { // --max + // Export index of field with greatest magnitude + int max = 0; + for (int h = 1; h < v.length(); h++) + if (v[h] > v[max]) + max = h; + *pixel = max; + } else if (mode==3) { // --field + *pixel = v[field]; + } else { + for (int h = 0; h < v.length(); h++) + pixel[h] = v[h]; + } + } + } + } else if (dim==3) { + vectorData->SetDimensions(x1(GRID)-x0(GRID), + y1(GRID)-y0(GRID), + z1(GRID)-z0(GRID)); + vectorData->SetExtent(x0(GRID), x1(GRID) - 1, + y0(GRID), y1(GRID) - 1, + z0(GRID), z1(GRID) - 1); + vectorData->SetSpacing(dx(GRID, 0), dx(GRID, 1), dx(GRID, 2)); + #if VTK_MAJOR_VERSION <= 5 + vectorData->SetScalarTypeToFloat(); + if (mode==1 || mode==2 || mode==3) + vectorData->SetNumberOfScalarComponents(1); + else + vectorData->SetNumberOfScalarComponents(fields(GRID)); + #else + if (mode==1 || mode==2 || mode==3) + vectorData->AllocateScalars(VTK_FLOAT, 1); + else + vectorData->AllocateScalars(VTK_FLOAT, fields(GRID)); + #endif + + vector x(3,0); + for (x[2]=z0(GRID); x[2]& v = GRID(x); + float* pixel = static_cast(vectorData->GetScalarPointer(x[0], x[1], x[2])); + if (mode==1) { // --mag + double sum = 0.0; + for (int h = 0; h < v.length(); h++) + sum += v[h]*v[h]; + *pixel = std::sqrt(sum); + } else if (mode==2) { // --max + // Export index of field with greatest magnitude + int max = 0; + for (int h = 1; h < v.length(); h++) + if (v[h] > v[max]) + max = h; + *pixel = max; + } else if (mode==3) { // --field + *pixel = v[field]; + } else { + for (int h = 0; h < v.length(); h++) + pixel[h] = v[h]; + } + } + } + } + } + + // vectorData->GetPointData()->GetAbstractArray(0)->SetName("vector_data"); + + vtkSmartPointer writer = vtkSmartPointer::New(); + writer->SetFileName(filename.c_str()); + #if VTK_MAJOR_VERSION <= 5 + writer->SetInputConnection(vectorData->GetProducerPort()); + #else + writer->SetInputData(vectorData); + #endif + writer->SetDataModeToBinary(); + writer->SetCompressorTypeToZLib(); + writer->Write(); + + vectorData = NULL; + writer = NULL; +} + +template +void sparse_field_to_vtk(std::string filename, const grid >& GRID, + const int mode, const int field) +{ + #ifdef MPI_VERSION + std::cerr << "Error: cannot write VTK in parallel." < sparseData = vtkSmartPointer::New(); + + if (dim==1) { + sparseData->SetDimensions(x1(GRID)-x0(GRID), 1, 1); + sparseData->SetExtent(x0(GRID), x1(GRID) - 1, 0, 0, 0, 0); + sparseData->SetSpacing(dx(GRID, 0), 1, 1); + #if VTK_MAJOR_VERSION <= 5 + sparseData->SetNumberOfScalarComponents(1); + sparseData->SetScalarTypeToFloat(); + #else + sparseData->AllocateScalars(VTK_FLOAT, 1); + #endif + + vector x(1,0); + for (x[0]=x0(GRID); x[0]& s = GRID(x); + float* pixel = static_cast(sparseData->GetScalarPointer(x[0], 0, 0)); + if (mode==2) { // --max + // Export index of field with greatest magnitude + int max = 0; + for (int h = 1; h < s.length(); h++) + if (s.value(h) > s.value(max)) + max = h; + *pixel = s.index(max); + } else if (mode==3) { // --field + *pixel = s[field]; + } else { // --mag is redundant for sparse + double sum = 0.0; + for (int h = 0; h < s.length(); h++) + sum += s.value(h)*s.value(h); + *pixel = std::sqrt(sum); + } + } + } else if (dim==2) { + sparseData->SetDimensions(x1(GRID)-x0(GRID), + y1(GRID)-y0(GRID), + 1); + sparseData->SetExtent(x0(GRID), x1(GRID) - 1, + y0(GRID), y1(GRID) - 1, + 0, 0); + sparseData->SetSpacing(dx(GRID, 0), dx(GRID, 1), 1); + #if VTK_MAJOR_VERSION <= 5 + sparseData->SetNumberOfScalarComponents(1); + sparseData->SetScalarTypeToFloat(); + #else + sparseData->AllocateScalars(VTK_FLOAT, 1); + #endif + + vector x(2,0); + for (x[1]=y0(GRID); x[1]& s = GRID(x); + float* pixel = static_cast(sparseData->GetScalarPointer(x[0], x[1], 0)); + if (mode==2) { // --max + // Export index of field with greatest magnitude + int max = 0; + for (int h = 1; h < s.length(); h++) + if (s.value(h) > s.value(max)) + max = h; + *pixel = s.index(max); + } else if (mode==3) { // --field + *pixel = s[field]; + } else { // --mag is redundant for sparse + double sum = 0.0; + for (int h = 0; h < s.length(); h++) + sum += s.value(h)*s.value(h); + *pixel = std::sqrt(sum); + } + } + } + } else if (dim==3) { + sparseData->SetDimensions(x1(GRID)-x0(GRID), + y1(GRID)-y0(GRID), + z1(GRID)-z0(GRID)); + sparseData->SetExtent(x0(GRID), x1(GRID) - 1, + y0(GRID), y1(GRID) - 1, + z0(GRID), z1(GRID) - 1); + sparseData->SetSpacing(dx(GRID, 0), dx(GRID, 1), dx(GRID, 2)); + #if VTK_MAJOR_VERSION <= 5 + sparseData->SetNumberOfScalarComponents(1); + sparseData->SetScalarTypeToFloat(); + #else + sparseData->AllocateScalars(VTK_FLOAT, 1); + #endif + + vector x(3,0); + for (x[2]=z0(GRID); x[2]& s = GRID(x); + float* pixel = static_cast(sparseData->GetScalarPointer(x[0], x[1], x[2])); + if (mode==2) { // --max + // Export index of field with greatest magnitude + int max = 0; + for (int h = 1; h < s.length(); h++) + if (s.value(h) > s.value(max)) + max = h; + *pixel = s.index(max); + } else if (mode==3) { // --field + *pixel = s[field]; + } else { // --mag is redundant for sparse + double sum = 0.0; + for (int h = 0; h < s.length(); h++) + sum += s.value(h)*s.value(h); + *pixel = std::sqrt(sum); + } + } + } + } + } + sparseData->GetPointData()->GetAbstractArray(0)->SetName("sparse_data"); + + vtkSmartPointer writer = vtkSmartPointer::New(); + writer->SetFileName(filename.c_str()); + #if VTK_MAJOR_VERSION <= 5 + writer->SetInputConnection(sparseData->GetProducerPort()); + #else + writer->SetInputData(sparseData); + #endif + writer->SetDataModeToBinary(); + writer->SetCompressorTypeToZLib(); + writer->Write(); + + sparseData = NULL; + writer = NULL; +} +#endif // VTK + +} // namespace diff --git a/examples/pfhub_bm8/include/MMSP.output.h b/examples/pfhub_bm8/include/MMSP.output.h new file mode 100644 index 0000000..4ec90be --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.output.h @@ -0,0 +1,51 @@ +// MMSP.output.hpp +// Declaration of MMSP output functions +// Questions/comments to trevor.keller@gmail.com (Trevor Keller) + +#include +#include + +namespace MMSP { + #ifdef PNG_LIBPNG_VER + int writePNG(const int w, const int h, const int bpp, unsigned char* imData, const char* filename); + + template + void scalar_field_to_png(const grid& GRID, + const int& mode, int sliceaxis, int slicelevel, + const double& zoomin, const double& zoomax, + const bool coninv, const std::set& levelset, const int& lvlfield, + const double& contol, const unsigned int& bufsize, unsigned char* buffer); + + template + void vector_field_to_png(const grid >& GRID, + const int& mode, int sliceaxis, int slicelevel, + const double& zoomin, const double& zoomax, + const bool coninv, const std::set& levelset, const int& lvlfield, + const double& contol, const std::set& fieldset, + const unsigned int& bufsize, unsigned char* buffer); + + template + void sparse_field_to_png(const grid >& GRID, + const int& mode, int sliceaxis, int slicelevel, + const double& zoomin, const double& zoomax, + const bool coninv, const std::set& leveOBlset, const int& lvlfield, + const double& contol, const std::set& fieldset, + const unsigned int& bufsize, unsigned char* buffer); + #endif // PNG + + #ifdef VTK_VERSION + template + void scalar_field_to_vtk(std::string filename, const grid& GRID, const int mode); + + template + void vector_field_to_vtk(std::string filename, const grid >& GRID, + const int mode, const int field); + + template + void sparse_field_to_vtk(std::string filename, const grid >& GRID, + const int mode, const int field); + #endif // VTK + +} // namespace + +#include "MMSP.output.cpp" diff --git a/examples/pfhub_bm8/include/MMSP.scalar.h b/examples/pfhub_bm8/include/MMSP.scalar.h new file mode 100644 index 0000000..d407c4c --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.scalar.h @@ -0,0 +1,249 @@ +// MMSP.scalar.h +// Class definition for the MMSP scalar data structure +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +#ifndef MMSP_SCALAR +#define MMSP_SCALAR +#include"MMSP.utility.h" + +namespace MMSP { + +template class scalar { +public: + // constructors + scalar() {} + scalar(const T& value) { + data = value; + } + scalar(const scalar& s) { + data = s.data; + } + template scalar(const U& value) { + data = static_cast(value); + } + template scalar(const scalar& s) { + data = static_cast(s); + } + + // data access operators + operator T&() { + return data; + } + operator const T&() const { + return data; + } + + // assignment operators + scalar& operator=(const T& value) { + data = value; + return *this; + } + scalar& operator=(const scalar& s) { + data = s.data; + return *this; + } + template scalar& operator=(const U& value) { + data = static_cast(value); + return *this; + } + template scalar& operator=(const scalar& s) { + data = static_cast(s); + return *this; + } + + // buffer I/O functions + int buffer_size() const { + return sizeof(T); + } + int to_buffer(char* buffer) const { + memcpy(buffer, &data, sizeof(T)); + return sizeof(T); + } + int from_buffer(const char* buffer) { + memcpy(&data, buffer, sizeof(T)); + return sizeof(T); + } + + // file I/O functions + void write(std::ofstream& file) const { + file.write(reinterpret_cast(&data), sizeof(T)); + } + void read(std::ifstream& file) { + file.read(reinterpret_cast(&data), sizeof(T)); + } + + // utility functions + int length() const { + return 1; + } + void resize(int n) {} + void copy(const scalar& s) { + memcpy(data, s.data, sizeof(T)); + } + void swap(scalar& s) { + T temp = data; + data = s.data; + s.data = temp; + } + +private: + // object data + T data; +}; + +// buffer I/O functions +template int buffer_size(const scalar& s) { + return s.buffer_size(); +} +template int to_buffer(const scalar& s, char* buffer) { + return s.to_buffer(buffer); +} +template int from_buffer(scalar& s, const char* buffer) { + return s.from_buffer(buffer); +} + +// file I/O functions +template void write(const scalar& s, std::ofstream& file) { + return s.write(file); +} +template void read(scalar& s, std::ifstream& file) { + return s.read(file); +} + +// utility functions +template int length(const scalar& s) { + return s.length(); +} +template void resize(scalar& s, int n) { + s.resize(n); +} +template void copy(scalar& s, const scalar& t) { + s.copy(t); +} +template void swap(scalar& s, scalar& t) { + s.swap(t); +} +template std::string name(const scalar& s) { + return std::string("scalar:") + name(T()); +} + + +// target class: dim = 0 specialization for scalar class +template +class target<0, ind, scalar > { +public: + // constructor + target(scalar* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1) { + data = DATA; + s0 = S0; + sx = SX; + x0 = X0; + x1 = X1; + b0 = B0; + b1 = B1; + } + + // data access operators + operator T&() { + return *data; + } + operator const T&() const { + return *data; + } + + // assignment operators + scalar& operator=(const T& value) const { + return data->operator=(value); + } + scalar& operator=(const scalar& s) const { + return data->operator=(s); + } + template scalar& operator=(const U& value) const { + return data->operator=(value); + } + template scalar& operator=(const scalar& s) const { + return data->operator=(s); + } + + // buffer I/O functions + int buffer_size() const { + return data->buffer_size(); + } + int to_buffer(char* buffer) const { + return data->to_buffer(buffer); + } + int from_buffer(const char* buffer) const { + return data->from_buffer(buffer); + } + + // file I/O functions + void write(std::ofstream& file) const { + data->write(file); + } + void read(std::ifstream& file) const { + data->read(file); + } + + // utility functions + int length() const { + return data->length(); + } + int resize(int n) const { + return data->resize(n); + } + void copy(const target& t) const { + data->copy(t->data); + } + void swap(const target& t) const { + data->swap(t->data); + } + + // object data + scalar* data; + const int* s0; + const int* sx; + const int* x0; + const int* x1; + const int* b0; + const int* b1; +}; + +// buffer I/O functions +template int buffer_size(const target<0, ind, scalar >& s) { + return s.buffer_size(); +} +template int to_buffer(const target<0, ind, scalar >& s, char* buffer) { + return s.to_buffer(buffer); +} +template int from_buffer(const target<0, ind, scalar >& s, const char* buffer) { + return s.from_buffer(buffer); +} + +// file I/O functions +template void write(const target<0, ind, scalar >& s, std::ofstream& file) { + return s.write(file); +} +template void read(const target<0, ind, scalar >& s, std::ifstream& file) { + return s.read(file); +} + +// utility functions +template int length(const target<0, ind, scalar >& s) { + return s.length(); +} +template void resize(const target<0, ind, scalar >& s, int n) { + s.resize(n); +} +template void copy(const target<0, ind, scalar >& s, const target<0, ind, scalar >& t) { + s.copy(t); +} +template void swap(const target<0, ind, scalar >& s, const target<0, ind, scalar >& t) { + s.swap(t); +} +template std::string name(const target<0, ind, scalar >& s) { + return std::string("scalar:") + name(T()); +} + +} // namespace MMSP + +#endif diff --git a/examples/pfhub_bm8/include/MMSP.sparse.cpp b/examples/pfhub_bm8/include/MMSP.sparse.cpp new file mode 100644 index 0000000..86ebc83 --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.sparse.cpp @@ -0,0 +1,336 @@ +// MMSP.sparse.h +// Class implementation for the MMSP sparse data structure +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +#include +#include +#include + +namespace MMSP +{ + +// constructors / destructor +template sparse::sparse() +{ + size = 0; + data = NULL; +} + +template sparse::sparse(const sparse& x) +{ + size = x.length(); + data = new item[size]; + memcpy(data, x.data, size * sizeof(item)); +} + +template sparse::~sparse() +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } +} + +// assignment operator +template sparse& sparse::operator=(const sparse& x) +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = x.length(); + data = new item[size]; + //memcpy(data, x.data, size * sizeof(item)); + for (int i = 0; i < size; i++) { + data[i].index = x.index(i); + data[i].value = x.value(i); + } + return *this; +} + +template template sparse& sparse::operator=(const sparse& x) +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = x.length(); + data = new item[size]; + for (int i = 0; i < size; i++) { + data[i].index = x.index(i); + data[i].value = static_cast(x.value(i)); + } + return *this; +} + +// data access operators +template T& sparse::set(int index) +{ + for (int i = 0; i < size; i++) + if (data[i].index == index) + return data[i].value; + + item* temp = new item[size]; + memcpy(temp, data, size * sizeof(item)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + data = new item[size + 1]; + memcpy(data, temp, size * sizeof(item)); + if (temp!=NULL) { + delete [] temp; + temp=NULL; + } + size += 1; + data[size - 1].index = index; + data[size - 1].value = static_cast(0); + return data[size - 1].value; +} + +template T sparse::operator[](int index) const +{ + for (int i = 0; i < size; i++) + if (data[i].index == index) + return data[i].value; + return static_cast(0); +} + +template unsigned int sparse::grain_id() const +{ + unsigned int max_index = 0; + T max_value = -1.0; + + for (int i = 0; i < size; i++) { + if (data[i].value > max_value) { + max_index = data[i].index; + max_value = data[i].value; + } + } + assert(max_index < std::numeric_limits::max()); + return max_index; +} + +template double sparse::getMagPhi() const +{ + double sum = 0.0; + + for (int i = 0; i < size; i++) { + double phi = data[i].value; + sum += phi * phi; + } + + return sqrt(sum); +} + +template int sparse::index(const int& i) const +{ + assert(i < size); + return data[i].index; +} + +template T sparse::value(const int& i) const +{ + assert(i < size); + return data[i].value; +} + +// buffer I/O functions +template int sparse::buffer_size() const +{ + return sizeof(size) + size * sizeof(item); +} + +template int sparse::to_buffer(char* buffer) const +{ + memcpy(buffer, &size, sizeof(size)); + memcpy(buffer + sizeof(size), data, size * sizeof(item)); + return sizeof(size) + size * sizeof(item); +} + +template int sparse::from_buffer(const char* buffer) +{ + memcpy(&size, buffer, sizeof(size)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + data = new item[size]; + memcpy(data, buffer + sizeof(size), size * sizeof(item)); + return sizeof(size) + size * sizeof(item); +} + +// file I/O functions +template void sparse::write(std::ofstream& file) const +{ + file.write(reinterpret_cast(&size), sizeof(size)); + file.write(reinterpret_cast(data), size * sizeof(item)); +} + +template void sparse::read(std::ifstream& file) +{ + file.read(reinterpret_cast(&size), sizeof(size)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + data = new item[size]; + file.read(reinterpret_cast(data), size * sizeof(item)); +} + +// utility functions +template int sparse::length() const +{ + return size; +} + +template void sparse::resize(int n) {} + +template void sparse::copy(const sparse& s) +{ + size = s.size; + if (data!=NULL) { + delete [] data; + data=NULL; + } + data = new item[size]; + memcpy(data, s.data, size * sizeof(item)); +} + +template void sparse::swap(sparse& s) +{ + item* t = data; + data = s.data; + s.data = t; + int l = size; + size = s.size; + s.size = l; +} + +// numerical operators +template sparse max(const sparse& x, const sparse& y) +{ + sparse z; + int N1 = x.length(); + for (int i = 0; i < N1; i++) { + T val = x.value(i); + int ind = x.index(i); + z.set(ind) = MMSP::max(val, y[ind]); + } + int N2 = y.length(); + for (int i = 0; i < N2; i++) { + T val = y.value(i); + int ind = y.index(i); + z.set(ind) = MMSP::max(val, x[ind]); + } + return z; +} + +template sparse min(const sparse& x, const sparse& y) +{ + sparse z; + int N1 = x.length(); + for (int i = 0; i < N1; i++) { + T val = x.value(i); + int ind = x.index(i); + z.set(ind) = MMSP::min(val, y[ind]); + } + int N2 = y.length(); + for (int i = 0; i < N2; i++) { + T val = y.value(i); + int ind = y.index(i); + z.set(ind) = MMSP::min(val, x[ind]); + } + return z; +} + +template sparse& operator+=(sparse& x, const sparse& y) +{ + int N = y.length(); + for (int i = 0; i < N; i++) + x.set(y.index(i)) += static_cast(y.value(i)); + return x; +} + +template sparse operator+(const sparse& x, const sparse& y) +{ + sparse z; + int N1 = x.length(); + for (int i = 0; i < N1; i++) + z.set(x.index(i)) += static_cast(x.value(i)); + int N2 = y.length(); + for (int i = 0; i < N2; i++) + z.set(y.index(i)) += static_cast(y.value(i)); + return z; +} + +template sparse& operator-=(sparse& x, const sparse& y) +{ + int N = y.length(); + for (int i = 0; i < N; i++) + x.set(y.index(i)) -= static_cast(y.value(i)); + return x; +} + +template sparse operator-(const sparse& x, const sparse& y) +{ + sparse z; + int N1 = x.length(); + for (int i = 0; i < N1; i++) + z.set(x.index(i)) += static_cast(x.value(i)); + int N2 = y.length(); + for (int i = 0; i < N2; i++) + z.set(y.index(i)) -= static_cast(y.value(i)); + return z; +} + +template sparse& operator*=(sparse& x, const U& value) +{ + int N = x.length(); + for (int i = 0; i < N; i++) + x.set(x.index(i)) *= static_cast(value); + return x; +} + +template sparse operator*(const U& value, const sparse& x) +{ + sparse z; + int N = x.length(); + for (int i = 0; i < N; i++) + z.set(x.index(i)) = static_cast(value) * x.value(i); + return z; +} + +template target<0,ind,sparse >::target(sparse* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1) +{ + data = DATA; + s0 = S0; + sx = SX; + x0 = X0; + x1 = X1; + b0 = B0; + b1 = B1; +} + +template bool operator==(const sparse& a, const sparse& b) +{ + int N=a.length(); + if (N != b.length()) return false; + for (int i = 0; i < N; i++) { + int indexA = a.index(i); + bool found=false; + bool match=false; + for (int j=0; j +struct item { + int index; + T value; +}; + +template +class sparse { +public: + // constructors / destructor + sparse(); + sparse(const sparse& x); + ~sparse(); + + // assignment operator + sparse& operator=(const sparse& x); + template sparse& operator=(const sparse& x); + + // data access operators + T& set(int index); + + T operator[](int index) const; + + unsigned int grain_id() const; + double getMagPhi() const; + + int index(const int& i) const; + T value(const int& i) const; + + // buffer I/O functions + int buffer_size() const; + int to_buffer(char* buffer) const; + int from_buffer(const char* buffer); + + // file I/O functions + void write(std::ofstream& file) const; + void read(std::ifstream& file); + + // utility functions + int length() const; + void resize(int n); + void copy(const sparse& s); + void swap(sparse& s); + +private: + // object data + item* data; + int size; +}; + +// buffer I/O functions +template int buffer_size(const sparse& s) { + return s.buffer_size(); +} +template int to_buffer(const sparse& s, char* buffer) { + return s.to_buffer(buffer); +} +template int from_buffer(sparse& s, const char* buffer) { + return s.from_buffer(buffer); +} + +// file I/O functions +template void write(const sparse& s, std::ofstream& file) { + return s.write(file); +} +template void read(sparse& s, std::ifstream& file) { + return s.read(file); +} + +// utility functions +template int length(const sparse& s) { + return s.length(); +} +template void resize(sparse& s, int n) { + s.resize(n); +} +template void copy(sparse& s, const sparse& t) { + s.copy(t); +} +template void swap(sparse& s, sparse& t) { + s.swap(t); +} + +template T& set(sparse& s, int index) { + return s.set(index); +} +template int index(const sparse& s, int i) { + return s.index(i); +} +template T value(const sparse& s, int i) { + return s.value(i); +} +template std::string name(const sparse& s) { + return std::string("sparse:") + name(T()); +} + +// numerical operators +template sparse max(const sparse& x, const sparse& y); + +template sparse min(const sparse& x, const sparse& y); + +template sparse& operator+=(sparse& x, const sparse& y); + +template sparse operator+(const sparse& x, const sparse& y); + +template sparse& operator-=(sparse& x, const sparse& y); + +template sparse operator-(const sparse& x, const sparse& y); + +template sparse& operator*=(sparse& x, const U& value); + +template sparse operator*(const U& value, const sparse& x); + + +// target class: dim = 0 specialization for sparse class +template +class target<0, ind, sparse > { +public: + target(sparse* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1); + + operator sparse&() { + return *data; + } + operator const sparse&() const { + return *data; + } + T operator[](int i) { + return data->operator[](i); + } + const T operator[](int i) const { + return data->operator[](i); + } + + sparse& operator=(const sparse& s) const { + return data->operator=(s); + } + template sparse& operator=(const sparse& s) const { + return data->operator=(s); + } + + int buffer_size() const { + return data->buffer_size(); + } + int to_buffer(char* buffer) const { + return data->to_buffer(buffer); + } + int from_buffer(const char* buffer) const { + return data->from_buffer(buffer); + } + + void write(std::ofstream& file) const { + data->write(file); + } + void read(std::ifstream& file) const { + data->read(file); + } + + int length() const { + return data->length(); + } + int resize(int n) const { + return data->resize(n); + } + void copy(const target& t) const { + return data->copy(t->data); + } + void swap(const target& t) const { + return data->swap(t->data); + } + + T& set(int index) const { + return data->set(index); + } + int index(int i) const { + return data->index(i); + } + T value(int i) const { + return data->value(i); + } + + sparse* data; + const int* s0; + const int* sx; + const int* x0; + const int* x1; + const int* b0; + const int* b1; +}; + +template T& set(const target<0, ind, sparse >& s, int index) { + return s.set(index); +} +template int index(const target<0, ind, sparse >& s, int i) { + return s.index(i); +} +template T value(const target<0, ind, sparse >& s, int i) { + return s.value(i); +} + +// buffer I/O functions +template int buffer_size(const target<0, ind, sparse >& s) { + return s.buffer_size(); +} +template int to_buffer(const target<0, ind, sparse >& s, char* buffer) { + return s.to_buffer(buffer); +} +template int from_buffer(const target<0, ind, sparse >& s, const char* buffer) { + return s.from_buffer(buffer); +} + +// file I/O functions +template void write(const target<0, ind, sparse >& s, std::ofstream& file) { + return s.write(file); +} +template void read(const target<0, ind, sparse >& s, std::ifstream& file) { + return s.read(file); +} + +// utility functions +template int length(const target<0, ind, sparse >& s) { + return s.length(); +} +template void resize(const target<0, ind, sparse >& s, int n) { + s.resize(n); +} +template void copy(const target<0, ind, sparse >& s, const target<0, ind, sparse >& t) { + s.copy(t); +} +template void swap(const target<0, ind, sparse >& s, const target<0, ind, sparse >& t) { + s.swap(t); +} +template std::string name(const target<0, ind, sparse >& s) { + return std::string("sparse:") + name(T()); +} + +// numerical operators +template +sparse& min(target<0, ind, sparse > x, const target<0, ind, sparse >& y) { + return min(*(x.data), *(y.data)); +} +template +sparse& max(target<0, ind, sparse > x, const target<0, ind, sparse >& y) { + return max(*(x.data), *(y.data)); +} +template +sparse& operator+=(target<0, ind, sparse > x, const target<0, ind, sparse >& y) { + return operator+=(*(x.data), *(y.data)); +} +template +sparse operator+(const target<0, ind, sparse > x, const target<0, ind, sparse >& y) { + return operator+(*(x.data), *(y.data)); +} +template +sparse& operator-=(target<0, ind, sparse > x, const target<0, ind, sparse >& y) { + return operator-=(*(x.data), *(y.data)); +} +template +sparse operator-(const target<0, ind, sparse > x, const target<0, ind, sparse >& y) { + return operator-(*(x.data), *(y.data)); +} +template +sparse& operator*=(target<0, ind, sparse > x, const U& value) { + return operator*=(*(x.data), value); +} +template +sparse operator*(const U& value, const target<0, ind, sparse >& x) { + return operator*(value, *(x.data)); +} +template bool operator==(const sparse& a, const sparse& b); + + +} // namespace MMSP + +#include "MMSP.sparse.cpp" + +#endif diff --git a/examples/pfhub_bm8/include/MMSP.utility.cpp b/examples/pfhub_bm8/include/MMSP.utility.cpp new file mode 100644 index 0000000..2cb51a1 --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.utility.cpp @@ -0,0 +1,174 @@ +// MMSP.utility.cpp +// Utility function and class implementations for MMSP +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +#include +#include +#include +#include + +namespace MMSP +{ + +// MMSP Init function +void Init(int argc, char* argv[]) +{ + #ifdef MPI_VERSION + MPI::Init(argc, argv); + #endif +} + +// MMSP Finalize function +void Finalize() +{ + #ifdef MPI_VERSION + MPI::Finalize(); + #endif +} + +// MMSP Abort function +void Abort(int err) +{ + #ifdef MPI_VERSION + MPI::COMM_WORLD.Abort(err); + #endif + exit(err); +} + + + +// check_boundary: a utility function that adjusts coordinates +// based on limiting coordinates and boundary conditions +void check_boundary(int& x, int x0, int x1, int b0, int b1) +{ + if (x < x0) { + if (b0 == Neumann or b0 == Dirichlet) x = x0; + #ifndef MPI_VERSION + else if (b0 == periodic) x = x1 - (x0 - x); + #endif + else if (b0 == mirror) x = 2 * x0 - x; + } else if (x >= x1) { + if (b1 == Neumann or b1 == Dirichlet) x = (x1 - 1); + #ifndef MPI_VERSION + else if (b1 == periodic) x = x0 + (x - x1); + #endif + else if (b1 == mirror) x = 2 * (x1 - 1) - x; + } +} + + +// global reducing function +template T global(T& value, const char* operation) +{ + // initialize global value + T global = value; + + #ifdef MPI_VERSION + int rank = MPI::COMM_WORLD.Get_rank(); + int np = MPI::COMM_WORLD.Get_size(); + + if (rank == 0) { + // receive local values + for (int i = 1; i < np; i++) { + T temp; + int size; + MPI::COMM_WORLD.Recv(&size, 1, MPI_INT, i, 100); + char* buffer = new char[size]; + MPI::COMM_WORLD.Recv(buffer, size, MPI_CHAR, i, 200); + from_buffer(temp, buffer); + if (buffer != NULL) { + delete [] buffer; + buffer=NULL; + } + + // perform operation + if (std::string(operation)=="add" or std::string(operation)=="sum") + global += temp; + else if (std::string(operation)=="min" or std::string(operation)=="minimum") + global = min(global, temp); + else if (std::string(operation)=="max" or std::string(operation)=="maximum") + global = max(global, temp); + } + + // send global value + for (int i = 1; i < np; i++) { + int size = buffer_size(global); + MPI::COMM_WORLD.Send(&size, 1, MPI_INT, i, 300); + char* buffer = new char[size]; + to_buffer(global, buffer); + MPI::COMM_WORLD.Send(buffer, size, MPI_CHAR, i, 400); + if (buffer != NULL) { + delete [] buffer; + buffer=NULL; + } + } + } + + else { + // send local value + int size = buffer_size(value); + MPI::COMM_WORLD.Send(&size, 1, MPI_INT, 0, 100); + char* buffer = new char[size]; + to_buffer(value, buffer); + MPI::COMM_WORLD.Send(buffer, size, MPI_CHAR, 0, 200); + if (buffer != NULL) { + delete [] buffer; + buffer=NULL; + } + + // receive global value + MPI::COMM_WORLD.Recv(&size, 1, MPI_INT, 0, 300); + buffer = new char[size]; + MPI::COMM_WORLD.Recv(buffer, size, MPI_CHAR, 0, 400); + from_buffer(global, buffer); + if (buffer != NULL) { + delete [] buffer; + buffer=NULL; + } + } + + MPI::COMM_WORLD.Barrier(); + #endif + + return global; +} + +void print_progress(const int step, const int steps) +{ + /* + Prints timestamps and a 20-point progress bar to stdout. + Call once inside the update function (or equivalent). + + for (int step=0; step +#include + +namespace MMSP { + +// MMSP Init function +void Init(int argc, char* argv[]); + +// MMSP Finalize function +void Finalize(); + +// MMSP Abort function +void Abort(int err); + +// MMSP boundary conditions +enum { + mirror = 0, + Neumann = 1, + periodic = 2, + parallel = 3, + Dirichlet = 4 +}; + +// check_boundary: a utility function that adjusts coordinates +// based on limiting coordinates and boundary conditions +void check_boundary(int& x, int x0, int x1, int b0, int b1); + + +// target class: a utility class that makes +// grids with array-style subscripting possible +template +class target { +public: + target(T* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1) { + data = DATA; + s0 = S0; + sx = SX; + x0 = X0; + x1 = X1; + b0 = B0; + b1 = B1; + } + target < dim - 1, index + 1, T > operator[](int x) { + int i = index + 1; + check_boundary(x, x0[i], x1[i], b0[i], b1[i]); + return target < dim - 1, index + 1, T > (data + (x - s0[i]) * sx[i], s0, sx, x0, x1, b0, b1); + } + const target < dim - 1, index + 1, T > operator[](int x) const { + int i = index + 1; + check_boundary(x, x0[i], x1[i], b0[i], b1[i]); + return target < dim - 1, index + 1, T > (data + (x - s0[i]) * sx[i], s0, sx, x0, x1, b0, b1); + } + T* data; + const int* s0; + const int* sx; + const int* x0; + const int* x1; + const int* b0; + const int* b1; +}; + +// target class: dim = 1 specialization for all data types +template +class target<1, index, T> { +public: + target(T* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1) { + data = DATA; + s0 = S0; + sx = SX; + x0 = X0; + x1 = X1; + b0 = B0; + b1 = B1; + } + T& operator[](int x) { + int i = index + 1; + check_boundary(x, x0[i], x1[i], b0[i], b1[i]); + return *(data + (x - s0[i]) * sx[i]); + } + const T& operator[](int x) const { + int i = index + 1; + check_boundary(x, x0[i], x1[i], b0[i], b1[i]); + return *(data + (x - s0[i]) * sx[i]); + } + T* data; + const int* s0; + const int* sx; + const int* x0; + const int* x1; + const int* b0; + const int* b1; +}; + +// target class: dim = 0 specialization for primitive data types +// this class template must be overloaded for new classes, but +// this is only necessary if grids with dim = 1 are used +template +class target<0, index, T> { +public: + target(T* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1) { + data = DATA; + s0 = S0; + sx = SX; + x0 = X0; + x1 = X1; + b0 = B0; + b1 = B1; + } + template T& operator=(const U& value) { + *data = value; + return *data; + } + template const T& operator=(const U& value) const { + *data = value; + return *data; + } + operator T&() { + return *data; + } + operator const T&() const { + return *data; + } + T* data; + const int* s0; + const int* sx; + const int* x0; + const int* x1; + const int* b0; + const int* b1; +}; + + +// buffer I/O functions for primitive and POD data types +// overload as friend functions within new non-POD class definitions +template unsigned long buffer_size(const T& value) { + return sizeof(value); +} +template unsigned long to_buffer(const T& value, char* buffer) { + memcpy(buffer, &value, sizeof(value)); + return sizeof(value); +} +template unsigned long from_buffer(T& value, const char* buffer) { + memcpy(&value, buffer, sizeof(value)); + return sizeof(value); +} + +// file I/O functions for primitive and POD data types +// overload as friend functions within new non-POD class definitions +template void read(T& value, std::ifstream& file) { + file.read(reinterpret_cast(&value), sizeof(value)); +} +template void write(const T& value, std::ofstream& file) { + file.write(reinterpret_cast(&value), sizeof(value)); +} + +// utility functions for primitive and POD data types +// overload as friend functions within new non-POD class definitions +template int length(const T& value) { + return 1; +} +template void resize(T& value, int n) { + return; +} +template void copy(T& value, const T& copy) { + value = copy; +} +template void swap(T& value, T& swap) { + T temp = value; + value = swap; + swap = temp; +} + +// status function for type identification +std::string name(const bool& value) { + return "bool"; +} +std::string name(const char& value) { + return "char"; +} +std::string name(const unsigned char& value) { + return "unsigned char"; +} +std::string name(const int& value) { + return "int"; +} +std::string name(const unsigned int& value) { + return "unsigned int"; +} +std::string name(const long& value) { + return "long"; +} +std::string name(const unsigned long& value) { + return "unsigned long"; +} +std::string name(const short& value) { + return "short"; +} +std::string name(const unsigned short& value) { + return "unsigned short"; +} +std::string name(const float& value) { + return "float"; +} +std::string name(const double& value) { + return "double"; +} +std::string name(const long double& value) { + return "long double"; +} + +// mathematical operations +template T max(const T& x, const T& y) { + return x > y ? x : y; +} +template T min(const T& x, const T& y) { + return x < y ? x : y; +} + +// global reducing function +template T global(T& value, const char* operation); + +// simple progress bar for the terminal +void print_progress(const int step, const int steps); + +} // namespace MMSP + +#include "MMSP.utility.cpp" + +#endif diff --git a/examples/pfhub_bm8/include/MMSP.vector.cpp b/examples/pfhub_bm8/include/MMSP.vector.cpp new file mode 100644 index 0000000..6523c64 --- /dev/null +++ b/examples/pfhub_bm8/include/MMSP.vector.cpp @@ -0,0 +1,241 @@ +// MMSP.vector.cpp +// Class implementation for the MMSP vector data structure +// Questions/comments to gruberja@gmail.com (Jason Gruber) + +namespace MMSP +{ + +//vector constructors and destructor +template vector::vector() +{ + size = 0; + data = NULL; +} + +template vector::vector(const vector& v) +{ + size = v.length(); + data = new T[size]; + for (int i = 0; i < size; i++) + data[i] = static_cast(v[i]); +} + +template template vector::vector(const vector& v) +{ + size = v.length(); + data = new T[size]; + for (int i = 0; i < size; i++) + data[i] = static_cast(v[i]); +} + +template vector::vector(int N) +{ + size = N; + data = new T[size]; +} + +template template vector::vector(int N, const U& value) +{ + size = N; + data = new T[size]; + for (int i = 0; i < size; i++) + data[i] = static_cast(value); +} + +template vector::~vector() +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } +} + +// assignment operators +template vector& vector::operator=(const T& value) +{ + for (int i = 0; i < size; i++) + data[i] = static_cast(value); + return *this; +} + +template vector& vector::operator=(const vector& v) +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = v.length(); + data = new T[size]; + for (int i = 0; i < size; i++) + data[i] = static_cast(v[i]); + return *this; +} + +template template vector& vector::operator=(const U& value) +{ + for (int i = 0; i < size; i++) + data[i] = static_cast(value); + return *this; +} + +template template vector& vector::operator=(const vector& v) +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = v.length(); + data = new T[size]; + for (int i = 0; i < size; i++) + data[i] = static_cast(v[i]); + return *this; +} + +// buffer I/O functions +template int vector::buffer_size() const +{ + return sizeof(size) + size * sizeof(T); +} + +template int vector::to_buffer(char* buffer) const +{ + memcpy(buffer, &size, sizeof(size)); + memcpy(buffer + sizeof(size), data, size * sizeof(T)); + return sizeof(size) + size * sizeof(T); +} + +template int vector::from_buffer(const char* buffer) +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } + memcpy(&size, buffer, sizeof(size)); + data = new T[size]; + memcpy(data, buffer + sizeof(size), size * sizeof(T)); + return sizeof(size) + size * sizeof(T); +} + +// file I/O functions +template void vector::write(std::ofstream& file) const +{ + file.write(reinterpret_cast(data), size * sizeof(T)); +} + +template void vector::read(std::ifstream& file) +{ + file.read(reinterpret_cast(data), size * sizeof(T)); +} + +// utility functions +template int vector::length() const +{ + return size; +} + +template void vector::resize(int N) +{ + if (size == 0) { + size = N; + data = new T[size]; + } else if (N > size) { + T* temp = new T[N]; + memcpy(temp, data, size * sizeof(T)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = N; + data = new T[size]; + memcpy(data, temp, size * sizeof(T)); + if (temp!=NULL) { + delete [] temp; + temp=NULL; + } + } else if (N < size) { + T* temp = new T[N]; + memcpy(temp, data, N * sizeof(T)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = N; + data = new T[size]; + memcpy(data, temp, N * sizeof(T)); + if (temp!=NULL) { + delete [] temp; + temp=NULL; + } + } +} + +template void vector::copy(const vector& v) +{ + if (data!=NULL) { + delete [] data; + data=NULL; + } + size = v.size; + data = new T[size]; + memcpy(data, v.data, size * sizeof(T)); +} + +template void vector::swap(vector& v) +{ + T* temp = data; + data = v.data; + v.data = temp; + int s = size; + size = v.size; + v.size = s; +} + +template template void vector::append(const U& value) +{ + T* temp = new T[size]; + memcpy(temp, data, size * sizeof(T)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + size += 1; + data = new T[size]; + memcpy(data, temp, size * sizeof(T)); + if (temp!=NULL) { + delete [] temp; + temp=NULL; + } + data[size - 1] = static_cast(value); +} + +template template void vector::append(const vector& v) +{ + int N = size; + T* temp = new T[size]; + memcpy(temp, data, size * sizeof(T)); + if (data!=NULL) { + delete [] data; + data=NULL; + } + size += v.length(); + data = new T[size]; + memcpy(data, temp, size * sizeof(T)); + if (temp!=NULL) { + delete [] temp; + temp=NULL; + } + for (int i = N; i < size; i++) + data[i] = static_cast(v[i - N]); +} + +template bool operator==(const vector& a, const vector& b) +{ + int N=a.length(); + if (N != b.length()) return false; + for (int i=0; i +#include"MMSP.utility.h" + +namespace MMSP { + +template class vector { +public: + // constructors / destructor + vector(); + + vector(const vector& v); + + template vector(const vector& v); + + vector(int N); + + template vector(int N, const U& value); + + ~vector(); + + // data access operators + T& operator[](int i) { + assert(i < size); + return data[i]; + } + const T& operator[](int i) const { + assert(i < size); + return data[i]; + } + + // assignment operator + vector& operator=(const T& value); + + vector& operator=(const vector& v); + + template vector& operator=(const U& value); + + template vector& operator=(const vector& v); + + // buffer I/O functions + int buffer_size() const; + + int to_buffer(char* buffer) const; + + int from_buffer(const char* buffer); + + // file I/O functions + void write(std::ofstream& file) const; + + void read(std::ifstream& file); + + // utility functions + int length() const; + + void resize(int N); + + void copy(const vector& v); + + void swap(vector& v); + + template void append(const U& value); + + template void append(const vector& v); +private: + // object data + T* data; + int size; +}; + +// buffer I/O functions +template int buffer_size(const vector& v) { + return v.buffer_size(); +} +template int to_buffer(const vector& v, char* buffer) { + return v.to_buffer(buffer); +} +template int from_buffer(vector& v, const char* buffer) { + return v.from_buffer(buffer); +} + +// file I/O functions +template void write(const vector& v, std::ofstream& file) { + return v.write(file); +} +template void read(vector& v, std::ifstream& file) { + return v.read(file); +} + +// utility functions +template int length(const vector& v) { + return v.length(); +} +template void resize(vector& v, int n) { + v.resize(n); +} +template void copy(vector& v, const vector& w) { + v.copy(w); +} +template void swap(vector& v, vector& w) { + v.swap(w); +} +template void append(vector& v, const U& value) { + v.append(value); +} +template void append(vector& v, const vector& w) { + v.append(w); +} +template std::string name(const vector& s) { + return std::string("vector:") + name(T()); +} + +// mathematical operators +template vector min(const vector& x, const vector& y) { + int N = x.length(); + vector z(N); + for (int i = 0; i < N; i++) z[i] = min(x[i], y[i]); + return z; +} + +template vector max(const vector& x, const vector& y) { + int N = x.length(); + vector z(N); + for (int i = 0; i < N; i++) z[i] = max(x[i], y[i]); + return z; +} + +template vector& operator+=(vector& x, const vector& y) { + int N = x.length(); + for (int i = 0; i < N; i++) x[i] += y[i]; + return x; +} +template vector operator+(const vector& x, const vector& y) { + int N = x.length(); + vector z(N); + for (int i = 0; i < N; i++) z[i] = x[i] + y[i]; + return z; +} +template vector& operator-=(vector& x, const vector& y) { + int N = x.length(); + for (int i = 0; i < N; i++) x[i] -= y[i]; + return x; +} +template vector operator-(const vector& x, const vector& y) { + int N = x.length(); + vector z(N); + for (int i = 0; i < N; i++) z[i] = x[i] - y[i]; + return z; +} +template vector& operator*=(vector& x, const U& value) { + int N = x.length(); + for (int i = 0; i < N; i++) x[i] *= static_cast(value); + return x; +} +template vector operator*(const U& value, const vector& x) { + int N = x.length(); + vector z(N); + for (int i = 0; i < N; i++) z[i] = static_cast(value) * x[i]; + return z; +} +template vector operator*(const vector& x, const U& value) { + return value*x; +} +template T operator*(const vector& x, const vector& y) { + int N = (x.length()>y.length())?y.length():x.length(); + T z(0); + for (int i = 0; i < N; i++) z += x[i] * y[i]; + return z; +} + + +// target class: dim = 0 specialization for vector class +template +class target<0, ind, vector > { +public: + // constructors + target(vector* DATA, const int* S0, const int* SX, const int* X0, const int* X1, const int* B0, const int* B1) { + data = DATA; + s0 = S0; + sx = SX; + x0 = X0; + x1 = X1; + b0 = B0; + b1 = B1; + } + + // data access operators + operator vector&() { + return *data; + } + operator const vector&() const { + return *data; + } + T& operator[](int i) { + return data->operator[](i); + } + const T& operator[](int i) const { + return data->operator[](i); + } + + // assignment operators + vector& operator=(const T& value) const { + return data->operator=(value); + } + vector& operator=(const vector& v) const { + return data->operator=(v); + } + template vector& operator=(const U& value) const { + return data->operator=(value); + } + template vector& operator=(const vector& v) const { + return data->operator=(v); + } + + // buffer I/O functions + int buffer_size() const { + return data->buffer_size(); + } + int to_buffer(char* buffer) const { + return data->to_buffer(buffer); + } + int from_buffer(const char* buffer) const { + return data->from_buffer(buffer); + } + + // file I/O functions + void write(std::ofstream& file) const { + data->write(file); + } + void read(std::ifstream& file) const { + data->read(file); + } + + // utility functions + int length() const { + return data->length(); + } + int resize(int n) const { + return data->resize(n); + } + void copy(const target& t) const { + data->copy(t->data); + } + void swap(const target& t) const { + data->swap(t->data); + } + template void append(const U& value) const { + data->append(value); + } + template void append(const vector& v) const { + data->append(v); + } + + // object data + vector* data; + const int* s0; + const int* sx; + const int* x0; + const int* x1; + const int* b0; + const int* b1; +}; + +// buffer I/O functions +template int buffer_size(const target<0, ind, vector >& v) { + return v.buffer_size(); +} +template int to_buffer(const target<0, ind, vector >& v, char* buffer) { + return v.to_buffer(buffer); +} +template int from_buffer(const target<0, ind, vector >& v, const char* buffer) { + return v.from_buffer(buffer); +} + +// file I/O functions +template void write(const target<0, ind, vector >& v, std::ofstream& file) { + return v.write(file); +} +template void read(const target<0, ind, vector >& v, std::ifstream& file) { + return v.read(file); +} + +// utility functions +template int length(const target<0, ind, vector >& v) { + return v.length(); +} +template void resize(const target<0, ind, vector >& v, int n) { + v.resize(n); +} +template void copy(const target<0, ind, vector >& v, const target<0, ind, vector >& w) { + v.copy(w); +} +template void swap(const target<0, ind, vector >& v, const target<0, ind, vector >& w) { + v.swap(w); +} +template void append(const target<0, ind, vector >& v, const U& value) { + v.append(value); +} +template void append(const target<0, ind, vector >& v, const vector& w) { + v.append(w); +} +template std::string name(const target<0, ind, vector >& s) { + return std::string("vector:") + name(T()); +} + +// mathematical operators +template +vector min(const target<0, ind, vector >& x, const target<0, ind, vector >& y) { + return min(*(x.data), *(y.data)); +} +template +vector max(const target<0, ind, vector >& x, const target<0, ind, vector >& y) { + return max(*(x.data), *(y.data)); +} +template +vector& operator+=(target<0, ind, vector >& x, const target<0, ind, vector >& y) { + return operator+=(*(x.data), *(y.data)); +} +template +vector operator+(const target<0, ind, vector >& x, const target<0, ind, vector >& y) { + return operator+(*(x.data), *(y.data)); +} +template +vector& operator-=(target<0, ind, vector >& x, const target<0, ind, vector >& y) { + return operator-=(*(x.data), *(y.data)); +} +template +vector operator-(const target<0, ind, vector >& x, const target<0, ind, vector >& y) { + return operator-(*(x.data), *(y.data)); +} +template +vector& operator*=(target<0, ind, vector >& x, const U& value) { + return operator*=(*(x.data), value); +} +template +vector operator*(const U& value, const target<0, ind, vector >& x) { + return operator*(value, *(x.data)); +} +template bool operator==(const vector& a, const vector& b); + + +} // namespace MMSP + +#include "MMSP.vector.cpp" + +#endif diff --git a/examples/pfhub_bm8/output_0.txt b/examples/pfhub_bm8/output_0.txt new file mode 100644 index 0000000..88a98c0 --- /dev/null +++ b/examples/pfhub_bm8/output_0.txt @@ -0,0 +1,2500 @@ +0,0,0.146447 +0,1,0.146447 +0,2,0.146447 +0,3,0.146447 +0,4,0.146447 +0,5,0.146447 +0,6,0.146447 +0,7,0.146447 +0,8,0.146447 +0,9,0.146447 +0,10,0.146447 +0,11,0.146447 +0,12,0.146447 +0,13,0.146447 +0,14,0.146447 +0,15,0.146447 +0,16,0.146447 +0,17,0.146447 +0,18,0.146447 +0,19,0.146447 +0,20,0.146447 +0,21,0.146447 +0,22,0.146447 +0,23,0.146447 +0,24,0.146447 +0,25,0.146447 +0,26,0.146447 +0,27,0.146447 +0,28,0.146447 +0,29,0.146447 +0,30,0.146447 +0,31,0.146447 +0,32,0.146447 +0,33,0.146447 +0,34,0.146447 +0,35,0.146447 +0,36,0.146447 +0,37,0.146447 +0,38,0.146447 +0,39,0.146447 +0,40,0.146447 +0,41,0.146447 +0,42,0.146447 +0,43,0.146447 +0,44,0.146447 +0,45,0.146447 +0,46,0.146447 +0,47,0.146447 +0,48,0.146447 +0,49,0.146447 +1,0,0.146447 +1,1,0.146447 +1,2,0.146447 +1,3,0.146447 +1,4,0.146447 +1,5,0.146447 +1,6,0.146447 +1,7,0.146447 +1,8,0.146447 +1,9,0.146447 +1,10,0.146447 +1,11,0.146447 +1,12,0.146447 +1,13,0.146447 +1,14,0.146447 +1,15,0.146447 +1,16,0.146447 +1,17,0.146447 +1,18,0.146447 +1,19,0.146447 +1,20,0.146447 +1,21,0.146447 +1,22,0.146447 +1,23,0.146447 +1,24,0.146447 +1,25,0.146447 +1,26,0.146447 +1,27,0.146447 +1,28,0.146447 +1,29,0.146447 +1,30,0.146447 +1,31,0.146447 +1,32,0.146447 +1,33,0.146447 +1,34,0.146447 +1,35,0.146447 +1,36,0.146447 +1,37,0.146447 +1,38,0.146447 +1,39,0.146447 +1,40,0.146447 +1,41,0.146447 +1,42,0.146447 +1,43,0.146447 +1,44,0.146447 +1,45,0.146447 +1,46,0.146447 +1,47,0.146447 +1,48,0.146447 +1,49,0.146447 +2,0,0.146447 +2,1,0.146447 +2,2,0.146447 +2,3,0.146447 +2,4,0.146447 +2,5,0.146447 +2,6,0.146447 +2,7,0.146447 +2,8,0.146447 +2,9,0.146447 +2,10,0.146447 +2,11,0.146447 +2,12,0.146447 +2,13,0.146447 +2,14,0.146447 +2,15,0.146447 +2,16,0.146447 +2,17,0.146447 +2,18,0.146447 +2,19,0.146447 +2,20,0.146447 +2,21,0.146447 +2,22,0.146447 +2,23,0.146447 +2,24,0.146447 +2,25,0.146447 +2,26,0.146447 +2,27,0.146447 +2,28,0.146447 +2,29,0.146447 +2,30,0.146447 +2,31,0.146447 +2,32,0.146447 +2,33,0.146447 +2,34,0.146447 +2,35,0.146447 +2,36,0.146447 +2,37,0.146447 +2,38,0.146447 +2,39,0.146447 +2,40,0.146447 +2,41,0.146447 +2,42,0.146447 +2,43,0.146447 +2,44,0.146447 +2,45,0.146447 +2,46,0.146447 +2,47,0.146447 +2,48,0.146447 +2,49,0.146447 +3,0,0.146447 +3,1,0.146447 +3,2,0.146447 +3,3,0.146447 +3,4,0.146447 +3,5,0.146447 +3,6,0.146447 +3,7,0.146447 +3,8,0.146447 +3,9,0.146447 +3,10,0.146447 +3,11,0.146447 +3,12,0.146447 +3,13,0.146447 +3,14,0.146447 +3,15,0.146447 +3,16,0.146447 +3,17,0.146447 +3,18,0.146447 +3,19,0.146447 +3,20,0.146447 +3,21,0.146447 +3,22,0.146447 +3,23,0.146447 +3,24,0.146447 +3,25,0.146447 +3,26,0.146447 +3,27,0.146447 +3,28,0.146447 +3,29,0.146447 +3,30,0.146447 +3,31,0.146447 +3,32,0.146447 +3,33,0.146447 +3,34,0.146447 +3,35,0.146447 +3,36,0.146447 +3,37,0.146447 +3,38,0.146447 +3,39,0.146447 +3,40,0.146447 +3,41,0.146447 +3,42,0.146447 +3,43,0.146447 +3,44,0.146447 +3,45,0.146447 +3,46,0.146447 +3,47,0.146447 +3,48,0.146447 +3,49,0.146447 +4,0,0.146447 +4,1,0.146447 +4,2,0.146447 +4,3,0.146447 +4,4,0.146447 +4,5,0.146447 +4,6,0.146447 +4,7,0.146447 +4,8,0.146447 +4,9,0.146447 +4,10,0.146447 +4,11,0.146447 +4,12,0.146447 +4,13,0.146447 +4,14,0.146447 +4,15,0.146447 +4,16,0.146447 +4,17,0.146447 +4,18,0.146447 +4,19,0.146447 +4,20,0.146447 +4,21,0.146447 +4,22,0.146447 +4,23,0.146447 +4,24,0.146447 +4,25,0.146447 +4,26,0.146447 +4,27,0.146447 +4,28,0.146447 +4,29,0.146447 +4,30,0.146447 +4,31,0.146447 +4,32,0.146447 +4,33,0.146447 +4,34,0.146447 +4,35,0.146447 +4,36,0.146447 +4,37,0.146447 +4,38,0.146447 +4,39,0.146447 +4,40,0.146447 +4,41,0.146447 +4,42,0.146447 +4,43,0.146447 +4,44,0.146447 +4,45,0.146447 +4,46,0.146447 +4,47,0.146447 +4,48,0.146447 +4,49,0.146447 +5,0,0.146447 +5,1,0.146447 +5,2,0.146447 +5,3,0.146447 +5,4,0.146447 +5,5,0.146447 +5,6,0.146447 +5,7,0.146447 +5,8,0.146447 +5,9,0.146447 +5,10,0.146447 +5,11,0.146447 +5,12,0.146447 +5,13,0.146447 +5,14,0.146447 +5,15,0.146447 +5,16,0.146447 +5,17,0.146447 +5,18,0.146447 +5,19,0.146447 +5,20,0.146447 +5,21,0.146447 +5,22,0.146447 +5,23,0.146447 +5,24,0.146447 +5,25,0.146447 +5,26,0.146447 +5,27,0.146447 +5,28,0.146447 +5,29,0.146447 +5,30,0.146447 +5,31,0.146447 +5,32,0.146447 +5,33,0.146447 +5,34,0.146447 +5,35,0.146447 +5,36,0.146447 +5,37,0.146447 +5,38,0.146447 +5,39,0.146447 +5,40,0.146447 +5,41,0.146447 +5,42,0.146447 +5,43,0.146447 +5,44,0.146447 +5,45,0.146447 +5,46,0.146447 +5,47,0.146447 +5,48,0.146447 +5,49,0.146447 +6,0,0.146447 +6,1,0.146447 +6,2,0.146447 +6,3,0.146447 +6,4,0.146447 +6,5,0.146447 +6,6,0.146447 +6,7,0.146447 +6,8,0.146447 +6,9,0.146447 +6,10,0.146447 +6,11,0.146447 +6,12,0.146447 +6,13,0.146447 +6,14,0.146447 +6,15,0.146447 +6,16,0.146447 +6,17,0.146447 +6,18,0.146447 +6,19,0.146447 +6,20,0.146447 +6,21,0.146447 +6,22,0.146447 +6,23,0.146447 +6,24,0.146447 +6,25,0.146447 +6,26,0.146447 +6,27,0.146447 +6,28,0.146447 +6,29,0.146447 +6,30,0.146447 +6,31,0.146447 +6,32,0.146447 +6,33,0.146447 +6,34,0.146447 +6,35,0.146447 +6,36,0.146447 +6,37,0.146447 +6,38,0.146447 +6,39,0.146447 +6,40,0.146447 +6,41,0.146447 +6,42,0.146447 +6,43,0.146447 +6,44,0.146447 +6,45,0.146447 +6,46,0.146447 +6,47,0.146447 +6,48,0.146447 +6,49,0.146447 +7,0,0.146447 +7,1,0.146447 +7,2,0.146447 +7,3,0.146447 +7,4,0.146447 +7,5,0.146447 +7,6,0.146447 +7,7,0.146447 +7,8,0.146447 +7,9,0.146447 +7,10,0.146447 +7,11,0.146447 +7,12,0.146447 +7,13,0.146447 +7,14,0.146447 +7,15,0.146447 +7,16,0.146447 +7,17,0.146447 +7,18,0.146447 +7,19,0.146447 +7,20,0.146447 +7,21,0.146447 +7,22,0.146447 +7,23,0.146447 +7,24,0.146447 +7,25,0.146447 +7,26,0.146447 +7,27,0.146447 +7,28,0.146447 +7,29,0.146447 +7,30,0.146447 +7,31,0.146447 +7,32,0.146447 +7,33,0.146447 +7,34,0.146447 +7,35,0.146447 +7,36,0.146447 +7,37,0.146447 +7,38,0.146447 +7,39,0.146447 +7,40,0.146447 +7,41,0.146447 +7,42,0.146447 +7,43,0.146447 +7,44,0.146447 +7,45,0.146447 +7,46,0.146447 +7,47,0.146447 +7,48,0.146447 +7,49,0.146447 +8,0,0.146447 +8,1,0.146447 +8,2,0.146447 +8,3,0.146447 +8,4,0.146447 +8,5,0.146447 +8,6,0.146447 +8,7,0.146447 +8,8,0.146447 +8,9,0.146447 +8,10,0.146447 +8,11,0.146447 +8,12,0.146447 +8,13,0.146447 +8,14,0.146447 +8,15,0.146447 +8,16,0.146447 +8,17,0.146447 +8,18,0.146447 +8,19,0.146447 +8,20,0.146447 +8,21,0.146447 +8,22,0.146447 +8,23,0.146447 +8,24,0.146447 +8,25,0.146447 +8,26,0.146447 +8,27,0.146447 +8,28,0.146447 +8,29,0.146447 +8,30,0.146447 +8,31,0.146447 +8,32,0.146447 +8,33,0.146447 +8,34,0.146447 +8,35,0.146447 +8,36,0.146447 +8,37,0.146447 +8,38,0.146447 +8,39,0.146447 +8,40,0.146447 +8,41,0.146447 +8,42,0.146447 +8,43,0.146447 +8,44,0.146447 +8,45,0.146447 +8,46,0.146447 +8,47,0.146447 +8,48,0.146447 +8,49,0.146447 +9,0,0.146447 +9,1,0.146447 +9,2,0.146447 +9,3,0.146447 +9,4,0.146447 +9,5,0.146447 +9,6,0.146447 +9,7,0.146447 +9,8,0.146447 +9,9,0.146447 +9,10,0.146447 +9,11,0.146447 +9,12,0.146447 +9,13,0.146447 +9,14,0.146447 +9,15,0.146447 +9,16,0.146447 +9,17,0.146447 +9,18,0.146447 +9,19,0.146447 +9,20,0.146447 +9,21,0.146447 +9,22,0.146447 +9,23,0.146447 +9,24,0.146447 +9,25,0.146447 +9,26,0.146447 +9,27,0.146447 +9,28,0.146447 +9,29,0.146447 +9,30,0.146447 +9,31,0.146447 +9,32,0.146447 +9,33,0.146447 +9,34,0.146447 +9,35,0.146447 +9,36,0.146447 +9,37,0.146447 +9,38,0.146447 +9,39,0.146447 +9,40,0.146447 +9,41,0.146447 +9,42,0.146447 +9,43,0.146447 +9,44,0.146447 +9,45,0.146447 +9,46,0.146447 +9,47,0.146447 +9,48,0.146447 +9,49,0.146447 +10,0,0.146447 +10,1,0.146447 +10,2,0.146447 +10,3,0.146447 +10,4,0.146447 +10,5,0.146447 +10,6,0.146447 +10,7,0.146447 +10,8,0.146447 +10,9,0.146447 +10,10,0.146447 +10,11,0.146447 +10,12,0.146447 +10,13,0.146447 +10,14,0.146447 +10,15,0.146447 +10,16,0.146447 +10,17,0.146447 +10,18,0.146447 +10,19,0.146447 +10,20,0.146447 +10,21,0.146447 +10,22,0.146447 +10,23,0.146447 +10,24,0.146447 +10,25,0.146447 +10,26,0.146447 +10,27,0.146447 +10,28,0.146447 +10,29,0.146447 +10,30,0.146447 +10,31,0.146447 +10,32,0.146447 +10,33,0.146447 +10,34,0.146447 +10,35,0.146447 +10,36,0.146447 +10,37,0.146447 +10,38,0.146447 +10,39,0.146447 +10,40,0.146447 +10,41,0.146447 +10,42,0.146447 +10,43,0.146447 +10,44,0.146447 +10,45,0.146447 +10,46,0.146447 +10,47,0.146447 +10,48,0.146447 +10,49,0.146447 +11,0,0.146447 +11,1,0.146447 +11,2,0.146447 +11,3,0.146447 +11,4,0.146447 +11,5,0.146447 +11,6,0.146447 +11,7,0.146447 +11,8,0.146447 +11,9,0.146447 +11,10,0.146447 +11,11,0.146447 +11,12,0.146447 +11,13,0.146447 +11,14,0.146447 +11,15,0.146447 +11,16,0.146447 +11,17,0.146447 +11,18,0.146447 +11,19,0.146447 +11,20,0.146447 +11,21,0.146447 +11,22,0.146447 +11,23,0.146447 +11,24,0.146447 +11,25,0.146447 +11,26,0.146447 +11,27,0.146447 +11,28,0.146447 +11,29,0.146447 +11,30,0.146447 +11,31,0.146447 +11,32,0.146447 +11,33,0.146447 +11,34,0.146447 +11,35,0.146447 +11,36,0.146447 +11,37,0.146447 +11,38,0.146447 +11,39,0.146447 +11,40,0.146447 +11,41,0.146447 +11,42,0.146447 +11,43,0.146447 +11,44,0.146447 +11,45,0.146447 +11,46,0.146447 +11,47,0.146447 +11,48,0.146447 +11,49,0.146447 +12,0,0.146447 +12,1,0.146447 +12,2,0.146447 +12,3,0.146447 +12,4,0.146447 +12,5,0.146447 +12,6,0.146447 +12,7,0.146447 +12,8,0.146447 +12,9,0.146447 +12,10,0.146447 +12,11,0.146447 +12,12,0.146447 +12,13,0.146447 +12,14,0.146447 +12,15,0.146447 +12,16,0.146447 +12,17,0.146447 +12,18,0.146447 +12,19,0.146447 +12,20,0.146447 +12,21,0.146447 +12,22,0.146447 +12,23,0.146447 +12,24,0.146447 +12,25,0.146447 +12,26,0.146447 +12,27,0.146447 +12,28,0.146447 +12,29,0.146447 +12,30,0.146447 +12,31,0.146447 +12,32,0.146447 +12,33,0.146447 +12,34,0.146447 +12,35,0.146447 +12,36,0.146447 +12,37,0.146447 +12,38,0.146447 +12,39,0.146447 +12,40,0.146447 +12,41,0.146447 +12,42,0.146447 +12,43,0.146447 +12,44,0.146447 +12,45,0.146447 +12,46,0.146447 +12,47,0.146447 +12,48,0.146447 +12,49,0.146447 +13,0,0.146447 +13,1,0.146447 +13,2,0.146447 +13,3,0.146447 +13,4,0.146447 +13,5,0.146447 +13,6,0.146447 +13,7,0.146447 +13,8,0.146447 +13,9,0.146447 +13,10,0.146447 +13,11,0.146447 +13,12,0.146447 +13,13,0.146447 +13,14,0.146447 +13,15,0.146447 +13,16,0.146447 +13,17,0.146447 +13,18,0.146447 +13,19,0.146447 +13,20,0.146447 +13,21,0.146447 +13,22,0.146447 +13,23,0.146447 +13,24,0.146447 +13,25,0.146447 +13,26,0.146447 +13,27,0.146447 +13,28,0.146447 +13,29,0.146447 +13,30,0.146447 +13,31,0.146447 +13,32,0.146447 +13,33,0.146447 +13,34,0.146447 +13,35,0.146447 +13,36,0.146447 +13,37,0.146447 +13,38,0.146447 +13,39,0.146447 +13,40,0.146447 +13,41,0.146447 +13,42,0.146447 +13,43,0.146447 +13,44,0.146447 +13,45,0.146447 +13,46,0.146447 +13,47,0.146447 +13,48,0.146447 +13,49,0.146447 +14,0,0.146447 +14,1,0.146447 +14,2,0.146447 +14,3,0.146447 +14,4,0.146447 +14,5,0.146447 +14,6,0.146447 +14,7,0.146447 +14,8,0.146447 +14,9,0.146447 +14,10,0.146447 +14,11,0.146447 +14,12,0.146447 +14,13,0.146447 +14,14,0.146447 +14,15,0.146447 +14,16,0.146447 +14,17,0.146447 +14,18,0.146447 +14,19,0.146447 +14,20,0.146447 +14,21,0.146448 +14,22,0.146449 +14,23,0.14645 +14,24,0.146451 +14,25,0.146451 +14,26,0.146451 +14,27,0.14645 +14,28,0.146449 +14,29,0.146448 +14,30,0.146447 +14,31,0.146447 +14,32,0.146447 +14,33,0.146447 +14,34,0.146447 +14,35,0.146447 +14,36,0.146447 +14,37,0.146447 +14,38,0.146447 +14,39,0.146447 +14,40,0.146447 +14,41,0.146447 +14,42,0.146447 +14,43,0.146447 +14,44,0.146447 +14,45,0.146447 +14,46,0.146447 +14,47,0.146447 +14,48,0.146447 +14,49,0.146447 +15,0,0.146447 +15,1,0.146447 +15,2,0.146447 +15,3,0.146447 +15,4,0.146447 +15,5,0.146447 +15,6,0.146447 +15,7,0.146447 +15,8,0.146447 +15,9,0.146447 +15,10,0.146447 +15,11,0.146447 +15,12,0.146447 +15,13,0.146447 +15,14,0.146447 +15,15,0.146447 +15,16,0.146447 +15,17,0.146447 +15,18,0.146447 +15,19,0.146448 +15,20,0.14645 +15,21,0.146453 +15,22,0.14646 +15,23,0.146468 +15,24,0.146476 +15,25,0.146479 +15,26,0.146476 +15,27,0.146468 +15,28,0.14646 +15,29,0.146453 +15,30,0.14645 +15,31,0.146448 +15,32,0.146447 +15,33,0.146447 +15,34,0.146447 +15,35,0.146447 +15,36,0.146447 +15,37,0.146447 +15,38,0.146447 +15,39,0.146447 +15,40,0.146447 +15,41,0.146447 +15,42,0.146447 +15,43,0.146447 +15,44,0.146447 +15,45,0.146447 +15,46,0.146447 +15,47,0.146447 +15,48,0.146447 +15,49,0.146447 +16,0,0.146447 +16,1,0.146447 +16,2,0.146447 +16,3,0.146447 +16,4,0.146447 +16,5,0.146447 +16,6,0.146447 +16,7,0.146447 +16,8,0.146447 +16,9,0.146447 +16,10,0.146447 +16,11,0.146447 +16,12,0.146447 +16,13,0.146447 +16,14,0.146447 +16,15,0.146447 +16,16,0.146447 +16,17,0.146447 +16,18,0.146449 +16,19,0.146453 +16,20,0.146464 +16,21,0.14649 +16,22,0.146536 +16,23,0.146599 +16,24,0.146659 +16,25,0.146684 +16,26,0.146659 +16,27,0.146599 +16,28,0.146536 +16,29,0.14649 +16,30,0.146464 +16,31,0.146453 +16,32,0.146449 +16,33,0.146447 +16,34,0.146447 +16,35,0.146447 +16,36,0.146447 +16,37,0.146447 +16,38,0.146447 +16,39,0.146447 +16,40,0.146447 +16,41,0.146447 +16,42,0.146447 +16,43,0.146447 +16,44,0.146447 +16,45,0.146447 +16,46,0.146447 +16,47,0.146447 +16,48,0.146447 +16,49,0.146447 +17,0,0.146447 +17,1,0.146447 +17,2,0.146447 +17,3,0.146447 +17,4,0.146447 +17,5,0.146447 +17,6,0.146447 +17,7,0.146447 +17,8,0.146447 +17,9,0.146447 +17,10,0.146447 +17,11,0.146447 +17,12,0.146447 +17,13,0.146447 +17,14,0.146447 +17,15,0.146447 +17,16,0.146447 +17,17,0.146449 +17,18,0.146456 +17,19,0.146479 +17,20,0.146546 +17,21,0.146712 +17,22,0.147037 +17,23,0.147516 +17,24,0.147991 +17,25,0.148195 +17,26,0.147991 +17,27,0.147516 +17,28,0.147037 +17,29,0.146712 +17,30,0.146546 +17,31,0.146479 +17,32,0.146456 +17,33,0.146449 +17,34,0.146447 +17,35,0.146447 +17,36,0.146447 +17,37,0.146447 +17,38,0.146447 +17,39,0.146447 +17,40,0.146447 +17,41,0.146447 +17,42,0.146447 +17,43,0.146447 +17,44,0.146447 +17,45,0.146447 +17,46,0.146447 +17,47,0.146447 +17,48,0.146447 +17,49,0.146447 +18,0,0.146447 +18,1,0.146447 +18,2,0.146447 +18,3,0.146447 +18,4,0.146447 +18,5,0.146447 +18,6,0.146447 +18,7,0.146447 +18,8,0.146447 +18,9,0.146447 +18,10,0.146447 +18,11,0.146447 +18,12,0.146447 +18,13,0.146447 +18,14,0.146447 +18,15,0.146447 +18,16,0.146449 +18,17,0.146456 +18,18,0.146486 +18,19,0.146599 +18,20,0.146972 +18,21,0.147991 +18,22,0.150206 +18,23,0.153766 +18,24,0.157506 +18,25,0.159165 +18,26,0.157506 +18,27,0.153766 +18,28,0.150206 +18,29,0.147991 +18,30,0.146972 +18,31,0.146599 +18,32,0.146486 +18,33,0.146456 +18,34,0.146449 +18,35,0.146447 +18,36,0.146447 +18,37,0.146447 +18,38,0.146447 +18,39,0.146447 +18,40,0.146447 +18,41,0.146447 +18,42,0.146447 +18,43,0.146447 +18,44,0.146447 +18,45,0.146447 +18,46,0.146447 +18,47,0.146447 +18,48,0.146447 +18,49,0.146447 +19,0,0.146447 +19,1,0.146447 +19,2,0.146447 +19,3,0.146447 +19,4,0.146447 +19,5,0.146447 +19,6,0.146447 +19,7,0.146447 +19,8,0.146447 +19,9,0.146447 +19,10,0.146447 +19,11,0.146447 +19,12,0.146447 +19,13,0.146447 +19,14,0.146447 +19,15,0.146448 +19,16,0.146453 +19,17,0.146479 +19,18,0.146599 +19,19,0.14711 +19,20,0.148999 +19,21,0.154837 +19,22,0.168923 +19,23,0.193147 +19,24,0.2192 +19,25,0.230736 +19,26,0.2192 +19,27,0.193147 +19,28,0.168923 +19,29,0.154837 +19,30,0.148999 +19,31,0.14711 +19,32,0.146599 +19,33,0.146479 +19,34,0.146453 +19,35,0.146448 +19,36,0.146447 +19,37,0.146447 +19,38,0.146447 +19,39,0.146447 +19,40,0.146447 +19,41,0.146447 +19,42,0.146447 +19,43,0.146447 +19,44,0.146447 +19,45,0.146447 +19,46,0.146447 +19,47,0.146447 +19,48,0.146447 +19,49,0.146447 +20,0,0.146447 +20,1,0.146447 +20,2,0.146447 +20,3,0.146447 +20,4,0.146447 +20,5,0.146447 +20,6,0.146447 +20,7,0.146447 +20,8,0.146447 +20,9,0.146447 +20,10,0.146447 +20,11,0.146447 +20,12,0.146447 +20,13,0.146447 +20,14,0.146447 +20,15,0.14645 +20,16,0.146464 +20,17,0.146546 +20,18,0.146972 +20,19,0.148999 +20,20,0.157506 +20,21,0.186743 +20,22,0.259235 +20,23,0.370181 +20,24,0.465105 +20,25,0.5 +20,26,0.465105 +20,27,0.370181 +20,28,0.259235 +20,29,0.186743 +20,30,0.157506 +20,31,0.148999 +20,32,0.146972 +20,33,0.146546 +20,34,0.146464 +20,35,0.14645 +20,36,0.146447 +20,37,0.146447 +20,38,0.146447 +20,39,0.146447 +20,40,0.146447 +20,41,0.146447 +20,42,0.146447 +20,43,0.146447 +20,44,0.146447 +20,45,0.146447 +20,46,0.146447 +20,47,0.146447 +20,48,0.146447 +20,49,0.146447 +21,0,0.146447 +21,1,0.146447 +21,2,0.146447 +21,3,0.146447 +21,4,0.146447 +21,5,0.146447 +21,6,0.146447 +21,7,0.146447 +21,8,0.146447 +21,9,0.146447 +21,10,0.146447 +21,11,0.146447 +21,12,0.146447 +21,13,0.146447 +21,14,0.146448 +21,15,0.146453 +21,16,0.14649 +21,17,0.146712 +21,18,0.147991 +21,19,0.154837 +21,20,0.186743 +21,21,0.296259 +21,22,0.5 +21,23,0.67103 +21,24,0.749206 +21,25,0.769264 +21,26,0.749206 +21,27,0.67103 +21,28,0.5 +21,29,0.296259 +21,30,0.186743 +21,31,0.154837 +21,32,0.147991 +21,33,0.146712 +21,34,0.14649 +21,35,0.146453 +21,36,0.146448 +21,37,0.146447 +21,38,0.146447 +21,39,0.146447 +21,40,0.146447 +21,41,0.146447 +21,42,0.146447 +21,43,0.146447 +21,44,0.146447 +21,45,0.146447 +21,46,0.146447 +21,47,0.146447 +21,48,0.146447 +21,49,0.146447 +22,0,0.146447 +22,1,0.146447 +22,2,0.146447 +22,3,0.146447 +22,4,0.146447 +22,5,0.146447 +22,6,0.146447 +22,7,0.146447 +22,8,0.146447 +22,9,0.146447 +22,10,0.146447 +22,11,0.146447 +22,12,0.146447 +22,13,0.146447 +22,14,0.146449 +22,15,0.14646 +22,16,0.146536 +22,17,0.147037 +22,18,0.150206 +22,19,0.168923 +22,20,0.259235 +22,21,0.5 +22,22,0.726104 +22,23,0.812593 +22,24,0.836079 +22,25,0.840835 +22,26,0.836079 +22,27,0.812593 +22,28,0.726104 +22,29,0.5 +22,30,0.259235 +22,31,0.168923 +22,32,0.150206 +22,33,0.147037 +22,34,0.146536 +22,35,0.14646 +22,36,0.146449 +22,37,0.146447 +22,38,0.146447 +22,39,0.146447 +22,40,0.146447 +22,41,0.146447 +22,42,0.146447 +22,43,0.146447 +22,44,0.146447 +22,45,0.146447 +22,46,0.146447 +22,47,0.146447 +22,48,0.146447 +22,49,0.146447 +23,0,0.146447 +23,1,0.146447 +23,2,0.146447 +23,3,0.146447 +23,4,0.146447 +23,5,0.146447 +23,6,0.146447 +23,7,0.146447 +23,8,0.146447 +23,9,0.146447 +23,10,0.146447 +23,11,0.146447 +23,12,0.146447 +23,13,0.146447 +23,14,0.14645 +23,15,0.146468 +23,16,0.146599 +23,17,0.147516 +23,18,0.153766 +23,19,0.193147 +23,20,0.370181 +23,21,0.67103 +23,22,0.812593 +23,23,0.844482 +23,24,0.850754 +23,25,0.851805 +23,26,0.850754 +23,27,0.844482 +23,28,0.812593 +23,29,0.67103 +23,30,0.370181 +23,31,0.193147 +23,32,0.153766 +23,33,0.147516 +23,34,0.146599 +23,35,0.146468 +23,36,0.14645 +23,37,0.146447 +23,38,0.146447 +23,39,0.146447 +23,40,0.146447 +23,41,0.146447 +23,42,0.146447 +23,43,0.146447 +23,44,0.146447 +23,45,0.146447 +23,46,0.146447 +23,47,0.146447 +23,48,0.146447 +23,49,0.146447 +24,0,0.146447 +24,1,0.146447 +24,2,0.146447 +24,3,0.146447 +24,4,0.146447 +24,5,0.146447 +24,6,0.146447 +24,7,0.146447 +24,8,0.146447 +24,9,0.146447 +24,10,0.146447 +24,11,0.146447 +24,12,0.146447 +24,13,0.146447 +24,14,0.146451 +24,15,0.146476 +24,16,0.146659 +24,17,0.147991 +24,18,0.157506 +24,19,0.2192 +24,20,0.465105 +24,21,0.749206 +24,22,0.836079 +24,23,0.850754 +24,24,0.853011 +24,25,0.853316 +24,26,0.853011 +24,27,0.850754 +24,28,0.836079 +24,29,0.749206 +24,30,0.465105 +24,31,0.2192 +24,32,0.157506 +24,33,0.147991 +24,34,0.146659 +24,35,0.146476 +24,36,0.146451 +24,37,0.146447 +24,38,0.146447 +24,39,0.146447 +24,40,0.146447 +24,41,0.146447 +24,42,0.146447 +24,43,0.146447 +24,44,0.146447 +24,45,0.146447 +24,46,0.146447 +24,47,0.146447 +24,48,0.146447 +24,49,0.146447 +25,0,0.146447 +25,1,0.146447 +25,2,0.146447 +25,3,0.146447 +25,4,0.146447 +25,5,0.146447 +25,6,0.146447 +25,7,0.146447 +25,8,0.146447 +25,9,0.146447 +25,10,0.146447 +25,11,0.146447 +25,12,0.146447 +25,13,0.146447 +25,14,0.146451 +25,15,0.146479 +25,16,0.146684 +25,17,0.148195 +25,18,0.159165 +25,19,0.230736 +25,20,0.5 +25,21,0.769264 +25,22,0.840835 +25,23,0.851805 +25,24,0.853316 +25,25,0.853521 +25,26,0.853316 +25,27,0.851805 +25,28,0.840835 +25,29,0.769264 +25,30,0.5 +25,31,0.230736 +25,32,0.159165 +25,33,0.148195 +25,34,0.146684 +25,35,0.146479 +25,36,0.146451 +25,37,0.146447 +25,38,0.146447 +25,39,0.146447 +25,40,0.146447 +25,41,0.146447 +25,42,0.146447 +25,43,0.146447 +25,44,0.146447 +25,45,0.146447 +25,46,0.146447 +25,47,0.146447 +25,48,0.146447 +25,49,0.146447 +26,0,0.146447 +26,1,0.146447 +26,2,0.146447 +26,3,0.146447 +26,4,0.146447 +26,5,0.146447 +26,6,0.146447 +26,7,0.146447 +26,8,0.146447 +26,9,0.146447 +26,10,0.146447 +26,11,0.146447 +26,12,0.146447 +26,13,0.146447 +26,14,0.146451 +26,15,0.146476 +26,16,0.146659 +26,17,0.147991 +26,18,0.157506 +26,19,0.2192 +26,20,0.465105 +26,21,0.749206 +26,22,0.836079 +26,23,0.850754 +26,24,0.853011 +26,25,0.853316 +26,26,0.853011 +26,27,0.850754 +26,28,0.836079 +26,29,0.749206 +26,30,0.465105 +26,31,0.2192 +26,32,0.157506 +26,33,0.147991 +26,34,0.146659 +26,35,0.146476 +26,36,0.146451 +26,37,0.146447 +26,38,0.146447 +26,39,0.146447 +26,40,0.146447 +26,41,0.146447 +26,42,0.146447 +26,43,0.146447 +26,44,0.146447 +26,45,0.146447 +26,46,0.146447 +26,47,0.146447 +26,48,0.146447 +26,49,0.146447 +27,0,0.146447 +27,1,0.146447 +27,2,0.146447 +27,3,0.146447 +27,4,0.146447 +27,5,0.146447 +27,6,0.146447 +27,7,0.146447 +27,8,0.146447 +27,9,0.146447 +27,10,0.146447 +27,11,0.146447 +27,12,0.146447 +27,13,0.146447 +27,14,0.14645 +27,15,0.146468 +27,16,0.146599 +27,17,0.147516 +27,18,0.153766 +27,19,0.193147 +27,20,0.370181 +27,21,0.67103 +27,22,0.812593 +27,23,0.844482 +27,24,0.850754 +27,25,0.851805 +27,26,0.850754 +27,27,0.844482 +27,28,0.812593 +27,29,0.67103 +27,30,0.370181 +27,31,0.193147 +27,32,0.153766 +27,33,0.147516 +27,34,0.146599 +27,35,0.146468 +27,36,0.14645 +27,37,0.146447 +27,38,0.146447 +27,39,0.146447 +27,40,0.146447 +27,41,0.146447 +27,42,0.146447 +27,43,0.146447 +27,44,0.146447 +27,45,0.146447 +27,46,0.146447 +27,47,0.146447 +27,48,0.146447 +27,49,0.146447 +28,0,0.146447 +28,1,0.146447 +28,2,0.146447 +28,3,0.146447 +28,4,0.146447 +28,5,0.146447 +28,6,0.146447 +28,7,0.146447 +28,8,0.146447 +28,9,0.146447 +28,10,0.146447 +28,11,0.146447 +28,12,0.146447 +28,13,0.146447 +28,14,0.146449 +28,15,0.14646 +28,16,0.146536 +28,17,0.147037 +28,18,0.150206 +28,19,0.168923 +28,20,0.259235 +28,21,0.5 +28,22,0.726104 +28,23,0.812593 +28,24,0.836079 +28,25,0.840835 +28,26,0.836079 +28,27,0.812593 +28,28,0.726104 +28,29,0.5 +28,30,0.259235 +28,31,0.168923 +28,32,0.150206 +28,33,0.147037 +28,34,0.146536 +28,35,0.14646 +28,36,0.146449 +28,37,0.146447 +28,38,0.146447 +28,39,0.146447 +28,40,0.146447 +28,41,0.146447 +28,42,0.146447 +28,43,0.146447 +28,44,0.146447 +28,45,0.146447 +28,46,0.146447 +28,47,0.146447 +28,48,0.146447 +28,49,0.146447 +29,0,0.146447 +29,1,0.146447 +29,2,0.146447 +29,3,0.146447 +29,4,0.146447 +29,5,0.146447 +29,6,0.146447 +29,7,0.146447 +29,8,0.146447 +29,9,0.146447 +29,10,0.146447 +29,11,0.146447 +29,12,0.146447 +29,13,0.146447 +29,14,0.146448 +29,15,0.146453 +29,16,0.14649 +29,17,0.146712 +29,18,0.147991 +29,19,0.154837 +29,20,0.186743 +29,21,0.296259 +29,22,0.5 +29,23,0.67103 +29,24,0.749206 +29,25,0.769264 +29,26,0.749206 +29,27,0.67103 +29,28,0.5 +29,29,0.296259 +29,30,0.186743 +29,31,0.154837 +29,32,0.147991 +29,33,0.146712 +29,34,0.14649 +29,35,0.146453 +29,36,0.146448 +29,37,0.146447 +29,38,0.146447 +29,39,0.146447 +29,40,0.146447 +29,41,0.146447 +29,42,0.146447 +29,43,0.146447 +29,44,0.146447 +29,45,0.146447 +29,46,0.146447 +29,47,0.146447 +29,48,0.146447 +29,49,0.146447 +30,0,0.146447 +30,1,0.146447 +30,2,0.146447 +30,3,0.146447 +30,4,0.146447 +30,5,0.146447 +30,6,0.146447 +30,7,0.146447 +30,8,0.146447 +30,9,0.146447 +30,10,0.146447 +30,11,0.146447 +30,12,0.146447 +30,13,0.146447 +30,14,0.146447 +30,15,0.14645 +30,16,0.146464 +30,17,0.146546 +30,18,0.146972 +30,19,0.148999 +30,20,0.157506 +30,21,0.186743 +30,22,0.259235 +30,23,0.370181 +30,24,0.465105 +30,25,0.5 +30,26,0.465105 +30,27,0.370181 +30,28,0.259235 +30,29,0.186743 +30,30,0.157506 +30,31,0.148999 +30,32,0.146972 +30,33,0.146546 +30,34,0.146464 +30,35,0.14645 +30,36,0.146447 +30,37,0.146447 +30,38,0.146447 +30,39,0.146447 +30,40,0.146447 +30,41,0.146447 +30,42,0.146447 +30,43,0.146447 +30,44,0.146447 +30,45,0.146447 +30,46,0.146447 +30,47,0.146447 +30,48,0.146447 +30,49,0.146447 +31,0,0.146447 +31,1,0.146447 +31,2,0.146447 +31,3,0.146447 +31,4,0.146447 +31,5,0.146447 +31,6,0.146447 +31,7,0.146447 +31,8,0.146447 +31,9,0.146447 +31,10,0.146447 +31,11,0.146447 +31,12,0.146447 +31,13,0.146447 +31,14,0.146447 +31,15,0.146448 +31,16,0.146453 +31,17,0.146479 +31,18,0.146599 +31,19,0.14711 +31,20,0.148999 +31,21,0.154837 +31,22,0.168923 +31,23,0.193147 +31,24,0.2192 +31,25,0.230736 +31,26,0.2192 +31,27,0.193147 +31,28,0.168923 +31,29,0.154837 +31,30,0.148999 +31,31,0.14711 +31,32,0.146599 +31,33,0.146479 +31,34,0.146453 +31,35,0.146448 +31,36,0.146447 +31,37,0.146447 +31,38,0.146447 +31,39,0.146447 +31,40,0.146447 +31,41,0.146447 +31,42,0.146447 +31,43,0.146447 +31,44,0.146447 +31,45,0.146447 +31,46,0.146447 +31,47,0.146447 +31,48,0.146447 +31,49,0.146447 +32,0,0.146447 +32,1,0.146447 +32,2,0.146447 +32,3,0.146447 +32,4,0.146447 +32,5,0.146447 +32,6,0.146447 +32,7,0.146447 +32,8,0.146447 +32,9,0.146447 +32,10,0.146447 +32,11,0.146447 +32,12,0.146447 +32,13,0.146447 +32,14,0.146447 +32,15,0.146447 +32,16,0.146449 +32,17,0.146456 +32,18,0.146486 +32,19,0.146599 +32,20,0.146972 +32,21,0.147991 +32,22,0.150206 +32,23,0.153766 +32,24,0.157506 +32,25,0.159165 +32,26,0.157506 +32,27,0.153766 +32,28,0.150206 +32,29,0.147991 +32,30,0.146972 +32,31,0.146599 +32,32,0.146486 +32,33,0.146456 +32,34,0.146449 +32,35,0.146447 +32,36,0.146447 +32,37,0.146447 +32,38,0.146447 +32,39,0.146447 +32,40,0.146447 +32,41,0.146447 +32,42,0.146447 +32,43,0.146447 +32,44,0.146447 +32,45,0.146447 +32,46,0.146447 +32,47,0.146447 +32,48,0.146447 +32,49,0.146447 +33,0,0.146447 +33,1,0.146447 +33,2,0.146447 +33,3,0.146447 +33,4,0.146447 +33,5,0.146447 +33,6,0.146447 +33,7,0.146447 +33,8,0.146447 +33,9,0.146447 +33,10,0.146447 +33,11,0.146447 +33,12,0.146447 +33,13,0.146447 +33,14,0.146447 +33,15,0.146447 +33,16,0.146447 +33,17,0.146449 +33,18,0.146456 +33,19,0.146479 +33,20,0.146546 +33,21,0.146712 +33,22,0.147037 +33,23,0.147516 +33,24,0.147991 +33,25,0.148195 +33,26,0.147991 +33,27,0.147516 +33,28,0.147037 +33,29,0.146712 +33,30,0.146546 +33,31,0.146479 +33,32,0.146456 +33,33,0.146449 +33,34,0.146447 +33,35,0.146447 +33,36,0.146447 +33,37,0.146447 +33,38,0.146447 +33,39,0.146447 +33,40,0.146447 +33,41,0.146447 +33,42,0.146447 +33,43,0.146447 +33,44,0.146447 +33,45,0.146447 +33,46,0.146447 +33,47,0.146447 +33,48,0.146447 +33,49,0.146447 +34,0,0.146447 +34,1,0.146447 +34,2,0.146447 +34,3,0.146447 +34,4,0.146447 +34,5,0.146447 +34,6,0.146447 +34,7,0.146447 +34,8,0.146447 +34,9,0.146447 +34,10,0.146447 +34,11,0.146447 +34,12,0.146447 +34,13,0.146447 +34,14,0.146447 +34,15,0.146447 +34,16,0.146447 +34,17,0.146447 +34,18,0.146449 +34,19,0.146453 +34,20,0.146464 +34,21,0.14649 +34,22,0.146536 +34,23,0.146599 +34,24,0.146659 +34,25,0.146684 +34,26,0.146659 +34,27,0.146599 +34,28,0.146536 +34,29,0.14649 +34,30,0.146464 +34,31,0.146453 +34,32,0.146449 +34,33,0.146447 +34,34,0.146447 +34,35,0.146447 +34,36,0.146447 +34,37,0.146447 +34,38,0.146447 +34,39,0.146447 +34,40,0.146447 +34,41,0.146447 +34,42,0.146447 +34,43,0.146447 +34,44,0.146447 +34,45,0.146447 +34,46,0.146447 +34,47,0.146447 +34,48,0.146447 +34,49,0.146447 +35,0,0.146447 +35,1,0.146447 +35,2,0.146447 +35,3,0.146447 +35,4,0.146447 +35,5,0.146447 +35,6,0.146447 +35,7,0.146447 +35,8,0.146447 +35,9,0.146447 +35,10,0.146447 +35,11,0.146447 +35,12,0.146447 +35,13,0.146447 +35,14,0.146447 +35,15,0.146447 +35,16,0.146447 +35,17,0.146447 +35,18,0.146447 +35,19,0.146448 +35,20,0.14645 +35,21,0.146453 +35,22,0.14646 +35,23,0.146468 +35,24,0.146476 +35,25,0.146479 +35,26,0.146476 +35,27,0.146468 +35,28,0.14646 +35,29,0.146453 +35,30,0.14645 +35,31,0.146448 +35,32,0.146447 +35,33,0.146447 +35,34,0.146447 +35,35,0.146447 +35,36,0.146447 +35,37,0.146447 +35,38,0.146447 +35,39,0.146447 +35,40,0.146447 +35,41,0.146447 +35,42,0.146447 +35,43,0.146447 +35,44,0.146447 +35,45,0.146447 +35,46,0.146447 +35,47,0.146447 +35,48,0.146447 +35,49,0.146447 +36,0,0.146447 +36,1,0.146447 +36,2,0.146447 +36,3,0.146447 +36,4,0.146447 +36,5,0.146447 +36,6,0.146447 +36,7,0.146447 +36,8,0.146447 +36,9,0.146447 +36,10,0.146447 +36,11,0.146447 +36,12,0.146447 +36,13,0.146447 +36,14,0.146447 +36,15,0.146447 +36,16,0.146447 +36,17,0.146447 +36,18,0.146447 +36,19,0.146447 +36,20,0.146447 +36,21,0.146448 +36,22,0.146449 +36,23,0.14645 +36,24,0.146451 +36,25,0.146451 +36,26,0.146451 +36,27,0.14645 +36,28,0.146449 +36,29,0.146448 +36,30,0.146447 +36,31,0.146447 +36,32,0.146447 +36,33,0.146447 +36,34,0.146447 +36,35,0.146447 +36,36,0.146447 +36,37,0.146447 +36,38,0.146447 +36,39,0.146447 +36,40,0.146447 +36,41,0.146447 +36,42,0.146447 +36,43,0.146447 +36,44,0.146447 +36,45,0.146447 +36,46,0.146447 +36,47,0.146447 +36,48,0.146447 +36,49,0.146447 +37,0,0.146447 +37,1,0.146447 +37,2,0.146447 +37,3,0.146447 +37,4,0.146447 +37,5,0.146447 +37,6,0.146447 +37,7,0.146447 +37,8,0.146447 +37,9,0.146447 +37,10,0.146447 +37,11,0.146447 +37,12,0.146447 +37,13,0.146447 +37,14,0.146447 +37,15,0.146447 +37,16,0.146447 +37,17,0.146447 +37,18,0.146447 +37,19,0.146447 +37,20,0.146447 +37,21,0.146447 +37,22,0.146447 +37,23,0.146447 +37,24,0.146447 +37,25,0.146447 +37,26,0.146447 +37,27,0.146447 +37,28,0.146447 +37,29,0.146447 +37,30,0.146447 +37,31,0.146447 +37,32,0.146447 +37,33,0.146447 +37,34,0.146447 +37,35,0.146447 +37,36,0.146447 +37,37,0.146447 +37,38,0.146447 +37,39,0.146447 +37,40,0.146447 +37,41,0.146447 +37,42,0.146447 +37,43,0.146447 +37,44,0.146447 +37,45,0.146447 +37,46,0.146447 +37,47,0.146447 +37,48,0.146447 +37,49,0.146447 +38,0,0.146447 +38,1,0.146447 +38,2,0.146447 +38,3,0.146447 +38,4,0.146447 +38,5,0.146447 +38,6,0.146447 +38,7,0.146447 +38,8,0.146447 +38,9,0.146447 +38,10,0.146447 +38,11,0.146447 +38,12,0.146447 +38,13,0.146447 +38,14,0.146447 +38,15,0.146447 +38,16,0.146447 +38,17,0.146447 +38,18,0.146447 +38,19,0.146447 +38,20,0.146447 +38,21,0.146447 +38,22,0.146447 +38,23,0.146447 +38,24,0.146447 +38,25,0.146447 +38,26,0.146447 +38,27,0.146447 +38,28,0.146447 +38,29,0.146447 +38,30,0.146447 +38,31,0.146447 +38,32,0.146447 +38,33,0.146447 +38,34,0.146447 +38,35,0.146447 +38,36,0.146447 +38,37,0.146447 +38,38,0.146447 +38,39,0.146447 +38,40,0.146447 +38,41,0.146447 +38,42,0.146447 +38,43,0.146447 +38,44,0.146447 +38,45,0.146447 +38,46,0.146447 +38,47,0.146447 +38,48,0.146447 +38,49,0.146447 +39,0,0.146447 +39,1,0.146447 +39,2,0.146447 +39,3,0.146447 +39,4,0.146447 +39,5,0.146447 +39,6,0.146447 +39,7,0.146447 +39,8,0.146447 +39,9,0.146447 +39,10,0.146447 +39,11,0.146447 +39,12,0.146447 +39,13,0.146447 +39,14,0.146447 +39,15,0.146447 +39,16,0.146447 +39,17,0.146447 +39,18,0.146447 +39,19,0.146447 +39,20,0.146447 +39,21,0.146447 +39,22,0.146447 +39,23,0.146447 +39,24,0.146447 +39,25,0.146447 +39,26,0.146447 +39,27,0.146447 +39,28,0.146447 +39,29,0.146447 +39,30,0.146447 +39,31,0.146447 +39,32,0.146447 +39,33,0.146447 +39,34,0.146447 +39,35,0.146447 +39,36,0.146447 +39,37,0.146447 +39,38,0.146447 +39,39,0.146447 +39,40,0.146447 +39,41,0.146447 +39,42,0.146447 +39,43,0.146447 +39,44,0.146447 +39,45,0.146447 +39,46,0.146447 +39,47,0.146447 +39,48,0.146447 +39,49,0.146447 +40,0,0.146447 +40,1,0.146447 +40,2,0.146447 +40,3,0.146447 +40,4,0.146447 +40,5,0.146447 +40,6,0.146447 +40,7,0.146447 +40,8,0.146447 +40,9,0.146447 +40,10,0.146447 +40,11,0.146447 +40,12,0.146447 +40,13,0.146447 +40,14,0.146447 +40,15,0.146447 +40,16,0.146447 +40,17,0.146447 +40,18,0.146447 +40,19,0.146447 +40,20,0.146447 +40,21,0.146447 +40,22,0.146447 +40,23,0.146447 +40,24,0.146447 +40,25,0.146447 +40,26,0.146447 +40,27,0.146447 +40,28,0.146447 +40,29,0.146447 +40,30,0.146447 +40,31,0.146447 +40,32,0.146447 +40,33,0.146447 +40,34,0.146447 +40,35,0.146447 +40,36,0.146447 +40,37,0.146447 +40,38,0.146447 +40,39,0.146447 +40,40,0.146447 +40,41,0.146447 +40,42,0.146447 +40,43,0.146447 +40,44,0.146447 +40,45,0.146447 +40,46,0.146447 +40,47,0.146447 +40,48,0.146447 +40,49,0.146447 +41,0,0.146447 +41,1,0.146447 +41,2,0.146447 +41,3,0.146447 +41,4,0.146447 +41,5,0.146447 +41,6,0.146447 +41,7,0.146447 +41,8,0.146447 +41,9,0.146447 +41,10,0.146447 +41,11,0.146447 +41,12,0.146447 +41,13,0.146447 +41,14,0.146447 +41,15,0.146447 +41,16,0.146447 +41,17,0.146447 +41,18,0.146447 +41,19,0.146447 +41,20,0.146447 +41,21,0.146447 +41,22,0.146447 +41,23,0.146447 +41,24,0.146447 +41,25,0.146447 +41,26,0.146447 +41,27,0.146447 +41,28,0.146447 +41,29,0.146447 +41,30,0.146447 +41,31,0.146447 +41,32,0.146447 +41,33,0.146447 +41,34,0.146447 +41,35,0.146447 +41,36,0.146447 +41,37,0.146447 +41,38,0.146447 +41,39,0.146447 +41,40,0.146447 +41,41,0.146447 +41,42,0.146447 +41,43,0.146447 +41,44,0.146447 +41,45,0.146447 +41,46,0.146447 +41,47,0.146447 +41,48,0.146447 +41,49,0.146447 +42,0,0.146447 +42,1,0.146447 +42,2,0.146447 +42,3,0.146447 +42,4,0.146447 +42,5,0.146447 +42,6,0.146447 +42,7,0.146447 +42,8,0.146447 +42,9,0.146447 +42,10,0.146447 +42,11,0.146447 +42,12,0.146447 +42,13,0.146447 +42,14,0.146447 +42,15,0.146447 +42,16,0.146447 +42,17,0.146447 +42,18,0.146447 +42,19,0.146447 +42,20,0.146447 +42,21,0.146447 +42,22,0.146447 +42,23,0.146447 +42,24,0.146447 +42,25,0.146447 +42,26,0.146447 +42,27,0.146447 +42,28,0.146447 +42,29,0.146447 +42,30,0.146447 +42,31,0.146447 +42,32,0.146447 +42,33,0.146447 +42,34,0.146447 +42,35,0.146447 +42,36,0.146447 +42,37,0.146447 +42,38,0.146447 +42,39,0.146447 +42,40,0.146447 +42,41,0.146447 +42,42,0.146447 +42,43,0.146447 +42,44,0.146447 +42,45,0.146447 +42,46,0.146447 +42,47,0.146447 +42,48,0.146447 +42,49,0.146447 +43,0,0.146447 +43,1,0.146447 +43,2,0.146447 +43,3,0.146447 +43,4,0.146447 +43,5,0.146447 +43,6,0.146447 +43,7,0.146447 +43,8,0.146447 +43,9,0.146447 +43,10,0.146447 +43,11,0.146447 +43,12,0.146447 +43,13,0.146447 +43,14,0.146447 +43,15,0.146447 +43,16,0.146447 +43,17,0.146447 +43,18,0.146447 +43,19,0.146447 +43,20,0.146447 +43,21,0.146447 +43,22,0.146447 +43,23,0.146447 +43,24,0.146447 +43,25,0.146447 +43,26,0.146447 +43,27,0.146447 +43,28,0.146447 +43,29,0.146447 +43,30,0.146447 +43,31,0.146447 +43,32,0.146447 +43,33,0.146447 +43,34,0.146447 +43,35,0.146447 +43,36,0.146447 +43,37,0.146447 +43,38,0.146447 +43,39,0.146447 +43,40,0.146447 +43,41,0.146447 +43,42,0.146447 +43,43,0.146447 +43,44,0.146447 +43,45,0.146447 +43,46,0.146447 +43,47,0.146447 +43,48,0.146447 +43,49,0.146447 +44,0,0.146447 +44,1,0.146447 +44,2,0.146447 +44,3,0.146447 +44,4,0.146447 +44,5,0.146447 +44,6,0.146447 +44,7,0.146447 +44,8,0.146447 +44,9,0.146447 +44,10,0.146447 +44,11,0.146447 +44,12,0.146447 +44,13,0.146447 +44,14,0.146447 +44,15,0.146447 +44,16,0.146447 +44,17,0.146447 +44,18,0.146447 +44,19,0.146447 +44,20,0.146447 +44,21,0.146447 +44,22,0.146447 +44,23,0.146447 +44,24,0.146447 +44,25,0.146447 +44,26,0.146447 +44,27,0.146447 +44,28,0.146447 +44,29,0.146447 +44,30,0.146447 +44,31,0.146447 +44,32,0.146447 +44,33,0.146447 +44,34,0.146447 +44,35,0.146447 +44,36,0.146447 +44,37,0.146447 +44,38,0.146447 +44,39,0.146447 +44,40,0.146447 +44,41,0.146447 +44,42,0.146447 +44,43,0.146447 +44,44,0.146447 +44,45,0.146447 +44,46,0.146447 +44,47,0.146447 +44,48,0.146447 +44,49,0.146447 +45,0,0.146447 +45,1,0.146447 +45,2,0.146447 +45,3,0.146447 +45,4,0.146447 +45,5,0.146447 +45,6,0.146447 +45,7,0.146447 +45,8,0.146447 +45,9,0.146447 +45,10,0.146447 +45,11,0.146447 +45,12,0.146447 +45,13,0.146447 +45,14,0.146447 +45,15,0.146447 +45,16,0.146447 +45,17,0.146447 +45,18,0.146447 +45,19,0.146447 +45,20,0.146447 +45,21,0.146447 +45,22,0.146447 +45,23,0.146447 +45,24,0.146447 +45,25,0.146447 +45,26,0.146447 +45,27,0.146447 +45,28,0.146447 +45,29,0.146447 +45,30,0.146447 +45,31,0.146447 +45,32,0.146447 +45,33,0.146447 +45,34,0.146447 +45,35,0.146447 +45,36,0.146447 +45,37,0.146447 +45,38,0.146447 +45,39,0.146447 +45,40,0.146447 +45,41,0.146447 +45,42,0.146447 +45,43,0.146447 +45,44,0.146447 +45,45,0.146447 +45,46,0.146447 +45,47,0.146447 +45,48,0.146447 +45,49,0.146447 +46,0,0.146447 +46,1,0.146447 +46,2,0.146447 +46,3,0.146447 +46,4,0.146447 +46,5,0.146447 +46,6,0.146447 +46,7,0.146447 +46,8,0.146447 +46,9,0.146447 +46,10,0.146447 +46,11,0.146447 +46,12,0.146447 +46,13,0.146447 +46,14,0.146447 +46,15,0.146447 +46,16,0.146447 +46,17,0.146447 +46,18,0.146447 +46,19,0.146447 +46,20,0.146447 +46,21,0.146447 +46,22,0.146447 +46,23,0.146447 +46,24,0.146447 +46,25,0.146447 +46,26,0.146447 +46,27,0.146447 +46,28,0.146447 +46,29,0.146447 +46,30,0.146447 +46,31,0.146447 +46,32,0.146447 +46,33,0.146447 +46,34,0.146447 +46,35,0.146447 +46,36,0.146447 +46,37,0.146447 +46,38,0.146447 +46,39,0.146447 +46,40,0.146447 +46,41,0.146447 +46,42,0.146447 +46,43,0.146447 +46,44,0.146447 +46,45,0.146447 +46,46,0.146447 +46,47,0.146447 +46,48,0.146447 +46,49,0.146447 +47,0,0.146447 +47,1,0.146447 +47,2,0.146447 +47,3,0.146447 +47,4,0.146447 +47,5,0.146447 +47,6,0.146447 +47,7,0.146447 +47,8,0.146447 +47,9,0.146447 +47,10,0.146447 +47,11,0.146447 +47,12,0.146447 +47,13,0.146447 +47,14,0.146447 +47,15,0.146447 +47,16,0.146447 +47,17,0.146447 +47,18,0.146447 +47,19,0.146447 +47,20,0.146447 +47,21,0.146447 +47,22,0.146447 +47,23,0.146447 +47,24,0.146447 +47,25,0.146447 +47,26,0.146447 +47,27,0.146447 +47,28,0.146447 +47,29,0.146447 +47,30,0.146447 +47,31,0.146447 +47,32,0.146447 +47,33,0.146447 +47,34,0.146447 +47,35,0.146447 +47,36,0.146447 +47,37,0.146447 +47,38,0.146447 +47,39,0.146447 +47,40,0.146447 +47,41,0.146447 +47,42,0.146447 +47,43,0.146447 +47,44,0.146447 +47,45,0.146447 +47,46,0.146447 +47,47,0.146447 +47,48,0.146447 +47,49,0.146447 +48,0,0.146447 +48,1,0.146447 +48,2,0.146447 +48,3,0.146447 +48,4,0.146447 +48,5,0.146447 +48,6,0.146447 +48,7,0.146447 +48,8,0.146447 +48,9,0.146447 +48,10,0.146447 +48,11,0.146447 +48,12,0.146447 +48,13,0.146447 +48,14,0.146447 +48,15,0.146447 +48,16,0.146447 +48,17,0.146447 +48,18,0.146447 +48,19,0.146447 +48,20,0.146447 +48,21,0.146447 +48,22,0.146447 +48,23,0.146447 +48,24,0.146447 +48,25,0.146447 +48,26,0.146447 +48,27,0.146447 +48,28,0.146447 +48,29,0.146447 +48,30,0.146447 +48,31,0.146447 +48,32,0.146447 +48,33,0.146447 +48,34,0.146447 +48,35,0.146447 +48,36,0.146447 +48,37,0.146447 +48,38,0.146447 +48,39,0.146447 +48,40,0.146447 +48,41,0.146447 +48,42,0.146447 +48,43,0.146447 +48,44,0.146447 +48,45,0.146447 +48,46,0.146447 +48,47,0.146447 +48,48,0.146447 +48,49,0.146447 +49,0,0.146447 +49,1,0.146447 +49,2,0.146447 +49,3,0.146447 +49,4,0.146447 +49,5,0.146447 +49,6,0.146447 +49,7,0.146447 +49,8,0.146447 +49,9,0.146447 +49,10,0.146447 +49,11,0.146447 +49,12,0.146447 +49,13,0.146447 +49,14,0.146447 +49,15,0.146447 +49,16,0.146447 +49,17,0.146447 +49,18,0.146447 +49,19,0.146447 +49,20,0.146447 +49,21,0.146447 +49,22,0.146447 +49,23,0.146447 +49,24,0.146447 +49,25,0.146447 +49,26,0.146447 +49,27,0.146447 +49,28,0.146447 +49,29,0.146447 +49,30,0.146447 +49,31,0.146447 +49,32,0.146447 +49,33,0.146447 +49,34,0.146447 +49,35,0.146447 +49,36,0.146447 +49,37,0.146447 +49,38,0.146447 +49,39,0.146447 +49,40,0.146447 +49,41,0.146447 +49,42,0.146447 +49,43,0.146447 +49,44,0.146447 +49,45,0.146447 +49,46,0.146447 +49,47,0.146447 +49,48,0.146447 +49,49,0.146447 diff --git a/examples/pfhub_bm8/output_100.txt b/examples/pfhub_bm8/output_100.txt new file mode 100644 index 0000000..ab59b2a --- /dev/null +++ b/examples/pfhub_bm8/output_100.txt @@ -0,0 +1,2500 @@ +0,0,0.16809 +0,1,0.168113 +0,2,0.168114 +0,3,0.168114 +0,4,0.168114 +0,5,0.168114 +0,6,0.168114 +0,7,0.168114 +0,8,0.168114 +0,9,0.168114 +0,10,0.168114 +0,11,0.168114 +0,12,0.168114 +0,13,0.168114 +0,14,0.168114 +0,15,0.168114 +0,16,0.168114 +0,17,0.168114 +0,18,0.168114 +0,19,0.168114 +0,20,0.168114 +0,21,0.168114 +0,22,0.168114 +0,23,0.168114 +0,24,0.168114 +0,25,0.168114 +0,26,0.168114 +0,27,0.168114 +0,28,0.168114 +0,29,0.168114 +0,30,0.168114 +0,31,0.168114 +0,32,0.168114 +0,33,0.168114 +0,34,0.168114 +0,35,0.168114 +0,36,0.168114 +0,37,0.168114 +0,38,0.168114 +0,39,0.168114 +0,40,0.168114 +0,41,0.168114 +0,42,0.168114 +0,43,0.168114 +0,44,0.168114 +0,45,0.168114 +0,46,0.168114 +0,47,0.168114 +0,48,0.168114 +0,49,0.168114 +1,0,0.168113 +1,1,0.168137 +1,2,0.168137 +1,3,0.168137 +1,4,0.168137 +1,5,0.168137 +1,6,0.168137 +1,7,0.168137 +1,8,0.168137 +1,9,0.168137 +1,10,0.168137 +1,11,0.168137 +1,12,0.168137 +1,13,0.168137 +1,14,0.168137 +1,15,0.168137 +1,16,0.168137 +1,17,0.168137 +1,18,0.168137 +1,19,0.168137 +1,20,0.168137 +1,21,0.168137 +1,22,0.168137 +1,23,0.168137 +1,24,0.168137 +1,25,0.168137 +1,26,0.168137 +1,27,0.168137 +1,28,0.168137 +1,29,0.168137 +1,30,0.168137 +1,31,0.168137 +1,32,0.168137 +1,33,0.168137 +1,34,0.168137 +1,35,0.168137 +1,36,0.168137 +1,37,0.168137 +1,38,0.168137 +1,39,0.168137 +1,40,0.168137 +1,41,0.168137 +1,42,0.168137 +1,43,0.168137 +1,44,0.168137 +1,45,0.168137 +1,46,0.168137 +1,47,0.168137 +1,48,0.168137 +1,49,0.168137 +2,0,0.168114 +2,1,0.168137 +2,2,0.168138 +2,3,0.168138 +2,4,0.168138 +2,5,0.168138 +2,6,0.168138 +2,7,0.168138 +2,8,0.168138 +2,9,0.168138 +2,10,0.168138 +2,11,0.168138 +2,12,0.168138 +2,13,0.168138 +2,14,0.168138 +2,15,0.168138 +2,16,0.168138 +2,17,0.168138 +2,18,0.168138 +2,19,0.168138 +2,20,0.168138 +2,21,0.168138 +2,22,0.168138 +2,23,0.168138 +2,24,0.168138 +2,25,0.168138 +2,26,0.168138 +2,27,0.168138 +2,28,0.168138 +2,29,0.168138 +2,30,0.168138 +2,31,0.168138 +2,32,0.168138 +2,33,0.168138 +2,34,0.168138 +2,35,0.168138 +2,36,0.168138 +2,37,0.168138 +2,38,0.168138 +2,39,0.168138 +2,40,0.168138 +2,41,0.168138 +2,42,0.168138 +2,43,0.168138 +2,44,0.168138 +2,45,0.168138 +2,46,0.168138 +2,47,0.168138 +2,48,0.168138 +2,49,0.168138 +3,0,0.168114 +3,1,0.168137 +3,2,0.168138 +3,3,0.168138 +3,4,0.168138 +3,5,0.168138 +3,6,0.168138 +3,7,0.168138 +3,8,0.168138 +3,9,0.168138 +3,10,0.168138 +3,11,0.168138 +3,12,0.168138 +3,13,0.168138 +3,14,0.168138 +3,15,0.168138 +3,16,0.168138 +3,17,0.168138 +3,18,0.168138 +3,19,0.168138 +3,20,0.168138 +3,21,0.168138 +3,22,0.168138 +3,23,0.168138 +3,24,0.168138 +3,25,0.168138 +3,26,0.168138 +3,27,0.168138 +3,28,0.168138 +3,29,0.168138 +3,30,0.168138 +3,31,0.168138 +3,32,0.168138 +3,33,0.168138 +3,34,0.168138 +3,35,0.168138 +3,36,0.168138 +3,37,0.168138 +3,38,0.168138 +3,39,0.168138 +3,40,0.168138 +3,41,0.168138 +3,42,0.168138 +3,43,0.168138 +3,44,0.168138 +3,45,0.168138 +3,46,0.168138 +3,47,0.168138 +3,48,0.168138 +3,49,0.168138 +4,0,0.168114 +4,1,0.168137 +4,2,0.168138 +4,3,0.168138 +4,4,0.168138 +4,5,0.168138 +4,6,0.168138 +4,7,0.168138 +4,8,0.168138 +4,9,0.168138 +4,10,0.168138 +4,11,0.168138 +4,12,0.168138 +4,13,0.168138 +4,14,0.168138 +4,15,0.168138 +4,16,0.168138 +4,17,0.168138 +4,18,0.168138 +4,19,0.168138 +4,20,0.168138 +4,21,0.168138 +4,22,0.168138 +4,23,0.168138 +4,24,0.168138 +4,25,0.168138 +4,26,0.168138 +4,27,0.168138 +4,28,0.168138 +4,29,0.168138 +4,30,0.168138 +4,31,0.168138 +4,32,0.168138 +4,33,0.168138 +4,34,0.168138 +4,35,0.168138 +4,36,0.168138 +4,37,0.168138 +4,38,0.168138 +4,39,0.168138 +4,40,0.168138 +4,41,0.168138 +4,42,0.168138 +4,43,0.168138 +4,44,0.168138 +4,45,0.168138 +4,46,0.168138 +4,47,0.168138 +4,48,0.168138 +4,49,0.168138 +5,0,0.168114 +5,1,0.168137 +5,2,0.168138 +5,3,0.168138 +5,4,0.168138 +5,5,0.168138 +5,6,0.168138 +5,7,0.168138 +5,8,0.168138 +5,9,0.168138 +5,10,0.168138 +5,11,0.168138 +5,12,0.168138 +5,13,0.168138 +5,14,0.168138 +5,15,0.168138 +5,16,0.168138 +5,17,0.168138 +5,18,0.168138 +5,19,0.168138 +5,20,0.168138 +5,21,0.168138 +5,22,0.168138 +5,23,0.168138 +5,24,0.168138 +5,25,0.168138 +5,26,0.168138 +5,27,0.168138 +5,28,0.168138 +5,29,0.168138 +5,30,0.168138 +5,31,0.168138 +5,32,0.168138 +5,33,0.168138 +5,34,0.168138 +5,35,0.168138 +5,36,0.168138 +5,37,0.168138 +5,38,0.168138 +5,39,0.168138 +5,40,0.168138 +5,41,0.168138 +5,42,0.168138 +5,43,0.168138 +5,44,0.168138 +5,45,0.168138 +5,46,0.168138 +5,47,0.168138 +5,48,0.168138 +5,49,0.168138 +6,0,0.168114 +6,1,0.168137 +6,2,0.168138 +6,3,0.168138 +6,4,0.168138 +6,5,0.168138 +6,6,0.168138 +6,7,0.168138 +6,8,0.168138 +6,9,0.168138 +6,10,0.168138 +6,11,0.168138 +6,12,0.168138 +6,13,0.168138 +6,14,0.168138 +6,15,0.168138 +6,16,0.168138 +6,17,0.168138 +6,18,0.168138 +6,19,0.168138 +6,20,0.168138 +6,21,0.168138 +6,22,0.168138 +6,23,0.168138 +6,24,0.168138 +6,25,0.168138 +6,26,0.168138 +6,27,0.168138 +6,28,0.168138 +6,29,0.168138 +6,30,0.168138 +6,31,0.168138 +6,32,0.168138 +6,33,0.168138 +6,34,0.168138 +6,35,0.168138 +6,36,0.168138 +6,37,0.168138 +6,38,0.168138 +6,39,0.168138 +6,40,0.168138 +6,41,0.168138 +6,42,0.168138 +6,43,0.168138 +6,44,0.168138 +6,45,0.168138 +6,46,0.168138 +6,47,0.168138 +6,48,0.168138 +6,49,0.168138 +7,0,0.168114 +7,1,0.168137 +7,2,0.168138 +7,3,0.168138 +7,4,0.168138 +7,5,0.168138 +7,6,0.168138 +7,7,0.168138 +7,8,0.168138 +7,9,0.168138 +7,10,0.168138 +7,11,0.168138 +7,12,0.168138 +7,13,0.168138 +7,14,0.168138 +7,15,0.168138 +7,16,0.168138 +7,17,0.168138 +7,18,0.168138 +7,19,0.168138 +7,20,0.168138 +7,21,0.168138 +7,22,0.168138 +7,23,0.168138 +7,24,0.168138 +7,25,0.168138 +7,26,0.168138 +7,27,0.168138 +7,28,0.168138 +7,29,0.168138 +7,30,0.168138 +7,31,0.168138 +7,32,0.168138 +7,33,0.168138 +7,34,0.168138 +7,35,0.168138 +7,36,0.168138 +7,37,0.168138 +7,38,0.168138 +7,39,0.168138 +7,40,0.168138 +7,41,0.168138 +7,42,0.168138 +7,43,0.168138 +7,44,0.168138 +7,45,0.168138 +7,46,0.168138 +7,47,0.168138 +7,48,0.168138 +7,49,0.168138 +8,0,0.168114 +8,1,0.168137 +8,2,0.168138 +8,3,0.168138 +8,4,0.168138 +8,5,0.168138 +8,6,0.168138 +8,7,0.168138 +8,8,0.168138 +8,9,0.168138 +8,10,0.168138 +8,11,0.168138 +8,12,0.168138 +8,13,0.168138 +8,14,0.168138 +8,15,0.168138 +8,16,0.168138 +8,17,0.168138 +8,18,0.168138 +8,19,0.168138 +8,20,0.168138 +8,21,0.168138 +8,22,0.168138 +8,23,0.168138 +8,24,0.168138 +8,25,0.168138 +8,26,0.168138 +8,27,0.168138 +8,28,0.168138 +8,29,0.168138 +8,30,0.168138 +8,31,0.168138 +8,32,0.168138 +8,33,0.168138 +8,34,0.168138 +8,35,0.168138 +8,36,0.168138 +8,37,0.168138 +8,38,0.168138 +8,39,0.168138 +8,40,0.168138 +8,41,0.168138 +8,42,0.168138 +8,43,0.168138 +8,44,0.168138 +8,45,0.168138 +8,46,0.168138 +8,47,0.168138 +8,48,0.168138 +8,49,0.168138 +9,0,0.168114 +9,1,0.168137 +9,2,0.168138 +9,3,0.168138 +9,4,0.168138 +9,5,0.168138 +9,6,0.168138 +9,7,0.168138 +9,8,0.168138 +9,9,0.168138 +9,10,0.168138 +9,11,0.168138 +9,12,0.168138 +9,13,0.168138 +9,14,0.168138 +9,15,0.168138 +9,16,0.168138 +9,17,0.168138 +9,18,0.168138 +9,19,0.168138 +9,20,0.168138 +9,21,0.168138 +9,22,0.168138 +9,23,0.168138 +9,24,0.168138 +9,25,0.168138 +9,26,0.168138 +9,27,0.168138 +9,28,0.168138 +9,29,0.168138 +9,30,0.168138 +9,31,0.168138 +9,32,0.168138 +9,33,0.168138 +9,34,0.168138 +9,35,0.168138 +9,36,0.168138 +9,37,0.168138 +9,38,0.168138 +9,39,0.168138 +9,40,0.168138 +9,41,0.168138 +9,42,0.168138 +9,43,0.168138 +9,44,0.168138 +9,45,0.168138 +9,46,0.168138 +9,47,0.168138 +9,48,0.168138 +9,49,0.168138 +10,0,0.168114 +10,1,0.168137 +10,2,0.168138 +10,3,0.168138 +10,4,0.168138 +10,5,0.168138 +10,6,0.168138 +10,7,0.168138 +10,8,0.168138 +10,9,0.168138 +10,10,0.168138 +10,11,0.168138 +10,12,0.168138 +10,13,0.168138 +10,14,0.168138 +10,15,0.168138 +10,16,0.168138 +10,17,0.168138 +10,18,0.168138 +10,19,0.168138 +10,20,0.168138 +10,21,0.168138 +10,22,0.168138 +10,23,0.168138 +10,24,0.168138 +10,25,0.168138 +10,26,0.168138 +10,27,0.168138 +10,28,0.168138 +10,29,0.168138 +10,30,0.168138 +10,31,0.168138 +10,32,0.168138 +10,33,0.168138 +10,34,0.168138 +10,35,0.168138 +10,36,0.168138 +10,37,0.168138 +10,38,0.168138 +10,39,0.168138 +10,40,0.168138 +10,41,0.168138 +10,42,0.168138 +10,43,0.168138 +10,44,0.168138 +10,45,0.168138 +10,46,0.168138 +10,47,0.168138 +10,48,0.168138 +10,49,0.168138 +11,0,0.168114 +11,1,0.168137 +11,2,0.168138 +11,3,0.168138 +11,4,0.168138 +11,5,0.168138 +11,6,0.168138 +11,7,0.168138 +11,8,0.168138 +11,9,0.168138 +11,10,0.168138 +11,11,0.168138 +11,12,0.168138 +11,13,0.168138 +11,14,0.168138 +11,15,0.168138 +11,16,0.168138 +11,17,0.168138 +11,18,0.168138 +11,19,0.168138 +11,20,0.168138 +11,21,0.168138 +11,22,0.168138 +11,23,0.168138 +11,24,0.168138 +11,25,0.168138 +11,26,0.168138 +11,27,0.168138 +11,28,0.168138 +11,29,0.168138 +11,30,0.168138 +11,31,0.168138 +11,32,0.168138 +11,33,0.168138 +11,34,0.168138 +11,35,0.168138 +11,36,0.168138 +11,37,0.168138 +11,38,0.168138 +11,39,0.168138 +11,40,0.168138 +11,41,0.168138 +11,42,0.168138 +11,43,0.168138 +11,44,0.168138 +11,45,0.168138 +11,46,0.168138 +11,47,0.168138 +11,48,0.168138 +11,49,0.168138 +12,0,0.168114 +12,1,0.168137 +12,2,0.168138 +12,3,0.168138 +12,4,0.168138 +12,5,0.168138 +12,6,0.168138 +12,7,0.168138 +12,8,0.168138 +12,9,0.168138 +12,10,0.168138 +12,11,0.168138 +12,12,0.168138 +12,13,0.168138 +12,14,0.168138 +12,15,0.168138 +12,16,0.168138 +12,17,0.168138 +12,18,0.168138 +12,19,0.168138 +12,20,0.168138 +12,21,0.168138 +12,22,0.168138 +12,23,0.168138 +12,24,0.168138 +12,25,0.168138 +12,26,0.168138 +12,27,0.168138 +12,28,0.168138 +12,29,0.168138 +12,30,0.168138 +12,31,0.168138 +12,32,0.168138 +12,33,0.168138 +12,34,0.168138 +12,35,0.168138 +12,36,0.168138 +12,37,0.168138 +12,38,0.168138 +12,39,0.168138 +12,40,0.168138 +12,41,0.168138 +12,42,0.168138 +12,43,0.168138 +12,44,0.168138 +12,45,0.168138 +12,46,0.168138 +12,47,0.168138 +12,48,0.168138 +12,49,0.168138 +13,0,0.168114 +13,1,0.168137 +13,2,0.168138 +13,3,0.168138 +13,4,0.168138 +13,5,0.168138 +13,6,0.168138 +13,7,0.168138 +13,8,0.168138 +13,9,0.168138 +13,10,0.168138 +13,11,0.168138 +13,12,0.168138 +13,13,0.168138 +13,14,0.168138 +13,15,0.168138 +13,16,0.168138 +13,17,0.168138 +13,18,0.168138 +13,19,0.168138 +13,20,0.168138 +13,21,0.168138 +13,22,0.168138 +13,23,0.168138 +13,24,0.168139 +13,25,0.168139 +13,26,0.168139 +13,27,0.168138 +13,28,0.168138 +13,29,0.168138 +13,30,0.168138 +13,31,0.168138 +13,32,0.168138 +13,33,0.168138 +13,34,0.168138 +13,35,0.168138 +13,36,0.168138 +13,37,0.168138 +13,38,0.168138 +13,39,0.168138 +13,40,0.168138 +13,41,0.168138 +13,42,0.168138 +13,43,0.168138 +13,44,0.168138 +13,45,0.168138 +13,46,0.168138 +13,47,0.168138 +13,48,0.168138 +13,49,0.168138 +14,0,0.168114 +14,1,0.168137 +14,2,0.168138 +14,3,0.168138 +14,4,0.168138 +14,5,0.168138 +14,6,0.168138 +14,7,0.168138 +14,8,0.168138 +14,9,0.168138 +14,10,0.168138 +14,11,0.168138 +14,12,0.168138 +14,13,0.168138 +14,14,0.168138 +14,15,0.168138 +14,16,0.168138 +14,17,0.168138 +14,18,0.168138 +14,19,0.168138 +14,20,0.168139 +14,21,0.168139 +14,22,0.168141 +14,23,0.168143 +14,24,0.168144 +14,25,0.168145 +14,26,0.168144 +14,27,0.168143 +14,28,0.168141 +14,29,0.168139 +14,30,0.168139 +14,31,0.168138 +14,32,0.168138 +14,33,0.168138 +14,34,0.168138 +14,35,0.168138 +14,36,0.168138 +14,37,0.168138 +14,38,0.168138 +14,39,0.168138 +14,40,0.168138 +14,41,0.168138 +14,42,0.168138 +14,43,0.168138 +14,44,0.168138 +14,45,0.168138 +14,46,0.168138 +14,47,0.168138 +14,48,0.168138 +14,49,0.168138 +15,0,0.168114 +15,1,0.168137 +15,2,0.168138 +15,3,0.168138 +15,4,0.168138 +15,5,0.168138 +15,6,0.168138 +15,7,0.168138 +15,8,0.168138 +15,9,0.168138 +15,10,0.168138 +15,11,0.168138 +15,12,0.168138 +15,13,0.168138 +15,14,0.168138 +15,15,0.168138 +15,16,0.168138 +15,17,0.168138 +15,18,0.168138 +15,19,0.16814 +15,20,0.168143 +15,21,0.168149 +15,22,0.16816 +15,23,0.168174 +15,24,0.168187 +15,25,0.168192 +15,26,0.168187 +15,27,0.168174 +15,28,0.16816 +15,29,0.168149 +15,30,0.168143 +15,31,0.16814 +15,32,0.168138 +15,33,0.168138 +15,34,0.168138 +15,35,0.168138 +15,36,0.168138 +15,37,0.168138 +15,38,0.168138 +15,39,0.168138 +15,40,0.168138 +15,41,0.168138 +15,42,0.168138 +15,43,0.168138 +15,44,0.168138 +15,45,0.168138 +15,46,0.168138 +15,47,0.168138 +15,48,0.168138 +15,49,0.168138 +16,0,0.168114 +16,1,0.168137 +16,2,0.168138 +16,3,0.168138 +16,4,0.168138 +16,5,0.168138 +16,6,0.168138 +16,7,0.168138 +16,8,0.168138 +16,9,0.168138 +16,10,0.168138 +16,11,0.168138 +16,12,0.168138 +16,13,0.168138 +16,14,0.168138 +16,15,0.168138 +16,16,0.168138 +16,17,0.168139 +16,18,0.168141 +16,19,0.168148 +16,20,0.168167 +16,21,0.168209 +16,22,0.168286 +16,23,0.168393 +16,24,0.168495 +16,25,0.168538 +16,26,0.168495 +16,27,0.168393 +16,28,0.168286 +16,29,0.168209 +16,30,0.168167 +16,31,0.168148 +16,32,0.168141 +16,33,0.168139 +16,34,0.168138 +16,35,0.168138 +16,36,0.168138 +16,37,0.168138 +16,38,0.168138 +16,39,0.168138 +16,40,0.168138 +16,41,0.168138 +16,42,0.168138 +16,43,0.168138 +16,44,0.168138 +16,45,0.168138 +16,46,0.168138 +16,47,0.168138 +16,48,0.168138 +16,49,0.168138 +17,0,0.168114 +17,1,0.168137 +17,2,0.168138 +17,3,0.168138 +17,4,0.168138 +17,5,0.168138 +17,6,0.168138 +17,7,0.168138 +17,8,0.168138 +17,9,0.168138 +17,10,0.168138 +17,11,0.168138 +17,12,0.168138 +17,13,0.168138 +17,14,0.168138 +17,15,0.168138 +17,16,0.168139 +17,17,0.168141 +17,18,0.168152 +17,19,0.168189 +17,20,0.168299 +17,21,0.16857 +17,22,0.169107 +17,23,0.16991 +17,24,0.170712 +17,25,0.171058 +17,26,0.170712 +17,27,0.169911 +17,28,0.169108 +17,29,0.16857 +17,30,0.168299 +17,31,0.168189 +17,32,0.168152 +17,33,0.168141 +17,34,0.168139 +17,35,0.168138 +17,36,0.168138 +17,37,0.168138 +17,38,0.168138 +17,39,0.168138 +17,40,0.168138 +17,41,0.168138 +17,42,0.168138 +17,43,0.168138 +17,44,0.168138 +17,45,0.168138 +17,46,0.168138 +17,47,0.168138 +17,48,0.168138 +17,49,0.168138 +18,0,0.168114 +18,1,0.168137 +18,2,0.168138 +18,3,0.168138 +18,4,0.168138 +18,5,0.168138 +18,6,0.168138 +18,7,0.168138 +18,8,0.168138 +18,9,0.168138 +18,10,0.168138 +18,11,0.168138 +18,12,0.168138 +18,13,0.168138 +18,14,0.168138 +18,15,0.168138 +18,16,0.168141 +18,17,0.168152 +18,18,0.168201 +18,19,0.168383 +18,20,0.168981 +18,21,0.170626 +18,22,0.174217 +18,23,0.179971 +18,24,0.185953 +18,25,0.188584 +18,26,0.185957 +18,27,0.179976 +18,28,0.174221 +18,29,0.170628 +18,30,0.168982 +18,31,0.168383 +18,32,0.168201 +18,33,0.168152 +18,34,0.168141 +18,35,0.168138 +18,36,0.168138 +18,37,0.168138 +18,38,0.168138 +18,39,0.168138 +18,40,0.168138 +18,41,0.168138 +18,42,0.168138 +18,43,0.168138 +18,44,0.168138 +18,45,0.168138 +18,46,0.168138 +18,47,0.168138 +18,48,0.168138 +18,49,0.168138 +19,0,0.168114 +19,1,0.168137 +19,2,0.168138 +19,3,0.168138 +19,4,0.168138 +19,5,0.168138 +19,6,0.168138 +19,7,0.168138 +19,8,0.168138 +19,9,0.168138 +19,10,0.168138 +19,11,0.168138 +19,12,0.168138 +19,13,0.168138 +19,14,0.168138 +19,15,0.16814 +19,16,0.168148 +19,17,0.168189 +19,18,0.168383 +19,19,0.169196 +19,20,0.172194 +19,21,0.181385 +19,22,0.203037 +19,23,0.238498 +19,24,0.274497 +19,25,0.289859 +19,26,0.274512 +19,27,0.238521 +19,28,0.203058 +19,29,0.181398 +19,30,0.1722 +19,31,0.169198 +19,32,0.168383 +19,33,0.168189 +19,34,0.168148 +19,35,0.16814 +19,36,0.168138 +19,37,0.168138 +19,38,0.168138 +19,39,0.168138 +19,40,0.168138 +19,41,0.168138 +19,42,0.168138 +19,43,0.168138 +19,44,0.168138 +19,45,0.168138 +19,46,0.168138 +19,47,0.168138 +19,48,0.168138 +19,49,0.168138 +20,0,0.168114 +20,1,0.168137 +20,2,0.168138 +20,3,0.168138 +20,4,0.168138 +20,5,0.168138 +20,6,0.168138 +20,7,0.168138 +20,8,0.168138 +20,9,0.168138 +20,10,0.168138 +20,11,0.168138 +20,12,0.168138 +20,13,0.168138 +20,14,0.168139 +20,15,0.168143 +20,16,0.168167 +20,17,0.168299 +20,18,0.168981 +20,19,0.172194 +20,20,0.185433 +20,21,0.229093 +20,22,0.327965 +20,23,0.459097 +20,24,0.555306 +20,25,0.587635 +20,26,0.555305 +20,27,0.459118 +20,28,0.328015 +20,29,0.229139 +20,30,0.185456 +20,31,0.172201 +20,32,0.168982 +20,33,0.168299 +20,34,0.168167 +20,35,0.168143 +20,36,0.168139 +20,37,0.168138 +20,38,0.168138 +20,39,0.168138 +20,40,0.168138 +20,41,0.168138 +20,42,0.168138 +20,43,0.168138 +20,44,0.168138 +20,45,0.168138 +20,46,0.168138 +20,47,0.168138 +20,48,0.168138 +20,49,0.168138 +21,0,0.168114 +21,1,0.168137 +21,2,0.168138 +21,3,0.168138 +21,4,0.168138 +21,5,0.168138 +21,6,0.168138 +21,7,0.168138 +21,8,0.168138 +21,9,0.168138 +21,10,0.168138 +21,11,0.168138 +21,12,0.168138 +21,13,0.168138 +21,14,0.168139 +21,15,0.168149 +21,16,0.168209 +21,17,0.16857 +21,18,0.170626 +21,19,0.181385 +21,20,0.229093 +21,21,0.37484 +21,22,0.588015 +21,23,0.728894 +21,24,0.789607 +21,25,0.805447 +21,26,0.789589 +21,27,0.728855 +21,28,0.587996 +21,29,0.374888 +21,30,0.229151 +21,31,0.181408 +21,32,0.170631 +21,33,0.168571 +21,34,0.168209 +21,35,0.168149 +21,36,0.168139 +21,37,0.168138 +21,38,0.168138 +21,39,0.168138 +21,40,0.168138 +21,41,0.168138 +21,42,0.168138 +21,43,0.168138 +21,44,0.168138 +21,45,0.168138 +21,46,0.168138 +21,47,0.168138 +21,48,0.168138 +21,49,0.168138 +22,0,0.168114 +22,1,0.168137 +22,2,0.168138 +22,3,0.168138 +22,4,0.168138 +22,5,0.168138 +22,6,0.168138 +22,7,0.168138 +22,8,0.168138 +22,9,0.168138 +22,10,0.168138 +22,11,0.168138 +22,12,0.168138 +22,13,0.168138 +22,14,0.168141 +22,15,0.16816 +22,16,0.168286 +22,17,0.169107 +22,18,0.174217 +22,19,0.203037 +22,20,0.327965 +22,21,0.588015 +22,22,0.77119 +22,23,0.840556 +22,24,0.861198 +22,25,0.865579 +22,26,0.861194 +22,27,0.840539 +22,28,0.771141 +22,29,0.587994 +22,30,0.328023 +22,31,0.203087 +22,32,0.174231 +22,33,0.16911 +22,34,0.168287 +22,35,0.16816 +22,36,0.168141 +22,37,0.168138 +22,38,0.168138 +22,39,0.168138 +22,40,0.168138 +22,41,0.168138 +22,42,0.168138 +22,43,0.168138 +22,44,0.168138 +22,45,0.168138 +22,46,0.168138 +22,47,0.168138 +22,48,0.168138 +22,49,0.168138 +23,0,0.168114 +23,1,0.168137 +23,2,0.168138 +23,3,0.168138 +23,4,0.168138 +23,5,0.168138 +23,6,0.168138 +23,7,0.168138 +23,8,0.168138 +23,9,0.168138 +23,10,0.168138 +23,11,0.168138 +23,12,0.168138 +23,13,0.168138 +23,14,0.168143 +23,15,0.168174 +23,16,0.168393 +23,17,0.16991 +23,18,0.179971 +23,19,0.238498 +23,20,0.459097 +23,21,0.728894 +23,22,0.840556 +23,23,0.869036 +23,24,0.875149 +23,25,0.876204 +23,26,0.875148 +23,27,0.869033 +23,28,0.840527 +23,29,0.728842 +23,30,0.45911 +23,31,0.238567 +23,32,0.179997 +23,33,0.169916 +23,34,0.168394 +23,35,0.168174 +23,36,0.168143 +23,37,0.168138 +23,38,0.168138 +23,39,0.168138 +23,40,0.168138 +23,41,0.168138 +23,42,0.168138 +23,43,0.168138 +23,44,0.168138 +23,45,0.168138 +23,46,0.168138 +23,47,0.168138 +23,48,0.168138 +23,49,0.168138 +24,0,0.168114 +24,1,0.168137 +24,2,0.168138 +24,3,0.168138 +24,4,0.168138 +24,5,0.168138 +24,6,0.168138 +24,7,0.168138 +24,8,0.168138 +24,9,0.168138 +24,10,0.168138 +24,11,0.168138 +24,12,0.168138 +24,13,0.168139 +24,14,0.168144 +24,15,0.168187 +24,16,0.168495 +24,17,0.170712 +24,18,0.185953 +24,19,0.274497 +24,20,0.555306 +24,21,0.789607 +24,22,0.861198 +24,23,0.875149 +24,24,0.877451 +24,25,0.877771 +24,26,0.877451 +24,27,0.875148 +24,28,0.861183 +24,29,0.789552 +24,30,0.555293 +24,31,0.274565 +24,32,0.185991 +24,33,0.17072 +24,34,0.168496 +24,35,0.168187 +24,36,0.168144 +24,37,0.168139 +24,38,0.168138 +24,39,0.168138 +24,40,0.168138 +24,41,0.168138 +24,42,0.168138 +24,43,0.168138 +24,44,0.168138 +24,45,0.168138 +24,46,0.168138 +24,47,0.168138 +24,48,0.168138 +24,49,0.168138 +25,0,0.168114 +25,1,0.168137 +25,2,0.168138 +25,3,0.168138 +25,4,0.168138 +25,5,0.168138 +25,6,0.168138 +25,7,0.168138 +25,8,0.168138 +25,9,0.168138 +25,10,0.168138 +25,11,0.168138 +25,12,0.168138 +25,13,0.168139 +25,14,0.168145 +25,15,0.168192 +25,16,0.168538 +25,17,0.171058 +25,18,0.188584 +25,19,0.289859 +25,20,0.587635 +25,21,0.805447 +25,22,0.865579 +25,23,0.876204 +25,24,0.877771 +25,25,0.877977 +25,26,0.877771 +25,27,0.876204 +25,28,0.865567 +25,29,0.805394 +25,30,0.587614 +25,31,0.289924 +25,32,0.188625 +25,33,0.171067 +25,34,0.168539 +25,35,0.168192 +25,36,0.168145 +25,37,0.168139 +25,38,0.168138 +25,39,0.168138 +25,40,0.168138 +25,41,0.168138 +25,42,0.168138 +25,43,0.168138 +25,44,0.168138 +25,45,0.168138 +25,46,0.168138 +25,47,0.168138 +25,48,0.168138 +25,49,0.168138 +26,0,0.168114 +26,1,0.168137 +26,2,0.168138 +26,3,0.168138 +26,4,0.168138 +26,5,0.168138 +26,6,0.168138 +26,7,0.168138 +26,8,0.168138 +26,9,0.168138 +26,10,0.168138 +26,11,0.168138 +26,12,0.168138 +26,13,0.168139 +26,14,0.168144 +26,15,0.168187 +26,16,0.168495 +26,17,0.170712 +26,18,0.185957 +26,19,0.274512 +26,20,0.555305 +26,21,0.789589 +26,22,0.861194 +26,23,0.875148 +26,24,0.877451 +26,25,0.877771 +26,26,0.877451 +26,27,0.875147 +26,28,0.861179 +26,29,0.789534 +26,30,0.555291 +26,31,0.27458 +26,32,0.185995 +26,33,0.17072 +26,34,0.168496 +26,35,0.168187 +26,36,0.168144 +26,37,0.168139 +26,38,0.168138 +26,39,0.168138 +26,40,0.168138 +26,41,0.168138 +26,42,0.168138 +26,43,0.168138 +26,44,0.168138 +26,45,0.168138 +26,46,0.168138 +26,47,0.168138 +26,48,0.168138 +26,49,0.168138 +27,0,0.168114 +27,1,0.168137 +27,2,0.168138 +27,3,0.168138 +27,4,0.168138 +27,5,0.168138 +27,6,0.168138 +27,7,0.168138 +27,8,0.168138 +27,9,0.168138 +27,10,0.168138 +27,11,0.168138 +27,12,0.168138 +27,13,0.168138 +27,14,0.168143 +27,15,0.168174 +27,16,0.168393 +27,17,0.169911 +27,18,0.179976 +27,19,0.238521 +27,20,0.459118 +27,21,0.728855 +27,22,0.840539 +27,23,0.869033 +27,24,0.875148 +27,25,0.876204 +27,26,0.875147 +27,27,0.869029 +27,28,0.840509 +27,29,0.728803 +27,30,0.459131 +27,31,0.238591 +27,32,0.180003 +27,33,0.169917 +27,34,0.168394 +27,35,0.168174 +27,36,0.168143 +27,37,0.168138 +27,38,0.168138 +27,39,0.168138 +27,40,0.168138 +27,41,0.168138 +27,42,0.168138 +27,43,0.168138 +27,44,0.168138 +27,45,0.168138 +27,46,0.168138 +27,47,0.168138 +27,48,0.168138 +27,49,0.168138 +28,0,0.168114 +28,1,0.168137 +28,2,0.168138 +28,3,0.168138 +28,4,0.168138 +28,5,0.168138 +28,6,0.168138 +28,7,0.168138 +28,8,0.168138 +28,9,0.168138 +28,10,0.168138 +28,11,0.168138 +28,12,0.168138 +28,13,0.168138 +28,14,0.168141 +28,15,0.16816 +28,16,0.168286 +28,17,0.169108 +28,18,0.174221 +28,19,0.203058 +28,20,0.328015 +28,21,0.587996 +28,22,0.771141 +28,23,0.840527 +28,24,0.861183 +28,25,0.865567 +28,26,0.861179 +28,27,0.840509 +28,28,0.771091 +28,29,0.587975 +28,30,0.328073 +28,31,0.203109 +28,32,0.174236 +28,33,0.169111 +28,34,0.168287 +28,35,0.16816 +28,36,0.168141 +28,37,0.168138 +28,38,0.168138 +28,39,0.168138 +28,40,0.168138 +28,41,0.168138 +28,42,0.168138 +28,43,0.168138 +28,44,0.168138 +28,45,0.168138 +28,46,0.168138 +28,47,0.168138 +28,48,0.168138 +28,49,0.168138 +29,0,0.168114 +29,1,0.168137 +29,2,0.168138 +29,3,0.168138 +29,4,0.168138 +29,5,0.168138 +29,6,0.168138 +29,7,0.168138 +29,8,0.168138 +29,9,0.168138 +29,10,0.168138 +29,11,0.168138 +29,12,0.168138 +29,13,0.168138 +29,14,0.168139 +29,15,0.168149 +29,16,0.168209 +29,17,0.16857 +29,18,0.170628 +29,19,0.181398 +29,20,0.229139 +29,21,0.374888 +29,22,0.587994 +29,23,0.728842 +29,24,0.789552 +29,25,0.805394 +29,26,0.789534 +29,27,0.728803 +29,28,0.587975 +29,29,0.374935 +29,30,0.229197 +29,31,0.181421 +29,32,0.170634 +29,33,0.168571 +29,34,0.168209 +29,35,0.168149 +29,36,0.168139 +29,37,0.168138 +29,38,0.168138 +29,39,0.168138 +29,40,0.168138 +29,41,0.168138 +29,42,0.168138 +29,43,0.168138 +29,44,0.168138 +29,45,0.168138 +29,46,0.168138 +29,47,0.168138 +29,48,0.168138 +29,49,0.168138 +30,0,0.168114 +30,1,0.168137 +30,2,0.168138 +30,3,0.168138 +30,4,0.168138 +30,5,0.168138 +30,6,0.168138 +30,7,0.168138 +30,8,0.168138 +30,9,0.168138 +30,10,0.168138 +30,11,0.168138 +30,12,0.168138 +30,13,0.168138 +30,14,0.168139 +30,15,0.168143 +30,16,0.168167 +30,17,0.168299 +30,18,0.168982 +30,19,0.1722 +30,20,0.185456 +30,21,0.229151 +30,22,0.328023 +30,23,0.45911 +30,24,0.555293 +30,25,0.587614 +30,26,0.555291 +30,27,0.459131 +30,28,0.328073 +30,29,0.229197 +30,30,0.185479 +30,31,0.172207 +30,32,0.168983 +30,33,0.168299 +30,34,0.168167 +30,35,0.168143 +30,36,0.168139 +30,37,0.168138 +30,38,0.168138 +30,39,0.168138 +30,40,0.168138 +30,41,0.168138 +30,42,0.168138 +30,43,0.168138 +30,44,0.168138 +30,45,0.168138 +30,46,0.168138 +30,47,0.168138 +30,48,0.168138 +30,49,0.168138 +31,0,0.168114 +31,1,0.168137 +31,2,0.168138 +31,3,0.168138 +31,4,0.168138 +31,5,0.168138 +31,6,0.168138 +31,7,0.168138 +31,8,0.168138 +31,9,0.168138 +31,10,0.168138 +31,11,0.168138 +31,12,0.168138 +31,13,0.168138 +31,14,0.168138 +31,15,0.16814 +31,16,0.168148 +31,17,0.168189 +31,18,0.168383 +31,19,0.169198 +31,20,0.172201 +31,21,0.181408 +31,22,0.203087 +31,23,0.238567 +31,24,0.274565 +31,25,0.289924 +31,26,0.27458 +31,27,0.238591 +31,28,0.203109 +31,29,0.181421 +31,30,0.172207 +31,31,0.1692 +31,32,0.168383 +31,33,0.16819 +31,34,0.168148 +31,35,0.16814 +31,36,0.168138 +31,37,0.168138 +31,38,0.168138 +31,39,0.168138 +31,40,0.168138 +31,41,0.168138 +31,42,0.168138 +31,43,0.168138 +31,44,0.168138 +31,45,0.168138 +31,46,0.168138 +31,47,0.168138 +31,48,0.168138 +31,49,0.168138 +32,0,0.168114 +32,1,0.168137 +32,2,0.168138 +32,3,0.168138 +32,4,0.168138 +32,5,0.168138 +32,6,0.168138 +32,7,0.168138 +32,8,0.168138 +32,9,0.168138 +32,10,0.168138 +32,11,0.168138 +32,12,0.168138 +32,13,0.168138 +32,14,0.168138 +32,15,0.168138 +32,16,0.168141 +32,17,0.168152 +32,18,0.168201 +32,19,0.168383 +32,20,0.168982 +32,21,0.170631 +32,22,0.174231 +32,23,0.179997 +32,24,0.185991 +32,25,0.188625 +32,26,0.185995 +32,27,0.180003 +32,28,0.174236 +32,29,0.170634 +32,30,0.168983 +32,31,0.168383 +32,32,0.168201 +32,33,0.168152 +32,34,0.168141 +32,35,0.168138 +32,36,0.168138 +32,37,0.168138 +32,38,0.168138 +32,39,0.168138 +32,40,0.168138 +32,41,0.168138 +32,42,0.168138 +32,43,0.168138 +32,44,0.168138 +32,45,0.168138 +32,46,0.168138 +32,47,0.168138 +32,48,0.168138 +32,49,0.168138 +33,0,0.168114 +33,1,0.168137 +33,2,0.168138 +33,3,0.168138 +33,4,0.168138 +33,5,0.168138 +33,6,0.168138 +33,7,0.168138 +33,8,0.168138 +33,9,0.168138 +33,10,0.168138 +33,11,0.168138 +33,12,0.168138 +33,13,0.168138 +33,14,0.168138 +33,15,0.168138 +33,16,0.168139 +33,17,0.168141 +33,18,0.168152 +33,19,0.168189 +33,20,0.168299 +33,21,0.168571 +33,22,0.16911 +33,23,0.169916 +33,24,0.17072 +33,25,0.171067 +33,26,0.17072 +33,27,0.169917 +33,28,0.169111 +33,29,0.168571 +33,30,0.168299 +33,31,0.16819 +33,32,0.168152 +33,33,0.168141 +33,34,0.168139 +33,35,0.168138 +33,36,0.168138 +33,37,0.168138 +33,38,0.168138 +33,39,0.168138 +33,40,0.168138 +33,41,0.168138 +33,42,0.168138 +33,43,0.168138 +33,44,0.168138 +33,45,0.168138 +33,46,0.168138 +33,47,0.168138 +33,48,0.168138 +33,49,0.168138 +34,0,0.168114 +34,1,0.168137 +34,2,0.168138 +34,3,0.168138 +34,4,0.168138 +34,5,0.168138 +34,6,0.168138 +34,7,0.168138 +34,8,0.168138 +34,9,0.168138 +34,10,0.168138 +34,11,0.168138 +34,12,0.168138 +34,13,0.168138 +34,14,0.168138 +34,15,0.168138 +34,16,0.168138 +34,17,0.168139 +34,18,0.168141 +34,19,0.168148 +34,20,0.168167 +34,21,0.168209 +34,22,0.168287 +34,23,0.168394 +34,24,0.168496 +34,25,0.168539 +34,26,0.168496 +34,27,0.168394 +34,28,0.168287 +34,29,0.168209 +34,30,0.168167 +34,31,0.168148 +34,32,0.168141 +34,33,0.168139 +34,34,0.168138 +34,35,0.168138 +34,36,0.168138 +34,37,0.168138 +34,38,0.168138 +34,39,0.168138 +34,40,0.168138 +34,41,0.168138 +34,42,0.168138 +34,43,0.168138 +34,44,0.168138 +34,45,0.168138 +34,46,0.168138 +34,47,0.168138 +34,48,0.168138 +34,49,0.168138 +35,0,0.168114 +35,1,0.168137 +35,2,0.168138 +35,3,0.168138 +35,4,0.168138 +35,5,0.168138 +35,6,0.168138 +35,7,0.168138 +35,8,0.168138 +35,9,0.168138 +35,10,0.168138 +35,11,0.168138 +35,12,0.168138 +35,13,0.168138 +35,14,0.168138 +35,15,0.168138 +35,16,0.168138 +35,17,0.168138 +35,18,0.168138 +35,19,0.16814 +35,20,0.168143 +35,21,0.168149 +35,22,0.16816 +35,23,0.168174 +35,24,0.168187 +35,25,0.168192 +35,26,0.168187 +35,27,0.168174 +35,28,0.16816 +35,29,0.168149 +35,30,0.168143 +35,31,0.16814 +35,32,0.168138 +35,33,0.168138 +35,34,0.168138 +35,35,0.168138 +35,36,0.168138 +35,37,0.168138 +35,38,0.168138 +35,39,0.168138 +35,40,0.168138 +35,41,0.168138 +35,42,0.168138 +35,43,0.168138 +35,44,0.168138 +35,45,0.168138 +35,46,0.168138 +35,47,0.168138 +35,48,0.168138 +35,49,0.168138 +36,0,0.168114 +36,1,0.168137 +36,2,0.168138 +36,3,0.168138 +36,4,0.168138 +36,5,0.168138 +36,6,0.168138 +36,7,0.168138 +36,8,0.168138 +36,9,0.168138 +36,10,0.168138 +36,11,0.168138 +36,12,0.168138 +36,13,0.168138 +36,14,0.168138 +36,15,0.168138 +36,16,0.168138 +36,17,0.168138 +36,18,0.168138 +36,19,0.168138 +36,20,0.168139 +36,21,0.168139 +36,22,0.168141 +36,23,0.168143 +36,24,0.168144 +36,25,0.168145 +36,26,0.168144 +36,27,0.168143 +36,28,0.168141 +36,29,0.168139 +36,30,0.168139 +36,31,0.168138 +36,32,0.168138 +36,33,0.168138 +36,34,0.168138 +36,35,0.168138 +36,36,0.168138 +36,37,0.168138 +36,38,0.168138 +36,39,0.168138 +36,40,0.168138 +36,41,0.168138 +36,42,0.168138 +36,43,0.168138 +36,44,0.168138 +36,45,0.168138 +36,46,0.168138 +36,47,0.168138 +36,48,0.168138 +36,49,0.168138 +37,0,0.168114 +37,1,0.168137 +37,2,0.168138 +37,3,0.168138 +37,4,0.168138 +37,5,0.168138 +37,6,0.168138 +37,7,0.168138 +37,8,0.168138 +37,9,0.168138 +37,10,0.168138 +37,11,0.168138 +37,12,0.168138 +37,13,0.168138 +37,14,0.168138 +37,15,0.168138 +37,16,0.168138 +37,17,0.168138 +37,18,0.168138 +37,19,0.168138 +37,20,0.168138 +37,21,0.168138 +37,22,0.168138 +37,23,0.168138 +37,24,0.168139 +37,25,0.168139 +37,26,0.168139 +37,27,0.168138 +37,28,0.168138 +37,29,0.168138 +37,30,0.168138 +37,31,0.168138 +37,32,0.168138 +37,33,0.168138 +37,34,0.168138 +37,35,0.168138 +37,36,0.168138 +37,37,0.168138 +37,38,0.168138 +37,39,0.168138 +37,40,0.168138 +37,41,0.168138 +37,42,0.168138 +37,43,0.168138 +37,44,0.168138 +37,45,0.168138 +37,46,0.168138 +37,47,0.168138 +37,48,0.168138 +37,49,0.168138 +38,0,0.168114 +38,1,0.168137 +38,2,0.168138 +38,3,0.168138 +38,4,0.168138 +38,5,0.168138 +38,6,0.168138 +38,7,0.168138 +38,8,0.168138 +38,9,0.168138 +38,10,0.168138 +38,11,0.168138 +38,12,0.168138 +38,13,0.168138 +38,14,0.168138 +38,15,0.168138 +38,16,0.168138 +38,17,0.168138 +38,18,0.168138 +38,19,0.168138 +38,20,0.168138 +38,21,0.168138 +38,22,0.168138 +38,23,0.168138 +38,24,0.168138 +38,25,0.168138 +38,26,0.168138 +38,27,0.168138 +38,28,0.168138 +38,29,0.168138 +38,30,0.168138 +38,31,0.168138 +38,32,0.168138 +38,33,0.168138 +38,34,0.168138 +38,35,0.168138 +38,36,0.168138 +38,37,0.168138 +38,38,0.168138 +38,39,0.168138 +38,40,0.168138 +38,41,0.168138 +38,42,0.168138 +38,43,0.168138 +38,44,0.168138 +38,45,0.168138 +38,46,0.168138 +38,47,0.168138 +38,48,0.168138 +38,49,0.168138 +39,0,0.168114 +39,1,0.168137 +39,2,0.168138 +39,3,0.168138 +39,4,0.168138 +39,5,0.168138 +39,6,0.168138 +39,7,0.168138 +39,8,0.168138 +39,9,0.168138 +39,10,0.168138 +39,11,0.168138 +39,12,0.168138 +39,13,0.168138 +39,14,0.168138 +39,15,0.168138 +39,16,0.168138 +39,17,0.168138 +39,18,0.168138 +39,19,0.168138 +39,20,0.168138 +39,21,0.168138 +39,22,0.168138 +39,23,0.168138 +39,24,0.168138 +39,25,0.168138 +39,26,0.168138 +39,27,0.168138 +39,28,0.168138 +39,29,0.168138 +39,30,0.168138 +39,31,0.168138 +39,32,0.168138 +39,33,0.168138 +39,34,0.168138 +39,35,0.168138 +39,36,0.168138 +39,37,0.168138 +39,38,0.168138 +39,39,0.168138 +39,40,0.168138 +39,41,0.168138 +39,42,0.168138 +39,43,0.168138 +39,44,0.168138 +39,45,0.168138 +39,46,0.168138 +39,47,0.168138 +39,48,0.168138 +39,49,0.168138 +40,0,0.168114 +40,1,0.168137 +40,2,0.168138 +40,3,0.168138 +40,4,0.168138 +40,5,0.168138 +40,6,0.168138 +40,7,0.168138 +40,8,0.168138 +40,9,0.168138 +40,10,0.168138 +40,11,0.168138 +40,12,0.168138 +40,13,0.168138 +40,14,0.168138 +40,15,0.168138 +40,16,0.168138 +40,17,0.168138 +40,18,0.168138 +40,19,0.168138 +40,20,0.168138 +40,21,0.168138 +40,22,0.168138 +40,23,0.168138 +40,24,0.168138 +40,25,0.168138 +40,26,0.168138 +40,27,0.168138 +40,28,0.168138 +40,29,0.168138 +40,30,0.168138 +40,31,0.168138 +40,32,0.168138 +40,33,0.168138 +40,34,0.168138 +40,35,0.168138 +40,36,0.168138 +40,37,0.168138 +40,38,0.168138 +40,39,0.168138 +40,40,0.168138 +40,41,0.168138 +40,42,0.168138 +40,43,0.168138 +40,44,0.168138 +40,45,0.168138 +40,46,0.168138 +40,47,0.168138 +40,48,0.168138 +40,49,0.168138 +41,0,0.168114 +41,1,0.168137 +41,2,0.168138 +41,3,0.168138 +41,4,0.168138 +41,5,0.168138 +41,6,0.168138 +41,7,0.168138 +41,8,0.168138 +41,9,0.168138 +41,10,0.168138 +41,11,0.168138 +41,12,0.168138 +41,13,0.168138 +41,14,0.168138 +41,15,0.168138 +41,16,0.168138 +41,17,0.168138 +41,18,0.168138 +41,19,0.168138 +41,20,0.168138 +41,21,0.168138 +41,22,0.168138 +41,23,0.168138 +41,24,0.168138 +41,25,0.168138 +41,26,0.168138 +41,27,0.168138 +41,28,0.168138 +41,29,0.168138 +41,30,0.168138 +41,31,0.168138 +41,32,0.168138 +41,33,0.168138 +41,34,0.168138 +41,35,0.168138 +41,36,0.168138 +41,37,0.168138 +41,38,0.168138 +41,39,0.168138 +41,40,0.168138 +41,41,0.168138 +41,42,0.168138 +41,43,0.168138 +41,44,0.168138 +41,45,0.168138 +41,46,0.168138 +41,47,0.168138 +41,48,0.168138 +41,49,0.168138 +42,0,0.168114 +42,1,0.168137 +42,2,0.168138 +42,3,0.168138 +42,4,0.168138 +42,5,0.168138 +42,6,0.168138 +42,7,0.168138 +42,8,0.168138 +42,9,0.168138 +42,10,0.168138 +42,11,0.168138 +42,12,0.168138 +42,13,0.168138 +42,14,0.168138 +42,15,0.168138 +42,16,0.168138 +42,17,0.168138 +42,18,0.168138 +42,19,0.168138 +42,20,0.168138 +42,21,0.168138 +42,22,0.168138 +42,23,0.168138 +42,24,0.168138 +42,25,0.168138 +42,26,0.168138 +42,27,0.168138 +42,28,0.168138 +42,29,0.168138 +42,30,0.168138 +42,31,0.168138 +42,32,0.168138 +42,33,0.168138 +42,34,0.168138 +42,35,0.168138 +42,36,0.168138 +42,37,0.168138 +42,38,0.168138 +42,39,0.168138 +42,40,0.168138 +42,41,0.168138 +42,42,0.168138 +42,43,0.168138 +42,44,0.168138 +42,45,0.168138 +42,46,0.168138 +42,47,0.168138 +42,48,0.168138 +42,49,0.168138 +43,0,0.168114 +43,1,0.168137 +43,2,0.168138 +43,3,0.168138 +43,4,0.168138 +43,5,0.168138 +43,6,0.168138 +43,7,0.168138 +43,8,0.168138 +43,9,0.168138 +43,10,0.168138 +43,11,0.168138 +43,12,0.168138 +43,13,0.168138 +43,14,0.168138 +43,15,0.168138 +43,16,0.168138 +43,17,0.168138 +43,18,0.168138 +43,19,0.168138 +43,20,0.168138 +43,21,0.168138 +43,22,0.168138 +43,23,0.168138 +43,24,0.168138 +43,25,0.168138 +43,26,0.168138 +43,27,0.168138 +43,28,0.168138 +43,29,0.168138 +43,30,0.168138 +43,31,0.168138 +43,32,0.168138 +43,33,0.168138 +43,34,0.168138 +43,35,0.168138 +43,36,0.168138 +43,37,0.168138 +43,38,0.168138 +43,39,0.168138 +43,40,0.168138 +43,41,0.168138 +43,42,0.168138 +43,43,0.168138 +43,44,0.168138 +43,45,0.168138 +43,46,0.168138 +43,47,0.168138 +43,48,0.168138 +43,49,0.168138 +44,0,0.168114 +44,1,0.168137 +44,2,0.168138 +44,3,0.168138 +44,4,0.168138 +44,5,0.168138 +44,6,0.168138 +44,7,0.168138 +44,8,0.168138 +44,9,0.168138 +44,10,0.168138 +44,11,0.168138 +44,12,0.168138 +44,13,0.168138 +44,14,0.168138 +44,15,0.168138 +44,16,0.168138 +44,17,0.168138 +44,18,0.168138 +44,19,0.168138 +44,20,0.168138 +44,21,0.168138 +44,22,0.168138 +44,23,0.168138 +44,24,0.168138 +44,25,0.168138 +44,26,0.168138 +44,27,0.168138 +44,28,0.168138 +44,29,0.168138 +44,30,0.168138 +44,31,0.168138 +44,32,0.168138 +44,33,0.168138 +44,34,0.168138 +44,35,0.168138 +44,36,0.168138 +44,37,0.168138 +44,38,0.168138 +44,39,0.168138 +44,40,0.168138 +44,41,0.168138 +44,42,0.168138 +44,43,0.168138 +44,44,0.168138 +44,45,0.168138 +44,46,0.168138 +44,47,0.168138 +44,48,0.168138 +44,49,0.168138 +45,0,0.168114 +45,1,0.168137 +45,2,0.168138 +45,3,0.168138 +45,4,0.168138 +45,5,0.168138 +45,6,0.168138 +45,7,0.168138 +45,8,0.168138 +45,9,0.168138 +45,10,0.168138 +45,11,0.168138 +45,12,0.168138 +45,13,0.168138 +45,14,0.168138 +45,15,0.168138 +45,16,0.168138 +45,17,0.168138 +45,18,0.168138 +45,19,0.168138 +45,20,0.168138 +45,21,0.168138 +45,22,0.168138 +45,23,0.168138 +45,24,0.168138 +45,25,0.168138 +45,26,0.168138 +45,27,0.168138 +45,28,0.168138 +45,29,0.168138 +45,30,0.168138 +45,31,0.168138 +45,32,0.168138 +45,33,0.168138 +45,34,0.168138 +45,35,0.168138 +45,36,0.168138 +45,37,0.168138 +45,38,0.168138 +45,39,0.168138 +45,40,0.168138 +45,41,0.168138 +45,42,0.168138 +45,43,0.168138 +45,44,0.168138 +45,45,0.168138 +45,46,0.168138 +45,47,0.168138 +45,48,0.168138 +45,49,0.168138 +46,0,0.168114 +46,1,0.168137 +46,2,0.168138 +46,3,0.168138 +46,4,0.168138 +46,5,0.168138 +46,6,0.168138 +46,7,0.168138 +46,8,0.168138 +46,9,0.168138 +46,10,0.168138 +46,11,0.168138 +46,12,0.168138 +46,13,0.168138 +46,14,0.168138 +46,15,0.168138 +46,16,0.168138 +46,17,0.168138 +46,18,0.168138 +46,19,0.168138 +46,20,0.168138 +46,21,0.168138 +46,22,0.168138 +46,23,0.168138 +46,24,0.168138 +46,25,0.168138 +46,26,0.168138 +46,27,0.168138 +46,28,0.168138 +46,29,0.168138 +46,30,0.168138 +46,31,0.168138 +46,32,0.168138 +46,33,0.168138 +46,34,0.168138 +46,35,0.168138 +46,36,0.168138 +46,37,0.168138 +46,38,0.168138 +46,39,0.168138 +46,40,0.168138 +46,41,0.168138 +46,42,0.168138 +46,43,0.168138 +46,44,0.168138 +46,45,0.168138 +46,46,0.168138 +46,47,0.168138 +46,48,0.168138 +46,49,0.168138 +47,0,0.168114 +47,1,0.168137 +47,2,0.168138 +47,3,0.168138 +47,4,0.168138 +47,5,0.168138 +47,6,0.168138 +47,7,0.168138 +47,8,0.168138 +47,9,0.168138 +47,10,0.168138 +47,11,0.168138 +47,12,0.168138 +47,13,0.168138 +47,14,0.168138 +47,15,0.168138 +47,16,0.168138 +47,17,0.168138 +47,18,0.168138 +47,19,0.168138 +47,20,0.168138 +47,21,0.168138 +47,22,0.168138 +47,23,0.168138 +47,24,0.168138 +47,25,0.168138 +47,26,0.168138 +47,27,0.168138 +47,28,0.168138 +47,29,0.168138 +47,30,0.168138 +47,31,0.168138 +47,32,0.168138 +47,33,0.168138 +47,34,0.168138 +47,35,0.168138 +47,36,0.168138 +47,37,0.168138 +47,38,0.168138 +47,39,0.168138 +47,40,0.168138 +47,41,0.168138 +47,42,0.168138 +47,43,0.168138 +47,44,0.168138 +47,45,0.168138 +47,46,0.168138 +47,47,0.168138 +47,48,0.168138 +47,49,0.168138 +48,0,0.168114 +48,1,0.168137 +48,2,0.168138 +48,3,0.168138 +48,4,0.168138 +48,5,0.168138 +48,6,0.168138 +48,7,0.168138 +48,8,0.168138 +48,9,0.168138 +48,10,0.168138 +48,11,0.168138 +48,12,0.168138 +48,13,0.168138 +48,14,0.168138 +48,15,0.168138 +48,16,0.168138 +48,17,0.168138 +48,18,0.168138 +48,19,0.168138 +48,20,0.168138 +48,21,0.168138 +48,22,0.168138 +48,23,0.168138 +48,24,0.168138 +48,25,0.168138 +48,26,0.168138 +48,27,0.168138 +48,28,0.168138 +48,29,0.168138 +48,30,0.168138 +48,31,0.168138 +48,32,0.168138 +48,33,0.168138 +48,34,0.168138 +48,35,0.168138 +48,36,0.168138 +48,37,0.168138 +48,38,0.168138 +48,39,0.168138 +48,40,0.168138 +48,41,0.168138 +48,42,0.168138 +48,43,0.168138 +48,44,0.168138 +48,45,0.168138 +48,46,0.168138 +48,47,0.168138 +48,48,0.168138 +48,49,0.168138 +49,0,0.168114 +49,1,0.168137 +49,2,0.168138 +49,3,0.168138 +49,4,0.168138 +49,5,0.168138 +49,6,0.168138 +49,7,0.168138 +49,8,0.168138 +49,9,0.168138 +49,10,0.168138 +49,11,0.168138 +49,12,0.168138 +49,13,0.168138 +49,14,0.168138 +49,15,0.168138 +49,16,0.168138 +49,17,0.168138 +49,18,0.168138 +49,19,0.168138 +49,20,0.168138 +49,21,0.168138 +49,22,0.168138 +49,23,0.168138 +49,24,0.168138 +49,25,0.168138 +49,26,0.168138 +49,27,0.168138 +49,28,0.168138 +49,29,0.168138 +49,30,0.168138 +49,31,0.168138 +49,32,0.168138 +49,33,0.168138 +49,34,0.168138 +49,35,0.168138 +49,36,0.168138 +49,37,0.168138 +49,38,0.168138 +49,39,0.168138 +49,40,0.168138 +49,41,0.168138 +49,42,0.168138 +49,43,0.168138 +49,44,0.168138 +49,45,0.168138 +49,46,0.168138 +49,47,0.168138 +49,48,0.168138 +49,49,0.168138 diff --git a/examples/pfhubbenchmark-8 b/examples/pfhubbenchmark-8 new file mode 160000 index 0000000..9bd6b7b --- /dev/null +++ b/examples/pfhubbenchmark-8 @@ -0,0 +1 @@ +Subproject commit 9bd6b7b7f549fd9a643e457ca8cd1b09a4c4ea34 diff --git a/include/MMSP.grid.cpp b/include/MMSP.grid.cpp index 94debbb..d2c95b3 100644 --- a/include/MMSP.grid.cpp +++ b/include/MMSP.grid.cpp @@ -2156,6 +2156,26 @@ template MMSP::vector gradient(const grid& GRID return gradient; } +template MMSP::vector gradientsq(const grid& GRID, const vector& x) +{ + vector gradientsq(dim); + vector s = x; + + const T& y = GRID(x); + + for (int i=0; i MMSP::vector gradient(const grid >& GRID, const vector& x, const int field) { vector gradient(dim); diff --git a/include/MMSP.grid.h b/include/MMSP.grid.h index bb6c337..6c9e779 100644 --- a/include/MMSP.grid.h +++ b/include/MMSP.grid.h @@ -508,6 +508,8 @@ template vector gradient(const grid& GRID, cons template vector gradient(const grid >& GRID, const vector& x, const int field); +template vector gradientsq(const grid& GRID, const vector& x); + template vector grad(const grid& GRID, const vector& x); template T divergence(const grid& GRID, const vector& x); diff --git a/utility/Makefile b/utility/Makefile index 05040c5..31f36e5 100644 --- a/utility/Makefile +++ b/utility/Makefile @@ -37,6 +37,14 @@ mmsp2pvd : mmsp2pvd.cpp ../include/MMSP.output.h mmsp2tsv : mmsp2tsv.cpp $(compiler) $(flags) $< -o $@ -lz +# convert MMSP grid file to comma-delimited ASCII (CSV) file type +mmsp2csv : mmsp2csv.cpp + $(compiler) $(flags) $< -o $@ -lz + +# convert MMSP grid file to comma-delimited ASCII (TXT) file type +mmsp2txt : mmsp2txt.cpp + $(compiler) $(flags) $< -o $@ -lz + # convert MMSP grid file to compressed VTK Image file type mmsp2vti : mmsp2vti.cpp ../include/MMSP.output.h $(compiler) $(vtkflags) $< -o $@ $(VTK_LNK) -lz diff --git a/utility/mmsp2csv.cpp b/utility/mmsp2csv.cpp new file mode 100644 index 0000000..9eaf8ac --- /dev/null +++ b/utility/mmsp2csv.cpp @@ -0,0 +1,680 @@ +// mmsp2csv.cpp +// Convert MMSP grid data to comma-delimited ASCII format (CSV) +// Questions/comments to trevor.keller@gmail.com (Trevor Keller) and arupad@gmail.com (Arun Baskaran) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include"MMSP.hpp" + +template void convert_scalars(const MMSP::grid& GRID, std::ofstream& csvfil); + +template void convert_vectors(const MMSP::grid >& GRID, std::ofstream& csvfil); + +template void convert_sparses(const MMSP::grid >& GRID, std::ofstream& csvfil); + +int main(int argc, char* argv[]) +{ + // command line error check + if (argc < 2) { + std::cout << "Usage: " << argv[0] << " [--help] --contour=n,a[,b,...] [--normal] [--mag|--field|--exclude] infile [outfile]\n"; + std::exit(-1); + } + + // help diagnostic + if (std::string(argv[1]) == "--help") { + std::cout << argv[0] << ": convert MMSP grid data to comma-delimited ASCII (CSV) format.\n"; + std::cout << "Usage: " << argv[0] << " [--help] infile [outfile]\n\n"; + std::cout << "Examples: " << argv[0] << " --help\n" + << " displays this message.\n"; + std::cout << " " << argv[0] << " input.dat\n" + << " converts grid data from input.dat into input.csv.\n"; + std::cout << "Questions/comments to trevor.keller@gmail.com (Trevor Keller).\n"; + std::exit(0); + } + + // file open error check + std::ifstream input(argv[1]); + if (!input) { + std::cerr << "File input error: could not open " << argv[1] << ".\n"; + exit(-1); + } + + // read data type + std::string type; + getline(input, type, '\n'); + + // grid type error check + if (type.substr(0, 4) != "grid") { + std::cerr << "File input error: file does not contain grid data." << std::endl; + exit(-1); + } + + // parse data type + bool bool_type = (type.find("bool") != std::string::npos); + bool char_type = (type.find("char") != std::string::npos); + bool unsigned_char_type = (type.find("unsigned char") != std::string::npos); + bool int_type = (type.find("int") != std::string::npos); + bool unsigned_int_type = (type.find("unsigned int") != std::string::npos); + bool long_type = (type.find("long") != std::string::npos); + bool unsigned_long_type = (type.find("unsigned long") != std::string::npos); + bool short_type = (type.find("short") != std::string::npos); + bool unsigned_short_type = (type.find("unsigned short") != std::string::npos); + bool float_type = (type.find("float") != std::string::npos); + bool double_type = (type.find("double") != std::string::npos); + bool long_double_type = (type.find("long double") != std::string::npos); + + bool scalar_type = (type.find("scalar") != std::string::npos); + bool vector_type = (type.find("vector") != std::string::npos); + bool sparse_type = (type.find("sparse") != std::string::npos); + + if (not bool_type and + not char_type and not unsigned_char_type and + not int_type and not unsigned_int_type and + not long_type and not unsigned_long_type and + not short_type and not unsigned_short_type and + not float_type and + not double_type and not long_double_type) { + std::cerr << "File input error: unknown grid data type." << std::endl; + exit(-1); + } + + // generate output file name + std::stringstream csvname; + if (argc==2) { + std::string datname(argv[1]); + int extpos = datname.find_last_of("."); + if (datname.find_first_of("0123456789",extpos) != std::string::npos) + csvname << datname << ".csv"; + else + csvname << datname.substr(0, extpos) << ".csv"; + } else + csvname << argv[2]; + + // Open output file + std::ofstream csvfil(csvname.str().c_str()); + + // read grid dimension + int dim; + input >> dim; + if (dim < 1 or dim > 3) { + std::cerr << "File input error: grid dimension must be 1, 2, or 3." << std::endl; + exit(-1); + } + + // read number of fields + int fields; + input >> fields; + + // read grid sizes + int x0[3] = {0, 0, 0}; + int x1[3] = {0, 0, 0}; + for (int d=0; d> x0[d] >> x1[d]; + + // read cell spacing + float dx[3] = {1.0, 1.0, 1.0}; + for (int d=0; d> dx[d]; + + // ignore trailing endlines + input.ignore(10, '\n'); + + // write grid data + if (scalar_type or (not vector_type and not sparse_type)) { // must be scalar or built-in + if (bool_type) { + if (dim == 1) { + MMSP::grid<1,bool> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,bool> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,bool> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (unsigned_char_type) { + if (dim == 1) { + MMSP::grid<1,unsigned char> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,unsigned char> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,unsigned char> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (char_type) { + if (dim == 1) { + MMSP::grid<1,char> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,char> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,char> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (unsigned_int_type) { + if (dim == 1) { + MMSP::grid<1,unsigned int> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,unsigned int> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,unsigned int> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (int_type) { + if (dim == 1) { + MMSP::grid<1,int> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,int> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,int> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (unsigned_long_type) { + if (dim == 1) { + MMSP::grid<1,unsigned long> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,unsigned long> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,unsigned long> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (long_type) { + if (dim == 1) { + MMSP::grid<1,long> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,long> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,long> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (unsigned_short_type) { + if (dim == 1) { + MMSP::grid<1,unsigned short> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,unsigned short> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,unsigned short> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (short_type) { + if (dim == 1) { + MMSP::grid<1,short> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,short> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,short> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (float_type) { + if (dim == 1) { + MMSP::grid<1,float> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,float> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,float> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (long_double_type) { + if (dim == 1) { + MMSP::grid<1,long double> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,long double> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,long double> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + else if (double_type) { + if (dim == 1) { + MMSP::grid<1,double> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,double> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,double> GRID(argv[1]); + convert_scalars(GRID, csvfil); + } + } + } + + else if (vector_type) { + if (bool_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (unsigned_char_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (char_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (unsigned_int_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (int_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (unsigned_long_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (long_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (unsigned_short_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (short_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (float_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (long_double_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + else if (double_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::vector > GRID(argv[1]); + convert_vectors(GRID, csvfil); + } + } + } + + else if (sparse_type) { + if (bool_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (unsigned_char_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (char_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (unsigned_int_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (int_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (unsigned_long_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (long_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (unsigned_short_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (short_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (float_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (long_double_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + else if (double_type) { + if (dim == 1) { + MMSP::grid<1,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 2) { + MMSP::grid<2,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + else if (dim == 3) { + MMSP::grid<3,MMSP::sparse > GRID(argv[1]); + convert_sparses(GRID, csvfil); + } + } + } + + return 0; +} + +template void convert_scalars(const MMSP::grid& GRID, std::ofstream& csvfil) +{ + for (int n=0; n x=MMSP::position(GRID,n); + csvfil << dx(GRID,0)*x[0]; + for (int d=1; d void convert_vectors(const MMSP::grid >& GRID, std::ofstream& csvfil) +{ + for (int n=0; n x=MMSP::position(GRID,n); + csvfil << dx(GRID,0)*x[0]; + for (int d=1; d void convert_sparses(const MMSP::grid >& GRID, std::ofstream& csvfil) +{ + for (int n=0; n x=MMSP::position(GRID,n); + csvfil << dx(GRID,0)*x[0]; + for (int d=1; d