29 lines
694 B
Fortran
29 lines
694 B
Fortran
SUBROUTINE eulsum(sum,term,jterm,wksp)
|
|
INTEGER jterm
|
|
REAL sum,term,wksp(jterm)
|
|
INTEGER j,nterm
|
|
REAL dum,tmp
|
|
SAVE nterm
|
|
if(jterm.eq.1)then
|
|
nterm=1
|
|
wksp(1)=term
|
|
sum=0.5*term
|
|
else
|
|
tmp=wksp(1)
|
|
wksp(1)=term
|
|
do 11 j=1,nterm-1
|
|
dum=wksp(j+1)
|
|
wksp(j+1)=0.5*(wksp(j)+tmp)
|
|
tmp=dum
|
|
11 continue
|
|
wksp(nterm+1)=0.5*(wksp(nterm)+tmp)
|
|
if(abs(wksp(nterm+1)).le.abs(wksp(nterm)))then
|
|
sum=sum+0.5*wksp(nterm+1)
|
|
nterm=nterm+1
|
|
else
|
|
sum=sum+wksp(nterm+1)
|
|
endif
|
|
endif
|
|
return
|
|
END
|