Packages
protox
1.5.1
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-dev
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
retired
1.7.3
1.7.2
1.7.1
1.7.0
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.0
0.7.1
0.7.0
A fast, easy to use and 100% conformant Elixir library for Google Protocol Buffers (aka protobuf)
Current section
Files
Jump to
Current section
Files
lib/protox/float.ex
defmodule Protox.Float do
@moduledoc false
defmacro __using__(_) do
quote do
# IEEE 754-1985
#
# * 32 bits
# [0 - 22] -> fraction ( 23 bits )
# [23 - 30] -> exponent ( 8 bits )
# [31 - 31] -> sign ( 1 bit )
#
# * 64 bits
# [0 - 51] -> fraction ( 52 bits )
# [52 - 62] -> exponent ( 11 bits )
# [63 - 63] -> sign ( 1 bit )
#
# * Positive and negative infinity
# sign -> 0 for positive infinity, 1 for negative infinity.
# exponent -> all bits set to 1
# fraction -> all bits set to 0
#
# * NaN
# sign -> 0 or 1
# exponent -> all bits set to 1
# fraction -> anything except all bits set to 0
#
# * Protobuf uses little-endian
@positive_infinity_64 <<0, 0, 0, 0, 0, 0, 0xF0, 0x7F>>
@negative_infinity_64 <<0, 0, 0, 0, 0, 0, 0xF0, 0xFF>>
@nan_64 <<1::48, 0b1111::4, 1::4, 1::1, 0b1111111::7>>
@positive_infinity_32 <<0, 0, 0x80, 0x7F>>
@negative_infinity_32 <<0, 0, 0x80, 0xFF>>
@nan_32 <<1::16, 1::1, 1::7, 1::1, 0b1111111::7>>
end
end
end