@@ -200,6 +200,7 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
200200
201201 # Predicates #
202202 # ------------#
203+ @testset " Predicates" begin
203204
204205 @test ForwardDiff. isconstant (zero (FDNUM))
205206 @test ForwardDiff. isconstant (one (FDNUM))
@@ -212,10 +213,13 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
212213 @test isequal (FDNUM, Dual {TestTag()} (PRIMAL, PARTIALS2)) == (N == 0 )
213214 @test isequal (PRIMAL, PRIMAL2) == isequal (FDNUM, FDNUM2)
214215
215- @test isequal (NESTED_FDNUM, Dual {TestTag()} (Dual {TestTag()} (PRIMAL, M_PARTIALS2), NESTED_PARTIALS2)) == (N == M == 0 )
216- # @test isequal(PRIMAL, PRIMAL2) == isequal(NESTED_FDNUM, NESTED_FDNUM2)
216+ # Recall that FDNUM = Dual{TestTag()}(PRIMAL, PARTIALS) has N partials,
217+ # and FDNUM2 has everything with a 2, and all random numbers nonzero.
218+ # M is the length of M_PARTIALS, which affects:
219+ # NESTED_FDNUM = Dual{TestTag()}(Dual{TestTag()}(PRIMAL, M_PARTIALS), NESTED_PARTIALS)
217220
218- @info " Predicates" N M V PRIMAL PRIMAL2 NESTED_FDNUM NESTED_FDNUM2
221+ @test isequal (NESTED_FDNUM, Dual {TestTag()} (Dual {TestTag()} (PRIMAL, M_PARTIALS2), NESTED_PARTIALS2)) == (N == M == 0 )
222+ @test isequal (NESTED_FDNUM, NESTED_FDNUM2) == isequal (PRIMAL, PRIMAL2) && (N == M == 0 )
219223
220224 @test (FDNUM == Dual {TestTag()} (PRIMAL, PARTIALS2)) == (N == 0 )
221225 @test (PRIMAL == PRIMAL2) == (FDNUM == FDNUM2)
@@ -300,6 +304,7 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
300304 @test isodd (Dual {TestTag()} (Dual {TestTag()} (1 )))
301305 @test ! (isodd (Dual {TestTag()} (Dual {TestTag()} (2 ))))
302306
307+ end
303308 # #######################
304309 # Promotion/Conversion #
305310 # #######################
@@ -373,8 +378,11 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
373378
374379 # Division #
375380 # ----------#
381+ @testset " Division" begin
376382
377383 if M > 0 && N > 0
384+ # Recall that FDNUM = Dual{TestTag()}(PRIMAL, PARTIALS) has N partials,
385+ # all random numbers nonzero, and FDNUM2 another draw. M only affects NESTED_FDNUM.
378386 @test Dual {1} (FDNUM) / Dual {1} (PRIMAL) === Dual {1} (FDNUM / PRIMAL)
379387 @test Dual {1} (PRIMAL) / Dual {1} (FDNUM) === Dual {1} (PRIMAL / FDNUM)
380388 @test_broken Dual {1} (FDNUM) / FDNUM2 === Dual {1} (FDNUM / FDNUM2)
@@ -391,8 +399,10 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
391399 @test dual_isapprox (NESTED_FDNUM / PRIMAL, Dual {TestTag()} (value (NESTED_FDNUM) / PRIMAL, partials (NESTED_FDNUM) / PRIMAL))
392400 @test dual_isapprox (PRIMAL / NESTED_FDNUM, Dual {TestTag()} (PRIMAL / value (NESTED_FDNUM), (- (PRIMAL) / value (NESTED_FDNUM)^ 2 ) * partials (NESTED_FDNUM)))
393401
402+ end
394403 # Exponentiation #
395404 # ----------------#
405+ @testset " Exponentiation" begin
396406
397407 @test dual_isapprox (FDNUM^ FDNUM2, exp (FDNUM2 * log (FDNUM)))
398408 @test dual_isapprox (FDNUM^ PRIMAL, exp (PRIMAL * log (FDNUM)))
@@ -404,6 +414,7 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
404414
405415 @test partials (NaNMath. pow (Dual {TestTag()} (- 2.0 , 1.0 ), Dual {TestTag()} (2.0 , 0.0 )), 1 ) == - 4.0
406416
417+ end
407418 # ##################################
408419 # General Mathematical Operations #
409420 # ##################################
@@ -459,6 +470,7 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
459470
460471 # Special Cases #
461472 # ---------------#
473+ @testset " Special Cases" begin
462474
463475 @test_broken dual_isapprox (hypot (FDNUM, FDNUM2, FDNUM), sqrt (2 * (FDNUM^ 2 ) + FDNUM2^ 2 ))
464476 @test_broken dual_isapprox (hypot (FDNUM, FDNUM2, FDNUM3), sqrt (FDNUM^ 2 + FDNUM2^ 2 + FDNUM3^ 2 ))
@@ -483,8 +495,14 @@ ForwardDiff.:≺(::Int, ::Type{TestTag()}) = false
483495 @test dual_isapprox (f (FDNUM, PRIMAL2, PRIMAL3), Dual {TestTag()} (f (PRIMAL, PRIMAL2, PRIMAL3), PRIMAL2* PARTIALS))
484496 @test dual_isapprox (f (PRIMAL, PRIMAL2, FDNUM3), Dual {TestTag()} (f (PRIMAL, PRIMAL2, PRIMAL3), PARTIALS3))
485497 end
498+
499+ end # testset
486500end
487501
502+ # ############
503+ # bug fixes #
504+ # ############
505+
488506@testset " Exponentiation of zero" begin
489507 x0 = 0.0
490508 x1 = Dual {:t1} (x0, 1.0 )
0 commit comments