Current section
Files
Jump to
Current section
Files
examples/ct_ecto/deps/postgrex/lib/postgrex/extensions/float8.ex
defmodule Postgrex.Extensions.Float8 do
@moduledoc false
import Postgrex.BinaryUtils, warn: false
use Postgrex.BinaryExtension, send: "float8send"
def encode(_) do
quote location: :keep do
n when is_number(n) ->
<<8::int32(), n::float64()>>
:NaN ->
<<8::int32(), 0::1, 2047::11, 1::1, 0::51>>
:inf ->
<<8::int32(), 0::1, 2047::11, 0::52>>
:"-inf" ->
<<8::int32(), 1::1, 2047::11, 0::52>>
other ->
raise DBConnection.EncodeError, Postgrex.Utils.encode_msg(other, "a float")
end
end
def decode(_) do
quote location: :keep do
<<8::int32(), 0::1, 2047::11, 0::52>> -> :inf
<<8::int32(), 1::1, 2047::11, 0::52>> -> :"-inf"
<<8::int32(), _::1, 2047::11, _::52>> -> :NaN
<<8::int32(), float::float64()>> -> float
end
end
end