function H = msgpass( Xpot, Rpot, Ypot, varsizes ) % % function H = msgpass( X, R, Y, varDomSize ) % computes a single message pass from X to Y % tree structure: (X)--[R]--(Y) % global varDomSize; varDomSize = varsizes; % projection oldRpot = Rpot; biggerset = Xpot.vars; sumoutset = setdiff(Xpot.vars,Rpot.vars); newpot = Xpot; for i=1:length(sumoutset) newpot = mp_addout( newpot, sumoutset(i) ); end Rpot = newpot; % absorption if any(oldRpot.vals(:)) == 0, % if potential = 0 then set dividend to 0 tmppot = mk_init_mp0( Rpot.vars, varsizes ); else tmppot = mp_div( Rpot, oldRpot ); end; Ypot = mp_mult( Ypot, tmppot ); H{1} = Xpot; H{2} = Rpot; H{3} = Ypot;