blob: 5602a709a36d52050b6dd4d78feb770d34e7603a [file] [log] [blame]
! { dg-do compile }
! { dg-options "-Ofast" }
SUBROUTINE foo (a,b,c,d,trigs,inc1,inc2,inc3,inc4,lot,n,la)
IMPLICIT NONE (type, external)
INTEGER, PARAMETER :: wp = 8
INTEGER, PARAMETER :: iwp = 4
INTEGER(iwp) :: inc1
INTEGER(iwp) :: inc2
INTEGER(iwp) :: inc3
INTEGER(iwp) :: inc4
INTEGER(iwp) :: la
INTEGER(iwp) :: lot
INTEGER(iwp) :: n
REAL(wp) :: a(*)
REAL(wp) :: b(*)
REAL(wp) :: c(*)
REAL(wp) :: d(*)
REAL(wp) :: trigs(*)
REAL(wp) :: c1
REAL(wp) :: c2
REAL(wp) :: s1
REAL(wp) :: s2
REAL(wp) :: sin60
INTEGER(iwp) :: i
INTEGER(iwp) :: ia
INTEGER(iwp) :: ib
INTEGER(iwp) :: ibase
INTEGER(iwp) :: ic
INTEGER(iwp) :: iink
INTEGER(iwp) :: ijk
INTEGER(iwp) :: j
INTEGER(iwp) :: ja
INTEGER(iwp) :: jb
INTEGER(iwp) :: jbase
INTEGER(iwp) :: jc
INTEGER(iwp) :: jink
INTEGER(iwp) :: jump
INTEGER(iwp) :: k
INTEGER(iwp) :: kb
INTEGER(iwp) :: kc
INTEGER(iwp) :: kstop
INTEGER(iwp) :: l
INTEGER(iwp) :: m
sin60=0.866025403784437_wp
ia = 1
ib = ia + (2*m-la)*inc1
ic = ib
ja = 1
jb = ja + jink
jc = jb + jink
DO k = la, kstop, la
kb = k + k
kc = kb + kb
c1 = trigs(kb+1)
s1 = trigs(kb+2)
c2 = trigs(kc+1)
s2 = trigs(kc+2)
ibase = 0
DO l = 1, la
i = ibase
j = jbase
DO ijk = 1, lot
c(ja+j) = a(ia+i) + (a(ib+i)+a(ic+i))
d(ja+j) = b(ia+i) + (b(ib+i)-b(ic+i))
c(jb+j) = c1*((a(ia+i)-0.5_wp*(a(ib+i)+a(ic+i)))-(sin60*(b(ib+i)+ &
& b(ic+i)))) &
& - s1*((b(ia+i)-0.5_wp*(b(ib+i)-b(ic+i)))+(sin60*(a(ib+i)- &
& a(ic+i))))
d(jb+j) = s1*((a(ia+i)-0.5_wp*(a(ib+i)+a(ic+i)))-(sin60*(b(ib+i)+ &
& b(ic+i)))) &
& + c1*((b(ia+i)-0.5_wp*(b(ib+i)-b(ic+i)))+(sin60*(a(ib+i)- &
& a(ic+i))))
c(jc+j) = c2*((a(ia+i)-0.5_wp*(a(ib+i)+a(ic+i)))+(sin60*(b(ib+i)+ &
& b(ic+i)))) &
& - s2*((b(ia+i)-0.5_wp*(b(ib+i)-b(ic+i)))-(sin60*(a(ib+i)- &
& a(ic+i))))
i = i + inc3
j = j + inc4
END DO
ibase = ibase + inc1
jbase = jbase + inc2
END DO
ia = ia + iink
ib = ib + iink
ic = ic - iink
jbase = jbase + jump
END DO
END