Como salvar 10 ^ 19 em Julia sem um estouro


8

Estou tentando salvar o número 10 ^ 19 em uma variável em Julia.

Eu sei que está transbordando, mas achei que fazer algo parecido BigInt(10^19)ou Int128(10^19)resolveria o problema, mas isso não acontece.

Alguma ideia?

Ver comportamento de estouro para Julia

Respostas:


13

Como Julia faz a aritmética do Int64 por padrão, os 10 ^ 19 excedem como o Int64 padrão antes que os parênteses circundantes convertidos para um tipo maior sejam encontrados. Tentar

Int128(10)^20 == BigInt(10)^20 == big"10"^20

big(10)^20também funciona.
DNF

Apenas como um comentário lateral: Julia pode ser inteligente o suficiente para detectar em que constantes de intervalo como 10 ^ 19 se encaixam e usar o menor tipo grande o suficiente para se ajustar à constante, ou algumas outras heurísticas que não falham.
Trilarion 29/01

Na verdade, meu palpite seria que isso resulta no impacto no desempenho, de modo que eles o enviam para o usuário.
logankilpatrick 29/01

É menos do que isso, e mais do que conceitualmente, de certa forma, é mais limpo ter regras simples, como se parecesse um int, é um int
Oscar Smith
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.