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

#include "bnc.h"

#define MAX_LENGTH 1024

#define DEG 20

int main(int argc, char *argv[])
{
	long int i, dtimes;
	FILE *dcoef;

	CDArray cdans, cdinit;
	DPoly df;
	double dabs_eps, drel_eps;
	double start, endtime;

	/* init */
	dabs_eps = 1.0e-100;
	drel_eps = 1.0e-7;
	df = init_dpoly(MAX_LENGTH);

	cdans = init_cdarray(DEG);
	cdinit = init_cdarray(DEG);

	/* Input coefficients */
	dcoef = fopen("polycoef20.dat", "r");
	fread_dpolycoef(dcoef, df, DEG);
	fclose(dcoef);

	print_dpoly(df);

	/* set Aberth's initial value */
	ddka_init(cdinit, df);
//	print_cdarray(cdinit);

	/* DKA method */
	start = get_secv();
	dtimes = ddka(cdans, cdinit, df, 1000, dabs_eps, drel_eps);
	endtime = get_secv() - start;

	/* print answer */
	printf("Iterative times: %d\n", dtimes);
	print_cdarray(cdans);

	/* clear */
	free_dpoly(df);
	free_cdarray(cdans);
	free_cdarray(cdinit);

	printf("double_DKA     : %f sec\n", endtime);

	return EXIT_SUCCESS;
}
