Atyfun: compute sum_{k=1}^m yk*Ak. % % DSA_BD_Atyfun(blk,At,y,normalize,AL) % % SDPT3: version 3.1 % Copyright (c) 1997 by % K.C. Toh, M.J. Todd, R.H. Tutuncu % Last Modified: 16 Sep 2004 % %**********************************************************%%********************************************************** % DSA_BD: % Modified by C.Ortiz % Last Modified: 3/31/2011
0001 % Atyfun: compute sum_{k=1}^m yk*Ak. 0002 %% 0003 %% DSA_BD_Atyfun(blk,At,y,normalize,AL) 0004 %% 0005 %% SDPT3: version 3.1 0006 %% Copyright (c) 1997 by 0007 %% K.C. Toh, M.J. Todd, R.H. Tutuncu 0008 %% Last Modified: 16 Sep 2004 0009 %% 0010 %%**********************************************************%%********************************************************** 0011 %% DSA_BD: 0012 %% Modified by C.Ortiz 0013 %% Last Modified: 3/31/2011 0014 0015 function Q = DSA_BD_Atyfun(blk,At,y,normalize,AL) 0016 if (nargin < 4); AL = []; end 0017 if isempty(AL) || normalize <= 1; existAL = 0; else existAL = 1; end; 0018 0019 % isspAy = ones(size(blk,1),1); 0020 Q = cell(size(blk,1),1); 0021 %% 0022 if (existAL) 0023 if strcmp(AL.matfct_options,'chol') 0024 y = AL.R \ y; 0025 elseif strcmp(AL.matfct_options,'spcholmatlab') 0026 y = AL.S*(AL.R \ y);%mexbwsolve(AL.Rt,y); 0027 end 0028 end 0029 if iscell(At) 0030 for p = 1:size(blk,1) 0031 pblk = blk(p,:); 0032 if strcmp(pblk{1},'s') 0033 Q{p} = mexsmat(pblk,At{p,1}*y); 0034 elseif strcmp(pblk{1},'l') || strcmp(pblk{1},'u') 0035 Q{p} = At{p,1}*y; 0036 end 0037 end 0038 else 0039 if strcmp(blk{1,1},'s') 0040 Q = mexsmat(blk,At*y); 0041 elseif strcmp(blk{1,1},'l') || strcmp(blk{1,1},'u') 0042 Q = At*y; 0043 end 0044 end 0045 %%********************************************************* 0046