function [b] =bernstein(n,k,N)
%muodostaa Bernsteinin polynomin B^n_k
%Polynomi voidaan kirjoittaa vektorina, jonka pituus on n+1.
%Jos N>n+1, niin vektorista tehdään N pituinen lisäämällä alkuun nollia.

if n<=0
    b=0;
elseif n==0
    b=1;
elseif or(k>n,k<0)
    b=0;
elseif k==0;
    b=[-1 1];
    a=[-1 1];
    for j=1:n-1
        b=conv(b,a);
    end
elseif k==n;
    b=[1 zeros(1,n)];
else
    b=[-1 1];
    a=[-1 1];
    for j=1:n-k-1
        b=conv(b,a);
    end
    c=[1 zeros(1,k)];
    B=length(b);
    C=length(c);
    D=max(B,C);
    b=[zeros(1,D-B),b];
    c=[zeros(1,D-C),c];
    p=factorial(n)/(factorial(k)*factorial(n-k))*conv(b,c);
    b=p(end-n:end);
end
B=length(b);
if N>B
    b=[zeros(1,N-B),b];
end

end

