Blob Blame History Raw
cimport cython


def bigint(x):
    print(str(x).rstrip('L'))


def mixed_test():
    """
    >>> mixed_test()
    (30, 22)
    """
    cdef int int1, int2, int3
    cdef char *ptr1, *ptr2 = "test", *ptr3 = "toast"
    int2 = 10
    int3 = 20
    obj1 = 1
    obj2 = 2
    obj3 = 3
    int1 = int2 + int3
    ptr1 = ptr2 + int3
    ptr1 = int2 + ptr3
    obj1 = obj2 + int3
    return int1, obj1


@cython.test_fail_if_path_exists('//AddNode')
def add_x_1(x):
    """
    >>> add_x_1(0)
    1
    >>> add_x_1(1)
    2
    >>> add_x_1(-1)
    0
    >>> bigint(2**50 + 1)
    1125899906842625
    >>> bigint(add_x_1(2**50))
    1125899906842625
    >>> add_x_1(1.5)
    2.5
    >>> add_x_1(-1.5)
    -0.5
    >>> try: add_x_1("abc")
    ... except TypeError: pass
    """
    return x + 1


@cython.test_fail_if_path_exists('//AddNode')
def add_x_1f(x):
    """
    >>> add_x_1f(0)
    1.0
    >>> add_x_1f(1)
    2.0
    >>> add_x_1f(-1)
    0.0
    >>> add_x_1f(1.5)
    2.5
    >>> add_x_1f(-1.5)
    -0.5
    >>> try: add_x_1f("abc")
    ... except TypeError: pass
    """
    return x + 1.0


@cython.test_fail_if_path_exists('//AddNode')
def add_x_large(x):
    """
    >>> add_x_large(0)
    1073741824
    >>> add_x_large(1)
    1073741825
    >>> add_x_large(-1)
    1073741823
    >>> add_x_large(1.5)
    1073741825.5
    >>> add_x_large(-2.0**31)
    -1073741824.0
    >>> bigint(add_x_large(2**30 + 1))
    2147483649
    >>> bigint(2**50 + 1 + 2**30)
    1125900980584449
    >>> bigint(add_x_large(2**50 + 1))
    1125900980584449
    >>> bigint(2**31 + 2**30)
    3221225472
    >>> bigint(add_x_large(2**31))
    3221225472
    >>> bigint(2**66 + 2**30)
    73786976295911948288
    >>> bigint(add_x_large(2**66))
    73786976295911948288
    >>> try: add_x_large("abc")
    ... except TypeError: pass
    """
    return x + 2**30


@cython.test_fail_if_path_exists('//AddNode')
def add_1_x(x):
    """
    >>> add_1_x(0)
    1
    >>> add_1_x(1)
    2
    >>> add_1_x(-1)
    0
    >>> bigint(2**50 + 1)
    1125899906842625
    >>> bigint(add_1_x(2**50))
    1125899906842625
    >>> add_1_x(1.5)
    2.5
    >>> add_1_x(-1.5)
    -0.5
    >>> try: add_1_x("abc")
    ... except TypeError: pass
    """
    return 1 + x


@cython.test_fail_if_path_exists('//AddNode')
def add_1f_x(x):
    """
    >>> add_1f_x(0)
    1.0
    >>> add_1f_x(1)
    2.0
    >>> add_1f_x(-1)
    0.0
    >>> 1.0 + 2**52
    4503599627370497.0
    >>> add_1f_x(2**52)
    4503599627370497.0
    >>> add_1f_x(2**60) == 1.0 + 2**60 or add_1f_x(2**60)
    True
    >>> add_1f_x(1.5)
    2.5
    >>> add_1f_x(-1.5)
    -0.5
    >>> try: add_1f_x("abc")
    ... except TypeError: pass
    """
    return 1.0 + x


@cython.test_fail_if_path_exists('//AddNode')
def add_large_x(x):
    """
    >>> add_large_x(0)
    1073741824
    >>> add_large_x(1)
    1073741825
    >>> add_large_x(-1)
    1073741823
    >>> add_large_x(1.5)
    1073741825.5
    >>> add_large_x(-2.0**30)
    0.0
    >>> add_large_x(-2.0**31)
    -1073741824.0
    >>> try: add_large_x("abc")
    ... except TypeError: pass
    """
    return 2**30 + x