π
<-

Accélérer AutoCalc sur TI-83/82Stats/76.fr

Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby critor » 19 Sep 2010, 11:20

AutoCalc est 2.5 fois plus lent sur sur TI-83+ basique que sur TI-83+SE/84+.
C'est parce que le processeur de la TI-83+ basique tourne à seulement 6MHz, contre 16MHz pour les autres.

Les TI-83/82Stats/76.fr ont aussi un processeur tournant à 6MHz, mais AutoCalc est encore plus lent sur ces modèles!!!
Pourquoi?...


AutoCalc est composé de divers sous-programmes codant des algorithmes destinés à chercher les formes exactes dans différents ensembles de nombres.

Parmi ces sous-programmes, il y en a qui sont appelés beaucoup plus souvent que d'autres:
  • Z1FRAC, qui fait la même chose que la commande basique -Frac
  • Z1RAC, qui simplifie un radical sous la forme a*rac(b)

AutoCalc sera donc sensiblement plus rapide en optimisant ces programmes.

C'est pour cela que dans les 3 versions, TI-83+/84+, TI-83/82Stats, et TI-76.fr, l'algorithme très simple de Z1RAC est codé en assembleur.


Parlons maintenant de Z1FRAC.
Il n'y a aucun moyen à ma connaissance en TI-Basic de récupérer les numérateur et dénominateur lorsque l'on utilise la commande -Frac.
Nous nous voyons donc condamné à coder un algorithme "lourd" de mise en fraction...

Ou alors d'utiliser de l'assembleur pour récupérer directement en mémoire les composantes du résultat de -Frac.

C'est cette dernière solution qui est mise en œuvre sur TI-83+/84+, car j'ai trouvé une routine toute faite en ce sens sur Internet.

Je n'ai pas pu trouver de routine équivalente sur TI-83/82Stats/76.fr, ces modèles n'étant pas compatibles avec les TI-83+ pour l'assembleur. Ils ont donc droit à l'algorithme basic complet, d'où la lenteur sur ces systèmes...


Et si, maintenant que j'en connais/comprends beaucoup plus sur ces calculatrices qu'il y a 2 ans, j'essayais de convertir le programme assembleur moi-même?

Les TI-83/82Stats/76.fr obtiendraient alors des performances identiques aux TI-83+ basiques avec AutoCalc! :#top#:


Allons-y!

En désassemblant à la main le programme assembleur de mise en fraction TI-83+, j'obtiens ça:
Code: Select all
b_call    _ZeroOP1
ld hl, op1+1
ld (hl), 'W'
b_call    _RclVarSym
b_call    _ToFrac
b_call    _PushRealO1
b_call    _ZeroOP1
ld hl, 'W'
ld (op1+1), hl
b_call    _StoOther
b_call    _OP1ExOP2
b_call    _PushRealO1
b_call    _ZeroOP1
ld hl, 'I'
ld (op1+1), hl
b_call    StoOther
RET


Voici les adresses mémoire TI-83+ de ces différentes mnémoniques, visibles en big-endian (à l'envers) dans le code:
Code: Select all
OP1 = 8478h
_ZeroOP1 = 41C5h
_RclVarSym = 4AE3h
_ToFrac = 4657h
_PushRealO1 = 43BAh
_StoOther = 4AD4h
_OP1ExOP2 = 421Fh


Sauf erreur, voici maintenant leurs équivalents sur TI-83:
Code: Select all
OP1 = 8039h
_ZeroOP1 = 428Eh
_RclVarSym = 4EECh
_ToFrac = 48D5h
_PushRealO1 = 4536h
_StoOther = 4ED8h
_OP1ExOP2 = 4306h



Je m'étais donc dit qu'en remplaçant les adresses directement dans le code, ça marcherait...
Et j'ai obtenu un "RAM Cleared", sur TI-76.fr et TI-83.

J'ai du faire une erreur, ou oublier un truc quelque part...
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42395
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby critor » 19 Sep 2010, 15:26

Yes!!! :#top#:


Viens de réussir une exécution d'un Z1FRAC assembleur sur TI-83, ROM 1.08.

Dans le programme originel TI-83+, les appels de routines système utilisent le code "EF".
ce qui curieusement provoquait un reset sur TI-83...

J'ai remplacé tous les appels "EF" par des appels "CD" et apparemment ça marche sur TI-83.

Je connais mal la différence entre ces 2 types d'appels systèmes...


Si il n'y a pas d'autre obstacle sur ma route, vous aurez peut-être ce soir la release d'AutoCalc 3.1, dont la version TI-83/82Stats/76.fr prendra moins de place en mémoire tout en étant plus rapide!!! :#top#:
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42395
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby jacques » 19 Sep 2010, 15:38

Bravo ! :#top#:

Vu qu'il y a pas mal de lycéens qui ont des ti82STATS, ton optimisation en aidera plus d'un !
Sublime Chevalier Elu des TI

Venez visiter mon site sur les TI : Ti Softwares !!
Jetez un coup d'œil à mes programmes pour TI !!

Vous voulez faire des super programmes pour votre TI z80 ? Alors apprenez l'Axe Parser !!
User avatar
jacques
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 14.9%
 
Posts: 2057
Images: 0
Joined: 25 Aug 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: prépa PSI

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby critor » 19 Sep 2010, 16:10

Les premiers tests de comparaison sur vraies calculatrices sont impressionnants! :#top#:

Côte à côte: 2 TI-82 Stats.fr (une brune et une noire) faisant tourner respectivement les version 3.0 et 3.1 d'AutoCalc.


La différence se voit à l'oeil nu! En gros, la version 3.1 est 30% plus rapide, ce qui est une véritable bouffée d'oxygène lors de la recherche de formes exacte de nombres complexes par exemple!! :#top#: :#top#:

En plus, la version 3.1 prend moins de place!!! :#top#: :#top#: :#top#:

En prime, la version 3.1 est plus fiable!!!! :#top#: :#top#: :#top#: :#top#:
(j'avais du "brider" le programme basic de mise en fraction, sinon il pouvait chercher très longtemps...)


AutoCalc 3.1, bientôt sur TI-Bank!!!!! :#tritop#:
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42395
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby Lionel Debroux » 19 Sep 2010, 17:35

:#top#:
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6873
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby lostro » 19 Sep 2010, 18:20

Wow super, j'attends ca avec impatience
User avatar
lostro
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 36%
 
Posts: 15
Joined: 18 Sep 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale s

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby critor » 19 Sep 2010, 21:27

lostro wrote:Wow super, j'attends ca avec impatience



Comme promis, AutoCalc 3.1 est dès à présent en ligne!
http://tiplanet.org/index.php?mod=ar ... voirid=981

Nouveautés:
  • cœur assembleur de mise en fraction pour les versions TI-82Stats/83 et TI-76.fr, diminuant de temps de calcul d'environ 30% :#top#:
  • correction d'un bug dans les versions TI-82Stats/83 et TI-76.fr pour la résolution d'équations du 2nd degré, grâce à lostro
  • correction d'un bug dans la version TI-76.fr pour la gestion des formes binomiales

Version TI-83+/84+ inchangée.


Grâce au nouveau coeur, le programme tourne enfin sur TI-82Stats/83/76.fr à la même vitesse que sur TI-83+, et avec la même fiabilité que sur TI-83+/84+! :#top#:

Une grande nouvelle pour les possesseurs de TI-82Stats.fr, encore majoritaires dans les lycées.


Si vous écrasez les fichiers d'une ancienne version, vous pouvez vous débarrasser de Z1FRCBAS désormais inutile, afin d'économiser de la mémoire.


Bons calculs! :#top#:
http://tiplanet.org/index.php?mod=ar ... voirid=981
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42395
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby Adriweb » 19 Sep 2010, 22:50

Bravo ! :)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14840
Images: 1133
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby critor » 20 Sep 2010, 12:14

J'ai newsé sur AutoCalc 3.1 -> http://tiplanet.org/index.php?mod=ne ... iresid=862


Mis à part la correction de bugs éventuels, je ne prévois plus d'ajout de fonctionnalités dans un futur proche.

En effet, AutoCalc occupe déjà 6 à 10Ko selon les modules installés (9Ko avec les modules les plus utiles).


Si je vais au-delà de cette taille, on pourra lui faire les mêmes reproches qu'à SupraMaths.
Je dois laisser de la place pour que l'utilisateur installe d'autres choses.


De plus, l'absence de programmation fonctionnelle ne me permet pas de lui donner les mêmes capacités que mCAS sur Nspire.

On peut certes "simuler" des variables locales en enregistrant en début de sous-programme toutes les variables globales utilisées dans une liste et en les restaurant en fin de programme, ce qui permet même de faire de la récursivité (sous-programme qui s'appelle lui-même).

La première version que j'avais faite fonctionnait ainsi, mais les performances en étaient désastreuses.


Je n'utilise plus que des variables globales, et je crois que l'ensemble des sous-programmes d'AutoCalc lisent/modifient presque 100% des variables de type réel de la calculatrice (tout l'alphabet + même certaines bornes de la fenêtre graphique en mode paramétrique ou conique).

La TI-76.fr ne disposant pas de ces dernière bornes, j'ai du les remplacer par une liste de nombres, qui prend plus de place et de temps à gérer.

C'est une autre raison pour laquelle AutoCalc ne peut "quasiment" plus évoluer.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42395
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Accélérer AutoCalc sur TI-83/82Stats/76.fr

Unread postby tama » 20 Sep 2010, 17:42

Si je ne dis pas de bêtise, le EF des ti83+ correspond a l'instruction bcall, pour appeler des rom call, alors que c'est call sur ti83, d'où le CD.
Excellent travail sinon ;)
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Next

Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 6 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2447 utilisateurs:
>2403 invités
>35 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)