fonctions sommet et op

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

cdeval
Messages : 192
Inscription : mer. juin 03, 2009 4:28 pm

fonctions sommet et op

Message par cdeval » mar. nov. 09, 2010 12:36 pm

Salut Bernard,
je suis en train de travailler sur la possibilité de manipuler des expressions algébriques directement dans le traitement de texte de OOo.
J'utilise sommet et op pour recréer l'arbre d'une expression.
Petit soucis pour la mise en forme, je perds les parenthèses éventuelles.
par exemple avec

Code : Tout sélectionner

op(5*x)
et

Code : Tout sélectionner

op(5*(1+x))
: pas de différence sur la présence ou non de parenthèses.
Dans les deux cas, il n'y en a pas dans la réponse.
A part farfouiller dans la chaine de caractère fournie à 'op', vois-tu un moyen avec giac de savoir s'il y avait des parenthèses ou non autour d'un argument ?
A+

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: fonctions sommet et op

Message par parisse » mar. nov. 09, 2010 7:12 pm

Salut!

il n'y a pas de méthodes dans giac qui permet de savoir s'il faut des parenthèses ou pas (je ne sais pas récupérer automatiquement les priorités des opérations à partir du parser, lignes 134 et suivantes de input_parser.yy), donc je fais ça à la main pour les quelques cas les plus courants (essentiellement les arguments de + et *). Tu peux regarder la fonction need_parenthesis (dans usual.cc) ou comment fonctionne symbolic::print dans symbolic.cc pour te faire une idée.

cdeval
Messages : 192
Inscription : mer. juin 03, 2009 4:28 pm

Re: fonctions sommet et op

Message par cdeval » mer. nov. 10, 2010 12:39 pm

ok,
bon finalement, je vais utiliser mon parser perso que j'utilise déjà pour analyser des expressions rentrées par l'utilisateur. J'aimais bien 'sommet' et 'op' car je trouvais ça élégant mais, à l'usage, je ne maitrise pas trop ce qui sort et ça me gêne. Par exemple op((x+1)*(x+2)*(x+3)) me renvoie trois arguments pour * alors que je ne construis mes arbres qu'avec 2 arguments pour la multiplication. Par contre, je vais m'en servir quand même pour lire les arguments des fonctions giac comme 'integrate', cela simplifiera mon code.

Dès que mon extension sera prête, je te la montre.
A+

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: fonctions sommet et op

Message par parisse » mer. nov. 10, 2010 3:24 pm

Oui, dans giac, le + et le * peuvent avoir n'importe quel nombre d'arguments. Ca evite d'avoir des arguments a des niveaux artificiellement differents (c'est surtout important pour le +).
a+

cdeval
Messages : 192
Inscription : mer. juin 03, 2009 4:28 pm

Re: fonctions sommet et op

Message par cdeval » mar. nov. 16, 2010 1:04 pm

je suis en train de manipuler mes expressions via mes arbres et, effectivement, je comprends ta remarque. Je vais aussi permettre plus de 2 arguments aux opérations + et *.
A+

Répondre