亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cfft.cpp

?? The Spectral Toolkit is a C++ spectral transform library written by Rodney James and Chuck Panaccion
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//// spectral toolkit // copyright (c) 2005 university corporation for atmospheric research// licensed under the gnu general public license//#include "cfft.h"using namespace spectral;/// Complex FFT constructor.  Creates complex FFT object for sequence of length N./// \param N length of transform/// \throws bad_parameter if N<2cfft::cfft(int N){  if(N<2)    throw bad_parameter();  n=N;  work=new complex[n];  top=new node(n,1,1);}/// Complex FFT destructor.cfft::~cfft(){  delete [] work;  delete top;}/// Internal complex FFT radix object.  Recursively defined linked list object contains/// butterfly rotation seeds for each factor./// \param m length of subsequence from factor down/// \param L accumlation product of previous factors/// \param parity even/odd position of factorcfft::node::node(int m,int L,bool parity){  odd=parity;  r=factor(m);  m=m/r;  real angle=-2.0*pi/((real)(L*r));  omega.re=-2.0*std::sin(0.5*angle)*std::sin(0.5*angle);  omega.im=std::sin(angle);  switch(r)    {    case 2:    case 3:    case 4:    case 5:    case 6:    case 8:      break;    default:      R=new complex[r];      T=new complex[r];      for(int k=0;k<r;k++)	{	  angle=-((real)k)*(2.0*pi/(real)r);	  R[k].re=std::cos(angle);	  R[k].im=std::sin(angle);	}      break;    }  L=L*r;  if(m>1)    next=new node(m,L,!parity);  else    next=0;}/// Internal factorization routine.int cfft::node::factor(int m){  if(m%8==0&&m!=16)    return(8);   else if(m%6==0)    return(6);  else if(m%5==0)    return(5);  else if(m%4==0)    return(4);  else if(m%3==0)    return(3);  else if(m%2==0)    return(2);  else    for(int f=7;f*f<=m;f+=2)      if(m%f==0)	return(f);  return(m);}/// Internal radix object destructor.cfft::node::~node(){  if(next==0)    switch(r)      {      case 2:      case 3:      case 4:      case 5:      case 6:      case 8:	break;      default:	delete [] T;	delete [] R;	break;      }  else    delete next;}/// Multiple instance forward transform./// \param a array of pointers to sequences to transform/// \param M number of sequences to transform/// \param P offset (from the default zero) of first sequence in array void cfft::analysis(complex **a,int M,int P){  if((M<1)||(P<0))    throw bad_parameter();  for(int i=P;i<P+M;i++)    top->analysis(a[i],work,1,n);}/// Multiple instance backward transform./// \param a array of pointers to sequences to transform/// \param M number of sequences to transform/// \param P offset (from the default zero) of first sequence in array void cfft::synthesis(complex **a,int M,int P){  if((M<1)||(P<0))    throw bad_parameter();  for(int i=P;i<P+M;i++)    top->synthesis(a[i],work,1,n);}/// Multiple instance forward transform./// \param a array of contiguous sequences to transform/// \param M number of sequences to transform/// \param stride distance between each sequence (must be at least n)void cfft::analysis(complex *a,int M,int stride){  if((M<1)||(stride<n))    throw bad_parameter();  for(int i=0;i<M;i++)    top->analysis(a+i*stride,work,1,n);}/// Multiple instance backward transform./// \param a array of contiguous sequences to transform/// \param M number of sequences to transform/// \param stride distance between each sequence (must be at least n)void cfft::synthesis(complex *a,int M,int stride){  if((M<1)||(stride<n))    throw bad_parameter();  for(int i=0;i<M;i++)    top->synthesis(a+i*stride,work,1,n);}/// Forward transform.  Computes the Fourier coefficients/// \f[ \hat{a}_k = \sum_{n=0}^{N-1} a_n e^{-2 \pi i k n/N} \f]/// for \f$ k=0 \ldots N-1 \f$ for a sequence of complex numbers./// The wavenumbers are stored in the standard manner as/// \f[ k=\{0,1,\ldots ,\lfloor n/2 \rfloor -1,- \lfloor n/2 \rfloor ,\ldots ,-1\}. \f]/// \param a sequence to transform in-place/// \sa wavenumbervoid cfft::analysis(complex *a){  top->analysis(a,work,1,n);}/// Backward transform.  Computes the sequence values/// \f[ a_n = \sum_{k=0}^{N-1} \hat{a}_k e^{2 \pi i k n/N} \f]/// for \f$ n=0 \ldots N-1 \f$ from the Fourier coefficients./// \param a sequence to transform in-placevoid cfft::synthesis(complex *a){  top->synthesis(a,work,1,n);}/// Internal recursive radix-node butterfly forward transform driver./// \param in input array/// \param out output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::analysis(complex *in,complex *out,int L,int N){  N=N/r;  if(!next&&odd)    out=in;  switch(r)    {    case 2:      analysis_radix2(in,out,L,N);      break;    case 3:      analysis_radix3(in,out,L,N);      break;    case 4:      analysis_radix4(in,out,L,N);      break;    case 5:      analysis_radix5(in,out,L,N);      break;    case 6:      analysis_radix6(in,out,L,N);      break;    case 8:      analysis_radix8(in,out,L,N);      break;    default:      analysis_radixg(in,out,L,N);      break;    }  L=L*r;  if(next)    next->analysis(out,in,L,N);}/// Internal recursive radix-node butterfly backward transform driver./// \param in input array/// \param out output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::synthesis(complex *in,complex *out,int L,int N){  N=N/r;  if(!next&&odd)    out=in;  switch(r)    {    case 2:      synthesis_radix2(in,out,L,N);      break;    case 3:      synthesis_radix3(in,out,L,N);      break;    case 4:      synthesis_radix4(in,out,L,N);      break;    case 5:      synthesis_radix5(in,out,L,N);      break;    case 6:      synthesis_radix6(in,out,L,N);      break;    case 8:      synthesis_radix8(in,out,L,N);      break;    default:      synthesis_radixg(in,out,L,N);      break;    }  L=L*r;  if(next)    next->synthesis(out,in,L,N);}/// Internal radix-2 butterfly forward transform./// \param x input array/// \param y output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::analysis_radix2(complex *x,complex *y,int L,int N){  complex w;  complex t0,t1;  complex *x0,*x1;  complex *y0,*y1;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x+N*L+j*L;      y0=y+j*2*L;      y1=y+L+j*2*L;      w.re=1.0;      w.im=0.0;      for(int i=0;i<L;i++)        {	  t0.re=x0[i].re;	  t0.im=x0[i].im;	  t1.re=w.re*x1[i].re-w.im*x1[i].im;	  t1.im=w.re*x1[i].im+w.im*x1[i].re;	  y0[i].re=t0.re+t1.re;	  y0[i].im=t0.im+t1.im;	  y1[i].re=t0.re-t1.re;	  y1[i].im=t0.im-t1.im;	  t1.re=omega.re*w.re-omega.im*w.im+w.re;	  t1.im=omega.re*w.im+omega.im*w.re+w.im; 	  w.re=t1.re;	  w.im=t1.im;        }    }}  /// Internal radix-2 butterfly backward transform./// \param x input array/// \param y output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::synthesis_radix2(complex *x,complex *y,int L,int N){  complex w;  complex t0,t1;  complex *x0,*x1;  complex *y0,*y1;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x+N*L+j*L;      y0=y+j*2*L;      y1=y+L+j*2*L;      w.re=1.0;      w.im=0.0;      for(int i=0;i<L;i++)        {	  t0.re=x0[i].re;	  t0.im=x0[i].im;	  t1.re=w.re*x1[i].re-w.im*x1[i].im;	  t1.im=w.re*x1[i].im+w.im*x1[i].re;	  y0[i].re=t0.re+t1.re;	  y0[i].im=t0.im+t1.im;	  y1[i].re=t0.re-t1.re;	  y1[i].im=t0.im-t1.im;	  t1.re=omega.re*w.re+omega.im*w.im+w.re;	  t1.im=omega.re*w.im-omega.im*w.re+w.im; 	  w.re=t1.re;	  w.im=t1.im;        }    }}  /// Internal radix-3 butterfly forward transform./// \param x input array/// \param y output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::analysis_radix3(complex *x,complex *y,int L,int N){  complex w,w2;  complex t0,t1,t2;  complex z0,z1;  const real a=-0.5L;  const real b= 0.5L*root3;  complex *x0,*x1,*x2;  complex *y0,*y1,*y2;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x0+N*L;      x2=x1+N*L;      y0=y+3*L*j;      y1=y0+L;      y2=y1+L;      w.re=1.0;      w.im=0.0;      for(int i=0;i<L;i++)        {	  w2.re=w.re*w.re-w.im*w.im;	  w2.im=2.0*w.re*w.im;	  t0.re=x0[i].re;	  t0.im=x0[i].im;	  t1.re=w.re*x1[i].re-w.im*x1[i].im;	  t1.im=w.re*x1[i].im+w.im*x1[i].re;	  t2.re=w2.re*x2[i].re-w2.im*x2[i].im;	  t2.im=w2.re*x2[i].im+w2.im*x2[i].re;	  z0.re=t0.re+a*(t1.re+t2.re);	  z0.im=      b*(t1.im-t2.im);	  z1.re=t0.im+a*(t1.im+t2.im);	  z1.im=      b*(t2.re-t1.re);	  y0[i].re=t0.re+t1.re+t2.re;	  y0[i].im=t0.im+t1.im+t2.im;	  y1[i].re=z0.re+z0.im;	  y1[i].im=z1.re+z1.im;	  y2[i].re=z0.re-z0.im;	  y2[i].im=z1.re-z1.im;	  t1.re=omega.re*w.re-omega.im*w.im+w.re;	  t1.im=omega.re*w.im+omega.im*w.re+w.im; 	  w.re=t1.re;	  w.im=t1.im;        }    }}  /// Internal radix-3 butterfly backward transform./// \param x input array/// \param y output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::synthesis_radix3(complex *x,complex *y,int L,int N){  complex w,w2;  complex t0,t1,t2;  complex z0,z1;  const real a=-0.5L;  const real b= 0.5L*root3;  complex *x0,*x1,*x2;  complex *y0,*y1,*y2;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x0+N*L;      x2=x1+N*L;      y0=y+3*L*j;      y1=y0+L;      y2=y1+L;      w.re=1.0;      w.im=0.0;      for(int i=0;i<L;i++)        {	  w2.re=w.re*w.re-w.im*w.im;	  w2.im=2.0*w.re*w.im;	  t0.re=x0[i].re;	  t0.im=x0[i].im;	  t1.re=w.re*x1[i].re-w.im*x1[i].im;	  t1.im=w.re*x1[i].im+w.im*x1[i].re;	  t2.re=w2.re*x2[i].re-w2.im*x2[i].im;	  t2.im=w2.re*x2[i].im+w2.im*x2[i].re;	  z0.re=t0.re+a*(t1.re+t2.re);	  z0.im=      b*(t2.im-t1.im);	  z1.re=t0.im+a*(t1.im+t2.im);	  z1.im=      b*(t1.re-t2.re);	  y0[i].re=t0.re+t1.re+t2.re;	  y0[i].im=t0.im+t1.im+t2.im;	  y1[i].re=z0.re+z0.im;	  y1[i].im=z1.re+z1.im;	  y2[i].re=z0.re-z0.im;	  y2[i].im=z1.re-z1.im;	  t1.re=omega.re*w.re+omega.im*w.im+w.re;	  t1.im=omega.re*w.im-omega.im*w.re+w.im; 	  w.re=t1.re;	  w.im=t1.im;        }    }}  /// Internal radix-4 butterfly forward transform./// \param x input array/// \param y output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::analysis_radix4(complex *x,complex *y,int L,int N){  complex w1,w2,w3;  complex t0,t1,t2,t3;  complex s0,s1,s2,s3;  complex *x0,*x1,*x2,*x3;  complex *y0,*y1,*y2,*y3;      for(int j=0;j<N;j++)    {       x0=x+j*L;      x1=x0+L*N;      x2=x1+L*N;      x3=x2+L*N;      y0=y+4*L*j;      y1=y0+L;      y2=y1+L;      y3=y2+L;      t0.re=x0[0].re;      t0.im=x0[0].im;      t1.re=x1[0].re;      t1.im=x1[0].im;      t2.re=x2[0].re;      t2.im=x2[0].im;      t3.re=x3[0].re;      t3.im=x3[0].im;      s0.re=t0.re+t2.re;      s0.im=t0.im+t2.im;      s1.re=t0.re-t2.re;      s1.im=t0.im-t2.im;      s2.re=t1.re+t3.re;      s2.im=t1.im+t3.im;      s3.re=t1.re-t3.re;      s3.im=t1.im-t3.im;      y0[0].re = s0.re+s2.re;      y0[0].im = s0.im+s2.im;      y1[0].re = s1.re+s3.im;      y1[0].im = s1.im-s3.re;      y2[0].re = s0.re-s2.re;      y2[0].im = s0.im-s2.im;      y3[0].re = s1.re-s3.im;      y3[0].im = s1.im+s3.re;      w1.re=omega.re+1.0;      w1.im=omega.im;      for(int i=1;i<L;i++)        {	  w2.re = w1.re*w1.re-w1.im*w1.im;	  w2.im = 2.0*w1.re*w1.im;	  w3.re = w2.re*w1.re-w2.im*w1.im;	  w3.im = w2.re*w1.im+w2.im*w1.re; 	  t0.re = x0[i].re;	  t0.im = x0[i].im;	  t1.re = w1.re*x1[i].re-w1.im*x1[i].im;	  t1.im = w1.re*x1[i].im+w1.im*x1[i].re;	  t2.re = w2.re*x2[i].re-w2.im*x2[i].im;	  t2.im = w2.re*x2[i].im+w2.im*x2[i].re;	  t3.re = w3.re*x3[i].re-w3.im*x3[i].im;	  t3.im = w3.re*x3[i].im+w3.im*x3[i].re;	  s0.re=t0.re+t2.re;	  s0.im=t0.im+t2.im;	  s1.re=t0.re-t2.re;	  s1.im=t0.im-t2.im;	  s2.re=t1.re+t3.re;	  s2.im=t1.im+t3.im;	  s3.re=t1.re-t3.re;	  s3.im=t1.im-t3.im;	  y0[i].re = s0.re+s2.re;	  y0[i].im = s0.im+s2.im;	  y1[i].re = s1.re+s3.im;	  y1[i].im = s1.im-s3.re;	  y2[i].re = s0.re-s2.re;	  y2[i].im = s0.im-s2.im;	  y3[i].re = s1.re-s3.im;	  y3[i].im = s1.im+s3.re;	  t1.re=omega.re*w1.re-w1.im*omega.im+w1.re;	  t1.im=omega.re*w1.im+w1.re*omega.im+w1.im;	  w1.re=t1.re;	  w1.im=t1.im;        }    }}  /// Internal radix-4 butterfly backward transform./// \param x input array/// \param y output array/// \param L accumulation product of previous factors/// \param N remaining sequence length from node downvoid cfft::node::synthesis_radix4(complex *x,complex *y,int L,int N){  complex w1,w2,w3;  complex t0,t1,t2,t3;  complex s0,s1,s2,s3;  complex *x0,*x1,*x2,*x3;  complex *y0,*y1,*y2,*y3;      for(int j=0;j<N;j++)    {       x0=x+j*L;      x1=x0+L*N;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99国内精品| 亚洲午夜久久久久久久久久久| 国产精品沙发午睡系列990531| 亚洲小说欧美激情另类| 欧美一三区三区四区免费在线看| 久久久久久一级片| 蜜臀久久久久久久| 91精品1区2区| 亚洲人成亚洲人成在线观看图片| 麻豆91免费看| 3atv一区二区三区| 亚洲免费av高清| 成人99免费视频| 久久理论电影网| 国内精品在线播放| 精品国产乱码久久久久久久久| 亚洲一区二区三区视频在线| 97se狠狠狠综合亚洲狠狠| 精品免费视频一区二区| 视频一区二区欧美| 欧美视频完全免费看| 亚洲男人的天堂一区二区| bt7086福利一区国产| 国产精品嫩草99a| 国产综合成人久久大片91| 欧美一区二区在线看| 午夜电影久久久| 欧美性猛交xxxx乱大交退制版 | 亚洲色图.com| www.亚洲在线| 国产精品福利av| 99久久精品国产一区| 中文字幕国产精品一区二区| 国产高清一区日本| 国产视频一区在线观看| 国产91精品久久久久久久网曝门 | 欧美日韩国产电影| 午夜精品久久久久久久久| 欧美日韩五月天| 日韩中文字幕91| 欧美一区三区二区| 国产一区二区精品久久| 久久久欧美精品sm网站| 成人黄色777网| 综合久久国产九一剧情麻豆| 91欧美一区二区| 亚洲国产色一区| 日韩精品一区二区三区中文精品| 黄页网站大全一区二区| 国产精品欧美一区喷水| 色综合天天综合狠狠| 91同城在线观看| 夜夜操天天操亚洲| 精品国产伦一区二区三区免费| 国产米奇在线777精品观看| 中文字幕成人av| 在线亚洲+欧美+日本专区| 婷婷亚洲久悠悠色悠在线播放| 精品少妇一区二区| av电影在线观看一区| 婷婷开心激情综合| 久久久三级国产网站| 91丨九色丨国产丨porny| 亚洲高清免费观看高清完整版在线观看| 欧美剧情电影在线观看完整版免费励志电影| 男女男精品视频网| 国产精品妹子av| 777奇米成人网| 成人丝袜18视频在线观看| 亚洲一级不卡视频| 国产欧美一区二区三区网站 | 亚洲在线视频免费观看| 日韩欧美一区二区免费| 成人三级伦理片| 一区二区在线观看不卡| 久久亚洲私人国产精品va媚药| 91在线看国产| 蜜臀av一级做a爰片久久| 国产精品少妇自拍| 欧美日韩欧美一区二区| 成人午夜激情在线| 蜜臀av性久久久久蜜臀aⅴ| 国产精品二区一区二区aⅴ污介绍| 91精品国产黑色紧身裤美女| 91视视频在线观看入口直接观看www | 日韩av不卡在线观看| 国产精品成人一区二区三区夜夜夜 | 成人综合婷婷国产精品久久蜜臀| 夜夜亚洲天天久久| 中文字幕精品一区二区精品绿巨人 | 国产精品三级久久久久三级| 制服.丝袜.亚洲.中文.综合| 成人黄页毛片网站| 激情综合色综合久久综合| 亚洲乱码精品一二三四区日韩在线| 精品少妇一区二区| 日韩三级视频中文字幕| 日本韩国欧美在线| 不卡的电影网站| 激情五月激情综合网| 石原莉奈在线亚洲二区| 亚洲免费观看在线视频| 国产精品剧情在线亚洲| 久久精品人人做人人综合 | 欧美日韩精品三区| 在线亚洲免费视频| 91成人在线免费观看| aaa欧美日韩| av成人免费在线| av亚洲精华国产精华精华| 成人高清免费观看| 成人午夜在线视频| 成人国产视频在线观看 | 韩国三级中文字幕hd久久精品| 午夜久久久影院| 亚洲777理论| 亚洲电影你懂得| 亚洲一区中文在线| 亚洲制服欧美中文字幕中文字幕| 自拍偷拍欧美激情| 亚洲资源在线观看| 天天影视色香欲综合网老头| 亚洲成av人片在线观看| 日韩制服丝袜先锋影音| 老司机午夜精品99久久| 激情欧美一区二区三区在线观看| 久久成人羞羞网站| 国产精一品亚洲二区在线视频| 国产一区二区伦理| 不卡的看片网站| 欧美色成人综合| 欧美大片免费久久精品三p| 日韩欧美激情四射| 日本一区二区三区四区| 国产精品美日韩| 一区二区激情小说| 午夜影视日本亚洲欧洲精品| 久久电影网电视剧免费观看| 国产成人aaa| 91国在线观看| 3d动漫精品啪啪| 国产日韩精品一区二区三区| 亚洲三级在线免费观看| 日韩国产欧美在线观看| 国产毛片精品视频| 色婷婷久久一区二区三区麻豆| 欧美日韩极品在线观看一区| 精品国产麻豆免费人成网站| 自拍偷拍国产精品| 免费精品视频最新在线| 成人免费av网站| 欧美日韩国产综合一区二区三区 | 一区二区三区蜜桃网| 日本成人在线电影网| 国产不卡视频在线观看| 色婷婷久久久综合中文字幕| 日韩一区二区三区高清免费看看| 国产日韩v精品一区二区| 亚洲第一综合色| 成人av在线观| 日韩一区二区麻豆国产| 亚洲欧美综合色| 激情小说欧美图片| 欧美综合在线视频| 国产精品美女久久久久aⅴ| 爽好久久久欧美精品| 99视频有精品| 久久久九九九九| 蜜桃91丨九色丨蝌蚪91桃色| 色综合中文字幕国产 | 久久99精品久久久久久| 色先锋久久av资源部| 久久久久久久综合日本| 亚洲1区2区3区4区| 一本色道综合亚洲| 国产欧美精品一区二区三区四区 | 99久久er热在这里只有精品15| 日韩一区二区三区视频在线| 亚洲黄色免费网站| 99精品国产一区二区三区不卡| 久久亚洲综合色一区二区三区| 日韩国产欧美三级| 欧美色图在线观看| 亚洲精品视频在线观看网站| 国产美女主播视频一区| 精品国产成人系列| 精品亚洲免费视频| 91精品在线观看入口| 亚洲成人www| 欧美性猛交xxxxxx富婆| 成人免费在线播放视频| 丰满放荡岳乱妇91ww| 国产亚洲精品超碰| 国产一区二区福利| 国产亚洲成av人在线观看导航 | 国产片一区二区| 粉嫩高潮美女一区二区三区 | 视频一区中文字幕| 6080日韩午夜伦伦午夜伦| 一区二区三区小说|