1DEF FLOAT = 12.5 2DEF EMFLOAT = 5e-1 3DEF EPFLOAT = 5e+1 4DEF FLOAT_NAN = float('nan') 5DEF FLOAT_INFP = float('+inf') 6DEF FLOAT_INFN = float('-inf') 7 8cdef double cdef_float_nan = float('nan') 9cdef double cdef_float_infp = float('+inf') 10cdef double cdef_float_infn = float('-inf') 11 12float_nan = FLOAT_NAN 13float_infp = FLOAT_INFP 14float_infn = FLOAT_INFN 15 16def f(): 17 """ 18 >>> f() 19 12.5 20 """ 21 cdef float f = FLOAT 22 cdef object o = FLOAT 23 assert f == o 24 return f 25 26def emfloat(): 27 """ 28 >>> emfloat() 29 0.5 30 """ 31 cdef float f = EMFLOAT 32 assert f == 5e-1 33 cdef object o = EMFLOAT 34 assert o == 5e-1 35 assert f == o 36 return f 37 38def epfloat(): 39 """ 40 >>> epfloat() 41 50.0 42 """ 43 cdef float f = EPFLOAT 44 assert f == 5e+1 45 cdef object o = EPFLOAT 46 assert o == 5e+1 47 assert f == o 48 return f 49 50def nan1(): 51 """ 52 >>> nan1() 53 nan 54 """ 55 cdef double f = FLOAT_NAN 56 cdef object o = FLOAT_NAN 57 assert str(f) == str(o) 58 return f 59 60def nan2(): 61 """ 62 >>> nan2() 63 nan 64 """ 65 cdef double f = float('nan') 66 cdef object o = float('nan') 67 assert str(f) == str(o) 68 return f 69 70def nan3(): 71 """ 72 >>> nan3() 73 nan 74 >>> float_nan 75 nan 76 """ 77 cdef float f = FLOAT_NAN 78 cdef object o = FLOAT_NAN 79 assert str(f) == str(o) 80 return f 81 82def infp1(): 83 """ 84 >>> infp1() 85 inf 86 >>> infp1() == float('inf') 87 True 88 """ 89 cdef double f = FLOAT_INFP 90 cdef object o = FLOAT_INFP 91 assert f == o 92 return f 93 94def infp2(): 95 """ 96 >>> infp2() 97 inf 98 >>> infp2() == float('inf') 99 True 100 """ 101 cdef double f = float('+inf') 102 cdef object o = float('+inf') 103 assert f == o 104 return f 105 106def infp3(): 107 """ 108 >>> infp3() 109 inf 110 >>> infp3() == float('inf') 111 True 112 >>> float_infp 113 inf 114 >>> float_infp == float('inf') 115 True 116 """ 117 cdef float f = FLOAT_INFP 118 cdef object o = FLOAT_INFP 119 assert f == o 120 return f 121 122def infn1(): 123 """ 124 >>> infn1() 125 -inf 126 >>> infn1() == float('-inf') 127 True 128 """ 129 cdef double f = FLOAT_INFN 130 cdef object o = FLOAT_INFN 131 assert f == o 132 return f 133 134def infn2(): 135 """ 136 >>> infn2() 137 -inf 138 >>> infn2() == float('-inf') 139 True 140 """ 141 cdef double f = float('-inf') 142 cdef object o = float('-inf') 143 assert f == o 144 return f 145 146def infn3(): 147 """ 148 >>> infn3() 149 -inf 150 >>> infn3() == float('-inf') 151 True 152 >>> float_infn 153 -inf 154 >>> float_infn == float('-inf') 155 True 156 """ 157 cdef float f = FLOAT_INFN 158 cdef object o = FLOAT_INFN 159 assert f == o 160 return f 161 162def global_floats(): 163 """ 164 >>> global_floats()[1:] == (float('+inf'), float('-inf')) 165 True 166 >>> global_floats()[0] 167 nan 168 """ 169 return (cdef_float_nan, cdef_float_infp, cdef_float_infn) 170