@@ -6,7 +6,7 @@ import Base: size, getindex, setindex!, IndexStyle, checkbounds, convert,
6
6
+ , - , * , / , \ , diff, sum, cumsum, maximum, minimum, sort, sort!,
7
7
any, all, axes, isone, iterate, unique, allunique, permutedims, inv,
8
8
copy, vec, setindex!, count, == , reshape, _throw_dmrs, map, zero,
9
- show, view, in, mapreduce
9
+ show, view, in, mapreduce, one
10
10
11
11
import LinearAlgebra: rank, svdvals!, tril, triu, tril!, triu!, diag, transpose, adjoint, fill!,
12
12
dot, norm2, norm1, normInf, normMinusInf, normp, lmul!, rmul!, diagzero, AbstractTriangular, AdjointAbsVec, TransposeAbsVec,
@@ -336,7 +336,7 @@ axes(rd::Diagonal{<:Any,<:AbstractFill}) = (axes(rd.diag,1),axes(rd.diag,1))
336
336
axes (T:: AbstractTriangular{<:Any,<:AbstractFill} ) = axes (parent (T))
337
337
338
338
axes (rd:: RectDiagonal ) = rd. axes
339
- size (rd:: RectDiagonal ) = length .( rd. axes)
339
+ size (rd:: RectDiagonal ) = map (length, rd. axes)
340
340
341
341
@inline function getindex (rd:: RectDiagonal{T} , i:: Integer , j:: Integer ) where T
342
342
@boundscheck checkbounds (rd, i, j)
@@ -551,6 +551,17 @@ zero(r::Zeros{T,N}) where {T,N} = r
551
551
zero (r:: Ones{T,N} ) where {T,N} = Zeros {T,N} (r. axes)
552
552
zero (r:: Fill{T,N} ) where {T,N} = Zeros {T,N} (r. axes)
553
553
554
+ # ########
555
+ # oneunit
556
+ # ########
557
+
558
+ function one (A:: AbstractFill{T,2} ) where {T}
559
+ Base. require_one_based_indexing (A)
560
+ m, n = size (A)
561
+ m == n || throw (ArgumentError (" multiplicative identity defined only for square matrices" ))
562
+ SquareEye {T} (m)
563
+ end
564
+
554
565
# ########
555
566
# any/all/isone/iszero
556
567
# ########
0 commit comments