giac and javascript

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

Modérateur : xcasadmin

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

giac and javascript

Message par parisse » lun. mars 04, 2013 2:20 pm

Experimental support for giac under javascript for linux 32 and 64 bits:
http://www-fourier.ujf-grenoble.fr/~par ... inux32.tgz
http://www-fourier.ujf-grenoble.fr/~par ... inux64.tgz

Running javscript programs with giac CAS support under linux:
1/ Install giac-1.1: add the line
deb http://www-fourier.ujf-grenoble.fr/~parisse/debian/ testing main
in the file /etc/apt/sources.list. Then run
sudo apt-get update
Now you can install or upgrade by running
sudo apt-get install giac

2/ Install webkit
sudo apt-get install libwebkit-dev

3/ Copy libgiacjs.so in /usr/lib and run sudo ldconfig or run
export LD_LIBRARY_PATH=.

4/ Run
./javascript -l giacjs giacjs.js
(replace giacjs.js with your javascript)
If it does not work, run ldd javascript and make a link in /usr/lib like this
cd /usr/lib ; sudo ln -s libwebkitgtk-1.0.so.0 libwebkit-1.0.so.2

For details how to make the interface, have a look at giacjs.i

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

Re: giac and javascript

Message par parisse » mar. mars 05, 2013 4:18 pm

Another tentative using emcc
https://github.com/kripken/emscripten/wiki
The source here http://www-fourier.ujf-grenoble.fr/~par ... emgiac.tgz compiles but does not link (memory error, seems to happen once 2G of mem are requested).

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

Re: giac and javascript

Message par parisse » mer. mars 06, 2013 3:55 pm

Now working!
You can check an example of test here
http://www-fourier.ujf-grenoble.fr/~parisse/test.html

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

Re: giac and javascript

Message par parisse » sam. mars 16, 2013 7:36 pm

Updated. You can now write a webpage including the javascript CAS code from a separate file (this is the case for test.html). The script is 6M, must still try to compress it.

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

Re: giac and javascript

Message par parisse » dim. mars 17, 2013 8:01 am

Now available in compressed form.
http://www-fourier.ujf-grenoble.fr/~parisse/zxcas.html
It requires two javascript files: decompress.js and giac.js.compress. Takes approx 1.5M to download and about 30s to decompress. After that you can save a copy and run it without Internet connection.

scogez
Messages : 2
Inscription : mer. déc. 11, 2013 8:29 pm

Re: giac and javascript

Message par scogez » jeu. déc. 12, 2013 10:17 pm

parisse a écrit :Now working!
You can check an example of test here
http://www-fourier.ujf-grenoble.fr/~parisse/test.html
Bonjour,

Est-ce qu'il y a une petite doc pour voir comment s'en servir ?
Je cherche à avoir un retour de giac en latex, comment procéder ?
J'ai voulu faire une adaptation, mais j'ai 0 en réponse pour des calculs simples et un undef pour des trucs complexes.

Merci pour toute piste que vous pourrez me donner.
Cordialement
S. COGEZ

Mon code :

Code : Tout sélectionner

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Test de calcul et d'affichage avec MathQuill + giac.js</title>
        <link type="text/css" rel="stylesheet" href="css/mathquill.css" />
        <script type="text/javascript" src="js/giac.js"></script>
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script type="text/javascript" src="js/mathquill.js"></script>
        <script type="text/javascript">
            caseval = Module.cwrap('_ZN4giac7casevalEPKc', 'string', ['string']);
            function afficher(text) {
                    $('#output').html(text);
           };
        </script>
    </head>
    <body>
        <canvas id='canvas' width=1 height=1></canvas>
        <div>
            <form><input type="text" id='formule' /> 
                <input type="button" value="Afficher" onclick="setTimeout(function(){result=caseval($('#formule').val());afficher(result);});" /></form>
        </div>
        <div id="output"></div>
    </body>
</html>

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

Re: giac and javascript

Message par parisse » ven. déc. 13, 2013 9:07 am

A vrai dire, il n'y a pas de doc autre que la page minimale que vous avez essaye d'adapter. Est-ce que vous arrivez a faire fonctionner test.html sur votre serveur? Si oui, alors caseval marche, et c'est dans le reste de votre code javascript qu'il y a un probleme.
Pour avoir une sortie latex, il suffit de mettre la commande latex() autour de votre entree, par exemple
latex(x^4-1) renvoie "x^{4}-1" avec test.html.

scogez
Messages : 2
Inscription : mer. déc. 11, 2013 8:29 pm

Re: giac and javascript

Message par scogez » ven. déc. 13, 2013 11:35 am

parisse a écrit :A vrai dire, il n'y a pas de doc autre que la page minimale que vous avez essaye d'adapter. Est-ce que vous arrivez a faire fonctionner test.html sur votre serveur? Si oui, alors caseval marche, et c'est dans le reste de votre code javascript qu'il y a un probleme.
Pour avoir une sortie latex, il suffit de mettre la commande latex() autour de votre entree, par exemple
latex(x^4-1) renvoie "x^{4}-1" avec test.html.
Merci pour cette réponse. Mon soucis venait d'un conflit entre jquery et xcas qui utilisent tous deux le $. J'ai donc changé les appels des scripts, puis remplacé mes appels $ (jquery) par des jQuery().
Cordialement

Code : Tout sélectionner

<link type="text/css" rel="stylesheet" href="css/mathquill.css" />
        <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
        <script type="text/javascript" src="js/mathquill.js"></script>
        <script type="text/javascript" src="js/giac.js"></script>
        <script type="text/javascript">
            caseval = Module.cwrap('_ZN4giac7casevalEPKc', 'string', ['string']);
           jQuery(function(){
               youpi = function(){
                jQuery('#reponse').val(caseval(jQuery('#formule').val()));
           }
           })
           
        </script>
    

Répondre