Sujet : Re: Le calcul de la racine carré... pour des nuls :)
De : efji (at) *nospam* efi.efji (efji)
Groupes : fr.sci.mathsDate : 08. Nov 2024, 11:14:01
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vgko9b$35kqs$1@dont-email.me>
References : 1 2 3 4 5 6
User-Agent : Mozilla Thunderbird
Le 08/11/2024 à 10:01, Olivier Miakinen a écrit :
Le 07/11/2024 18:03, efji a écrit :
>
*Bravo* ! Je ne sais pas comment vous avez établi ces formules...
>
Pas de mystère. J'ai fait un programme bêtasson et j'ai remarqué qu'il y
avait 999, 9999, 99999, 999999 qui marchaient, et puis 5050, 500500 etc.
Ensuite c'est facile à montrer.
Oui.
De mon côté, je m'apprêtais à faire un programme (en JavaScript) pour
trouver les valeurs adequats :-)
>
Essayez mais à mon avis en javascript vous y êtes encore la semaine
prochaine pour aller jusqu'à 10^13 avec un langage interprété. Attention
aussi aux entiers : par défaut les entiers 32 bits ne dépassent pas
2x10^9. Il faut utiliser des 64 bits, je ne sais pas si ça existe en
javascript.
Si je me rappelle bien, JavaScript représente tous les nombres sous la forme
IEEE754 avec 64 bits, et en particulier il peut représenter de façon exacte
tous les nombres entiers jusqu'à 2^53 = 9 007 199 254 740 992 (et même tous
les nombres entiers de −2^53 à +2^53).
Après ça ne marche plus parce que 2^53 + 1 n'est pas représentable. Le nombre
représentable suivant est 2^53 + 2.
En fait, je viens de le découvrir car ce langage m'est totalement étranger, il n'y a pas d'entiers en javascript :) Il n'utilise que des flottants de 64 bits. Il y a vraiment des informaticiens bizarres sur cette planète pour penser à des choses pareilles...
Du coup je me demande si c'est vraiment possible de faire ce programme pour des grandes valeurs en javascript, à cause des erreurs d'arrondis. Pour des paires de nombres entiers à k chiffres (n,p) il s'agit de calculer (n+p)^2 et de le comparer à (p+nx10^k). Pour une paire qui marche, il n'est pas du tout évident que le calcul en flottant donne l'égalité. Il doit probablement falloir utiliser un test à epsilon près pour que ça marche.
Pour les entiers 64 bit, les bornes des valeurs accessibles sont −2^63+1 et +2^63-1 (et pas 2^53). Il y a un bit de signe et 63 bits pour la valeur absolue du nombre.
Pour les réels c'est plus compliqué: il y a un bit de signe, 11 bits d'exposant, et donc 52 bits de mantisse. Donc si on fait un calcul sur des entiers on ne peut pas espérer dépasser 10^52.
-- F.J.