/*        ATK IV - Numerical Programming (2006)       */
/*    Excercise 12.1 -  Fast Fourier Transformation   */

#include<stdio.h>
#include<math.h>
#define NRANSI
#include<nr.h>
#include<nrutil.h>
#define N 4
#define Pi 3.141592654

float f(float x){return 1.0 + 2.0*sin(x) + 3.0*cos(2.0*x);}

int main(void){
  float data[2*N+1];
  float x0=0.0;
  float x1=2*Pi;
  float delta;
  int i;

  delta = (x1-x0)/(1.0*N);

  for(i=1;i<=N;i++){
    data[2*i-1] = f(x0 + 1.0*(i-1)*delta);
    data[2*i] = 0.0;
  }

  four1(data,N,1);

  for(i=1;i<=N;i++){
  printf("%f %f\n",data[2*i-1],data[2*i]);
  }

  return 0;
}