|
Packit |
562c7a |
# tag: cpp
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
cdef extern from "cpp_nonstdint.h":
|
|
Packit |
562c7a |
ctypedef int Int24
|
|
Packit |
562c7a |
ctypedef int Int56
|
|
Packit |
562c7a |
ctypedef int Int88
|
|
Packit |
562c7a |
ctypedef int Int512
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
cdef object one = 1
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
# ---
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
INT24_MAX = (one<<(sizeof(Int24)*8-1))-one
|
|
Packit |
562c7a |
INT24_MIN = (-INT24_MAX-one)
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def test_int24(Int24 i):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> str(test_int24(-1))
|
|
Packit |
562c7a |
'-1'
|
|
Packit |
562c7a |
>>> str(test_int24(0))
|
|
Packit |
562c7a |
'0'
|
|
Packit |
562c7a |
>>> str(test_int24(1))
|
|
Packit |
562c7a |
'1'
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int24(INT24_MAX) == INT24_MAX
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> test_int24(INT24_MIN) == INT24_MIN
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int24(INT24_MIN-1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
>>> test_int24(INT24_MAX+1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int24("123") #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
TypeError: ...
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return i
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
# ---
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
INT56_MAX = (one<<(sizeof(Int56)*8-1))-one
|
|
Packit |
562c7a |
INT56_MIN = (-INT56_MAX-one)
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def test_int56(Int56 i):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> str(test_int56(-1))
|
|
Packit |
562c7a |
'-1'
|
|
Packit |
562c7a |
>>> str(test_int56(0))
|
|
Packit |
562c7a |
'0'
|
|
Packit |
562c7a |
>>> str(test_int56(1))
|
|
Packit |
562c7a |
'1'
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int56(INT56_MAX) == INT56_MAX
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> test_int56(INT56_MIN) == INT56_MIN
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int56(INT56_MIN-1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
>>> test_int56(INT56_MAX+1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int56("123") #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
TypeError: ...
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return i
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
# ---
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
INT88_MAX = (one<<(sizeof(Int88)*8-1))-one
|
|
Packit |
562c7a |
INT88_MIN = (-INT88_MAX-one)
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def test_int88(Int88 i):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> str(test_int88(-1))
|
|
Packit |
562c7a |
'-1'
|
|
Packit |
562c7a |
>>> str(test_int88(0))
|
|
Packit |
562c7a |
'0'
|
|
Packit |
562c7a |
>>> str(test_int88(1))
|
|
Packit |
562c7a |
'1'
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int88(INT88_MAX) == INT88_MAX
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> test_int88(INT88_MIN) == INT88_MIN
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int88(INT88_MIN-1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
>>> test_int88(INT88_MAX+1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int88("123") #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
TypeError: ...
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return i
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
# ---
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
INT512_MAX = (one<<(sizeof(Int512)*8-1))-one
|
|
Packit |
562c7a |
INT512_MIN = (-INT512_MAX-one)
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def test_int512(Int512 i):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> str(test_int512(-1))
|
|
Packit |
562c7a |
'-1'
|
|
Packit |
562c7a |
>>> str(test_int512(0))
|
|
Packit |
562c7a |
'0'
|
|
Packit |
562c7a |
>>> str(test_int512(1))
|
|
Packit |
562c7a |
'1'
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int512(INT512_MAX) == INT512_MAX
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> test_int512(INT512_MIN) == INT512_MIN
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int512(INT512_MIN-1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
>>> test_int512(INT512_MAX+1) #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
OverflowError: ...
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> test_int512("123") #doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
...
|
|
Packit |
562c7a |
TypeError: ...
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return i
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
# ---
|