function [xro,xv,xmi,stat,errc] = NAGacf(x,nq,errc)
%         ODHAD AUTOKORELACNI FUNKCE REALNE 1-ROZMERNE CASOVE RADY
%            (Gateway to NAG Foundation toolbox routine G13ABF)
% VOLANI: [xro,xv,xmi,stat,errc] = NAGacf(x,nq,errc)
% VSTUP:
% x    ... vektor pozorovani casove rady X(t) delky n
% nq   ... pozadovana delka autokorelacni funkce pro h=1,2,...,nq, nq<n
%          ( nepovinny nebo []: implicitne nq=ceil(n/4)-1 )
% errc ... rizeni vypisu chyboveho hlaseni (nepovinny znakovy parametr):
%          '+' ... povoleni vypisu vysvetlujiciho chyboveho hlaseni
%                  pri vyskytu chyby (implicitni hodnota pri vynechani)
%          '-' ... potlaceni vypisu chyboveho hlaseni
%          Pouziti jakehokoli jineho retezce ma stejny efekt jako '+'.
%
% VYSTUP:
% xro  ... odhad autokorelacni funkce (vektor nq x 1):
%          xro(h) = cov(X(t+h),X(t))/var(X(t)) pro h=1,2,...,nq
% xv   ... odhad rozptylu X: xv = std(x)^2
% xmi  ... odhad stredni hodnoty X: xmi = mean(x)
% stat ... testova portmanteau statistika: stat=n*sum(xro.^2)
%          za hypotezy xro(h)=0 pro h=1:nq a pri nq<<n (doporuceno nq=sqrt(n))
%          ma 'stat' rozdeleni chi^2(nq) a muze byt uzita k testovani nulovosti
%          xro: stat > chi2inv(1-alpha,nq) => s rizikem 'alpha' zamitame
%          hypotezu, ze 'xro' je identicky nulova, tj. 'x' neni bily sum
%          s rizikem 'alpha'.
%          Pokud 'x' reprezentuje rezidua diferencovane rady po odhadu modelu,
%          pak statistika 'stat' ma rozlozeni chi^2(nq-Npar), tj. pocet stupnu
%          volnosti je treba zmensit o pocet parametru Npar=p+q+P+Q v SARMA
%          modelu diferencovane rady.
% errc ... navratovy kod uspesnosti:
%          = 0 ... uspesne provedeni
%          ~=0 ... neuspesne provedeni, kod chyby udava pricinu
%          1 ... n a nq nekompatibilni: n<=nq nebo n<=1 nebo nq<=0
%          2 ... x je skoro konstantni: v=0, xro a stat nejsou definovany
%          Je-li procedura volana z programu, mel by byt vystupni kod vzdy
%          testovan, nebot nasledny vypocet by jinak byl nekorektni.

% (C) 1999, V. Vesely, Masaryk University of Brno (Czech Republic)
%
error(nargchk(1,3,nargin));
if nargin<3, errc = []; end
if nargin<2, nq = []; end
%
n = length(x);
errc = ~strcmp(errc,'-');
if isempty(nq), nq=ceil(n/4)-1; end
%
[xmi,xv,xro,stat,ifail] = g13abf(x,nq,1);
%
if errc
   switch ifail
   case 1, error('errc=1: incompatible lengths ''n'' and ''nq''');
   case 2,
     error('errc=2: time series ''x'' exhibits nearly constant behaviour');
   otherwise
     if ifail~=0
        error(['errc=',num2str(ifail),': unidentified error code']);
     end
   end
end
errc = ifail;
