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

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

?? rfft2.cpp

?? The Spectral Toolkit is a C++ spectral transform library written by Rodney James and Chuck Panaccion
?? CPP
字號:
//// spectral toolkit // copyright (c) 2005 university corporation for atmospheric research// licensed under the gnu general public license//#include "rfft2.h"#include "decompose.h"#include "alloc.h"#include "alias.h"using namespace spectral;/// Multithreaded constructor./// \param nx first dimension of transform/// \param ny second dimension of transform/// \param nt number of threads used in transform/// \throws bad_parameter if nx<2, ny<2 or nt<1 rfft2::rfft2(int nx,int ny,int nt){  if((nx<2)||(ny<2)||(nt<1))    throw bad_parameter();  n1=nx;  N2=ny;  n2=ny/2+1;  threads=nt;  t=new rfft2::thread*[threads];  g=new group(threads);  for(int i=0;i<threads;i++)    t[i]=new rfft2::thread(nx,ny,i,g);}/// Single thread constructor./// \param nx first dimension of transform/// \param ny second dimension of thransform/// \throws bad_parameter if nx<2 or ny<2rfft2::rfft2(int nx,int ny){  if((nx<2)||(ny<2))    throw bad_parameter();  threads=1;  g=0;  t=new rfft2::thread*[1];  t[0]=new rfft2::thread(nx,ny,0,g);}/// Destructor for 2-d real FFT.rfft2::~rfft2(){  if(g)    delete g;  for(int i=0;i<threads;i++)    delete t[i];  delete [] t;}/// Multiple instance forward transform./// Note that the input array is used in the computation and is overwritten./// Also, the input and output arrays must not reference the same locations./// \param a 3-d real input array of size [m][n1][n2]/// \param b 3-d complex output array of size [m][n2/2+1][n1]/// \param m number of sequences to transform/// \param p offset (from the default zero) of first sequence in array void rfft2::analysis(real ***a,complex ***b,int m,int p){  if((m<1)||(p<0))    throw bad_parameter();  int i;  for(i=0;i<threads;i++)    t[i]->analysis(a,b,m,p);  for(i=0;i<threads;i++)    t[i]->wait();}/// Multiple instance backward transform./// Note that the input array is used in the computation and is overwritten./// Also, the input and output arrays must not reference the same locations./// \param b 3-d complex input array of size [m][n2/2+1][n1]/// \param a 3-d real output array of size [m][n1][n2]/// \param m number of sequences to transform/// \param p offset (from the default zero) of first sequence in array void rfft2::synthesis(complex ***b,real ***a,int m,int p){  if((m<1)||(p<0))    throw bad_parameter();  int i;  for(i=0;i<threads;i++)    t[i]->synthesis(b,a,m,p);  for(i=0;i<threads;i++)    t[i]->wait();}/// Forward transform.  Computes the 2-d FFT of a real 2-d array/// \f[ \hat{a}_{k_2,k_1} = \frac{1}{N_1 N_2} \sum_{n_1=0}^{N_1-1} /// \sum_{n_2=0}^{N_2-1} a_{n_1,n_2} e^{-2 \pi i k_1 n_1/N_1} e^{-2 \pi i k_2 n_2/N_2} \f]/// where the real input array is a[N1][N2] and the complex output array is normalized and transposed /// as b[N2/2+1][N1], for \f$ k_1 = 0, \ldots, N_1-1 \f$ and /// \f$ k_2 = 0, \ldots, \lfloor N_2/2 \rfloor\f$./// Note that the input array is used in the computation and is overwritten.  /// Also, the input and output arrays must not reference the same locations./// \param a 2-d input array in physical space/// \param b 2-d output array containing Fourier coefficients in transposed ordervoid rfft2::analysis(real **a,complex **b){  analysis(&a,&b,1);}/// Backward transform.  Computes the 2-d inverse FFT for a complex array/// of spectral coefficients of a real symmetric 2-d array/// \f[ a_{n_1,n_2} = \sum_{k_1=0}^{N_1-1} \sum_{k_2=0}^{N_2-1} \hat{a}_{k_2,k_1} /// e^{2 \pi i k_1 n_1/N_1} e^{2 \pi i k n_2/N_2} \f]/// using the property \f[ \hat{a}_{k_2,k_1} = \overline{\hat{a}}_{N_2-k_2,N_1-k_1} \f]/// where the complex input array is b[N2/2+1][N1] and the real output array is a[N1][N2]./// Note that the input array is used in the computation and is overwritten./// Also, the input and output arrays must not reference the same locations./// \param a 2-d input array containing Fourier coefficients in transposed order/// \param b 2-d output array in physical spacevoid rfft2::synthesis(complex **b,real **a){  synthesis(&b,&a,1);}/// Internal thread object constructor./// \param nx first dimension of transform/// \param ny second dimension of transform/// \param index thread index which is from 0 to size(G)-1/// \param G group object for cfft2rfft2::thread::thread(int nx,int ny,int index,group *G){  n1=nx;  N2=ny;  n2=ny/2+1;  g=G;  FFT1=new cfft(n1);  FFT2=new rfft(N2);  fac=1.0/(((real)n1)*((real)N2));  int nt=max(size(g),1);  decompose(n1,nt,index,m1,p1);  decompose(n2,nt,index,m2,p2);}/// Internal thread object destructor.rfft2::thread::~thread(){  delete FFT2;  delete FFT1;}/// Internal thread object join method.void rfft2::thread::wait(){  join();}/// Internal thread object forward transform driver.void rfft2::thread::analysis(real ***a,complex ***b,int m,int p){  A=a;  B=b;  M=m;  P=p;  Method=ANALYSIS;  if(g)    spawn();  else    start();}/// Internal thread object backward transform driver.void rfft2::thread::synthesis(complex ***b,real ***a,int m,int p){  A=a;  B=b;  M=m;  P=p;  Method=SYNTHESIS;  if(g)    spawn();  else    start();}/// Internal thread object start method that executes upon thread spawn.void rfft2::thread::start(){  switch(Method)    {    case ANALYSIS:      for(int i=P;i<P+M;i++)	{	  FFT2->analysis(A[i],m1,p1);	  transpose(A[i],B[i]);	  sync(g);	  FFT1->analysis(B[i],m2,p2);	}      break;    case SYNTHESIS:      for(int i=P;i<P+M;i++)	{	  FFT1->synthesis(B[i],m2,p2);	  sync(g);	  transpose(B[i],A[i]);	  FFT2->synthesis(A[i],m1,p1);	}      break;    }}void rfft2::thread::transpose(real **a,complex **b){  const int block=32;  const int n2p=(N2+1)/2;  int I1,I2;  int i1,i2;  for(I1=p1;I1<p1+m1;I1+=block)    for(I2=1;I2<n2p;I2+=block)      for(i1=I1;i1<min(I1+block,p1+m1);i1++)	for(i2=I2;i2<min(I2+block,n2p);i2++)	  {	    b[i2][i1].re=fac*a[i1][2*i2-1];	    b[i2][i1].im=fac*a[i1][2*i2  ];	  }                      for(i1=p1;i1<p1+m1;i1++)    {      b[0][i1].re=fac*a[i1][0];      b[0][i1].im=0.0;    }                      if(N2%2==0)    for(i1=p1;i1<p1+m1;i1++)      {	b[n2-1][i1].re=fac*a[i1][N2-1];	b[n2-1][i1].im=0.0;      }}void rfft2::thread::transpose(complex **b,real **a){  const int block=32;  const int n2p=(N2+1)/2;  int I1,I2;  int i1,i2;      for(I2=1;I2<n2p;I2+=block)    for(I1=p1;I1<p1+m1;I1+=block)      for(i2=I2;i2<min(I2+block,n2p);i2++)	for(i1=I1;i1<min(I1+block,p1+m1);i1++)	  {	    a[i1][2*i2-1]=b[i2][i1].re;	    a[i1][2*i2  ]=b[i2][i1].im;	  }                      for(i1=p1;i1<p1+m1;i1++)    a[i1][0]=b[0][i1].re;      if(N2%2==0)    for(i1=p1;i1<p1+m1;i1++)      a[i1][N2-1]=b[n2-1][i1].re;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产高清| 亚洲一区二区视频在线观看| 亚洲欧美一区二区久久| 加勒比av一区二区| 欧美理论电影在线| 国产精品美女久久久久久久久| 亚洲综合一区二区精品导航| 成人免费黄色大片| 久久精品一区四区| 国产福利91精品一区| 久久久久久久综合色一本| 老司机精品视频在线| 麻豆国产欧美一区二区三区| 欧美午夜精品一区二区三区| 国产精品灌醉下药二区| 成人精品gif动图一区| 26uuu亚洲| 欧美亚洲动漫精品| 亚洲欧美色一区| 色偷偷久久人人79超碰人人澡| 中文字幕亚洲成人| 成人小视频免费在线观看| 日韩精品一区二区三区在线播放 | 日韩精品中文字幕在线一区| 亚洲不卡av一区二区三区| 欧美疯狂性受xxxxx喷水图片| 99久久国产综合色|国产精品| 欧美老女人第四色| 精品一区二区成人精品| 国产精品色在线| 欧美午夜精品久久久| 国内精品写真在线观看| 国产精品美女久久久久久久| 97久久精品人人做人人爽50路| 亚洲高清免费视频| 亚洲乱码日产精品bd| 国产精品久线在线观看| 欧美日韩中文精品| 国产 日韩 欧美大片| 日韩中文字幕av电影| 亚洲天堂免费在线观看视频| 亚洲男帅同性gay1069| 9l国产精品久久久久麻豆| 亚洲图片欧美一区| 国产精品每日更新在线播放网址| 91在线视频观看| 高清在线不卡av| 久久爱www久久做| 亚洲第一电影网| 亚洲欧美一区二区三区国产精品| 久久久美女艺术照精彩视频福利播放| 亚洲女子a中天字幕| 中文字幕一区免费在线观看| 欧美一级午夜免费电影| 精品盗摄一区二区三区| 制服丝袜中文字幕亚洲| 国内精品在线播放| 国产一区二区主播在线| 激情欧美一区二区| 国产美女精品人人做人人爽| 久久狠狠亚洲综合| 韩国女主播成人在线观看| 久久se这里有精品| 国产精品一区二区不卡| 丰满白嫩尤物一区二区| 亚洲视频综合在线| 亚洲黄色av一区| 视频一区视频二区中文| 日精品一区二区| 久久国产精品99精品国产| 国产一区二区福利| 成人av网址在线观看| 欧美三级韩国三级日本一级| 欧美女孩性生活视频| 91碰在线视频| 国产综合久久久久影院| 亚洲亚洲人成综合网络| 婷婷丁香久久五月婷婷| 久久国产精品一区二区| 国产成人亚洲综合a∨猫咪| av动漫一区二区| 欧美精品日韩一本| 久久超级碰视频| 成人黄色电影在线| 制服.丝袜.亚洲.另类.中文| 亚洲精品一线二线三线| 亚洲一区二区三区不卡国产欧美| 日韩成人午夜电影| 一本久久综合亚洲鲁鲁五月天| 国产精品色婷婷久久58| 精品免费国产一区二区三区四区| 国产精品麻豆一区二区 | 国产成人超碰人人澡人人澡| 91国在线观看| 91精品国产高清一区二区三区蜜臀 | www成人在线观看| 亚洲一区在线观看视频| 波多野结衣91| 国产三级一区二区三区| 在线观看日韩精品| 日韩欧美激情四射| 日韩精品1区2区3区| 在线精品视频一区二区三四| 国产精品久久久久久久浪潮网站| 久久电影网电视剧免费观看| 日韩一区二区视频| 奇米影视一区二区三区小说| 欧美亚洲一区三区| 亚洲国产wwwccc36天堂| 天堂成人免费av电影一区| 久久久.com| 亚洲少妇30p| 在线影院国内精品| 亚洲高清免费视频| 日韩亚洲国产中文字幕欧美| 国产一区二区三区最好精华液| 欧美日韩视频在线第一区 | 国产精品无圣光一区二区| 国产成人自拍网| 亚洲激情欧美激情| 欧美高清你懂得| 国产精品一级黄| 亚洲欧洲日本在线| 欧美一级xxx| 亚洲图片你懂的| 欧美伊人久久大香线蕉综合69| 亚洲一区二区三区中文字幕在线| 欧美年轻男男videosbes| 国产伦精品一区二区三区免费迷 | 亚洲视频在线观看三级| 国产高清亚洲一区| 亚洲视频电影在线| 日韩精品影音先锋| 在线观看成人小视频| 国产在线视频精品一区| 亚洲制服丝袜av| 欧美经典一区二区三区| 欧美一卡二卡在线观看| 亚洲欧美综合网| 日韩欧美亚洲一区二区| 色嗨嗨av一区二区三区| 国产伦精品一区二区三区免费迷| 一区二区欧美国产| 亚洲美女免费视频| 亚洲777理论| 亚洲四区在线观看| 国产精品视频免费| 日本一区二区三区电影| 日韩精品资源二区在线| 欧美嫩在线观看| 欧美精品国产精品| 欧美日韩精品免费观看视频| av日韩在线网站| 色综合色狠狠天天综合色| 亚洲制服丝袜一区| 午夜精品久久久久久久99樱桃| 97成人超碰视| 在线看国产一区二区| 色呦呦国产精品| 欧美天堂一区二区三区| 在线观看欧美黄色| 日本三级韩国三级欧美三级| 久久久亚洲国产美女国产盗摄 | 麻豆精品新av中文字幕| 日韩av一级片| 国产成+人+日韩+欧美+亚洲| 成人免费视频免费观看| 91福利社在线观看| 欧美猛男超大videosgay| 日韩激情一区二区| 国产成人午夜精品影院观看视频| 99免费精品视频| 国产精品人妖ts系列视频| 欧美日韩一区在线| 亚洲精品一区二区三区影院| 亚洲国产中文字幕在线视频综合| 亚洲成av人**亚洲成av**| 寂寞少妇一区二区三区| 色综合一区二区| 2023国产精品| 亚洲一区二区三区自拍| 丁香六月久久综合狠狠色| 欧美在线|欧美| 国产精品久久久久久久久久免费看 | 色哟哟精品一区| 久久久久久久性| 日本亚洲免费观看| 日本高清免费不卡视频| 国产人久久人人人人爽| 成人app网站| 欧美精品丝袜久久久中文字幕| 国产午夜精品一区二区三区四区 | 337p亚洲精品色噜噜| 中文字幕在线免费不卡| 免费观看成人av| 制服视频三区第一页精品| 亚洲日本在线观看| 99久久免费视频.com| 欧美激情综合五月色丁香| 国产露脸91国语对白|