Compilation de tryit défaillante

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

Modérateur : xcasadmin

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Compilation de tryit défaillante

Message par Dominique MICOLLET » lun. janv. 19, 2009 1:10 pm

Bonjour et Bonne année,

Je reprends un vieux programme que j'avais développé avec giac, il y a un an et demi.

Ayant changé de machine et de version d'OS, j'ai du réinstaller giac et consort, puis recompiler mon vieux programme. Et ça ne marche pas.....

J'ai donc essayé de compiler l'exemple : ça ne marche pas non plus.
J'obtiens la réponse suivante :

[code]miko@iem14:~/Bureau/tmp$ c++ -g tryit.cc -lgiac -lgmp
In file included from /usr/include/c++/4.3/ext/hash_map:64,
from /usr/include/giac/index.h:40,
from /usr/include/giac/poly.h:26,
from /usr/include/giac/giac.h:5,
from tryit.cc:1:
/usr/include/c++/4.3/backward/backward_warning.h:33:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
tryit.cc: In function ‘int main()’:
tryit.cc:6: error: no matching function for call to ‘giac::gen::gen(std::string)’
/usr/include/giac/gen.h:323: note: candidates are: giac::gen::gen(const giac::my_mpz&)
/usr/include/giac/gen.h:319: note: giac::gen::gen(const giac::grob&)
/usr/include/giac/gen.h:318: note: giac::gen::gen(const giac::eqwdata&)
/usr/include/giac/gen.h:317: note: giac::gen::gen(const giac::gen_map&)
/usr/include/giac/gen.h:316: note: giac::gen::gen(const giac::unary_function_ptr&, int)
/usr/include/giac/gen.h:315: note: giac::gen::gen(const giac::sparse_poly1&)
/usr/include/giac/gen.h:314: note: giac::gen::gen(const std::string&, const giac::vecteur&, const giac::context*)
/usr/include/giac/gen.h:313: note: giac::gen::gen(const std::string&, const giac::context*)
/usr/include/giac/gen.h:312: note: giac::gen::gen(const giac::real_complex_rootof&)
/usr/include/giac/gen.h:311: note: giac::gen::gen(const giac::fraction&)
/usr/include/giac/gen.h:310: note: giac::gen::gen(const giac::polynome&)
/usr/include/giac/gen.h:309: note: giac::gen::gen(giac::polynome*)
/usr/include/giac/gen.h:307: note: giac::gen::gen(const giac::real_object&)
/usr/include/giac/gen.h:306: note: giac::gen::gen(const giac::gen_user&)
/usr/include/giac/gen.h:305: note: giac::gen::gen(giac::symbolic*)
/usr/include/giac/gen.h:304: note: giac::gen::gen(const giac::symbolic&)
/usr/include/giac/gen.h:302: note: giac::gen::gen(giac::vecteur*, short int)
/usr/include/giac/gen.h:301: note: giac::gen::gen(const giac::vecteur&, short int)
/usr/include/giac/gen.h:300: note: giac::gen::gen(const giac::identificateur&)
/usr/include/giac/gen.h:299: note: giac::gen::gen(const giac::gen&)
/usr/include/giac/gen.h:298: note: giac::gen::gen(const std::complex<double>&)
/usr/include/giac/gen.h:297: note: giac::gen::gen(const giac::gen&, const giac::gen&)
/usr/include/giac/gen.h:296: note: giac::gen::gen(double, double)
/usr/include/giac/gen.h:295: note: giac::gen::gen(int, int)
/usr/include/giac/gen.h:294: note: giac::gen::gen(double)
/usr/include/giac/gen.h:293: note: giac::gen::gen(__mpz_struct (*)[1])
/usr/include/giac/gen.h:290: note: giac::gen::gen(const __mpz_struct (&)[1])
/usr/include/giac/gen.h:289: note: giac::gen::gen(longlong)
/usr/include/giac/gen.h:288: note: giac::gen::gen(size_t)
/usr/include/giac/gen.h:287: note: giac::gen::gen(int)
/usr/include/giac/gen.h:286: note: giac::gen::gen(void*, short int)
/usr/include/giac/gen.h:285: note: giac::gen::gen()
tryit.cc:7: error: no matching function for call to ‘factor(giac::gen&)’
/usr/include/giac/gausspol.h:127: note: candidates are: bool giac::factor(const giac::polynome&, giac::polynome&, giac::factorization&, bool, bool, bool, const giac::gen&)
/usr/include/giac/sym2poly.h:55: note: giac::gen giac::factor(const giac::gen&, bool, const giac::context*)
/usr/include/giac/sym2poly.h:57: note: giac::gen giac::factor(const giac::gen&, const giac::identificateur&, bool, const giac::context*)
/usr/include/giac/sym2poly.h:58: note: giac::gen giac::factor(const giac::gen&, const giac::gen&, bool, const giac::context*)
[/code]


De ce que je comprends, le contructeur de structure generique de giac à partir d'une simple chaine n'existe plus.

Est ce normal, docteur ?

Je précise que je travaille sous Linux/Lenny et que j'ai installé de .deb fourni sur le site, avec les bibliothèques annexes fournies par Debian.

Entre temps je compile giac à partir des sources pour voir si ça change quelque chose, mais c'est long sur un vieux pentium. :D

Cordialement

Dominique MICOLLET[/list]
Cordialement

Dominique MICOLLET

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

Message par parisse » lun. janv. 19, 2009 2:50 pm

bonjour,

Si votre source est assez ancien, il va vous falloir rajouter une variable de contexte d'evaluation dans de nombreux appels a des fonctions de giac (cela a ete ajoute pour permettre de gerer plusieurs sessions ayant des contextes d'evaluation independants).
Par exemple
giac::gen g("[1,2]");
va devenir
giac::gen g("[1,2]",ctxptr);
Dans un premier temps, vous pouvez remplacer ctxptr par 0 (qui designe un contexte d'evaluation global). Ou vous pouvez creer un contexte
giac::context ctx;
et utiliser &ctx pour ctxptr

Bon courage!

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Message par Dominique MICOLLET » lun. janv. 19, 2009 3:07 pm

Je viens de me rendre compte que vous aviez déjà donné la réponse dans le fil "Calcul matriciel".

J'avais supputé en examinant le code qu'on pouvait utiliser un pointeur nul et réussi à faire fonctionner l'exemple tryit, mais je préférais avoir confirmation.

Merci.

Dominique MICOLLET
Cordialement

Dominique MICOLLET

Répondre