Skip to content

Commit 8c5f089

Browse files
authored
Merge pull request #18 from jacobwilliams/refactor
Refactor
2 parents 63f2a66 + 5601a66 commit 8c5f089

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+2792
-2506
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ cd fftpack
1212
```
1313

1414
### Build with [fortran-lang/fpm](https://github.com/fortran-lang/fpm)
15-
Fortran Package Manager (fpm) is a great package manager and build system for Fortran.
15+
Fortran Package Manager (fpm) is a package manager and build system for Fortran.
1616
You can build using provided `fpm.toml`:
1717
```bash
18-
fpm build --flag "-O2"
19-
fpm test --flag "-O2" --list
20-
fpm test --flag "-O2" <test_name, see `fpm.toml` or list>
18+
fpm build
19+
fpm test --list
20+
fpm test <test_name, see `fpm.toml` or list>
2121
```
2222
To use `fftpack` within your `fpm` project, add the following to your `fpm.toml` file:
2323
```toml

example/bench1.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
program bench1
22
use fftpack, only: zffti, zfftf, zfftb
3+
use fftpack_kind, only: rk
34
implicit none
4-
integer, parameter :: dp = kind(0.d0)
5-
complex(dp), allocatable :: z(:)
6-
real(dp), allocatable :: w(:), x(:)
7-
real(dp) :: err, time_init, time_forward, time_backward, t1, t2
5+
complex(rk), allocatable :: z(:)
6+
real(rk), allocatable :: w(:), x(:)
7+
real(rk) :: err, time_init, time_forward, time_backward, t1, t2
88
integer :: N
99

1010
N = 1024*1014*16
@@ -32,7 +32,7 @@ program bench1
3232
time_backward = t2-t1
3333
print *, "Done"
3434

35-
err = maxval(abs(x-real(z/N,dp)))
35+
err = maxval(abs(x-real(z/N,rk)))
3636
print *
3737
print *, "Error: ", err
3838
print *, "Init time: ", time_init

src/Makefile

Lines changed: 111 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
11
SRCF = \
2-
zfftb.f\
3-
cfftb1.f\
4-
zfftf.f\
5-
cfftf1.f\
6-
zffti.f\
7-
cffti1.f\
8-
dcosqb.f\
9-
cosqb1.f\
10-
dcosqf.f\
11-
cosqf1.f\
12-
dcosqi.f\
13-
dcost.f\
14-
dcosti.f\
15-
ezfft1.f\
16-
dzfftb.f\
17-
dzfftf.f\
18-
dzffti.f\
19-
passb.f\
20-
passb2.f\
21-
passb3.f\
22-
passb4.f\
23-
passb5.f\
24-
passf.f\
25-
passf2.f\
26-
passf3.f\
27-
passf4.f\
28-
passf5.f\
29-
radb2.f\
30-
radb3.f\
31-
radb4.f\
32-
radb5.f\
33-
radbg.f\
34-
radf2.f\
35-
radf3.f\
36-
radf4.f\
37-
radf5.f\
38-
radfg.f\
39-
dfftb.f\
40-
rfftb1.f\
41-
dfftf.f\
42-
rfftf1.f\
43-
dffti.f\
44-
rffti1.f\
45-
dsinqb.f\
46-
dsinqf.f\
47-
dsinqi.f\
48-
dsint.f\
49-
sint1.f\
50-
dsinti.f
2+
zfftb.f90\
3+
cfftb1.f90\
4+
zfftf.f90\
5+
cfftf1.f90\
6+
zffti.f90\
7+
cffti1.f90\
8+
dcosqb.f90\
9+
cosqb1.f90\
10+
dcosqf.f90\
11+
cosqf1.f90\
12+
dcosqi.f90\
13+
dcost.f90\
14+
dcosti.f90\
15+
ezfft1.f90\
16+
dzfftb.f90\
17+
dzfftf.f90\
18+
dzffti.f90\
19+
passb.f90\
20+
passb2.f90\
21+
passb3.f90\
22+
passb4.f90\
23+
passb5.f90\
24+
passf.f90\
25+
passf2.f90\
26+
passf3.f90\
27+
passf4.f90\
28+
passf5.f90\
29+
radb2.f90\
30+
radb3.f90\
31+
radb4.f90\
32+
radb5.f90\
33+
radbg.f90\
34+
radf2.f90\
35+
radf3.f90\
36+
radf4.f90\
37+
radf5.f90\
38+
radfg.f90\
39+
dfftb.f90\
40+
rfftb1.f90\
41+
dfftf.f90\
42+
rfftf1.f90\
43+
dffti.f90\
44+
rffti1.f90\
45+
dsinqb.f90\
46+
dsinqf.f90\
47+
dsinqi.f90\
48+
dsint.f90\
49+
sint1.f90\
50+
dsinti.f90
5151

5252
SRCF90 = \
5353
fftpack.f90\
@@ -59,9 +59,10 @@ SRCF90 = \
5959
fftpack_ifftshift.f90\
6060
fftpack_qct.f90\
6161
fftpack_iqct.f90\
62-
fftpack_dct.f90
62+
fftpack_dct.f90\
63+
rk.f90
6364

64-
OBJF := $(SRCF:.f=.o)
65+
OBJF := $(SRCF:.f90=.o)
6566
OBJF90 := $(SRCF90:.f90=.o)
6667

6768
lib$(LIB).a: $(OBJF) $(OBJF90)
@@ -76,12 +77,62 @@ clean:
7677
%.o: %.f90
7778
$(FC) $(FFLAGS) -c $<
7879

79-
fftpack_fft.o: fftpack.o
80-
fftpack_ifft.o: fftpack.o
81-
fftpack_rfft.o: fftpack.o
82-
fftpack_irfft.o: fftpack.o
83-
fftpack_qct.o: fftpack.o
84-
fftpack_iqct.o: fftpack.o
85-
fftpack_dct.o: fftpack.o
86-
fftpack_fftshift.o: fftpack.o
87-
fftpack_ifftshift.o: fftpack.o
80+
fftpack_fft.o: fftpack.o rk.o
81+
fftpack_ifft.o: fftpack.o rk.o
82+
fftpack_rfft.o: fftpack.o rk.o
83+
fftpack_irfft.o: fftpack.o rk.o
84+
fftpack_qct.o: fftpack.o rk.o
85+
fftpack_iqct.o: fftpack.o rk.o
86+
fftpack_dct.o: fftpack.o rk.o
87+
fftpack_fftshift.o: fftpack.o rk.o
88+
fftpack_ifftshift.o: fftpack.o rk.o
89+
90+
zfftb.f90: rk.o
91+
cfftb1.f90: rk.o
92+
zfftf.f90: rk.o
93+
cfftf1.f90: rk.o
94+
zffti.f90: rk.o
95+
cffti1.f90: rk.o
96+
dcosqb.f90: rk.o
97+
cosqb1.f90: rk.o
98+
dcosqf.f90: rk.o
99+
cosqf1.f90: rk.o
100+
dcosqi.f90: rk.o
101+
dcost.f90: rk.o
102+
dcosti.f90: rk.o
103+
ezfft1.f90: rk.o
104+
dzfftb.f90: rk.o
105+
dzfftf.f90: rk.o
106+
dzffti.f90: rk.o
107+
passb.f90: rk.o
108+
passb2.f90: rk.o
109+
passb3.f90: rk.o
110+
passb4.f90: rk.o
111+
passb5.f90: rk.o
112+
passf.f90: rk.o
113+
passf2.f90: rk.o
114+
passf3.f90: rk.o
115+
passf4.f90: rk.o
116+
passf5.f90: rk.o
117+
radb2.f90: rk.o
118+
radb3.f90: rk.o
119+
radb4.f90: rk.o
120+
radb5.f90: rk.o
121+
radbg.f90: rk.o
122+
radf2.f90: rk.o
123+
radf3.f90: rk.o
124+
radf4.f90: rk.o
125+
radf5.f90: rk.o
126+
radfg.f90: rk.o
127+
dfftb.f90: rk.o
128+
rfftb1.f90: rk.o
129+
dfftf.f90: rk.o
130+
rfftf1.f90: rk.o
131+
dffti.f90: rk.o
132+
rffti1.f90: rk.o
133+
dsinqb.f90: rk.o
134+
dsinqf.f90: rk.o
135+
dsinqi.f90: rk.o
136+
dsint.f90: rk.o
137+
sint1.f90: rk.o
138+
dsinti.f90: rk.o

src/cfftb1.f

Lines changed: 0 additions & 62 deletions
This file was deleted.

src/cfftb1.f90

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
subroutine cfftb1(n,c,Ch,Wa,Ifac)
2+
use fftpack_kind
3+
implicit none
4+
real(rk) :: c , Ch , Wa
5+
integer :: i , idl1 , ido , idot , Ifac , ip , iw , ix2 , ix3 , ix4, &
6+
k1 , l1 , l2 , n , n2 , na , nac , nf
7+
dimension Ch(*) , c(*) , Wa(*) , Ifac(*)
8+
nf = Ifac(2)
9+
na = 0
10+
l1 = 1
11+
iw = 1
12+
do k1 = 1 , nf
13+
ip = Ifac(k1+2)
14+
l2 = ip*l1
15+
ido = n/l2
16+
idot = ido + ido
17+
idl1 = idot*l1
18+
if ( ip==4 ) then
19+
ix2 = iw + idot
20+
ix3 = ix2 + idot
21+
if ( na/=0 ) then
22+
call passb4(idot,l1,Ch,c,Wa(iw),Wa(ix2),Wa(ix3))
23+
else
24+
call passb4(idot,l1,c,Ch,Wa(iw),Wa(ix2),Wa(ix3))
25+
endif
26+
na = 1 - na
27+
elseif ( ip==2 ) then
28+
if ( na/=0 ) then
29+
call passb2(idot,l1,Ch,c,Wa(iw))
30+
else
31+
call passb2(idot,l1,c,Ch,Wa(iw))
32+
endif
33+
na = 1 - na
34+
elseif ( ip==3 ) then
35+
ix2 = iw + idot
36+
if ( na/=0 ) then
37+
call passb3(idot,l1,Ch,c,Wa(iw),Wa(ix2))
38+
else
39+
call passb3(idot,l1,c,Ch,Wa(iw),Wa(ix2))
40+
endif
41+
na = 1 - na
42+
elseif ( ip/=5 ) then
43+
if ( na/=0 ) then
44+
call passb(nac,idot,ip,l1,idl1,Ch,Ch,Ch,c,c,Wa(iw))
45+
else
46+
call passb(nac,idot,ip,l1,idl1,c,c,c,Ch,Ch,Wa(iw))
47+
endif
48+
if ( nac/=0 ) na = 1 - na
49+
else
50+
ix2 = iw + idot
51+
ix3 = ix2 + idot
52+
ix4 = ix3 + idot
53+
if ( na/=0 ) then
54+
call passb5(idot,l1,Ch,c,Wa(iw),Wa(ix2),Wa(ix3),Wa(ix4))
55+
else
56+
call passb5(idot,l1,c,Ch,Wa(iw),Wa(ix2),Wa(ix3),Wa(ix4))
57+
endif
58+
na = 1 - na
59+
endif
60+
l1 = l2
61+
iw = iw + (ip-1)*idot
62+
enddo
63+
if ( na==0 ) return
64+
n2 = n + n
65+
do i = 1 , n2
66+
c(i) = Ch(i)
67+
enddo
68+
end subroutine cfftb1

0 commit comments

Comments
 (0)