32
32
#include " universal/posit/math/hyperbolic.hpp"
33
33
#include " universal/posit/math/logarithm.hpp"
34
34
#include " universal/posit/math/sqrt.hpp"
35
+ #include " universal/posit/numeric_limits.hpp"
35
36
36
37
TVM_DLL sw::unum::posit<8 , 2 > Uint8ToPosit8es2 (uint8_t in) {
37
38
sw::unum::bitblock<8 > bb;
@@ -40,12 +41,15 @@ TVM_DLL sw::unum::posit<8, 2> Uint8ToPosit8es2(uint8_t in) {
40
41
}
41
42
42
43
extern " C" {
43
- TVM_DLL uint8_t RawPosit8es2 (uint8_t in) { return in; }
44
-
45
44
TVM_DLL uint8_t Posit8es2toUint8 (sw::unum::posit<8 , 2 > in) {
46
45
return static_cast <uint8_t >(in.get ().to_ullong ());
47
46
}
48
47
48
+ TVM_DLL uint8_t MinPosit8es2 () {
49
+ auto min = std::numeric_limits<sw::unum::posit<8 , 2 >>::lowest ();
50
+ return Posit8es2toUint8 (min);
51
+ }
52
+
49
53
TVM_DLL float Posit8es2ToFloat (uint8_t in) { return Uint8ToPosit8es2 (in).operator float (); }
50
54
51
55
TVM_DLL uint8_t FloatToPosit8es2 (float in) {
@@ -104,12 +108,15 @@ TVM_DLL sw::unum::posit<16, 2> Uint16ToPosit16es2(uint16_t in) {
104
108
}
105
109
106
110
extern " C" {
107
- TVM_DLL uint16_t RawPosit16es2 (uint16_t in) { return in; }
108
-
109
111
TVM_DLL uint16_t Posit16es2toUint16 (sw::unum::posit<16 , 2 > in) {
110
112
return static_cast <uint16_t >(in.get ().to_ullong ());
111
113
}
112
114
115
+ TVM_DLL uint8_t MinPosit16es2 () {
116
+ auto min = std::numeric_limits<sw::unum::posit<16 , 2 >>::lowest ();
117
+ return Posit16es2toUint16 (min);
118
+ }
119
+
113
120
TVM_DLL float Posit16es2ToFloat (uint16_t in) { return Uint16ToPosit16es2 (in).operator float (); }
114
121
115
122
TVM_DLL uint16_t FloatToPosit16es2 (float in) {
@@ -168,12 +175,15 @@ TVM_DLL sw::unum::posit<32, 2> Uint32ToPosit32es2(uint32_t in) {
168
175
}
169
176
170
177
extern " C" {
171
- TVM_DLL uint32_t RawPosit32es2 (uint32_t in) { return in; }
172
-
173
178
TVM_DLL uint32_t Posit32es2ToUint32 (sw::unum::posit<32 , 2 > in) {
174
179
return static_cast <uint32_t >(in.get ().to_ullong ());
175
180
}
176
181
182
+ TVM_DLL uint8_t MinPosit32es2 () {
183
+ auto min = std::numeric_limits<sw::unum::posit<32 , 2 >>::lowest ();
184
+ return Posit32es2ToUint32 (min);
185
+ }
186
+
177
187
TVM_DLL float Posit32es2ToFloat (uint32_t in) { return Uint32ToPosit32es2 (in).operator float (); }
178
188
179
189
TVM_DLL uint32_t FloatToPosit32es2 (float in) {
0 commit comments