so numpy64 will give you wrap-around arithmetics. What else are you
looking for? :-)

On Mon, Apr 4, 2016 at 3:38 PM, Tuom Larsen <tuom.lar...@gmail.com> wrote:
> You mean I should first store the result into numpy's `int64`, and
> then to `array.array`? Like:
>
>     x = int64(2**63 << 1)
>     a[0] = x
>
> Or:
>
>     x = int64(2**63)
>     x[0] = x << 1
>
> What the "real types" goes, is this the only option?
>
> Thanks in any case!
>
>
> On Mon, Apr 4, 2016 at 3:32 PM, Maciej Fijalkowski <fij...@gmail.com> wrote:
>> one option would be to use integers from _numpypy module:
>>
>> from numpy import int64 after installing numpy.
>>
>> There are obscure ways to get it without installing numpy. Another
>> avenue would be to use __pypy__.intop.int_mul etc.
>>
>> Feel free to complain "no, I want real types that I can work with" :-)
>>
>> Cheers,
>> fijal
>>
>> On Mon, Apr 4, 2016 at 3:10 PM, Tuom Larsen <tuom.lar...@gmail.com> wrote:
>>> Hello!
>>>
>>> Suppose I'm on 64-bit machine and there is an `a = arrar.array('L',
>>> [0])` (item size is 8 bytes). In Python, when an integer does not fit
>>> machine width it gets promoted to "long" integer of arbitrary size. So
>>> this will fail:
>>>
>>>     a[0] = 2**63 << 1
>>>
>>> To fix this, one could instead write:
>>>
>>>     a[0] = (2**63 << 1) & (2**64 - 1)
>>>
>>> My question is, when I know that the result will be stored in
>>> `array.array` anyway, how to prevent the promotion to long integers?
>>> What is the most performat way to perform such calculations? Is PyPy
>>> able to optimize away that `& (2**64 - 1)` when I use `'L'` typecode?
>>>
>>> I mean, in C I wouldn't have to worry about it as everything above the
>>> 63rd bit will be simply cut off. I would like to help PyPy to generate
>>> the best possible code, does anyone have some suggestions please?
>>>
>>> Thanks!
>>> _______________________________________________
>>> pypy-dev mailing list
>>> pypy-dev@python.org
>>> https://mail.python.org/mailman/listinfo/pypy-dev
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to