|
|
|
@ -75,7 +75,6 @@ subroutine msort_dw(n,k,l,iret)
|
|
|
|
integer(psb_ipk_) :: k(n),l(0:n+1)
|
|
|
|
integer(psb_ipk_) :: k(n),l(0:n+1)
|
|
|
|
!
|
|
|
|
!
|
|
|
|
integer(psb_ipk_) :: p,q,s,t
|
|
|
|
integer(psb_ipk_) :: p,q,s,t
|
|
|
|
intrinsic iabs,isign
|
|
|
|
|
|
|
|
! ..
|
|
|
|
! ..
|
|
|
|
iret = 0
|
|
|
|
iret = 0
|
|
|
|
! first step: we are preparing ordered sublists, exploiting
|
|
|
|
! first step: we are preparing ordered sublists, exploiting
|
|
|
|
@ -98,7 +97,7 @@ subroutine msort_dw(n,k,l,iret)
|
|
|
|
iret = 1
|
|
|
|
iret = 1
|
|
|
|
return
|
|
|
|
return
|
|
|
|
else
|
|
|
|
else
|
|
|
|
l(n+1) = iabs(l(n+1))
|
|
|
|
l(n+1) = abs(l(n+1))
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
mergepass: do
|
|
|
|
mergepass: do
|
|
|
|
@ -117,7 +116,7 @@ subroutine msort_dw(n,k,l,iret)
|
|
|
|
|
|
|
|
|
|
|
|
if (k(p) < k(q)) then
|
|
|
|
if (k(p) < k(q)) then
|
|
|
|
|
|
|
|
|
|
|
|
l(s) = isign(q,l(s))
|
|
|
|
l(s) = sign(q,l(s))
|
|
|
|
s = q
|
|
|
|
s = q
|
|
|
|
q = l(q)
|
|
|
|
q = l(q)
|
|
|
|
if (q > 0) then
|
|
|
|
if (q > 0) then
|
|
|
|
@ -138,7 +137,7 @@ subroutine msort_dw(n,k,l,iret)
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
l(s) = isign(p,l(s))
|
|
|
|
l(s) = sign(p,l(s))
|
|
|
|
s = p
|
|
|
|
s = p
|
|
|
|
p = l(p)
|
|
|
|
p = l(p)
|
|
|
|
if (p>0) then
|
|
|
|
if (p>0) then
|
|
|
|
@ -163,7 +162,7 @@ subroutine msort_dw(n,k,l,iret)
|
|
|
|
p = -p
|
|
|
|
p = -p
|
|
|
|
q = -q
|
|
|
|
q = -q
|
|
|
|
if (q == 0) then
|
|
|
|
if (q == 0) then
|
|
|
|
l(s) = isign(p,l(s))
|
|
|
|
l(s) = sign(p,l(s))
|
|
|
|
l(t) = 0
|
|
|
|
l(t) = 0
|
|
|
|
exit outer
|
|
|
|
exit outer
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|