On Fri, Jun 20, 2008 at 6:24 PM, parisse
<[EMAIL PROTECTED]> wrote:
>
>> > What about linear algebra, etc. You say you have to write it from
>> > scratch, and people at sage have also to do it. I do of course not
>> > have experience in writing C++/Python interfaces, but how can it be
>> > that it's better to restart from scratch?
>>
>> Because you want to use it using the tools which Sage have chosen,
>> i.e. Python, C, Cython and you want
>> it to be maintainable.
>
> What makes you believe that a C++ library and an interface are not
> maintainable? After all, Sage is relying on C/C++ libraries.

I think C++ is fine too. I think it's just that someone has to be
interested in let's say using giac, and it will happen.
If people are not interested, it will not happen.

>
>
>> Other people will join in too. Patches need to be reviewed and I
>> believe anyone can do solid work.
>
> I agree. But I believe that developing good code require experience.
> And developing code with math algorithm requires a mature
> understanding of the math. That's why I don't believe an undergraduate
> can develop a CAS from scratch. Maybe I'm wrong, we'll see.

Yes, but the limit algorithm is easy to understand. And Gary is
writting the base symbolics, so you don't need some high math to do
that.

>
>> Yes, I tried just now at PMAA08 conference, where they block all
>> traffic besides port 80 and I was unable to download the code from the
>> web,
>> because it is over ftp only
>> (ftp://ftp-fourier.ujf-grenoble.fr/xcas/giac_unstable.tgz). Well,
>> that's a show stopper for me. You may criticize me, that I am strict,
>> but I think I am not. I wanted to use (try) your software right now
>> and I cannot. So any user who encounters that will immediatelly turn
>> away.
>>
>
> It has nothing to do with the code itself. Binaries are available from
> http, if someone is interested, he will make some tests on the
> binaries and ask me for the source to be available on http.
> It is now available on the web.
> http://www-fourier.ujf-grenoble.fr/~parisse/giac/giac_unstable.tgz

Yes I know. But it has something to do with easiness of use. If you
know what I mean.
Managing a project is not just about writing a code, but also making
sure other people can use the code easily.

Anyway I have 5 minutes to try (=make it compile, it's ok if I will
have to wait couple hours, that is unavoidable in some cases, but
without me fixing things), I downloaded it, read README, it said do
"./configure && make && make install" if you are in a hurry, so I did
configure, it said:

Adding link . to giac in src
**** The following problems have been detected by configure.
**** Please check the messages below before running "make".
**** (see the section 'Common Problems' in the INSTALL file)

** The header file for GMP version 2 or above could not be found.

** A test program could not be linked against GMP version 2 or above.


== Enabling debug support

== Disabling gc support

== Disabling semi-classical routines

== GMPXX support not checked (disabled)

deleting cache /dev/null
rm: cannot remove `/dev/null': Permission denied


So I installed libgmp3-dev in Debian, then it configured just fine, so
I did make and it failed immediatelly:

$ make
make  all-recursive
make[1]: Entering directory `/home/ondra/ext/giac-0.8.0'
Making all in src
make[2]: Entering directory `/home/ondra/ext/giac-0.8.0/src'
/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.. -I.
-I..    -g -O2 -c sym2poly.cc
mkdir .libs
g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c sym2poly.cc  -fPIC
-DPIC -o .libs/sym2poly.lo
In file included from /usr/include/c++/4.3/backward/hash_map:64,
                 from index.h:27,
                 from poly.h:26,
                 from sym2poly.h:24,
                 from sym2poly.cc:32:
/usr/include/c++/4.3/backward/backward_warning.h:32: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.
In file included from poly.h:26,
                 from sym2poly.h:24,
                 from sym2poly.cc:32:
index.h:273: error: expected initializer before '<' token
index.h:275: error: 'hash_index' was not declared in this scope
index.h:275: error: template argument 1 is invalid
index.h:275: error: template argument 2 is invalid
index.h:275: error: invalid type in declaration before ';' token
In file included from poly.h:27,
                 from sym2poly.h:24,
                 from sym2poly.cc:32:
monomial.h: In function 'void giac::Mul(typename
std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> >
>::const_iterator&, typename std::vector<giac::monomial<T>,
std::allocator<giac::monomial<T> > >::const_iterator&, typename
std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> >
>::const_iterator&, typename std::vector<giac::monomial<T>,
std::allocator<giac::monomial<T> > >::const_iterator&,
std::vector<giac::monomial<T>, std::allocator<giac::monomial<T> > >&,
std::pointer_to_binary_function<const giac::index_t&, const
giac::index_t&, bool>, std::pointer_to_binary_function<const
giac::monomial<T>&, const giac::monomial<T>&, bool>)':
monomial.h:541: error: expected initializer before '<' token
monomial.h:542: error: 'hash_prod' was not declared in this scope
monomial.h:542: error: expected `;' before 'produit_'
monomial.h:547: error: 'hash_prod' is not a class or namespace
monomial.h:547: error: expected initializer before 'prod_it_'
monomial.h:558: error: 'prod_it_' was not declared in this scope
monomial.h:558: error: 'produit_' was not declared in this scope
monomial.h:565: error: 'prod_it_' was not declared in this scope
monomial.h:565: error: 'produit_' was not declared in this scope
monomial.h:565: error: 'prod_it_end' was not declared in this scope
In file included from sym2poly.h:24,
                 from sym2poly.cc:32:
poly.h: In function 'int giac::hashdivrem(const
std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T,
U> > >&, const std::vector<giac::T_unsigned<T, U>,
std::allocator<giac::T_unsigned<T, U> > >&,
std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T,
U> > >&, std::vector<giac::T_unsigned<T, U>,
std::allocator<giac::T_unsigned<T, U> > >&, const std::vector<U,
std::allocator<_T2> >&, int, double, bool)':
poly.h:87: error: expected initializer before '<' token
poly.h:88: error: 'hash_prod' was not declared in this scope
poly.h:88: error: template argument 1 is invalid
poly.h:88: error: template argument 2 is invalid
poly.h:88: error: invalid type in declaration before '(' token
poly.h:93: error: 'hash_prod' is not a class or namespace
poly.h:93: error: expected initializer before 'prod_it'
poly.h:94: error: 'hashptr' was not declared in this scope
poly.h:109: error: invalid types 'int[int]' for array subscript
poly.h:114: error: 'prod_it' was not declared in this scope
poly.h:114: error: invalid types 'int[int]' for array subscript
poly.h:114: error: 'prod_itend' was not declared in this scope
poly.h:114: error: invalid types 'int[int]' for array subscript
poly.h:161: error: invalid types 'int[int]' for array subscript
poly.h:180: error: invalid types 'int[int]' for array subscript
poly.h:198: error: invalid types 'int[int]' for array subscript
poly.h:202: error: 'prod_it' was not declared in this scope
poly.h:202: error: invalid types 'int[int]' for array subscript
poly.h:202: error: 'prod_itend' was not declared in this scope
poly.h:202: error: invalid types 'int[int]' for array subscript
make[2]: *** [sym2poly.lo] Error 1
make[2]: Leaving directory `/home/ondra/ext/giac-0.8.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ondra/ext/giac-0.8.0'
make: *** [all-recursive-am] Error 2


Now I would have to investigate the first error:

index.h:273: error: expected initializer before '<' token

I.e this line:

  typedef HASH_MAP_NAMESPACE::hash_map<
index_t,index_m,hash_function_object > hash_index ;

But I am sorry, my time has run out, I need to go to a conference
dinner now. As you can see, I would have to start fixing the sources.

To repeat again: I am not blaming you, it can well be a problem with
my installation of Debian, but nevertheless this is my (end user)
experience with giac.
If I take Sage or SymPy, on the same installation of Debian, it just works.

>
>> Why do you want me to make sympy interoperable with giac if you are
>> not willing to make giac interoperable with sympy? :)
>>
>> Just a joke.
>
> I never said I would not help you make sympy interoperable with giac.
> I have always answered your questions when you had problems to compile
> giac. I would be happy to have a python frontend to giac and I'm ready
> to help you if you are willing to. Moreover, this is not the same
> situation, giac (as maxima or axiom) was here before sympy and sage.

Yes I know and I thank you for that. GiNaC was there also before SymPy
and actually GiNaC was a reason I started SymPy.

As I said, I don't have time to wrap giac to Sage.

>
>> Well, my experience with Sage developers is that they are
>> extremely helpful with helping these efforts and answer all questions
>> I might have.
>> Did you try to send or do some patch? I am sure Sage devels will help.
>>
>
> I won't do anything before someone is really interested. It would be a
> waste of time, because I don't know python (and learning python to a
> fluent level certainly requires some time), I don't know exactly what
> to do and I would not have a reasonable insurance that my library
> would be integrated in the sage distribution.

Yes, that is the real reason (and it's not your fault). But who better
should do it if not the one who wrote the C++ code?

>
>>
>> Well, you know what Linus says[1], right. :) If it was that easy as you say,
>> someone would already did it.
>>
>
> Nobody says it's easy. I just can't see how it could be easier to
> redevelop all from scratch.

Ok. My point was that the pure fact, that someone wrote the code
already and the code is sitting somewhere (be it in giac, or axiom) is
not enough to be
easily usable by people. Because if it was, people would be using
Axiom and be happy with that. Some people are happy, but a lot of
people aren't, as can be seen by the number of people using Sage.

Ondrej

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to