Files
2025-02-Numerical/lib/nr/k_and_r/recipes/rlftfrag.c
2025-09-12 18:55:25 +09:00

87 lines
1.5 KiB
C

#include "nrutil.h"
#define N2 256
#define N3 256
main() /* example1 */
{
void rlft3();
float ***data, **speq;
data=f3tensor(1,1,1,N2,1,N3);
speq=matrix(1,1,1,2*N2);
rlft3(data,speq,1,N2,N3,1);
rlft3(data,speq,1,N2,N3,-1);
free_matrix(speq,1,1,1,2*N2);
free_f3tensor(data,1,1,1,N2,1,N3);
return 0;
}
#undef N3
#undef N2
#define N1 32
#define N2 64
#define N3 16
main() /* example2 */
{
void rlft3();
int j;
float ***data,**speq;
data=f3tensor(1,N1,1,N2,1,N3);
speq=matrix(1,N1,1,2*N2);
rlft3(data,speq,N1,N2,N3,1);
free_matrix(speq,1,N1,1,2*N2);
free_f3tensor(data,1,N1,1,N2,1,N3);
return 0;
}
#undef N1
#undef N2
#undef N3
#define N 32
main() /* example3 */
{
void rlft3();
int j;
float fac,r,i,***data1,***data2,**speq1,**speq2,*sp1,*sp2;
data1=f3tensor(1,N,1,N,1,N);
data2=f3tensor(1,N,1,N,1,N);
speq1=matrix(1,N,1,2*N);
speq2=matrix(1,N,1,2*N);
rlft3(data1,speq1,N,N,N,1);
rlft3(data2,speq2,N,N,N,1);
fac=2.0/(N*N*N);
sp1 = &data1[1][1][1];
sp2 = &data2[1][1][1];
for (j=1;j<=N*N*N/2;j++) {
r = sp1[0]*sp2[0] - sp1[1]*sp2[1];
i = sp1[0]*sp2[1] + sp1[1]*sp2[0];
sp1[0] = fac*r;
sp1[1] = fac*i;
sp1 += 2;
sp2 += 2;
}
sp1 = &speq1[1][1];
sp2 = &speq2[1][1];
for (j=1;j<=N*N;j++) {
r = sp1[0]*sp2[0] - sp1[1]*sp2[1];
i = sp1[0]*sp2[1] + sp1[1]*sp2[0];
sp1[0] = fac*r;
sp1[1] = fac*i;
sp1 += 2;
sp2 += 2;
}
rlft3(data1,speq1,N,N,N,-1);
free_matrix(speq2,1,N,1,2*N);
free_matrix(speq1,1,N,1,2*N);
free_f3tensor(data2,1,N,1,N,1,N);
free_f3tensor(data1,1,N,1,N,1,N);
return 0;
}
#undef N