function fx = subsref(p, S)
% @polynom/subsref - indexace do polynomu
% priklad: p(1) ... vyhodnoti 'p' v bode 1
%          p(vektor) ... vyhodnoti 'p' ve vsech bodech vektoru
%          p{1} ... vraci koeficient u 1ni mocniny 'x' v polynomu 'p'
%          p{0,3} ... vraci abs. clen a koeficient u 3. mocniny polynomu 'p'
switch S.type
    case '()'
        x = S.subs{1}; % v cem to budeme vyhodnocovat?
        x = x(:)'; % aby 'x' byl radkovy vektor
        fx = polyval(p.koeficienty, x); % fcni hodnoty polynomu
    case '{}'
        d = length(p.koeficienty); % delka vektoru koeficientu
        ii = cell2mat(S.subs); % jaky index mame vratit?
        ii = ii(:)';
        if any(ii~=fix(ii)) || any(ii<0) || any(ii>=d)  % 'ii' neni cele cislo nebo nelezi v "rozsahu polynomu"
            error(['Index smi byt cele cislo od nuly do ' num2str(d-1)])
        else
            fx = p.koeficienty(d-ii);
        end
    otherwise
        error('Polynom vyhodnotite pomoci () a indexujete pomoci {}.')
end
