Skip to content

Commit e51e0dd

Browse files
committed
Better coverage reports for tridiag
1 parent ce13a94 commit e51e0dd

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

base/linalg/tridiag.jl

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ immutable SymTridiagonal{T} <: AbstractMatrix{T}
77
dv::Vector{T} # diagonal
88
ev::Vector{T} # subdiagonal
99
function SymTridiagonal(dv::Vector{T}, ev::Vector{T})
10-
length(dv) - 1 <= length(ev) <= length(dv) || throw(DimensionMismatch("subdiagonal has wrong length. Has length $(length(ev)), but should be either $(length(dv) - 1) or $(length(dv))."))
10+
if !(length(dv) - 1 <= length(ev) <= length(dv))
11+
throw(DimensionMismatch("subdiagonal has wrong length. Has length $(length(ev)), but should be either $(length(dv) - 1) or $(length(dv))."))
12+
end
1113
new(dv,ev)
1214
end
1315
end
@@ -19,7 +21,14 @@ function SymTridiagonal{Td,Te}(dv::Vector{Td}, ev::Vector{Te})
1921
SymTridiagonal(convert(Vector{T}, dv), convert(Vector{T}, ev))
2022
end
2123

22-
SymTridiagonal(A::AbstractMatrix) = diag(A,1)==diag(A,-1)?SymTridiagonal(diag(A), diag(A,1)):throw(DimensionMismatch("matrix is not symmetric; cannot convert to SymTridiagonal"))
24+
function SymTridiagonal(A::AbstractMatrix)
25+
if diag(A,1) == diag(A,-1)
26+
SymTridiagonal(diag(A), diag(A,1))
27+
else
28+
throw(ArgumentError("Matrix is not symmetric; cannot convert to SymTridiagonal"))
29+
end
30+
end
31+
2332
full{T}(M::SymTridiagonal{T}) = convert(Matrix{T}, M)
2433
convert{T}(::Type{SymTridiagonal{T}}, S::SymTridiagonal) = SymTridiagonal(convert(Vector{T}, S.dv), convert(Vector{T}, S.ev))
2534
convert{T}(::Type{AbstractMatrix{T}}, S::SymTridiagonal) = SymTridiagonal(convert(Vector{T}, S.dv), convert(Vector{T}, S.ev))
@@ -39,7 +48,15 @@ end
3948
convert{T}(::Type{Matrix}, M::SymTridiagonal{T}) = convert(Matrix{T}, M)
4049

4150
size(A::SymTridiagonal) = (length(A.dv), length(A.dv))
42-
size(A::SymTridiagonal, d::Integer) = d<1 ? throw(ArgumentError("dimension must be ≥ 1, got $d")) : (d<=2 ? length(A.dv) : 1)
51+
function size(A::SymTridiagonal, d::Integer)
52+
if d < 1
53+
throw(ArgumentError("dimension must be ≥ 1, got $d"))
54+
elseif d<=2
55+
return length(A.dv)
56+
else
57+
return 1
58+
end
59+
end
4360

4461
#Elementary operations
4562
for func in (:conj, :copy, :round, :trunc, :floor, :ceil)

0 commit comments

Comments
 (0)