Skip to content

Commit b167cfc

Browse files
committed
More convert methods to where syntax
1 parent 49a92ff commit b167cfc

27 files changed

+131
-131
lines changed

base/bitarray.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ end
487487

488488
convert(::Type{Array{T}}, B::BitArray{N}) where {T,N} = convert(Array{T,N}, B)
489489
convert(::Type{Array{T,N}}, B::BitArray{N}) where {T,N} = _convert(Array{T,N}, B) # see #15801
490-
function _convert{T,N}(::Type{Array{T,N}}, B::BitArray{N})
490+
function _convert(::Type{Array{T,N}}, B::BitArray{N}) where {T,N}
491491
A = Array{T}(size(B))
492492
Bc = B.chunks
493493
@inbounds for i = 1:length(A)

base/c.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ end
6363
# construction from typed pointers
6464
convert(::Type{Cstring}, p::Ptr{<:Union{Int8,UInt8}}) = bitcast(Cstring, p)
6565
convert(::Type{Cwstring}, p::Ptr{Cwchar_t}) = bitcast(Cwstring, p)
66-
convert{T<:Union{Int8,UInt8}}(::Type{Ptr{T}}, p::Cstring) = bitcast(Ptr{T}, p)
66+
convert(::Type{Ptr{T}}, p::Cstring) where {T<:Union{Int8,UInt8}} = bitcast(Ptr{T}, p)
6767
convert(::Type{Ptr{Cwchar_t}}, p::Cwstring) = bitcast(Ptr{Cwchar_t}, p)
6868

6969
# construction from untyped pointers
70-
convert{T<:Union{Cstring,Cwstring}}(::Type{T}, p::Ptr{Void}) = bitcast(T, p)
70+
convert(::Type{T}, p::Ptr{Void}) where {T<:Union{Cstring,Cwstring}} = bitcast(T, p)
7171

7272
pointer(p::Cstring) = convert(Ptr{UInt8}, p)
7373
pointer(p::Cwstring) = convert(Ptr{Cwchar_t}, p)

base/essentials.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,18 +133,18 @@ function typename(a::Union)
133133
end
134134
typename(union::UnionAll) = typename(union.body)
135135

136-
convert{T<:Tuple{Any,Vararg{Any}}}(::Type{T}, x::Tuple{Any, Vararg{Any}}) =
136+
convert(::Type{T}, x::Tuple{Any, Vararg{Any}}) where {T<:Tuple{Any,Vararg{Any}}} =
137137
tuple(convert(tuple_type_head(T),x[1]), convert(tuple_type_tail(T), tail(x))...)
138-
convert{T<:Tuple{Any,Vararg{Any}}}(::Type{T}, x::T) = x
138+
convert(::Type{T}, x::T) where {T<:Tuple{Any,Vararg{Any}}} = x
139139

140140
oftype(x,c) = convert(typeof(x),c)
141141

142142
unsigned(x::Int) = reinterpret(UInt, x)
143143
signed(x::UInt) = reinterpret(Int, x)
144144

145145
# conversions used by ccall
146-
ptr_arg_cconvert{T}(::Type{Ptr{T}}, x) = cconvert(T, x)
147-
ptr_arg_unsafe_convert{T}(::Type{Ptr{T}}, x) = unsafe_convert(T, x)
146+
ptr_arg_cconvert(::Type{Ptr{T}}, x) where {T} = cconvert(T, x)
147+
ptr_arg_unsafe_convert(::Type{Ptr{T}}, x) where {T} = unsafe_convert(T, x)
148148
ptr_arg_unsafe_convert(::Type{Ptr{Void}}, x) = x
149149

150150
cconvert(T::Type, x) = convert(T, x) # do the conversion eagerly in most cases

base/fft/FFTW.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ struct FakeArray{T, N} <: DenseArray{T, N}
7474
end
7575
size(a::FakeArray) = a.sz
7676
strides(a::FakeArray) = a.st
77-
unsafe_convert{T}(::Type{Ptr{T}}, a::FakeArray{T}) = convert(Ptr{T}, C_NULL)
77+
unsafe_convert(::Type{Ptr{T}}, a::FakeArray{T}) where {T} = convert(Ptr{T}, C_NULL)
7878
pointer{T}(a::FakeArray{T}) = convert(Ptr{T}, C_NULL)
7979
FakeArray{T, N}(::Type{T}, sz::NTuple{N, Int}) =
8080
FakeArray{T, N}(sz, colmajorstrides(sz))

base/linalg/bidiag.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ function Base.replace_in_print_matrix(A::Bidiagonal,i::Integer,j::Integer,s::Abs
182182
end
183183

184184
#Converting from Bidiagonal to dense Matrix
185-
function convert{T}(::Type{Matrix{T}}, A::Bidiagonal)
185+
function convert(::Type{Matrix{T}}, A::Bidiagonal) where T
186186
n = size(A, 1)
187187
B = zeros(T, n, n)
188188
for i = 1:n - 1
@@ -196,25 +196,25 @@ function convert{T}(::Type{Matrix{T}}, A::Bidiagonal)
196196
B[n,n] = A.dv[n]
197197
return B
198198
end
199-
convert{T}(::Type{Matrix}, A::Bidiagonal{T}) = convert(Matrix{T}, A)
199+
convert(::Type{Matrix}, A::Bidiagonal{T}) where {T} = convert(Matrix{T}, A)
200200
convert(::Type{Array}, A::Bidiagonal) = convert(Matrix, A)
201201
full(A::Bidiagonal) = convert(Array, A)
202202
promote_rule(::Type{Matrix{T}}, ::Type{Bidiagonal{S}}) where {T,S}=Matrix{promote_type(T,S)}
203203

204204
#Converting from Bidiagonal to Tridiagonal
205205
Tridiagonal(M::Bidiagonal{T}) where {T} = convert(Tridiagonal{T}, M)
206-
function convert{T}(::Type{Tridiagonal{T}}, A::Bidiagonal)
206+
function convert(::Type{Tridiagonal{T}}, A::Bidiagonal) where T
207207
z = zeros(T, size(A)[1]-1)
208208
A.isupper ? Tridiagonal(z, convert(Vector{T},A.dv), convert(Vector{T},A.ev)) : Tridiagonal(convert(Vector{T},A.ev), convert(Vector{T},A.dv), z)
209209
end
210210
promote_rule(::Type{Tridiagonal{T}}, ::Type{Bidiagonal{S}}) where {T,S}=Tridiagonal{promote_type(T,S)}
211211

212212
# No-op for trivial conversion Bidiagonal{T} -> Bidiagonal{T}
213-
convert{T}(::Type{Bidiagonal{T}}, A::Bidiagonal{T}) = A
213+
convert(::Type{Bidiagonal{T}}, A::Bidiagonal{T}) where {T} = A
214214
# Convert Bidiagonal to Bidiagonal{T} by constructing a new instance with converted elements
215-
convert{T}(::Type{Bidiagonal{T}}, A::Bidiagonal) = Bidiagonal(convert(Vector{T}, A.dv), convert(Vector{T}, A.ev), A.isupper)
215+
convert(::Type{Bidiagonal{T}}, A::Bidiagonal) where {T} = Bidiagonal(convert(Vector{T}, A.dv), convert(Vector{T}, A.ev), A.isupper)
216216
# When asked to convert Bidiagonal to AbstractMatrix{T}, preserve structure by converting to Bidiagonal{T} <: AbstractMatrix{T}
217-
convert{T}(::Type{AbstractMatrix{T}}, A::Bidiagonal) = convert(Bidiagonal{T}, A)
217+
convert(::Type{AbstractMatrix{T}}, A::Bidiagonal) where {T} = convert(Bidiagonal{T}, A)
218218

219219
broadcast(::typeof(big), B::Bidiagonal) = Bidiagonal(big.(B.dv), big.(B.ev), B.isupper)
220220

base/linalg/bunchkaufman.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ bkfact{T}(A::StridedMatrix{T}, uplo::Symbol=:U, symmetric::Bool=issymmetric(A),
7777
bkfact!(convert(Matrix{promote_type(Float32, typeof(sqrt(one(T))))}, A),
7878
uplo, symmetric, rook)
7979

80-
convert{T}(::Type{BunchKaufman{T}}, B::BunchKaufman{T}) = B
81-
convert{T}(::Type{BunchKaufman{T}}, B::BunchKaufman) =
80+
convert(::Type{BunchKaufman{T}}, B::BunchKaufman{T}) where {T} = B
81+
convert(::Type{BunchKaufman{T}}, B::BunchKaufman) where {T} =
8282
BunchKaufman(convert(Matrix{T}, B.LD), B.ipiv, B.uplo, B.symmetric, B.rook, B.info)
83-
convert{T}(::Type{Factorization{T}}, B::BunchKaufman{T}) = B
84-
convert{T}(::Type{Factorization{T}}, B::BunchKaufman) = convert(BunchKaufman{T}, B)
83+
convert(::Type{Factorization{T}}, B::BunchKaufman{T}) where {T} = B
84+
convert(::Type{Factorization{T}}, B::BunchKaufman) where {T} = convert(BunchKaufman{T}, B)
8585

8686
size(B::BunchKaufman) = size(B.LD)
8787
size(B::BunchKaufman, d::Integer) = size(B.LD, d)

base/linalg/cholesky.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -386,17 +386,17 @@ function cholfact(x::Number, uplo::Symbol=:U)
386386
end
387387

388388

389-
function convert{T}(::Type{Cholesky{T}}, C::Cholesky)
389+
function convert(::Type{Cholesky{T}}, C::Cholesky) where T
390390
Cnew = convert(AbstractMatrix{T}, C.factors)
391391
Cholesky{T, typeof(Cnew)}(Cnew, C.uplo)
392392
end
393-
convert{T}(::Type{Factorization{T}}, C::Cholesky{T}) = C
394-
convert{T}(::Type{Factorization{T}}, C::Cholesky) = convert(Cholesky{T}, C)
395-
convert{T}(::Type{CholeskyPivoted{T}},C::CholeskyPivoted{T}) = C
396-
convert{T}(::Type{CholeskyPivoted{T}},C::CholeskyPivoted) =
393+
convert(::Type{Factorization{T}}, C::Cholesky{T}) where {T} = C
394+
convert(::Type{Factorization{T}}, C::Cholesky) where {T} = convert(Cholesky{T}, C)
395+
convert(::Type{CholeskyPivoted{T}},C::CholeskyPivoted{T}) where {T} = C
396+
convert(::Type{CholeskyPivoted{T}},C::CholeskyPivoted) where {T} =
397397
CholeskyPivoted(AbstractMatrix{T}(C.factors),C.uplo,C.piv,C.rank,C.tol,C.info)
398-
convert{T}(::Type{Factorization{T}}, C::CholeskyPivoted{T}) = C
399-
convert{T}(::Type{Factorization{T}}, C::CholeskyPivoted) = convert(CholeskyPivoted{T}, C)
398+
convert(::Type{Factorization{T}}, C::CholeskyPivoted{T}) where {T} = C
399+
convert(::Type{Factorization{T}}, C::CholeskyPivoted) where {T} = convert(CholeskyPivoted{T}, C)
400400

401401
convert(::Type{AbstractMatrix}, C::Cholesky) = C.uplo == 'U' ? C[:U]'C[:U] : C[:L]*C[:L]'
402402
convert(::Type{AbstractArray}, C::Cholesky) = convert(AbstractMatrix, C)

base/linalg/diagonal.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ julia> Diagonal(V)
4848
"""
4949
Diagonal(V::AbstractVector) = Diagonal(collect(V))
5050

51-
convert{T}(::Type{Diagonal{T}}, D::Diagonal{T}) = D
52-
convert{T}(::Type{Diagonal{T}}, D::Diagonal) = Diagonal{T}(convert(Vector{T}, D.diag))
53-
convert{T}(::Type{AbstractMatrix{T}}, D::Diagonal) = convert(Diagonal{T}, D)
51+
convert(::Type{Diagonal{T}}, D::Diagonal{T}) where {T} = D
52+
convert(::Type{Diagonal{T}}, D::Diagonal) where {T} = Diagonal{T}(convert(Vector{T}, D.diag))
53+
convert(::Type{AbstractMatrix{T}}, D::Diagonal) where {T} = convert(Diagonal{T}, D)
5454
convert(::Type{Matrix}, D::Diagonal) = diagm(D.diag)
5555
convert(::Type{Array}, D::Diagonal) = convert(Matrix, D)
5656
full(D::Diagonal) = convert(Array, D)

base/linalg/factorization.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function det(F::Factorization)
2727
end
2828

2929
### General promotion rules
30-
convert{T}(::Type{Factorization{T}}, F::Factorization{T}) = F
30+
convert(::Type{Factorization{T}}, F::Factorization{T}) where {T} = F
3131
inv{T}(F::Factorization{T}) = A_ldiv_B!(F, eye(T, size(F,1)))
3232

3333
# With a real lhs and complex rhs with the same precision, we can reinterpret

base/linalg/givens.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ mutable struct Rotation{T} <: AbstractRotation{T}
3434
rotations::Vector{Givens{T}}
3535
end
3636

37-
convert{T}(::Type{Givens{T}}, G::Givens{T}) = G
38-
convert{T}(::Type{Givens{T}}, G::Givens) = Givens(G.i1, G.i2, convert(T, G.c), convert(T, G.s))
39-
convert{T}(::Type{Rotation{T}}, R::Rotation{T}) = R
40-
convert{T}(::Type{Rotation{T}}, R::Rotation) = Rotation{T}([convert(Givens{T}, g) for g in R.rotations])
41-
convert{T}(::Type{AbstractRotation{T}}, G::Givens) = convert(Givens{T}, G)
42-
convert{T}(::Type{AbstractRotation{T}}, R::Rotation) = convert(Rotation{T}, R)
37+
convert(::Type{Givens{T}}, G::Givens{T}) where {T} = G
38+
convert(::Type{Givens{T}}, G::Givens) where {T} = Givens(G.i1, G.i2, convert(T, G.c), convert(T, G.s))
39+
convert(::Type{Rotation{T}}, R::Rotation{T}) where {T} = R
40+
convert(::Type{Rotation{T}}, R::Rotation) where {T} = Rotation{T}([convert(Givens{T}, g) for g in R.rotations])
41+
convert(::Type{AbstractRotation{T}}, G::Givens) where {T} = convert(Givens{T}, G)
42+
convert(::Type{AbstractRotation{T}}, R::Rotation) where {T} = convert(Rotation{T}, R)
4343

4444
ctranspose(G::Givens) = Givens(G.i1, G.i2, conj(G.c), -G.s)
4545
ctranspose{T}(R::Rotation{T}) = Rotation{T}(reverse!([ctranspose(r) for r in R.rotations]))

base/linalg/ldlt.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ end
77
size(S::LDLt) = size(S.data)
88
size(S::LDLt, i::Integer) = size(S.data, i)
99

10-
convert{T,S}(::Type{LDLt{T,S}}, F::LDLt) = LDLt{T,S}(convert(S, F.data))
10+
convert(::Type{LDLt{T,S}}, F::LDLt) where {T,S} = LDLt{T,S}(convert(S, F.data))
1111
# NOTE: the annotaion <:AbstractMatrix shouldn't be necessary, it is introduced
1212
# to avoid an ambiguity warning (see issue #6383)
13-
convert{T,S,U<:AbstractMatrix}(::Type{LDLt{T}}, F::LDLt{S,U}) = convert(LDLt{T,U}, F)
13+
convert(::Type{LDLt{T}}, F::LDLt{S,U}) where {T,S,U<:AbstractMatrix} = convert(LDLt{T,U}, F)
1414

15-
convert{T}(::Type{Factorization{T}}, F::LDLt{T}) = F
16-
convert{T,S,U}(::Type{Factorization{T}}, F::LDLt{S,U}) = convert(LDLt{T,U}, F)
15+
convert(::Type{Factorization{T}}, F::LDLt{T}) where {T} = F
16+
convert(::Type{Factorization{T}}, F::LDLt{S,U}) where {T,S,U} = convert(LDLt{T,U}, F)
1717

1818
# SymTridiagonal
1919
"""

base/linalg/lq.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ end
4747

4848
copy(A::LQ) = LQ(copy(A.factors), copy(A.τ))
4949

50-
convert{T}(::Type{LQ{T}},A::LQ) = LQ(convert(AbstractMatrix{T}, A.factors), convert(Vector{T}, A.τ))
51-
convert{T}(::Type{Factorization{T}}, A::LQ{T}) = A
52-
convert{T}(::Type{Factorization{T}}, A::LQ) = convert(LQ{T}, A)
50+
convert(::Type{LQ{T}},A::LQ) where {T} = LQ(convert(AbstractMatrix{T}, A.factors), convert(Vector{T}, A.τ))
51+
convert(::Type{Factorization{T}}, A::LQ{T}) where {T} = A
52+
convert(::Type{Factorization{T}}, A::LQ) where {T} = convert(LQ{T}, A)
5353
convert(::Type{AbstractMatrix}, A::LQ) = A[:L]*A[:Q]
5454
convert(::Type{AbstractArray}, A::LQ) = convert(AbstractMatrix, A)
5555
convert(::Type{Matrix}, A::LQ) = convert(Array, convert(AbstractArray, A))
@@ -86,8 +86,8 @@ function show(io::IO, C::LQ)
8686
show(io, C[:Q])
8787
end
8888

89-
convert{T}(::Type{LQPackedQ{T}}, Q::LQPackedQ) = LQPackedQ(convert(AbstractMatrix{T}, Q.factors), convert(Vector{T}, Q.τ))
90-
convert{T}(::Type{AbstractMatrix{T}}, Q::LQPackedQ) = convert(LQPackedQ{T}, Q)
89+
convert(::Type{LQPackedQ{T}}, Q::LQPackedQ) where {T} = LQPackedQ(convert(AbstractMatrix{T}, Q.factors), convert(Vector{T}, Q.τ))
90+
convert(::Type{AbstractMatrix{T}}, Q::LQPackedQ) where {T} = convert(LQPackedQ{T}, Q)
9191
convert(::Type{Matrix}, A::LQPackedQ) = LAPACK.orglq!(copy(A.factors),A.τ)
9292
convert(::Type{Array}, A::LQPackedQ) = convert(Matrix, A)
9393
function full{T}(A::LQPackedQ{T}; thin::Bool = true)

base/linalg/lu.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,13 @@ function lu(A::AbstractMatrix, pivot::Union{Type{Val{false}}, Type{Val{true}}} =
190190
F[:L], F[:U], F[:p]
191191
end
192192

193-
function convert{T}(::Type{LU{T}}, F::LU)
193+
function convert(::Type{LU{T}}, F::LU) where T
194194
M = convert(AbstractMatrix{T}, F.factors)
195195
LU{T,typeof(M)}(M, F.ipiv, F.info)
196196
end
197-
convert{T,S}(::Type{LU{T,S}}, F::LU) = LU{T,S}(convert(S, F.factors), F.ipiv, F.info)
198-
convert{T}(::Type{Factorization{T}}, F::LU{T}) = F
199-
convert{T}(::Type{Factorization{T}}, F::LU) = convert(LU{T}, F)
197+
convert(::Type{LU{T,S}}, F::LU) where {T,S} = LU{T,S}(convert(S, F.factors), F.ipiv, F.info)
198+
convert(::Type{Factorization{T}}, F::LU{T}) where {T} = F
199+
convert(::Type{Factorization{T}}, F::LU) where {T} = convert(LU{T}, F)
200200

201201

202202
size(A::LU) = size(A.factors)
@@ -517,7 +517,7 @@ convert(::Type{Matrix}, F::LU) = convert(Array, convert(AbstractArray, F))
517517
convert(::Type{Array}, F::LU) = convert(Matrix, F)
518518
full(F::LU) = convert(AbstractArray, F)
519519

520-
function convert{T}(::Type{Tridiagonal}, F::Base.LinAlg.LU{T,Tridiagonal{T}})
520+
function convert(::Type{Tridiagonal}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) where T
521521
n = size(F, 1)
522522

523523
dl = copy(F.factors.dl)
@@ -551,12 +551,12 @@ function convert{T}(::Type{Tridiagonal}, F::Base.LinAlg.LU{T,Tridiagonal{T}})
551551
end
552552
return Tridiagonal(dl, d, du)
553553
end
554-
convert{T}(::Type{AbstractMatrix}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) =
554+
convert(::Type{AbstractMatrix}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) where {T} =
555555
convert(Tridiagonal, F)
556-
convert{T}(::Type{AbstractArray}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) =
556+
convert(::Type{AbstractArray}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) where {T} =
557557
convert(AbstractMatrix, F)
558-
convert{T}(::Type{Matrix}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) =
558+
convert(::Type{Matrix}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) where {T} =
559559
convert(Array, convert(AbstractArray, F))
560-
convert{T}(::Type{Array}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) =
560+
convert(::Type{Array}, F::Base.LinAlg.LU{T,Tridiagonal{T}}) where {T} =
561561
convert(Matrix, F)
562562
full{T}(F::Base.LinAlg.LU{T,Tridiagonal{T}}) = convert(AbstractArray, F)

base/linalg/qr.jl

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -271,20 +271,20 @@ function qr!(v::AbstractVector)
271271
end
272272

273273
# Conversions
274-
convert{T}(::Type{QR{T}}, A::QR) = QR(convert(AbstractMatrix{T}, A.factors), convert(Vector{T}, A.τ))
275-
convert{T}(::Type{Factorization{T}}, A::QR{T}) = A
276-
convert{T}(::Type{Factorization{T}}, A::QR) = convert(QR{T}, A)
277-
convert{T}(::Type{QRCompactWY{T}}, A::QRCompactWY) = QRCompactWY(convert(AbstractMatrix{T}, A.factors), convert(AbstractMatrix{T}, A.T))
278-
convert{T}(::Type{Factorization{T}}, A::QRCompactWY{T}) = A
279-
convert{T}(::Type{Factorization{T}}, A::QRCompactWY) = convert(QRCompactWY{T}, A)
274+
convert(::Type{QR{T}}, A::QR) where {T} = QR(convert(AbstractMatrix{T}, A.factors), convert(Vector{T}, A.τ))
275+
convert(::Type{Factorization{T}}, A::QR{T}) where {T} = A
276+
convert(::Type{Factorization{T}}, A::QR) where {T} = convert(QR{T}, A)
277+
convert(::Type{QRCompactWY{T}}, A::QRCompactWY) where {T} = QRCompactWY(convert(AbstractMatrix{T}, A.factors), convert(AbstractMatrix{T}, A.T))
278+
convert(::Type{Factorization{T}}, A::QRCompactWY{T}) where {T} = A
279+
convert(::Type{Factorization{T}}, A::QRCompactWY) where {T} = convert(QRCompactWY{T}, A)
280280
convert(::Type{AbstractMatrix}, F::Union{QR,QRCompactWY}) = F[:Q] * F[:R]
281281
convert(::Type{AbstractArray}, F::Union{QR,QRCompactWY}) = convert(AbstractMatrix, F)
282282
convert(::Type{Matrix}, F::Union{QR,QRCompactWY}) = convert(Array, convert(AbstractArray, F))
283283
convert(::Type{Array}, F::Union{QR,QRCompactWY}) = convert(Matrix, F)
284284
full(F::Union{QR,QRCompactWY}) = convert(AbstractArray, F)
285-
convert{T}(::Type{QRPivoted{T}}, A::QRPivoted) = QRPivoted(convert(AbstractMatrix{T}, A.factors), convert(Vector{T}, A.τ), A.jpvt)
286-
convert{T}(::Type{Factorization{T}}, A::QRPivoted{T}) = A
287-
convert{T}(::Type{Factorization{T}}, A::QRPivoted) = convert(QRPivoted{T}, A)
285+
convert(::Type{QRPivoted{T}}, A::QRPivoted) where {T} = QRPivoted(convert(AbstractMatrix{T}, A.factors), convert(Vector{T}, A.τ), A.jpvt)
286+
convert(::Type{Factorization{T}}, A::QRPivoted{T}) where {T} = A
287+
convert(::Type{Factorization{T}}, A::QRPivoted) where {T} = convert(QRPivoted{T}, A)
288288
convert(::Type{AbstractMatrix}, F::QRPivoted) = (F[:Q] * F[:R])[:,invperm(F[:p])]
289289
convert(::Type{AbstractArray}, F::QRPivoted) = convert(AbstractMatrix, F)
290290
convert(::Type{Matrix}, F::QRPivoted) = convert(Array, convert(AbstractArray, F))
@@ -357,13 +357,13 @@ struct QRCompactWYQ{S, M<:AbstractMatrix} <: AbstractMatrix{S}
357357
end
358358
QRCompactWYQ(factors::AbstractMatrix{S}, T::Matrix{S}) where {S} = QRCompactWYQ{S,typeof(factors)}(factors, T)
359359

360-
convert{T}(::Type{QRPackedQ{T}}, Q::QRPackedQ) = QRPackedQ(convert(AbstractMatrix{T}, Q.factors), convert(Vector{T}, Q.τ))
361-
convert{T}(::Type{AbstractMatrix{T}}, Q::QRPackedQ{T}) = Q
362-
convert{T}(::Type{AbstractMatrix{T}}, Q::QRPackedQ) = convert(QRPackedQ{T}, Q)
363-
convert{S}(::Type{QRCompactWYQ{S}}, Q::QRCompactWYQ) = QRCompactWYQ(convert(AbstractMatrix{S}, Q.factors), convert(AbstractMatrix{S}, Q.T))
364-
convert{S}(::Type{AbstractMatrix{S}}, Q::QRCompactWYQ{S}) = Q
365-
convert{S}(::Type{AbstractMatrix{S}}, Q::QRCompactWYQ) = convert(QRCompactWYQ{S}, Q)
366-
convert{T}(::Type{Matrix}, A::Union{QRPackedQ{T},QRCompactWYQ{T}}) = A_mul_B!(A, eye(T, size(A.factors, 1), minimum(size(A.factors))))
360+
convert(::Type{QRPackedQ{T}}, Q::QRPackedQ) where {T} = QRPackedQ(convert(AbstractMatrix{T}, Q.factors), convert(Vector{T}, Q.τ))
361+
convert(::Type{AbstractMatrix{T}}, Q::QRPackedQ{T}) where {T} = Q
362+
convert(::Type{AbstractMatrix{T}}, Q::QRPackedQ) where {T} = convert(QRPackedQ{T}, Q)
363+
convert(::Type{QRCompactWYQ{S}}, Q::QRCompactWYQ) where {S} = QRCompactWYQ(convert(AbstractMatrix{S}, Q.factors), convert(AbstractMatrix{S}, Q.T))
364+
convert(::Type{AbstractMatrix{S}}, Q::QRCompactWYQ{S}) where {S} = Q
365+
convert(::Type{AbstractMatrix{S}}, Q::QRCompactWYQ) where {S} = convert(QRCompactWYQ{S}, Q)
366+
convert(::Type{Matrix}, A::Union{QRPackedQ{T},QRCompactWYQ{T}}) where {T} = A_mul_B!(A, eye(T, size(A.factors, 1), minimum(size(A.factors))))
367367
convert(::Type{Array}, A::Union{QRPackedQ,QRCompactWYQ}) = convert(Matrix, A)
368368

369369
"""

base/linalg/rowvector.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ ConjRowVector{T, CV <: ConjVector} = RowVector{T, CV}
4545
error("RowVector expects 1×N size, got $n")
4646

4747
# Conversion of underlying storage
48-
convert{T,V<:AbstractVector}(::Type{RowVector{T,V}}, rowvec::RowVector) =
48+
convert(::Type{RowVector{T,V}}, rowvec::RowVector) where {T,V<:AbstractVector} =
4949
RowVector{T,V}(convert(V,rowvec.vec))
5050

5151
# similar tries to maintain the RowVector wrapper and the parent type

base/linalg/special.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
# Methods operating on different special matrix types
44

55
# Interconversion between special matrix types
6-
convert{T}(::Type{Bidiagonal}, A::Diagonal{T}) =
6+
convert(::Type{Bidiagonal}, A::Diagonal{T}) where {T} =
77
Bidiagonal(A.diag, zeros(T, size(A.diag,1)-1), true)
8-
convert{T}(::Type{SymTridiagonal}, A::Diagonal{T}) =
8+
convert(::Type{SymTridiagonal}, A::Diagonal{T}) where {T} =
99
SymTridiagonal(A.diag, zeros(T, size(A.diag,1)-1))
10-
convert{T}(::Type{Tridiagonal}, A::Diagonal{T}) =
10+
convert(::Type{Tridiagonal}, A::Diagonal{T}) where {T} =
1111
Tridiagonal(zeros(T, size(A.diag,1)-1), A.diag, zeros(T, size(A.diag,1)-1))
1212

1313
function convert(::Type{Diagonal}, A::Union{Bidiagonal, SymTridiagonal})
@@ -24,7 +24,7 @@ function convert(::Type{SymTridiagonal}, A::Bidiagonal)
2424
SymTridiagonal(A.dv, A.ev)
2525
end
2626

27-
convert{T}(::Type{Tridiagonal}, A::Bidiagonal{T}) =
27+
convert(::Type{Tridiagonal}, A::Bidiagonal{T}) where {T} =
2828
Tridiagonal(A.isupper ? zeros(T, size(A.dv,1)-1) : A.ev, A.dv,
2929
A.isupper ? A.ev:zeros(T, size(A.dv,1)-1))
3030

0 commit comments

Comments
 (0)