seq | 入力時系列データ\(f(t)\)。
虚部が0.0のstruct imsequence2型構造体として与える。
メンバsizeは2の巾乗でなければならない
(関数内で長さのチェックは行われる)。 The input time series data \(f(t)\), given as a struct imsequence2-type structure with imaginary parts being 0.0. Member size must be a power of 2; the length is checked within the function. |
戻り値のメンバ Member of the return value |
値 Value |
size | seq.size |
t0 | 0.0 |
dt | (\ref{eq.df.definition})式の\(\Delta f\) \(\Delta f\) of eq. (\ref{eq.df.definition}) |
各\(n\)に対するvalue[n] value[n] for each \(n\) |
(\ref{eq.discrete.definition})式の\(F_n\) \(F_n\) of eq. (\ref{eq.discrete.definition}) |
関数内における変数名 Variable name in the function |
本マニュアル中の計算式における変数名 Variable name in the formula of this documentation |
p[0][k] | 偶数の\(m\)に対する\(p(m,k)\) \(p(m,k)\) for even \(m\) |
p[1][k] | 奇数の\(m\)に対する\(p(m,k)\) \(p(m,k)\) for odd \(m\) |
∗ptr_p_old_k1 | \(p(m,k_1(k,l,m))\) |
∗ptr_p_old_k2 | \(p(m,k_2(k,l,m))\) |
∗ptr_p_new_k | \(p(m+1,k)\) |
∗ptr_p_new_kmin | \(p(m+1,k_{min}^1(l,m))\), \(p(m+1,k_{min}^2(l,m))\) |
∗ptr_p_new_kmax | \(p(m+1,k_{max}^1(l,m))\), \(p(m+1,k_{max}^2(l,m))\) |
F[0][n] | 偶数の\(m\)に対する\(F_n^{(m)}\) \(F_n^{(m)}\) for even \(m\) |
F[1][n] | 奇数の\(m\)に対する\(F_n^{(m)}\) \(F_n^{(m)}\) for odd \(m\) |
∗ptr_F_old_n | \(F_n^{(m+1)}\) |
∗ptr_F_old_n1 | \(F_{n_1(n,m)}^{(m+1)}\) |
∗ptr_F_old_n2 | \(F_{n_2(n,m)}^{(m+1)}\) |
∗ptr_F_new_n | \(F_n^{(m)}\) |
∗ptr_F_new_nmin | \(n=n_{min}^1(l,m)\), \(n=n_{min}^2(l,m)\)に対する\(F_n^{(m)}\) \(F_n^{(m)}\) for \(n=n_{min}^1(l,m)\), \(n=n_{min}^2(l,m)\) |
∗ptr_F_new_nmax | \(n=n_{max}^1(l,m)\), \(n=n_{max}^2(l,m)\)に対する\(F_n^{(m)}\) \(F_n^{(m)}\) for \(n=n_{max}^1(l,m)\), \(n=n_{max}^2(l,m)\) |
powEn[j] | \(\exp(2\pi ij/2^N)\) |
∗ptr_powEnj | \(\exp(2\pi ij/2^N)\) |
∗ptr_F0n | \(F_n^{(0)}\) |
re.value[n] | \(F_n\) |
∗ptr_re_value_n | \(F_n\) |
// コード1(Code 1) for(m=0;m<N;m++){ //\(l=0\)のループにおいて最初に用いる\(k_1\), \(k_2\)の設定 //((\ref{eq.k1.st})(\ref{eq.k2.st})式) //Set the initial values of \(k_1\) and \(k_2\) in the loop of \(l=0\) //(eqs. (\ref{eq.k1.st}) and (\ref{eq.k2.st})) k1=0; k2=1; kmax=0; for(l=0;l<pow(2,m);l++){ //(\ref{eq.kmax2kmin1})(\ref{eq.kmaxmindiff})式を用いた \(k_{min}^1\), \(k_{max}^1\)の設定と //(\ref{eq.pmk})式を用いた \(k_{min}^1 \leq k < k_{max}^1\)に対する\(p(m+1,k)\)の計算、 //および(\ref{eq.k1.recursive})(\ref{eq.k1.recursive.l})式を用いた \(k_1\)の更新 //Set \(k_{min}^1\) and \(k_{max}^1\) using eqs. (\ref{eq.kmax2kmin1}) and (\ref{eq.kmaxmindiff}), //compute \(p(m+1,k)\) for \(k_{min}^1 \leq k < k_{max}^1\) using eq. (\ref{eq.pmk}), //and update \(k_1\) using eqs. (\ref{eq.k1.recursive}) and (\ref{eq.k1.recursive.l}) kmin=kmax; kmax=kmin+pow(2,N-m-1); for(k=kmin;k<kmax;k++){ p[(m+1)%2][k]=p[m%2][k1]; k1+=2; } //(\ref{eq.kmax1kmin2})(\ref{eq.kmaxmindiff})式を用いた \(k_{min}^2\), \(k_{max}^2\)の設定と //(\ref{eq.pmk})式を用いた \(k_{min}^2 \leq k < k_{max}^2\)に対する\(p(m+1,k)\)の計算、 //および(\ref{eq.k2.recursive})(\ref{eq.k2.recursive.l})式を用いた \(k_2\)の更新 //Set \(k_{min}^2\) and \(k_{max}^2\) using eqs. (\ref{eq.kmax1kmin2}) and (\ref{eq.kmaxmindiff}), //compute \(p(m+1,k)\) for \(k_{min}^2 \leq k < k_{max}^2\) using eq. (\ref{eq.pmk}), //and update \(k_2\) using eqs. (\ref{eq.k2.recursive}) and (\ref{eq.k2.recursive.l}) kmin=kmax; kmax=kmin+pow(2,N-m-1); for(k=kmin;k<kmax;k++){ p[(m+1)%2][k]=p[m%2][k2]; k2+=2; } } } |
// コード2(Code 2) for(m=N-1;m>=0;m--){ //\(l=0\)のループにおいて最初に用いる\(n_1\), \(n_2\)の設定 //((\ref{eq.n1.st})(\ref{eq.n2.st})式) //Set the initial values of \(n_1\) and \(n_2\) in the loop of \(l=0\) //(eqs. (\ref{eq.n1.st}) and (\ref{eq.n2.st})) n1=pow(2,N-m-1); n2=0; nmax=0; for(l=0;l<pow(2,m);l++){ //(\ref{eq.nmax2nmin1})(\ref{eq.nmaxmindiff})式を用いた \(n_{min}^1\), \(n_{max}^1\)の設定と //(\ref{eq.Fnm})式を用いた \(n_{min}^1 \leq n < n_{max}^1\)に対する\(F_n^{(m)}\)の計算、 //(\ref{eq.jn.recursive})式を用いた\(j_n\)の更新、 //および(\ref{eq.n1.recursive})(\ref{eq.n1.recursive.l})式を用いた \(n_1\)の更新 //Set \(n_{min}^1\) and \(n_{max}^1\) using eqs. (\ref{eq.nmax2nmin1}) and (\ref{eq.nmaxmindiff}), //compute \(F_n^{(m)}\) for \(n_{min}^1 \leq n < n_{max}^1\) using eq. (\ref{eq.Fnm}), //update \(j_n\) using eq. (\ref{eq.jn.recursive}), //and update \(n_1\) using eqs. (\ref{eq.n1.recursive}) and (\ref{eq.n1.recursive.l}) nmin=nmax; nmax=nmin+pow(2,N-m-1); j=0; for(n=nmin;n<nmax;n++){ F[m%2][n]=F[(m+1)%2][n]+powEn[j]*F[(m+1)%2][n1]; j+=pow(2,m); n1++; } n1+=pow(2,N-m-1); //(\ref{eq.nmax1nmin2})(\ref{eq.nmaxmindiff})式を用いた \(n_{min}^2\), \(n_{max}^2\)の設定と //(\ref{eq.Fnm})式を用いた \(n_{min}^2 \leq n < n_{max}^2\)に対する\(F_n^{(m)}\)の計算、 //(\ref{eq.jn.recursive})式を用いた\(j_n\)の更新、 //および(\ref{eq.n2.recursive})(\ref{eq.n2.recursive.l})式を用いた \(n_2\)の更新 //Set \(n_{min}^2\) and \(n_{max}^2\) using eqs. (\ref{eq.nmax1nmin2}) and (\ref{eq.nmaxmindiff}), //compute \(F_n^{(m)}\) for \(n_{min}^2 \leq n < n_{max}^2\) using eq. (\ref{eq.Fnm}), //update \(j_n\) using eq. (\ref{eq.jn.recursive}), //and update \(n_2\) using eqs. (\ref{eq.n2.recursive}) and (\ref{eq.n2.recursive.l}) nmin=nmax; nmax=nmin+pow(2,N-m-1); for(n=nmin;n<nmax;n++){ F[m%2][n]=F[(m+1)%2][n2]+powEn[j]*F[(m+1)%2][n]; j+=pow(2,m); n2++; } n2+=pow(2,N-m-1); } } |