1def single_py(a, b):
2    """
3    >>> single_py(1, 2)
4    True
5    >>> single_py(2, 1)
6    False
7    """
8    return a < b
9
10def cascaded_py(a, b, c):
11    """
12    >>> cascaded_py(1, 2, 3)
13    True
14    >>> cascaded_py(1, 2, -1)
15    False
16    >>> cascaded_py(10, 2, 3)
17    False
18    """
19    return a < b < c
20
21def single_c(int a, int b):
22    """
23    >>> single_c(1, 2)
24    True
25    >>> single_c(2, 1)
26    False
27    """
28    return a < b
29
30def cascaded_c(double a, double b, double c):
31    """
32    >>> cascaded_c(1, 2, 3)
33    True
34    >>> cascaded_c(1, 2, -1)
35    False
36    >>> cascaded_c(10, 2, 3)
37    False
38    """
39    return a < b < c
40
41def cascaded_mix_pyleft(a, double b, double c):
42    """
43    >>> cascaded_mix_pyleft(1, 2, 3)
44    True
45    >>> cascaded_mix_pyleft(1, 2, -1)
46    False
47    >>> cascaded_mix_pyleft(10, 2, 3)
48    False
49    """
50    return a < b < c
51
52def cascaded_mix_pyright(double a, double b, c):
53    """
54    >>> cascaded_mix_pyright(1, 2, 3)
55    True
56    >>> cascaded_mix_pyright(1, 2, -1)
57    False
58    >>> cascaded_mix_pyright(10, 2, 3)
59    False
60    """
61    return a < b < c
62
63def typed_cmp(list L):
64    """
65    >>> typed_cmp([1,2,3])
66    False
67    False
68    False
69    False
70    """
71    print L is Ellipsis
72    print Ellipsis is L
73    print 1 == L
74    print L == 1.5
75
76def pointer_cmp():
77    """
78    >>> pointer_cmp()
79    True
80    False
81    True
82    """
83    cdef int* a = NULL
84    cdef double* b = NULL
85    cdef double** c = NULL
86    print a is NULL
87    print b is not NULL
88    print c == NULL
89
90def c_cmp(double a, int b, long c):
91    """
92    >>> c_cmp(1, 2, 3)
93    True
94    >>> c_cmp(1.5, 2, 2)
95    True
96    >>> c_cmp(1.5, 2, 0)
97    False
98    >>> c_cmp(1, 1, 3)
99    False
100    """
101    return a < b <= c
102