git-svn-id: svn://db.shs.com.ru/pip@340 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
16
main.cpp
16
main.cpp
@@ -41,13 +41,19 @@ int asize(ssize_t s, size_t pid_rsize) {
|
|||||||
return (1 << t);
|
return (1 << t);
|
||||||
}
|
}
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
PIFFTWf fft;
|
PIDeque<double> in;
|
||||||
PIVector<float> in;
|
for (int i = 0; i < 5; ++i)
|
||||||
|
in << i%10;
|
||||||
|
/*PIFFTWd fft;
|
||||||
|
fft.preparePlan(50, PIFFTWd::foReal);
|
||||||
|
PIVector<complexd> out = fft.calcFFT(in);*/
|
||||||
|
piCout << in.data();
|
||||||
|
in.align();
|
||||||
|
piCout << in.data();
|
||||||
|
in = PIDeque<double>();
|
||||||
for (int i = 0; i < 50; ++i)
|
for (int i = 0; i < 50; ++i)
|
||||||
in << i%10;
|
in << i%10;
|
||||||
fft.preparePlan(50, PIFFTWf::foReal);
|
piCout << in.data();
|
||||||
PIVector<complexf> out = fft.calcFFT(in);
|
|
||||||
piCout << out;
|
|
||||||
/*for (int i = 0; i < 16; ++i) {
|
/*for (int i = 0; i < 16; ++i) {
|
||||||
piCout << asize(i, 100);
|
piCout << asize(i, 100);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -217,6 +217,18 @@ public:
|
|||||||
pid_size = os;
|
pid_size = os;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
PIDeque<T> & align() {
|
||||||
|
//printf("align %p\n", pid_data);
|
||||||
|
if (!pid_data) return *this;
|
||||||
|
T * p_d = (T*)(amalloc(pid_rsize*sizeof(T)));
|
||||||
|
//printf("alloc %p\n", p_d);
|
||||||
|
assert(p_d);
|
||||||
|
memcpy(p_d, pid_data, pid_size*sizeof(T));
|
||||||
|
free((uchar*)pid_data);
|
||||||
|
pid_data = p_d;
|
||||||
|
//printf("%p\n", p_d);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
PIDeque<T> & insert(size_t index, const T & v = T()) {
|
PIDeque<T> & insert(size_t index, const T & v = T()) {
|
||||||
bool dir = pid_rsize <= 2 ? true : (index >= pid_rsize / 2 ? true : false);
|
bool dir = pid_rsize <= 2 ? true : (index >= pid_rsize / 2 ? true : false);
|
||||||
|
|||||||
@@ -93,10 +93,12 @@
|
|||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
# include <windef.h>
|
# include <windef.h>
|
||||||
# include <winbase.h>
|
# include <winbase.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
|
# include <malloc.h>
|
||||||
# ifdef CC_VC
|
# ifdef CC_VC
|
||||||
# define SHUT_RDWR 2
|
# define SHUT_RDWR 2
|
||||||
# pragma comment(lib, "Ws2_32.lib")
|
# pragma comment(lib, "Ws2_32.lib")
|
||||||
@@ -112,6 +114,21 @@
|
|||||||
inline int random() {return rand();}
|
inline int random() {return rand();}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIP_MEMALIGN_BYTES
|
||||||
|
# define PIP_MEMALIGN_BYTES (sizeof(void*)*4)
|
||||||
|
#endif
|
||||||
|
#ifdef WINDOWS
|
||||||
|
# ifdef CC_GCC
|
||||||
|
# define amalloc(s) __mingw_aligned_malloc(s, PIP_MEMALIGN_BYTES)
|
||||||
|
# else
|
||||||
|
# ifdef CC_VC
|
||||||
|
# define amalloc(s) _aligned_malloc(s, PIP_MEMALIGN_BYTES)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define amalloc(s) aligned_alloc(PIP_MEMALIGN_BYTES, s)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
# define tcdrain(fd) ioctl(fd, TCSBRK, 1)
|
# define tcdrain(fd) ioctl(fd, TCSBRK, 1)
|
||||||
//inline int wctomb(char * c, wchar_t w) {*c = ((char * )&w)[0]; return 1;}
|
//inline int wctomb(char * c, wchar_t w) {*c = ((char * )&w)[0]; return 1;}
|
||||||
|
|||||||
@@ -121,8 +121,8 @@ inline int sign(const float & x) {return (x < 0.) ? -1 : (x > 0. ? 1 : 0);}
|
|||||||
inline int sign(const double & x) {return (x < 0.) ? -1 : (x > 0. ? 1 : 0);}
|
inline int sign(const double & x) {return (x < 0.) ? -1 : (x > 0. ? 1 : 0);}
|
||||||
inline complexd sign(const complexd & x) {return complexd(sign(x.real()), sign(x.imag()));}
|
inline complexd sign(const complexd & x) {return complexd(sign(x.real()), sign(x.imag()));}
|
||||||
inline int pow2(const int p) {return 1 << p;}
|
inline int pow2(const int p) {return 1 << p;}
|
||||||
inline double sqr(const int v) {return v * v;}
|
inline int sqr(const int v) {return v * v;}
|
||||||
inline double sqr(const float & v) {return v * v;}
|
inline float sqr(const float & v) {return v * v;}
|
||||||
inline double sqr(const double & v) {return v * v;}
|
inline double sqr(const double & v) {return v * v;}
|
||||||
inline double sinc(const double & v) {if (v == 0.) return 1.; double t = M_PI * v; return sin(t) / t;}
|
inline double sinc(const double & v) {if (v == 0.) return 1.; double t = M_PI * v; return sin(t) / t;}
|
||||||
inline complexd round(const complexd & c) {return complexd(piRound<double>(c.real()), piRound<double>(c.imag()));}
|
inline complexd round(const complexd & c) {return complexd(piRound<double>(c.real()), piRound<double>(c.imag()));}
|
||||||
|
|||||||
Reference in New Issue
Block a user