#!/usr/bin/perl

use Math::FFT;

use strict;

my $PI = 3.1415926539;
my $N = 64;

my $series;
for (my $k = 0 ; $k < $N ; $k++) {
	$series->[2*$k] = sin(4*$k*$PI/$N) + cos(6*$k*$PI/$N);
	$series->[2*$k+1] = 0.0;
}

my $fft = new Math::FFT($series);
my $coeff = $fft->cdft();
my $original_data = $fft->invcdft($coeff);

open(OUT, ">a.csv");
print OUT "x,A,B,Ainv,Binv,original\n";
for(my $i = 0 ; $i < $N ; $i++) {
	my $A = $coeff->[2*$i];
	my $B = $coeff->[2*$i+1];
	my $Ainv = $original_data->[2*$i];
	my $Binv = $original_data->[2*$i+1];
	my $org = $series->[2*$i];
	print OUT "$i,$A,$B,$Ainv,$Binv,$org\n";
}
close(OUT);