Skip to content

Commit 26f4b35

Browse files
committed
add dfft benchmark
1 parent 67fa8c9 commit 26f4b35

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

example/bench03_dfft.f90

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
program main
2+
use fftpack, only: dffti, dfftf, dfftb, rfft, irfft
3+
use fftpack_kind, only: rk
4+
5+
implicit none
6+
integer, parameter :: N = 1024*135*77 !> (2**10)*(3**3)*5*7*11
7+
8+
real(rk), dimension(N) :: x, y
9+
real(rk), dimension(2*N+15) :: w
10+
real(rk) :: err, time_i, time_f, time_b, t1, t2
11+
12+
call random_number(x)
13+
y = x
14+
15+
print *, "03: Benchmarking dfft & rfft"
16+
17+
call cpu_time(t1)
18+
call dffti(N, w)
19+
call cpu_time(t2)
20+
time_i = t2-t1
21+
print *, "Initializing: done"
22+
23+
call cpu_time(t1)
24+
call dfftf(N, y, w)
25+
call cpu_time(t2)
26+
time_f = t2-t1
27+
print *, "Forward: done"
28+
29+
call cpu_time(t1)
30+
call dfftb(N, y, w)
31+
call cpu_time(t2)
32+
time_b = t2-t1
33+
print *, "Backward: done"
34+
print *, ""
35+
36+
err = maxval(abs(x-y/N))
37+
print *, "--dfft"
38+
print *, "Error: ", err
39+
print *, "Init. time: ", time_i
40+
print *, "Forward time: ", time_f
41+
print *, "Backward time: ", time_b
42+
print *, ""
43+
44+
print *, "Comparing to calls through rfft"
45+
call cpu_time(t1)
46+
y = rfft(x)
47+
call cpu_time(t2)
48+
time_f = t2-t1
49+
print *, "Init. & forward: done"
50+
51+
call cpu_time(t1)
52+
y = irfft(y)
53+
call cpu_time(t2)
54+
time_b = t2-t1
55+
print *, "Backward: done"
56+
print *, ""
57+
58+
err = maxval(abs(x-y/N))
59+
print *, "--rfft"
60+
print *, "Error: ", err
61+
print *, "Init. & forward time: ", time_f
62+
print *, "Backward time: ", time_b
63+
print *, ""
64+
end program

0 commit comments

Comments
 (0)