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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rfft.cpp

?? The Spectral Toolkit is a C++ spectral transform library written by Rodney James and Chuck Panaccion
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
//// spectral toolkit // copyright (c) 2005 university corporation for atmospheric research// licensed under the gnu general public license//#include "rfft.h"using namespace spectral;/// Real FFT constructor.  Creates real symmetric FFT object for sequence of length N./// \param N length of transform/// \throws bad_parameter if N<2rfft::rfft(int N){  if(N<2)    throw bad_parameter();  n=N;  work=new real[n];  top=new node(n,1,1,0);  bot=top->end();}/// Real FFT destructor.rfft::~rfft(){  delete [] work;  delete top;}/// Internal real FFT radix object.  /// Recursively defined double-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 factor/// \param that pointer from calling noderfft::node::node(int m,int L,bool parity,node *that){  prev=that;  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:      break;    case 3:      break;    case 4:      break;    case 5:      break;    case 6:      break;    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,this);  else    next=0;}/// Internal method to that returns end of linked list.rfft::node *rfft::node::end(){  if(next)    return(next->end());  else    return(this);}/// Internal factorization routine.int rfft::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 node destructor.rfft::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;}/// 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 \lfloor \frac{N}{2} \rfloor \f$ for a real sequence./// The Fourier coefficients are stored in the so-called half complex/// format, packed into the original real array as/// \f[ \left( \Re \hat{a}_0, \Re \hat{a}_1, \Im\hat{a}_1, \ldots, \left\{/// \begin{array}{ll}  \Re \hat{a}_{N/2} & \textrm{$N$ even} \\ ///  \Re \hat{a}_{(N-1)/2}, \Im \hat{a}_{(N-1)/2} & \textrm{$N$ odd} /// \end{array}  \right. \right) \f]/// \param a real sequence to transform in-placevoid rfft::analysis(real *a){  top->analysis(a,work,1,n);}/// Backward transform.  Computes the real 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$ using the fact that the original/// real symmetric sequence has Fourier coefficients with the/// property \f[ \hat{a}_k = \overline{\hat{a}}_{N-k} \f]/// from the half-complex Fourier coefficients./// \param a sequence to transform in-placevoid rfft::synthesis(real *a){  bot->synthesis(a,work,n,1);}/// 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 rfft::analysis(real **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 rfft::synthesis(real **a,int M,int P){  if((M<1)||(P<0))    throw bad_parameter();  for(int i=P;i<P+M;i++)    bot->synthesis(a[i],work,n,1);}/// 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 rfft::analysis(real *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 rfft::synthesis(real *a,int M,int stride){  if((M<1)||(stride<n))    throw bad_parameter();  for(int i=0;i<M;i++)    bot->synthesis(a+i*stride,work,n,1);}/// 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 rfft::node::analysis(real *in,real *out,int L,int N){  N=N/r;  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);  else    if(odd)      for(int i=0;i<L;i++)	in[i]=out[i];}/// 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 rfft::node::synthesis(real *in,real *out,int L,int N){  L=L/r;  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;    }  N=N*r;  if(prev)    prev->synthesis(out,in,L,N);  else    if(odd)      for(int i=0;i<N;i++)	in[i]=out[i];}/// 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 rfft::node::analysis_radix2(real *x,real *y,int L,int N){  complex w,T0,T1;  real *x0,*x1,*y0,*y1;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x+j*L+N*L;      y0=y+j*2*L;      y1=y+j*2*L+2*L;      T0.re=x0[0];      T1.re=x1[0];      y0[ 0]=T0.re+T1.re;      y1[-1]=T0.re-T1.re;      w.re=omega.re+1.0;                         w.im=omega.im;      for(int k=1;k<(L+1)/2;k++)        {	  T0.re=x0[2*k-1];	  T0.im=x0[2*k  ];	  T1.re=x1[2*k-1]*w.re-x1[2*k  ]*w.im;	  T1.im=x1[2*k  ]*w.re+x1[2*k-1]*w.im;	  y0[ 2*k-1]=T0.re+T1.re;              	  y0[ 2*k  ]=T0.im+T1.im;	  y1[-2*k-1]=T0.re-T1.re;	  y1[-2*k  ]=T1.im-T0.im;	  T0.re=omega.re*w.re-omega.im*w.im+w.re;	  T0.im=omega.re*w.im+omega.im*w.re+w.im; 	  w.re=T0.re;	  w.im=T0.im;        }      if(L%2==0)        {	  T0.re=x0[L-1];	  T1.re=x1[L-1]*w.re;	  T1.im=x1[L-1]*w.im;	  y0[L-1]=T0.re+T1.re;	  y0[L  ]=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 rfft::node::synthesis_radix2(real *y,real *x,int L,int N){  complex w,a,b;  complex T0,T1;  real *x0,*x1,*y0,*y1;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x+j*L+N*L;      y0=y+j*2*L;      y1=y+j*2*L+2*L;      T0.re=y0[ 0];      T1.re=y1[-1];      x0[0]=T0.re+T1.re;      x1[0]=T0.re-T1.re;      w.re=omega.re+1.0;                         w.im=omega.im;      for(int k=1;k<(L+1)/2;k++)        {	  T0.re= y0[ 2*k-1];	  T0.im= y0[ 2*k  ];	  T1.re= y1[-2*k-1];	  T1.im=-y1[-2*k  ];	  a.re=T0.re+T1.re;	  a.im=T0.im+T1.im;	  b.re=T0.re-T1.re;	  b.im=T0.im-T1.im;	  x0[2*k-1]=a.re;	  x0[2*k  ]=a.im;	  x1[2*k-1]=b.re*w.re+b.im*w.im;	  x1[2*k  ]=b.im*w.re-b.re*w.im;	  a.re=omega.re*w.re-omega.im*w.im+w.re;	  a.im=omega.re*w.im+omega.im*w.re+w.im; 	  w.re=a.re;	  w.im=a.im;        }      if(L%2==0)        {	  T0.re=y0[L-1]; 	  T0.im=y0[L  ]; 	  T1.re= T0.re;	  T1.im=-T0.im;	  a.re=T0.re+T1.re;	  a.im=T0.im+T1.im;	  b.re=T0.re-T1.re;	  b.im=T0.im-T1.im;	  x0[L-1]=a.re;	  x1[L-1]=b.re*w.re+b.im*w.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 rfft::node::analysis_radix3(real *x,real *y,int L,int N){  complex t0,t1,t2;  complex w1,w2;  complex z1,z2;  real *x0,*x1,*x2,*y0,*y1;  const real a=-0.5L;  const real b= 0.5L*root3;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x+j*L+N*L;      x2=x+j*L+2*N*L;      y0=y+j*3*L;      y1=y+j*3*L+2*L;      t0.re=x0[0];       t1.re=x1[0];      t2.re=x2[0];      z1.re=t1.re+t2.re;      z1.im=t2.re-t1.re;      y0[ 0]=t0.re+z1.re;      y1[-1]=t0.re+a*z1.re;      y1[ 0]=      b*z1.im;      w1.re=omega.re+1.0;      w1.im=omega.im;      for(int k=1;k<(L+1)/2;k++)        {	  w2.re=w1.re*w1.re-w1.im*w1.im;	  w2.im=2.0*w1.re*w1.im;	  t0.re=x0[2*k-1];	  t0.im=x0[2*k  ];	  z1.re=x1[2*k-1];	  z1.im=x1[2*k  ];	  z2.re=x2[2*k-1];	  z2.im=x2[2*k  ];	  t1.re=z1.re*w1.re-z1.im*w1.im;	  t1.im=z1.im*w1.re+z1.re*w1.im;	  t2.re=z2.re*w2.re-z2.im*w2.im;	  t2.im=z2.im*w2.re+z2.re*w2.im;	  z1.re=a*(t1.re+t2.re);	  z1.im=a*(t1.im+t2.im);	  z2.re=b*(t1.re-t2.re);	  z2.im=b*(t1.im-t2.im);	  y0[ 2*k-1]= (t0.re+t1.re+t2.re);	  y0[ 2*k  ]= (t0.im+t1.im+t2.im);	  y1[ 2*k-1]= (t0.re+z1.re+z2.im);	  y1[ 2*k  ]= (t0.im+z1.im-z2.re);	  y1[-2*k-1]= (t0.re+z1.re-z2.im);	  y1[-2*k  ]=-(t0.im+z1.im+z2.re);	  w2.re=omega.re*w1.re-omega.im*w1.im+w1.re;	  w2.im=omega.re*w1.im+omega.im*w1.re+w1.im; 	  w1.re=w2.re;	  w1.im=w2.im;        }      if(L%2==0)        {	  w2.re=w1.re*w1.re-w1.im*w1.im;	  w2.im=2.0*w1.re*w1.im;	  t0.re=x0[L-1];	  t0.im=0.0;	  t1.re=x1[L-1]*w1.re; 	  t1.im=x1[L-1]*w1.im;	  t2.re=x2[L-1]*w2.re; 	  t2.im=x2[L-1]*w2.im;	  y0[L-1]=t0.re+t1.re+t2.re; 	  y0[L  ]=t0.im+t1.im+t2.im; 	  y1[L-1]=t0.re+a*(t1.re+t2.re)+b*(t1.im-t2.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 rfft::node::synthesis_radix3(real *y,real *x,int L,int N){  complex t0,t1,t2;  complex w1,w2;  complex z1,z2;  complex a1,a2;  real *x0,*x1,*x2,*y0,*y1;  const real a=-0.5L;  const real b= 0.5L*root3;      for(int j=0;j<N;j++)    {      x0=x+j*L;      x1=x+j*L+N*L;      x2=x+j*L+2*N*L;      y0=y+j*3*L;      y1=y+j*3*L+2*L;      t0.re=y0[ 0];      t1.re=y1[-1];      t1.im=y1[ 0];      z1.re=a*t1.re;      z1.im=b*t1.im;      x0[0]=t0.re+2.0*t1.re;      x1[0]=t0.re+2.0*(z1.re-z1.im);      x2[0]=t0.re+2.0*(z1.re+z1.im);      w1.re=omega.re+1.0;                         w1.im=omega.im;      for(int k=1;k<(L+1)/2;k++)        {	  w2.re=w1.re*w1.re-w1.im*w1.im;	  w2.im=2.0*w1.re*w1.im;	  t0.re= y0[ 2*k-1];	  t0.im= y0[ 2*k  ];	  t1.re= y1[ 2*k-1];	  t1.im= y1[ 2*k  ];	  t2.re= y1[-2*k-1];	  t2.im=-y1[-2*k  ];	  a1.re=a*(t1.re+t2.re);	  a1.im=a*(t1.im+t2.im);	  a2.re=b*(t1.re-t2.re);	  a2.im=b*(t1.im-t2.im);	  z1.re=t0.re+a1.re-a2.im;	  z1.im=t0.im+a1.im+a2.re;	  z2.re=t0.re+a1.re+a2.im;	  z2.im=t0.im+a1.im-a2.re;	  x0[2*k-1]=t0.re+t1.re+t2.re;	  x0[2*k  ]=t0.im+t1.im+t2.im;	  x1[2*k-1]=z1.re*w1.re+z1.im*w1.im;	  x1[2*k  ]=z1.im*w1.re-z1.re*w1.im;	  x2[2*k-1]=z2.re*w2.re+z2.im*w2.im;	  x2[2*k  ]=z2.im*w2.re-z2.re*w2.im;	  z1.re=omega.re*w1.re-omega.im*w1.im+w1.re;	  z1.im=omega.re*w1.im+omega.im*w1.re+w1.im; 	  w1.re=z1.re;	  w1.im=z1.im;        }            if(L%2==0)        {	  w2.re=w1.re*w1.re-w1.im*w1.im;	  w2.im=2.0*w1.re*w1.im;	  t0.re=y0[L-1]; 	  t0.im=y0[L  ]; 	  t1.re=y1[L-1]; 	  a1.re=a*(t1.re+t0.re);	  a1.im=b*(t1.re-t0.re);	  a2.re=a*t0.im;	  a2.im=b*t0.im;	  z1.re=t0.re+a1.re-a2.im; 	  z1.im=t0.im+a1.im-a2.re; 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区欧美日韩| 视频一区视频二区中文| 久久av资源网| 69成人精品免费视频| 国产精品国产三级国产普通话蜜臀 | 韩国毛片一区二区三区| 欧美精品vⅰdeose4hd| 亚洲大片精品永久免费| 欧美天天综合网| 日本中文字幕一区二区视频| 欧美日韩综合在线免费观看| 亚洲国产美女搞黄色| 在线一区二区三区四区五区 | 亚洲视频图片小说| 97精品久久久午夜一区二区三区| 久久精品一二三| 成熟亚洲日本毛茸茸凸凹| 亚洲国产精品精华液2区45| 精品写真视频在线观看| 国产欧美日韩久久| 日本高清成人免费播放| 日韩中文欧美在线| 久久久亚洲欧洲日产国码αv| 国产不卡视频一区| 亚洲午夜久久久久久久久久久 | 亚洲另类色综合网站| 欧美日韩一区二区欧美激情| 奇米色一区二区| 综合久久给合久久狠狠狠97色| 在线观看国产91| 国产成人av一区二区三区在线 | 丝袜美腿亚洲色图| 国产精品午夜在线观看| 日韩一区二区三区电影| 99v久久综合狠狠综合久久| 日本午夜一区二区| 亚洲精品亚洲人成人网在线播放| 91精品国产91热久久久做人人 | 久久精品水蜜桃av综合天堂| 91视频观看免费| 国产河南妇女毛片精品久久久| 一个色在线综合| 一区二区三区四区高清精品免费观看| 日韩一区二区三区免费看| 色欧美片视频在线观看| 高清不卡在线观看av| 国产精品亚洲人在线观看| 免费成人性网站| 日韩综合在线视频| 日韩一区精品视频| 日韩中文字幕麻豆| 蜜臀久久99精品久久久久宅男| 一级特黄大欧美久久久| 亚洲线精品一区二区三区八戒| 亚洲国产精品av| 国产精品成人免费| 亚洲色图制服诱惑 | 欧美精品亚洲二区| 欧美色国产精品| 欧美精品九九99久久| 91精品国产综合久久精品麻豆| 欧美午夜电影网| 日韩视频免费观看高清在线视频| 欧美一级免费观看| 久久综合狠狠综合久久激情| 久久久精品2019中文字幕之3| 久久久久久久久久美女| 日韩伦理免费电影| 日韩高清在线电影| 成人午夜免费视频| 91国偷自产一区二区开放时间 | 精品电影一区二区| 亚洲丝袜另类动漫二区| 天堂久久久久va久久久久| 久久成人免费网站| 色婷婷久久99综合精品jk白丝| 欧美肥胖老妇做爰| 国产精品美女久久久久aⅴ国产馆| 亚洲色欲色欲www| 国产一区激情在线| 色狠狠综合天天综合综合| 欧美成人一区二区三区在线观看| 国产欧美精品国产国产专区| 亚洲大型综合色站| heyzo一本久久综合| 91麻豆精品国产综合久久久久久| 国产喷白浆一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 大桥未久av一区二区三区中文| 欧美日韩国产电影| 亚洲午夜久久久久| 一本色道亚洲精品aⅴ| 国产视频一区在线播放| 久久国产精品99久久人人澡| 欧美性猛片aaaaaaa做受| 国产精品久久久久桃色tv| 国内精品国产三级国产a久久| 欧美一区二区三区视频| 亚洲国产精品综合小说图片区| av亚洲精华国产精华精| 精品国偷自产国产一区| 免费在线看一区| 欧美成人乱码一区二区三区| 蜜臀国产一区二区三区在线播放| 欧美人与z0zoxxxx视频| 首页综合国产亚洲丝袜| 欧美日韩一本到| 日韩 欧美一区二区三区| 国产精品久久国产精麻豆99网站| 国产精品美女久久久久久2018| 国产精品视频一区二区三区不卡| 卡一卡二国产精品 | 中文字幕成人网| 不卡一区二区在线| 亚洲国产色一区| 日韩一级视频免费观看在线| 国产福利视频一区二区三区| 国产精品国产成人国产三级| 91看片淫黄大片一级| 肉肉av福利一精品导航| 精品国产sm最大网站免费看| 国产精品18久久久久久久网站| 国产精品国产三级国产三级人妇| 91精彩视频在线观看| 久久精品国产亚洲5555| 亚洲免费av高清| 久久久www成人免费无遮挡大片| 成人夜色视频网站在线观看| 亚洲观看高清完整版在线观看| 久久久www成人免费毛片麻豆| 欧美亚洲愉拍一区二区| 成人做爰69片免费看网站| 三级久久三级久久| 亚洲免费色视频| 欧美激情在线免费观看| 91精品国产乱| 欧美疯狂性受xxxxx喷水图片| 成人免费视频app| 国产精品一区二区在线观看不卡 | 亚洲摸摸操操av| 国产女同互慰高潮91漫画| 欧美一级黄色录像| 欧美日韩国产一级| 在线影视一区二区三区| thepron国产精品| 99国产精品久久久久久久久久久| 国产精品一区二区视频| 久久福利资源站| 美女精品一区二区| 免费在线观看一区二区三区| 青青草91视频| 国产精品一区二区在线观看不卡| 久久99精品国产.久久久久久| 亚洲va欧美va人人爽| 婷婷综合久久一区二区三区| 日日夜夜一区二区| 久久国产福利国产秒拍| 粉嫩嫩av羞羞动漫久久久| 国产91丝袜在线观看| 成人激情黄色小说| 在线观看视频欧美| 欧美一区二区三区日韩| 一区二区在线观看视频| 一区二区久久久| 免费成人av资源网| 99精品国产99久久久久久白柏| 欧洲一区在线电影| 日韩欧美一级片| 亚洲视频一区二区在线| 美国av一区二区| 97久久精品人人做人人爽50路| 欧美最新大片在线看| 久久久久久毛片| 亚洲18色成人| av在线一区二区三区| 欧美一级夜夜爽| 亚洲免费观看高清完整版在线| 日韩精彩视频在线观看| 成人av动漫网站| 精品久久久久久久久久久久包黑料| 一区二区中文字幕在线| 美国十次了思思久久精品导航| 在线亚洲一区二区| 欧美—级在线免费片| 免费三级欧美电影| 欧美色大人视频| 亚洲在线成人精品| 粉嫩aⅴ一区二区三区四区| 91精品久久久久久久91蜜桃| 中文字幕一区视频| 成人免费三级在线| 国产午夜精品福利| 国产一区亚洲一区| 精品国产电影一区二区| 免费成人av在线播放| 日韩欧美中文字幕精品| 日韩高清电影一区| 欧美第一区第二区| 国产专区综合网| 国产视频一区二区在线|