Bits de truncamento de data.table de R?

Então eu sou uma enormedata.table fan in R. Eu uso quase o tempo todo, mas me deparei com uma situação em que não funcionará para mim. Eu tenho um pacote (interno da minha empresa) que usa R'sdouble para armazenar o valor de um número inteiro de 64 bits não assinado cuja sequência de bits corresponde a alguma codificação sofisticada. Este pacote funciona muito bem em todos os lugares, exceto data.table. Descobri que, se agregar em uma coluna desses dados, perco um grande número de meus valores exclusivos. Meu único palpite aqui é quedata.table está truncando bits em algum tipo de estranhodouble otimização.

Alguém pode confirmar que esse é o caso? Isso é simplesmente um bug?

Abaixo, veja uma reprodução do problema e uma comparação com o pacote que atualmente devo usar, mas quero evitar com paixão (dplyr)

temp <- structure(list(obscure_math = c(6.95476896592629e-309, 6.95476863436446e-309, 
6.95476743245288e-309, 6.95476942182375e-309, 6.95477149408563e-309, 
6.95477132830476e-309, 6.95477132830476e-309, 6.95477149408562e-309, 
6.95477174275702e-309, 6.95476880014538e-309, 6.95476896592647e-309, 
6.95476896592647e-309, 6.95476900737172e-309, 6.95476900737172e-309, 
6.95476946326899e-309, 6.95476958760468e-309, 6.95476958760468e-309, 
6.95477020928318e-309, 6.95477124541406e-309, 6.95476859291965e-309, 
6.95476875870014e-309, 6.95476904881676e-309, 6.95476904881676e-309, 
6.95476904881676e-309, 6.95476909026199e-309, 6.95476909026199e-309, 
6.95476909026199e-309, 6.95476909026199e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.95477211576406e-309, 
6.95476880014538e-309, 6.95476880014538e-309, 6.95476880014538e-309, 
6.95476892448104e-309, 6.95476880014538e-309, 6.95476892448105e-309, 
6.9547689659263e-309, 6.95476913170719e-309, 6.95476933893334e-309
)), .Names = "obscure_math", class = c("data.table", "data.frame"), row.names = c(NA, 
-50L))

dt_collapsed <- temp[, .(count=.N), by=obscure_math]
nrow(dt_collapsed) == length(unique(temp$obscure_math))

setDF(temp)
dplyr_collapsed <- temp %>% group_by(obscure_math) %>% summarise(count=n())
nrow(dplyr_collapsed) == length(unique(temp$obscure_math))

questionAnswers(1)

yourAnswerToTheQuestion