/* readdata.c */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "shellsort.h"

int data_t[3000], data_n, log_n;
float data_v[3000][5];
double log_v[3000];
char infile[] = "nya90-97.data";

/* select value 1 <= N <= 5 */
const int N = 1; 

/*
	outputs sorted values of log (today/yesterday)
	data from NYSE Statistics Archive at http://www.nyse.com/
	format is
		Day,Composite,Industrial,Transportation,Utility,Financial
	where Day is elapsed days since 1/2/90
*/

static void error (char msg[])
{
	fprintf (stderr, "%s\n", msg);
	exit (1);
}

static void read_data (void)
{
	FILE *fp;
	const int N = 256;
	char line[N];
	int i;

	fp = fopen (infile, "r");
	if (fp == NULL) error ("can't open input file");
	for (i=0; ; ++i) {
		if (fgets (line, N, fp) == NULL) break;
		if (sscanf (line, "%d,%f,%f,%f,%f,%f", data_t+i,
			data_v[i], data_v[i]+1, data_v[i]+2, data_v[i]+3, data_v[i]+4) != 6)
			break; 
	}
	data_n = i - 1;
}

static void chew_data (int k)
{
	int i, j;
	
	for (i=1, j=0; i<data_n; ++i) {
		if (data_t[i] - data_t[i-1] != 1) continue;
		log_v[j++] = log (data_v[i][k-1] / data_v[i-1][k-1]);
	}
	log_n = j;
	shellsort (log_v, log_n);
	for (i=0; i<log_n; ++i)
		printf ("%12.4f\n", log_v[i]);
}

int main ()
{
	read_data ();
	chew_data (N);
}