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);
|
||||
}
|
||||
int main(int argc, char *argv[]) {
|
||||
PIFFTWf fft;
|
||||
PIVector<float> in;
|
||||
PIDeque<double> 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)
|
||||
in << i%10;
|
||||
fft.preparePlan(50, PIFFTWf::foReal);
|
||||
PIVector<complexf> out = fft.calcFFT(in);
|
||||
piCout << out;
|
||||
piCout << in.data();
|
||||
/*for (int i = 0; i < 16; ++i) {
|
||||
piCout << asize(i, 100);
|
||||
}
|
||||
|
||||
@@ -217,6 +217,18 @@ public:
|
||||
pid_size = os;
|
||||
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()) {
|
||||
bool dir = pid_rsize <= 2 ? true : (index >= pid_rsize / 2 ? true : false);
|
||||
|
||||
@@ -93,10 +93,12 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef WINDOWS
|
||||
# include <windef.h>
|
||||
# include <winbase.h>
|
||||
# include <stdlib.h>
|
||||
# include <malloc.h>
|
||||
# ifdef CC_VC
|
||||
# define SHUT_RDWR 2
|
||||
# pragma comment(lib, "Ws2_32.lib")
|
||||
@@ -112,6 +114,21 @@
|
||||
inline int random() {return rand();}
|
||||
#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
|
||||
# define tcdrain(fd) ioctl(fd, TCSBRK, 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 complexd sign(const complexd & x) {return complexd(sign(x.real()), sign(x.imag()));}
|
||||
inline int pow2(const int p) {return 1 << p;}
|
||||
inline double sqr(const int v) {return v * v;}
|
||||
inline double sqr(const float & v) {return v * v;}
|
||||
inline int sqr(const int v) {return v * v;}
|
||||
inline float sqr(const float & 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 complexd round(const complexd & c) {return complexd(piRound<double>(c.real()), piRound<double>(c.imag()));}
|
||||
|
||||
Reference in New Issue
Block a user