-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Description
Originally posted by @milankl in observingClouds/xbitinfo#29 (comment)
In Ryan's numcodecs.bitround zarr-developers/numcodecs#299 it seems that a simple escape is used for keepbits=23 (because no rounding should take place).
def encode(self, buf):
if self.keepbits == 23:
return bufI can easily add that for BitInformation.jl too. Because at the moment we have
julia> bitstring.(A,:split)
10-element Vector{String}:
"0 01111101 00100011110101011001100"
"1 01111101 11111100000100010010110"
"0 01111111 00100110111101011010101"
"0 01111100 00000101000001101001010"
"1 01111111 10100000111000010100000"
"0 01111100 01011110111011000110101"
"0 01111010 01100000001000101011100"
"1 01111110 00101101011101001110111"
"1 01111101 10000010000111001000111"
"1 01111101 11000011000111110011100"
julia> bitstring.(round(A,22),:split) # keepbits=22, all correct
10-element Vector{String}:
"0 01111101 00100011110101011001100" # no rounding
"1 01111101 11111100000100010010110" # no rounding
"0 01111111 00100110111101011010100" # round to zero=even (tie)
"0 01111100 00000101000001101001010" # no rounding
"1 01111111 10100000111000010100000" # no rounding
"0 01111100 01011110111011000110100" # round to zero=even (tie)
"0 01111010 01100000001000101011100" # no rounding
"1 01111110 00101101011101001111000" # round away from zero (with carry)
"1 01111101 10000010000111001001000" # round away from zero (with carry)
"1 01111101 11000011000111110011100" # no rounding
julia> bitstring.(round(A,23),:split) # keepbits=23
10-element Vector{String}:
"0 01111101 00100011110101011001100" # no rounding, correct
"1 01111101 11111100000100010010110" # no rounding, correct
"0 01111111 00100110111101011010110" # round away from zero, incorrect
"0 01111100 00000101000001101001010" # no rounding, correct
"1 01111111 10100000111000010100000" # no rounding, correct
"0 01111100 01011110111011000110110" # round away from zero, incorrect
"0 01111010 01100000001000101011100" # no rounding, correct
"1 01111110 00101101011101001111000" # round away from zero, incorrect
"1 01111101 10000010000111001001000" # round away from zero, incorrect
"1 01111101 11000011000111110011100" # no rounding, correctMeaning for the edge case of keepbits=23 there's still some rounding away from zero possible, which obviously shouldn't happen. I'll see in a patch release how to best deal with that
Metadata
Metadata
Assignees
Labels
No labels