diff --git a/src/adjtrans.jl b/src/adjtrans.jl index 96db07d5..72be05ab 100644 --- a/src/adjtrans.jl +++ b/src/adjtrans.jl @@ -582,6 +582,11 @@ diagview(A::Adjoint, k::Integer = 0) = _vecadjoint(diagview(parent(A), -k)) triu!(A::AdjOrTransAbsMat, k::Integer = 0) = wrapperop(A)(tril!(parent(A), -k)) tril!(A::AdjOrTransAbsMat, k::Integer = 0) = wrapperop(A)(triu!(parent(A), -k)) +function fillstored!(A::AdjOrTransAbsMat, v) + fillstored!(parent(A), wrapperop(A)(v)) + return A +end + function fillband!(A::AdjOrTrans, v, k1, k2) fillband!(parent(A), wrapperop(A)(v), -k2, -k1) return A diff --git a/src/dense.jl b/src/dense.jl index f6f1accb..5fa28f85 100644 --- a/src/dense.jl +++ b/src/dense.jl @@ -235,6 +235,8 @@ function fillband!(A::AbstractMatrix{T}, x, l, u) where T return A end +fillstored!(A::AbstractMatrix, v) = fill!(A, v) + diagind(m::Integer, n::Integer, k::Integer=0) = diagind(IndexLinear(), m, n, k) diagind(::IndexLinear, m::Integer, n::Integer, k::Integer=0) = k <= 0 ? range(1-k, step=m+1, length=min(m+k, n)) : range(k*m+1, step=m+1, length=min(m, n-k)) diff --git a/test/adjtrans.jl b/test/adjtrans.jl index 075f0acf..f2862562 100644 --- a/test/adjtrans.jl +++ b/test/adjtrans.jl @@ -810,6 +810,17 @@ end end end +@testset "fillstored!" begin + A = rand(ComplexF64, 4, 4) + U = UpperTriangular(A) + @testset for (op, f) in ((Adjoint, adjoint), (Transpose, transpose)) + @test LinearAlgebra.fillstored!(op(A), 1) == op(fill(1, size(A))) + @test LinearAlgebra.fillstored!(op(A), 2im) == op(fill(f(2im), size(A))) + @test LinearAlgebra.fillstored!(op(U), 1) == op(triu(fill(1, size(U)))) + @test LinearAlgebra.fillstored!(op(U), 2im) == op(triu(fill(f(2im), size(U)))) + end +end + @testset "lmul!/rmul! by numbers" begin @testset "$(eltype(A))" for A in (rand(4, 4), rand(ComplexF64,4,4), fill([1 2; 3 4], 4, 4),