L'arithmétique de précision arbitraire a-t-elle affecté le logiciel d'analyse numérique?

StackOverflow https://stackoverflow.com/questions/1209574

Question

Est-ce que l'arithmétique à précision arbitraire est affectée logiciel d'analyse numérique ?

Je pense que la plupart des logiciels d’analyse numérique continuent à utiliser les mêmes flottants et doubles.

Si j'ai raison, j'aimerais bien connaître la raison, car, à mon avis, certains calculs peuvent tirer parti de l'utilisation de l'arithmétique à précision arbitraire, en particulier lorsqu'elle est combinée à l'utilisation de la représentation rationnelle des nombres , comme cela a été fait dans la bibliothèque GNU multi-précision .

Si je me trompe, des exemples seraient bien.

Était-ce utile?

La solution

La précision arbitraire est lente. Très lent. Et au moment où vous utilisez une fonction qui produit une valeur irrationnelle (comme la plupart des fonctions trig), vous perdez votre avantage de précision arbitraire.

Si vous n'avez pas besoin de cette précision ou ne pouvez pas l'utiliser, pourquoi y consacrer tout votre temps processeur?

Autres conseils

  

A l'arithmétique de précision arbitraire   logiciel d'analyse numérique concerné?   Je pense que l'analyse la plus numérique   le logiciel continue à utiliser le même   flotte et double.

Il existe plusieurs raisons malheureuses de ne pas utiliser la précision arbitraire (ap) plus largement.

  • Manque de prise en charge des fonctionnalités importantes: valeurs manquantes pour NaN / Infinities, pas de nombres complexes ni de fonctions spéciales, implémentation manquante ou erronée des modes d'arrondi (demi-tour même non implémenté dans GMP), absence de gestionnaires pour les éléments importants événements (perte de chiffres significatifs, débordement, débordement ... ok, cela n'est même pas implémenté dans la plupart des bibliothèques standard). Pourquoi est-ce important ? Parce que sans cela, vous devez investir beaucoup d’énergie pour formuler votre problème avec une précision arbitraire (vous n’avez jamais écrit une bibliothèque de nombres complexe ou des fonctions spéciales dans ap?), Vous ne pouvez pas reproduire votre double résultat, car ap manque des fonctionnalités dont vous avez besoin. suivre les modifications.

  • 99,9% de tous les programmeurs ne s'intéressent pas du tout aux valeurs numériques. L’une des questions les plus fréquemment posées est la suivante: "Pourquoi 0.1 + 0.1 PAS 0.2?" AIDE !!! " Alors, pourquoi les programmeurs devraient investir le temps d'apprendre une implémentation spécifique ap et de formuler leur problème en elle? Si vos résultats ap s'écartent des résultats doubles et que vous n'avez aucune connaissance en calcul, comment trouvez-vous le bogue? La double précision est-elle trop inexacte? La bibliothèque ap a-t-elle un bug? QUE SE PASSE-T-IL ?! Qui sait ....

  • De nombreux experts numériques qui savent comment calculer découragent l'utilisation de ap. Frustrés par les implémentations matérielles de FP, ils insistent sur le fait que la reproductibilité est de toute façon "impossible". mettre en œuvre et entrer des données n’a presque toujours que quelques chiffres significatifs. Ils analysent donc principalement la perte de précision et réécrivent les routines critiques pour la minimiser.

  • Dépendance de référence. Wow, mon ordinateur est plus rapide que les autres. Comme l'ont fait remarquer à juste titre les autres commentateurs, ap est beaucoup plus lent que les types de données à virgule flottante pris en charge par le matériel, car vous devez le programmer avec les types de données entiers par main. Un des imminents Le danger de cette attitude est que les programmeurs, totalement inconscients des problèmes, choisissent des solutions qui crachent des chiffres absurdes totalement impressionnants. Je suis très prudent sur GPGPU. Bien sûr, les cartes graphiques sont beaucoup, beaucoup plus rapides que le processeur, mais la raison en est la précision et l'exactitude moins . Si vous utilisez des flottants (32 bits) au lieu de doubles (64 bits), vous aurez beaucoup moins de bits à calculer et à transférer. L'œil humain est très tolérant aux fautes, il est donc indifférent qu'un ou deux résultats soient hors-la-loi. En tant que constructeur de matériel, vous pouvez utiliser des calculs imprécis et mal arrondis pour accélérer vos calculs (ce qui est vraiment correct pour les graphiques). Éliminez ces modes d'implémentation ou d'arrondi subnormaux embêtants. Il y a une très bonne raison pour laquelle les processeurs ne sont pas aussi rapides que les GPU.

Je peux recommander la page du lien de William Kahans pour obtenir des informations sur les problèmes rencontrés dans numérique.

Le Wolfram Research Institute a déployé des efforts considérables pour intégrer de manière pragmatique l'arithmétique d'intervalles de précision arbitraire au cœur de Mathematica et a fait un excellent travail. Mathematica effectuera de manière transparente presque tous les calculs avec une précision arbitraire.

Si vous regardez des programmes tels que Mathematica, je suppose que vous constaterez qu’ils n’utilisent pas de méthodes float et double pour leur travail. Si vous regardez la cryptographie, vous constaterez sans aucun doute qu’ils n’utilisent ni les flottants ni les doublons (mais ils travaillent principalement avec des entiers de toute façon).

Il s’agit essentiellement d’un jugement. Les personnes qui estiment que leur produit bénéficiera d'une précision accrue utilisent un logiciel arithmétique à précision étendue ou à précision arbitraire. Ceux qui pensent que la précision n'est pas nécessaire ne l'utiliseront pas.

La précision arbitraire ne fonctionne pas bien avec les valeurs irrationnelles. Je pense que tout renverser aiderait un logiciel d'analyse numérique. Au lieu de déterminer le degré de précision requis pour le calcul, vous devez indiquer au logiciel quelle est la précision finale que vous souhaitez obtenir. Tout y figurera.

De cette façon, il peut utiliser un type de précision finie juste assez grand pour le calcul.

Il est très rare que vous ayez besoin d’une réponse exacte à un problème numérique. C’est presque toujours le cas où vous avez besoin du résultat avec une précision donnée. Il est également vrai que les opérations sont plus efficaces si elles sont effectuées par un matériel dédié. Pris ensemble, cela signifie que le matériel subit des pressions pour fournir des implémentations suffisamment précises pour la plupart des problèmes courants.

La pression économique a donc créé une solution efficace (basée sur le matériel) pour les cas courants.

Cette Le papier de Dirk Laurie présente un récit édifiant sur l’utilisation de la précision variable.

Bien que cela ne soit pas directement lié à votre question, vous pouvez également consulter cette

scroll top