un 8 bits est-il bon en calcul ;-)

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

un 8 bits est-il bon en calcul ;-)

Message par Carl »

un p'tit test

10 A=2
20 FOR N=1 TO 20
30 A=SQR(A)
40 NEXT N
50 FOR N=1 TO 20
60 A=A^2
70 NEXT N
80 PRINT A

C64
Image

Alice Matra 32
Image

VG5000 Basic 1.1
Image

Hector HR+
Image
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17490
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

:D :D :D

L'Alice s'en sort encore le mieux
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

je suis surpris des performances du VG5K :cry:
Avatar de l’utilisateur
Patrice
Messages : 1544
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Message par Patrice »

J'avais bien raison de choisir Alice,bien à plus tard le téléphone sonne :lol: :lol:

PS: j'espère qu'à Bercy ils n'utilisent pas d'Hector HR +
mais plutôt des VG5000 Basic 1.1 :lol: :lol: :lol:

Au passage l'émulateur DCAlice 32 donne un résultat de calcul identique à Alice 32 .8)

A+
Daniel
Messages : 17410
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Comme souvent la différence ne vient pas de la machine, mais du programmeur. Pour le VG5000 c'est Microsoft. Je me souviens qu'à l'époque je faisais du calcul scientifique sur PC, et j'ai dû abandonner le compilateur Microsoft. Mes algorithmes, en théorie convergents, oscillaient au lieu de converger. Plus tard il y a eu les compilateurs QuickBasic et Professional Basic, qui ont corrigé le problème.

Souvent le programmeur doit choisir un compromis entre la précision et la rapidité d'exécution. Certains veulent calculer plus vite que leurs concurrents, au détriment de la justesse.

Enfin il faut se méfier des résultats plus ou moins aléatoires des boucles de calculs répétitifs. A ce petit jeu on peut prendre en défaut n'importe quel language, pour peu qu'on augmente déraisonnablement le nombre de boucles. Ce n'est plus du calcul, c'est une loterie. Une machine peut gagner par chance, mais perdre dans un autre contexte.
Exemple : le TO7 en double précision trouve
- 1.998754739761353 avec une boucle de 16
- 1.968839645385742 avec une boucle de 17
- 2.033019304275513 avec une boucle de 18
- 2.16828465461731 avec une boucle de 19
- 2.16828465461731 avec une boucle de 20
- 2.033019304275513 avec une boucle de 21
- 4.133166313171387 avec une boucle de 22 (dépassement de capacité)
- 17.08306312561035 avec une boucle de 23 (dépassement de capacité)
21 boucles donnent un meilleur résultat que 19, alors qu'on aurait pu attendre le contraire.

Autre remarque : d'après les résultats affichés (9 chiffres significatifs contre 6 pour les autres machines), le C64 et l'Alice 32 doivent utiliser un format différent pour les nombres en virgule flottante, ce qui explique leur net avantage. En revanche je suis prêt à parier que le temps d'exécution est plus long.

En passant, je signale une erreur dans la version Hector HR+ : ligne 50 il faut remplacer T par N. Je ne sais pas comment le programme a pu s'exécuter.

Pour info :
- le TO7 en Basic 1.0 trouve 2.162828 (en simple précision) et 2.16828465461731 (en double precision). Comme la double précision n'améliore pas le résultat, je suppose que la fonction SQR et l'opérateur ^ calculent en simple précision.
- le MO5 trouve aussi 2.162828
- le TO9+ en Basic512 trouve 1.64872
- le MO6 en Basic128 trouve aussi 1.64872
Dernière modification par Daniel le 16 janv. 2008 11:29, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Patrice
Messages : 1544
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Message par Patrice »

Pour redevenir un peu plus serieux ,je confirme que pour l'Alice le calcul s'effectue bien en double précision pour le système,mais curieusement ce mode n'est pas accessible à la programmation par l'utilisateur,ceci était peut être dû à un problème de place dans la prom qui avait nécessité,à l'époque,des choix drastiques de la part de Microsoft je pense.

Concernant le calcul en boucle,cela dépend bien souvent de la manière dont elle est gérée dans la pile système de la machine,de la précision de l'arrondi,l'erreur de calcul étant cumulative dans ce mode de calcul,elle dépend de ce fait,directement du nombre d'itérations de la boucle .
Pour preuve ,à comparer aux boucles de temporisation qui sont basées sur des nombres entiers donc sans arrondi et qui sont linéaires quelque soit le nombre d'itérations .
Daniel
Messages : 17410
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Tiens, tiens... voilà qui confirme les talents méconnus de l'Alice. C'est peut-être la seule machine familiale de l'époque à extraire les racines carrées et calculer les exponentielles en double précision :D
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

En passant, je signale une erreur dans la version Hector HR+ : ligne 50 il faut remplacer T par N. Je ne sais pas comment le programme a pu s'exécuter.
Daniel, error or not ?
bizarre ! faudrait que je teste avec 2 boucles for next imbriqués

Image

carl
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17490
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

Daniel a écrit :...9 chiffres significatifs contre 6 pour les autres
Patrice a écrit :...je confirme que pour l'Alice le calcul s'effectue bien en double précision pour le système
Question très naïve, il n'y a pas une contrainte ou limite imposée pas le processeur?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

cherchez l'erreur :roll:


Image

Image
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17490
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

Visiblement le VG se moque de la lettre, il prend en compte simplement la boucle "for - next"
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

Alice précision sur 16 bits....

extrait d'un article hebdogiciel assez acide sur l'alice 90 :

Image
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

fneck a écrit :Visiblement le VG se moque de la lettre, il prend en compte simplement la boucle "for - next"
Fabien, tu ne suis pas :roll:

c'est le basic de 'Hector HR+ :wink:

carl
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17490
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

Carl a écrit :Fabien, tu ne suis pas :roll:
:oops: Oups, oui bien sûr, le basic de l'Hector, évidemment :wink:
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13290
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

le C64 et l'Alice 32 doivent utiliser un format différent pour les nombres en virgule flottante :
le C64 :Floating point arithmetic



carl
Répondre