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 de l’utilisateur
ledudu
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5378
Inscription : 26 mars 2009 14:07
Localisation : Ile de France
Contact :

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

Message par ledudu » 25 oct. 2020 10:34

:D :) :lol:

Avatar de l’utilisateur
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3288
Inscription : 06 sept. 2011 14:57
Localisation : Normandie

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

Message par Hobiecat » 25 oct. 2020 11:07

C.Ret a écrit :
25 oct. 2020 09:26
Bon, comme j'ai une heure de plus ce dimanche, j'ai sorti ma balance de ménage et éditer tous mes messages où je n'indiquais pas le poids de mes calculettes et pockets:


HP-15C:113g
CASIO fx-602p:129g
TI-57LCD:153g
SHARP PC-1211:164g
HP-28S:217g
HP-41C:221g
HP Prime:239g
SHARP PC1360:246g
TI-74 BASICALC:453g
TI-92 II:570g
Commodore C128D:>5000g
:mrgreen: :mrgreen: :mrgreen: :mrgreen:

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7010
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

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

Message par gege » 25 oct. 2020 13:38

Bonjour,
Vous avez raison j'ai 1 de trop sur mes résultats...
Maintenant si on confond 2 et 2+1, c'est qu'on a une précision de 1 bit, pas de zéro, non ?
Mais jouons en respectant les règles de l'énoncé.

Si TI60, voici un calcul qui résume la précision de la machine :
2 y^x 43 + 1 - 2 y^x 43 =
Donne 1.... CQFD

Sur Basicalc voici mon code (81 octets; bizarre) :

Code : Tout sélectionner

100 J=0:N=1
110 J=J+1:N=2*N:IF N<N+1 THEN 110
120 PRINT J,J*LOG(2):PAUSE:END
C'est le même (en plus long) que le tien, et les résultats sont identiques au +1 près.
C.Ret a écrit :
25 oct. 2020 09:26
Ensuite, si ta bibliothèque fonctionne vraiment bien, le calcul ne peut pas se terminer… pas avant d'avoir atteint l'infini :)
Oui c'est un peu l'idée :-) mais je vais regarder quand ça plante, genre 6000 chiffres je pense.

Hop quelques machines de plus :

HP17BII (137 octets ??) :

Code : Tout sélectionner

J=Z(I:0:50:1:L(N:2xN)+1-N)
Où le Z est le signe sigma de sommation.
On tape 1 [N] [J] et en quelques secondes on obtient 39...
Donc 38 en fait soit 11.43

Citizen SRP-400G :

Code : Tout sélectionner

PRECISI
 1->N;0->J;
 Label 1:2xN->N;J+1->J;
 If(N>=N+1) Then { Goto 2 };
 Goto 1;
 Label 2:Print J;
 End
Ca donne 47 (en soustrayant 1)

On remarque que les noms de programme sont sur 7 caractères au lieu des 8 du modèle Casio.
Egalement le code est bizarre avec ces deux Goto au lieu d'un, en fait si dans le Then on branche directement sur le Label 1, ça imbrique des niveaux de pile ou quelque chose, et on tombe en erreur. C'est un défaut majeur de la Citizen, sans compter ses autres petites manies hyper chiantes, ni l'écran trop petit, ni l'affichage à l'écran de tous les résultats intermédiaires, ni...
Ooooooh calmos papy allez je me sers une bonne camomille...
Lâcher le fusil.... pfffff

Graph 100 et Graph 60 : 49
fx-CG20 "Prizm" et Graph 85 SD : 43

A+
G.E.
Dernière édition par gege le 25 oct. 2020 13:56, édité 1 fois.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 744
Inscription : 06 oct. 2012 14:37

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

Message par tyann » 25 oct. 2020 13:53

Salut Gégé
Maintenant si on confond 2 et 2+1, c'est qu'on a une précision de 1 bit, pas de zéro, non ?
Oui je suis d'accord, d'où mon 'Edit : Ou alors c'est le programme de référence qui a un bug'
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) 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, El 5120, 9200, 9600

Canon X-07

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7010
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

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

Message par gege » 25 oct. 2020 14:07

Bonjour,
Voilà, mais autant prendre la définition du MPO pour que ce soit clair.

Hop X-07 (57 octets) : 46 (13.84)

Sur Citizen SRP-325G (51 octets), c'est assez bizarre... Le programme est quasiment le même que sur la 400G :

Code : Tout sélectionner

J=0;N=1;
Lbl 1:J=J+1;N=2*N;
IF(N==N+1)THEN{GOTO 2};
GOTO 1;
Lbl 2:PRINT J;
END
Et pourtant il affiche 63 !
Or 2^62+1-2^62 donne zéro, en fait on a 2^46+1-2^46 = 1 et 2^47+1-2^47 = 0, donc la bonne valeur est 46 (13.84).
Avez-vous des idées ?

G.E.

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2320
Inscription : 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 » 25 oct. 2020 16:00

gege a écrit :
25 oct. 2020 13:38
[...]Si TI60, voici un calcul qui résume la précision de la machine :
2 y^x 43 + 1 - 2 y^x 43 =
Donne 1.... CQFD
Ah oui, c'est cohérant, elle est donnée dans le Ti-Wiki pour 13 chiffres, là où la Ti-57 LCD est donnée pour 11 chiffres.
Effectivement 2^43 ~ 8.796 EE 12 (ce qui tient dans 13 chiffres)
La limite pour le Ti-57LCD serait donc autour de 35 (soit 10.53605 chiffres) et non pas 26 comme je l'avais annoncé:

Ce qui prouve que mon petit test ne fonctionne pas

Cela m'oblige à vérifier mon résultat faible sur Ti-57 LCD:
2 y^x 27 + 1 - 2 y^x 27 = 1
2 y^x 28 + 1 - 2 y^x 28 = 1
...
2 y^x 35 + 1 - 2 y^x 35 = 1
2 y^x 36 + 1 - 2 y^x 36 = 1 <--- J=36 J.log 2= 10.837
2 y^x 37 + 1 - 2 y^x 37 = 0

En effet, 2^35~3.4360 EE 10 ce qui tient dans les 11 chiffres annoncés pour la Ti-57 LCD.

Il me faut maintenant proposer un code fonctionnel pour cette pauvre machine:

Code : Tout sélectionner

 --       St                 23.00    02  LBL 00         02       15   2
 61.00    00  STO 0          29       03  DSE            31       16  log
 56       01  C.t            02       04   2             65       17   *
                             45       05  y^x            07       18  RCL 0
                             71.00    06  RCL 0          13       19  R/S
                             85       07   +
                             61.01    08  STO 1
                             01       09   1
                             75       10   - 
                             71.01    11  RCL 1
                             95       12   =
                             26       13  2nd x=t?
                             22.00    14  GTO 00                             (19 pas)
Usage: on entre un J plus grand que la précision à laquelle on s'attend par exemple 45.
On lance par RST R/S, le code décrémente ce J jusqu'à faire le calcul sans arrondi.
Le J qui fonctionne s'affiche, une pression sur la touche = donne le nombre de décimales J*log 2.

40 EST R/S affiche 36 et = donne 10.837.

Je ne comprends pas pourquoi mon précèdent code ne fonctionne pas :( :(
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator | HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 744
Inscription : 06 oct. 2012 14:37

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

Message par tyann » 25 oct. 2020 19:16

Bonsoir

Voici une version pour Sharp El-5120 :

Code : Tout sélectionner

N=1
J=-1
LABEL 1
J=J+1
N=N*2
IF N<N+1GOTO 1
PRINT J
J=J*log 2
PRINT J
RUN
39. 11.74016983

Et une version optimisée pour Ti-95 :

Code : Tout sélectionner

000 STO X +/- STO J
005 INC J 2 ST* X RCL X +1= IF> X GT0 0005
020 RCL J x<>t 2 LOG ST* J RCL J HLT
030
1 RUN

Ultime version ? en copiant l'idée du BREAK à Gégé

Code : Tout sélectionner

000 STO X +/- STO J
005 INC J 2 ST* X RCL X +1= IF> X GT0 0005
020 RCL J BREAK *2 LOG = HLT
028
1 RUN affiche 43 puis F1 pour afficher 12.944.....
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) 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, El 5120, 9200, 9600

Canon X-07

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7010
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

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

Message par gege » 25 oct. 2020 19:31

Bonjour,
Héhé pas mal le code TI95 (le GTO évite le label), mais pourquoi n'as-tu pas mis le 1 de départ dans le programme ?
A continuer sur des machines encore plus bizarres...
Tiens la fx5800 ?

EDIT : le Psion Series 3a, super bizarre...

Code : Tout sélectionner

PROC precis
local j,n
j=0:n=1
while n<n+1:n=2*n :j=j+1 :endwh :print j
while n>0:input n :print 2**n+1-2**n
endwh
ENDP
Alors déjà c'est bizarre les espaces que le Psion réclame entre certaines instructions et pas d'autres (voir code), et que la puissance soit obtenue par le double signe multiplication ** comme en Fortran.
Mais ce qui m'étonne est que le programme renvoie un résultat de 53 (en retirant le 1 en trop).

Il n'y a pas de mode de calcul interactif, donc j'ai mis à la fin une boucle pour tester la valeur de (2^n+1-2^n) lorsqu'on tape une valeur de n.
Et bizarrement pour n=54; il trouve 2 !!!

Si on va dans la calculatrice pour tenter de tester les librairies de calcul, cette dernière ne veut pas afficher plus de 12 chiffres, donc par exemple :
2**54 -> 18014398509500000 le 5 final est un arrondi supérieur correct
2**54-18014398509400000 -> 81928 ce qui est faux, valeur correcte 81984
2**54+1-18014398509400000 -> 81938 ce qui est bizarre !!!
2**54+1-2**54 -> 2 le délire total !!

Alors moi je dis que le test que fait ce MPO nous plonge dans un abîme de complexité !

G.E.
Dernière édition par gege le 26 oct. 2020 01:28, édité 1 fois.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 744
Inscription : 06 oct. 2012 14:37

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

Message par tyann » 25 oct. 2020 19:35

Merci Gégé

Pour gagner 1 pas.
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) 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, El 5120, 9200, 9600

Canon X-07

Avatar de l’utilisateur
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5277
Inscription : 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 » 26 oct. 2020 02:23

S'il vous plaît, celle-là, vous me la laissez !

Image

Je suis encore en voie de compréhension du langage utilisé dans cette usine à gaz. :mrgreen:

SHARP
Scientific Calculator EL-9000 SUPER SCIENTIFIC
(si on vous l'dit ! C'est parce que je ne suis pas un super scientifique que j'entrave que pouic...)
Dernière édition par Marge le 29 oct. 2020 20:17, édité 2 fois.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5277
Inscription : 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 » 26 oct. 2020 15:51

Eh bien, ça n'aura pas été sans mal. J'ai été incapable de programmer quelque chose de fonctionnel en mode AER I, pourtant adéquat puisque le mode AER II n'est utilisé, selon le manuel, que pour les variables minuscules ou de type grec. Plus grave, les définitions de commandes de boucle p. 180 (└> et <┐) sont fausses car inversées, et de plus l'exemple en AER II (programme Down, chute d'un mobile, p. 144) donne un résultat différent sur la machine (2,5) et dans le livre (2,2).

Bref, après deux heures de recherches...

SHARP EL-9000

j= 36, l=10,83707984

Le programme :

Code : Tout sélectionner

(titre:) P
└>x=2x˽x≠x+1■Y►[j=j+1<┐]j=j,l=jLOG 2
74 octets.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 388
Inscription : 27 janv. 2013 01:26
Localisation : Strasbourg
Contact :

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

Message par dprtl » 26 oct. 2020 15:59

Ma Sharp EL-9000 a un souci de nappe de connexion au clavier de droite, probablement cassée. Cela fait des années, et je n'ai pas encore pris la décision de l'ouvrir, car l'opération me paraît risquée pour l'aspect général de la machine. Pourtant, son langage de programmation "AER" exotique m'intrigue :)

Avatar de l’utilisateur
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5277
Inscription : 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 » 26 oct. 2020 16:04

dprtl a écrit :
26 oct. 2020 15:59
Ma Sharp EL-9000 a un souci de nappe de connexion au clavier de droite, probablement cassée. Cela fait des années, et je n'ai pas encore pris la décision de l'ouvrir, car l'opération me paraît risquée pour l'aspect général de la machine. Pourtant, son langage de programmation "AER" exotique m'intrigue :)
Ça m'a l'air d'une opération risquée, en effet. Le langage est assez concis, c'est un vrai plus (on peut supprimer les conditions inutiles ou les opérations * et /, mais le manuel est une catastrophe pédagogique. :/
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5277
Inscription : 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 » 29 oct. 2020 20: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 !


Image
Photo de Kees van der Sanden


Munie de 5 chiffres pour la mantisse - on se débrouille avec les exposants de 10 -, c'est peut-être la moins chère et certainement la plus difficile à programmer correctement pour remplir le cahier des charges puisqu'elle ne possède pas de boucle ni de test conditionnel et qu'il faut donc tester manuellement l'égalité x=x+1. Mais qu'importe, on parvient à placer j dans l'unique mémoire et à l'incrémenter de 1 à chaque tour de roue...

Cette RPN sans pile véritable (mais avec 1 registre) propose jusqu'à 24 pas de programme qu'il faudra bien mesurer car les fonctions secondes exigent un seul pas mais, revers de la médaille, les entrées numériques nécessitent d'être encadrées par la pression de shift (∆) et " (‘’). Autrement dit, en mode "RUN" la machine exige la pression du shift pour accéder aux fonctions au-dessus des touches, mais en mode "PROGRAMMATION" c'est le contraire.

Code : Tout sélectionner

B/E    (Begin/End)
0          (ENTER)
∆
‘’
2
∆
‘’
*
x<->m
0          (ENTER)
∆
‘’
1
∆
‘’
+
x<->m
0          (ENTER)

L'instruction B/E est nécessaire pour passer au mode de programmation, mais non pour en sortir (mais l'instruction C/CE, oui).
16 pas, toutefois le programme demeure incomplet. J'ai bien tenté de provoquer une erreur au moyen d'une division par 0, mais l'erreur n'est pas reconnue !

Cela nous donne : J=16, et J*0,30103=4,8160
(ou J* LOG(2) calculé sur la machine = 4,8173, car ici LOG(2)=3,0108.10^-01).

Probablement un record. :D

P.S. : et en effet, si on essaie de calculer PI à partir de la tangente (1 ∆ ARCTAN 4 *), on obtient 3,1409... ce qui montre assez les difficultés de cet outsider.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7010
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

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

Message par gege » 30 oct. 2020 01:04

Bonjour,
Tiens sur la Sinclair Scientific (ou plus simplement la réplique fidèle créée par Chris Chung), on obtient 3,14404.
G.E.

Répondre

Revenir vers « Tous les Pockets »