Skip to content

Commit ae41002

Browse files
committed
don't use reducedim_initarray
1 parent 39a7e3c commit ae41002

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

src/bidiag.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1461,7 +1461,13 @@ eigen(M::Bidiagonal) = Eigen(eigvals(M), eigvecs(M))
14611461

14621462
Base._sum(A::Bidiagonal, ::Colon) = sum(A.dv) + sum(A.ev)
14631463
function Base._sum(A::Bidiagonal, dims::Integer)
1464-
res = Base.reducedim_initarray(A, dims, zero(eltype(A)))
1464+
Base._check_valid_region(dims)
1465+
ax = (dims == 1) ? (1, axes(A, 2)) :
1466+
(dims == 2) ? (axes(A, 1), 1) :
1467+
axes(A)
1468+
res = Base.mapreduce_similar(A, eltype(A), ax)
1469+
fill!(res, zero(eltype(A)))
1470+
14651471
n = length(A.dv)
14661472
if n == 0
14671473
# Just to be sure. This shouldn't happen since there is a check whether

src/diagonal.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1134,7 +1134,13 @@ end
11341134

11351135
Base._sum(A::Diagonal, ::Colon) = sum(A.diag)
11361136
function Base._sum(A::Diagonal, dims::Integer)
1137-
res = Base.reducedim_initarray(A, dims, zero(eltype(A)))
1137+
Base._check_valid_region(dims)
1138+
ax = (dims == 1) ? (1, axes(A, 2)) :
1139+
(dims == 2) ? (axes(A, 1), 1) :
1140+
axes(A)
1141+
res = Base.mapreduce_similar(A, eltype(A), ax)
1142+
fill!(res, zero(eltype(A)))
1143+
11381144
if dims <= 2
11391145
for i = 1:length(A.diag)
11401146
@inbounds res[i] = A.diag[i]

src/tridiag.jl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -893,7 +893,13 @@ function Base._sum(A::SymTridiagonal, ::Colon)
893893
end
894894

895895
function Base._sum(A::Tridiagonal, dims::Integer)
896-
res = Base.reducedim_initarray(A, dims, zero(eltype(A)))
896+
Base._check_valid_region(dims)
897+
ax = (dims == 1) ? (1, axes(A, 2)) :
898+
(dims == 2) ? (axes(A, 1), 1) :
899+
axes(A)
900+
res = Base.mapreduce_similar(A, eltype(A), ax)
901+
fill!(res, zero(eltype(A)))
902+
897903
n = length(A.d)
898904
if n == 0
899905
return res
@@ -927,7 +933,13 @@ function Base._sum(A::Tridiagonal, dims::Integer)
927933
end
928934

929935
function Base._sum(A::SymTridiagonal, dims::Integer)
930-
res = Base.reducedim_initarray(A, dims, zero(eltype(A)))
936+
Base._check_valid_region(dims)
937+
ax = (dims == 1) ? (1, axes(A, 2)) :
938+
(dims == 2) ? (axes(A, 1), 1) :
939+
axes(A)
940+
res = Base.mapreduce_similar(A, eltype(A), ax)
941+
fill!(res, zero(eltype(A)))
942+
931943
n = length(A.dv)
932944
if n == 0
933945
return res

0 commit comments

Comments
 (0)