[PURRS-devel] Re: Cannot compile GIAC 0.4.0

Roberto Bagnara bagnara at cs.unipr.it
Sat Jul 3 22:15:07 CEST 2004


Bernard Parisse wrote:
> I have some hints that could fix the problem, but I can not test
> them since I don't have gcc 3.4 installed.

Dear Bernard,

please let me know if I can help (e.g., by giving you access to
a machine with gcc 3.4.1).

> The template code for Normalrref is never instantiated, that's why the
> error does not appear with previous versions of gcc. Declaring
> temp and newcoord as vector< monomial<T> > should fix the compilation 
> error.

OK.

> zero is assumed to be declared of type T when these functions are
> instantiated. I don't know how to declare zero as a template variable
> (would extern T zero; work inside a function?)

Yes, if this is what you want.  However, this conflicts
with the declaration

   extern gen zero;

in gen.h.


> gcc is correct, f. should be removed (twice)

OK.

We still have the following problems (apart from the conflicting
declarations for zero):

c++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c gausspol.cc  -fPIC -DPIC -o .libs/gausspol.lo
gausspol.cc: In function `bool giac::gcd_modular_algo(giac::polynome&, giac::polynome&, giac::polynome&)':
gausspol.cc:982: error: no match for call to `(giac::polynome) (giac::polynome&, giac::polynome&, giac::gen&)'
poly.h:385: note: candidates are: giac::tensor<T> giac::tensor<T>::operator()(const T&) const [with T = giac::gen]
poly.h:266: note:                 T& giac::tensor<T>::operator()(const giac::index_m&) [with T = giac::gen]
poly.h:277: note:                 const T& giac::tensor<T>::operator()(const giac::index_m&) const [with T = giac::gen]

The following is cured by adding an include of <iostream> in global.h

c++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c ti89.cc  -fPIC -DPIC -o .libs/ti89.lo
In file included from misc.h:23,
                  from ti89.cc:25:
global.h: In member function `void giac::dbgprint_vector<T>::dbgprint()':
global.h:130: error: `cout' is not a member of `std'

A similar problem with cerr is in monomial.h.

The nastier seems to be this one:

monomial.h: In function `std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > > giac::operator+(const std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > >&, const std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > >&)':
monomial.h:302: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available
monomial.h:302: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
monomial.h: In function `std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > > giac::operator-(const std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > >&, const std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > >&)':
monomial.h:364: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available
In file included from sym2poly.h:23,
                  from input_lexer.ll:44:
poly.h: In constructor `giac::tensor<T>::tensor()':
poly.h:47: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available
poly.h: In constructor `giac::tensor<T>::tensor(int)':
poly.h:48: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available
poly.h: In constructor `giac::tensor<T>::tensor(const giac::monomial<T>&)':
poly.h:49: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available
poly.h: In constructor `giac::tensor<T>::tensor(const T&, int)':
poly.h:52: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available
poly.h: In constructor `giac::tensor<T>::tensor(int, const std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > >&)':
poly.h:56: error: there are no arguments to `ptr_fun' that depend on a template parameter, so a declaration of `ptr_fun' must be available

I attach the patch file containing my changes up to now.
I would be grateful if you could tell me how to procees.
All the best,

     Roberto

-- 
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch1
URL: <http://www.cs.unipr.it/pipermail/purrs-devel/attachments/20040703/188df4e6/attachment.ksh>


More information about the PURRS-devel mailing list