function z = zern(r,a)

rsq = r.*r;
z(:,1)= ones(size(rsq));
z(:,2)= polyval([2 -1],rsq);
z(:,3)= polyval([6 -6 1],rsq);
z(:,4)= polyval([20 -30 12 -1],rsq);
z(:,5)= polyval([70 -140 90 -20 1],rsq);
z(:,6)= polyval([252 -630 560 -210 30 -1],rsq);
z(:,7)= polyval([924 -2772 3150 -1680 420 -42 1],rsq);

if (nargin<2)
    return;
end

for i=1:7
    z(i,:) = a(i)*z(i,:);
end