mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-09-11 15:56:38 -04:00
46 lines
752 B
Fortran
46 lines
752 B
Fortran
|
subroutine inter_wspr(id,ndir)
|
||
|
|
||
|
! Interleave (ndir=1) or de-interleave (ndir=-1) the array id.
|
||
|
|
||
|
integer*1 id(0:161),itmp(0:161)
|
||
|
integer j0(0:161)
|
||
|
logical first
|
||
|
data first/.true./
|
||
|
save
|
||
|
|
||
|
if(first) then
|
||
|
! Compute the interleave table using bit reversal.
|
||
|
k=-1
|
||
|
do i=0,255
|
||
|
n=0
|
||
|
ii=i
|
||
|
do j=0,7
|
||
|
n=n+n
|
||
|
if(iand(ii,1).ne.0) n=n+1
|
||
|
ii=ii/2
|
||
|
enddo
|
||
|
if(n.le.161) then
|
||
|
k=k+1
|
||
|
j0(k)=n
|
||
|
endif
|
||
|
enddo
|
||
|
first=.false.
|
||
|
endif
|
||
|
|
||
|
if(ndir.eq.1) then
|
||
|
do i=0,161
|
||
|
itmp(j0(i))=id(i)
|
||
|
enddo
|
||
|
else
|
||
|
do i=0,161
|
||
|
itmp(i)=id(j0(i))
|
||
|
enddo
|
||
|
endif
|
||
|
|
||
|
do i=0,161
|
||
|
id(i)=itmp(i)
|
||
|
enddo
|
||
|
|
||
|
return
|
||
|
end subroutine inter_wspr
|