@@ -302,19 +302,20 @@ function _mapreducedim!(f, op, R::AbstractArray, A::AbstractArrayOrBroadcasted)
302302 if reducedim1 (R, A)
303303 # keep the accumulator as a local variable when reducing along the first dimension
304304 i1 = first (axes1 (R))
305- @inbounds for IA in CartesianIndices (indsAt)
305+ for IA in CartesianIndices (indsAt)
306306 IR = Broadcast. newindex (IA, keep, Idefault)
307- r = R[i1,IR]
307+ @inbounds r = R[i1,IR]
308308 @simd for i in axes (A, 1 )
309- r = op (r, f (A[i, IA]))
309+ r = op (r, f (@inbounds ( A[i, IA]) ))
310310 end
311- R[i1,IR] = r
311+ @inbounds R[i1,IR] = r
312312 end
313313 else
314- @inbounds for IA in CartesianIndices (indsAt)
314+ for IA in CartesianIndices (indsAt)
315315 IR = Broadcast. newindex (IA, keep, Idefault)
316316 @simd for i in axes (A, 1 )
317- R[i,IR] = op (R[i,IR], f (A[i,IA]))
317+ v = op (@inbounds (R[i,IR]), f (@inbounds (A[i,IA])))
318+ @inbounds R[i,IR] = v
318319 end
319320 end
320321 end
@@ -1058,33 +1059,33 @@ function findminmax!(f, op, Rval, Rind, A::AbstractArray{T,N}) where {T,N}
10581059 zi = zero (eltype (ks))
10591060 if reducedim1 (Rval, A)
10601061 i1 = first (axes1 (Rval))
1061- @inbounds for IA in CartesianIndices (indsAt)
1062+ for IA in CartesianIndices (indsAt)
10621063 IR = Broadcast. newindex (IA, keep, Idefault)
1063- tmpRv = Rval[i1,IR]
1064- tmpRi = Rind[i1,IR]
1064+ @inbounds tmpRv = Rval[i1,IR]
1065+ @inbounds tmpRi = Rind[i1,IR]
10651066 for i in axes (A,1 )
10661067 k, kss = y:: Tuple
1067- tmpAv = f (A[i,IA])
1068+ tmpAv = f (@inbounds ( A[i,IA]) )
10681069 if tmpRi == zi || op (tmpRv, tmpAv)
10691070 tmpRv = tmpAv
10701071 tmpRi = k
10711072 end
10721073 y = iterate (ks, kss)
10731074 end
1074- Rval[i1,IR] = tmpRv
1075- Rind[i1,IR] = tmpRi
1075+ @inbounds Rval[i1,IR] = tmpRv
1076+ @inbounds Rind[i1,IR] = tmpRi
10761077 end
10771078 else
1078- @inbounds for IA in CartesianIndices (indsAt)
1079+ for IA in CartesianIndices (indsAt)
10791080 IR = Broadcast. newindex (IA, keep, Idefault)
10801081 for i in axes (A, 1 )
10811082 k, kss = y:: Tuple
1082- tmpAv = f (A[i,IA])
1083- tmpRv = Rval[i,IR]
1084- tmpRi = Rind[i,IR]
1083+ tmpAv = f (@inbounds ( A[i,IA]) )
1084+ @inbounds tmpRv = Rval[i,IR]
1085+ @inbounds tmpRi = Rind[i,IR]
10851086 if tmpRi == zi || op (tmpRv, tmpAv)
1086- Rval[i,IR] = tmpAv
1087- Rind[i,IR] = k
1087+ @inbounds Rval[i,IR] = tmpAv
1088+ @inbounds Rind[i,IR] = k
10881089 end
10891090 y = iterate (ks, kss)
10901091 end
0 commit comments