Skip to content

Commit f2ae0cd

Browse files
authored
use band indexing in diag (#333)
* use band indexing in diag * remove fliplrud
1 parent 179d90b commit f2ae0cd

File tree

1 file changed

+4
-27
lines changed

1 file changed

+4
-27
lines changed

src/banded/BandedMatrix.jl

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ end
510510
@boundscheck checkdimensions(size(A), size(v))
511511
@boundscheck checkbandmatch(A, v, kr, jr)
512512

513-
for j=1:size(A,2), k=colrange(A,j)
513+
for j=rowsupport(A), k=colrange(A,j)
514514
@inbounds A[k,j] = v[k,j]
515515
end
516516
A
@@ -728,36 +728,13 @@ svdvals(A::BandedMatrix) = svdvals!(copy(A))
728728

729729
## ALgebra and other functions
730730

731-
function fill!(A::BandedMatrix{T}, x) where T
732-
x == zero(T) || throw(BandError(A))
731+
function fill!(A::BandedMatrix, x)
732+
iszero(x) || throw(BandError(A))
733733
fill!(A.data, x)
734734
A
735735
end
736736

737-
function diag(A::BandedMatrix{T}, k::Integer = 0) where {T}
738-
n = LinearAlgebra.checksquare(A) - abs(k)
739-
740-
if -A.l <= k <= A.u
741-
convert(Vector{T}, vec(A.data[A.u-k+1,range(max(k, 0) + begin, length=n)]))
742-
else
743-
zeros(T, max(n, 0))
744-
end
745-
end
746-
747-
748-
749-
#implements fliplr(flipud(A))
750-
function fliplrud(A::BandedMatrix)
751-
n,m=size(A)
752-
l=A.u+n-m
753-
u=A.l+m-n
754-
ret=BandedMatrix(eltype(A),n,m,l,u)
755-
for j = 1:size(ret,2), k = colrange(ret,j)
756-
@inbounds ret[k,j] = A[n-k+1,m-j+1]
757-
end
758-
ret
759-
end
760-
737+
diag(A::BandedMatrix, k::Integer = 0) = A[band(k)]
761738

762739
for OP in (:real, :imag)
763740
@eval $OP(A::BandedMatrix) = _BandedMatrix($OP(A.data),A.raxis,A.l,A.u)

0 commit comments

Comments
 (0)