00001
00002
00003
00004
00005
00006
00007 #include "scripts.h"
00008
00009 static
00010 #if defined(__GNUC__) || defined(__cplusplus)
00011 inline
00012 #endif
00013 int
00014 ilog2(int value)
00015 {
00016 int ilog;
00017 for(ilog = 0; (1 << ilog) != value; ilog++) {
00018 if((1 << ilog) == 0) {
00019 return(-1);
00020 }
00021 }
00022 return(ilog);
00023 }
00024
00025 void fft_script(void)
00026 {
00027 mgk_data_type rtype,itype;
00028 int logsize;
00029 float *re = mgk_receive(0,&rtype);
00030 float *im = mgk_receive(1,&itype);
00031 printf("fft\n");
00032 fflush(stdout);
00033 if((re && im) &&
00034 (rtype == itype) &&
00035 (rtype == (T_BUFFER | T_FLOAT)) &&
00036 (mgk_buffer_size(re) == mgk_buffer_size(im)) &&
00037 ((logsize = ilog2(mgk_buffer_size(re) / sizeof(float))) >= 3)) {
00038 fft32(re,im,logsize,0);
00039 mgk_propagate(0,re,rtype);
00040 mgk_propagate(1,im,itype);
00041 }
00042 }
00043