Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/LinearAlgebra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import Base: USE_BLAS64, abs, acos, acosh, acot, acoth, acsc, acsch, adjoint, as
copy, copyto!, copymutable, cos, cosh, cot, coth, csc, csch, eltype, exp, fill!, floor,
getindex, hcat, getproperty, imag, inv, invpermuterows!, isapprox, isequal, isone, iszero,
IndexStyle, kron, kron!, length, log, map, ndims, one, oneunit, parent, permutecols!,
permutedims, permuterows!, power_by_squaring, promote_rule, real, sec, sech, setindex!,
permutedims, permuterows!, power_by_squaring, promote_rule, real, isreal, sec, sech, setindex!,
show, similar, sin, sincos, sinh, size, sqrt, strides, stride, tan, tanh, transpose, trunc,
typed_hcat, vec, view, zero
import Base: AbstractArray, AbstractMatrix, Array, Matrix
Expand Down
1 change: 1 addition & 0 deletions src/bidiag.jl
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ axes(M::Bidiagonal) = (ax = axes(M.dv, 1); (ax, ax))
for func in (:conj, :copy, :real, :imag)
@eval ($func)(M::Bidiagonal) = Bidiagonal(($func)(M.dv), ($func)(M.ev), M.uplo)
end
isreal(M::Bidiagonal) = isreal(B.dv) && isreal(B.ev)

adjoint(B::Bidiagonal{<:Number}) = Bidiagonal(vec(adjoint(B.dv)), vec(adjoint(B.ev)), B.uplo == 'U' ? :L : :U)
adjoint(B::Bidiagonal{<:Number, <:Base.ReshapedArray{<:Number,1,<:Adjoint}}) =
Expand Down
2 changes: 2 additions & 0 deletions src/diagonal.jl
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,8 @@ factorize(D::Diagonal) = D
real(D::Diagonal) = Diagonal(real(D.diag))
imag(D::Diagonal) = Diagonal(imag(D.diag))

isreal(D::Diagonal) = isreal(D.diag)

iszero(D::Diagonal) = all(iszero, D.diag)
isone(D::Diagonal) = all(isone, D.diag)
isdiag(D::Diagonal) = all(isdiag, D.diag)
Expand Down
2 changes: 2 additions & 0 deletions src/tridiag.jl
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ _copyto_banded!(dest::SymTridiagonal, src::SymTridiagonal) =
for func in (:conj, :copy, :real, :imag)
@eval ($func)(M::SymTridiagonal) = SymTridiagonal(($func)(M.dv), ($func)(M.ev))
end
isreal(S::SymTridiagonal) = isreal(S.dv) && isreal(S.ev)

transpose(S::SymTridiagonal) = S
adjoint(S::SymTridiagonal{<:Number}) = SymTridiagonal(vec(adjoint(S.dv)), vec(adjoint(S.ev)))
Expand Down Expand Up @@ -667,6 +668,7 @@ for func in (:conj, :copy, :real, :imag)
Tridiagonal(($func)(M.dl), ($func)(M.d), ($func)(M.du))
end
end
isreal(T::Tridiagonal) = isreal(T.dl) && isreal(T.d) && isreal(T.du)

adjoint(S::Tridiagonal{<:Number}) = Tridiagonal(vec(adjoint(S.du)), vec(adjoint(S.d)), vec(adjoint(S.dl)))
adjoint(S::Tridiagonal{<:Number, <:Base.ReshapedArray{<:Number,1,<:Adjoint}}) =
Expand Down
8 changes: 8 additions & 0 deletions test/bidiag.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1172,4 +1172,12 @@ end
@test_throws InexactError convert(Bidiagonal, M)
end

@testset "isreal" begin
M = Bidiagonal(ones(2), ones(1), :U)
@test @inferred((M -> Val(isreal(M)))(M)) == Val(true)
M = complex.(M)
@test isreal(M)
@test !isreal(im*M)
end

end # module TestBidiagonal
8 changes: 8 additions & 0 deletions test/diagonal.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1481,4 +1481,12 @@ end
@test ishermitian(D) == ishermitian(A)
end

@testset "isreal" begin
D = Diagonal(ones(2))
@test @inferred((D -> Val(isreal(D)))(D)) == Val(true)
D = complex.(D)
@test isreal(D)
@test !isreal(im*D)
end

end # module TestDiagonal
10 changes: 10 additions & 0 deletions test/tridiag.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1162,4 +1162,14 @@ end
end
end

@testset "isreal" begin
for M in (SymTridiagonal(ones(2), ones(1)),
Tridiagonal(ones(2), ones(3), ones(2)))
@test @inferred((M -> Val(isreal(M)))(M)) == Val(true)
M = complex.(M)
@test isreal(M)
@test !isreal(im*M)
end
end

end # module TestTridiagonal