Skip to content
This repository was archived by the owner on Apr 26, 2021. It is now read-only.

Commit a02834b

Browse files
committed
remove compat for 0.5, use view macro
1 parent 65a269e commit a02834b

File tree

3 files changed

+18
-34
lines changed

3 files changed

+18
-34
lines changed

REQUIRE

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
julia 0.4
2-
Compat 0.8.6
1+
julia 0.5

src/bidiagonalize.jl

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
"""
2-
Packed storage of bidiagonalizing QR reflectors.
2+
PackedUVt <: Factorization{T}
3+
4+
Packed storage of bidiagonalizing QR reflectors `U` and `V'`.
5+
6+
37
"""
4-
immutable PackedUVt{T}
8+
immutable PackedUVt{T} <: Factorization{T}
59
A::Matrix{T}
610
end
711

812

913
"""
14+
bidiagonalize_tall!{T}(A::Matrix{T},B::Bidiagonal)
15+
1016
Bidiagonalize a tall matrix `A` into `B`. Both arguments are overwritten.
1117
"""
1218
function bidiagonalize_tall!{T}(A::Matrix{T},B::Bidiagonal)
@@ -15,20 +21,20 @@ function bidiagonalize_tall!{T}(A::Matrix{T},B::Bidiagonal)
1521
# upper bidiagonal
1622

1723
for i = 1:n
18-
x = view(A, i:m, i)
24+
x = @view A[i:m, i]
1925
τi = LinAlg.reflector!(x)
2026
B.dv[i] = real(A[i,i])
21-
LinAlg.reflectorApply!(x, τi, view(A, i:m, i+1:n))
22-
A[i,i] = τi # store reflector in diagonal coefficient
27+
LinAlg.reflectorApply!(x, τi, @view(A[i:m, i+1:n]))
28+
A[i,i] = τi # store reflector coefficient in diagonal
2329

2430
# for Real, this only needs to be n-2
2531
# needed for Complex to ensure superdiagonal is Real
2632
if i <= n-1
27-
x = view(A, i, i+1:n)
33+
x = @view A[i, i+1:n]
2834
conj!(x)
2935
τi = LinAlg.reflector!(x)
3036
B.ev[i] = real(A[i,i+1])
31-
LinAlg.reflectorApply!(view(A, i+1:m, i+1:n), x, τi)
37+
LinAlg.reflectorApply!(@view(A[i+1:m, i+1:n]), x, τi)
3238
A[i,i+1] = τi
3339
end
3440
end
@@ -53,16 +59,16 @@ function Base.full{T}(P::PackedUVt{T};thin=true)
5359
U = eye(T,m,w)
5460
for i = n:-1:1
5561
τi = A[i,i]
56-
x = view(A, i:m, i)
57-
LinAlg.reflectorApply!(x, τi', view(U, i:m, i:w))
62+
x = @view A[i:m, i]
63+
LinAlg.reflectorApply!(x, τi', @view(U[i:m, i:w]))
5864
end
5965

6066
# Vt = P_{n_2} ... P_1
6167
Vt = eye(T,n,n)
6268
for i = n-1:-1:1
6369
τi = A[i,i+1]
64-
x = view(A, i, i+1:n)
65-
LinAlg.reflectorApply!(view(Vt, i:n, i+1:n), x, τi')
70+
x = @view A[i, i+1:n]
71+
LinAlg.reflectorApply!(@view(Vt[i:n, i+1:n]), x, τi')
6672
end
6773
U,Vt
6874
end

src/utils.jl

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,3 @@ import Base: A_mul_B!, A_mul_Bc!, A_ldiv_B!
2525

2626
A_mul_B!(G::LinAlg.Givens, ::Void) = nothing
2727
A_mul_Bc!(::Void, G::LinAlg.Givens) = nothing
28-
29-
if VERSION < v"0.5.0-"
30-
function A_ldiv_B!{Ta,Tb}(A::SVD{Ta}, B::StridedVecOrMat{Tb})
31-
k = searchsortedlast(A.S, eps(real(Ta))*A.S[1], rev=true)
32-
view(A.Vt,1:k,:)' * (view(A.S,1:k) .\ (view(A.U,:,1:k)' * B))
33-
end
34-
end
35-
36-
37-
# we have to define our own givens function due to ordering restriction in Base (#14936)
38-
function givens{T}(f::T, g::T, i1::Integer, i2::Integer)
39-
if i1 == i2
40-
throw(ArgumentError("Indices must be distinct."))
41-
end
42-
c, s, r = Base.LinAlg.givensAlgorithm(f, g)
43-
if i1 > i2
44-
s = -conj(s)
45-
i1,i2 = i2,i1
46-
end
47-
Base.LinAlg.Givens(i1, i2, convert(T, c), convert(T, s)), r
48-
end

0 commit comments

Comments
 (0)