clc;
clear all;
signal=load('caijiin.txt');
fid=fopen('caiji_agc_out.txt','w');
pr=114688;
L=length(signal);
x=1:1:L;
a(1)=256;
e_out(1,1)=0;
fprintf(fid,'%d\n',e_out(1,1));
for i=2:L
e_in=signal(i,1);
p_i=e_in*e_in;
po(i,1)=a(i-1)*a(i-1)*p_i;
ee(i,1)=round(po(i,1)/2^30-pr);
if (ee(i,1)>pr/2)
a(i)=a(i-1)-round(a(i-1)/4);
elseif (ee(i,1)>pr/8)&&(ee(i,1)<=pr/2)
a(i)=a(i-1)-round(a(i-1)/16);
elseif (ee(i,1)>pr/64)&&(ee(i,1)<=pr/8)
a(i)=a(i-1)-round(a(i-1)/64);
elseif (ee(i,1)>-pr/8)&&(ee(i,1)<=-pr/64)
a(i)=a(i-1)+round(a(i-1)/64);
elseif (ee(i,1)>-pr/2)&&(ee(i,1)<=-pr/8)
a(i)=a(i-1)+round(a(i-1)/16);
else (ee(i,1)<-pr/2)
a(i)=a(i-1)+round(a(i-1)/2);
end;
eout(i,1)=e_in*a(i);
end