diff --git a/src/ufixed.jl b/src/ufixed.jl index 74c2f60e..b70c85b2 100644 --- a/src/ufixed.jl +++ b/src/ufixed.jl @@ -116,7 +116,12 @@ isinf(x::UFixed) = false bswap{f}(x::UFixed{UInt8,f}) = x bswap(x::UFixed) = typeof(x)(bswap(reinterpret(x)),0) -for f in (:div, :fld, :rem, :mod, :mod1, :rem1, :fld1, :min, :max) +for f in (:div, :fld, :fld1) + @eval begin + $f{T<:UFixed}(x::T, y::T) = $f(reinterpret(x),reinterpret(y)) + end +end +for f in (:rem, :mod, :mod1, :rem1, :min, :max) @eval begin $f{T<:UFixed}(x::T, y::T) = T($f(reinterpret(x),reinterpret(y)),0) end diff --git a/test/ufixed.jl b/test/ufixed.jl index 5d7ca14e..edde8c7d 100644 --- a/test/ufixed.jl +++ b/test/ufixed.jl @@ -133,6 +133,18 @@ for T in (FixedPointNumbers.UF..., UF2...) testtrunc(eps(T)) end +@test div(0x10uf8, 0x02uf8) == fld(0x10uf8, 0x02uf8) == 8 +@test div(0x0fuf8, 0x02uf8) == fld(0x0fuf8, 0x02uf8) == 7 +@test Base.fld1(0x10uf8, 0x02uf8) == 8 +@test Base.fld1(0x0fuf8, 0x02uf8) == 8 +@test mod(0x10uf8, 0x02uf8) == rem(0x10uf8, 0x02uf8) == 0 +@test mod(0x0fuf8, 0x02uf8) == rem(0x0fuf8, 0x02uf8) == 0x01uf8 +@test mod1(0x10uf8, 0x02uf8) == 0x02uf8 +@test mod1(0x0fuf8, 0x02uf8) == 0x01uf8 + +r = 1uf8:1uf8:48uf8 +@test length(r) == 48 + # Show x = 0xaauf8 iob = IOBuffer()