@@ -17,7 +17,7 @@ function frule((_, Δx), ::typeof(norm), x::Number, p::Real)
1717 return y, ∂y
1818end
1919
20- function rrule (:: typeof (norm), x:: AbstractArray , p:: Real )
20+ function rrule (:: typeof (norm), x:: AbstractArray{<:Number} , p:: Real )
2121 y = LinearAlgebra. norm (x, p)
2222 function norm_pullback_p (Δy)
2323 ∂x = if isempty (x) || p == 0
@@ -48,7 +48,7 @@ function rrule(::typeof(norm), x::AbstractArray, p::Real)
4848 norm_pullback_p (:: Zero ) = (NO_FIELDS, Zero (), Zero ())
4949 return y, norm_pullback_p
5050end
51- function rrule (:: typeof (norm), x:: AbstractArray )
51+ function rrule (:: typeof (norm), x:: AbstractArray{<:Number} )
5252 y = LinearAlgebra. norm (x)
5353 function norm_pullback_2 (Δy)
5454 ∂x = if isempty (x)
@@ -64,7 +64,7 @@ function rrule(::typeof(norm), x::AbstractArray)
6464 norm_pullback_2 (:: Zero ) = (NO_FIELDS, Zero ())
6565 return y, norm_pullback_2
6666end
67- function rrule (:: typeof (norm), x:: Union{ LinearAlgebra.AdjOrTransAbsVec} , p:: Real )
67+ function rrule (:: typeof (norm), x:: LinearAlgebra.AdjOrTransAbsVec{<:Number } , p:: Real )
6868 y, inner_pullback = rrule (norm, parent (x), p)
6969 function norm_pullback (Δy)
7070 (∂self, ∂x′, ∂p) = inner_pullback (Δy)
9393# #### `normp`
9494# ####
9595
96- function rrule (:: typeof (LinearAlgebra. normp), x:: AbstractArray , p)
96+ function rrule (:: typeof (LinearAlgebra. normp), x:: AbstractArray{<:Number} , p)
9797 y = LinearAlgebra. normp (x, p)
9898 function normp_pullback (Δy)
9999 ∂x = @thunk _normp_back_x (x, p, y, Δy)
@@ -138,14 +138,14 @@ end
138138# #### `normMinusInf`/`normInf`
139139# ####
140140
141- function rrule (:: typeof (LinearAlgebra. normMinusInf), x:: AbstractArray )
141+ function rrule (:: typeof (LinearAlgebra. normMinusInf), x:: AbstractArray{<:Number} )
142142 y = LinearAlgebra. normMinusInf (x)
143143 normMinusInf_pullback (Δy) = (NO_FIELDS, _normInf_back (x, y, Δy))
144144 normMinusInf_pullback (:: Zero ) = (NO_FIELDS, Zero ())
145145 return y, normMinusInf_pullback
146146end
147147
148- function rrule (:: typeof (LinearAlgebra. normInf), x:: AbstractArray )
148+ function rrule (:: typeof (LinearAlgebra. normInf), x:: AbstractArray{<:Number} )
149149 y = LinearAlgebra. normInf (x)
150150 normInf_pullback (Δy) = (NO_FIELDS, _normInf_back (x, y, Δy))
151151 normInf_pullback (:: Zero ) = (NO_FIELDS, Zero ())
169169# #### `norm1`
170170# ####
171171
172- function rrule (:: typeof (LinearAlgebra. norm1), x:: AbstractArray )
172+ function rrule (:: typeof (LinearAlgebra. norm1), x:: AbstractArray{<:Number} )
173173 y = LinearAlgebra. norm1 (x)
174174 norm1_pullback (Δy) = (NO_FIELDS, InplaceableThunk (
175175 @thunk (_norm1_back (x, y, Δy)),
@@ -201,7 +201,7 @@ function frule((_, Δx), ::typeof(LinearAlgebra.norm2), x)
201201 return y, _norm2_forward (x, Δx, y)
202202end
203203
204- function rrule (:: typeof (LinearAlgebra. norm2), x:: AbstractArray )
204+ function rrule (:: typeof (LinearAlgebra. norm2), x:: AbstractArray{<:Number} )
205205 y = LinearAlgebra. norm2 (x)
206206 norm2_pullback (Δy) = (NO_FIELDS, InplaceableThunk (
207207 @thunk (_norm2_back (x, y, Δy)),
233233# #### `normalize`
234234# ####
235235
236- function rrule (:: typeof (normalize), x:: AbstractVector , p:: Real )
236+ function rrule (:: typeof (normalize), x:: AbstractVector{<:Number} , p:: Real )
237237 nrm, inner_pullback = rrule (norm, x, p)
238238 Ty = typeof (first (x) / nrm)
239239 y = copyto! (similar (x, Ty), x)
@@ -248,7 +248,7 @@ function rrule(::typeof(normalize), x::AbstractVector, p::Real)
248248 normalize_pullback (:: Zero ) = (NO_FIELDS, Zero (), Zero ())
249249 return y, normalize_pullback
250250end
251- function rrule (:: typeof (normalize), x:: AbstractVector )
251+ function rrule (:: typeof (normalize), x:: AbstractVector{<:Number} )
252252 nrm = LinearAlgebra. norm2 (x)
253253 Ty = typeof (first (x) / nrm)
254254 y = copyto! (similar (x, Ty), x)
0 commit comments