Ejemplo n.º 1
0
 def divmod(sf, lhs, rhs, /):
     r'''
     lhs -> rhs -> (q,r)
     precondition:
         [not is_zero(rhs)]
         [lt__abs(one, rhs)]
     postcondition:
         [lhs == q*rhs+r]
         [lt__abs(r, rhs)]
         [lhs==0]or[lt__abs(q, lhs)]
     #'''
     q,r = divmod(lhs.i, rhs.i)
     return _Int(q), _Int(r)
Ejemplo n.º 2
0
def _loop4test_uint2radix_repr(radix, test_data, /):
#def _loop4test_uint2radix_repr(sf, test_data, /):
    #radix = sf.get_radix()
    radix = _Int(radix)
    sf = _Uint2RadixRepr(radix)
    for min_len, imay_max_len, uint, ans in test_data:
        uint = _Int(uint)
        ans = [*map(_Int, ans)]
        ######################
        ######################
        result = [*sf.uint2radix_repr__big_endian__split(uint, min_len=min_len, imay_max_len=imay_max_len)]
        _print4test_uint2radix_repr(method_name='uint2radix_repr__big_endian__split', min_len=min_len, imay_max_len=imay_max_len, uint=uint, ans=ans, result=result)
        ######################
        ######################
        result = [*uint2radix_repr(sf, uint, min_len=min_len, imay_max_len=imay_max_len, is_big_endian=True, _split_ver=1, input_is_an_IUint2RadixRepr_not_radix=True)]
        _print4test_uint2radix_repr(method_name='uint2radix_repr:big_endian:split', min_len=min_len, imay_max_len=imay_max_len, uint=uint, ans=ans, result=result)

    #for min_len, imay_max_len, uint, ans in test_data:
        [*ans] = reversed(ans)
        ######################
        ######################
        result = [*sf.uint2radix_repr__little_endian__split(uint, min_len=min_len, imay_max_len=imay_max_len)]
        _print4test_uint2radix_repr(method_name='uint2radix_repr__little_endian__split', min_len=min_len, imay_max_len=imay_max_len, uint=uint, ans=ans, result=result)
        ######################
        ######################

        result = [*uint2radix_repr(sf, uint, min_len=min_len, imay_max_len=imay_max_len, is_big_endian=False, _split_ver=1, input_is_an_IUint2RadixRepr_not_radix=True)]
        _print4test_uint2radix_repr(method_name='uint2radix_repr:little_endian:split', min_len=min_len, imay_max_len=imay_max_len, uint=uint, ans=ans, result=result)
        ######################
        ######################

        result = [*sf.uint2radix_repr__little_endian__plain(uint, min_len=min_len, imay_max_len=imay_max_len)]
        _print4test_uint2radix_repr(method_name='uint2radix_repr__little_endian__plain', min_len=min_len, imay_max_len=imay_max_len, uint=uint, ans=ans, result=result)
        ######################
        ######################

        result = [*uint2radix_repr(sf, uint, min_len=min_len, imay_max_len=imay_max_len, is_big_endian=False, _split_ver=0, input_is_an_IUint2RadixRepr_not_radix=True)]
        _print4test_uint2radix_repr(method_name='uint2radix_repr:little_endian:plain', min_len=min_len, imay_max_len=imay_max_len, uint=uint, ans=ans, result=result)
Ejemplo n.º 3
0
def _t1():
    radix = _Int(7)
    sf = _RadixRepr2Uint(radix)
    for i in range(30):
        digits = range(1, i + 1)
        for is_big_endian in (True, False):
            rs = [
                radix_repr2uint(sf,
                                map(_Int, digits),
                                is_big_endian=is_big_endian,
                                _merge_ver=_merge_ver,
                                input_is_an_IRadixRepr2Uint_not_radix=True)
                for _merge_ver in range(3)
            ]
            assert len(set(rs)) == 1
Ejemplo n.º 4
0
 def mul(sf, lhs, rhs, /):
     return _Int(lhs.i * rhs.i)
Ejemplo n.º 5
0
 def add(sf, lhs, rhs, /):
     return _Int(lhs.i + rhs.i)
Ejemplo n.º 6
0
 def get_one(sf, /):
     return _Int(1)
Ejemplo n.º 7
0
 def get_zero(sf, /):
     return _Int(0)