Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/cfftb1.f90
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ subroutine cfftb1(n, c, ch, wa, ifac)
end do
if (na == 0) return
n2 = n + n
do i = 1, n2
do concurrent(i=1:n2)
c(i) = ch(i)
end do
end subroutine cfftb1
2 changes: 1 addition & 1 deletion src/cfftf1.f90
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ subroutine cfftf1(n, c, ch, wa, ifac)
end do
if (na == 0) return
n2 = n + n
do i = 1, n2
do concurrent(i=1:n2)
c(i) = ch(i)
end do
end subroutine cfftf1
2 changes: 1 addition & 1 deletion src/dzfftb.f90
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ subroutine dzfftb(n, r, azero, a, b, wsave)
return
else
ns2 = (n - 1)/2
do i = 1, ns2
do concurrent(i=1:ns2)
r(2*i) = 0.5_dp*a(i)
r(2*i + 1) = -0.5_dp*b(i)
end do
Expand Down
4 changes: 2 additions & 2 deletions src/dzfftf.f90
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ subroutine dzfftf(n, r, azero, a, b, wsave)
a(1) = 0.5_dp*(r(1) - r(2))
return
else
do i = 1, n
do concurrent(i=1:n)
wsave(i) = r(i)
end do
call dfftf(n, wsave, wsave(n + 1))
Expand All @@ -25,7 +25,7 @@ subroutine dzfftf(n, r, azero, a, b, wsave)
azero = 0.5_dp*cf*wsave(1)
ns2 = (n + 1)/2
ns2m = ns2 - 1
do i = 1, ns2m
do concurrent(i=1:ns2m)
a(i) = cf*wsave(2*i)
b(i) = cfm*wsave(2*i + 1)
end do
Expand Down
66 changes: 24 additions & 42 deletions src/passb.f90
Original file line number Diff line number Diff line change
Expand Up @@ -17,42 +17,30 @@ subroutine passb(nac, ido, ip, l1, idl1, cc, c1, c2, ch, ch2, wa)
idp = ip*ido
!
if (ido < l1) then
do j = 2, ipph
do concurrent(i=1:ido, j=2:ipph, k=1:l1)
jc = ipp2 - j
do i = 1, ido
do k = 1, l1
ch(i, k, j) = cc(i, j, k) + cc(i, jc, k)
ch(i, k, jc) = cc(i, j, k) - cc(i, jc, k)
end do
end do
ch(i, k, j) = cc(i, j, k) + cc(i, jc, k)
ch(i, k, jc) = cc(i, j, k) - cc(i, jc, k)
end do
do i = 1, ido
do k = 1, l1
ch(i, k, 1) = cc(i, 1, k)
end do
do concurrent(i=1:ido, k=1:l1)
ch(i, k, 1) = cc(i, 1, k)
end do
else
do j = 2, ipph
do concurrent(i=1:ido, j=2:ipph, k=1:l1)
jc = ipp2 - j
do k = 1, l1
do i = 1, ido
ch(i, k, j) = cc(i, j, k) + cc(i, jc, k)
ch(i, k, jc) = cc(i, j, k) - cc(i, jc, k)
end do
end do
ch(i, k, j) = cc(i, j, k) + cc(i, jc, k)
ch(i, k, jc) = cc(i, j, k) - cc(i, jc, k)
end do
do k = 1, l1
do i = 1, ido
ch(i, k, 1) = cc(i, 1, k)
end do
do concurrent(i=1:ido, k=1:l1)
ch(i, k, 1) = cc(i, 1, k)
end do
end if
idl = 2 - ido
inc = 0
do l = 2, ipph
lc = ipp2 - l
idl = idl + ido
do ik = 1, idl1
do concurrent(ik=1:idl1)
c2(ik, l) = ch2(ik, 1) + wa(idl - 1)*ch2(ik, 2)
c2(ik, lc) = wa(idl)*ch2(ik, ip)
end do
Expand All @@ -64,37 +52,31 @@ subroutine passb(nac, ido, ip, l1, idl1, cc, c1, c2, ch, ch2, wa)
if (idlj > idp) idlj = idlj - idp
war = wa(idlj - 1)
wai = wa(idlj)
do ik = 1, idl1
do concurrent(ik=1:idl1)
c2(ik, l) = c2(ik, l) + war*ch2(ik, j)
c2(ik, lc) = c2(ik, lc) + wai*ch2(ik, jc)
end do
end do
end do
do j = 2, ipph
do ik = 1, idl1
ch2(ik, 1) = ch2(ik, 1) + ch2(ik, j)
end do
do concurrent(ik=1:idl1, j=2:ipph)
ch2(ik, 1) = ch2(ik, 1) + ch2(ik, j)
end do
do j = 2, ipph
do concurrent(ik=2:idl1:2, j=2:ipph)
jc = ipp2 - j
do ik = 2, idl1, 2
ch2(ik - 1, j) = c2(ik - 1, j) - c2(ik, jc)
ch2(ik - 1, jc) = c2(ik - 1, j) + c2(ik, jc)
ch2(ik, j) = c2(ik, j) + c2(ik - 1, jc)
ch2(ik, jc) = c2(ik, j) - c2(ik - 1, jc)
end do
ch2(ik - 1, j) = c2(ik - 1, j) - c2(ik, jc)
ch2(ik - 1, jc) = c2(ik - 1, j) + c2(ik, jc)
ch2(ik, j) = c2(ik, j) + c2(ik - 1, jc)
ch2(ik, jc) = c2(ik, j) - c2(ik - 1, jc)
end do
nac = 1
if (ido == 2) return
nac = 0
do ik = 1, idl1
do concurrent(ik=1:idl1)
c2(ik, 1) = ch2(ik, 1)
end do
do j = 2, ip
do k = 1, l1
c1(1, k, j) = ch(1, k, j)
c1(2, k, j) = ch(2, k, j)
end do
do concurrent(j=2:ip, k=1:l1)
c1(1, k, j) = ch(1, k, j)
c1(2, k, j) = ch(2, k, j)
end do
if (idot > l1) then
idj = 2 - ido
Expand All @@ -118,7 +100,7 @@ subroutine passb(nac, ido, ip, l1, idl1, cc, c1, c2, ch, ch2, wa)
idij = idij + 2
do i = 4, ido, 2
idij = idij + 2
do k = 1, l1
do concurrent(k=1:l1)
c1(i - 1, k, j) = wa(idij - 1)*ch(i - 1, k, j) - wa(idij)*ch(i, k, j)
c1(i, k, j) = wa(idij - 1)*ch(i, k, j) + wa(idij)*ch(i - 1, k, j)
end do
Expand Down
18 changes: 8 additions & 10 deletions src/passb2.f90
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,16 @@ subroutine passb2(ido, l1, cc, ch, wa1)
real(dp) :: ti2, tr2
integer :: i, k
if (ido > 2) then
do k = 1, l1
do i = 2, ido, 2
ch(i - 1, k, 1) = cc(i - 1, 1, k) + cc(i - 1, 2, k)
tr2 = cc(i - 1, 1, k) - cc(i - 1, 2, k)
ch(i, k, 1) = cc(i, 1, k) + cc(i, 2, k)
ti2 = cc(i, 1, k) - cc(i, 2, k)
ch(i, k, 2) = wa1(i - 1)*ti2 + wa1(i)*tr2
ch(i - 1, k, 2) = wa1(i - 1)*tr2 - wa1(i)*ti2
end do
do concurrent(i=2:ido:2, k=1:l1)
ch(i - 1, k, 1) = cc(i - 1, 1, k) + cc(i - 1, 2, k)
tr2 = cc(i - 1, 1, k) - cc(i - 1, 2, k)
ch(i, k, 1) = cc(i, 1, k) + cc(i, 2, k)
ti2 = cc(i, 1, k) - cc(i, 2, k)
ch(i, k, 2) = wa1(i - 1)*ti2 + wa1(i)*tr2
ch(i - 1, k, 2) = wa1(i - 1)*tr2 - wa1(i)*ti2
end do
else
do k = 1, l1
do concurrent(k=1:l1)
ch(1, k, 1) = cc(1, 1, k) + cc(1, 2, k)
ch(1, k, 2) = cc(1, 1, k) - cc(1, 2, k)
ch(2, k, 1) = cc(2, 1, k) + cc(2, 2, k)
Expand Down
38 changes: 18 additions & 20 deletions src/passb3.f90
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,26 @@ subroutine passb3(ido, l1, cc, ch, wa1, wa2)
real(dp), parameter :: taur = -0.5_dp
real(dp), parameter :: taui = sqrt(3.0_dp)/2.0_dp
if (ido /= 2) then
do k = 1, l1
do i = 2, ido, 2
tr2 = cc(i - 1, 2, k) + cc(i - 1, 3, k)
cr2 = cc(i - 1, 1, k) + taur*tr2
ch(i - 1, k, 1) = cc(i - 1, 1, k) + tr2
ti2 = cc(i, 2, k) + cc(i, 3, k)
ci2 = cc(i, 1, k) + taur*ti2
ch(i, k, 1) = cc(i, 1, k) + ti2
cr3 = taui*(cc(i - 1, 2, k) - cc(i - 1, 3, k))
ci3 = taui*(cc(i, 2, k) - cc(i, 3, k))
dr2 = cr2 - ci3
dr3 = cr2 + ci3
di2 = ci2 + cr3
di3 = ci2 - cr3
ch(i, k, 2) = wa1(i - 1)*di2 + wa1(i)*dr2
ch(i - 1, k, 2) = wa1(i - 1)*dr2 - wa1(i)*di2
ch(i, k, 3) = wa2(i - 1)*di3 + wa2(i)*dr3
ch(i - 1, k, 3) = wa2(i - 1)*dr3 - wa2(i)*di3
end do
do concurrent(i=2:ido:2, k=1:l1)
tr2 = cc(i - 1, 2, k) + cc(i - 1, 3, k)
cr2 = cc(i - 1, 1, k) + taur*tr2
ch(i - 1, k, 1) = cc(i - 1, 1, k) + tr2
ti2 = cc(i, 2, k) + cc(i, 3, k)
ci2 = cc(i, 1, k) + taur*ti2
ch(i, k, 1) = cc(i, 1, k) + ti2
cr3 = taui*(cc(i - 1, 2, k) - cc(i - 1, 3, k))
ci3 = taui*(cc(i, 2, k) - cc(i, 3, k))
dr2 = cr2 - ci3
dr3 = cr2 + ci3
di2 = ci2 + cr3
di3 = ci2 - cr3
ch(i, k, 2) = wa1(i - 1)*di2 + wa1(i)*dr2
ch(i - 1, k, 2) = wa1(i - 1)*dr2 - wa1(i)*di2
ch(i, k, 3) = wa2(i - 1)*di3 + wa2(i)*dr3
ch(i - 1, k, 3) = wa2(i - 1)*dr3 - wa2(i)*di3
end do
else
do k = 1, l1
do concurrent(k=1:l1)
tr2 = cc(1, 2, k) + cc(1, 3, k)
cr2 = cc(1, 1, k) + taur*tr2
ch(1, k, 1) = cc(1, 1, k) + tr2
Expand Down
50 changes: 24 additions & 26 deletions src/passb4.f90
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,32 @@ subroutine passb4(ido, l1, cc, ch, wa1, wa2, wa3)
& ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4
integer :: i, k
if (ido /= 2) then
do k = 1, l1
do i = 2, ido, 2
ti1 = cc(i, 1, k) - cc(i, 3, k)
ti2 = cc(i, 1, k) + cc(i, 3, k)
ti3 = cc(i, 2, k) + cc(i, 4, k)
tr4 = cc(i, 4, k) - cc(i, 2, k)
tr1 = cc(i - 1, 1, k) - cc(i - 1, 3, k)
tr2 = cc(i - 1, 1, k) + cc(i - 1, 3, k)
ti4 = cc(i - 1, 2, k) - cc(i - 1, 4, k)
tr3 = cc(i - 1, 2, k) + cc(i - 1, 4, k)
ch(i - 1, k, 1) = tr2 + tr3
cr3 = tr2 - tr3
ch(i, k, 1) = ti2 + ti3
ci3 = ti2 - ti3
cr2 = tr1 + tr4
cr4 = tr1 - tr4
ci2 = ti1 + ti4
ci4 = ti1 - ti4
ch(i - 1, k, 2) = wa1(i - 1)*cr2 - wa1(i)*ci2
ch(i, k, 2) = wa1(i - 1)*ci2 + wa1(i)*cr2
ch(i - 1, k, 3) = wa2(i - 1)*cr3 - wa2(i)*ci3
ch(i, k, 3) = wa2(i - 1)*ci3 + wa2(i)*cr3
ch(i - 1, k, 4) = wa3(i - 1)*cr4 - wa3(i)*ci4
ch(i, k, 4) = wa3(i - 1)*ci4 + wa3(i)*cr4
end do
do concurrent(i=2:ido:2, k=1:l1)
ti1 = cc(i, 1, k) - cc(i, 3, k)
ti2 = cc(i, 1, k) + cc(i, 3, k)
ti3 = cc(i, 2, k) + cc(i, 4, k)
tr4 = cc(i, 4, k) - cc(i, 2, k)
tr1 = cc(i - 1, 1, k) - cc(i - 1, 3, k)
tr2 = cc(i - 1, 1, k) + cc(i - 1, 3, k)
ti4 = cc(i - 1, 2, k) - cc(i - 1, 4, k)
tr3 = cc(i - 1, 2, k) + cc(i - 1, 4, k)
ch(i - 1, k, 1) = tr2 + tr3
cr3 = tr2 - tr3
ch(i, k, 1) = ti2 + ti3
ci3 = ti2 - ti3
cr2 = tr1 + tr4
cr4 = tr1 - tr4
ci2 = ti1 + ti4
ci4 = ti1 - ti4
ch(i - 1, k, 2) = wa1(i - 1)*cr2 - wa1(i)*ci2
ch(i, k, 2) = wa1(i - 1)*ci2 + wa1(i)*cr2
ch(i - 1, k, 3) = wa2(i - 1)*cr3 - wa2(i)*ci3
ch(i, k, 3) = wa2(i - 1)*ci3 + wa2(i)*cr3
ch(i - 1, k, 4) = wa3(i - 1)*cr4 - wa3(i)*ci4
ch(i, k, 4) = wa3(i - 1)*ci4 + wa3(i)*cr4
end do
else
do k = 1, l1
do concurrent(k=1:l1)
ti1 = cc(2, 1, k) - cc(2, 3, k)
ti2 = cc(2, 1, k) + cc(2, 3, k)
tr4 = cc(2, 4, k) - cc(2, 2, k)
Expand Down
74 changes: 36 additions & 38 deletions src/passb5.f90
Original file line number Diff line number Diff line change
Expand Up @@ -16,46 +16,44 @@ subroutine passb5(ido, l1, cc, ch, wa1, wa2, wa3, wa4)
real(dp), parameter :: tr12 = cos(4.0_dp*pi/5.0_dp)
real(dp), parameter :: ti12 = sin(4.0_dp*pi/5.0_dp)
if (ido /= 2) then
do k = 1, l1
do i = 2, ido, 2
ti5 = cc(i, 2, k) - cc(i, 5, k)
ti2 = cc(i, 2, k) + cc(i, 5, k)
ti4 = cc(i, 3, k) - cc(i, 4, k)
ti3 = cc(i, 3, k) + cc(i, 4, k)
tr5 = cc(i - 1, 2, k) - cc(i - 1, 5, k)
tr2 = cc(i - 1, 2, k) + cc(i - 1, 5, k)
tr4 = cc(i - 1, 3, k) - cc(i - 1, 4, k)
tr3 = cc(i - 1, 3, k) + cc(i - 1, 4, k)
ch(i - 1, k, 1) = cc(i - 1, 1, k) + tr2 + tr3
ch(i, k, 1) = cc(i, 1, k) + ti2 + ti3
cr2 = cc(i - 1, 1, k) + tr11*tr2 + tr12*tr3
ci2 = cc(i, 1, k) + tr11*ti2 + tr12*ti3
cr3 = cc(i - 1, 1, k) + tr12*tr2 + tr11*tr3
ci3 = cc(i, 1, k) + tr12*ti2 + tr11*ti3
cr5 = ti11*tr5 + ti12*tr4
ci5 = ti11*ti5 + ti12*ti4
cr4 = ti12*tr5 - ti11*tr4
ci4 = ti12*ti5 - ti11*ti4
dr3 = cr3 - ci4
dr4 = cr3 + ci4
di3 = ci3 + cr4
di4 = ci3 - cr4
dr5 = cr2 + ci5
dr2 = cr2 - ci5
di5 = ci2 - cr5
di2 = ci2 + cr5
ch(i - 1, k, 2) = wa1(i - 1)*dr2 - wa1(i)*di2
ch(i, k, 2) = wa1(i - 1)*di2 + wa1(i)*dr2
ch(i - 1, k, 3) = wa2(i - 1)*dr3 - wa2(i)*di3
ch(i, k, 3) = wa2(i - 1)*di3 + wa2(i)*dr3
ch(i - 1, k, 4) = wa3(i - 1)*dr4 - wa3(i)*di4
ch(i, k, 4) = wa3(i - 1)*di4 + wa3(i)*dr4
ch(i - 1, k, 5) = wa4(i - 1)*dr5 - wa4(i)*di5
ch(i, k, 5) = wa4(i - 1)*di5 + wa4(i)*dr5
end do
do concurrent(i=2:ido:2, k=1:l1)
ti5 = cc(i, 2, k) - cc(i, 5, k)
ti2 = cc(i, 2, k) + cc(i, 5, k)
ti4 = cc(i, 3, k) - cc(i, 4, k)
ti3 = cc(i, 3, k) + cc(i, 4, k)
tr5 = cc(i - 1, 2, k) - cc(i - 1, 5, k)
tr2 = cc(i - 1, 2, k) + cc(i - 1, 5, k)
tr4 = cc(i - 1, 3, k) - cc(i - 1, 4, k)
tr3 = cc(i - 1, 3, k) + cc(i - 1, 4, k)
ch(i - 1, k, 1) = cc(i - 1, 1, k) + tr2 + tr3
ch(i, k, 1) = cc(i, 1, k) + ti2 + ti3
cr2 = cc(i - 1, 1, k) + tr11*tr2 + tr12*tr3
ci2 = cc(i, 1, k) + tr11*ti2 + tr12*ti3
cr3 = cc(i - 1, 1, k) + tr12*tr2 + tr11*tr3
ci3 = cc(i, 1, k) + tr12*ti2 + tr11*ti3
cr5 = ti11*tr5 + ti12*tr4
ci5 = ti11*ti5 + ti12*ti4
cr4 = ti12*tr5 - ti11*tr4
ci4 = ti12*ti5 - ti11*ti4
dr3 = cr3 - ci4
dr4 = cr3 + ci4
di3 = ci3 + cr4
di4 = ci3 - cr4
dr5 = cr2 + ci5
dr2 = cr2 - ci5
di5 = ci2 - cr5
di2 = ci2 + cr5
ch(i - 1, k, 2) = wa1(i - 1)*dr2 - wa1(i)*di2
ch(i, k, 2) = wa1(i - 1)*di2 + wa1(i)*dr2
ch(i - 1, k, 3) = wa2(i - 1)*dr3 - wa2(i)*di3
ch(i, k, 3) = wa2(i - 1)*di3 + wa2(i)*dr3
ch(i - 1, k, 4) = wa3(i - 1)*dr4 - wa3(i)*di4
ch(i, k, 4) = wa3(i - 1)*di4 + wa3(i)*dr4
ch(i - 1, k, 5) = wa4(i - 1)*dr5 - wa4(i)*di5
ch(i, k, 5) = wa4(i - 1)*di5 + wa4(i)*dr5
end do
else
do k = 1, l1
do concurrent(k=1:l1)
ti5 = cc(2, 2, k) - cc(2, 5, k)
ti2 = cc(2, 2, k) + cc(2, 5, k)
ti4 = cc(2, 3, k) - cc(2, 4, k)
Expand Down
Loading
Loading