Pergunta

de precisão arbitrária aritmética afetada numérica software de análise ?

Eu sinto que o software de análise mais numérica continua usando os mesmos carros alegóricos e duplos.

Se eu estiver certo, eu adoraria saber a razão, como na minha opinião, existem alguns cálculos que podem se beneficiar do uso de bignum, especialmente quando ele é combinado com o uso de representação racional número , como foi feito na GNU Biblioteca multi-Precision .

Se eu estiver errado, os exemplos seria bom.

Foi útil?

Solução

precisão arbitrária é lento. Muito devagar. E no momento em que você usar uma função que produz um valor irracional (como a maioria das funções trigonométricas), você perde sua vantagem de precisão arbitrária.

Então, se você não precisa, ou não pode usar essa precisão, por que gastar todo esse tempo CPU sobre ele?

Outras dicas

Tem de precisão arbitrária aritmética software de análise numérica afetada? Eu sinto que a análise mais numérica software continua usando o mesmo flutua e duplas.

Existem várias razões infelizes que de precisão arbitrária (ap) não é usado mais extensivamente.

  • A falta de suporte para funcionalidades importantes: valores ausentes para Nan / Infinities, há números complexos ou funções especiais, falta ou implementação de buggy de modos de arredondamento (meia-even rodada não implementado em GMP), a falta de manipuladores para importante eventos (perda de dígitos significativos, excesso, underflow ... ok, isso não é ainda implementadas na maioria das bibliotecas padrão). Por que isso é importante? Porque sem isso você deve investir muita energia para formular o seu problema na precisão arbitrária (já escrito uma biblioteca número complexo ou funções especiais em ap?), Você não pode reproduzir o duplo resultado porque ap perde os recursos de que você precisa para rastrear as alterações.

  • 99,9% de todos os programadores não estão interessados ??em numerics em tudo. Um dos pergunta mais feita aqui é: "Por que é de 0,1 + 0,1 NÃO 0.2 ???? AJUDA !!!" Então, por que os programadores investir tempo para aprender uma implementação específica ap e formular o problema nisso? Se os resultados ap divergem dos resultados duplas e você não tem conhecimento de valores numéricos, como você encontrar o erro? É dupla precisão muito pouco precisas? Tem o ap biblioteca de um bug? O QUE ESTÁ ACONTECENDO ?! Quem sabe ....

  • Muitos especialistas numéricos que não saber como calcular desencorajar o uso de AP. Frustated pelas implementações de FP hardware insistem que reprodutibilidade é assim mesmo "impossível" para implementar e dados de entrada tem quase sempre apenas poucos dígitos significativos. Então, eles principalmente analisar a perda de precisão e reescrever as rotinas críticas para minimizá-lo.

  • vício de Benchmark. Uau, meu computador é mais rápido do que outros. Como os outros comentaristas justamente observou, ap é muito mais lento do que o hardware suportado tipos de dados de ponto flutuante porque você deve programá-lo com os tipos de dados inteiros por mão. Um dos iminente perigos desta atitude é que os programadores, totalmente inconscientes dos problemas, escolher soluções que cuspir números sem sentido totalmente impressionantes. Eu sou muito cauteloso sobre GPGPU. Claro, as placas gráficas são muito, muito mais rápido do que o processador, mas a razão para isso é menos precisão e exatidão. Se você usar flutuadores (32 bits) em vez de camas (64 bits), você tem muito menos bits para calcular e para transferência. O olho humano é muito tolerante a falhas, por isso não importa se um ou dois resultados estão fora dos limites. Heck, como construtor de hardware você pode usar impreciso e mal cálculos arredondados para acelerar seus cálculos (que é realmente ok para gráficos). Jogue fora aqueles implementação subnormal traquinas ou modos de arredondamento. Há uma razão muito boa porque processadores não são tão rápidas como GPUs.

Posso recomendar William página Kahans link de texto para algumas informações sobre os problemas em numerics.

Instituto de Pesquisa Wolfram colocar uma enorme quantidade de esforço na obtenção de precisão arbitrária aritmética intervalo para o núcleo de Mathematica de forma pragmática e eles fizeram um excelente trabalho. Mathematica, transparentemente fazer quase qualquer computação de precisão arbitrária.

Se você olhar para programas como o Mathematica, eu suspeito fortemente que você achar que eles não usam carros alegóricos e duplos para o seu trabalho. Se você olhar para criptografia, você vai definitivamente achar que eles não usam carros alegóricos e duplos (mas eles estão trabalhando principalmente com inteiros de qualquer maneira).

É basicamente um julgamento. As pessoas que sentem que seu produto irá beneficiar de uma maior utilização exatidão e precisão estendida de precisão ou software bignum. Aqueles que não acho que a precisão é necessária não vai usá-lo.

precisão arbitrária não funciona bem com os valores irracionais. Eu acho que virar tudo de cabeça para baixo ajudaria software de análise numérica. Em vez de figurar como o que a precisão é necessária para o cálculo, você deve dizer ao software que você quer a precisão final a ser e ele vai descobrir tudo.

Desta forma, ele pode usar um tipo de precisão finita grande o suficiente para o cálculo.

É muito raro que você precisa de uma resposta exata para um problema numérico - é quase sempre o caso que você precisa o resultado de algum dado precisão. É também o caso de que as operações são mais eficientes se realizado por hardware dedicado. Tomados em conjunto, isso significa que não há pressão sobre hardware para fornecer implementações que têm precisão suficiente para a maioria dos problemas comuns.

pressão Então econômica criou um (ou seja, hardware baseado) solução eficiente para os casos comuns.

Este papel por Dirk Laurie apresenta um conto de advertência sobre o uso de precisão variável.

Apesar de não ser diretamente relacionado à sua pergunta que você pode também querer olhar para este papel por l Trefethen

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top