blob: 5eb6a8a25c1da1dc421b69b8c0b9f8918834efe4 [file] [log] [blame]
class OtherModuleSuper {
@differentiable
func f(_ x: Float) -> Float {
return 2 * x
}
@derivative(of: f)
final func jvpf(_ x: Float) -> (value: Float, differential: (Float) -> Float) {
return (f(x), { v in 2 * v })
}
@derivative(of: f)
final func vjpf(_ x: Float) -> (value: Float, pullback: (Float) -> Float) {
return (f(x), { v in 2 * v })
}
}
class OtherModuleSubOverride : OtherModuleSuper {
@differentiable
override func f(_ x: Float) -> Float {
return 3 * x
}
}
class OtherModuleSubOverrideCustomDerivatives : OtherModuleSuper {
@differentiable
override func f(_ x: Float) -> Float {
return 3 * x
}
@derivative(of: f)
final func jvpf2(_ x: Float) -> (value: Float, differential: (Float) -> Float) {
return (f(x), { v in 3 * v })
}
@derivative(of: f)
final func vjpf2(_ x: Float) -> (value: Float, pullback: (Float) -> Float) {
return (f(x), { v in 3 * v })
}
}