copulafit.m
function nll = negloglike_t(nu, R, t)
% Compute negative log-likelihood for a t copula at nu and R = chol(Rho)
[n,d] = size(t);
% R = R ./ repmat(sqrt(sum(R.^2,1)),d,1);
R = bsxfun(@rdivide, R, sqrt(sum(R.^2,1)));
% nll = -sum(log(mvtpdf(t,R'*R,nu)) - sum(log(tpdf(t,nu)),2)),
% where t = tinvLocal(u,nu)
tRinv = t / R;
nll = - n*gammaln((nu+d)/2) + n*d*gammaln((nu+1)/2) - n*(d-1)*gammaln(nu/2) ...
+ n*sum(log(abs(diag(R)))) ...
+ ((nu+d)/2)*sum(log(1+sum(tRinv.^2, 2)./nu)) ...
- ((nu+1)/2)*sum(sum(log(1+t.^2./nu),2),1);
end