Skip to content

Commit 1e81f0b

Browse files
authored
Merge pull request #549 from milancurcic/pure-linspace-logspace
Make `linspace` and `logspace` pure functions
2 parents c2db004 + 4e69ba4 commit 1e81f0b

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

Diff for: doc/specs/stdlib_math.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ Experimental
152152

153153
#### Class
154154

155-
Function.
155+
Pure function.
156156

157157
#### Argument(s)
158158

@@ -224,7 +224,7 @@ Experimental
224224

225225
#### Class
226226

227-
Function.
227+
Pure function.
228228

229229
#### Argument(s)
230230

Diff for: src/stdlib_math.fypp

+17-17
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ module stdlib_math
4747
!!([Specification](../page/specs/stdlib_math.html#linspace-create-a-linearly-spaced-rank-one-array))
4848
#:for k1, t1 in RC_KINDS_TYPES
4949
#:set RName = rname("linspace_default", 1, t1, k1)
50-
module function ${RName}$(start, end) result(res)
50+
pure module function ${RName}$(start, end) result(res)
5151
${t1}$, intent(in) :: start
5252
${t1}$, intent(in) :: end
5353

@@ -57,7 +57,7 @@ module stdlib_math
5757

5858
#:for k1, t1 in RC_KINDS_TYPES
5959
#:set RName = rname("linspace_n", 1, t1, k1)
60-
module function ${RName}$(start, end, n) result(res)
60+
pure module function ${RName}$(start, end, n) result(res)
6161
${t1}$, intent(in) :: start
6262
${t1}$, intent(in) :: end
6363
integer, intent(in) :: n
@@ -74,7 +74,7 @@ module stdlib_math
7474
#:set RName = rname("linspace_default", 1, t1, k1)
7575
#! The interface for INT_KINDS_TYPES cannot be combined with RC_KINDS_TYPES
7676
#! because the output for integer types is always a real with dp.
77-
module function ${RName}$(start, end) result(res)
77+
pure module function ${RName}$(start, end) result(res)
7878
${t1}$, intent(in) :: start
7979
${t1}$, intent(in) :: end
8080

@@ -84,7 +84,7 @@ module stdlib_math
8484

8585
#:for k1, t1 in INT_KINDS_TYPES
8686
#:set RName = rname("linspace_n", 1, t1, k1)
87-
module function ${RName}$(start, end, n) result(res)
87+
pure module function ${RName}$(start, end, n) result(res)
8888
${t1}$, intent(in) :: start
8989
${t1}$, intent(in) :: end
9090
integer, intent(in) :: n
@@ -109,7 +109,7 @@ module stdlib_math
109109
#!=========================================================
110110
#:for k1, t1 in RC_KINDS_TYPES
111111
#:set RName = rname("logspace", 1, t1, k1, "default")
112-
module function ${RName}$(start, end) result(res)
112+
pure module function ${RName}$(start, end) result(res)
113113

114114
${t1}$, intent(in) :: start
115115
${t1}$, intent(in) :: end
@@ -120,7 +120,7 @@ module stdlib_math
120120
#:endfor
121121
#! Integer support
122122
#:set RName = rname("logspace", 1, "integer(int32)", "int32", "default")
123-
module function ${RName}$(start, end) result(res)
123+
pure module function ${RName}$(start, end) result(res)
124124

125125
integer, intent(in) :: start
126126
integer, intent(in) :: end
@@ -134,7 +134,7 @@ module stdlib_math
134134
#!=========================================================
135135
#:for k1, t1 in RC_KINDS_TYPES
136136
#:set RName = rname("logspace", 1, t1, k1, "n")
137-
module function ${RName}$(start, end, n) result(res)
137+
pure module function ${RName}$(start, end, n) result(res)
138138
${t1}$, intent(in) :: start
139139
${t1}$, intent(in) :: end
140140
integer, intent(in) :: n
@@ -144,7 +144,7 @@ module stdlib_math
144144
#:endfor
145145
#! Integer support
146146
#:set RName = rname("logspace", 1, "integer(int32)", "int32", "n")
147-
module function ${RName}$(start, end, n) result(res)
147+
pure module function ${RName}$(start, end, n) result(res)
148148
integer, intent(in) :: start
149149
integer, intent(in) :: end
150150
integer, intent(in) :: n
@@ -165,7 +165,7 @@ module stdlib_math
165165
! Different combinations of parameter types will lead to different result types.
166166
! Those combinations are indicated in the body of each function.
167167
#:set RName = rname("logspace", 1, t1, k1, "n_rbase")
168-
module function ${RName}$(start, end, n, base) result(res)
168+
pure module function ${RName}$(start, end, n, base) result(res)
169169
${t1}$, intent(in) :: start
170170
${t1}$, intent(in) :: end
171171
integer, intent(in) :: n
@@ -175,7 +175,7 @@ module stdlib_math
175175
end function ${RName}$
176176

177177
#:set RName = rname("logspace", 1, t1, k1, "n_cbase")
178-
module function ${RName}$(start, end, n, base) result(res)
178+
pure module function ${RName}$(start, end, n, base) result(res)
179179
${t1}$, intent(in) :: start
180180
${t1}$, intent(in) :: end
181181
integer, intent(in) :: n
@@ -185,7 +185,7 @@ module stdlib_math
185185
end function ${RName}$
186186

187187
#:set RName = rname("logspace", 1, t1, k1, "n_ibase")
188-
module function ${RName}$(start, end, n, base) result(res)
188+
pure module function ${RName}$(start, end, n, base) result(res)
189189
${t1}$, intent(in) :: start
190190
${t1}$, intent(in) :: end
191191
integer, intent(in) :: n
@@ -202,7 +202,7 @@ module stdlib_math
202202
! Different combinations of parameter types will lead to different result types.
203203
! Those combinations are indicated in the body of each function.
204204
#:set RName = rname("logspace", 1, t1, k1, "n_rbase")
205-
module function ${RName}$(start, end, n, base) result(res)
205+
pure module function ${RName}$(start, end, n, base) result(res)
206206
${t1}$, intent(in) :: start
207207
${t1}$, intent(in) :: end
208208
integer, intent(in) :: n
@@ -212,7 +212,7 @@ module stdlib_math
212212
end function ${RName}$
213213

214214
#:set RName = rname("logspace", 1, t1, k1, "n_cbase")
215-
module function ${RName}$(start, end, n, base) result(res)
215+
pure module function ${RName}$(start, end, n, base) result(res)
216216
${t1}$, intent(in) :: start
217217
${t1}$, intent(in) :: end
218218
integer, intent(in) :: n
@@ -222,7 +222,7 @@ module stdlib_math
222222
end function ${RName}$
223223

224224
#:set RName = rname("logspace", 1, t1, k1, "n_ibase")
225-
module function ${RName}$(start, end, n, base) result(res)
225+
pure module function ${RName}$(start, end, n, base) result(res)
226226
${t1}$, intent(in) :: start
227227
${t1}$, intent(in) :: end
228228
integer, intent(in) :: n
@@ -240,7 +240,7 @@ module stdlib_math
240240
! Those combinations are indicated in the body of each function.
241241
#:for k1 in REAL_KINDS
242242
#:set RName = rname("logspace", 1, "integer(int32)", "int32", "n_r" + str(k1) + "base")
243-
module function ${RName}$(start, end, n, base) result(res)
243+
pure module function ${RName}$(start, end, n, base) result(res)
244244
integer, intent(in) :: start
245245
integer, intent(in) :: end
246246
integer, intent(in) :: n
@@ -250,7 +250,7 @@ module stdlib_math
250250
end function ${RName}$
251251

252252
#:set RName = rname("logspace", 1, "integer(int32)", "int32", "n_c" + str(k1) + "base")
253-
module function ${RName}$(start, end, n, base) result(res)
253+
pure module function ${RName}$(start, end, n, base) result(res)
254254
integer, intent(in) :: start
255255
integer, intent(in) :: end
256256
integer, intent(in) :: n
@@ -261,7 +261,7 @@ module stdlib_math
261261
#:endfor
262262

263263
#:set RName = rname("logspace", 1, "integer(int32)", "int32", "n_ibase")
264-
module function ${RName}$(start, end, n, base) result(res)
264+
pure module function ${RName}$(start, end, n, base) result(res)
265265
integer, intent(in) :: start
266266
integer, intent(in) :: end
267267
integer, intent(in) :: n

Diff for: src/stdlib_math_linspace.fypp

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ contains
77

88
#:for k1, t1 in REAL_KINDS_TYPES
99
#:set RName = rname("linspace_default", 1, t1, k1)
10-
module function ${RName}$(start, end) result(res)
10+
pure module function ${RName}$(start, end) result(res)
1111
${t1}$, intent(in) :: start
1212
${t1}$, intent(in) :: end
1313

@@ -20,7 +20,7 @@ contains
2020

2121
#:for k1, t1 in REAL_KINDS_TYPES
2222
#:set RName = rname("linspace_n", 1, t1, k1)
23-
module function ${RName}$(start, end, n) result(res)
23+
pure module function ${RName}$(start, end, n) result(res)
2424
${t1}$, intent(in) :: start
2525
${t1}$, intent(in) :: end
2626
integer, intent(in) :: n

0 commit comments

Comments
 (0)