@@ -74,6 +74,20 @@ BandedMatrix{T}(::UndefInitializer, nm::NTuple{2,OneTo{Int}}, ab::NTuple{2,Integ
7474BandedMatrix {V} (M:: BandedMatrix ) where {V} = _BandedMatrix (AbstractMatrix {V} (M. data), M. raxis, M. l, M. u)
7575BandedMatrix (M:: BandedMatrix{V} ) where {V} = _BandedMatrix (AbstractMatrix {V} (M. data), M. raxis, M. l, M. u)
7676
77+ function BandedMatrix {T, C, Ax} (A:: UniformScaling , nm:: NTuple{2,Integer} , (l,u):: NTuple{2,Integer} = (0 ,0 )) where {T,C,Ax}
78+ ret = BandedMatrix {T, C, Ax} (undef, nm, (l,u))
79+ zero! (ret. data)
80+ ret. data[u+ 1 ,:] .= A. λ
81+ ret
82+ end
83+ BandedMatrix {T,C} (A:: UniformScaling , nm:: NTuple{2,Integer} , ab:: NTuple{2,Integer} = (0 ,0 )) where {T,C} =
84+ BandedMatrix {T, C, OneTo{Int}} (A, nm, ab)
85+ BandedMatrix {T} (A:: UniformScaling , nm:: NTuple{2,Integer} , ab:: NTuple{2,Integer} = (0 ,0 )) where T =
86+ BandedMatrix {T, Matrix{T}} (A, nm, ab)
87+ BandedMatrix (A:: UniformScaling , nm:: NTuple{2,Integer} , ab:: NTuple{2,Integer} = (0 ,0 )) =
88+ BandedMatrix {eltype(A)} (A, nm, ab)
89+
90+
7791convert (:: Type{BandedMatrix{V}} , M:: BandedMatrix{V} ) where {V} = M
7892convert (:: Type{BandedMatrix{V}} , M:: BandedMatrix ) where {V} =
7993 _BandedMatrix (convert (AbstractMatrix{V}, M. data), M. raxis, M. l, M. u)
@@ -1008,3 +1022,12 @@ function resize(A::BandedSubBandedMatrix, n::Integer, m::Integer)
10081022 _BandedMatrix (reshape (resize! (vec (copy (bandeddata (A))), (l+ u+ 1 )* m), l+ u+ 1 , m), n, l,u)
10091023end
10101024
1025+ # ##
1026+ # one
1027+ # ##
1028+
1029+ function one (A:: BandedMatrix )
1030+ m,n = size (A)
1031+ m== n || throw (DimensionMismatch (" multiplicative identity defined only for square matrices" ))
1032+ typeof (A)(I, (m,n))
1033+ end
0 commit comments