|
6 | 6 |
|
7 | 7 | # `zero`
|
8 | 8 |
|
9 |
| -function frule((_, Δ1), ::typeof(zero), x) |
10 |
| - var"∂f/∂x" = ZeroTangent() |
11 |
| - return (zero(x), Δ1 * var"∂f/∂x") |
| 9 | +function frule((_, _), ::typeof(zero), x) |
| 10 | + return (zero(x), ZeroTangent()) |
12 | 11 | end
|
13 | 12 |
|
14 | 13 | function rrule(::typeof(zero), x)
|
15 |
| - Ω = zero(x) |
16 |
| - proj_x = ProjectTo(x) |
17 |
| - var"∂f/∂x" = ZeroTangent() |
18 |
| - pullback(Δ1) = (NoTangent(), proj_x(conj(var"∂f/∂x") * Δ1)) |
19 |
| - return (Ω, pullback) |
| 14 | + zero_pullback(_) = (NoTangent(), ZeroTangent()) |
| 15 | + return (zero(x), zero_pullback) |
20 | 16 | end
|
21 | 17 |
|
22 | 18 | # `one`
|
23 | 19 |
|
24 |
| -function frule((_, Δ1), ::typeof(one), x) |
25 |
| - var"∂f/∂x" = ZeroTangent() |
26 |
| - return (one(x), Δ1 * var"∂f/∂x") |
| 20 | +function frule((_, _), ::typeof(one), x) |
| 21 | + return (one(x), ZeroTangent()) |
27 | 22 | end
|
28 | 23 |
|
29 | 24 | function rrule(::typeof(one), x)
|
30 |
| - Ω = one(x) |
31 |
| - proj_x = ProjectTo(x) |
32 |
| - var"∂f/∂x" = ZeroTangent() |
33 |
| - pullback(Δ1) = (NoTangent(), proj_x(conj(var"∂f/∂x") * Δ1)) |
34 |
| - return (Ω, pullback) |
| 25 | + one_pullback(_) = (NoTangent(), ZeroTangent()) |
| 26 | + return (one(x), one_pullback) |
35 | 27 | end
|
36 | 28 |
|
37 | 29 | # `adjoint`
|
|
0 commit comments