@@ -21,27 +21,29 @@ extension Array where Element: Differentiable {
21
21
/// multiplied with itself `count` times.
22
22
@frozen
23
23
public struct DifferentiableView {
24
+ @usableFromInline
24
25
var _base : [ Element ]
25
26
}
26
27
}
27
28
28
29
extension Array . DifferentiableView : Differentiable
29
30
where Element: Differentiable {
30
31
/// The viewed array.
32
+ @inlinable
31
33
public var base : [ Element ] {
32
34
get { _base }
33
35
_modify { yield & _base }
34
36
}
35
37
36
- @usableFromInline
38
+ @inlinable
37
39
@derivative ( of: base)
38
40
func _vjpBase( ) -> (
39
41
value: [ Element ] , pullback: ( Array < Element > . TangentVector ) -> TangentVector
40
42
) {
41
43
return ( base, { $0 } )
42
44
}
43
45
44
- @usableFromInline
46
+ @inlinable
45
47
@derivative ( of: base)
46
48
func _jvpBase( ) -> (
47
49
value: [ Element ] , differential: ( Array < Element > . TangentVector ) -> TangentVector
@@ -50,17 +52,18 @@ where Element: Differentiable {
50
52
}
51
53
52
54
/// Creates a differentiable view of the given array.
55
+ @inlinable
53
56
public init ( _ base: [ Element ] ) { self . _base = base }
54
57
55
- @usableFromInline
58
+ @inlinable
56
59
@derivative ( of: init ( _: ) )
57
60
static func _vjpInit( _ base: [ Element ] ) -> (
58
61
value: Array . DifferentiableView , pullback: ( TangentVector ) -> TangentVector
59
62
) {
60
63
return ( Array . DifferentiableView ( base) , { $0 } )
61
64
}
62
65
63
- @usableFromInline
66
+ @inlinable
64
67
@derivative ( of: init ( _: ) )
65
68
static func _jvpInit( _ base: [ Element ] ) -> (
66
69
value: Array . DifferentiableView , differential: ( TangentVector ) -> TangentVector
@@ -71,6 +74,7 @@ where Element: Differentiable {
71
74
public typealias TangentVector =
72
75
Array < Element . TangentVector > . DifferentiableView
73
76
77
+ @inlinable
74
78
public mutating func move( by offset: TangentVector ) {
75
79
if offset. base. isEmpty {
76
80
return
@@ -88,6 +92,7 @@ where Element: Differentiable {
88
92
89
93
extension Array . DifferentiableView : Equatable
90
94
where Element: Differentiable & Equatable {
95
+ @inlinable
91
96
public static func == (
92
97
lhs: Array . DifferentiableView ,
93
98
rhs: Array . DifferentiableView
@@ -98,6 +103,7 @@ where Element: Differentiable & Equatable {
98
103
99
104
extension Array . DifferentiableView : ExpressibleByArrayLiteral
100
105
where Element: Differentiable {
106
+ @inlinable
101
107
public init ( arrayLiteral elements: Element ... ) {
102
108
self . init ( elements)
103
109
}
@@ -123,10 +129,12 @@ extension Array.DifferentiableView: CustomReflectable {
123
129
extension Array . DifferentiableView : AdditiveArithmetic
124
130
where Element: AdditiveArithmetic & Differentiable {
125
131
132
+ @inlinable
126
133
public static var zero : Array . DifferentiableView {
127
134
return Array . DifferentiableView ( [ ] )
128
135
}
129
-
136
+
137
+ @inlinable
130
138
public static func + (
131
139
lhs: Array . DifferentiableView ,
132
140
rhs: Array . DifferentiableView
@@ -143,6 +151,7 @@ where Element: AdditiveArithmetic & Differentiable {
143
151
return Array . DifferentiableView ( zip ( lhs. base, rhs. base) . map ( + ) )
144
152
}
145
153
154
+ @inlinable
146
155
public static func - (
147
156
lhs: Array . DifferentiableView ,
148
157
rhs: Array . DifferentiableView
@@ -180,6 +189,7 @@ extension Array: Differentiable where Element: Differentiable {
180
189
public typealias TangentVector =
181
190
Array < Element . TangentVector > . DifferentiableView
182
191
192
+ @inlinable
183
193
public mutating func move( by offset: TangentVector ) {
184
194
var view = DifferentiableView ( self )
185
195
view. move ( by: offset)
@@ -192,7 +202,7 @@ extension Array: Differentiable where Element: Differentiable {
192
202
//===----------------------------------------------------------------------===//
193
203
194
204
extension Array where Element: Differentiable {
195
- @usableFromInline
205
+ @inlinable
196
206
@derivative ( of: subscript)
197
207
func _vjpSubscript( index: Int ) -> (
198
208
value: Element , pullback: ( Element . TangentVector ) -> TangentVector
@@ -207,7 +217,7 @@ extension Array where Element: Differentiable {
207
217
return ( self [ index] , pullback)
208
218
}
209
219
210
- @usableFromInline
220
+ @inlinable
211
221
@derivative ( of: subscript)
212
222
func _jvpSubscript( index: Int ) -> (
213
223
value: Element , differential: ( TangentVector ) -> Element . TangentVector
@@ -218,7 +228,7 @@ extension Array where Element: Differentiable {
218
228
return ( self [ index] , differential)
219
229
}
220
230
221
- @usableFromInline
231
+ @inlinable
222
232
@derivative ( of: + )
223
233
static func _vjpConcatenate( _ lhs: Self , _ rhs: Self ) -> (
224
234
value: Self ,
@@ -241,7 +251,7 @@ extension Array where Element: Differentiable {
241
251
return ( lhs + rhs, pullback)
242
252
}
243
253
244
- @usableFromInline
254
+ @inlinable
245
255
@derivative ( of: + )
246
256
static func _jvpConcatenate( _ lhs: Self , _ rhs: Self ) -> (
247
257
value: Self ,
@@ -261,7 +271,7 @@ extension Array where Element: Differentiable {
261
271
262
272
263
273
extension Array where Element: Differentiable {
264
- @usableFromInline
274
+ @inlinable
265
275
@derivative ( of: append)
266
276
mutating func _vjpAppend( _ element: Element ) -> (
267
277
value: Void , pullback: ( inout TangentVector ) -> Element . TangentVector
@@ -274,7 +284,7 @@ extension Array where Element: Differentiable {
274
284
} )
275
285
}
276
286
277
- @usableFromInline
287
+ @inlinable
278
288
@derivative ( of: append)
279
289
mutating func _jvpAppend( _ element: Element ) -> (
280
290
value: Void ,
@@ -286,7 +296,7 @@ extension Array where Element: Differentiable {
286
296
}
287
297
288
298
extension Array where Element: Differentiable {
289
- @usableFromInline
299
+ @inlinable
290
300
@derivative ( of: += )
291
301
static func _vjpAppend( _ lhs: inout Self , _ rhs: Self ) -> (
292
302
value: Void , pullback: ( inout TangentVector ) -> TangentVector
@@ -302,7 +312,7 @@ extension Array where Element: Differentiable {
302
312
} )
303
313
}
304
314
305
- @usableFromInline
315
+ @inlinable
306
316
@derivative ( of: += )
307
317
static func _jvpAppend( _ lhs: inout Self , _ rhs: Self ) -> (
308
318
value: Void , differential: ( inout TangentVector , TangentVector ) -> Void
@@ -313,7 +323,7 @@ extension Array where Element: Differentiable {
313
323
}
314
324
315
325
extension Array where Element: Differentiable {
316
- @usableFromInline
326
+ @inlinable
317
327
@derivative ( of: init ( repeating: count: ) )
318
328
static func _vjpInit( repeating repeatedValue: Element , count: Int ) -> (
319
329
value: Self , pullback: ( TangentVector ) -> Element . TangentVector
@@ -326,7 +336,7 @@ extension Array where Element: Differentiable {
326
336
)
327
337
}
328
338
329
- @usableFromInline
339
+ @inlinable
330
340
@derivative ( of: init ( repeating: count: ) )
331
341
static func _jvpInit( repeating repeatedValue: Element , count: Int ) -> (
332
342
value: Self , differential: ( Element . TangentVector ) -> TangentVector
0 commit comments