Skip to content

Commit bb3dee7

Browse files
committed
Merge pull request #30 from JeffBezanson/teh/unary
Add unary operator support (-, ~)
2 parents 00a9989 + fc72cc5 commit bb3dee7

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

src/FixedPointNumbers.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module FixedPointNumbers
44

55
using Compat
66

7-
import Base: ==, <, <=, -, +, *, /,
7+
import Base: ==, <, <=, -, +, *, /, ~,
88
convert, promote_rule, show, showcompact, isinteger, abs, decompose,
99
isnan, isinf, isfinite,
1010
zero, one, typemin, typemax, realmin, realmax, eps, sizeof, reinterpret,

src/ufixed.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ sizeof{T<:Ufixed}(::Type{T}) = sizeof(rawtype(T))
8282
abs(x::Ufixed) = x
8383

8484
# Arithmetic
85+
(-){T<:Ufixed}(x::T) = T(-reinterpret(x), 0)
86+
(~){T<:Ufixed}(x::T) = T(~reinterpret(x), 0)
87+
8588
+{T,f}(x::UfixedBase{T,f}, y::UfixedBase{T,f}) = convert(Float32, x)+convert(Float32, y) # UfixedBase{T,f}(convert(T, reinterpret(x)+reinterpret(y)),0)
8689
-{T,f}(x::UfixedBase{T,f}, y::UfixedBase{T,f}) = convert(Float32, x)-convert(Float32, y) # UfixedBase{T,f}(convert(T, reinterpret(x)-reinterpret(y)),0)
8790
*{T,f}(x::UfixedBase{T,f}, y::UfixedBase{T,f}) = convert(Float32, x)*convert(Float32, y)

test/ufixed.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ for T in FixedPointNumbers.UF
5959
end
6060
@test convert(Rational, convert(Ufixed8, 0.5)) == 0x80//0xff
6161

62+
x = Ufixed8(0b01010001, 0)
63+
@test ~x == Ufixed8(0b10101110, 0)
64+
@test -x == 0xafuf8
65+
6266
for T in FixedPointNumbers.UF
6367
x = T(0x10,0)
6468
y = T(0x25,0)

0 commit comments

Comments
 (0)