module OW_hadam

implicit none

contains

subroutine owhadamard(i,j,k,n,h)

integer		:: i,j,k,n,h

j=iand(ieor(ishift(j,1),ieor(i,k)),j)
do i=1,n-1
   j=bitxor(ishift(j,-1),iand(j,1))
end do
h=(-1)^j

end subroutine

end module
