File: rfft.c

package info (click to toggle)
euslisp 9.27%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 55,344 kB
  • sloc: ansic: 41,162; lisp: 3,339; makefile: 256; sh: 208; asm: 138; python: 53
file content (42 lines) | stat: -rw-r--r-- 755 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "../eus.h"

pointer FFT(n,argv)
int n;
pointer argv[];
{ pointer a;
  int size;
  float *wsave;

  ckarg(1);
  a=argv[0];
  if (!isfltvector(a)) error(E_FLOATVECTOR);
  size=vecsize(a);
  wsave=(float *)malloc((size*3+15)*sizeof(float));
  rffti_(&size,wsave);
  rfftf_(&size,a->c.fvec.fv,wsave);
  free(wsave);
  return(a);}

pointer INVFFT(n,argv)
int n;
pointer argv[];
{ pointer a;
  int size;
  float *wsave;

  ckarg(1);
  a=argv[0];
  if (!isfltvector(a)) error(E_FLOATVECTOR);
  size=vecsize(a);
  wsave=(float *)malloc((size*3+15)*sizeof(float));
  rffti_(&size,wsave);
  rfftb_(&size,a->c.fvec.fv,wsave);
  free(wsave);
  return(a);}

eusmain(mod)
pointer mod;
{
  defun("FFT",mod,FFT,NULL);
  defun("INVERSE-FFT",mod,INVFFT,NULL);
  }