I would proceed as follows:
1) Implement trigonometric polynomial at equidistant 'theta' nodes by means of an 'fft'.
Sampling density on 'theta' axis can be increased by interleaving zeros between subsequent elements of the input vector
e.q c[-N] 0 0 0 c[-N+1] 0 0 0 ... c[N-1] 0 0 0 c[N]
2) Call 'max' function of Matlab to find maximal value and its index.
This should compute reasonably fast and you can trade the speed for accuracy by increasing the number of zeros.
UPDATE:
I have to correct myself - sampling density can be increased by zero-padding vector $c$ rather than interleaving zeros.
Following Matlab script demonstrates the idea by computing approximated values of a trigonometric polynomial by means of FFT.
% Create 'c' coefficients of a trigonometric polynomial approximation of a
% shifted sinc function
N = 6;
shift = -pi/N;
cc = fftshift(ifft(conj(sinc(linspace(-2*pi+shift,2*pi+shift,2*N+1)))));
% Evaluate trigonometric polynomial computing it directly according to definition
% Maximal value of this trigonometric polynomial is ~0.923
theta = [0:-0.01:-2*pi];
[NN,THETA]=meshgrid([-N:N], theta);
y = (exp(i.*NN.*THETA)*cc.').';
% Plot the densely sampled trigonometric polynomial
figure;
plot(theta,real(y));
% Sample trigonometric polynomial at equidistant nodes using FFT
% theta = [-2*pi*[0:N-1]./N]
fft_approx{1} = conj(fft(ifftshift(cc)));
% Overlay the plot
hold on;
plot(-2*pi*[0:2*N]./(2*N+1),fft_approx{1},'.:r');
% Find a maximum value
max_val{1} = max(real(fft_approx{1}));
% Increase the sampling density 5 times using zero-padding
os_factor = 5;
zpad = zeros(1,numel(cc)*floor(os_factor/2));
cc_padded = [ zpad cc zpad];
% Sample trigonometric polynomial at a denser grid using FFT
fft_approx{2} = conj(fft(ifftshift(cc_padded)));
% Overlay the plot
hold on;
plot(-2*pi*[0:numel(fft_approx{2})-1]./numel(fft_approx{2}),real(fft_approx{2}),'.:g');
% Find a maximum value
max_val{2} = max(real(fft_approx{2}));
% Annotate the graph
legend('Original trigonometric polynomial',...
sprintf('Sampled at %d points using fft',numel(fft_approx{1})),...
sprintf('Sampled at %d points using fft',numel(fft_approx{2})));
% Display approximated maximal values
fprintf('-----------------------------------------------------\n');
fprintf('%d-points fft approximation of the maximal value = %g\n',numel(fft_approx{1}),max_val{1});
fprintf('%d-points fft approximation of the maximal value = %g\n',numel(fft_approx{2}),max_val{2});
fprintf('-----------------------------------------------------\n');
fprintf('True maximal value to 3 decimal places is 0.923\n');