MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Marge »

Tiens sur la Sinclair Scientific (ou plus simplement la réplique fidèle créée par Chris Chung), on obtient 3,14404.
Eh bien...
Pour les vingt ans, on testera les fonctions transcendantes, c'est prévu chez Meeus. :)
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Tipoucet
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3787
Enregistré le : 10 janv. 2009 13:47

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Tipoucet »

Marge a écrit : 29 oct. 2020 19:13 Difficile d'omettre dans ce florilège la calculette programmable la moins chère du marché (je m'exprime sous le contrôle de Tipoucet), j'ai nommé la SINCLAIR Scientific Programmable
Merci pour cette marque de confiance 8) je ne connais point cette machine mais je valide bien volontiers ton affirmation :wink:
Dominique
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Marge »

Sur la Casio fx-5400P fraîchement redémarrée grâce à bernouilli92, J=39 et J*LOG2=11,7401...

Le programme de 48 octets (taille à vérifier) :

Code : Tout sélectionner

10 X=1:J=0
20 X=2*X
30 IF X#X+1 THEN J=J+1:GOTO 20
40 PRINT J:PRINT J*LOG2
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Marge »

Je viens de reprendre presque in extenso l'excellent programme de C.Ret pour le SHARP et de l'entrer dans la Casio fx-5400P. Le résultat est trouvé en moins de 3 s. 10/100e : 39 et 11,7402.

Code : Tout sélectionner

10 CLEAR : X=1
20 X=2*X: IF X#X+1 THEN J=J+1: GOTO 20
30 PRINT J:PRINT J*LOG2
C'est la première fois de ma vie que je boucle sur la même ligne ! On apprend à tout âge...

J'obtiens 44 octets, sans doute la différence avec le SHARP est-elle liée aux LET/THEN... ou autre chose.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par dprtl »

Comme on s'autorise à sortir les HP Prime et Casio Classpad sur un forum rétro (un petit peu quand même ? :) ), j'ai sorti ma calculette de 160 g programmable en Python, avec 103 octets de programme :

Code : Tout sélectionner

import math
x=1
j=0
while j<100000:
  x=2*x
  if (x == x+1):
	break
  j+=1
print(j,j*math.log10(2))
Et comme, en Python, les entiers ne sont limités que par la RAM de ma calculette (énorme), j'obtiens facilement :

100000 30102.99956639812

Si j'arrête de tricher, en ajoutant deux octets pour faire 105, le même programme (ci-dessous) donne le résultat (calcul en virgule flottante IEEE 754) :

52 15.653559774527022

Image
Avatar du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7141
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par gege »

Bonjour,
Ah ok, Môssieur veut se la jouer course aux armements, "j'ai la plus grosse", "laissez passer !"... :twisted:
Je reviens avec ce qu'il faut (mais toujours de poche, on a de l'éthique dans la famille, nous) ! :mrgreen:

...

A suivre :D
G.E.
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par dprtl »

Pour stopper cette surenchère technologique, qui risque d'entraîner l'humanité vers le néant, voici ci-dessous ma version pour TI-57 de 1977. Elle donnera peut-être des résultats différents des autres ? Ici, rien à initialiser, tout est dans le programme. On peut le relancer autant de fois que l'on veut par R/S. La danse des chiffres rouges pendant le calcul est hypnotique :

Code : Tout sélectionner

00  1
01  STO 7
02  0
03  STO 0
04  LBL 1
05  2
06  PRD 7
07  RCL 7
08  +
09  1
10  =
11  x=t
12  GTO 2
13  1
14  SUM 0
15  GTO 1
16  LBL 2
17  RCL 0
18  R/S
19  x
20  2
21  LOG
22  =
23  R/S
24  RST
Elle affiche finalement 36 [R/S] et 10.83708.

Image
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Marge »

Bien, la TI-57 qui dépasse en précision jusqu'à la HP-41...
Mais je suis surpris par l'affichage du résultat à 7 chiffres... il va falloir que je ranime la mienne.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7141
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par gege »

Bonjour;
Bravo messieurs, en effet on privilégie le vieilot ici mais bon juste pour rigoler j'ai fini par tester mon truc prétendûment à précision infinie sur Prime, bon c'est pas mal mais pas concluant.

Voici le programme qui permet de calculer 2^(2^17) + 1 - 2^(2^17), en effet plutôt que de partir de 1 et multiplier par 2 pour obtenir tous les 2^N, je pars de 2 et j'élève au carré ce qui donne les 2^(2^N), forcément il y a énormément moins d'étapes :

Code : Tout sélectionner

EXPORT precision(n)
BEGIN
LOCAL f,j,s;
xinit(1);xtof("2")▶f;
FOR j FROM 1 TO n DO xmul(f,f)▶f;END;
xsign(xsub(xadd(f,xtof("1")),f))▶f;
IF 0==f THEN "="▶f ELSE "≠"▶f END;
"2^(2^"+STRING(n)+")"▶s;
RETURN s+f+s+"+1";
END; 
On tape precision(17) et la machine confirme que 2^(2^17) ≠ 2^(2^17) + 1.
Or ce nombre comporte 39457 chiffres et il commence d'ailleurs par
4014132182 0360630391 6606348382 0294290261 6005734408 9446062580 0322260229 ...

Malheureusement la représentation de 2^(2^18) avec ce truc nécessiterait une liste de plus de 10000 éléments, qui est une limite de la HP Prime.
On a la RAM, mais quelqu'un a bridé la bécane, dommage...
Ceci dit vu les temps de calcul (que je tais pudiquement comme dprtl), on aurait probablement renoncé avant d'arriver à l'infini...

Allez retour aux vieux coucous bien plus marrants
G.E.
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 845
Enregistré le : 06 oct. 2012 14:37

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par tyann »

Salut Gégé

j'ai moi aussi travaillé sur un projet où le nombre d'éléments à mémoriser
dans une liste était supérieur à 10 000.
En fait c'est possible, en utilisant une liste de listes, en effet une liste est limitée à 10 000 éléments
mais chaque élément peut être lui même une liste pouvant contenir 10 000 éléments.
Ainsi pour mémoriser 30 000 éléments dans une liste il faut que cette liste contienne 3 listes
qui contiennent chacune 10 000 éléments.
Comme ceci :
{{élm1,.....élm 10000},{élm1,.....élm 10000},{élm1,....élm10000}}
et ça se gére assez souplement.
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par dprtl »

Comme je l'écrivais dans un autre topic, la calculette que j'utilise le plus souvent c'est 'bc' en ligne de commande : puissante, pratique, pas chère, libre. On peut même la recompiler pour Atari ST avec les excellents "m68k-atari-mint cross-tools" de Vincent Rivière. Pour vérifier l'affirmation de gege, je l'ai utilisée de la façon suivante :

Code : Tout sélectionner

$ BC_LINE_LENGTH=0 bc <<< '2^(2^17)' | echo "`wc -c`-1" | bc 
39457
$ BC_LINE_LENGTH=0 bc <<< '2^(2^18)' | echo "`wc -c`-1" | bc 
78914
$ BC_LINE_LENGTH=0 bc <<< '2^(2^19)' | echo "`wc -c`-1" | bc 
157827
$ BC_LINE_LENGTH=0 bc <<< '2^(2^20)' | echo "`wc -c`-1" | bc 
315653
Par contre, je n'ai pas mesuré le temps de calcul sur un vrai 68000 :wink:
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par C.Ret »

dprtl a écrit : 02 nov. 2020 23:52 Pour stopper cette surenchère technologique, qui risque d'entraîner l'humanité vers le néant, voici ci-dessous ma version pour TI-57 de 1977. Elle donnera peut-être des résultats différents des autres ? Ici, rien à initialiser, tout est dans le programme. On peut le relancer autant de fois que l'on veut par R/S. La danse des chiffres rouges pendant le calcul est hypnotique : Elle affiche finalement 36 [R/S] et 10.83708.
Ah! Merci dprtl, je désespérais de pouvoir comparer les performances de ma pauvre TI-57 LCD avec sa sœur ainée.
A priori, si la Ti-57 LCD n'a pas autant de ressource mémoire que son ainée, elle fait ses calculs avec la même précision. Maigre consolation.

Je vois que dans ton code, tu utilises le fait que le registre de test t est aussi le registre n°7. Je ne peux faire de même avec ma TI-57 LCD :( Et apparemment, le test x=t? se fait avec toute la précision de la machine.

Je n'ai toujours pas trouvé d'explication concernant le test x≠t? qui semble se faire avec une précision limitée (à l'affichage ?) sur ma Ti-57. La documentation de la TI-57 étant plus complète que celle fournie avec une TI-57 LCD, y trouve-t-on une indication ?
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Gilles59 »

dprtl a écrit : 02 nov. 2020 23:52 Pour stopper cette surenchère technologique, qui risque d'entraîner l'humanité vers le néant, voici ci-dessous ma version pour TI-57 de 1977. Elle donnera peut-être des résultats différents des autres ? Ici, rien à initialiser, tout est dans le programme. On peut le relancer autant de fois que l'on veut par R/S. La danse des chiffres rouges pendant le calcul est hypnotique...
Mon premier contact avec une programmable a été une TI57 qu'un copain m'avait prêté... Le fait que cette calculatrice soit "programmable" m'avait bluffé... Et les nombres rouges qui clignotaient dans la pénombre, je m'en souviens encore ;D Plus impressionnant que l'inscription lumineuse de l'Anneau Unique sorti du feu ;D
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par dprtl »

C.Ret a écrit : 03 nov. 2020 20:00 Je n'ai toujours pas trouvé d'explication concernant le test x≠t? qui semble se faire avec une précision limitée (à l'affichage ?) sur ma Ti-57. La documentation de la TI-57 étant plus complète que celle fournie avec une TI-57 LCD, y trouve-t-on une indication ?
Le manuel en français de la TI-57 originale, aussi "cheap" que la machine elle-même, est dispo ici :

http://collection.sasfepu.free.fr/downl ... &tconfig=0

Il est bien scanné, car j'avoue que j'ai besoin de mes lunettes pour lire la version papier, avec son petit format A6 et sa police microbienne... Sans doute pour protéger la forêt amazonienne ?

Donc, aucune différence de précision n'est mentionnée entre les séquences [2nd] [x=t] et [INV] [2nd] [x=t].
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: MPO n° 97 Spécial 10e Anniversaire : Précision arithmétique

Message par Gilles59 »

Au passage la 'police microbienne' me rappelle qu'il y a excellent émulateur TI57 pour HP48. Il utilise le micro-code de la TI-57 et toutes les bidouilles y compris pour afficher des lettres fonctionnent ;D Dans l'aide, j'ai lu que la rom de la TI57 avait été déchiffrée... au microscope :O
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Répondre

Retourner vers « Tous les Pockets »