1# test basic float capabilities
2
3# literals
4print(0.12)
5print(1.0)
6print(1.2)
7print(0e0)
8print(0e0)
9print(0e-0)
10
11# float construction
12print(float(1.2))
13print(float("1.2"))
14print(float("+1"))
15print(float("1e1"))
16print(float("1e+1"))
17print(float("1e-1"))
18print(float("inf"))
19print(float("-inf"))
20print(float("INF"))
21print(float("infinity"))
22print(float("INFINITY"))
23print(float("nan"))
24print(float("-nan"))
25print(float("NaN"))
26try:
27    float("")
28except ValueError:
29    print("ValueError")
30try:
31    float("1e+")
32except ValueError:
33    print("ValueError")
34try:
35    float("1z")
36except ValueError:
37    print("ValueError")
38
39# construct from something with the buffer protocol
40print(float(b"1.2"))
41print(float(bytearray(b"3.4")))
42
43# unary operators
44print(bool(0.0))
45print(bool(1.2))
46print(+(1.2))
47print(-(1.2))
48
49# division of integers
50x = 1 / 2
51print(x)
52
53# /= operator
54a = 1
55a /= 2
56print(a)
57
58# floor division
59print(1.0 // 2)
60print(2.0 // 2)
61
62# comparison
63print(1.2 <= 3.4)
64print(1.2 <= -3.4)
65print(1.2 >= 3.4)
66print(1.2 >= -3.4)
67print(0.0 == False, 1.0 == True)
68print(False == 0.0, True == 1.0)
69
70# comparison of nan is special
71nan = float("nan")
72print(nan == 1.2)
73print(nan == nan)
74
75try:
76    1.0 / 0
77except ZeroDivisionError:
78    print("ZeroDivisionError")
79
80try:
81    1.0 // 0
82except ZeroDivisionError:
83    print("ZeroDivisionError")
84
85try:
86    1.2 % 0
87except ZeroDivisionError:
88    print("ZeroDivisionError")
89
90try:
91    0.0 ** -1
92except ZeroDivisionError:
93    print("ZeroDivisionError")
94
95# unsupported unary ops
96
97try:
98    ~1.2
99except TypeError:
100    print("TypeError")
101
102try:
103    1.2 in 3.4
104except TypeError:
105    print("TypeError")
106
107# small int on LHS, float on RHS, unsupported op
108try:
109    print(1 | 1.0)
110except TypeError:
111    print("TypeError")
112
113# can't convert list to float
114try:
115    float([])
116except TypeError:
117    print("TypeError")
118
119# test constant float with more than 255 chars
120x = 1.84728699436059052516398251149631771898472869943605905251639825114963177189847286994360590525163982511496317718984728699436059052516398251149631771898472869943605905251639825114963177189847286994360590525163982511496317718984728699436059052516398251149631771898472869943605905251639825114963177189
121print("%.5f" % x)
122