File tree Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -1015,7 +1015,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-08-18-a: b10b1fce14385faa6d44f6b933e95
1015
1015
refs/heads/rdar-43033749-fix-batch-mode-no-diags-swift-5.0-branch: a14e64eaad30de89f0f5f0b2a782eed7ecdcb255
1016
1016
refs/heads/revert-19006-error-bridging-integer-type: 8a9065a3696535305ea53fe9b71f91cbe6702019
1017
1017
refs/heads/revert-19050-revert-19006-error-bridging-integer-type: ecf752d54b05dd0a20f510f0bfa54a3fec3bcaca
1018
- refs/heads/rxwei-patch-1: aa6d64c6cca590d93805d8253b5ab9963e91d84f
1018
+ refs/heads/rxwei-patch-1: 1782d725aba57c23f44249844c560a53ed27c21b
1019
1019
refs/heads/shahmishal-patch-1: e58ec0f7488258d42bef51bc3e6d7b3dc74d7b2a
1020
1020
refs/heads/typelist-existential: 4046359efd541fb5c72d69a92eefc0a784df8f5e
1021
1021
refs/tags/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-08-20-a: 4319ba09e4fb8650ee86061075c74a016b6baab9
Original file line number Diff line number Diff line change @@ -140,12 +140,24 @@ public extension Differentiable where TangentVector == Self {
140
140
}
141
141
142
142
public extension Differentiable {
143
- /// Identity function that stops gradients from propagating.
143
+ /// Identity function that stops derivatives from propagating.
144
+ @inlinable
144
145
@inline ( __always)
145
146
@_semantics ( " autodiff.nonvarying " )
146
147
func withoutDerivative( ) -> Self { return self }
147
148
}
148
149
150
+ /// Applies the given closure `body` to `x`. When used in a context where `x` is
151
+ /// being differentiated with respect to, this function will not produce any
152
+ /// derivative at `x`.
153
+ // FIXME: Support throws-rethrows.
154
+ @inlinable
155
+ @inline ( __always)
156
+ @_semantics ( " autodiff.nonvarying " )
157
+ public func withoutDerivative< T, R> ( at x: T , in body: ( T ) -> R ) -> R {
158
+ body ( x)
159
+ }
160
+
149
161
//===----------------------------------------------------------------------===//
150
162
// Functional utilities
151
163
//===----------------------------------------------------------------------===//
Original file line number Diff line number Diff line change @@ -87,4 +87,12 @@ CustomDerivativesTests.test("ModifyGradientOfSum") {
87
87
} )
88
88
}
89
89
90
+ CustomDerivativesTests . test ( " WithoutDerivative " ) {
91
+ expectEqual ( 0 , gradient ( at: Float ( 4 ) ) { x in
92
+ withoutDerivative ( at: x) { x in
93
+ sinf ( x) + cosf( x)
94
+ }
95
+ } )
96
+ }
97
+
90
98
runAllTests ( )
You can’t perform that action at this time.
0 commit comments