Je faisais des calculs pour planifier une mise en œuvre améliorée de mon tamis principal quand j'ai remarqué que la feuille de calcul Libre Office affichait les mauvaises valeurs pour les nombres bien en dessous de 2 ^ 53, qui est la limite pour les calculs d'entiers précis dans FoxPro et une multitude d'autres langues qui utilisent en interne un C double (aka IEEE 754 double ).

Certaines vérifications rapides ont montré des résultats erronés pour des nombres aussi bas que 2 ^ 50. Pire encore, le logiciel floconneux n'a donné aucun avertissement indiquant qu'il fonctionnait au-delà de ses limites opérationnelles et que les valeurs affichées n'étaient qu'approximatives (même si les valeurs correctes étaient entrées manuellement). Je suppose qu'ils pensaient que ce qui était assez bon pour POS comme Excel devait être assez bon pour eux (mais ils auraient dû le nommer «Guesstimate» au lieu de «Calc»).

Quoi qu'il en soit, est-il possible de mettre la feuille de calcul dans une sorte de mode précis qui donne au moins la précision d'un double, et / ou de lui faire afficher une sorte d'avertissement lors d'un calcul dépasse ses capacités numériques?

Ou existe-t-il une autre feuille de calcul disponible qui convient aux programmeurs à une époque où même les téléphones et les grille-pain sont alimentés par des puces 64 bits?

Contexte: dans ce cas particulier, le besoin de précision se fait sentir car l'exactitude des formules est vérifiée en comparant certaines colonnes de résultats avec des listes de nombres bien connus (comme le nombre de nombres premiers jusqu'à 2 ^ k, disponible sur OEIS) ou avec des nombres dérivés d'un code instrumenté. L'idée est d'obtenir les formules correctes en les vérifiant pour des plages faisables - jusqu'à quelque part entre 2 ^ 32 et 2 ^ 40 - puis d'utiliser ces formules pour étudier le comportement pour des plages allant jusqu'à 2 ^ 64 (où il est impossible de obtenir une image complète en exécutant des tests exhaustifs).

PS : j'ai trouvé que le problème a été analysé en détail dans On the Numerical Précision des feuilles de calcul (pdf). Il semble que gnumeric résiste un peu mieux que les autres, mais c'est plus un cas de borgne parmi les aveugles que de rassemblement vraiment passager; de plus, il n'est pas disponible pour Windows et nécessiterait donc le démarrage d'une VM Linux sur la plate-forme sur laquelle je développe et pour ...

MISE À JOUR / SOLUTION DE CONTOURNEMENT

Jusqu'à 2 ^ 49, il n'y a aucun problème, il est donc possible de travailler normalement. Cela suffit pour se faire une idée précise des choses. Dans les tableaux finaux, les grands nombres et les résultats de haute précision (calculés ailleurs) sont saisis sous forme de texte pré-formaté (ou plutôt importé / collé) afin que Calc ne puisse pas gêner l'affichage. Les nombres peuvent toujours être référencés en appliquant la fonction VALUE(), et pour de nombreux calculs en ligne, la précision interne est tout à fait suffisante - en particulier pour la représentation graphique.

L'image ci-dessous montre ce que j'ai publié dans l'un des commentaires, à savoir que la précision interne est supérieure à ce qui est affiché. Comment sommes-nous censés savoir alors quelles sont les valeurs réelles si le programme ne les montre pas? Jouer avec l'ajout / la soustraction de petites valeurs, observer les changements, créer et tester des hypothèses concernant la relation entre les valeurs réelles, le comportement d'arrondi supposé et les valeurs affichées? L'esprit est vraiment époustouflant.

same displayed value but different behaviour

J'offre une prime pour l'un des éléments suivants:

  • un moyen pratique de restaurer Calc à un comportement sain au sens de WYSIWI (ce que vous voyez est ce qu'il y a à l'intérieur, ou plutôt s'il est à l'intérieur, alors il peut être affiché) sans réduire la précision interne et sans bifurquer tout l'arbre des sources sanglantes et le réparer soi-même

  • un pointeur vers une feuille de calcul avec une précision supérieure à IEEE 754 double (de préférence une précision arbitraire , comme GP / PARI mais sous forme de feuille de calcul) qui est du domaine public ou shareware; un truc en ligne / cloud serait acceptable

La raison du premier élément est double: d'une part, c'est une nuisance sanglante lorsque la précision de la feuille de calcul est inférieure à la précision universelle IEEE 754 double car cela signifie que l'expérience / les connaissances concernant l'exactitude / la précision / la stabilité à ce niveau de base ne sont pas transférées. Pour un autre, c'est une nuisance encore plus grande si nous ne pouvons pas croire que les valeurs affichées sont correctes même lorsque nous savons avec certitude que les valeurs réelles le sont.

La raison du deuxième élément est le simple fait qu'il est plutôt fastidieux d'avoir à script des choses dans un autre programme pour calculer des choses à haute précision ou avec des bignums, ou d'avoir à éditer / compiler / exécuter des programmes à cette fin. Outre la division maladroite en une feuille de calcul et un tas de scripts ou de fichiers sources, il serait plus naturel et pratique de travailler juste à l'intérieur de la feuille de calcul, point final.

12
DarthGizka 28 déc. 2015 à 22:08

3 réponses

Meilleure réponse

PrecisionCalc est un add-on Excel qui permet des calculs arbitraires. précision.

Il existe une édition gratuite avec une limite de 3 000 chiffres significatifs.

2
Maciek Sawicki 7 janv. 2016 à 21:13

Calc 5.1 (bientôt disponible) résoudra le problème: https://bugs.documentfoundation.org/ show_bug.cgi? id = 96918

2
Cœur 19 janv. 2016 à 23:52

Maciek Sawicki (voir les commentaires des questions) a trouvé un addon pour Excel qui permet des calculs avec une précision arbitraire : xlPrecision / PrecisionCalc. C'est un shareware avec un prix extrêmement raisonnable.

1
DarthGizka 8 janv. 2016 à 05:59