@@ -28,20 +28,20 @@ function qrfactUnblocked!{T}(A::AbstractMatrix{T})
28
28
m, n = size (A)
29
29
τ = zeros (T, min (m,n))
30
30
for k = 1 : min (m - 1 + ! (T<: Real ), n)
31
- x = slice (A, k: m, k)
31
+ x = view (A, k: m, k)
32
32
τk = reflector! (x)
33
33
τ[k] = τk
34
- reflectorApply! (x, τk, slice (A, k: m, k + 1 : n))
34
+ reflectorApply! (x, τk, view (A, k: m, k + 1 : n))
35
35
end
36
36
QR (A, τ)
37
37
end
38
38
39
39
# Find index for columns with largest two norm
40
40
function indmaxcolumn (A:: StridedMatrix )
41
- mm = norm (slice (A, :, 1 ))
41
+ mm = norm (view (A, :, 1 ))
42
42
ii = 1
43
43
for i = 2 : size (A, 2 )
44
- mi = norm (slice (A, :, i))
44
+ mi = norm (view (A, :, i))
45
45
if abs (mi) > mm
46
46
mm = mi
47
47
ii = i
@@ -57,7 +57,7 @@ function qrfactPivotedUnblocked!(A::StridedMatrix)
57
57
for j = 1 : min (m,n)
58
58
59
59
# Find column with maximum norm in trailing submatrix
60
- jm = indmaxcolumn (slice (A, j: m, j: n)) + j - 1
60
+ jm = indmaxcolumn (view (A, j: m, j: n)) + j - 1
61
61
62
62
if jm != j
63
63
# Flip elements in pivoting vector
@@ -74,12 +74,12 @@ function qrfactPivotedUnblocked!(A::StridedMatrix)
74
74
end
75
75
76
76
# Compute reflector of columns j
77
- x = slice (A, j: m, j)
77
+ x = view (A, j: m, j)
78
78
τj = LinAlg. reflector! (x)
79
79
τ[j] = τj
80
80
81
81
# Update trailing submatrix with reflector
82
- LinAlg. reflectorApply! (x, τj, sub (A, j: m, j+ 1 : n))
82
+ LinAlg. reflectorApply! (x, τj, view (A, j: m, j+ 1 : n))
83
83
end
84
84
return LinAlg. QRPivoted {eltype(A), typeof(A)} (A, τ, piv)
85
85
end
@@ -451,8 +451,8 @@ for (f1, f2) in ((:Ac_mul_B, :A_mul_B!),
451
451
end
452
452
end
453
453
454
- A_ldiv_B! {T<:BlasFloat} (A:: QRCompactWY{T} , b:: StridedVector{T} ) = (A_ldiv_B! (UpperTriangular (A[:R ]), sub (Ac_mul_B! (A[:Q ], b), 1 : size (A, 2 ))); b)
455
- A_ldiv_B! {T<:BlasFloat} (A:: QRCompactWY{T} , B:: StridedMatrix{T} ) = (A_ldiv_B! (UpperTriangular (A[:R ]), sub (Ac_mul_B! (A[:Q ], B), 1 : size (A, 2 ), 1 : size (B, 2 ))); B)
454
+ A_ldiv_B! {T<:BlasFloat} (A:: QRCompactWY{T} , b:: StridedVector{T} ) = (A_ldiv_B! (UpperTriangular (A[:R ]), view (Ac_mul_B! (A[:Q ], b), 1 : size (A, 2 ))); b)
455
+ A_ldiv_B! {T<:BlasFloat} (A:: QRCompactWY{T} , B:: StridedMatrix{T} ) = (A_ldiv_B! (UpperTriangular (A[:R ]), view (Ac_mul_B! (A[:Q ], B), 1 : size (A, 2 ), 1 : size (B, 2 ))); B)
456
456
457
457
# Julia implementation similarly to xgelsy
458
458
function A_ldiv_B! {T<:BlasFloat} (A:: QRPivoted{T} , B:: StridedMatrix{T} , rcond:: Real )
@@ -467,8 +467,8 @@ function A_ldiv_B!{T<:BlasFloat}(A::QRPivoted{T}, B::StridedMatrix{T}, rcond::Re
467
467
xmax = ones (T, 1 )
468
468
tmin = tmax = ar
469
469
while rnk < nr
470
- tmin, smin, cmin = LAPACK. laic1! (2 , xmin, tmin, sub (A. factors, 1 : rnk, rnk + 1 ), A. factors[rnk + 1 , rnk + 1 ])
471
- tmax, smax, cmax = LAPACK. laic1! (1 , xmax, tmax, sub (A. factors, 1 : rnk, rnk + 1 ), A. factors[rnk + 1 , rnk + 1 ])
470
+ tmin, smin, cmin = LAPACK. laic1! (2 , xmin, tmin, view (A. factors, 1 : rnk, rnk + 1 ), A. factors[rnk + 1 , rnk + 1 ])
471
+ tmax, smax, cmax = LAPACK. laic1! (1 , xmax, tmax, view (A. factors, 1 : rnk, rnk + 1 ), A. factors[rnk + 1 , rnk + 1 ])
472
472
tmax* rcond > tmin && break
473
473
push! (xmin, cmin)
474
474
push! (xmax, cmax)
@@ -479,10 +479,10 @@ function A_ldiv_B!{T<:BlasFloat}(A::QRPivoted{T}, B::StridedMatrix{T}, rcond::Re
479
479
rnk += 1
480
480
end
481
481
C, τ = LAPACK. tzrzf! (A. factors[1 : rnk,:])
482
- A_ldiv_B! (UpperTriangular (C[1 : rnk,1 : rnk]),sub (Ac_mul_B! (getq (A),sub (B, 1 : mA, 1 : nrhs)),1 : rnk,1 : nrhs))
482
+ A_ldiv_B! (UpperTriangular (C[1 : rnk,1 : rnk]),view (Ac_mul_B! (getq (A),view (B, 1 : mA, 1 : nrhs)),1 : rnk,1 : nrhs))
483
483
B[rnk+ 1 : end ,:] = zero (T)
484
- LAPACK. ormrz! (' L' , eltype (B)<: Complex ? ' C' : ' T' , C, τ, sub (B,1 : nA,1 : nrhs))
485
- B[1 : nA,:] = sub (B, 1 : nA, :)[invperm (A[:p ]:: Vector{BlasInt} ),:]
484
+ LAPACK. ormrz! (' L' , eltype (B)<: Complex ? ' C' : ' T' , C, τ, view (B,1 : nA,1 : nrhs))
485
+ B[1 : nA,:] = view (B, 1 : nA, :)[invperm (A[:p ]:: Vector{BlasInt} ),:]
486
486
return B, rnk
487
487
end
488
488
A_ldiv_B! {T<:BlasFloat} (A:: QRPivoted{T} , B:: StridedVector{T} ) = vec (A_ldiv_B! (A,reshape (B,length (B),1 )))
@@ -491,13 +491,13 @@ function A_ldiv_B!{T}(A::QR{T}, B::StridedMatrix{T})
491
491
m, n = size (A)
492
492
minmn = min (m,n)
493
493
mB, nB = size (B)
494
- Ac_mul_B! (A[:Q ], sub (B, 1 : m, :))
494
+ Ac_mul_B! (A[:Q ], view (B, 1 : m, :))
495
495
R = A[:R ]
496
496
@inbounds begin
497
497
if n > m # minimum norm solution
498
498
τ = zeros (T,m)
499
499
for k = m: - 1 : 1 # Trapezoid to triangular by elementary operation
500
- x = slice (R, k, [k; m + 1 : n])
500
+ x = view (R, k, [k; m + 1 : n])
501
501
τk = reflector! (x)
502
502
τ[k] = τk'
503
503
for i = 1 : k - 1
@@ -513,7 +513,7 @@ function A_ldiv_B!{T}(A::QR{T}, B::StridedMatrix{T})
513
513
end
514
514
end
515
515
end
516
- Base. A_ldiv_B! (UpperTriangular (sub (R, :, 1 : minmn)), sub (B, 1 : minmn, :))
516
+ Base. A_ldiv_B! (UpperTriangular (view (R, :, 1 : minmn)), view (B, 1 : minmn, :))
517
517
if n > m # Apply elementary transformation to solution
518
518
B[m + 1 : mB,1 : nB] = zero (T)
519
519
for j = 1 : nB
@@ -536,12 +536,12 @@ end
536
536
A_ldiv_B! (A:: QR , B:: StridedVector ) = A_ldiv_B! (A, reshape (B, length (B), 1 ))[:]
537
537
function A_ldiv_B! (A:: QRPivoted , b:: StridedVector )
538
538
A_ldiv_B! (QR (A. factors,A. τ), b)
539
- b[1 : size (A. factors, 2 )] = sub (b, 1 : size (A. factors, 2 ))[invperm (A. jpvt)]
539
+ b[1 : size (A. factors, 2 )] = view (b, 1 : size (A. factors, 2 ))[invperm (A. jpvt)]
540
540
b
541
541
end
542
542
function A_ldiv_B! (A:: QRPivoted , B:: StridedMatrix )
543
543
A_ldiv_B! (QR (A. factors, A. τ), B)
544
- B[1 : size (A. factors, 2 ),:] = sub (B, 1 : size (A. factors, 2 ), :)[invperm (A. jpvt),:]
544
+ B[1 : size (A. factors, 2 ),:] = view (B, 1 : size (A. factors, 2 ), :)[invperm (A. jpvt),:]
545
545
B
546
546
end
547
547
0 commit comments