diff options
Diffstat (limited to 'benchmarks/benchfft/patches/patch-af')
-rw-r--r-- | benchmarks/benchfft/patches/patch-af | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/benchmarks/benchfft/patches/patch-af b/benchmarks/benchfft/patches/patch-af new file mode 100644 index 00000000000..cd933cb2a57 --- /dev/null +++ b/benchmarks/benchfft/patches/patch-af @@ -0,0 +1,419 @@ +$NetBSD: patch-af,v 1.5 2008/06/21 20:00:22 joerg Exp $ + +Reorder functions in usage order to fix compilation with f2c. + +--- f_source/sciport/ffts.f.orig 2008-06-21 13:38:06.000000000 +0000 ++++ f_source/sciport/ffts.f +@@ -1,3 +1,190 @@ ++C----------------------------------------------- ************ ++C CABLE2 ++C ************ ++ SUBROUTINE SPSCABLE2(NN,WORK) ++C ++ REAL WORK(2,NN),TWOPI ++ DATA TWOPI /6.28318530717958647692/ ++C ++ N = 2 * NN ++ P2 = TWOPI/N ++ DO 10 I=1, NN ++ WORK(1,I) = COS(P2 * (I-1)) ++ WORK(2,I) = SIN(P2 * (I-1)) ++ 10 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C RCONV2 ++C ************ ++ SUBROUTINE SPSRCONV2(N,CY,C,CH) ++C ++ COMPLEX CY(1) ++ REAL CH(N/2,2),P(2,1),C(2,N/2) ++C ++ N2 = N/2 ++ P(1,1) = (C(1,1) + C(2,1)) * 2 ++ P(2,1) = (C(1,1) - C(2,1)) * 2 ++ CY(1) = CMPLX(P(1,1),0.) ++ CY(N2+1) = CMPLX(P(2,1),0.) ++ K = N2 ++ DO 10 I=2, N2 ++ X = C(1,I)+C(1,K) ++ Y = C(2,I)+C(2,K) ++ Z = C(1,I)-C(1,K) ++ Z1= C(2,I)-C(2,K) ++ P(1,1) = X + CH(I,1) * Y - CH(I,2) * Z ++ P(2,1) = Z1 - CH(I,2) * Y - CH(I,1) * Z ++ CY(I) = CMPLX(P(1,1),P(2,1)) ++ K = K - 1 ++ 10 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C RCONV1 ++C ************ ++ SUBROUTINE SPSRCONV1(N,CY,C,CH) ++C ++ COMPLEX CY(1) ++ REAL CH(N/2,2),P(2,1),C(2,N/2) ++C ++ N2 = N/2 ++ P(1,1) = (C(1,1) + C(2,1)) * 2 ++ P(2,1) = (C(1,1) - C(2,1)) * 2 ++ CY(1) = CMPLX(P(1,1),0.) ++ CY(N2+1) = CMPLX(P(2,1),0.) ++ K = N2 ++ DO 10 I=2, N2 ++ X = C(1,I)+C(1,K) ++ Y = C(2,I)+C(2,K) ++ Z = C(1,I)-C(1,K) ++ Z1= C(2,I)-C(2,K) ++ P(1,1) = X + CH(I,1) * Y + CH(I,2) * Z ++ P(2,1) = Z1 + CH(I,2) * Y - CH(I,1) * Z ++ CY(I) = CMPLX(P(1,1),P(2,1)) ++ K = K - 1 ++ 10 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C CRFORM ++C ************ ++ SUBROUTINE SPSRABLE1(NN,WORK) ++C ++ REAL WORK(NN,2),TWOPI ++ DATA TWOPI /6.28318530717958647692/ ++C ++ N = 2 * NN ++ P2 = TWOPI/N ++ DO 10 I=1, NN ++ WORK(I,1) = COS(P2 * (I-1)) ++ WORK(I,2) = SIN(P2 * (I-1)) ++ 10 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C RTOCK3 ++C ************ ++ SUBROUTINE SPSRTOCK3(LS,NS,C,CH,CH2) ++C ++ COMPLEX WYK,C(NS,LS,2),CH(NS,2,LS) ++ REAL CH2(2,NS,LS,2) ++C ++ IF (LS .GT. NS) GOTO 30 ++ DO 600 I=1, LS ++ DO 600 J=1, NS ++ WYK =CONJG(CMPLX(CH2(1,1,I,1),CH2(1,1,I,2))) * CH(J,2,I) ++ C(J,I,1) = CH(J,1,I) + WYK ++ C(J,I,2) = CH(J,1,I) - WYK ++ 600 CONTINUE ++ RETURN ++ 30 CONTINUE ++ DO 800 J=1, NS ++ DO 800 I=1, LS ++ WYK =CONJG(CMPLX(CH2(1,1,I,1),CH2(1,1,I,2))) * CH(J,2,I) ++ C(J,I,1) = CH(J,1,I) + WYK ++ C(J,I,2) = CH(J,1,I) - WYK ++ 800 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C RTOCK2 ++C ************ ++ SUBROUTINE SPSRTOCK2(LS,NS,C,CH,CH2) ++C ++ COMPLEX WYK,C(NS,LS,2),CH(NS,2,LS) ++ REAL CH2(2,NS,LS,2) ++C ++ IF (LS .GT. NS) GOTO 20 ++ DO 200 I=1, LS ++ DO 200 J=1, NS ++ WYK = CMPLX(CH2(1,1,I,1),CH2(1,1,I,2)) * CH(J,2,I) ++ C(J,I,1) = CH(J,1,I) + WYK ++ C(J,I,2) = CH(J,1,I) - WYK ++ 200 CONTINUE ++ RETURN ++ 20 CONTINUE ++ DO 400 J=1, NS ++ DO 400 I=1, LS ++ WYK = CMPLX(CH2(1,1,I,1),CH2(1,1,I,2)) * CH(J,2,I) ++ C(J,I,1) = CH(J,1,I) + WYK ++ C(J,I,2) = CH(J,1,I) - WYK ++ 400 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C CRBLE1 ++C ************ ++ SUBROUTINE SPSCRBLE1(NN,WORK) ++C ++ REAL WORK(NN,2),TWOPI ++ DATA TWOPI /6.28318530717958647692/ ++C ++ N = 2 * NN ++ P2 = TWOPI/N ++ DO 10 I=1, NN ++ WORK(I,1) = COS(P2 * (I-1)) ++ WORK(I,2) = SIN(P2 * (I-1)) ++ 10 CONTINUE ++ RETURN ++ END ++ ++C----------------------------------------------- ************ ++C CRFORM ++C ************ ++ SUBROUTINE SPSCRFORM(IX,NS,NDIV2,CX,C,CH2) ++C ++ COMPLEX CX(1),WYK1,C(NS,2),WYK ++ REAL CH2(NDIV2,2) ++C ++ IF (IX .GT. 0) GOTO 50 ++ K = NS + 1 ++ DO 10 I=1, NS ++ WYK = CONJG(CX(NDIV2-I+2)) ++ C(I,1)= CX(I)+WYK + (CX(I) - WYK) * CMPLX(CH2(I,2),CH2(I,1)) ++ WYK1 = CONJG(CX(NDIV2-K+2)) ++ C(I,2)= CX(K)+WYK1+ (CX(K) -WYK1) * CMPLX(CH2(K,2),CH2(K,1)) ++ K = K + 1 ++ 10 CONTINUE ++ RETURN ++ 50 CONTINUE ++ K = NS + 1 ++ DO 20 I=1, NS ++ WYK = CONJG(CX(NDIV2-I+2)) ++ C(I,1)= CX(I)+WYK + (CX(I) - WYK) * CMPLX(-CH2(I,2),CH2(I,1)) ++ WYK1 = CONJG(CX(NDIV2-K+2)) ++ C(I,2)= CX(K)+WYK1 +(CX(K) -WYK1) * CMPLX(-CH2(K,2),CH2(K,1)) ++ K = K + 1 ++ 20 CONTINUE ++ RETURN ++ END ++ + C------------------------------------------------------------- ************ + C CRFFT2 + C ************ +@@ -62,36 +249,6 @@ C + END + + C----------------------------------------------- ************ +-C CRFORM +-C ************ +- SUBROUTINE SPSCRFORM(IX,NS,NDIV2,CX,C,CH2) +-C +- COMPLEX CX(1),WYK1,C(NS,2),WYK +- REAL CH2(NDIV2,2) +-C +- IF (IX .GT. 0) GOTO 50 +- K = NS + 1 +- DO 10 I=1, NS +- WYK = CONJG(CX(NDIV2-I+2)) +- C(I,1)= CX(I)+WYK + (CX(I) - WYK) * CMPLX(CH2(I,2),CH2(I,1)) +- WYK1 = CONJG(CX(NDIV2-K+2)) +- C(I,2)= CX(K)+WYK1+ (CX(K) -WYK1) * CMPLX(CH2(K,2),CH2(K,1)) +- K = K + 1 +- 10 CONTINUE +- RETURN +- 50 CONTINUE +- K = NS + 1 +- DO 20 I=1, NS +- WYK = CONJG(CX(NDIV2-I+2)) +- C(I,1)= CX(I)+WYK + (CX(I) - WYK) * CMPLX(-CH2(I,2),CH2(I,1)) +- WYK1 = CONJG(CX(NDIV2-K+2)) +- C(I,2)= CX(K)+WYK1 +(CX(K) -WYK1) * CMPLX(-CH2(K,2),CH2(K,1)) +- K = K + 1 +- 20 CONTINUE +- RETURN +- END +- +-C----------------------------------------------- ************ + C CROCK1 + C ************ + SUBROUTINE SPSCROCK1(NS,C,CH) +@@ -157,23 +314,6 @@ C + RETURN + END + +-C----------------------------------------------- ************ +-C CRBLE1 +-C ************ +- SUBROUTINE SPSCRBLE1(NN,WORK) +-C +- REAL WORK(NN,2),TWOPI +- DATA TWOPI /6.28318530717958647692/ +-C +- N = 2 * NN +- P2 = TWOPI/N +- DO 10 I=1, NN +- WORK(I,1) = COS(P2 * (I-1)) +- WORK(I,2) = SIN(P2 * (I-1)) +- 10 CONTINUE +- RETURN +- END +- + C------------------------------------------------------------- ************ + C RCFFT2 + C ************ +@@ -236,32 +376,6 @@ C + END + + C----------------------------------------------- ************ +-C RTOCK2 +-C ************ +- SUBROUTINE SPSRTOCK2(LS,NS,C,CH,CH2) +-C +- COMPLEX WYK,C(NS,LS,2),CH(NS,2,LS) +- REAL CH2(2,NS,LS,2) +-C +- IF (LS .GT. NS) GOTO 20 +- DO 200 I=1, LS +- DO 200 J=1, NS +- WYK = CMPLX(CH2(1,1,I,1),CH2(1,1,I,2)) * CH(J,2,I) +- C(J,I,1) = CH(J,1,I) + WYK +- C(J,I,2) = CH(J,1,I) - WYK +- 200 CONTINUE +- RETURN +- 20 CONTINUE +- DO 400 J=1, NS +- DO 400 I=1, LS +- WYK = CMPLX(CH2(1,1,I,1),CH2(1,1,I,2)) * CH(J,2,I) +- C(J,I,1) = CH(J,1,I) + WYK +- C(J,I,2) = CH(J,1,I) - WYK +- 400 CONTINUE +- RETURN +- END +- +-C----------------------------------------------- ************ + C RTOCK1 + C ************ + SUBROUTINE SPSRTOCK1(NS,C,CH) +@@ -275,103 +389,6 @@ C + RETURN + END + +-C----------------------------------------------- ************ +-C RTOCK3 +-C ************ +- SUBROUTINE SPSRTOCK3(LS,NS,C,CH,CH2) +-C +- COMPLEX WYK,C(NS,LS,2),CH(NS,2,LS) +- REAL CH2(2,NS,LS,2) +-C +- IF (LS .GT. NS) GOTO 30 +- DO 600 I=1, LS +- DO 600 J=1, NS +- WYK =CONJG(CMPLX(CH2(1,1,I,1),CH2(1,1,I,2))) * CH(J,2,I) +- C(J,I,1) = CH(J,1,I) + WYK +- C(J,I,2) = CH(J,1,I) - WYK +- 600 CONTINUE +- RETURN +- 30 CONTINUE +- DO 800 J=1, NS +- DO 800 I=1, LS +- WYK =CONJG(CMPLX(CH2(1,1,I,1),CH2(1,1,I,2))) * CH(J,2,I) +- C(J,I,1) = CH(J,1,I) + WYK +- C(J,I,2) = CH(J,1,I) - WYK +- 800 CONTINUE +- RETURN +- END +- +-C----------------------------------------------- ************ +-C CRFORM +-C ************ +- SUBROUTINE SPSRABLE1(NN,WORK) +-C +- REAL WORK(NN,2),TWOPI +- DATA TWOPI /6.28318530717958647692/ +-C +- N = 2 * NN +- P2 = TWOPI/N +- DO 10 I=1, NN +- WORK(I,1) = COS(P2 * (I-1)) +- WORK(I,2) = SIN(P2 * (I-1)) +- 10 CONTINUE +- RETURN +- END +- +-C----------------------------------------------- ************ +-C RCONV1 +-C ************ +- SUBROUTINE SPSRCONV1(N,CY,C,CH) +-C +- COMPLEX CY(1) +- REAL CH(N/2,2),P(2,1),C(2,N/2) +-C +- N2 = N/2 +- P(1,1) = (C(1,1) + C(2,1)) * 2 +- P(2,1) = (C(1,1) - C(2,1)) * 2 +- CY(1) = CMPLX(P(1,1),0.) +- CY(N2+1) = CMPLX(P(2,1),0.) +- K = N2 +- DO 10 I=2, N2 +- X = C(1,I)+C(1,K) +- Y = C(2,I)+C(2,K) +- Z = C(1,I)-C(1,K) +- Z1= C(2,I)-C(2,K) +- P(1,1) = X + CH(I,1) * Y + CH(I,2) * Z +- P(2,1) = Z1 + CH(I,2) * Y - CH(I,1) * Z +- CY(I) = CMPLX(P(1,1),P(2,1)) +- K = K - 1 +- 10 CONTINUE +- RETURN +- END +- +-C----------------------------------------------- ************ +-C RCONV2 +-C ************ +- SUBROUTINE SPSRCONV2(N,CY,C,CH) +-C +- COMPLEX CY(1) +- REAL CH(N/2,2),P(2,1),C(2,N/2) +-C +- N2 = N/2 +- P(1,1) = (C(1,1) + C(2,1)) * 2 +- P(2,1) = (C(1,1) - C(2,1)) * 2 +- CY(1) = CMPLX(P(1,1),0.) +- CY(N2+1) = CMPLX(P(2,1),0.) +- K = N2 +- DO 10 I=2, N2 +- X = C(1,I)+C(1,K) +- Y = C(2,I)+C(2,K) +- Z = C(1,I)-C(1,K) +- Z1= C(2,I)-C(2,K) +- P(1,1) = X + CH(I,1) * Y - CH(I,2) * Z +- P(2,1) = Z1 - CH(I,2) * Y - CH(I,1) * Z +- CY(I) = CMPLX(P(1,1),P(2,1)) +- K = K - 1 +- 10 CONTINUE +- RETURN +- END +- + C------------------------------------------------------------- ************ + C CFFT2 + C ************ +@@ -514,23 +531,6 @@ C + RETURN + END + +-C----------------------------------------------- ************ +-C CABLE2 +-C ************ +- SUBROUTINE SPSCABLE2(NN,WORK) +-C +- REAL WORK(2,NN),TWOPI +- DATA TWOPI /6.28318530717958647692/ +-C +- N = 2 * NN +- P2 = TWOPI/N +- DO 10 I=1, NN +- WORK(1,I) = COS(P2 * (I-1)) +- WORK(2,I) = SIN(P2 * (I-1)) +- 10 CONTINUE +- RETURN +- END +- + C------------------------------------------------------------- ************ + C ABORT + C ************ |