giac icas windows

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

Modérateur : xcasadmin

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » lun. mars 14, 2016 10:29 pm

Bonjour,

Je fais suite à mon post de ce matin : http://xcas.e.ujf-grenoble.fr/XCAS/view ... f=4&t=1698

1) Quelle différence y-a-t'il entre icas et giac ?
J'ai fait quelques essais sur Win7 et sur Ubuntu 15.10 et le comportement est le même, c'est à dire que le batch dont la syntaxe est :
[Rep Xcas]/icas [Rep Utilisateur]/giac.in & >[Rep Utilisateur]/giac.out en remplaçant /icas par /giac
fait ce que j'attends.

2) Par contre sous Windows XP (testé sur 2 postes différents), le fichier giac.out ne s'écrit pas en lançant le fichier batch. J'obtiens même un plantage si le batch est lancé depuis LibreOffice.
Est-ce un problème connu ?

Merci pour vos réponses.
Didier DP
www.dmaths.org

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

Re: giac icas windows

Message par parisse » mar. mars 15, 2016 6:25 am

Historiquement, la version en ligne de commande de xcas s'appelait cas, sans le x caracterisant des applications fenetrees sous Unix (x de X11). Mais cela creait un conflit avec un autre package debian, le prefixe i a ete ajoute (i comme interactif). Et pour l'integration dans texmacs, on m'a demande de le nommer giac. Donc les 2 executables sont identiques (c'est meme un lien symbolique sous linux et mac). Je ne vois pas pourquoi ca provoque un plantage sous xp, mais du moment qu'un des deux marche...
La release de l'extension dmaths avec calcul formel est prevue bientot?

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » mar. mars 15, 2016 7:38 am

Bonjour,

J'ai fait pas mal de tests. Il y a toujours un bug avec Windows XP.
Parmi les tentatives : rxvt.exe ./icas.exe donne accès à la console donc fonctionne, mais je n'ai pas su suis pas aller plus loin c'est à dire trouver un contournement pour passer de giac.in à giac.out
Je vais faire encore quelques tests aujourd'hui sur d'autres PC pour vérifier si c'est bien avec Windows XP qu'il y a problème.

Pour la release de Dmaths, c'est pour bientôt.
La version actuelle permet de convertir 1/2+1/3 en 5/6 via icas.
Je pense avancer un peu d'ici demain.
Je vous communiquerai un lien de téléchargement.

Cordialement.
Didier DP
www.dmaths.org

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

Re: giac icas windows

Message par parisse » mar. mars 15, 2016 8:59 am

ok, j'avais lu trop rapidement, les 2 plantent sous XP. On peut peut-etre contourner en utilisant fopen et fprint pour generer le fichier de resultat directement depuis icas et pas par la redirection des flux d'entree-sortie qui semblent mal geres par windows?

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » mar. mars 15, 2016 12:24 pm

Du coup j'ai fait de nouveaux tests.
1) Je confirme que sur trois ordinateurs testés sous Win 7 cela passe.

2) J'ai tenté avec fopen, fprint.
Avec Ubuntu, le fichier giac.in

Code : Tout sélectionner

Resultat:=(1/2+1/5);
Sortie:=fopen("/home/didier/Documents/Tests/giac.out");
fprint(Sortie,Unquoted,Resultat);
fclose(Sortie);
Le fichier giac.out obtenu en sortie

Code : Tout sélectionner

7/10
Avec windows XP comme avec Win 7

Code : Tout sélectionner

Resultat:=(1/2+1/5);
Sortie:=fopen("C:\Users\didier\Documents\giac.out");
fprint(Sortie,Unquoted,Resultat);
fclose(Sortie);
J'ai fait de nombreuses tentatives du type :
C:\xcas\icas.exe C:\Users\didier\Documents\giac.in
C:\xcas\rxvt.exe C:\xcas\icas.exe C:\Users\didier\Documents\giac.in
avec des guillemets ou sans, pas de fichier giac.out
et cette fois si sous WinXp comme sous Win 7.
Didier DP
www.dmaths.org

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

Re: giac icas windows

Message par parisse » mar. mars 15, 2016 12:54 pm

Le chemin n'est probablement pas bon. Essayez de mettre un nom de fichier sans chemin pour voir ou le fichier est cree, probablement dans le repertoire d'install de Xcas, ou de mettre un chemin de type /cygdrive/c/ puis un sous-repertoire dans l'arborescence du disque C:. Je ne pense pas que /home soit reconnu, meme si vous avez une install de cygwin, parce que icas va utiliser sa propre version de cygwin, et de toutes facons le home de cygwin n'est pas le repertoire racine de l'utilisateur tel qu'affiche dans l'explorateur windows.

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » mar. mars 15, 2016 7:27 pm

Bonsoir,

Je n'ai pas beaucoup avancé.
Mes fichiers testés :
Giac.in

Code : Tout sélectionner

Resultat:=(1/5+1/9);
Sortie:=fopen("giac.out");
fprint(Sortie,Unquoted,Resultat);
fclose(Sortie);
Runicas.bat

Code : Tout sélectionner

C:\xcas\icas.exe  giac.in
ou

Code : Tout sélectionner

C:\xcas\icas.exe  <Chemin Utilisateur>\giac.in
Dans les deux cas ci-dessus, avec win7 ou winXP, le fichier giac.out se crée, dans le même répertoire que giac.in si je double clique sur le fichier runicas.bat

Par contre avec l'API de Libreoffice, si je lance l'exécution du fichier runicas.bat cela fonctionne pas.
Même chose, si je crée un exécutable avec AutoHotKey qui lance runicas.bat

Donc toujours à la la recherche d'idées. Même si WinXP est en cours d'abandon....

Merci pour l'aide.
Didier DP
www.dmaths.org

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » mer. mars 16, 2016 1:12 pm

Bonjour,

J'ai trouvé la solution. Le problème vient effectivement du répertoire d'exécution du fichier batch.
Lorsque l'on double clique sur un fichier .bat, le dossier de travail est le dossier où se situe le fichier .bat. Donc cela fonctionnait.

Avec l'API de LibreOffice, le dossier d'exécution du script est le dossier program contenant l'exécutable de LibreOffice.

Le problème est réglé en ajoutant en début de script une ligne qui change le répertoire de travail.
Il devient :

Code : Tout sélectionner

cd C:\<chemin contenant runicas.bat>
C:\xcas\icas.exe  giac.in>giac.out
A noter que dans le cas ci-dessus, le contenu du fichier giac.out est terminé par un caractère retour à la ligne (chr(10)).
Par contre si j'utilise la technique avec fopen,fprint,fclose ci-dessus, ce problème n'apparaît pas.

Y-a-t'il une explication ?
Y-a-t'il une différence de vitesse d’exécution ? Ce qui peut avoir une importance, car si le programme continue et que giac.out n'est pas encore écrit, il y a problème.

Encore une question : peut-on récupérer le contenu de giac.out non pas dans un fichier mais dans une chaîne de caractère ? Le presse papier ?

Merci.
Didier DP
www.dmaths.org

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

Re: giac icas windows

Message par parisse » mer. mars 16, 2016 1:34 pm

ddorange a écrit :Par contre si j'utilise la technique avec fopen,fprint,fclose ci-dessus, ce problème n'apparaît pas.

Y-a-t'il une explication ?
je suis bien incapable de repondre, mes connaissances windows etant tres limitees...
Y-a-t'il une différence de vitesse d’exécution ? Ce qui peut avoir une importance, car si le programme continue et que giac.out n'est pas encore écrit, il y a problème.
je pense que ca devrait etre essentiellement la meme vitesse, la solution avec fopen/fprint/fclose est peut-etre plus robuste car elle n'utilise pas de redirection des E/S et permet probablement un controle plus precis de ce qui est sauvegarde. Apres, le fichier giac.out devrait etre ecrit si le lanceur du script attend la terminaison du programme dans les 2 cas.
Encore une question : peut-on récupérer le contenu de giac.out non pas dans un fichier mais dans une chaîne de caractère ? Le presse papier ?

Merci.
Je ne pense pas que ce soit possible en lancant un programme par un script (et si ca l'est ce serait sans doute considere comme une faille de securite), pour echanger des donnees de maniere plus efficace, il faut sans doute se lier a la librairie dynamique giac (giac.dll ou libgiac.so*) si tant est que cela soit possible depuis le programme appelant, mais c'est alors tres probablement plus difficile a implementer. Dans ce cas il y a dans la libgiac une fonction caseval declaree avec linkage C (et non C++, donc sans name-mangling) qui prend en argument un const char * et renvoie un const char *. C'est cette fonction que j'utilise dans l'interface web de Xcas, et que geogebra utilise pour la fenetre CAS.

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

Re: giac icas windows

Message par cdeval » mer. mars 16, 2016 2:27 pm

Bonjour Didier et Bernard,

je peux peut-être aider sur quelques points :
1) Je comprends que tu veux appeler giac via OpenOffice. C'est ce que j'ai fait avec CmathOOoCAS (http://cdeval.free.fr/spip.php?article132) qui permet l'appel dans Calc et Writer. Pour cela, j'ai crée une extension qui ajoute des instructions intégrées à OpenOffice, donc sans faire appel à des fichiers textes. Sous Linux, cela n'a pas posé de problèmes (si ce n'est écrire le code source C++), sous windows, cela a demandé des semaines de mises au point (Bernard doit encore s'en souvenir !). Mais au final, tu obtiens un giac qui est compilé nativement sous windows avec Visual C++ (il fallait reprendre le compilateur de OOo) et qui donc, tourne plus vite sous OpenOffice que Xcas !
L'inconvénient est qu'il faut maintenir une version windows, linux et mac (j'ai aussi fait la version Mac).
J'avoue par contre que cela fait un moment que je n'y ai pas remis les mains et je ne suis pas sûr que cela puisse encore s'installer correctement avec les évolutions de LibO et OOo. Mais le gros du travail a été fait et ça ne devrait pas être très difficile à mettre à jour.
2) Pour le dialogue de icas avec OOo via des giac.in/giac.out, c'est ce que j'ai fait pour CmathLuaTeX car je n'ai pas trouvé mieux pour le moment. J'ai eu aussi ce problème de répertoire. Je te laisse voir dans mon code source comment j'ai fait (j'ai un peu oublié depuis). Voici le lien vers ma doc https://github.com/cdevalland/cmathluat ... mathLuaTeX. Je te joins ici le fichier lua car je n'ai pas mis à jour celui du site. J'ai encore plein de nouveautés à ajouter.
Pièces jointes
CmathLuaTeX.lua.tar.gz
(20.04 Kio) Téléchargé 267 fois

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

Re: giac icas windows

Message par cdeval » mer. mars 16, 2016 2:41 pm

J'ajoute que l'utilisation de mon extension CmathOOoCAS, en plus d'ajouter des fonctions de calculs formels au tableur, permet aussi d'appeler une instruction giac et de récupérer la chaine de caractères de la réponse. Voici un extrait de ma documentation :

Les développeurs voulant utiliser les fonctions de CmathOOoCAS ou de la librairie Giac peuvent le faire avec un petit programme Basic utilisant la fonction que voici :

Code : Tout sélectionner

Function CmathOOoCAS(Expression as string) as string
	Dim mgr as Object, AddinCAS as Object
	mgr=getProcessServiceManager()
	AddinCAS=mgr.createInstance("CmathOOo.CAS")
	CmathOOoCAS=AddinCAS.cas(Expression)
End Function
Il suffit d'appeler cette fonction avec une expression respectant la syntaxe Giac et elle renverra une chaine de caractères contenant le résultat après évaluation.
Par exemple :

Code : Tout sélectionner

CmathOOoCAS("factor(x^2-1)")
renverra

Code : Tout sélectionner

"(x-1)*(x+1)"
.

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » jeu. mars 17, 2016 8:10 am

Bonjour Bernard et Christophe.
Merci Christophe pour ton long message.

J'ai pris le parti que Xcas est installé sur la machine utilisateur. Cela évite les problèmes de compatibilité de bibliothèques et de compilation. Je ne suis pas arrivé à installer CmathOOoCas sur mon Ubuntu 15.10.

Je suis parvenu à faire fonctionner icas sur toutes les machines à ma disposition : Ubuntu 15.10, Win 7, Win XP, MacOsX.

Pour Ubuntu et Windows, j'utilise la version avec fprint (voir ci-dessus).
Pour MacOSX, je n'ai pas réussi. Je n'arrive pas à trouver la solution pour le problème du répertoire d'exécution. Je vais encore essayer. Du coup je suis resté à giac.in >giac.out et cela fonctionne.

Maintenant, j'ai quelques heures de travail pour mettre au point l'interface utilisateur avec LibreOffice.
Dès que j'aurai une version d'essai, je mettrai un lien sur ce fil.

Merci pour votre aide.
Didier DP
www.dmaths.org

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

Re: giac icas windows

Message par cdeval » jeu. mars 17, 2016 11:42 am

A vrai dire, depuis que j'ai changé de PC (linux Mint), je n'ai pas réinstallé mon extension. Sous linux, il y a des problèmes avec les distributions récentes car j'ai compilé une version dynamique de giac, donc dépendante des librairies installées sur le PC pour l'installation. Le temps passant, les librairies changent de version et mon extension ne trouve plus ce qui lui est nécessaire (à moins de faire des alias). Je m'étais promis de compiler une version statique, comme celle de windows, pour éviter ces problèmes mais je n'ai pas (encore) pris le temps.

Mais tu as raison de privilégier la simplicité et la portabilité.
Bon courage pour ton développement.
A+

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » jeu. mars 17, 2016 7:16 pm

Bonsoir,

Encore un retour d'expérience ...
Toujours aucun problème sur mes quatre postes.

J'ai testé aujourd'hui sur des postes de mon lycée.
Avec WinXP impossible d'obtenir le moindre calcul formel. De plus la commande CreateObject("Wscript.Shell").Run [Chemin du fichier .bat],0,False n'est pas supportée.
Avec Win7 : première formule réponse vide, deuxième formule message d'erreur "format du presse papier invalide", puis à partir de la troisième j'obtiens le résultat attendu.
Je ferme LibreOffice, je le relance, même comportement : deux échec et cela repart ...
Je n'ai aucune idée du pourquoi ...

De nouveaux essais sont à faire ...
Didier DP
www.dmaths.org

ddorange
Messages : 55
Inscription : sam. mars 12, 2016 7:50 am

Re: giac icas windows

Message par ddorange » jeu. mars 17, 2016 7:59 pm

Encore des questions :
1) Apparemment dans un système Windows, les utilisateurs, non administrateurs ont des droits d'écriture dans C:\xcas. C'est confirmé ?
Si oui, c'est peut être plus simple sous Windows d'écrire gian.in et giac.out dans le dossier xcas ...

2) Existe-t-il une variable d'environnement qui donne le chemin de Xcas (type GIACPATH) ?

Merci.
Didier DP
www.dmaths.org

Répondre