@@ -15,6 +15,8 @@ samerng() = MersenneTwister(1)
1515# exponent by one
1616intrand (T) = T == Int ? rand (2 : 10 ) : rand (T)
1717
18+ dualapprox (A, B) = value (A) ≈ value (B) && partials (A) ≈ partials (B)
19+
1820# fix testing issue with Base.hypot(::Int...) undefined in 0.4
1921if v " 0.4" <= VERSION < v " 0.5"
2022 Base. hypot (x:: Int , y:: Int ) = Base. hypot (Float64 (x), Float64 (y))
@@ -387,20 +389,20 @@ for N in (0,3), M in (0,4), T in (Int, Float32)
387389
388390 @test partials (NaNMath. pow (Dual (- 2.0 , 1.0 ), Dual (2.0 , 0.0 )), 1 ) == - 4.0
389391
390- @test fma (FDNUM, FDNUM2, FDNUM3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
392+ @test dualapprox ( fma (FDNUM, FDNUM2, FDNUM3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
391393 PRIMAL* PARTIALS2 + PRIMAL2* PARTIALS +
392- PARTIALS3)
393- @test fma (FDNUM, FDNUM2, PRIMAL3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
394- PRIMAL* PARTIALS2 + PRIMAL2* PARTIALS)
395- @test fma (PRIMAL, FDNUM2, FDNUM3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
396- PRIMAL* PARTIALS2 + PARTIALS3)
397- @test fma (PRIMAL, FDNUM2, PRIMAL3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
398- PRIMAL* PARTIALS2)
399- @test fma (FDNUM, PRIMAL2, FDNUM3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
400- PRIMAL2* PARTIALS + PARTIALS3)
401- @test fma (FDNUM, PRIMAL2, PRIMAL3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
402- PRIMAL2* PARTIALS)
403- @test fma (PRIMAL, PRIMAL2, FDNUM3) == Dual (fma (PRIMAL, PRIMAL2, PRIMAL3), PARTIALS3)
394+ PARTIALS3))
395+ @test dualapprox ( fma (FDNUM, FDNUM2, PRIMAL3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
396+ PRIMAL* PARTIALS2 + PRIMAL2* PARTIALS))
397+ @test dualapprox ( fma (PRIMAL, FDNUM2, FDNUM3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
398+ PRIMAL* PARTIALS2 + PARTIALS3))
399+ @test dualapprox ( fma (PRIMAL, FDNUM2, PRIMAL3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
400+ PRIMAL* PARTIALS2))
401+ @test dualapprox ( fma (FDNUM, PRIMAL2, FDNUM3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
402+ PRIMAL2* PARTIALS + PARTIALS3))
403+ @test dualapprox ( fma (FDNUM, PRIMAL2, PRIMAL3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3),
404+ PRIMAL2* PARTIALS))
405+ @test dualapprox ( fma (PRIMAL, PRIMAL2, FDNUM3), Dual (fma (PRIMAL, PRIMAL2, PRIMAL3), PARTIALS3) )
404406
405407 # Unary Functions #
406408 # -----------------#
0 commit comments