summaryrefslogtreecommitdiff
path: root/Cython/Includes/libcpp/limits.pxd
blob: 11f5e23eab4e985298b7fce232866fb04cb424d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
cdef extern from "<limits>" namespace "std" nogil:
    enum float_round_style:
        round_indeterminate       = -1
        round_toward_zero         = 0
        round_to_nearest          = 1
        round_toward_infinity     = 2
        round_toward_neg_infinity = 3

    enum float_denorm_style:
        denorm_indeterminate  = -1
        denorm_absent         = 0
        denorm_present        = 1

    #The static methods can be called as, e.g. numeric_limits[int].round_error(), etc.
    #The const data members should be declared as static.  Cython currently doesn't allow that
    #and/or I can't figure it out, so you must instantiate an object to access, e.g.
    #cdef numeric_limits[double] lm
    #print lm.round_style
    cdef cppclass numeric_limits[T]:
        const bint is_specialized
        @staticmethod
        T min()
        @staticmethod
        T max()
        const int digits
        const int  digits10
        const bint is_signed
        const bint is_integer
        const bint is_exact
        const int radix
        @staticmethod
        T epsilon()
        @staticmethod
        T round_error()

        const int  min_exponent
        const int  min_exponent10
        const int  max_exponent
        const int  max_exponent10

        const bint has_infinity
        const bint has_quiet_NaN
        const bint has_signaling_NaN
        const float_denorm_style has_denorm
        const bint has_denorm_loss
        @staticmethod
        T infinity()
        @staticmethod
        T quiet_NaN()
        @staticmethod
        T signaling_NaN()
        @staticmethod
        T denorm_min()

        const bint is_iec559
        const bint is_bounded
        const bint is_modulo

        const bint traps
        const bint tinyness_before
        const float_round_style round_style