Skip to content

Commit 892bf1e

Browse files
committed
templated BLAS/LAPACK initials
1 parent 19f84ce commit 892bf1e

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

include/common.fypp

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,20 @@
2727
#:set REAL_KINDS = REAL_KINDS + ["qp"]
2828
#:endif
2929

30+
#! BLAS/LAPACK initials for each real kind
31+
#:set REAL_INIT = ["s", "d"]
32+
#:if WITH_XDP
33+
#:set REAL_INIT = REAL_INIT + ["x"]
34+
#:endif
35+
#:if WITH_QP
36+
#:set REAL_INIT = REAL_INIT + ["q"]
37+
#:endif
38+
3039
#! Real types to be considered during templating
3140
#:set REAL_TYPES = ["real({})".format(k) for k in REAL_KINDS]
3241

3342
#! Collected (kind, type) tuples for real types
34-
#:set REAL_KINDS_TYPES = list(zip(REAL_KINDS, REAL_TYPES))
43+
#:set REAL_KINDS_TYPES = list(zip(REAL_KINDS, REAL_TYPES, REAL_INIT))
3544

3645
#! Complex kinds to be considered during templating
3746
#:set CMPLX_KINDS = ["sp", "dp"]
@@ -42,11 +51,20 @@
4251
#:set CMPLX_KINDS = CMPLX_KINDS + ["qp"]
4352
#:endif
4453

54+
#! BLAS/LAPACK initials for each complex kind
55+
#:set CMPLX_INIT = ["c", "z"]
56+
#:if WITH_XDP
57+
#:set CMPLX_INIT = CMPLX_INIT + ["y"]
58+
#:endif
59+
#:if WITH_QP
60+
#:set CMPLX_INIT = CMPLX_INIT + ["w"]
61+
#:endif
62+
4563
#! Complex types to be considered during templating
4664
#:set CMPLX_TYPES = ["complex({})".format(k) for k in CMPLX_KINDS]
4765

48-
#! Collected (kind, type) tuples for complex types
49-
#:set CMPLX_KINDS_TYPES = list(zip(CMPLX_KINDS, CMPLX_TYPES))
66+
#! Collected (kind, type, initial) tuples for complex types
67+
#:set CMPLX_KINDS_TYPES = list(zip(CMPLX_KINDS, CMPLX_TYPES, CMPLX_INIT))
5068

5169
#! Integer kinds to be considered during templating
5270
#:set INT_KINDS = ["int8", "int16", "int32", "int64"]
@@ -109,6 +127,17 @@
109127
#{if rank > 0}#(${":" + ",:" * (rank - 1)}$)#{endif}#
110128
#:enddef
111129

130+
#! Generates an empty array rank suffix.
131+
#!
132+
#! Args:
133+
#! rank (int): Rank of the variable
134+
#!
135+
#! Returns:
136+
#! Empty array rank suffix string (e.g. (0,0) if rank = 2)
137+
#!
138+
#:def emptyranksuffix(rank)
139+
#{if rank > 0}#(${"0" + ",0" * (rank - 1)}$)#{endif}#
140+
#:enddef
112141

113142
#! Joins stripped lines with given character string
114143
#!

0 commit comments

Comments
 (0)