qtgiac: calcul formel pour application QT

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

Modérateur : xcasadmin

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

qtgiac: calcul formel pour application QT

Message par parisse » lun. mars 26, 2012 12:12 pm

qtgiac est une version de giac prete a etre integree dans un projet qt. Il suffit de desarchiver
http://www-fourier.ujf-grenoble.fr/~par ... qtgiac.tgz puis de lancer qtcreator (ou necessitas) sur le fichier projet test.pro, et de compiler: rien d'autre a installer, l'interface on ne peut plus minimaliste devrait se lancer. Il suffit ensuite de remplacer l'interface minimaliste par une interface ecrite en QT pour pouvoir integrer facilement du calcul formel dans une application QT.

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

Re: qtgiac: calcul formel pour application QT

Message par loic » mer. avr. 04, 2012 3:41 pm

C'est une nouvelle très intéressante que voilà!

J'ai essayé d'importer dans QtCreator le fichier projet mais il y a cette erreur à la compilation.

Code : Tout sélectionner

/Téléchargements/qtgiac/giac/threaded.h:2627: erreur : 'powmod' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
/Téléchargements/qtgiac/giac/ezgcd.cc:26: In file included from giac/ezgcd.cc:26:0:
/Téléchargements/qtgiac/giac/modpoly.h:128: 'giac::modpoly giac::powmod(const modpoly&, const giac::gen&, const modpoly&, giac::environment*)' declared here, later in the translation unit
/Téléchargements/qtgiac/giac/poly.h:28: In file included from giac/poly.h:28:0,
Une petite aide?

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

Re: qtgiac: calcul formel pour application QT

Message par parisse » mer. avr. 04, 2012 4:05 pm

jamais eu cette erreur!
c'est quelle version de gcc?

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

Re: qtgiac: calcul formel pour application QT

Message par loic » mer. avr. 04, 2012 4:27 pm

gcc (GCC) 4.7.0 20120324 (prerelease)

Je suis sous archlinux.
Dernière modification par loic le mer. avr. 04, 2012 5:20 pm, modifié 1 fois.

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

Re: qtgiac: calcul formel pour application QT

Message par parisse » mer. avr. 04, 2012 4:52 pm

soit c'est parce que c'est un prerelease, soit c'est un durcissement quelconque (peut-etre faut-il ajouter -fpermissive), je ne peux pas fixer ça tant que je n'ai pas accès à la version fautive de gcc (d'autant que le code correspondant compile bien avec les gcc "normaux", avec visual c++ et avec green hills). Peut-etre faut-il ajouter une declaration pour powmod, ou bien échanger quelques fichiers... en tout cas, ça illustre le fait qu'il vaut mieux utiliser un système qui n'est pas à la pointe de la pointe du progrès pour éviter les ennuis:-)

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

Re: qtgiac: calcul formel pour application QT

Message par loic » jeu. avr. 05, 2012 5:31 am

Ce pb est éliminé avec le flag -fpermissive effectivement.

Malheureusement, la compil stoppe sur usual.cc

Code : Tout sélectionner

giac/usual.cc: At global scope:
giac/usual.cc:3806:15: attention : ‘bool giac::tri2_(const char*, const char*)’ defined but not used [-Wunused-function]
make: *** [usual.o] Erreur 1

Je ne comprends pas où est le message d'erreur d'ailleurs....

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

Re: qtgiac: calcul formel pour application QT

Message par parisse » jeu. avr. 05, 2012 5:55 am

il n'y a pas d'erreur, simplement la fonction n'est pas utilisée et vos réglages (option -Wunused-function) font que make s'arrete.

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

Re: qtgiac: calcul formel pour application QT

Message par loic » jeu. avr. 05, 2012 7:37 pm

Bon, je commence à regretter d'être à la pointe de la pointe comme vous dites ;)

En fait, le plantage ne vient pas du message précédent mais plutôt de ça:

Code : Tout sélectionner

giac/usual.cc:7396:3: error: braces around scalar initializer for type 'giac::alias_gen {aka long long unsigned int}'
Les messages d'erreurs C++ ne me sont toujours pas familiers....

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

Re: qtgiac: calcul formel pour application QT

Message par parisse » ven. avr. 06, 2012 7:00 am

Je vous conseille d'installer une version anterieure de gcc (quitte a la compiler depuis les sources...).

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

Re: qtgiac: calcul formel pour application QT

Message par loic » ven. avr. 06, 2012 3:58 pm

Ok, je viens d'essayer sous une debian (on revient toujours aux valeurs sures ...)
ça marche nickel, je poursuis mes investigations ...

Merci en tout cas pour ce giac sous Qt.

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

Re: qtgiac: calcul formel pour application QT

Message par loic » ven. avr. 06, 2012 6:50 pm

Je reviens à la charge
J'ai deux debian, une sous 32 bits et l'autre en 64 bits.

Sur le 32 bits pas de problème à la compilation. En revanche, sur l'autre, je retrouve le même pb qu'avec mon archlinux.

Code : Tout sélectionner

g++ -c -pipe -O2 -DHAVE_CONFIG_H -DUSE_GMP_REPLACEMENTS -fno-strict-aliasing -Wno-unused-parameter -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -Iqt -Igiac -Ilibtommath -I. -o usual.o giac/usual.cc
giac/usual.cc:7396: error: braces around scalar initializer for type ‘giac::alias_gen’
giac/usual.cc:7396: error: braces around scalar initializer for type ‘giac::alias_gen’
giac/usual.cc:7483: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7503: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7517: error: braces around scalar initializer for type ‘giac::alias_gen’
giac/usual.cc:7517: error: braces around scalar initializer for type ‘giac::alias_gen’
giac/usual.cc:7524: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7531: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7537: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7555: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7561: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7567: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7573: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7579: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7585: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7591: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7595: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7601: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7604: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7610: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7613: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7619: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7622: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7628: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7634: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7656: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:7662: error: braces around scalar initializer for type ‘const giac::alias_gen’
giac/usual.cc:3806: warning: ‘bool giac::tri2_(const char*, const char*)’ defined but not used
make: *** [usual.o] Erreur 1
Ce serait possible que ce soit un pb d'architecture??
PS: gcc et g++ en version 4-4.5 ici ....

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

Re: qtgiac: calcul formel pour application QT

Message par parisse » ven. avr. 06, 2012 7:14 pm

Oui, il y a un pb en 64 bits, il faudrait reprendre tout le fichier config.h, probablement definir
SMARTPTR64
Changer aussi les longueurs par exemple de LONG a 8

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

Re: qtgiac: calcul formel pour application QT

Message par loic » mar. avr. 10, 2012 4:58 pm

Concrètement, j'ai passé le long à 8 dans config.h
et rajouté le flag -DSMARTPTR64 dans test.pro

Toujours la même erreur de sortie de compilation

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

Re: qtgiac: calcul formel pour application QT

Message par parisse » mer. avr. 11, 2012 8:34 am

Ca devrait marcher mieux en ajoutant -DGIAC_GENERIC_CONSTANTS

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

Re: qtgiac: calcul formel pour application QT

Message par loic » mer. avr. 11, 2012 11:28 am

On se rapproche.

Une erreur lors de l'édition des liens:

Code : Tout sélectionner

g++ -m64 -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -Wl,-O1 -o test Window.o main.o alg_ext.o cocoa.o csturm.o derive.o desolve.o ezgcd.o firstcc.o gauss.o gausspol.o gen.o global.o help.o identificateur.o ifactor.o index.o input_lexer.o input_parser.o intg.o intgab.o isom.o lin.o maple.o mathml.o misc.o modfactor.o modpoly.o moyal.o pari.o permu.o plot.o plot3d.o prog.o quater.o risch.o rpn.o series.o solve.o subst.o sym2poly.o symbolic.o tex.o threaded.o ti89.o tinymt32.o TmpFGLM.o TmpLESystemSolver.o unary.o usual.o vecteur.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_expt_d.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o bn_mp_grow.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o bncore.o moc_Window.o    -L/usr/lib -lQtGui -lQtCore -lpthread 
/usr/bin/ld: prog.o: undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/bin/ld: note: 'dlclose@@GLIBC_2.2.5' is defined in DSO /lib/libdl.so.2 so try adding it to the linker command line
/lib/libdl.so.2: could not read symbols: Invalid operation
collect2: erreur: ld a retourné 1 code d'état d'exécution
make: *** [test] Erreur 1

Répondre