function C = max_star(A, B, star)
%MAX_STAR returns the max-star composition of given matrices.
%	MAX_STAR(A, B, STAR) returns the max-star composition of A and B.
%	STAR is either 'min' or 'prod'.

%	Roger Jang, 6-28-93.

[m,n] = size(A);
[p,q] = size(B);

if (n ~= p) error('Given matrices have incompatible sizes.'); end
if nargin == 2, star = 'min'; end
if nargin < 2, error('Need at least two input argument.'); end
if ~strcmp(star, 'min') & ~strcmp(star, 'prod'),
	error('The third argument should be either ''min'' or ''prod''.');
end

C = zeros(m,q);
for i = 1:m
	for j = 1:q
		C(i,j) = 0;
		for k=1:n
			if strcmp(star, 'min'),
				tmp = min(A(i, k), B(k, j));
			else
				tmp = A(i, k)*B(k, j);
			end
			C(i,j) = max(C(i,j), tmp);
		end

	end
end
