add numerical recipes library
This commit is contained in:
86
lib/nr/k_and_r/recipes/rlftfrag.c
Normal file
86
lib/nr/k_and_r/recipes/rlftfrag.c
Normal file
@@ -0,0 +1,86 @@
|
||||
|
||||
#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
|
||||
Reference in New Issue
Block a user