function biga = op_biga( X, Zi, store_a, nonz) % evaluate system matrix using X and Zi; % call: biga = op_biga( X, Zi, store_a, nonz) [ m, m1] = size( nonz); % dimension of dual [ n, m1] = size( X); % dimension of primal biga = zeros( m); % initialise last = 0; for i = 1:m; % first we have to form (X * A_i * inv(Z)) first = last + 1; last = first + nonz( i) - 1; tmp = zeros( n); for j = first : last; i1 = store_a( 1, j); i2 = store_a( 2, j); w = store_a( 3, j); xi1 = X( :, i1); xi2 = X( :, i2); zi1 = Zi( :, i1); zi2 = Zi( :, i2); if i1 == i2; tmp = tmp + w * xi1 * zi1'; else tmp = tmp + w * (xi1 * zi2'+ xi2 * zi1'); end; end; biga( :, i) = op_a( tmp, store_a, nonz); end;