Skip to content

Commit 23cbf38

Browse files
authored
Dual raised to power UInt64(0) gives NaN dualpart (#82)
* test and fix for nan epsilon of dual^UInt64(0) * "0.6.3" -> "0.6.4"
1 parent 6127786 commit 23cbf38

File tree

3 files changed

+5
-1
lines changed

3 files changed

+5
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "DualNumbers"
22
uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74"
3-
version = "0.6.3"
3+
version = "0.6.4"
44

55
[deps]
66
Calculus = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9"

src/dual.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ end
261261
Base.mod(z::Dual, n::Number) = Dual(mod(value(z), n), epsilon(z))
262262

263263
# these two definitions are needed to fix ambiguity warnings
264+
Base.:^(z::Dual, n::Unsigned) = z^Signed(n)
264265
Base.:^(z::Dual, n::Integer) = Dual(value(z)^n, epsilon(z)*n*value(z)^(n-1))
265266
Base.:^(z::Dual, n::Rational) = Dual(value(z)^n, epsilon(z)*n*value(z)^(n-1))
266267

test/automatic_differentiation_test.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ y = x^3.0
1515
@test value(y) 2.0^3
1616
@test epsilon(y) 3.0*2^2
1717

18+
y = Dual(2.0, 1)^UInt64(0)
19+
@test !isnan(epsilon(y))
20+
1821
y = sin(x)+exp(x)
1922
@test value(y) sin(2)+exp(2)
2023
@test epsilon(y) cos(2)+exp(2)

0 commit comments

Comments
 (0)