function [detval,time1] = sem_lndet(ldetflag,W,rmin,rmax,detval,order,iter); % PURPOSE: compute the log determinant |I_n - rho*W| % using the user-selected (or default) method % --------------------------------------------------- % USAGE: detval = far_lndet(lflag,W,rmin,rmax) % where eflag,rmin,rmax,W contains input flags % and the outputs are either user-inputs or default values % --------------------------------------------------- % do lndet approximation calculations if needed if ldetflag == 0 % no approximation t0 = clock; out = lndetfull(W,rmin,rmax); time1 = etime(clock,t0); tt=rmin:.001:rmax; % interpolate a finer grid outi = interp1(out.rho,out.lndet,tt','spline'); detval = [tt' outi]; elseif ldetflag == 1 % use Pace and Barry, 1999 MC approximation t0 = clock; out = lndetmc(order,iter,W,rmin,rmax); time1 = etime(clock,t0); results.limit = [out.rho out.lo95 out.lndet out.up95]; tt=rmin:.001:rmax; % interpolate a finer grid outi = interp1(out.rho,out.lndet,tt','spline'); detval = [tt' outi]; elseif ldetflag == 2 % use Pace and Barry, 1998 spline interpolation t0 = clock; out = lndetint(W,rmin,rmax); time1 = etime(clock,t0); tt=rmin:.001:rmax; % interpolate a finer grid outi = interp1(out.rho,out.lndet,tt','spline'); detval = [tt' outi]; elseif ldetflag == -1 % the user fed down a detval matrix time1 = 0; % check to see if this is right if detval == 0 error('sem: wrong lndet input argument'); end; [n1,n2] = size(detval); if n2 ~= 2 error('sem: wrong sized lndet input argument'); elseif n1 == 1 error('sem: wrong sized lndet input argument'); end; end;