On Sun, Oct 28, 2012 at 11:19:29AM +0100, Brunet Pierrick wrote: > Le 28/10/2012 09:27, serge Guelton a écrit : > >On Sat, Oct 27, 2012 at 11:56:21PM +0200, serge Guelton wrote: > >>>>Does it mean we have to make all arguments assignable ? > >>>The problem is not with assignable. For now, when we have a > >>>__gmp_expr<T,G>, Assignable say : "ho, I have a specialisation which > >>>say it is a mpz_class" but in fact, is is not really a mpz_class. It > >>>is for exemple a __gmp_expr<mpz_struct, > >>>gmp_binary<__gmp_expr<mpz_struct,mpz_struct>,double,binary_plus> > > >>>or something like this. > >>>As you can see, in fact this is the result of an addition between a > >>>double and a mpz_class and it should be a mpf_class because we can > >>>see a double in this expression. But it should be more complicated > >>>otherwise gmp developper may have fix this problem isn't it? > >>OK I got it. Pythran cast the result to long and python to float, > >>because we do not try to expand the __gmp_expr... > >Or > >__gmp_resolve_expr > >__gmp_resolve_temp > >... > > > Looking at this, it seems to solve at least a part of the issue. We > will just need to specify __gmp_binary_...<>. > For example: > __gmp_binary_op<mpz_class,double,...> type is mpf_class as here is a > double. This specification isn't in gmpxx.h AFAIK. > > To use all of these features, I will first need to convert python > float to pythran mpf_class as we doesn't have big floating point > number in pythran. AFAIK, there is no such big float in python... -- serge