Skip to content

Commit f075e6d

Browse files
committed
Add bitstring for FixedPoint numbers
1 parent 7c90fb6 commit f075e6d

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

src/FixedPointNumbers.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module FixedPointNumbers
22

33
import Base: ==, <, <=, -, +, *, /, ~, isapprox,
4-
convert, promote_rule, show, isinteger, abs, decompose,
5-
isnan, isinf, isfinite,
4+
convert, promote_rule, show, bitstring, abs, decompose,
5+
isnan, isinf, isfinite, isinteger,
66
zero, oneunit, one, typemin, typemax, floatmin, floatmax, eps, reinterpret,
77
float, trunc, round, floor, ceil, bswap,
88
div, fld, rem, mod, mod1, fld1, min, max, minmax,
@@ -171,6 +171,8 @@ function minmax(x::X, y::X) where {X <: FixedPoint}
171171
X(a,0), X(b,0)
172172
end
173173

174+
bitstring(x::FixedPoint) = bitstring(x.i)
175+
174176
bswap(x::X) where {X <: FixedPoint} = sizeof(X) == 1 ? x : X(bswap(x.i), 0)
175177

176178
for f in (:zero, :oneunit, :one, :eps, :rawone, :rawtype, :floattype)

test/fixed.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,17 @@ end
5959
@test_throws DomainError zero(Fixed{Int16,17})
6060
end
6161

62-
@testset "reinterpret" begin
62+
@testset "reinterpret/bitstring" begin
6363
@test reinterpret(Q0f7, signed(0xa2)) === -0.734375Q0f7
6464
@test reinterpret(Q5f10, signed(0x00a2)) === 0.158203125Q5f10
6565

6666
@test reinterpret(reinterpret(Q0f7, signed(0xa2))) === signed(0xa2)
6767
@test reinterpret(reinterpret(Q5f10, signed(0x00a2))) === signed(0x00a2)
6868

6969
@test reinterpret(Int8, 0.5Q0f7) === signed(0x40)
70+
71+
@test bitstring(reinterpret(Q0f7, signed(0xa2))) === "10100010"
72+
@test bitstring(reinterpret(Q5f10, signed(0x00a2))) === "0000000010100010"
7073
end
7174

7275
@testset "masks" begin

test/normed.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ using FixedPointNumbers: bitwidth
88
@test_throws DomainError zero(Normed{UInt16,17})
99
end
1010

11-
@testset "reinterpret" begin
11+
@testset "reinterpret/bitstring" begin
1212
@test reinterpret(N0f8, 0xa2).i === 0xa2
1313
@test reinterpret(N6f10, 0x1fa2).i === 0x1fa2
1414
@test reinterpret(N4f12, 0x1fa2).i === 0x1fa2
@@ -23,6 +23,9 @@ end
2323

2424
@test reinterpret(UInt8, 1N0f8) === 0xff
2525

26+
@test bitstring(reinterpret(N0f8, 0xa2)) === "10100010"
27+
@test bitstring(reinterpret(N6f10, 0x00a2)) === "0000000010100010"
28+
2629
@test 0.635N0f8 == N0f8(0.635)
2730
@test 0.635N6f10 == N6f10(0.635)
2831
@test 0.635N4f12 == N4f12(0.635)

0 commit comments

Comments
 (0)