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

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

?? 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; 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一电影网| 色综合久久久久综合| 97se亚洲国产综合自在线不卡| 日本精品一区二区三区高清 | 色综合天天视频在线观看| 欧美日韩www| 1区2区3区欧美| 国产成人免费视频一区| 在线观看日韩国产| 中文字幕精品一区二区精品绿巨人 | 国模一区二区三区白浆| 91久久线看在观草草青青| 久久免费国产精品| 免费成人你懂的| 欧美电影一区二区三区| 亚洲激情校园春色| 91丨九色丨国产丨porny| 国产日产欧产精品推荐色| 人人爽香蕉精品| 欧美日韩国产片| 婷婷成人综合网| 欧美午夜理伦三级在线观看| 国产精品视频yy9299一区| 国产乱色国产精品免费视频| 精品福利在线导航| 免费人成网站在线观看欧美高清| 欧美自拍丝袜亚洲| 一区二区三区四区在线| 97久久超碰国产精品电影| 亚洲国产高清不卡| 成人精品国产一区二区4080| 中文字幕久久午夜不卡| 成人av在线网| 亚洲欧美综合另类在线卡通| 成人av在线观| 尤物av一区二区| 欧美吻胸吃奶大尺度电影 | 91精品国产色综合久久ai换脸| 亚洲国产中文字幕| 6080yy午夜一二三区久久| 奇米四色…亚洲| 久久先锋影音av鲁色资源网| 国产福利91精品一区| 日韩一区在线看| 欧美视频一区二区三区四区| 石原莉奈在线亚洲三区| 91精品国产麻豆国产自产在线| 欧美bbbbb| 欧美国产禁国产网站cc| 97se狠狠狠综合亚洲狠狠| 亚洲成人精品一区二区| 日韩欧美卡一卡二| 成人免费av网站| 亚洲一区免费观看| 日韩精品中文字幕在线不卡尤物| 国产在线精品免费av| 亚洲视频狠狠干| 日韩一区二区三区四区 | 色久综合一二码| 日韩电影免费在线观看网站| 久久久99精品免费观看| 色av成人天堂桃色av| 经典三级在线一区| 亚洲免费在线观看视频| 欧美一区二区三区日韩视频| 国产suv精品一区二区883| 亚洲国产综合人成综合网站| 久久一区二区视频| 欧美视频中文字幕| 国产成人在线网站| 亚洲妇熟xx妇色黄| 欧美韩国一区二区| 欧美一级午夜免费电影| av电影在线观看不卡| 理论片日本一区| 亚洲精品视频在线看| 久久久国际精品| 91精品欧美福利在线观看| 国产91露脸合集magnet| 日韩avvvv在线播放| 亚洲乱码国产乱码精品精小说| 欧美大黄免费观看| 欧美午夜精品免费| 91在线你懂得| 国产91精品一区二区麻豆网站| 日本在线不卡一区| 亚洲成人av免费| 亚洲色图欧洲色图婷婷| 国产欧美精品区一区二区三区| 欧美一区二区三区小说| 欧美伊人久久久久久久久影院 | 日韩一级黄色片| 欧美视频一区二区三区四区 | 日韩av在线发布| 亚洲综合免费观看高清完整版| 国产精品剧情在线亚洲| 久久久久9999亚洲精品| 日韩三级伦理片妻子的秘密按摩| 欧美午夜片在线看| 欧美亚洲自拍偷拍| 在线日韩av片| 色欧美日韩亚洲| 91国偷自产一区二区三区成为亚洲经典| 国产精品66部| 国产东北露脸精品视频| 国产伦理精品不卡| 国产一区二区视频在线播放| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲电影第三页| 日韩精品一二三区| 免费欧美在线视频| 久久国产精品99久久人人澡| 日本中文一区二区三区| 美女爽到高潮91| 国产制服丝袜一区| 国产91清纯白嫩初高中在线观看| 国产伦理精品不卡| www.欧美色图| 色婷婷综合久久| 欧美精品乱码久久久久久| 欧美欧美欧美欧美| 欧美不卡在线视频| 久久亚洲综合色| 国产精品乱码久久久久久| 中文字幕一区二区三区在线观看| 一区精品在线播放| 伊人色综合久久天天| 性做久久久久久免费观看 | 亚洲一区二区视频在线| 亚洲成人激情社区| 美女网站在线免费欧美精品| 韩国精品主播一区二区在线观看| 国产一区二区三区在线观看精品 | 亚洲视频在线观看三级| 亚洲精品第1页| 日产国产欧美视频一区精品| 黄色日韩网站视频| 成人国产免费视频| 欧美日韩亚洲高清一区二区| 日韩欧美一级在线播放| 久久久久9999亚洲精品| 亚洲视频免费观看| 蜜臀va亚洲va欧美va天堂| 国产成人免费视频精品含羞草妖精| 福利一区福利二区| 欧美猛男超大videosgay| 精品国产sm最大网站免费看| 国产精品国产三级国产专播品爱网 | 欧美色爱综合网| 欧美精品一区二区高清在线观看| 亚洲欧洲日韩av| 青青草原综合久久大伊人精品优势 | 欧美日韩一区 二区 三区 久久精品| 日韩一区二区电影在线| 国产精品欧美经典| 天天做天天摸天天爽国产一区| 国产精品一区二区三区网站| 91国内精品野花午夜精品| 久久久青草青青国产亚洲免观| 一区二区三区免费在线观看| 精品一区二区三区久久| 在线视频国内自拍亚洲视频| 26uuu国产一区二区三区| 香蕉乱码成人久久天堂爱免费| 成人激情午夜影院| 欧美一区二区精品在线| 亚洲丝袜精品丝袜在线| 国产一区在线精品| 欧美丰满嫩嫩电影| 综合在线观看色| 国产精品一区二区久久精品爱涩| 欧美精选午夜久久久乱码6080| 中文字幕一区二区三区色视频 | 日韩精品成人一区二区在线| 成人av在线电影| 久久精品夜色噜噜亚洲aⅴ| 午夜精品久久一牛影视| 95精品视频在线| 欧美极品美女视频| 精品一区二区三区不卡| 欧美卡1卡2卡| 亚洲va欧美va国产va天堂影院| 色哟哟欧美精品| 中文字幕中文字幕一区| 国产麻豆精品视频| 久久综合网色—综合色88| 日本不卡免费在线视频| 56国语精品自产拍在线观看| 亚洲午夜电影网| 欧美午夜不卡在线观看免费| 亚洲精品视频免费观看| 色88888久久久久久影院野外| 综合电影一区二区三区 | av电影一区二区| 欧美国产亚洲另类动漫| 成人午夜免费电影| 久久久www成人免费无遮挡大片| 精品综合免费视频观看| 精品日韩av一区二区| 精久久久久久久久久久|