move building directions out into separate file
[sfpy.git] / testing.py
1 import sfpy
2
3
4 print('testing Poist8 neg / abs...')
5 for i in range(1 << 8):
6 x = sfpy.Posit8(i)
7 neg_x = -x
8 minus_x = x * sfpy.Posit8(-1.0)
9
10 if not neg_x.bits == minus_x.bits:
11 print('-', x, neg_x, minus_x)
12
13 neg_x2 = sfpy.posit.p8_neg(x)
14
15 if not neg_x2.bits == minus_x.bits:
16 print('p8_neg', x, neg_x2, minus_x)
17
18 x.ineg()
19
20 if not x.bits == minus_x.bits:
21 print('ineg', x, minus_x)
22
23
24 y = sfpy.Posit8(i)
25 abs_y = abs(y)
26 if y < sfpy.Posit8(0):
27 ifneg_y = y * sfpy.Posit8(-1.0)
28 else:
29 ifneg_y = y * sfpy.Posit8(1.0)
30
31 if not abs_y.bits == ifneg_y.bits:
32 print('abs', y, abs_y, ifneg_y)
33
34 abs_y2 = sfpy.posit.p8_abs(y)
35
36 if not abs_y2.bits == ifneg_y.bits:
37 print('p8_abs', y, abs_y2, ifneg_y)
38
39 y.iabs()
40
41 if not y.bits == ifneg_y.bits:
42 print('iabs', y, ifneg_y)
43
44
45 print('testing Poist16 neg / abs...')
46 for i in range(1 << 16):
47 x = sfpy.Posit16(i)
48 neg_x = -x
49 minus_x = x * sfpy.Posit16(-1.0)
50
51 if not neg_x.bits == minus_x.bits:
52 print('-', x, neg_x, minus_x)
53
54 neg_x2 = sfpy.posit.p16_neg(x)
55
56 if not neg_x2.bits == minus_x.bits:
57 print('p16_neg', x, neg_x2, minus_x)
58
59 x.ineg()
60
61 if not x.bits == minus_x.bits:
62 print('ineg', x, minus_x)
63
64
65 y = sfpy.Posit16(i)
66 abs_y = abs(y)
67 if y < sfpy.Posit16(0):
68 ifneg_y = y * sfpy.Posit16(-1.0)
69 else:
70 ifneg_y = y * sfpy.Posit16(1.0)
71
72 if not abs_y.bits == ifneg_y.bits:
73 print('abs', y, abs_y, ifneg_y)
74
75 abs_y2 = sfpy.posit.p16_abs(y)
76
77 if not abs_y2.bits == ifneg_y.bits:
78 print('p16_abs', y, abs_y2, ifneg_y)
79
80 y.iabs()
81
82 if not y.bits == ifneg_y.bits:
83 print('iabs', y, ifneg_y)
84
85
86 print('testing Poist32 neg / abs...')
87 for i in range(1 << 32):
88 x = sfpy.Posit32(i)
89 neg_x = -x
90 minus_x = x * sfpy.Posit32(-1.0)
91
92 if not neg_x.bits == minus_x.bits:
93 print('-', x, neg_x, minus_x)
94
95 neg_x2 = sfpy.posit.p32_neg(x)
96
97 if not neg_x2.bits == minus_x.bits:
98 print('p32_neg', x, neg_x2, minus_x)
99
100 x.ineg()
101
102 if not x.bits == minus_x.bits:
103 print('ineg', x, minus_x)
104
105
106 y = sfpy.Posit32(i)
107 abs_y = abs(y)
108 if y < sfpy.Posit32(0):
109 ifneg_y = y * sfpy.Posit32(-1.0)
110 else:
111 ifneg_y = y * sfpy.Posit32(1.0)
112
113 if not abs_y.bits == ifneg_y.bits:
114 print('abs', y, abs_y, ifneg_y)
115
116 abs_y2 = sfpy.posit.p32_abs(y)
117
118 if not abs_y2.bits == ifneg_y.bits:
119 print('p32_abs', y, abs_y2, ifneg_y)
120
121 y.iabs()
122
123 if not y.bits == ifneg_y.bits:
124 print('iabs', y, ifneg_y)
125
126
127 print('...done.')