@@ -17,7 +17,7 @@ function frule((_, Δx), ::typeof(norm), x::Number, p::Real)
17
17
return y, ∂y
18
18
end
19
19
20
- function rrule (:: typeof (norm), x:: AbstractArray , p:: Real )
20
+ function rrule (:: typeof (norm), x:: AbstractArray{<:Number} , p:: Real )
21
21
y = LinearAlgebra. norm (x, p)
22
22
function norm_pullback_p (Δy)
23
23
∂x = if isempty (x) || p == 0
@@ -48,7 +48,7 @@ function rrule(::typeof(norm), x::AbstractArray, p::Real)
48
48
norm_pullback_p (:: Zero ) = (NO_FIELDS, Zero (), Zero ())
49
49
return y, norm_pullback_p
50
50
end
51
- function rrule (:: typeof (norm), x:: AbstractArray )
51
+ function rrule (:: typeof (norm), x:: AbstractArray{<:Number} )
52
52
y = LinearAlgebra. norm (x)
53
53
function norm_pullback_2 (Δy)
54
54
∂x = if isempty (x)
@@ -64,7 +64,7 @@ function rrule(::typeof(norm), x::AbstractArray)
64
64
norm_pullback_2 (:: Zero ) = (NO_FIELDS, Zero ())
65
65
return y, norm_pullback_2
66
66
end
67
- function rrule (:: typeof (norm), x:: Union{ LinearAlgebra.AdjOrTransAbsVec} , p:: Real )
67
+ function rrule (:: typeof (norm), x:: LinearAlgebra.AdjOrTransAbsVec{<:Number } , p:: Real )
68
68
y, inner_pullback = rrule (norm, parent (x), p)
69
69
function norm_pullback (Δy)
70
70
(∂self, ∂x′, ∂p) = inner_pullback (Δy)
93
93
# #### `normp`
94
94
# ####
95
95
96
- function rrule (:: typeof (LinearAlgebra. normp), x:: AbstractArray , p)
96
+ function rrule (:: typeof (LinearAlgebra. normp), x:: AbstractArray{<:Number} , p)
97
97
y = LinearAlgebra. normp (x, p)
98
98
function normp_pullback (Δy)
99
99
∂x = @thunk _normp_back_x (x, p, y, Δy)
@@ -138,14 +138,14 @@ end
138
138
# #### `normMinusInf`/`normInf`
139
139
# ####
140
140
141
- function rrule (:: typeof (LinearAlgebra. normMinusInf), x:: AbstractArray )
141
+ function rrule (:: typeof (LinearAlgebra. normMinusInf), x:: AbstractArray{<:Number} )
142
142
y = LinearAlgebra. normMinusInf (x)
143
143
normMinusInf_pullback (Δy) = (NO_FIELDS, _normInf_back (x, y, Δy))
144
144
normMinusInf_pullback (:: Zero ) = (NO_FIELDS, Zero ())
145
145
return y, normMinusInf_pullback
146
146
end
147
147
148
- function rrule (:: typeof (LinearAlgebra. normInf), x:: AbstractArray )
148
+ function rrule (:: typeof (LinearAlgebra. normInf), x:: AbstractArray{<:Number} )
149
149
y = LinearAlgebra. normInf (x)
150
150
normInf_pullback (Δy) = (NO_FIELDS, _normInf_back (x, y, Δy))
151
151
normInf_pullback (:: Zero ) = (NO_FIELDS, Zero ())
169
169
# #### `norm1`
170
170
# ####
171
171
172
- function rrule (:: typeof (LinearAlgebra. norm1), x:: AbstractArray )
172
+ function rrule (:: typeof (LinearAlgebra. norm1), x:: AbstractArray{<:Number} )
173
173
y = LinearAlgebra. norm1 (x)
174
174
norm1_pullback (Δy) = (NO_FIELDS, InplaceableThunk (
175
175
@thunk (_norm1_back (x, y, Δy)),
@@ -201,7 +201,7 @@ function frule((_, Δx), ::typeof(LinearAlgebra.norm2), x)
201
201
return y, _norm2_forward (x, Δx, y)
202
202
end
203
203
204
- function rrule (:: typeof (LinearAlgebra. norm2), x:: AbstractArray )
204
+ function rrule (:: typeof (LinearAlgebra. norm2), x:: AbstractArray{<:Number} )
205
205
y = LinearAlgebra. norm2 (x)
206
206
norm2_pullback (Δy) = (NO_FIELDS, InplaceableThunk (
207
207
@thunk (_norm2_back (x, y, Δy)),
233
233
# #### `normalize`
234
234
# ####
235
235
236
- function rrule (:: typeof (normalize), x:: AbstractVector , p:: Real )
236
+ function rrule (:: typeof (normalize), x:: AbstractVector{<:Number} , p:: Real )
237
237
nrm, inner_pullback = rrule (norm, x, p)
238
238
Ty = typeof (first (x) / nrm)
239
239
y = copyto! (similar (x, Ty), x)
@@ -248,7 +248,7 @@ function rrule(::typeof(normalize), x::AbstractVector, p::Real)
248
248
normalize_pullback (:: Zero ) = (NO_FIELDS, Zero (), Zero ())
249
249
return y, normalize_pullback
250
250
end
251
- function rrule (:: typeof (normalize), x:: AbstractVector )
251
+ function rrule (:: typeof (normalize), x:: AbstractVector{<:Number} )
252
252
nrm = LinearAlgebra. norm2 (x)
253
253
Ty = typeof (first (x) / nrm)
254
254
y = copyto! (similar (x, Ty), x)
0 commit comments