function [F,valmis] =integroi3(f,z0,w0,A)
%Integroi kompleksisen funktion
%
%[F] =integroi(f,z0,w0)

[T,~]=size(f);
TT=T-1;
L=1/TT;

F=0*f;
valmis=F;

%W=round(TT*[real(z0) imag(z0)]);
W=z0;
a=w0;
F(W(1),W(2))=a;				%kiinnitetään arvo
valmis(W(1),W(2))=1;			%1 piste valmis
uusvalmis=valmis;
s=2/T;
j2=sqrt(2);
%for e=1:10
testi=1;
while any(testi==1),
[n,m]=find(uusvalmis==1);
uusvalmis=0*uusvalmis;
N=length(n);
FF=0*f;
FFF=0*f;
lkm=0*f;
for k=1:N
	q=m(k);
	p=n(k)-1;
	if p~=0,
			FF(p,q,k)=(1-valmis(p,q))*(-f(p+1,q)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end
	p=n(k)+1;
	if p~=T+1,
			FF(p,q,k)=(1-valmis(p,q))*(f(p-1,q)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end
	p=n(k);
	q=m(k)-1;
	if q~=0,
			FF(p,q,k)=(1-valmis(p,q))*(-1i*f(p,q+1)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end
	q=m(k)+1;
	if q~=T+1,
			FF(p,q,k)=(1-valmis(p,q))*(1i*f(p,q-1)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end

	q=m(k)-1;
	p=n(k)-1;
	r=q*p;
	if r~=0,
			FF(p,q,k)=(1-valmis(p,q))*((-1-1i)/j2*f(p+1,q+1)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end
	p=n(k)+1;
	r=q*(p-T-1);
	if r~=0,
			FF(p,q,k)=(1-valmis(p,q))*((1-1i)/j2*f(p-1,q+1)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end
	q=m(k)+1;
	r=(q-T-1)*(p-T-1);
	if r~=0,
			FF(p,q,k)=(1-valmis(p,q))*((1+1i)/j2*f(p-1,q-1)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
	end
	p=n(k)-1;
	r=(q-T-1)*p;
	if r~=0,
			FF(p,q,k)=(1-valmis(p,q))*((-1+1i)/j2*f(p+1,q-1)*s+F(n(k),m(k)));
			lkm(p,q)=lkm(p,q)+(1-valmis(p,q));
    end
end

for j=1:T
for k=1:T
if lkm(j,k)~=0,
FFF(j,k)=sum(FF(j,k,:))/lkm(j,k);
valmis(j,k)=1;
uusvalmis(j,k)=1;
end
end
end
valmis=valmis.*A;
uusvalmis=uusvalmis.*A;
testi=A-valmis;
F=F+FFF;
mean(mean(valmis))
end
end

