Skip to content

Commit 86a3256

Browse files
authored
Merge pull request #642 from lukas-weber/tangent-norm
tangent_arithmetic: add `norm` for `NoTangent`, `ZeroTangent` and `NotImplemented`
2 parents cb1aa6b + e63f62b commit 86a3256

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

src/tangent_types/abstract_zero.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ Base.last(x::AbstractZero) = x
2323
Base.Broadcast.broadcastable(x::AbstractZero) = Ref(x)
2424
Base.Broadcast.broadcasted(::Type{T}) where {T<:AbstractZero} = T()
2525

26+
LinearAlgebra.norm(::AbstractZero) = 0
27+
2628
# Linear operators
2729
Base.adjoint(z::AbstractZero) = z
2830
Base.transpose(z::AbstractZero) = z

test/tangent_types/abstract_zero.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@
120120
@test dot(ZeroTangent(), dne) == ZeroTangent()
121121
@test dot(dne, ZeroTangent()) == ZeroTangent()
122122

123+
@test norm(ZeroTangent()) == 0
124+
@test norm(ZeroTangent(), 0.4) == 0
125+
123126
for x in dne
124127
@test x === dne
125128
end

test/tangent_types/tangent.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,11 +329,15 @@ end
329329
@test c * NoTangent() == NoTangent()
330330
@test dot(NoTangent(), c) == NoTangent()
331331
@test dot(c, NoTangent()) == NoTangent()
332+
@test norm(Tangent{Foo}(; y=c.y, x=NoTangent())) == c.y
333+
@test norm(NoTangent(), Inf) == 0
332334

333335
@test ZeroTangent() * c == ZeroTangent()
334336
@test c * ZeroTangent() == ZeroTangent()
335337
@test dot(ZeroTangent(), c) == ZeroTangent()
336338
@test dot(c, ZeroTangent()) == ZeroTangent()
339+
@test norm(ZeroTangent()) == 0
340+
@test norm(ZeroTangent(), 0.4) == 0
337341

338342
@test true * c === c
339343
@test c * true === c

0 commit comments

Comments
 (0)