quelques remarques

Interface QT

Modérateur : xcasadmin

Répondre
frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

quelques remarques

Message par frederic han » mar. juil. 17, 2012 10:30 am

Bonjour,

voici quelques remarques que j'ai note de nature assez variees:

1) f:=(x+y+z+1)^35+1
puis p:=normal(f*(f+1)) est anormalement long (par rapport a ^34) et l'appui sur le bouton stop donne une sortie de qcas avec message:

Stopped by user interruption. Error: Bad Argument Value
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.

terminate called after throwing an instance of 'std::runtime_error'
what(): Stopped by user interruption. Error: Bad Argument Value
Abandon (core dumped)


Quelque remarques generales (ou indications pour des fonctionalites futures):

2) Est ce voulu que les feuilles aient le meme contexte?
3) En geometrie c'est plus joli que sous xcas, mais ce que j'aime bien sous xcas c'est de pouvoir inserer des objets par clic-clic et aussi par leur code: Ex j'utilise le clic-clic pour inserer un objet comme une aide a la syntaxe, et ensuite j'ajuste/edite le code a gauche avec les parametres qui m'interessent, ou par copier/coller de calculs faits avant.

Je pense que ca serait tres interessant que votre fenetre "code de la figure" soit plus grande et editable facilement et qu'il soit possible de la garder ouverte.

4) Est ce que bernard envisage d'ajouter les flottants multi precision ou bien est ce que mpfr est perdu?

5) On peut avoir l'impression que:
(1,2,3)
et
[[1,2,3]]
donnent le meme affichage ce qui est assez genant. (En fait l'un a des virgules et pas l'autre).
De maniere generale, je pense que ca serait interessant d'avoir le choix entre une sortie mise en forme et une sortie brute proche de celle de xcas.

6) Comment copier une partie d'une reponse?
Peut on copier/coller depuis le catalogue vers une ligne d'entree
7) r:=implicitplot(x^4-x*y-y^2+2.0,[x,y]),0
me donne [],0
8) histogram,plotlist,camembert m'ont l'air OK. il ne semble manquer que diagramme_batons.


voila, avec tous mes encouragements.

Frederic

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

Re: quelques remarques

Message par parisse » mer. juil. 18, 2012 12:01 pm

Sur la question du support de mpfr, ca devrait marcher pour qcas meme si je n'ai pas essaye, mais il faut au prealable revenir de tommath a gmp. Pour l'instant j'utilise tommath pour qtgiac (et donc loic utilise aussi tommath), parce que ca fonctionne pour android, alors que je n'avais pas reussi a cross-compiler gmp. L'ideal serait evidemment d'arriver a cross-compiler gmp et mpfr pour android et de les integrer dans qtgiac.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: quelques remarques

Message par frederic han » jeu. juil. 19, 2012 12:51 pm

J'ai fait un petit essai pour qcas avec gmp et mpfr.

Le blocage en 1) me semble venir de libtommath avec gmp ca passe. (mais on a le meme message si l'on interrompt)

on peut bien calculer en multiprecision mais sans le faire afficher sinon ca plante car l'affichage n'est surement pas encore implemente.

a+
Fred

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

Re: quelques remarques

Message par parisse » jeu. juil. 19, 2012 6:52 pm

Comment as-tu modifie le .pro pour qcas? Ca utilise la libgmp et libmpfr ou tu as inclus directement gmp et mpfr dans l'arborescence?

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: quelques remarques

Message par frederic han » ven. juil. 20, 2012 9:33 am

Salut,

non j'ai juste fait un test en modifiant le Makefile directement et en utilisant des libgmp et libmpfr (et les -dev) presents sur ma machine via les .deb

a+
Fred

loic
Messages : 168
Inscription : ven. mars 14, 2008 7:20 pm

Re: quelques remarques

Message par loic » ven. juil. 20, 2012 8:47 pm

Bonjour,

Je suis actuellement en gros déméngaement donc Qcas sera laisser de côté, pendant encore une quinzaine je pense...

Qq réponses rapides néanmoins:

2) Oui, le fait que les feuilles aient le même contexte est voulu.
J'imaginais par exemple lors du'ne étude de fonctions l'étude analytique dans un onglet de calcul formel puis tracer la courbe avec un onglet de géo 2D par exemple.
Dans bien d'autre cas de figure il peut être intéressant que les onglets soient "reliés" entre eux. ça va causer aussi des soucis d'utilisation je l'admet... donc à réfléchir

3) A terme, je compte rajouter aussi une ligne de commande utilisateur mais ... chaque chose en son temps (ceci permettra d'ailleurs sûrement d'avoir plutôt un contexte par onglet)

5) Totalement d'accord, néanmoins, l'affichage des matrices multilignes est tellement plus joli sans virgule... A vrai dire, je n'ai fait que reprendre le code de JP Branchard.
Rajouter une option d'affichage ne coute rien en effet, ça doit être facile à faire (fignolage)

6) Pour copier une réponse, clic droit sur le widget
copier depuis le catalogue, CTrl-C Ctrl-V doit marcher.
(Sous Linux j'abuse de la sélection puis du clic milieu je dois avouer....)

1,7,8: Merci des retours, je regarde ça dès que possible

++

Loïc

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: quelques remarques

Message par frederic han » mer. sept. 19, 2012 12:16 pm

Bonjour a tous,

*)
Pour l'affichage des multiprecisions, j'ai ajoute dans la fonction gen2mathml de giac/mathml.cc

les lignes:

case _REAL:
return "<mn>"+e.print(contextptr)+"</mn>";

et la ca marche (evalf(pi,100)) s'affiche bien. (toujours avec gmp et mpfr sur ma machine)

*)
En revanche j'ai l'impression qu'il reste un probleme de conversion inutile pour les longues expressions.
Par exemple, bien que normal((a+b+c+1)^16) soit intercepte et affiche:
Done
je vois dans le terminal defiler pleins de messages et le temps est vraiment plus long que normal((a+b+c+1)^16):;
de meme, normal((a+b+c+1)^26) sera beaucoup plus long que le precedent alors qu'avec :; on ne voit pas trop la difference.


EDIT: Je viens de remarquer que la version windows n'a pas trop l'air d'avoir ce probleme.


*) Une autre remarque, j'ai fait une fois des tests de longues boucles sous qcas et xcas, et ca avait l'air plus rapide sous qcas.

Voila,

a bientot.

Frederic

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: quelques remarques

Message par frederic han » lun. oct. 08, 2012 7:22 pm

Bonjour,

En fait j'ai fait un essai avec la veritable libgiac pour compiler, et la les implicitplot plus compliques cd
tels que (x^2-y^3-1) marchent nickel avec qcas.

J'ai aussi trouve comment supprimer l'affichage trop long des infos dans le terminal, du coup ca devient utilisable. (avec la modif sur mathml pour les multiprecisions)

En revanche j'ai remarque ce pb sur qcas, androcas et qtgiac:

L'evaluation ne se fait pas comme dans giac. Il y a un probleme de profondeur:

w:=[a,b];
a:=1;
w; donne [a,b]
il faut faire eval(x) pour avoir [1,b]

Est ce que quelqu'un sait ou ca se regle? j'ai trouve plein d' eval(g,1 et je me demande s'il faut augmenter le niveau quelque part)

a bientot

Frederic

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

Re: quelques remarques

Message par parisse » mar. oct. 09, 2012 8:16 am

C'est surement des appels a eval(...) qui se font avec comme 2eme argument 1. Dans xcas, en mode interactif (mais pas en mode programme) l'evaluation se fait avec eval_level(contextptr) comme 2eme argument, ce qui est par defaut 25.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: quelques remarques

Message par frederic han » mar. oct. 09, 2012 3:15 pm

Ca y est, je pense avoir trouve:

Dans: CasManager.cpp ligne 225:

void CasManager::evaluate(){
/* gen var("A",context);
gen rep(eval(var,1,context));
qDebug()<<"test..."<<QString::fromStdString(rep.print());

*/
if (stopThread->isRunning()){
stopThread->wait(2000);
}

printCache="";
//modif fred: if (giac::make_thread(expression,1,CasManager::callback,(void*)context,context))
if (giac::make_thread(expression,eval_level(context),CasManager::callback,(void*)context,context))



Alors le comportement depend bien de la valeur imposee dans le menu config avancee.
Fred

Répondre