[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000630] Re: Ruby/DCL swpack and fftlib
黒井さん
> それから、math2/rfftb の引数で DCL では wsave があり、プロト
> タイプ宣言(*.fp)の中では t (作業用) となっています。この型の
> 引数は Ruby から指定せず、ラッパー内で領域確保しています。
> rfftb の場合、rffti で初期化した wsave を必要とするため、上
> の型ではうまく動きません。
>
> プロトタイプ宣言(*.fp)で、t -> i に変えるといい思うのですが、
> どうでしょうか?
そうですね。rfft? のみならず、すべての順変換 (*f) 逆変換 (*b) で
wsave は入力引数ですね。よって t -> i (iはデフォルトなので実際
には t の削除)が必要です。そうしたのを添付します。確認をお願い
します。
堀之内
/*
* math2_fftlib.fp
*
* $Id: math2_fftlib.fp,v 1.1 2000/11/19 16:00:17 keiko Exp $
*/
/*****************************************************
* math2/fftlib/cfftb.f
****************************************************/
/*
* SUBROUTINE CFFTB (N,C,WSAVE)
* DIMENSION C(*) ,WSAVE(*)
*/
SUBROUTINE CFFTB(
INTEGER N
REAL (2*N) io C
REAL (4*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/cfftb1.f
****************************************************/
/*
* SUBROUTINE CFFTB1 (N,C,CH,WA,IFAC)
* DIMENSION CH(*) ,C(*) ,WA(*) ,IFAC(*)
*/
/*
SUBROUTINE CFFTB1(
INTEGER N
REAL (*) io C
REAL (*) t CH
REAL (*) t WA
INTEGER (*) t IFAC
)
*/
/*****************************************************
* math2/fftlib/cfftf.f
****************************************************/
/*
* SUBROUTINE CFFTF (N,C,WSAVE)
* DIMENSION C(*) ,WSAVE(*)
*/
SUBROUTINE CFFTF(
INTEGER N
REAL (2*N) io C
REAL (4*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/cfftf1.f
****************************************************/
/*
* SUBROUTINE CFFTF1 (N,C,CH,WA,IFAC)
* DIMENSION CH(*) ,C(*) ,WA(*) ,IFAC(*)
*/
/*
SUBROUTINE CFFTF1(
INTEGER N
REAL (*) io C
REAL (*) t CH
REAL (*) t WA
INTEGER (*) t IFAC
)
*/
/*****************************************************
* math2/fftlib/cffti.f
****************************************************/
/*
* SUBROUTINE CFFTI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE CFFTI(
INTEGER N
REAL (4*N+15) o WSAVE
)
/*****************************************************
* math2/fftlib/cffti1.f
****************************************************/
/*
* SUBROUTINE CFFTI1 (N,WA,IFAC)
* DIMENSION WA(*) ,IFAC(*) ,NTRYH(4)
*/
/*
SUBROUTINE CFFTI1(
INTEGER N
REAL (*) o WA
INTEGER (*) o IFAC
)
*/
/*****************************************************
* math2/fftlib/cosqb.f
****************************************************/
/*
* SUBROUTINE COSQB (N,X,WSAVE)
* DIMENSION X(*) ,WSAVE(*)
*/
SUBROUTINE COSQB(
INTEGER N
REAL (N) io X
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/cosqb1.f
****************************************************/
/*
* SUBROUTINE COSQB1 (N,X,W,XH)
* DIMENSION X(*) ,W(*) ,XH(*)
*/
/*
SUBROUTINE COSQB1(
INTEGER N
REAL io X
REAL (*) t W
REAL (*) t XH
)
*/
/*****************************************************
* math2/fftlib/cosqf.f
****************************************************/
/*
* SUBROUTINE COSQF (N,X,WSAVE)
* DIMENSION X(*) ,WSAVE(*)
*/
SUBROUTINE COSQF(
INTEGER N
REAL (N) io X
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/cosqf1.f
****************************************************/
/*
* SUBROUTINE COSQF1 (N,X,W,XH)
* DIMENSION X(*) ,W(*) ,XH(*)
*/
/*
SUBROUTINE COSQF1(
INTEGER N
REAL io X
REAL (*) t W
REAL (*) t XH
)
*/
/*****************************************************
* math2/fftlib/cosqi.f
****************************************************/
/*
* SUBROUTINE COSQI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE COSQI(
INTEGER N
REAL (3*N+15) o WSAVE
)
/*****************************************************
* math2/fftlib/cost.f
****************************************************/
/*
* SUBROUTINE COST (N,X,WSAVE)
* DIMENSION X(*) ,WSAVE(*)
*/
SUBROUTINE COST(
INTEGER N
REAL (N) io X
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/costi.f
****************************************************/
/*
* SUBROUTINE COSTI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE COSTI(
INTEGER N
REAL (3*N+15) o WSAVE
)
/*****************************************************
* math2/fftlib/ezfft1.f
****************************************************/
/*
* SUBROUTINE EZFFT1 (N,WA,IFAC)
* DIMENSION WA(*) ,IFAC(*) ,NTRYH(4)
*/
/*
SUBROUTINE EZFFT1(
INTEGER N
REAL (*) o WA
INTEGER (*) o IFAC
)
*/
/*****************************************************
* math2/fftlib/ezfftb.f
****************************************************/
/* NB: (EZFFTB) A and B size are N/2 if N is even, (N-1)/2 if N is odd. */
/*
* SUBROUTINE EZFFTB (N,R,AZERO,A,B,WSAVE)
* DIMENSION R(*) ,A(*) ,B(*) ,WSAVE(*)
*/
SUBROUTINE EZFFTB(
INTEGER N
REAL (N) o R
REAL AZERO
/* REAL A */
REAL (*) A
REAL (*) B
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/ezfftf.f
****************************************************/
/* NB: (EZFFTF) A and B size are N/2 if N is even, (N-1)/2 if N is odd. */
/*
* SUBROUTINE EZFFTF (N,R,AZERO,A,B,WSAVE)
* DIMENSION R(*) ,A(*) ,B(*) ,WSAVE(*)
*/
SUBROUTINE EZFFTF(
INTEGER N
REAL (N) R
REAL o AZERO
/* REAL o A */
REAL (*) o A
REAL (*) o B
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/ezffti.f
****************************************************/
/*
* SUBROUTINE EZFFTI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE EZFFTI(
INTEGER N
REAL (3*N+15) o WSAVE
)
/*****************************************************
* math2/fftlib/passb.f
****************************************************/
/*
* SUBROUTINE PASSB (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
* DIMENSION CH(IDO,L1,IP) ,CC(IDO,IP,L1) ,
*/
/*
SUBROUTINE PASSB(
INTEGER o NAC
INTEGER IDO
INTEGER IP
INTEGER L1
INTEGER IDL1
REAL (IDO,IP,L1) CC
REAL io C1
REAL io C2
REAL (IDO,L1,IP) io CH
REAL io CH2
REAL WA
)
*/
/*****************************************************
* math2/fftlib/passb2.f
****************************************************/
/*
* SUBROUTINE PASSB2 (IDO,L1,CC,CH,WA1)
* DIMENSION CC(IDO,2,L1) ,CH(IDO,L1,2) ,
*/
/*
SUBROUTINE PASSB2(
INTEGER IDO
INTEGER L1
REAL (IDO,2,L1) CC
REAL (IDO,L1,2) o CH
REAL WA1
)
*/
/*****************************************************
* math2/fftlib/passb3.f
****************************************************/
/*
* SUBROUTINE PASSB3 (IDO,L1,CC,CH,WA1,WA2)
* DIMENSION CC(IDO,3,L1) ,CH(IDO,L1,3) ,
*/
/*
SUBROUTINE PASSB3(
INTEGER IDO
INTEGER L1
REAL (IDO,3,L1) CC
REAL (IDO,L1,3) o CH
REAL WA1
REAL WA2
)
*/
/*****************************************************
* math2/fftlib/passb4.f
****************************************************/
/*
* SUBROUTINE PASSB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
* DIMENSION CC(IDO,4,L1) ,CH(IDO,L1,4) ,
*/
/*
SUBROUTINE PASSB4(
INTEGER IDO
INTEGER L1
REAL (IDO,4,L1) CC
REAL (IDO,L1,4) o CH
REAL WA1
REAL WA2
REAL WA3
)
*/
/*****************************************************
* math2/fftlib/passb5.f
****************************************************/
/*
* SUBROUTINE PASSB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
* DIMENSION CC(IDO,5,L1) ,CH(IDO,L1,5) ,
*/
/*
SUBROUTINE PASSB5(
INTEGER IDO
INTEGER L1
REAL (IDO,5,L1) CC
REAL (IDO,L1,5) o CH
REAL WA1
REAL WA2
REAL WA3
REAL WA4
)
*/
/*****************************************************
* math2/fftlib/passf.f
****************************************************/
/*
* SUBROUTINE PASSF (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
* DIMENSION CH(IDO,L1,IP) ,CC(IDO,IP,L1) ,
*/
/*
SUBROUTINE PASSF(
INTEGER o NAC
INTEGER IDO
INTEGER IP
INTEGER L1
INTEGER IDL1
REAL (IDO,IP,L1) CC
REAL io C1
REAL io C2
REAL (IDO,L1,IP) io CH
REAL io CH2
REAL WA
)
*/
/*****************************************************
* math2/fftlib/passf2.f
****************************************************/
/*
* SUBROUTINE PASSF2 (IDO,L1,CC,CH,WA1)
* DIMENSION CC(IDO,2,L1) ,CH(IDO,L1,2) ,
*/
/*
SUBROUTINE PASSF2(
INTEGER IDO
INTEGER L1
REAL (IDO,2,L1) CC
REAL (IDO,L1,2) o CH
REAL WA1
)
*/
/*****************************************************
* math2/fftlib/radb2.f
****************************************************/
/*
* SUBROUTINE RADB2 (IDO,L1,CC,CH,WA1)
* DIMENSION CC(IDO,2,L1) ,CH(IDO,L1,2) ,
*/
/*
SUBROUTINE RADB2(
INTEGER IDO
INTEGER L1
REAL (IDO,2,L1) CC
REAL (IDO,L1,2) o CH
REAL WA1
)
*/
/*****************************************************
* math2/fftlib/passf3.f
****************************************************/
/*
* SUBROUTINE PASSF3 (IDO,L1,CC,CH,WA1,WA2)
* DIMENSION CC(IDO,3,L1) ,CH(IDO,L1,3) ,
*/
/*
SUBROUTINE PASSF3(
INTEGER IDO
INTEGER L1
REAL (IDO,3,L1) CC
REAL (IDO,L1,3) o CH
REAL WA1
REAL WA2
)
*/
/*****************************************************
* math2/fftlib/passf4.f
****************************************************/
/*
* SUBROUTINE PASSF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
* DIMENSION CC(IDO,4,L1) ,CH(IDO,L1,4) ,
*/
/*
SUBROUTINE PASSF4(
INTEGER IDO
INTEGER L1
REAL (IDO,4,L1) CC
REAL (IDO,L1,4) o CH
REAL WA1
REAL WA2
REAL WA3
)
*/
/*****************************************************
* math2/fftlib/passf5.f
****************************************************/
/*
* SUBROUTINE PASSF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
* DIMENSION CC(IDO,5,L1) ,CH(IDO,L1,5) ,
*/
/*
SUBROUTINE PASSF5(
INTEGER IDO
INTEGER L1
REAL (IDO,5,L1) CC
REAL (IDO,L1,5) o CH
REAL WA1
REAL WA2
REAL WA3
REAL WA4
)
*/
/*****************************************************
* math2/fftlib/radb3.f
****************************************************/
/*
* SUBROUTINE RADB3 (IDO,L1,CC,CH,WA1,WA2)
* DIMENSION CC(IDO,3,L1) ,CH(IDO,L1,3) ,
*/
/*
SUBROUTINE RADB3(
INTEGER IDO
INTEGER L1
REAL (IDO,3,L1) CC
REAL (IDO,L1,3) o CH
REAL WA1
REAL WA2
)
*/
/*****************************************************
* math2/fftlib/radb4.f
****************************************************/
/*
* SUBROUTINE RADB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
* DIMENSION CC(IDO,4,L1) ,CH(IDO,L1,4) ,
*/
/*
SUBROUTINE RADB4(
INTEGER IDO
INTEGER L1
REAL (IDO,4,L1) CC
REAL (IDO,L1,4) o CH
REAL WA1
REAL WA2
REAL WA3
)
*/
/*****************************************************
* math2/fftlib/radb5.f
****************************************************/
/*
* SUBROUTINE RADB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
* DIMENSION CC(IDO,5,L1) ,CH(IDO,L1,5) ,
*/
/*
SUBROUTINE RADB5(
INTEGER IDO
INTEGER L1
REAL (IDO,5,L1) CC
REAL (IDO,L1,5) o CH
REAL WA1
REAL WA2
REAL WA3
REAL WA4
)
*/
/*****************************************************
* math2/fftlib/radbg.f
****************************************************/
/*
* SUBROUTINE RADBG (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
* DIMENSION CH(IDO,L1,IP) ,CC(IDO,IP,L1) ,
*/
/*
SUBROUTINE RADBG(
INTEGER IDO
INTEGER IP
INTEGER L1
INTEGER IDL1
REAL (IDO,IP,L1) CC
REAL io C1
REAL io C2
REAL (IDO,L1,IP) io CH
REAL io CH2
REAL WA
)
*/
/*****************************************************
* math2/fftlib/radf2.f
****************************************************/
/*
* SUBROUTINE RADF2 (IDO,L1,CC,CH,WA1)
* DIMENSION CH(IDO,2,L1) ,CC(IDO,L1,2) ,
*/
/*
SUBROUTINE RADF2(
INTEGER IDO
INTEGER L1
REAL (IDO,L1,2) CC
REAL (IDO,2,L1) o CH
REAL WA1
)
*/
/*****************************************************
* math2/fftlib/radf3.f
****************************************************/
/*
* SUBROUTINE RADF3 (IDO,L1,CC,CH,WA1,WA2)
* DIMENSION CH(IDO,3,L1) ,CC(IDO,L1,3) ,
*/
/*
SUBROUTINE RADF3(
INTEGER IDO
INTEGER L1
REAL (IDO,L1,3) CC
REAL (IDO,3,L1) o CH
REAL WA1
REAL WA2
)
*/
/*****************************************************
* math2/fftlib/radf4.f
****************************************************/
/*
* SUBROUTINE RADF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
* DIMENSION CC(IDO,L1,4) ,CH(IDO,4,L1) ,
*/
/*
SUBROUTINE RADF4(
INTEGER IDO
INTEGER L1
REAL (IDO,L1,4) CC
REAL (IDO,4,L1) o CH
REAL WA1
REAL WA2
REAL WA3
)
*/
/*****************************************************
* math2/fftlib/radf5.f
****************************************************/
/*
* SUBROUTINE RADF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
* DIMENSION CC(IDO,L1,5) ,CH(IDO,5,L1) ,
*/
/*
SUBROUTINE RADF5(
INTEGER IDO
INTEGER L1
REAL (IDO,L1,5) CC
REAL (IDO,5,L1) o CH
REAL WA1
REAL WA2
REAL WA3
REAL WA4
)
*/
/*****************************************************
* math2/fftlib/radfg.f
****************************************************/
/*
* SUBROUTINE RADFG (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
* DIMENSION CH(IDO,L1,IP) ,CC(IDO,IP,L1) ,
*/
/*
SUBROUTINE RADFG(
INTEGER IDO
INTEGER IP
INTEGER L1
INTEGER IDL1
REAL (IDO,IP,L1) CC
REAL io C1
REAL io C2
REAL (IDO,L1,IP) io CH
REAL io CH2
REAL WA
)
*/
/*****************************************************
* math2/fftlib/rfftb.f
****************************************************/
/*
* SUBROUTINE RFFTB (N,R,WSAVE)
* DIMENSION R(*) ,WSAVE(*)
*/
SUBROUTINE RFFTB(
INTEGER N
REAL (N) io R
REAL (2*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/rfftb1.f
****************************************************/
/*
* SUBROUTINE RFFTB1 (N,C,CH,WA,IFAC)
* DIMENSION CH(*) ,C(*) ,WA(*) ,IFAC(*)
*/
/*
SUBROUTINE RFFTB1(
INTEGER N
REAL (*) io C
REAL (*) t CH
REAL (*) t WA
INTEGER (*) t IFAC
)
*/
/*****************************************************
* math2/fftlib/rfftf.f
****************************************************/
/*
* SUBROUTINE RFFTF (N,R,WSAVE)
* DIMENSION R(*) ,WSAVE(*)
*/
SUBROUTINE RFFTF(
INTEGER N
REAL (N) io R
REAL (2*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/rfftf1.f
****************************************************/
/*
* SUBROUTINE RFFTF1 (N,C,CH,WA,IFAC)
* DIMENSION CH(*) ,C(*) ,WA(*) ,IFAC(*)
*/
/*
SUBROUTINE RFFTF1(
INTEGER N
REAL (*) io C
REAL (*) t CH
REAL (*) t WA
INTEGER (*) t IFAC
)
*/
/*****************************************************
* math2/fftlib/rffti.f
****************************************************/
/*
* SUBROUTINE RFFTI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE RFFTI(
INTEGER N
REAL (2*N+15) o WSAVE
)
/*****************************************************
* math2/fftlib/rffti1.f
****************************************************/
/*
* SUBROUTINE RFFTI1 (N,WA,IFAC)
* DIMENSION WA(*) ,IFAC(*) ,NTRYH(4)
*/
/*
SUBROUTINE RFFTI1(
INTEGER N
REAL (*) o WA
INTEGER (*) o IFAC
)
*/
/*****************************************************
* math2/fftlib/sinqb.f
****************************************************/
/*
* SUBROUTINE SINQB (N,X,WSAVE)
* DIMENSION X(*) ,WSAVE(*)
*/
SUBROUTINE SINQB(
INTEGER N
REAL (N) io X
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/sinqf.f
****************************************************/
/*
* SUBROUTINE SINQF (N,X,WSAVE)
* DIMENSION X(*) ,WSAVE(*)
*/
SUBROUTINE SINQF(
INTEGER N
REAL (N) io X
REAL (3*N+15) WSAVE
)
/*****************************************************
* math2/fftlib/sinqi.f
****************************************************/
/*
* SUBROUTINE SINQI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE SINQI(
INTEGER N
REAL (3*N+15) o WSAVE
)
/*****************************************************
* math2/fftlib/sint.f
****************************************************/
/* NB: (SINT) WSAVE size are equal to and larger than 5/2*N+15 */
/*
* SUBROUTINE SINT (N,X,WSAVE)
* DIMENSION X(*) ,WSAVE(*)
*/
SUBROUTINE SINT(
INTEGER N
REAL (N) io X
REAL (*) WSAVE
)
/*****************************************************
* math2/fftlib/sint1.f
****************************************************/
/*
* SUBROUTINE SINT1(N,WAR,WAS,XH,X,IFAC)
* DIMENSION WAR(*),WAS(*),X(*),XH(*),IFAC(*)
*/
/*
SUBROUTINE SINT1(
INTEGER N
REAL (*) io WAR
REAL (*) t WAS
REAL (*) t XH
REAL t X
INTEGER (*) t IFAC
)
*/
/*****************************************************
* math2/fftlib/sinti.f
****************************************************/
/* NB: (SINT) WSAVE size are equal to and larger than 5/2*N+15 */
/*
* SUBROUTINE SINTI (N,WSAVE)
* DIMENSION WSAVE(*)
*/
SUBROUTINE SINTI(
INTEGER N
REAL (*) o WSAVE
)