Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Eigenmath
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Eigenmath

Posté le 11/02/2015 00:24

Lien vers la page du programme


Comme je l'avais dit, un sujet dédié à l'avancée de l'amélioration de Eigenmath (en partant de la version actuelle de Mike dispo quelque part sur le site) sur les graph *5 ! Pour l'instant c'est assez succinct car je n'ai pas tellement le temps en cet instant précis d'écrire un roman (c'est surtout que je suis un peu crevé en fait ), mais je tiendrai ça à jour ^^.



Donc comme on en avait parlé, en plus de l'arrivée d'un curseur plus proche du menu run math (clignotement et style de clignotement, scrolling...), je suis en train de bosser sur implémentation de menu "déroulants" associés à chaque touches F1 à F6, et je dois dire que c'est quasiment fonctionnel en fait, comme on peut le voir sur la capture d'écran 8).
J'ai pris le parti de stocker les infos de ce menu dans un petit fichier de config dont la syntaxe est assez simple, comme ça chacun pourra au fur et à mesure de ce qu'il est en train de faire, rajouter un menu avec les fonctions ou raccourcis qu'il voudra assez simplement. Bien entendu, l'addin crée un fichier "standard" (dont le contenu reste d'ailleurs à déterminer, je veux dire quelles fonctions choisit-on de mettre par défaut, car je suppose qu'une majorité des gens n'ira jamais bidouiller le fichier de config, donc il faut que ça soit au moins intéressant de base ) si il n'en trouve pas au lancement.

Voila pour l'instant, après je ne sais pas trop quoi dire de plus pour l'instant... Mais je vous tiens au courant !

Dans les choses qui arrivent on peut envisager :
- Une amélioration de la fonction integral( (voir avec Scientifix pour à quoi ressemble cette amélioration) (si ça n'alourdit pas trop l'addin, on est déjà à presque 250ko de base, donc c'est à voir).
- Une gestion des "scripts", ça doit être assez simple à mettre en place, vu les interfaces que propose le moteur.
- Un catalogue de toutes les fonctions (là encore il faudra réfléchir par rapport à la taille du g1a).
- Des idées ?
- Peut être éventuellement un jour potentiellement un gestion d'une sortie en pretty print, enfin, il faut que je réfléchisse un peu à ça..

Après, bien entendu le code sera dispo je pense sur Gitorious ASAP (c'est à dire sûrement demain), ainsi qu'un build pour ceux qui voudraient tester cette version en développement (qui est malgré tout je pense plus agréable à utiliser que la version actuellement disponible).
Et si des gens sont intéressés pour participer, c'est avec plaisir qu'on pourra en discuter comme toujours !

===================================================


Dernière MAJ : 6 juin 2015
Le fichier joint sur ce message est à jour, post de mise à jour ici.

Dernier message en rapport avec l'avancement du projet (8 avril 2017) : ici


Fichier joint


Pages : 1, 2, 3, 4, 5, 6, ... 9Suivante
LephenixnoirHors ligneAdministrateurPoints: 16779 Défis: 140 Message

Citer : Posté le 11/02/2015 08:46 | #


Si tu es à 250 ko, je pense que t'es pas à un petit éditeur de config près.
Suffit de mettre une liste et de choisir chaque fonction en passant par ledit catalogue.

Sinon, je ne sais pas si ça vaut vraiment le coup mais vous pouvez tenter de le passez sous gcc. Il fait du très bon boulot pour ce qui réduction des binaires (-Os).

Les scripts, c'est une excellente idée (de toute façon, tous les programmeurs diront ça mais au moins je suis le premier) !

Si je peux me permettre, tu devrais essayer de faire au mieux avec la petite taille de l'écran : concrètement par exemple, je pense que ce n'est pas nécessaire d'indiquer devant chaque fonction «[%]: », mais par exemple «%: » voire «% ». Ça a tendance à alourdir l'interface et, particulièrement sur ces petits écrans, c'est quelque chose qu'il faut éviter.
-florian66-Hors ligneAncien rédacteurPoints: 2306 Défis: 20 Message

Citer : Posté le 11/02/2015 11:26 | #


oui bonne idée lephé et je suis content que ça avance bien
In Arch, I trust ! And you ?
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 11/02/2015 12:27 | #


Une seule chose à dire : Bravo
L'implémentation de menu "déroulants" est une réussite totale, c'est propre, lisible et assez instinctif ... Génial quoi
Pour les intégrales, je suis d'accord sur le fait que c'est assez lourd mais je penses que ça en vaut la peine (si l'amélioration est notable bien sûr ). Après pour réduire la taille de l'add in, je me suis documenté et j'ai découvert que gbl08ma à notablement réduit le poids en améliorant la commande "prime(" ... dans l'Eigenmath originel c'est un tableau conséquent donc très lourd ... je vais me renseigner on verra après
Pour le catalogue, je pense que celui réalisé par gbl08ma (qui comporte des explications pour chaque commande) est utilisable et évitera de se taper tout à recopier depuis le manuel

En résumé: Bravo, Bravo et encore Bravo !! L'interface est clean, superbement présentée et facile d'utilisation, c'est un pas de géant par rapport avec la version de Mike
Bonne programmation pour la suite et n'oublie pas que (même si je sers un peu à rien ) je peux aider !!


Ajouté le 11/02/2015 à 17:59 :
PS: Y'a quoi comme commandes dans "misc" ?
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Dark stormEn ligneMembre d'honneurPoints: 10918 Défis: 176 Message

Citer : Posté le 11/02/2015 18:39 | #


Great, ça a l'air génial. Quid d'une implémentation du moteur d'affichage naturel de Lephenix ? C'est faisable sur le long terme ou vraiment trop compliqué à mettre en place ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
LephenixnoirHors ligneAdministrateurPoints: 16779 Défis: 140 Message

Citer : Posté le 11/02/2015 19:10 | #


Pour l'instant, le moteur est pas prêt pour ce genre d'implémentations.
C'est prévu pour être travaillé avec l'optimisation de WebCalc.
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 11/02/2015 22:21 | #


@LePhenixNoir (1) : Pour ce qui est de passer par GCC, c'est ce que j'avais commencé par essayer de faire, mais j'ai pas réussi à le faire fonctionner correctement, c'est à dire que si j'arrive à faire compiler, il se trouve que les sorties du moteur sont complétements buggés, puisque même pour un simple calcul (du style "1+2") il retourne une ligne complète de charabia...
Je pense que c'est dû au fait que le sdk de Casio a du être modifié pour supporter les nombres en 64bits, et que GCC supporte mal le code destiné à être compilé avec ce sdk... Donc à suivre...

Pour ce qui est de l'optimisation de l'interface niveau taille accessible, effectivement, c'est un peu plus agréable en enlevant ces crochets ;).

@Scientifix : (et Florian66) Merci ! Pour ce qui est du catalogue, effectivement c'est envisageable de reprendre le contenu du catalogue existant ;).
Dans misc, vu qu'on peut mettre un peu ce qu'on veut dans le menus déroulants (des chaines de caractère en gros qui seront "injectées" dans la zone de saisie, j'avais mis un accès rapide à " f( " et " g( " qu'on utilise assez souvent et 2-3 autres choses auxquelles on peut accéder rapidement comme ça). Mais comme je l'ai dit, pour l'instant ça reste une version de dev / debug, il faudra réfléchir un peu mieux aux menus de base.

@Dark Storm et LePhenixNoir (2) : C'est de toute manière envisageable (ça a été fait sur la version Prizm d'ailleurs), ce qu'il faut c'est surtout bien comprendre la représentation interne des symboles je pense. Ou alors travailler à partir de l'analyse d'une sortie comme elle existe déjà ? Je ne sais pas ce qui est le mieux... Il me semble qu'en utilisant les représentations symboliques, on a accès à des fonctions qui existent déjà dans le moteur qui peuvent aider (genre savoir si c'est une fraction, un nombre, isoler un exposant, un dénominateur...) et je crois que c'est cette approche qui est faite du côté de la Prizm à nouveau.
Ce qu'il faut prendre en compte aussi, c'est la gestion de la RAM, car le moteur est déjà un peu à l'étroit, et je pense que même mon implémentation des menus gagnerait à être moins gourmande (pour l'instant, tout est chargé en RAM au lancement... J'hésite à faire en sorte de consulter le fichier de config à chaque fois que c'est nécessaire...). C'est un peu le problème de cette gestion "dynamique", on peut pas trop utiliser la stack, donc on doit passer par la heap, et le moteur s'en sert pas mal... Des "malloc failures" apparaissent de temps à autre...


N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
LephenixnoirHors ligneAdministrateurPoints: 16779 Défis: 140 Message

Citer : Posté le 12/02/2015 09:25 | #


Si tu veux gagner sur la RAM, commence par empiéter sur les SaveDisp. De mémoire, il y a 2048 octets consécutifs et 1024 octets séparés.

Pour le moteur TeX, il fonctionne actuellement directement sur les str ("\frac{1}{2}"), ce qui le rend plutôt peu optimisé et assez lent.
Je pense le « ré-orienter » en utilisant des structures, du genre :
struct TeXNode
{
    unsigned type       :4;
    unsigned childnum   :4;
    unsigned baseline   :8;
    unsigned x          :8;
    unsigned y          :8;

    enum
    {
        struct TexNode **children;
        const char *text;
    }
};

Ça accélèrera grandement les traitements, y compris pour la navigation et l'édition, et je pense que si c'est un peu plus lourd en RAM c'est quand même bénéfique. Après faut voir à quel point, mais là par exemple on n'est qu'à 8 octets par structure + 4 par enfant (ou le texte en lui-même).
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 07/03/2015 18:57 | #


Est ce que l'utilisation de Ftune peut avoir un effet positif sur Eigenmath ? Une augmentation de la vitesse de lecture de la RAM doit aider non ?
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
-florian66-Hors ligneAncien rédacteurPoints: 2306 Défis: 20 Message

Citer : Posté le 07/03/2015 21:33 | #


Il existe une version beta de eigenmath ?
In Arch, I trust ! And you ?
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 12/03/2015 17:59 | #


Nemhardy n'a pas encore rendu public la version sur laquelle il travaille.

D'ailleurs voici une petite liste des fonction par catégorie que j'ai faite :

Linear algebra:
abs(), adj(), cofactor(), contract(), cross(), curl(), det(), dim(), dot(), eigen(), eigenvec(), hilbert(), inv(), outer(), transpose(), unit(), zero()
Programmation:
and(), check(), do(), filter(), for(), isinteger(), not(), number(), or(), print(), stop(), test(), >, <
Trigo:
arccosh(), arcsin(), arcsinh(), arctan(), arctanh), cos(), cosh(), expcos(), expsin(), sin(), sinh(), tanh()
Complexes:
arg(), clock(), conj(), imag(), mag(), polar(), real(), rect()
Calculus:
circexp(), d(), divisors(), eval(), integral(),product(), sum(), taylor(), simplify()
arithmétique:
gcd(), isprime(), lcm(), mod(), prime(),
Polynomials:
nroots(), quotient(), roots()

Ma liste n'est pas complète pour l'instant mais comporte déjà quelques fonctionnalités pour chaque catégorie
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 15/03/2015 11:03 | #


Par rapport à une version "beta", je pensais avoir laissé un fichier joint à moment donné, mais apparemment non, donc je m'occupe de ça dans l'aprem. Pareil pour les sources je ne les avais pas mises sur gitorious car il y allait avoir cette histoire de migration vers gitlab dans des délais assez court au moment où j'avais fait ça, du coup là aussi, je m'en occupe cette aprem.
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 15/03/2015 11:06 | #


Ok, nickel J'ai hâte d'avoir ça on calc !!
J'avais aussi une petite question, est ce que l'utilisation de Ftune peut avoir un effet positif sur Eigenmath ? Une augmentation de la vitesse de lecture de la RAM doit aider non ?

JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 15/03/2015 11:09 | #


Ça pourra sans doute accélérer les choses, mais le principal facteur à prendre en compte c'est plis la quantité de RAM dispos que le vitesse de lecture de celle ci...
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 15/03/2015 11:12 | #


Ah ok ... dommage C'est juste que je pensais à la commande "intégrales améliorées" que je t'avais envoyé et qui me semblait très très grosse ... la calculatrice n'est peut être pas capable de la faire tourner avec si peu de RAM
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Dark stormEn ligneMembre d'honneurPoints: 10918 Défis: 176 Message

Citer : Posté le 15/03/2015 11:23 | #


Pas moyen de créer une sorte de swap ? Ou alors ça serai trop long en vitesse d'accès ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
LephenixnoirHors ligneAdministrateurPoints: 16779 Défis: 140 Message

Citer : Posté le 15/03/2015 11:51 | #


Au niveau de la RAM, on a :
→ 48 kio de heap dont au moins 45 kio sont allouables ;
→ 64 kio de stack dans laquelle on peut potentiellement allouer si on tape en haut pour réduire la taille ;
→ La mémoire principale.

Ajoutez à cela :
→ De la ROM à l'espace logique 0x00300000 pour des données constantes à vitesse d'accès réduite ;
→ 3 fois 1024 octets, donc 2048 potentiellement groupés sur l'espace de sauvegarde de SaveDisp().

À mon avis y'a déjà largement de quoi faire.
Drac0300Hors ligneMembrePoints: 839 Défis: 39 Message

Citer : Posté le 15/03/2015 11:55 | #


Il faudrait faire zram pour casio
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 15/03/2015 12:12 | #


@Lephé: C'est vrai que ça fait pas mal je ne savais pas qu'il y avait autant !! Maintenant tout le problème est d'utiliser le plus possible de la RAM disponible.
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 15/03/2015 20:51 | # | Fichier joint


@LePhenixNoir : le problème n'est pas tant pour l'instant la RAM utilisée par ce qu'on rajoute par dessus le moteur, là on a toute gestion, c'est surtout que le moteur est un peu à court en lui même, et qu'il faut regarder bien en profondeur pour comprendre comment il gère la mémoire, et là c'est un peu moins rapide ^^.

Sinon, comme promis, voici une version de développement en fichier joint, telle qu'en est le projet actuellement; au premier lancement un fichier fmenu.cfg se créera à la racine de la mémoire de stockage (pour plus tard on déportera sans doute tout dans un dossier dédié, ça sera plus propre je pense, mais là c'est du indev ).
Donc par rapport à la version "de base" dispo sur le site, les principales améliorations actuelles sont :
- Refonte (amélioration ?) du curseur (clignotement, état, meilleur scrolling et édition (à mon goût)...).
- Ajout des menus utilisables avec les touches de F1 à F6 (et accès rapide en tapant le numéro en face de la fonction au clavier ou en scrollant puis [exe])

J'ai embarqué un set de menu de base calqué sur ce que propose Scientifix, mais pour l'instant j'ai limité (dans le code) le nombre d'entrées à 7 par menu, ce qui correspond à ce que peut afficher l'écran en terme de hauteur. On pourrait mettre en place un système de scrolling dans ces menus, mais je pense que ça n'est pas très judicieux pour de l'accès rapide à des commandes, sachant qu'un catalogue complet sera dispo à côté. Vous pouvez vous amuser à modifier le fichier fmenu.cfg pour modifier les menus justement, en enlever carrément, les renommer, ou modifier les entrées, puis en partageant votre fichier si vous avez quelque chose de pratique selon vous ! La syntaxe est assez triviale je pense une fois qu'on a vu l'addin en fonctionnement.

Dites moi si vous constatez plus de "malloc failure" qu'auparavant sur la première version au passage.

Je m'occupe de mettre en ligne le code d'ici peu.
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 15/03/2015 20:57 | #


Génial, je mets ça demain sur ma calculatrice et je te fais un rapport complet
Bravo pour le travail fait c'est génial !!

Par contre, comment on modifie le fichier "menu" ?
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Pages : 1, 2, 3, 4, 5, 6, ... 9Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 96 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd