1
1
"""
2
- Packed storage of bidiagonalizing QR reflectors.
2
+ PackedUVt <: Factorization{T}
3
+
4
+ Packed storage of bidiagonalizing QR reflectors `U` and `V'`.
5
+
6
+
3
7
"""
4
- immutable PackedUVt{T}
8
+ immutable PackedUVt{T} <: Factorization{T}
5
9
A:: Matrix{T}
6
10
end
7
11
8
12
9
13
"""
14
+ bidiagonalize_tall!{T}(A::Matrix{T},B::Bidiagonal)
15
+
10
16
Bidiagonalize a tall matrix `A` into `B`. Both arguments are overwritten.
11
17
"""
12
18
function bidiagonalize_tall! {T} (A:: Matrix{T} ,B:: Bidiagonal )
@@ -15,20 +21,20 @@ function bidiagonalize_tall!{T}(A::Matrix{T},B::Bidiagonal)
15
21
# upper bidiagonal
16
22
17
23
for i = 1 : n
18
- x = view (A, i: m, i)
24
+ x = @ view A[ i: m, i]
19
25
τi = LinAlg. reflector! (x)
20
26
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
23
29
24
30
# for Real, this only needs to be n-2
25
31
# needed for Complex to ensure superdiagonal is Real
26
32
if i <= n- 1
27
- x = view (A, i, i+ 1 : n)
33
+ x = @ view A[ i, i+ 1 : n]
28
34
conj! (x)
29
35
τi = LinAlg. reflector! (x)
30
36
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)
32
38
A[i,i+ 1 ] = τi
33
39
end
34
40
end
@@ -53,16 +59,16 @@ function Base.full{T}(P::PackedUVt{T};thin=true)
53
59
U = eye (T,m,w)
54
60
for i = n: - 1 : 1
55
61
τ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] ))
58
64
end
59
65
60
66
# Vt = P_{n_2} ... P_1
61
67
Vt = eye (T,n,n)
62
68
for i = n- 1 : - 1 : 1
63
69
τ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' )
66
72
end
67
73
U,Vt
68
74
end
0 commit comments