PS actually, i am a little wrong with Python ints being arbitrary 
precision. In fact there is no such thing as just a python int, there is 
"int" and "long", but computations with ints can give you an answer which 
is "long"; presumably this mostly means that everything is as slow as if 
everything was always a "long". Well, i don't really know, and I wish I did.

On Sunday, December 4, 2016 at 8:47:12 AM UTC-5, Pierre wrote:
>
> Hi all,
>
> Thanks for your answers. There are a few things that I now understand, but 
> i'm still confused. One crucial mistake I made was, as I see now thanks to 
> Ralf's message, to believe that numpy.int meant "C int": no, it means 
> python int ! For C ints, use numpy.int32 (or 64). In fact :
>
> sage: numpy.int(2) ^ numpy.int(32) 
> 4294967296 
>
> sage: numpy.int(2) ^ numpy.int(64) 
> 18446744073709551616L   #notice the L, typical of python ints
>
> sage: numpy.int32(2) ^ numpy.int32(32) 
> /Applications/SageMath/src/bin/sage-ipython:1: RuntimeWarning: overflow 
> encountered in int_scalars 
> #!/usr/bin/env python 
> 0 
>
>
> All as expected. And to answer Simon's interrogation, if I'm correct a 
> python int is actually arbitrary precision (and it prints with an L when 
> above 2^64), but it's slower than ZZ. It's not a C int.
>
> However, i've been playing with Simon's code for testing (nice idea!), and 
> i'm still puzzled:
>
> sage: %time testfunc(ZZ(1234123), ZZ(1234123), operator.add) 
> CPU times: user 69.3 ms, sys: 787 µs, total: 70.1 ms 
> Wall time: 70.8 ms 
>
> sage: %time testfunc(int(1234123), int(1234123), operator.add) 
> CPU times: user 42.3 ms, sys: 631 µs, total: 42.9 ms 
> Wall time: 43.5 ms 
>
> sage: %time testfunc(numpy.int(1234123), numpy.int(1234123), operator.add) 
> CPU times: user 44 ms, sys: 538 µs, total: 44.5 ms 
> Wall time: 45 ms 
>
> sage: %time testfunc(numpy.int32(1234123), numpy.int32(1234123), operator.
> add) 
> CPU times: user 74.2 ms, sys: 822 µs, total: 75 ms 
> Wall time: 77.7 ms
>
> So ZZ is slightly slower than python int = numpy.int, which is already 
> weird since the arbitrary precision integers of ZZ are meant to faster than 
> those of python.
>
> But even more bizarre is the fact that numpy.int32 gives the slowest 
> performance! i'm guessing that the operator.add includes overhead when 
> asking numpy to add its ints.
>
> Question: Is there a way of using very fast C integers within Sage, 
> without using Cython? (the latter because the answer is meant to be 
> understandable by beginners).
>
> If I figure this out, I guess the analogous question with floats will be 
> answered, too.
>
> Thanks !
>
> Pierre
>
>
>
>
>
>
>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to