mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-20 04:42:08 +00:00
Reimplemented merge-sort inner routine.
This commit is contained in:
@@ -147,7 +147,7 @@ c
|
||||
if (debug) write(0,*) 'build check :',ia2n(ip1+psb_nnzt_)
|
||||
|
||||
c .... order with key ia1n ...
|
||||
call mrgsrt(nnz,ia1n,aux,iret)
|
||||
call msort_up(nnz,ia1n,aux,iret)
|
||||
if (iret.eq.0) call reordvn3(nnz,arn,ia1n,ia2n,aux(ipx),aux)
|
||||
c .... order with key ia2n ...
|
||||
|
||||
@@ -159,7 +159,7 @@ c .... order with key ia2n ...
|
||||
j = j+1
|
||||
enddo
|
||||
nzl = j - i
|
||||
call mrgsrt(nzl,ia2n(i),aux,iret)
|
||||
call msort_up(nzl,ia2n(i),aux,iret)
|
||||
if (iret.eq.0) call reordvn3(nzl,arn(i),ia1n(i),ia2n(i),
|
||||
+ aux(ipx+i-1),aux)
|
||||
i = j
|
||||
@@ -198,7 +198,7 @@ c ... add the duplicated element ...
|
||||
else
|
||||
|
||||
c .... order with key ia1n ...
|
||||
call mrgsrt(nnz,ia1n,aux,iret)
|
||||
call msort_up(nnz,ia1n,aux,iret)
|
||||
if (iret.eq.0) call reordvn(nnz,arn,ia1n,ia2n,aux)
|
||||
c .... order with key ia2n ...
|
||||
|
||||
@@ -210,7 +210,7 @@ c .... order with key ia2n ...
|
||||
j = j+1
|
||||
enddo
|
||||
nzl = j - i
|
||||
call mrgsrt(nzl,ia2n(i),aux,iret)
|
||||
call msort_up(nzl,ia2n(i),aux,iret)
|
||||
if (iret.eq.0) call reordvn(nzl,arn(i),ia1n(i),ia2n(i),
|
||||
+ aux)
|
||||
i = j
|
||||
|
||||
@@ -157,7 +157,7 @@ c$$$ + ip1,ip2,nnz,ian2(ip1+nnzt_)
|
||||
|
||||
if (debug) write(0,*) 'Build check :',ian2(ip1+psb_nnzt_)
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN3(NNZ,AR,IA,JA,AUX(IPX),AUX)
|
||||
if (debug) then
|
||||
do i=1, nnz-1
|
||||
@@ -183,7 +183,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN3(NZL,AR(I),IA(I),JA(I),
|
||||
+ AUX(IPX+I-1),AUX)
|
||||
I = J
|
||||
@@ -250,7 +250,7 @@ C ... Sum the duplicated element ...
|
||||
ELSE
|
||||
c$$$ write(0,*) 'Going for ELSE !!!?'
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NNZ,AR,IA,JA,AUX)
|
||||
C .... Order with key IA2N ...
|
||||
I = 1
|
||||
@@ -266,7 +266,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NZL,AR(I),IA(I),JA(I),AUX)
|
||||
I = J
|
||||
ENDDO
|
||||
@@ -343,7 +343,7 @@ c$$$ endif
|
||||
ELSE IF (DESCRA(1:1).EQ.'T' .AND. DESCRA(2:2).EQ.'U') THEN
|
||||
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NNZ,AR,IA,JA,AUX)
|
||||
C .... Order with key IA2N ...
|
||||
I = 1
|
||||
@@ -359,7 +359,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NZL,AR(I),IA(I),JA(I),AUX)
|
||||
I = J
|
||||
ENDDO
|
||||
@@ -443,7 +443,7 @@ C ... Sum the duplicated element ...
|
||||
ELSE IF (DESCRA(1:1).EQ.'T' .AND. DESCRA(2:2).EQ.'L') THEN
|
||||
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NNZ,AR,IA,JA,AUX)
|
||||
C .... Order with key IA2N ...
|
||||
I = 1
|
||||
@@ -459,7 +459,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NZL,AR(I),IA(I),JA(I),AUX)
|
||||
I = J
|
||||
ENDDO
|
||||
|
||||
@@ -53,7 +53,7 @@ C Compute number of nnzero elements per row
|
||||
C Sorting Array work
|
||||
C ........................
|
||||
|
||||
CALL MRGSRT(M,WORK,WORK(M+1),IRET)
|
||||
CALL MSORT_UP(M,WORK,WORK(M+1),IRET)
|
||||
IF (IRET.EQ.0) THEN
|
||||
C Construct IPERM Vector
|
||||
LP = WORK(M+1)
|
||||
|
||||
@@ -132,7 +132,7 @@ C SCALE = (UNITD.EQ.'L') ! meaningless
|
||||
|
||||
|
||||
C .... Order with key IA1N....
|
||||
CALL MRGSRT(NNZ,IA1N,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA1N,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NNZ,ARN,IA1N,IA2N,AUX)
|
||||
|
||||
C .... Order with key IA2N ...
|
||||
@@ -144,7 +144,7 @@ C .... Order with key IA2N ...
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,IA2N(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,IA2N(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL REORDVN(NZL,ARN(I),IA1N(I),IA2N(I),
|
||||
+ AUX)
|
||||
I = J
|
||||
|
||||
@@ -160,7 +160,7 @@ C FOR CURRENT GROUP
|
||||
C
|
||||
L1 = IWORK2(LEV+1) - IWORK2(LEV)
|
||||
L0 = IWORK2(LEV) - 1
|
||||
CALL MRGSRT(L1,IWORK1(IWORK2(LEV)),IPAT,IRET)
|
||||
CALL MSORT_UP(L1,IWORK1(IWORK2(LEV)),IPAT,IRET)
|
||||
IF (IRET.EQ.0) THEN
|
||||
NP = IPAT(1)
|
||||
DO 280 L = 1, L1
|
||||
|
||||
@@ -146,7 +146,7 @@ c
|
||||
if (debug) write(0,*) 'build check :',ia2n(ip1+psb_nnzt_)
|
||||
|
||||
c .... order with key ia1n ...
|
||||
call mrgsrt(nnz,ia1n,aux,iret)
|
||||
call msort_up(nnz,ia1n,aux,iret)
|
||||
if (iret.eq.0)
|
||||
+ call zreordvn3(nnz,arn,ia1n,ia2n,aux(ipx),aux)
|
||||
c .... order with key ia2n ...
|
||||
@@ -159,7 +159,7 @@ c .... order with key ia2n ...
|
||||
j = j+1
|
||||
enddo
|
||||
nzl = j - i
|
||||
call mrgsrt(nzl,ia2n(i),aux,iret)
|
||||
call msort_up(nzl,ia2n(i),aux,iret)
|
||||
if (iret.eq.0) call zreordvn3(nzl,arn(i),ia1n(i),ia2n(i),
|
||||
+ aux(ipx+i-1),aux)
|
||||
i = j
|
||||
@@ -198,7 +198,7 @@ c ... sum the duplicated element ...
|
||||
else
|
||||
|
||||
c .... order with key ia1n ...
|
||||
call mrgsrt(nnz,ia1n,aux,iret)
|
||||
call msort_up(nnz,ia1n,aux,iret)
|
||||
if (iret.eq.0) call zreordvn(nnz,arn,ia1n,ia2n,aux)
|
||||
c .... order with key ia2n ...
|
||||
|
||||
@@ -210,7 +210,7 @@ c .... order with key ia2n ...
|
||||
j = j+1
|
||||
enddo
|
||||
nzl = j - i
|
||||
call mrgsrt(nzl,ia2n(i),aux,iret)
|
||||
call msort_up(nzl,ia2n(i),aux,iret)
|
||||
if (iret.eq.0) call zreordvn(nzl,arn(i),ia1n(i),ia2n(i),
|
||||
+ aux)
|
||||
i = j
|
||||
|
||||
@@ -157,7 +157,7 @@ c$$$ + ip1,ip2,nnz,ian2(ip1+nnzt_)
|
||||
|
||||
if (debug) write(0,*) 'Build check :',ian2(ip1+psb_nnzt_)
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN3(NNZ,AR,IA,JA,AUX(IPX),AUX)
|
||||
if (debug) then
|
||||
do i=1, nnz-1
|
||||
@@ -183,7 +183,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN3(NZL,AR(I),IA(I),JA(I),
|
||||
+ AUX(IPX+I-1),AUX)
|
||||
I = J
|
||||
@@ -244,7 +244,7 @@ C ... Sum the duplicated element ...
|
||||
ELSE
|
||||
c$$$ write(0,*) 'Going for ELSE !!!?'
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN(NNZ,AR,IA,JA,AUX)
|
||||
C .... Order with key IA2N ...
|
||||
I = 1
|
||||
@@ -260,7 +260,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN(NZL,AR(I),IA(I),JA(I),AUX)
|
||||
I = J
|
||||
ENDDO
|
||||
@@ -337,7 +337,7 @@ C ... Sum the duplicated element ...
|
||||
ELSE IF (DESCRA(1:1).EQ.'T' .AND. DESCRA(2:2).EQ.'U') THEN
|
||||
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN(NNZ,AR,IA,JA,AUX)
|
||||
C .... Order with key IA2N ...
|
||||
I = 1
|
||||
@@ -353,7 +353,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN(NZL,AR(I),IA(I),JA(I),AUX)
|
||||
I = J
|
||||
ENDDO
|
||||
@@ -437,7 +437,7 @@ C ... Sum the duplicated element ...
|
||||
ELSE IF (DESCRA(1:1).EQ.'T' .AND. DESCRA(2:2).EQ.'L') THEN
|
||||
|
||||
C .... Order with key IA ...
|
||||
CALL MRGSRT(NNZ,IA,AUX,IRET)
|
||||
CALL MSORT_UP(NNZ,IA,AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN(NNZ,AR,IA,JA,AUX)
|
||||
C .... Order with key IA2N ...
|
||||
I = 1
|
||||
@@ -453,7 +453,7 @@ c$$$ + (J.LE.NNZ))
|
||||
J = J+1
|
||||
ENDDO
|
||||
NZL = J - I
|
||||
CALL MRGSRT(NZL,JA(I),AUX,IRET)
|
||||
CALL MSORT_UP(NZL,JA(I),AUX,IRET)
|
||||
IF (IRET.EQ.0) CALL ZREORDVN(NZL,AR(I),IA(I),JA(I),AUX)
|
||||
I = J
|
||||
ENDDO
|
||||
|
||||
Reference in New Issue
Block a user