@@ -213,29 +213,29 @@ public extension Differentiable {
213
213
214
214
public extension Differentiable {
215
215
@inlinable
216
- func valueWithPullback< R : Differentiable > (
216
+ func valueWithPullback< R> (
217
217
in f: @differentiable ( Self ) -> R
218
218
) -> ( value: R , pullback: ( R . TangentVector ) -> TangentVector ) {
219
219
return Builtin . autodiffApply_vjp_arity1 ( f, self )
220
220
}
221
221
222
222
@inlinable
223
- func pullback< R : Differentiable > (
223
+ func pullback< R> (
224
224
in f: @differentiable ( Self ) -> R
225
225
) -> ( R . TangentVector ) -> TangentVector {
226
226
return Builtin . autodiffApply_vjp_arity1 ( f, self ) . 1
227
227
}
228
228
229
229
@inlinable
230
- func gradient< R : Differentiable > (
230
+ func gradient< R> (
231
231
in f: @differentiable ( Self ) -> R
232
232
) -> TangentVector
233
233
where R : FloatingPoint , R. TangentVector == R {
234
234
return self . pullback ( in: f) ( R ( 1 ) )
235
235
}
236
236
237
237
@inlinable
238
- func valueWithGradient< R : Differentiable > (
238
+ func valueWithGradient< R> (
239
239
in f: @differentiable ( Self ) -> R
240
240
) -> ( value: R , gradient: TangentVector )
241
241
where R : FloatingPoint , R. TangentVector == R {
@@ -244,30 +244,30 @@ public extension Differentiable {
244
244
}
245
245
246
246
@inlinable
247
- func valueWithPullback< T : Differentiable , R : Differentiable > (
247
+ func valueWithPullback< T, R> (
248
248
at x: T , in f: @differentiable ( Self , T ) -> R
249
249
) -> ( value: R ,
250
250
pullback: ( R . TangentVector ) -> ( TangentVector , T . TangentVector ) ) {
251
251
return Builtin . autodiffApply_vjp_arity2 ( f, self , x)
252
252
}
253
253
254
254
@inlinable
255
- func pullback< T : Differentiable , R : Differentiable > (
255
+ func pullback< T, R> (
256
256
at x: T , in f: @differentiable ( Self , T ) -> R
257
257
) -> ( R . TangentVector ) -> ( TangentVector , T . TangentVector ) {
258
258
return Builtin . autodiffApply_vjp_arity2 ( f, self , x) . 1
259
259
}
260
260
261
261
@inlinable
262
- func gradient< T : Differentiable , R : Differentiable > (
262
+ func gradient< T, R> (
263
263
at x: T , in f: @differentiable ( Self , T ) -> R
264
264
) -> ( TangentVector , T . TangentVector )
265
265
where R : FloatingPoint , R. TangentVector == R {
266
266
return self . pullback ( at: x, in: f) ( R ( 1 ) )
267
267
}
268
268
269
269
@inlinable
270
- func valueWithGradient< T : Differentiable , R : Differentiable > (
270
+ func valueWithGradient< T, R> (
271
271
at x: T , in f: @differentiable ( Self , T ) -> R
272
272
) -> ( value: R , gradient: ( TangentVector , T . TangentVector ) )
273
273
where R : FloatingPoint , R. TangentVector == R {
@@ -285,17 +285,15 @@ public extension Differentiable {
285
285
@inlinable
286
286
public func valueWithPullback< T, R> (
287
287
at x: T , in f: @differentiable ( T ) -> R
288
- ) -> ( value: R , pullback: ( R . TangentVector ) -> T . TangentVector )
289
- where T : Differentiable , R : Differentiable {
288
+ ) -> ( value: R , pullback: ( R . TangentVector ) -> T . TangentVector ) {
290
289
return Builtin . autodiffApply_vjp ( f, x)
291
290
}
292
291
293
292
@inlinable
294
293
public func valueWithPullback< T, U, R> (
295
294
at x: T , _ y: U , in f: @differentiable ( T , U ) -> R
296
295
) -> ( value: R ,
297
- pullback: ( R . TangentVector ) -> ( T . TangentVector , U . TangentVector ) )
298
- where T : Differentiable , U : Differentiable , R : Differentiable {
296
+ pullback: ( R . TangentVector ) -> ( T . TangentVector , U . TangentVector ) ) {
299
297
return Builtin . autodiffApply_vjp_arity2 ( f, x, y)
300
298
}
301
299
@@ -304,9 +302,7 @@ public func valueWithPullback<T, U, V, R>(
304
302
at x: T , _ y: U , _ z: V , in f: @differentiable ( T , U , V ) -> R
305
303
) -> ( value: R ,
306
304
pullback: ( R . TangentVector )
307
- -> ( T . TangentVector , U . TangentVector , V . TangentVector ) )
308
- where T : Differentiable , U : Differentiable , V : Differentiable ,
309
- R : Differentiable {
305
+ -> ( T . TangentVector , U . TangentVector , V . TangentVector ) ) {
310
306
return Builtin . autodiffApply_vjp_arity3 ( f, x, y, z)
311
307
}
312
308
@@ -315,26 +311,22 @@ public func valueWithPullback<T, U, V, R>(
315
311
@inlinable
316
312
public func pullback< T, R> (
317
313
at x: T , in f: @differentiable ( T ) -> R
318
- ) -> ( R . TangentVector ) -> T . TangentVector
319
- where T : Differentiable , R : Differentiable {
314
+ ) -> ( R . TangentVector ) -> T . TangentVector {
320
315
return Builtin . autodiffApply_vjp ( f, x) . 1
321
316
}
322
317
323
318
@inlinable
324
319
public func pullback< T, U, R> (
325
320
at x: T , _ y: U , in f: @differentiable ( T , U ) -> R
326
- ) -> ( R . TangentVector ) -> ( T . TangentVector , U . TangentVector )
327
- where T : Differentiable , U : Differentiable , R : Differentiable {
321
+ ) -> ( R . TangentVector ) -> ( T . TangentVector , U . TangentVector ) {
328
322
return Builtin . autodiffApply_vjp_arity2 ( f, x, y) . 1
329
323
}
330
324
331
325
@inlinable
332
326
public func pullback< T, U, V, R> (
333
327
at x: T , _ y: U , _ z: V , in f: @differentiable ( T , U , V ) -> R
334
328
) -> ( R . TangentVector )
335
- -> ( T . TangentVector , U . TangentVector , V . TangentVector )
336
- where T : Differentiable , U : Differentiable , V : Differentiable ,
337
- R : Differentiable {
329
+ -> ( T . TangentVector , U . TangentVector , V . TangentVector ) {
338
330
return Builtin . autodiffApply_vjp_arity3 ( f, x, y, z) . 1
339
331
}
340
332
@@ -344,8 +336,7 @@ public func pullback<T, U, V, R>(
344
336
public func valueWithGradient< T, R> (
345
337
at x: T , in f: @differentiable ( T ) -> R
346
338
) -> ( value: R , gradient: T . TangentVector )
347
- where T : Differentiable , R : FloatingPoint & Differentiable ,
348
- R. TangentVector == R {
339
+ where R : FloatingPoint , R. TangentVector == R {
349
340
let ( y, pullback) = valueWithPullback ( at: x, in: f)
350
341
return ( y, pullback ( R ( 1 ) ) )
351
342
}
@@ -354,8 +345,7 @@ public func valueWithGradient<T, R>(
354
345
public func valueWithGradient< T, U, R> (
355
346
at x: T , _ y: U , in f: @differentiable ( T , U ) -> R
356
347
) -> ( value: R , gradient: ( T . TangentVector , U . TangentVector ) )
357
- where T : Differentiable , U : Differentiable ,
358
- R : FloatingPoint & Differentiable , R. TangentVector == R {
348
+ where R : FloatingPoint , R. TangentVector == R {
359
349
let ( y, pullback) = valueWithPullback ( at: x, y, in: f)
360
350
return ( y, pullback ( R ( 1 ) ) )
361
351
}
@@ -365,8 +355,7 @@ public func valueWithGradient<T, U, V, R>(
365
355
at x: T , _ y: U , _ z: V , in f: @differentiable ( T , U , V ) -> R
366
356
) -> ( value: R ,
367
357
gradient: ( T . TangentVector , U . TangentVector , V . TangentVector ) )
368
- where T : Differentiable , U : Differentiable , V : Differentiable ,
369
- R : FloatingPoint & Differentiable , R. TangentVector == R {
358
+ where R : FloatingPoint , R. TangentVector == R {
370
359
let ( y, pullback) = valueWithPullback ( at: x, y, z, in: f)
371
360
return ( y, pullback ( R ( 1 ) ) )
372
361
}
@@ -377,18 +366,15 @@ public func valueWithGradient<T, U, V, R>(
377
366
public func valueWithGradient< T, R> (
378
367
of f: @escaping @differentiable ( T ) -> R
379
368
) -> ( T ) -> ( value: R , gradient: T . TangentVector )
380
- where T : Differentiable , R : FloatingPoint & Differentiable ,
381
- R. TangentVector == R {
369
+ where R : FloatingPoint , R. TangentVector == R {
382
370
return { x in valueWithGradient ( at: x, in: f) }
383
371
}
384
372
385
373
@inlinable
386
374
public func valueWithGradient< T, U, R> (
387
375
of f: @escaping @differentiable ( T , U ) -> R
388
376
) -> ( T , U ) -> ( value: R , gradient: ( T . TangentVector , U . TangentVector ) )
389
- where T : Differentiable , U : Differentiable ,
390
- R : FloatingPoint & Differentiable ,
391
- R. TangentVector == R {
377
+ where R : FloatingPoint , R. TangentVector == R {
392
378
return { x, y in valueWithGradient ( at: x, y, in: f) }
393
379
}
394
380
@@ -398,9 +384,7 @@ public func valueWithGradient<T, U, V, R>(
398
384
) -> ( T , U , V )
399
385
-> ( value: R ,
400
386
gradient: ( T . TangentVector , U . TangentVector , V . TangentVector ) )
401
- where T : Differentiable , U : Differentiable , V : Differentiable ,
402
- R : FloatingPoint & Differentiable ,
403
- R. TangentVector == R {
387
+ where R : FloatingPoint , R. TangentVector == R {
404
388
return { x, y, z in valueWithGradient ( at: x, y, z, in: f) }
405
389
}
406
390
@@ -410,26 +394,23 @@ public func valueWithGradient<T, U, V, R>(
410
394
public func gradient< T, R> (
411
395
at x: T , in f: @differentiable ( T ) -> R
412
396
) -> T . TangentVector
413
- where T : Differentiable , R : FloatingPoint & Differentiable ,
414
- R. TangentVector == R {
397
+ where R : FloatingPoint , R. TangentVector == R {
415
398
return pullback ( at: x, in: f) ( R ( 1 ) )
416
399
}
417
400
418
401
@inlinable
419
402
public func gradient< T, U, R> (
420
403
at x: T , _ y: U , in f: @differentiable ( T , U ) -> R
421
404
) -> ( T . TangentVector , U . TangentVector )
422
- where T : Differentiable , U : Differentiable ,
423
- R : FloatingPoint & Differentiable , R. TangentVector == R {
405
+ where R : FloatingPoint , R. TangentVector == R {
424
406
return pullback ( at: x, y, in: f) ( R ( 1 ) )
425
407
}
426
408
427
409
@inlinable
428
410
public func gradient< T, U, V, R> (
429
411
at x: T , _ y: U , _ z: V , in f: @differentiable ( T , U , V ) -> R
430
412
) -> ( T . TangentVector , U . TangentVector , V . TangentVector )
431
- where T : Differentiable , U : Differentiable , V : Differentiable ,
432
- R : FloatingPoint & Differentiable , R. TangentVector == R {
413
+ where R : FloatingPoint , R. TangentVector == R {
433
414
return pullback ( at: x, y, z, in: f) ( R ( 1 ) )
434
415
}
435
416
@@ -439,28 +420,23 @@ public func gradient<T, U, V, R>(
439
420
public func gradient< T, R> (
440
421
of f: @escaping @differentiable ( T ) -> R
441
422
) -> ( T ) -> T . TangentVector
442
- where T : Differentiable , R : FloatingPoint & Differentiable ,
443
- R. TangentVector == R {
423
+ where R : FloatingPoint , R. TangentVector == R {
444
424
return { x in gradient ( at: x, in: f) }
445
425
}
446
426
447
427
@inlinable
448
428
public func gradient< T, U, R> (
449
429
of f: @escaping @differentiable ( T , U ) -> R
450
430
) -> ( T , U ) -> ( T . TangentVector , U . TangentVector )
451
- where T : Differentiable , U : Differentiable ,
452
- R : FloatingPoint & Differentiable ,
453
- R. TangentVector == R {
431
+ where R : FloatingPoint , R. TangentVector == R {
454
432
return { x, y in gradient ( at: x, y, in: f) }
455
433
}
456
434
457
435
@inlinable
458
436
public func gradient< T, U, V, R> (
459
437
of f: @escaping @differentiable ( T , U , V ) -> R
460
438
) -> ( T , U , V ) -> ( T . TangentVector , U . TangentVector , V . TangentVector )
461
- where T : Differentiable , U : Differentiable , V : Differentiable ,
462
- R : FloatingPoint & Differentiable ,
463
- R. TangentVector == R {
439
+ where R : FloatingPoint , R. TangentVector == R {
464
440
return { x, y, z in gradient ( at: x, y, z, in: f) }
465
441
}
466
442
0 commit comments