function [d,a ] =  generate(a)

if( a.seed>0) RandStream.setDefaultStream(RandStream('mcg16807', 'Seed',a.seed));   end;

Z=unifrnd(-a.cov_r,a.cov_r,a.n,a.dim);
coef=unifrnd(a.coef_r-2,a.coef_r,a.corrdim,1);
for i=1:a.corrdim
    Z(:,i)=coef(i).*Z(:,i);
end

temp=0;
for i=1:(a.corrdim-1)
    temp=temp+Z(:,i).*Z(:,i+1)./(1+Z(:,i).^2);
end;
Y=temp;
d=data(Z,Y);
