#include <oxstd.h>
#include <oxfloat.h>    // required for M_NAN
#import <packages/arfima/arfima>

main()
{
    decl arfima, steps, inicio, dly, jan, AR, MA, teste,veros,MAmax,ARmax,out,npar,AICc,TamAmostra,cont,delta,contlinha,ndiasjan,contador;

	// create an object of class Arfima
    arfima = new Arfima();
  
    // load the data file
    arfima.LoadIn7("Data2.in7");

    arfima.Select(Y_VAR, { "y", 0, 0 } );
    // specify an ARMA(0,d,0) model, estimate by exact ML
	dly = arfima.GetVar("y");

	ARmax=2;
	MAmax=2;

	decl vAIC=new matrix[(ARmax+1)][(MAmax+1)];

	vAIC[0][0]=0;
	cont=0;
    contlinha=0;

	   for (AR=0; AR <=ARmax; ++AR)	 
		{	  
			for (MA=0; MA <= MAmax; ++MA)   

		 	   {

    arfima.ARMA(AR,MA);
    arfima.SetMethod(M_NLS);
    arfima.UseSampleMean();
	
    // select the maximum sample period
    arfima.SetSelSample(1, 1, 1000, 1);

    // print compact iteration output every iteration
    MaxControl(-1,1,1);

    // estimate, automatically prints the results
    println("\nIterating:");
	
	dly = arfima.GetVar("y");
    arfima.Estimate();
	arfima.TestSummary();
	veros=arfima.GetLogLik();
	npar=arfima.GetParCount();
	TamAmostra=arfima.GetSelEnd()-arfima.GetSelStart()+1;
	AICc=(-2*veros+2*(npar+1))/TamAmostra;
//	print("AICc ",AICc,"\n");
	vAIC[AR][MA]=AICc;
	cont++;
    contlinha++;
	 //}
	 }
	 }
    delete arfima;

	print("vAIC ",vAIC,"\n");
}
