Skip to content

Commit 8f4a57f

Browse files
committed
modif reduce_subvector + select_subvector
1 parent dfea79d commit 8f4a57f

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

src/common.fypp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,25 +160,26 @@ ${prefix + joinstr.join([line.strip() for line in txt.split("\n")]) + suffix}$
160160
#! Generates an array rank suffix for subarrays along a dimension
161161
#!
162162
#! Args:
163+
#! varname (str): Name of the variable to be used as origin
163164
#! rank (int): Rank of the original variable
164165
#! dim (int): Dimension of the variable
165166
#!
166167
#! Returns:
167168
#! Array rank suffix string enclosed in braces
168169
#!
169170
#! E.g.,
170-
#! select_subvector(5, 2)
171+
#! select_subvector('j', 5, 2)
171172
#! -> (j_, :, j___, j____, j_____)
172173
#!
173-
#:def select_subvector(rank, idim)
174+
#:def select_subvector(varname, rank, idim)
174175
#:assert rank > 0
175176
#:call join_lines(joinstr=", ", prefix="(", suffix=")")
176177
#:for i in range(1, idim)
177-
${"j" + "_" * (i) }$
178+
${varname}$${ "_" * (i) }$
178179
#:endfor
179180
:
180181
#:for i in range(idim + 1, rank + 1)
181-
${"j" + "_" * (i) }$
182+
${varname}$${ "_" * (i) }$
182183
#:endfor
183184
#:endcall
184185
#:enddef
@@ -187,25 +188,26 @@ ${prefix + joinstr.join([line.strip() for line in txt.split("\n")]) + suffix}$
187188
#! Generates an array rank suffix for arrays
188189
#!
189190
#! Args:
191+
#! varname (str): Name of the variable to be used as origin
190192
#! rank (int): Rank of the original variable
191193
#! idim (int): Dimension of the variable
192194
#!
193195
#! Returns:
194196
#! Array rank suffix string enclosed in braces
195197
#!
196198
#! E.g.,
197-
#! select_subvector(5, 2)
199+
#! reduce_subvector('j', 5, 2)
198200
#! -> (j_, j___, j____, j_____)
199201
#!
200-
#:def reduce_subvector(rank, idim)
202+
#:def reduce_subvector(varname, rank, idim)
201203
#:assert rank > 0
202204
#:if rank > 1
203205
#:call join_lines(joinstr=", ", prefix="(", suffix=")")
204206
#:for i in range(1, idim)
205-
${"j" + "_" * (i) }$
207+
${varname}$${ "_" * (i) }$
206208
#:endfor
207209
#:for i in range(idim + 1, rank + 1)
208-
${"j" + "_" * (i) }$
210+
${varname}$${ "_" * (i) }$
209211
#:endfor
210212
#:endcall
211213
#:endif

src/stdlib_stats_median.fypp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,18 @@ contains
8686
#:for fj in range(fi+1, rank+1)
8787
do j${"_" * fj}$ = 1, size(x, ${fj}$)
8888
#:endfor
89-
x_tmp(:) = x${select_subvector(rank, fi)}$
89+
x_tmp(:) = x${select_subvector('j', rank, fi)}$
9090
call sort(x_tmp)
9191

9292
if (mod(n, 2) == 0) then
93-
res${reduce_subvector(rank, fi)}$ = &
93+
res${reduce_subvector('j', rank, fi)}$ = &
9494
#:if t1[0] == 'r'
9595
sum(x_tmp(c:c+1)) / 2._${o1}$
9696
#:else
9797
sum(real(x_tmp(c:c+1), kind=${o1}$) ) / 2._${o1}$
9898
#:endif
9999
else
100-
res${reduce_subvector(rank, fi)}$ = x_tmp(c)
100+
res${reduce_subvector('j', rank, fi)}$ = x_tmp(c)
101101
end if
102102
#:for fj in range(1, rank)
103103
end do
@@ -180,25 +180,25 @@ contains
180180
#:for fj in range(fi+1, rank+1)
181181
do j${"_" * fj}$ = 1, size(x, ${fj}$)
182182
#:endfor
183-
x_tmp = pack(x${select_subvector(rank, fi)}$, &
184-
mask${select_subvector(rank, fi)}$)
183+
x_tmp = pack(x${select_subvector('j', rank, fi)}$, &
184+
mask${select_subvector('j', rank, fi)}$)
185185
call sort(x_tmp)
186186

187187
n = size(x_tmp, kind=int64)
188188
c = floor( (n + 1) / 2._${o1}$, kind=int64 )
189189

190190
if (n == 0) then
191-
res${reduce_subvector(rank, fi)}$ = &
191+
res${reduce_subvector('j', rank, fi)}$ = &
192192
ieee_value(1._${o1}$, ieee_quiet_nan)
193193
else if (mod(n, 2_int64) == 0) then
194-
res${reduce_subvector(rank, fi)}$ = &
194+
res${reduce_subvector('j', rank, fi)}$ = &
195195
#:if t1[0] == 'r'
196196
sum(x_tmp(c:c+1)) / 2._${o1}$
197197
#:else
198198
sum(real(x_tmp(c:c+1), kind=${o1}$)) / 2._${o1}$
199199
#:endif
200200
else if (mod(n, 2_int64) == 1) then
201-
res${reduce_subvector(rank, fi)}$ = x_tmp(c)
201+
res${reduce_subvector('j', rank, fi)}$ = x_tmp(c)
202202
end if
203203

204204
deallocate(x_tmp)

0 commit comments

Comments
 (0)