Skip to content

Commit e8f11ed

Browse files
committed
new2
1 parent 52971c3 commit e8f11ed

1 file changed

Lines changed: 26 additions & 10 deletions

File tree

test/linalg/test_linalg_specialmatrices.fypp

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,16 @@ contains
154154
integer, parameter :: wp = ${k1}$
155155
type(tridiagonal_${s1}$_type) :: A
156156
${t1}$, allocatable :: Amat(:,:)
157-
! Maintainer suggested using parameter for constant values
158-
${t1}$, parameter :: dl(0) = [${t1}$ ::]
159-
${t1}$, parameter :: du(0) = [${t1}$ ::]
157+
158+
#:if t1.startswith('complex')
159+
${t1}$, parameter :: dl(0) = [(cmplx(0.0_wp, 0.0_wp, kind=wp), i=1,0)]
160+
${t1}$, parameter :: du(0) = [(cmplx(0.0_wp, 0.0_wp, kind=wp), i=1,0)]
161+
${t1}$, parameter :: dv(1) = [cmplx(5.0_wp, 0.0_wp, kind=wp)]
162+
#:else
163+
${t1}$, parameter :: dl(0) = [(0.0_wp, i=1,0)]
164+
${t1}$, parameter :: du(0) = [(0.0_wp, i=1,0)]
160165
${t1}$, parameter :: dv(1) = [5.0_wp]
166+
#:endif
161167

162168
A = tridiagonal(dl, dv, du)
163169
Amat = dense(A)
@@ -182,14 +188,24 @@ contains
182188
integer, parameter :: n = 3
183189
type(tridiagonal_${s1}$_type) :: A, B, C
184190

185-
! Define components as parameters as suggested by maintainer
186-
${t1}$, parameter :: dl1(n-1) = [1.0_wp, 1.0_wp]
187-
${t1}$, parameter :: dv1(n) = [2.0_wp, 2.0_wp, 2.0_wp]
188-
${t1}$, parameter :: du1(n-1) = [3.0_wp, 3.0_wp]
191+
! Explicitly separate real vs complex to satisfy strict compile-time type checks
192+
#:if t1.startswith('complex')
193+
${t1}$, parameter :: dl1(n-1) = [(cmplx(1.0_wp, 0.0_wp, kind=wp), i=1,n-1)]
194+
${t1}$, parameter :: dv1(n) = [(cmplx(2.0_wp, 0.0_wp, kind=wp), i=1,n)]
195+
${t1}$, parameter :: du1(n-1) = [(cmplx(3.0_wp, 0.0_wp, kind=wp), i=1,n-1)]
196+
197+
${t1}$, parameter :: dl2(n-1) = [(cmplx(4.0_wp, 0.0_wp, kind=wp), i=1,n-1)]
198+
${t1}$, parameter :: dv2(n) = [(cmplx(5.0_wp, 0.0_wp, kind=wp), i=1,n)]
199+
${t1}$, parameter :: du2(n-1) = [(cmplx(6.0_wp, 0.0_wp, kind=wp), i=1,n-1)]
200+
#:else
201+
${t1}$, parameter :: dl1(n-1) = [(1.0_wp, i=1,n-1)]
202+
${t1}$, parameter :: dv1(n) = [(2.0_wp, i=1,n)]
203+
${t1}$, parameter :: du1(n-1) = [(3.0_wp, i=1,n-1)]
189204

190-
${t1}$, parameter :: dl2(n-1) = [4.0_wp, 4.0_wp]
191-
${t1}$, parameter :: dv2(n) = [5.0_wp, 5.0_wp, 5.0_wp]
192-
${t1}$, parameter :: du2(n-1) = [6.0_wp, 6.0_wp]
205+
${t1}$, parameter :: dl2(n-1) = [(4.0_wp, i=1,n-1)]
206+
${t1}$, parameter :: dv2(n) = [(5.0_wp, i=1,n)]
207+
${t1}$, parameter :: du2(n-1) = [(6.0_wp, i=1,n-1)]
208+
#:endif
193209

194210
A = tridiagonal(dl1, dv1, du1)
195211
B = tridiagonal(dl2, dv2, du2)

0 commit comments

Comments
 (0)