Skip to content

Commit 7277f28

Browse files
committed
deprecate eye(::Type{<:StaticArray}) in favor of constructors from UniformScaling
1 parent 0f4853e commit 7277f28

File tree

11 files changed

+56
-35
lines changed

11 files changed

+56
-35
lines changed

src/MArray.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,15 @@ end
7878

7979
# Some more advanced constructor-like functions
8080
@inline one(::Type{MArray{S}}) where {S} = one(MArray{S,Float64,tuple_length(S)})
81-
@inline eye(::Type{MArray{S}}) where {S} = eye(MArray{S,Float64,tuple_length(S)})
8281
@inline one(::Type{MArray{S,T}}) where {S,T} = one(MArray{S,T,tuple_length(S)})
83-
@inline eye(::Type{MArray{S,T}}) where {S,T} = eye(MArray{S,T,tuple_length(S)})
8482

8583
# MArray(I::UniformScaling) methods to replace eye
8684
(::Type{MA})(I::UniformScaling) where {MA<:MArray} = _eye(Size(MA), MA, I)
85+
# deprecate eye, keep around for as long as LinearAlgebra.eye exists
86+
@static if isdefined(LinearAlgebra, :eye)
87+
@deprecate eye(::Type{MArray{S}}) where {S} MArray{S}(1.0I)
88+
@deprecate eye(::Type{MArray{S,T}}) where {S,T} MArray{S,T}(I)
89+
end
8790

8891
####################
8992
## MArray methods ##
@@ -271,20 +274,20 @@ macro MArray(ex)
271274
elseif ex.args[1] == :eye
272275
if length(ex.args) == 2
273276
return quote
274-
eye(MArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[2]))}})
277+
MArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[2]))},Float64}(I)
275278
end
276279
elseif length(ex.args) == 3
277280
# We need a branch, depending if the first argument is a type or a size.
278281
return quote
279282
if isa($(esc(ex.args[2])), DataType)
280-
eye(MArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[3]))}, $(esc(ex.args[2]))})
283+
MArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[3]))}, $(esc(ex.args[2]))}(I)
281284
else
282-
eye(MArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[3]))}})
285+
MArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[3]))}, Float64}(I)
283286
end
284287
end
285288
elseif length(ex.args) == 4
286289
return quote
287-
eye(MArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[4]))}, $(esc(ex.args[2]))})
290+
MArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[4]))}, $(esc(ex.args[2]))}(I)
288291
end
289292
else
290293
error("Bad eye() expression for @MArray")

src/MMatrix.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,11 @@ end
6161

6262
# Some more advanced constructor-like functions
6363
@inline one(::Type{MMatrix{N}}) where {N} = one(MMatrix{N,N})
64-
@inline eye(::Type{MMatrix{N}}) where {N} = eye(MMatrix{N,N})
64+
65+
# deprecate eye, keep around for as long as LinearAlgebra.eye exists
66+
@static if isdefined(LinearAlgebra, :eye)
67+
@deprecate eye(::Type{MMatrix{N}}) where {N} MMatrix{N,N}(1.0I)
68+
end
6569

6670
#####################
6771
## MMatrix methods ##
@@ -208,20 +212,20 @@ macro MMatrix(ex)
208212
elseif ex.args[1] == :eye
209213
if length(ex.args) == 2
210214
return quote
211-
eye(MMatrix{$(esc(ex.args[2]))})
215+
MMatrix{$(esc(ex.args[2])),$(esc(ex.args[2])),Float64}(I)
212216
end
213217
elseif length(ex.args) == 3
214218
# We need a branch, depending if the first argument is a type or a size.
215219
return quote
216220
if isa($(esc(ex.args[2])), DataType)
217-
eye(MMatrix{$(esc(ex.args[3])), $(esc(ex.args[3])), $(esc(ex.args[2]))})
221+
MMatrix{$(esc(ex.args[3])), $(esc(ex.args[3])), $(esc(ex.args[2]))}(I)
218222
else
219-
eye(MMatrix{$(esc(ex.args[2])), $(esc(ex.args[3]))})
223+
MMatrix{$(esc(ex.args[2])), $(esc(ex.args[3])), Float64}(I)
220224
end
221225
end
222226
elseif length(ex.args) == 4
223227
return quote
224-
eye(MMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))})
228+
MMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))}(I)
225229
end
226230
else
227231
error("Bad eye() expression for @MMatrix")

src/SArray.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,15 @@ end
5757

5858
# Some more advanced constructor-like functions
5959
@inline one(::Type{SArray{S}}) where {S} = one(SArray{S, Float64, tuple_length(S)})
60-
@inline eye(::Type{SArray{S}}) where {S} = eye(SArray{S, Float64, tuple_length(S)})
6160
@inline one(::Type{SArray{S, T}}) where {S, T} = one(SArray{S, T, tuple_length(S)})
62-
@inline eye(::Type{SArray{S, T}}) where {S, T} = eye(SArray{S, T, tuple_length(S)})
6361

6462
# SArray(I::UniformScaling) methods to replace eye
6563
(::Type{SA})(I::UniformScaling) where {SA<:SArray} = _eye(Size(SA), SA, I)
64+
# deprecate eye, keep around for as long as LinearAlgebra.eye exists
65+
@static if isdefined(LinearAlgebra, :eye)
66+
@deprecate eye(::Type{SArray{S}}) where {S} SArray{S}(1.0I)
67+
@deprecate eye(::Type{SArray{S,T}}) where {S,T} SArray{S,T}(I)
68+
end
6669

6770
####################
6871
## SArray methods ##
@@ -234,20 +237,20 @@ macro SArray(ex)
234237
elseif ex.args[1] == :eye
235238
if length(ex.args) == 2
236239
return quote
237-
eye(SArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[2]))}})
240+
SArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[2]))},Float64}(I)
238241
end
239242
elseif length(ex.args) == 3
240243
# We need a branch, depending if the first argument is a type or a size.
241244
return quote
242245
if isa($(esc(ex.args[2])), DataType)
243-
eye(SArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[3]))}, $(esc(ex.args[2]))})
246+
SArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[3]))}, $(esc(ex.args[2]))}(I)
244247
else
245-
eye(SArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[3]))}})
248+
SArray{Tuple{$(esc(ex.args[2])), $(esc(ex.args[3]))}, Float64}(I)
246249
end
247250
end
248251
elseif length(ex.args) == 4
249252
return quote
250-
eye(SArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[4]))}, $(esc(ex.args[2]))})
253+
SArray{Tuple{$(esc(ex.args[3])), $(esc(ex.args[4]))}, $(esc(ex.args[2]))}(I)
251254
end
252255
else
253256
error("Bad eye() expression for @SArray")

src/SDiagonal.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ factorize(D::SDiagonal) = D
5555
-(A::SDiagonal) = SDiagonal(-A.diag)
5656
+(Da::SDiagonal, Db::SDiagonal) = SDiagonal(Da.diag + Db.diag)
5757
-(Da::SDiagonal, Db::SDiagonal) = SDiagonal(Da.diag - Db.diag)
58-
-(A::SDiagonal, B::SMatrix) = eye(typeof(B))*A - B
58+
-(A::SDiagonal, B::SMatrix) = typeof(B)(I)*A - B
5959

6060
*(x::T, D::SDiagonal) where {T<:Number} = SDiagonal(x * D.diag)
6161
*(D::SDiagonal, x::T) where {T<:Number} = SDiagonal(D.diag * x)
@@ -81,9 +81,12 @@ function logdet(D::SDiagonal{N,T}) where {N,T<:Complex} #Make sure branch cut is
8181
-pi<imag(x)<pi ? x : real(x)+(mod2pi(imag(x)+pi)-pi)*im
8282
end
8383

84-
eye(::Type{SDiagonal{N,T}}) where {N,T} = SDiagonal(ones(SVector{N,T}))
8584
# SDiagonal(I::UniformScaling) methods to replace eye
8685
(::Type{SD})(I::UniformScaling) where {N,SD<:SDiagonal{N}} = SD(ntuple(x->I.λ, Val(N)))
86+
# deprecate eye, keep around for as long as LinearAlgebra.eye exists
87+
@static if isdefined(LinearAlgebra, :eye)
88+
@deprecate eye(::Type{SDiagonal{N,T}}) where {N,T} SDiagonal{N,T}(I)
89+
end
8790

8891
one(::Type{SDiagonal{N,T}}) where {N,T} = SDiagonal(ones(SVector{N,T}))
8992
one(::SDiagonal{N,T}) where {N,T} = SDiagonal(ones(SVector{N,T}))

src/SMatrix.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,11 @@ end
6161

6262
# Some more advanced constructor-like functions
6363
@inline one(::Type{SMatrix{N}}) where {N} = one(SMatrix{N,N})
64-
@inline eye(::Type{SMatrix{N}}) where {N} = eye(SMatrix{N,N})
64+
65+
# deprecate eye, keep around for as long as LinearAlgebra.eye exists
66+
@static if isdefined(LinearAlgebra, :eye)
67+
@deprecate eye(::Type{SMatrix{N}}) where {N} SMatrix{N,N}(1.0I)
68+
end
6569

6670
#####################
6771
## SMatrix methods ##
@@ -182,20 +186,20 @@ macro SMatrix(ex)
182186
elseif ex.args[1] == :eye
183187
if length(ex.args) == 2
184188
return quote
185-
eye(SMatrix{$(esc(ex.args[2]))})
189+
SMatrix{$(esc(ex.args[2])),$(esc(ex.args[2])),Float64}(I)
186190
end
187191
elseif length(ex.args) == 3
188192
# We need a branch, depending if the first argument is a type or a size.
189193
return quote
190194
if isa($(esc(ex.args[2])), DataType)
191-
eye(SMatrix{$(esc(ex.args[3])), $(esc(ex.args[3])), $(esc(ex.args[2]))})
195+
SMatrix{$(esc(ex.args[3])), $(esc(ex.args[3])), $(esc(ex.args[2]))}(I)
192196
else
193-
eye(SMatrix{$(esc(ex.args[2])), $(esc(ex.args[3]))})
197+
SMatrix{$(esc(ex.args[2])), $(esc(ex.args[3])), Float64}(I)
194198
end
195199
end
196200
elseif length(ex.args) == 4
197201
return quote
198-
eye(SMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))})
202+
SMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))}(I)
199203
end
200204
else
201205
error("Bad eye() expression for @SMatrix")

src/StaticArrays.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ import Random: rand, randn, randexp, rand!, randn!, randexp!
2121
using Core.Compiler: return_type
2222
import Base: sqrt, exp, log
2323
using LinearAlgebra
24-
import LinearAlgebra: transpose, adjoint, eye, vecdot, eigvals, eigen, lyap, tr,
24+
import LinearAlgebra: transpose, adjoint, vecdot, eigvals, eigen, lyap, tr,
2525
kron, diag, norm, dot, diagm, lu, svd, svdvals, svdfact,
2626
factorize, ishermitian, issymmetric, isposdef, normalize,
2727
normalize!, Eigen, det, logdet, cross, diff, qr
28+
# import eye for deprecation warnings
29+
@static if isdefined(LinearAlgebra, :eye)
30+
import LinearAlgebra: eye
31+
end
2832

2933
export StaticScalar, StaticArray, StaticVector, StaticMatrix
3034
export Scalar, SArray, SVector, SMatrix

src/eigen.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ end
128128

129129

130130
@inline function _eig(::Size{(1,1)}, A::LinearAlgebra.RealHermSymComplexHerm{T}, permute, scale) where {T <: Real}
131-
@inbounds return (SVector{1,T}((real(A[1]),)), eye(SMatrix{1,1,eltype(A)}))
131+
@inbounds return (SVector{1,T}((real(A[1]),)), SMatrix{1,1,eltype(A)}(I))
132132
end
133133

134134
@inline function _eig(::Size{(2,2)}, A::LinearAlgebra.RealHermSymComplexHerm{T}, permute, scale) where {T <: Real}
@@ -143,7 +143,7 @@ end
143143
vals = SVector(t_half - tmp, t_half + tmp)
144144

145145
@inbounds if a[3] == 0
146-
vecs = eye(SMatrix{2,2,eltype(A)})
146+
vecs = SMatrix{2,2,eltype(A)}(I)
147147
else
148148
@inbounds v11 = vals[1]-a[4]
149149
@inbounds n1 = sqrt(v11'*v11 + a[3]'*a[3])
@@ -168,7 +168,7 @@ end
168168
vals = SVector(t_half - tmp, t_half + tmp)
169169

170170
@inbounds if a[2] == 0
171-
vecs = eye(SMatrix{2,2,eltype(A)})
171+
vecs = SMatrix{2,2,eltype(A)}(I)
172172
else
173173
@inbounds v11 = vals[1]-a[4]
174174
@inbounds n1 = sqrt(v11'*v11 + a[2]'*a[2])

src/inv.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ end
6161
quote
6262
@_inline_meta
6363
LUp = lu(A)
64-
LUp.U \ (LUp.L \ eye(typeof(A))[LUp.p,:])
64+
LUp.U \ (LUp.L \ typeof(A)(I)[LUp.p,:])
6565
end
6666
else
6767
:(@_inline_meta; similar_type(A)(inv(Matrix(A))))

src/linalg.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,13 @@ end
166166

167167
# deprecate eye, keep around for as long as LinearAlgebra.eye exists
168168
@static if isdefined(LinearAlgebra, :eye)
169-
@deprecate eye(A::SM) where {SM<:StaticMatrix} eye(typeof(A))
169+
@deprecate eye(A::SM) where {SM<:StaticMatrix} typeof(A)(I)
170+
@deprecate eye(::Type{SM}) where {SM<:StaticMatrix} SM(1.0I)
170171
end
171172

172173
# StaticMatrix(I::UniformScaling) methods to replace eye
173174
(::Type{SM})(I::UniformScaling) where {N,M,SM<:StaticMatrix{N,M}} = _eye(Size(SM), SM, I)
174175

175-
@inline eye(::Type{SM}) where {SM<:StaticMatrix} = _eye(Size(SM), SM, 1.0I)
176176
@generated function _eye(::Size{S}, ::Type{SM}, I::UniformScaling{T}) where {S, SM <: StaticArray, T}
177177
exprs = [i == j ? :(I.λ) : :(zero($T)) for i 1:S[1], j 1:S[2]]
178178
return quote

src/qr.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ end
174174
#function qr_unrolled(A::StaticMatrix{<:Any, <:Any, TA}) where {TA}
175175
# m, n = size(A)
176176
# T = _qreltype(TA)
177-
# Q = eye(MMatrix{m,m,T,m*m})
177+
# Q = MMatrix{m,m,T,m*m}(I)
178178
# R = MMatrix{m,n,T,m*n}(A)
179179
# for k = 1:min(m - 1 + !(TA<:Real), n)
180180
# #x = view(R, k:m, k)

0 commit comments

Comments
 (0)