@@ -87,19 +87,19 @@ contains
8787 #:for fj in list(range(1, fi)) + list(range(fi+1, rank+1))
8888 do j${"_" * fj}$ = 1, size(x, ${fj}$)
8989 #:endfor
90- x_tmp(:) = x${select_subvector('j', rank, fi)}$
91- call sort(x_tmp)
92-
93- if (mod(n, 2) == 0) then
94- res${reduce_subvector('j', rank, fi)}$ = &
95- #:if t1[0] == 'r'
96- sum(x_tmp(c:c+1)) / 2._${o1}$
97- #:else
98- sum(real(x_tmp(c:c+1), kind=${o1}$) ) / 2._${o1}$
99- #:endif
100- else
101- res${reduce_subvector('j', rank, fi)}$ = x_tmp(c)
102- end if
90+ x_tmp(:) = x${select_subvector('j', rank, fi)}$
91+ call sort(x_tmp)
92+
93+ if (mod(n, 2) == 0) then
94+ res${reduce_subvector('j', rank, fi)}$ = &
95+ #:if t1[0] == 'r'
96+ sum(x_tmp(c:c+1)) / 2._${o1}$
97+ #:else
98+ sum(real(x_tmp(c:c+1), kind=${o1}$) ) / 2._${o1}$
99+ #:endif
100+ else
101+ res${reduce_subvector('j', rank, fi)}$ = x_tmp(c)
102+ end if
103103 #:for fj in range(1, rank)
104104 end do
105105 #:endfor
@@ -179,28 +179,28 @@ contains
179179 #:for fj in list(range(1, fi)) + list(range(fi+1, rank+1))
180180 do j${"_" * fj}$ = 1, size(x, ${fj}$)
181181 #:endfor
182- x_tmp = pack(x${select_subvector('j', rank, fi)}$, &
183- mask${select_subvector('j', rank, fi)}$)
184- call sort(x_tmp)
185-
186- n = size(x_tmp, kind=int64)
187- c = floor( (n + 1) / 2._${o1}$, kind=int64 )
188-
189- if (n == 0) then
190- res${reduce_subvector('j', rank, fi)}$ = &
191- ieee_value(1._${o1}$, ieee_quiet_nan)
192- else if (mod(n, 2_int64) == 0) then
193- res${reduce_subvector('j', rank, fi)}$ = &
194- #:if t1[0] == 'r'
195- sum(x_tmp(c:c+1)) / 2._${o1}$
196- #:else
197- sum(real(x_tmp(c:c+1), kind=${o1}$)) / 2._${o1}$
198- #:endif
199- else if (mod(n, 2_int64) == 1) then
200- res${reduce_subvector('j', rank, fi)}$ = x_tmp(c)
201- end if
202-
203- deallocate(x_tmp)
182+ x_tmp = pack(x${select_subvector('j', rank, fi)}$, &
183+ mask${select_subvector('j', rank, fi)}$)
184+ call sort(x_tmp)
185+
186+ n = size(x_tmp, kind=int64)
187+ c = floor( (n + 1) / 2._${o1}$, kind=int64 )
188+
189+ if (n == 0) then
190+ res${reduce_subvector('j', rank, fi)}$ = &
191+ ieee_value(1._${o1}$, ieee_quiet_nan)
192+ else if (mod(n, 2_int64) == 0) then
193+ res${reduce_subvector('j', rank, fi)}$ = &
194+ #:if t1[0] == 'r'
195+ sum(x_tmp(c:c+1)) / 2._${o1}$
196+ #:else
197+ sum(real(x_tmp(c:c+1), kind=${o1}$)) / 2._${o1}$
198+ #:endif
199+ else if (mod(n, 2_int64) == 1) then
200+ res${reduce_subvector('j', rank, fi)}$ = x_tmp(c)
201+ end if
202+
203+ deallocate(x_tmp)
204204 #:for fj in range(1, rank)
205205 end do
206206 #:endfor
0 commit comments