function [xpacf,phi,vr,errc] = NAGpacf(xro,np,errc)
%     ODHAD PARCIALNI AUTOKORELACNI FUNKCE REALNE 1-ROZMERNE CASOVE RADY
%                UZITIM DURBIN-LEVINSONOVA ALGORITMU
%         (Gateway to NAG Foundation toolbox routine G13ACF)
% VOLANI: [xpacf,phi,vr,errc] = NAGpacf(xro,np,errc)
% VSTUP:
% xro  ... odhad autokorelacni funkce casove rady X(t) ziskany pomoci
%          'NAGacf' (vektor nq x 1).
% np   ... pozadovana delka parcialni autokorelacni funkce pro h=1,2,...,np
%          0<np<=nq (nepovinny nebo []: implicitne np=nq)
% 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:
% xpacf... odhad parcialni autokorelacni funkce (vektor p x 1, p<=np):
%          xpacf(h) = parcialni korelacni koeficient mezi X(t+h) a X(t)
%          pro h=1,2,...,p.
% phi  ... koeficienty (vektor p x 1) nejlepsi linearni predikce
%          X(p+1) pomoci X(j),1<=j<=p:
%          Xest(p+1)=phi(1)*X(p)+phi(2)*X(p-1)+...+phi(p)*X(1) + Z(p+1)
%          Jestlize X je AR(p) proces potom 'phi' je odhad jeho
%          autoregresnich koeficientu.
% vr   ... podily odhadu strednich kvadrat. chyb predpovedi (vektor p x 1):
%          vr(k) = (E(Xest(k+1)-X(k+1))^2)/var(X(1)) pro 1<=k<=p.
%          Je-li X AR(p) proces, pak vr(p)*var(X(1)) je odhad rezidualniho
%          rozptylu 'v' generujiciho bileho sumu Z(t).
% errc  ... navratovy kod uspesnosti:
%           = 0 ... uspesne provedeni
%           ~=0 ... neuspesne provedeni, kod chyby udava pricinu
%           1 ... np a nq nekompatibilni: nq<=0 nebo np<=0 nebo nq<np
%           2 ... |xro(1)|>1
%           3 ... 'xro' neni pozitivne definitni: p<np udava maximalni
%                 pocatecni usek 'xro', ktery je pozitivne definitni, tj.
%                 p udava pocet platne spoctenych hodnot xpacf, phi a v.
%           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, np = []; end
%
errc = ~strcmp(errc,'-');
if isempty(np), np=length(xro); end
%
[xpacf,vr,phi,p,ifail] = g13acf(xro,np,1);
%
if errc
   switch ifail
   case 1, error('errc=1: incompatible lengths ''np'' and ''nq''');
   case 2, error('errc=2: invalid ''xro'' due to |xro(1)|>1');
   case 3, disp([char(7),char(7),'??? Warning using ==> nagpacf']);
           disp(['errc=3: ''xro'' is not positive definite',...
                 ' => np reduced to p=',num2str(p)]);
   otherwise
     if ifail~=0
        error(['errc=',num2str(ifail),': unidentified error code']);
     end
   end
end
errc  = ifail;
xpacf = xpacf(1:p);
phi   = phi(1:p);
vr    = vr(1:p);
