The universal library contains a collection of command line tools that help investigate
bit-level attributes of the number systems and the values they encode. These command line
tools get installed with the make install
build target.
The following segments presents short description of their use.
Compare the three IEEE formats on a given real number value:
$ ieee
Show the truncated value and (sign/scale/fraction) components of different floating point types.
Usage: ieee floating_point_value
Example: ieee 0.03124999
input value: 0.03124999
float: 0.0312499907 (+,-6,11111111111111111111011)
double: 0.031249989999999998 (+,-6,1111111111111111111101010100001100111000100011101110)
long double: 0.0312499899999999983247 (+,-6,111111111111111111101001011110100011111111111110001111111001111)
Show the sign/scale/fraction components of an IEEE-754 quarter-precision floating-point.
$ quarter
quarter : components of an IEEE-754 quarter-precision float : 8 bits with 2 exponent bits
Show the sign/scale/fraction components of a quarter-precision IEEE-754 floating-point.
Usage: quarter value
Example: quarter 0.03124999
scientific : 0.031
triple form : (+, -5, 0b01.0'0000)
binary form : 0b0.00.0'0001
color coded : 00000001
Number Traits of quarter-precision IEEE-754 floating-point
std::numeric_limits< N2sw9universal6cfloatILj8ELj2EhLb1ELb0ELb0EEE >
min exponent -2
max exponent 2
radix 2
radix digits 6
min 1
max 3.9375
lowest -3.9375
epsilon (1+1ULP-1) 0.03125
round_error 0.5
smallest value 0.03125
infinity inf
quiet_NAN nan
signaling_NAN nan
smallest normal number
0b0.01.00000 : 1
smallest denormalized number
0b0.00.00001 : 0.03125
Show the sign/scale/fraction components of an IEEE-754 half-precision floating-point.
$ half
half : components of an IEEE-754 half-precision floating-point: 16 bits with 5 exponent bits
Show the sign/scale/fraction components of a half-precision IEEE-754 floating-point.
Usage: half value
Example: half 0.03124999
scientific : 0.03125
triple form : (+, -5, 0b01.00'0000'0000)
binary form : 0b0.0'1010.00'0000'0000
color coded : 0010100000000000
Number Traits of half-precision IEEE-754 floating-point
std::numeric_limits< N2sw9universal6cfloatILj16ELj5EtLb1ELb0ELb0EEE >
min exponent -16
max exponent 16
radix 2
radix digits 11
min 6.10352e-05
max 65504
lowest -65504
epsilon (1+1ULP-1) 0.000976562
round_error 0.5
smallest value 5.96046e-08
infinity inf
quiet_NAN nan
signaling_NAN nan
smallest normal number
0b0.00001.0000000000 : 6.10352e-05
smallest denormalized number
0b0.00000.0000000001 : 5.96046e-08
Show the sign/scale/fraction components of an IEEE-754 single-precision floating-point.
$ single
single : components of an IEEE-754 single-precision floating_point: 32 bits with 8 exponent bits
Show the sign/scale/fraction components of a single-precision IEEE-754 floating-point.
Usage: single value
Example: single 0.03124999
scientific : 0.0312499907
triple form : (+,-6,0b11111111111111111111011)
binary form : 0b0.0111'1001.111'1111'1111'1111'1111'1011
color coded : 0b0.0111'1001.111'1111'1111'1111'1111'1011
Number Traits of IEEE-754 float
std::numeric_limits< f >
min exponent -125
max exponent 128
radix 2
radix digits 24
min 1.17549e-38
max 3.40282e+38
lowest -3.40282e+38
epsilon (1+1ULP-1) 1.19209e-07
round_error 0.5
smallest value 1.4013e-45
infinity inf
quiet_NAN nan
signaling_NAN nan
smallest normal number
0b0.00000001.00000000000000000000000 : 1.17549e-38
smallest denormalized number
0b0.00000000.00000000000000000000001 : 1.4013e-45
Universal parameterization of IEEE-754 fields
Total number of bits : 32
number of exponent bits : 8
number of fraction bits : 23
exponent bias : 127
sign field mask : 0b1000'0000'0000'0000'0000'0000'0000'0000
exponent field mask : 0b0111'1111'1000'0000'0000'0000'0000'0000
mask of exponent value : 0b1111'1111
mask of hidden bit : 0b0000'0000'1000'0000'0000'0000'0000'0000
fraction field mask : 0b0000'0000'0111'1111'1111'1111'1111'1111
significant field mask : 0b0000'0000'1111'1111'1111'1111'1111'1111
MSB fraction bit mask : 0b0000'0000'0100'0000'0000'0000'0000'0000
qNaN pattern : 0b0111'1111'1100'0000'0000'0000'0000'0000
sNaN pattern : 0b0111'1111'1010'0000'0000'0000'0000'0000
smallest normal value : 1.17549e-38
: 0b0.00000001.00000000000000000000000
smallest subnormal value : 1.4013e-45
: 0b0.00000000.00000000000000000000001
exponent smallest normal : -126
exponent smallest subnormal : -149
Show the sign/scale/fraction components of an IEEE-754 double-precision floating-point.
$ double
double : components of an IEEE double-precision float
Show the sign/scale/fraction components of an IEEE double.
Usage: double double_value
Example: double 0.03124999
scientific : 0.031249989999999998
triple form : (+,-6,1111111111111111111101010100001100111000100011101110)
binary form : 0b0.011'1111'1001.1111'1111'1111'1111'1111'0101'0100'0011'0011'1000'1000'1110'1110
color coded : 0b0.011'1111'1001.1111'1111'1111'1111'1111'0101'0100'0011'0011'1000'1000'1110'1110
Number Traits of IEEE-754 double
std::numeric_limits< d >
min exponent -1021
max exponent 1024
radix 2
radix digits 53
min 2.22507e-308
max 1.79769e+308
lowest -1.79769e+308
epsilon (1+1ULP-1) 2.22045e-16
round_error 0.5
smallest value 4.94066e-324
infinity inf
quiet_NAN nan
signaling_NAN nan
smallest normal number
0b0.00000000001.0000000000000000000000000000000000000000000000000000
smallest denormalized number
0b0.00000000000.0000000000000000000000000000000000000000000000000001
Universal parameterization of IEEE-754 fields
Total number of bits : 64
number of exponent bits : 11
number of fraction bits : 52
exponent bias : 1023
sign field mask : 0b1000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
exponent field mask : 0b0111'1111'1111'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
mask of exponent value : 0b111'1111'1111
mask of hidden bit : 0b0000'0000'0001'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
fraction field mask : 0b0000'0000'0000'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111
significant field mask : 0b0000'0000'0001'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111'1111
MSB fraction bit mask : 0b0000'0000'0000'1000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
qNaN pattern : 0b0111'1111'1111'1000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
sNaN pattern : 0b0111'1111'1111'0100'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
smallest normal value : 2.22507e-308
: 0b0.00000000001.0000000000000000000000000000000000000000000000000000
smallest subnormal value : 4.94066e-324
: 0b0.00000000000.0000000000000000000000000000000000000000000000000001
exponent smallest normal : -1022
exponent smallest subnormal : -1074
Show the sign/scale/fraction components of an IEEE-754 long double.
On Windows using the Microsoft Visual Studio environment, the long double
is aliased to double
.
$ longdouble
longdouble: components of an IEEE long-double (compiler dependent, 80-bit extended precision on x86 and ARM, 128-bit on RISC-V
Show the sign/scale/fraction components of an IEEE long double.
Usage: longdouble long_double_value
Example: longdouble 0.03124999
scientific : 0.0312499899999999983247
triple form : (+,-6,111111111111111111110101010000110011100010001110111000000000000)
binary form : 0b0.011'1111'1111'1001.1111'1111'1111'1111'1111'1010'1010'0001'1001'1100'0100'0111'0111'0000'0000'0000
color coded : 0b0.0011'1111'1111'1001.111'1111'1111'1111'1111'1010'1010'0001'1001'1100'0100'0111'0111'0000'0000'0000
Number Traits of IEEE-754 long double
std::numeric_limits< e >
min exponent -16381
max exponent 16384
radix 2
radix digits 64
min 3.3621e-4932
max 1.18973e+4932
lowest -1.18973e+4932
epsilon (1+1ULP-1) 1.0842e-19
round_error 0.5
smallest value 3.6452e-4951
infinity inf
quiet_NAN nan
signaling_NAN nan
smallest normal number
0b0.000000000000001.1000000000000000000000000000000000000000000000000000000000000000
smallest denormalized number
0b0.000000000000000.0000000000000000000000000000000000000000000000000000000000000001
Universal parameterization of IEEE-754 fields
Total number of bits : 80
number of exponent bits : 15
number of fraction bits : 63
exponent bias : 16383
sign field mask : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
exponent field mask : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
mask of exponent value : 0b111'1111'1111'1111
mask of hidden bit : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
fraction field mask : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
significant field mask : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
MSB fraction bit mask : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
qNaN pattern : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
sNaN pattern : 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
smallest normal value : 3.3621e-4932
: 0b0.000000000000001.1000000000000000000000000000000000000000000000000000000000000000
smallest subnormal value : 3.6452e-4951
: 0b0.000000000000000.0000000000000000000000000000000000000000000000000000000000000001
exponent smallest normal : -16382
exponent smallest subnormal : -16445
Show the sign/scale/fraction components of an IEEE-754 quad-precision floating-point.
$ quad
quad : components of an IEEE-754 quad-precision float : 128 bits total with 15 exponent bits
Show the sign/scale/fraction components of a quad-precision IEEE-754 floating-point.
Usage: quad value
Example: quad 0.03124999
scientific : 0.03124999068677425384521484375
triple form : (+, -6, 0b01'1111'1111'1111'1111'1111'0110'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000)
binary form : 0b0.011'1111'1111'1001.1111'1111'1111'1111'1111'0110'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000
color coded : 00111111111110011111111111111111111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Number Traits of quad-precision IEEE-754 floating-point
std::numeric_limits< N2sw9universal6cfloatILj128ELj15EjLb1ELb0ELb0EEE >
min exponent -16384
max exponent 16384
radix 2
radix digits 113
min 0
max inf
lowest -inf
epsilon (1+1ULP-1) 1.92593e-34
round_error 0.5
smallest value 0
infinity inf
quiet_NAN nan
signaling_NAN nan
smallest normal number
0b0.000000000000001.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 : 0
smallest denormalized number
0b0.000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 : 0
Show the sign/scale/fraction components of a fixed-point value.
$ fixpnt
fixpnt : components of a fixed-point value
Show the sign/scale/fraction components of a fixed-point value.
Usage: fixpnt float_value
Example: fixpnt 1.0625
class sw::universal::fixpnt < 8, 4, 1, unsigned char>
1.0625
b0001.0001
class sw::universal::fixpnt < 12, 4, 1, unsigned char>
1.0625
b0000'0001.0001
class sw::universal::fixpnt < 16, 8, 1, unsigned char>
1.06250000
b0000'0001.0001'0000
class sw::universal::fixpnt < 32, 16, 1, unsigned char>
1.0625000000000000
b0000'0000'0000'0001.0001'0000'0000'0000
class sw::universal::fixpnt < 64, 32, 1, unsigned char>
1.06250000000000000000000000000000
b0000'0000'0000'0000'0000'0000'0000'0001.0001'0000'0000'0000'0000'0000'0000'0000
Show the sign/scale/fraction components of a signed integer.
$ signedint
signedint : components of a signed integer
Show the sign/scale/fraction components of a signed integer.
Usage: signedint value
Example: signedint 1234567890123456789012345
class sw::universal::integer<128,unsigned int> : 1234567890123456789012345 (+,80,00000101011011100000111100110110101001100100010000111101111000101101111101111001)
Show the sign/scale/fraction components of an unsigned integer.
$ unsignedint
Show the sign/scale/regime/exponent/fraction components of a posit.
$ posit
posit : posit components
Show the sign/scale/regime/exponent/fraction components of a posit.
Usage: posit value
Example: posit 3.1415926535897932384626433832795028841971
posit< 8,0> = 01101001 : 3.125
posit< 8, 1> = 01011001 : 3.125
posit< 8, 2> = 01001101 : 3.25
posit< 8, 3> = 01000110 : 3
posit<16, 1> = 0101100100100010 : 3.1416
posit<16, 2> = 0100110010010001 : 3.1416
posit<16, 3> = 0100011001001000 : 3.1406
posit<24, 1> = 010110010010000111111011 : 3.141592
posit<24, 2> = 010011001001000011111110 : 3.141594
posit<24, 3> = 010001100100100001111111 : 3.141594
posit<32, 1> = 01011001001000011111101101010100 : 3.14159265
posit<32, 2> = 01001100100100001111110110101010 : 3.14159265
posit<32, 3> = 01000110010010000111111011010101 : 3.14159265
posit<48, 1> = 010110010010000111111011010101000100010000101101 : 3.1415926535898
posit<48, 2> = 010011001001000011111101101010100010001000010111 : 3.1415926535899
posit<48, 3> = 010001100100100001111110110101010001000100001011 : 3.1415926535897
posit<64, 1> = 0101100100100001111110110101010001000100001011010001100000000000 : 3.14159265358979312
posit<64, 2> = 0100110010010000111111011010101000100010000101101000110000000000 : 3.14159265358979312
posit<64, 3> = 0100011001001000011111101101010100010001000010110100011000000000 : 3.14159265358979312
posit<64, 4> = 0100001100100100001111110110101010001000100001011010001100000000 : 3.14159265358979312
Show the conversion of a float to a posit step-by-step.
$ float2posit
Show the conversion of a float to a posit step-by-step.
Usage: float2posit floating_point_value posit_size_in_bits[one of 8|16|32|48|64|80|96|128|256]
Example: convert -1.123456789e17 32
$ float2posit 1.234567890 32
1.23456789 input value
Test for ZERO
(+, 0, 0011110000001100101001000010100000111101111000011011) input value is NOT zero
Test for NaR
(+, 0, 0011110000001100101001000010100000111101111000011011) input value is NOT NaR
construct the posit
0011'1100'0000'1100'1010'0100'0010'1000'0011'1101'1110'0001'1011 full fraction bits
0000'0000'0000'0000'0000'0000'0000'0111'1111'1111'1111'1111'1111 mask of remainder bits
0'0000'0000'0000'0000'0000'0000'0000'0000'0000 unconstrained posit : length = nbits(32) + es(2) + 3 guard bits : 37
0'0001'0000'0000'0000'0000'0000'0000'0000'0000 runlength = 1
0'0000'0000'0000'0000'0000'0000'0000'0000'0000 exponent value = 0
0'0000'0000'0111'1000'0001'1001'0100'1000'0100 most significant 28 fraction bits(nbits - 1 - run - es)
0'0000'0000'0000'0000'0000'0000'0000'0000'0001 sticky bit representing the truncated fraction bits
0'0001'0000'0111'1000'0001'1001'0100'1000'0101 unconstrained posit bits length = 34
0'0000'0000'0000'0000'0000'0000'0000'0000'0100 last bit mask
0'0000'0000'0000'0000'0000'0000'0000'0000'0010 bit after last bit mask
0'0000'0000'0000'0000'0000'0000'0000'0000'0001 sticky bit mask
rounding decision(blast & bafter) | (bafter & bsticky) : round down
0'1000'0011'1100'0000'1100'1010'0100'0010'1000 shifted posit
0100'0001'1110'0000'0110'0101'0010'0001 truncated posit
0100'0001'1110'0000'0110'0101'0010'0001 rounded posit
0100'0001'1110'0000'0110'0101'0010'0001 final posit
Show the storage properties of the native, standard, and extended posits.
$ propenv
Bit sizes for native types
unsigned char 8 bits
unsigned short 16 bits
unsigned int 32 bits
unsigned long long 64 bits
signed char 7 bits
signed short 15 bits
signed int 31 bits
signed long long 63 bits
float 24 bits
double 53 bits
long double 53 bits
Min-Max range for floats and posit<32,2> comparison
float min 1.17549e-38 max 3.40282e+38
class sw::unum::posit<32,2> min 7.52316e-37 max 1.32923e+36
Bit sizes for standard posit configurations
posit<8,0> 8 bits
posit<16,1> 16 bits
posit<32,2> 32 bits
posit<64,3> 64 bits
posit<128,4> 128 bits
posit<256,5> 256 bits
Bit sizes for extended posit configurations
posit<4,0> 8 bits
posit<8,0> 8 bits
posit<16,1> 16 bits
posit<20,1> 32 bits
posit<24,1> 32 bits
posit<28,1> 32 bits
posit<32,2> 32 bits
posit<40,2> 64 bits
posit<48,2> 64 bits
posit<56,2> 64 bits
posit<64,3> 64 bits
posit<80,3> 128 bits
posit<96,3> 128 bits
posit<112,3> 128 bits
posit<128,4> 128 bits
posit<256,5> 256 bits
Long double properties
value 1.2345678901234567
hex 00 00 00 00 00 00 00 04 3f f3 c0 ca 42 8c 59 fb
sign +
scale 1
fraction 1056399862553083
Show the arithmetic properties of a posit environment, including its quire.
$ propp
Show the arithmetic properties of a posit.
Usage: propp [nbits es capacity]
Example: propp 16 1 8
arithmetic properties of a posit<16, 1> environment
posit< 16, 1> useed scale 2 minpos scale - 28 maxpos scale 28
minpos : 16.1x0001p + 3.72529e-09
maxpos : 16.1x7fffp + 2.68435e+08
Properties of a quire<16, 1, 8>
dynamic range of product : 112
radix point of accumulator : 56
full quire size in bits : 120
lower quire size in bits : 56
upper quire size in bits : 57
capacity bits : 8
Quire segments
+ : 00000000_000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000
Show the numeric_limits<> of the standard posits.
$ plimits
plimits: numeric_limits<> of standard posits
Numeric limits for posit< 8, 0>
numeric_limits< sw::universal::posit<8, 0> >::min() : 0.015625
numeric_limits< sw::universal::posit<8, 0> >::max() : 64
numeric_limits< sw::universal::posit<8, 0> >::lowest() : -64
numeric_limits< sw::universal::posit<8, 0> >::epsilon() : 0.03125
numeric_limits< sw::universal::posit<8, 0> >::digits : 6
numeric_limits< sw::universal::posit<8, 0> >::digits10 : 1
numeric_limits< sw::universal::posit<8, 0> >::max_digits10 : 2
numeric_limits< sw::universal::posit<8, 0> >::is_signed : 1
numeric_limits< sw::universal::posit<8, 0> >::is_integer : 0
numeric_limits< sw::universal::posit<8, 0> >::is_exact : 0
numeric_limits< sw::universal::posit<8, 0> >::min_exponent : -6
numeric_limits< sw::universal::posit<8, 0> >::min_exponent10 : -1
numeric_limits< sw::universal::posit<8, 0> >::max_exponent : 6
numeric_limits< sw::universal::posit<8, 0> >::max_exponent10 : 1
numeric_limits< sw::universal::posit<8, 0> >::has_infinity : 1
numeric_limits< sw::universal::posit<8, 0> >::has_quiet_NaN : 1
numeric_limits< sw::universal::posit<8, 0> >::has_signaling_NaN : 1
numeric_limits< sw::universal::posit<8, 0> >::has_denorm : 0
numeric_limits< sw::universal::posit<8, 0> >::has_denorm_loss : 0
numeric_limits< sw::universal::posit<8, 0> >::is_iec559 : 0
numeric_limits< sw::universal::posit<8, 0> >::is_bounded : 0
numeric_limits< sw::universal::posit<8, 0> >::is_modulo : 0
numeric_limits< sw::universal::posit<8, 0> >::traps : 0
numeric_limits< sw::universal::posit<8, 0> >::tinyness_before : 0
numeric_limits< sw::universal::posit<8, 0> >::round_style : 1
Numeric limits for posit< 16, 1>
numeric_limits< sw::universal::posit<16, 1> >::min() : 3.72529e-09
numeric_limits< sw::universal::posit<16, 1> >::max() : 2.68435e+08
numeric_limits< sw::universal::posit<16, 1> >::lowest() : -2.68435e+08
numeric_limits< sw::universal::posit<16, 1> >::epsilon() : 0.000244141
numeric_limits< sw::universal::posit<16, 1> >::digits : 13
numeric_limits< sw::universal::posit<16, 1> >::digits10 : 3
numeric_limits< sw::universal::posit<16, 1> >::max_digits10 : 4
numeric_limits< sw::universal::posit<16, 1> >::is_signed : 1
numeric_limits< sw::universal::posit<16, 1> >::is_integer : 0
numeric_limits< sw::universal::posit<16, 1> >::is_exact : 0
numeric_limits< sw::universal::posit<16, 1> >::min_exponent : -28
numeric_limits< sw::universal::posit<16, 1> >::min_exponent10 : -8
numeric_limits< sw::universal::posit<16, 1> >::max_exponent : 28
numeric_limits< sw::universal::posit<16, 1> >::max_exponent10 : 8
numeric_limits< sw::universal::posit<16, 1> >::has_infinity : 1
numeric_limits< sw::universal::posit<16, 1> >::has_quiet_NaN : 1
numeric_limits< sw::universal::posit<16, 1> >::has_signaling_NaN : 1
numeric_limits< sw::universal::posit<16, 1> >::has_denorm : 0
numeric_limits< sw::universal::posit<16, 1> >::has_denorm_loss : 0
numeric_limits< sw::universal::posit<16, 1> >::is_iec559 : 0
numeric_limits< sw::universal::posit<16, 1> >::is_bounded : 0
numeric_limits< sw::universal::posit<16, 1> >::is_modulo : 0
numeric_limits< sw::universal::posit<16, 1> >::traps : 0
numeric_limits< sw::universal::posit<16, 1> >::tinyness_before : 0
numeric_limits< sw::universal::posit<16, 1> >::round_style : 1
Numeric limits for posit< 32, 2>
numeric_limits< sw::universal::posit<32, 2> >::min() : 7.52316e-37
numeric_limits< sw::universal::posit<32, 2> >::max() : 1.32923e+36
numeric_limits< sw::universal::posit<32, 2> >::lowest() : -1.32923e+36
numeric_limits< sw::universal::posit<32, 2> >::epsilon() : 7.45058e-09
numeric_limits< sw::universal::posit<32, 2> >::digits : 28
numeric_limits< sw::universal::posit<32, 2> >::digits10 : 8
numeric_limits< sw::universal::posit<32, 2> >::max_digits10 : 9
numeric_limits< sw::universal::posit<32, 2> >::is_signed : 1
numeric_limits< sw::universal::posit<32, 2> >::is_integer : 0
numeric_limits< sw::universal::posit<32, 2> >::is_exact : 0
numeric_limits< sw::universal::posit<32, 2> >::min_exponent : -120
numeric_limits< sw::universal::posit<32, 2> >::min_exponent10 : -36
numeric_limits< sw::universal::posit<32, 2> >::max_exponent : 120
numeric_limits< sw::universal::posit<32, 2> >::max_exponent10 : 36
numeric_limits< sw::universal::posit<32, 2> >::has_infinity : 1
numeric_limits< sw::universal::posit<32, 2> >::has_quiet_NaN : 1
numeric_limits< sw::universal::posit<32, 2> >::has_signaling_NaN : 1
numeric_limits< sw::universal::posit<32, 2> >::has_denorm : 0
numeric_limits< sw::universal::posit<32, 2> >::has_denorm_loss : 0
numeric_limits< sw::universal::posit<32, 2> >::is_iec559 : 0
numeric_limits< sw::universal::posit<32, 2> >::is_bounded : 0
numeric_limits< sw::universal::posit<32, 2> >::is_modulo : 0
numeric_limits< sw::universal::posit<32, 2> >::traps : 0
numeric_limits< sw::universal::posit<32, 2> >::tinyness_before : 0
numeric_limits< sw::universal::posit<32, 2> >::round_style : 1
Numeric limits for posit< 64, 3>
numeric_limits< sw::universal::posit<64, 3> >::min() : 4.8879e-150
numeric_limits< sw::universal::posit<64, 3> >::max() : 2.04587e+149
numeric_limits< sw::universal::posit<64, 3> >::lowest() : -2.04587e+149
numeric_limits< sw::universal::posit<64, 3> >::epsilon() : 3.46945e-18
numeric_limits< sw::universal::posit<64, 3> >::digits : 59
numeric_limits< sw::universal::posit<64, 3> >::digits10 : 17
numeric_limits< sw::universal::posit<64, 3> >::max_digits10 : 18
numeric_limits< sw::universal::posit<64, 3> >::is_signed : 1
numeric_limits< sw::universal::posit<64, 3> >::is_integer : 0
numeric_limits< sw::universal::posit<64, 3> >::is_exact : 0
numeric_limits< sw::universal::posit<64, 3> >::min_exponent : -496
numeric_limits< sw::universal::posit<64, 3> >::min_exponent10 : -150
numeric_limits< sw::universal::posit<64, 3> >::max_exponent : 496
numeric_limits< sw::universal::posit<64, 3> >::max_exponent10 : 150
numeric_limits< sw::universal::posit<64, 3> >::has_infinity : 1
numeric_limits< sw::universal::posit<64, 3> >::has_quiet_NaN : 1
numeric_limits< sw::universal::posit<64, 3> >::has_signaling_NaN : 1
numeric_limits< sw::universal::posit<64, 3> >::has_denorm : 0
numeric_limits< sw::universal::posit<64, 3> >::has_denorm_loss : 0
numeric_limits< sw::universal::posit<64, 3> >::is_iec559 : 0
numeric_limits< sw::universal::posit<64, 3> >::is_bounded : 0
numeric_limits< sw::universal::posit<64, 3> >::is_modulo : 0
numeric_limits< sw::universal::posit<64, 3> >::traps : 0
numeric_limits< sw::universal::posit<64, 3> >::tinyness_before : 0
numeric_limits< sw::universal::posit<64, 3> >::round_style : 1
>>>>>>>>>>>>>>>>>> posit<128,4> does not render correctly due to limits of native floating point types
Numeric limits for posit< 128, 4>
numeric_limits< sw::universal::posit<128, 4> >::min() : 1.32901e-607
numeric_limits< sw::universal::posit<128, 4> >::max() : 7.52439e+606
numeric_limits< sw::universal::posit<128, 4> >::lowest() : -7.52439e+606
numeric_limits< sw::universal::posit<128, 4> >::epsilon() : 3.76158e-37
numeric_limits< sw::universal::posit<128, 4> >::digits : 122
numeric_limits< sw::universal::posit<128, 4> >::digits10 : 36
numeric_limits< sw::universal::posit<128, 4> >::max_digits10 : 37
numeric_limits< sw::universal::posit<128, 4> >::is_signed : 1
numeric_limits< sw::universal::posit<128, 4> >::is_integer : 0
numeric_limits< sw::universal::posit<128, 4> >::is_exact : 0
numeric_limits< sw::universal::posit<128, 4> >::min_exponent : -2016
numeric_limits< sw::universal::posit<128, 4> >::min_exponent10 : -610
numeric_limits< sw::universal::posit<128, 4> >::max_exponent : 2016
numeric_limits< sw::universal::posit<128, 4> >::max_exponent10 : 610
numeric_limits< sw::universal::posit<128, 4> >::has_infinity : 1
numeric_limits< sw::universal::posit<128, 4> >::has_quiet_NaN : 1
numeric_limits< sw::universal::posit<128, 4> >::has_signaling_NaN : 1
numeric_limits< sw::universal::posit<128, 4> >::has_denorm : 0
numeric_limits< sw::universal::posit<128, 4> >::has_denorm_loss : 0
numeric_limits< sw::universal::posit<128, 4> >::is_iec559 : 0
numeric_limits< sw::universal::posit<128, 4> >::is_bounded : 0
numeric_limits< sw::universal::posit<128, 4> >::is_modulo : 0
numeric_limits< sw::universal::posit<128, 4> >::traps : 0
numeric_limits< sw::universal::posit<128, 4> >::tinyness_before : 0
numeric_limits< sw::universal::posit<128, 4> >::round_style : 1
>>>>>>>>>>>>>>>>>> posit<256,5> does not render correctly due to limits of native floating point types
Numeric limits for posit< 256, 5>
numeric_limits< sw::universal::posit<256, 5> >::min() : 1.6912e-2447
numeric_limits< sw::universal::posit<256, 5> >::max() : 5.91296e+2446
numeric_limits< sw::universal::posit<256, 5> >::lowest() : -5.91296e+2446
numeric_limits< sw::universal::posit<256, 5> >::epsilon() : 2.21086e-75
numeric_limits< sw::universal::posit<256, 5> >::digits : 249
numeric_limits< sw::universal::posit<256, 5> >::digits10 : 75
numeric_limits< sw::universal::posit<256, 5> >::max_digits10 : 76
numeric_limits< sw::universal::posit<256, 5> >::is_signed : 1
numeric_limits< sw::universal::posit<256, 5> >::is_integer : 0
numeric_limits< sw::universal::posit<256, 5> >::is_exact : 0
numeric_limits< sw::universal::posit<256, 5> >::min_exponent : -8128
numeric_limits< sw::universal::posit<256, 5> >::min_exponent10 : -2463
numeric_limits< sw::universal::posit<256, 5> >::max_exponent : 8128
numeric_limits< sw::universal::posit<256, 5> >::max_exponent10 : 2463
numeric_limits< sw::universal::posit<256, 5> >::has_infinity : 1
numeric_limits< sw::universal::posit<256, 5> >::has_quiet_NaN : 1
numeric_limits< sw::universal::posit<256, 5> >::has_signaling_NaN : 1
numeric_limits< sw::universal::posit<256, 5> >::has_denorm : 0
numeric_limits< sw::universal::posit<256, 5> >::has_denorm_loss : 0
numeric_limits< sw::universal::posit<256, 5> >::is_iec559 : 0
numeric_limits< sw::universal::posit<256, 5> >::is_bounded : 0
numeric_limits< sw::universal::posit<256, 5> >::is_modulo : 0
numeric_limits< sw::universal::posit<256, 5> >::traps : 0
numeric_limits< sw::universal::posit<256, 5> >::tinyness_before : 0
numeric_limits< sw::universal::posit<256, 5> >::round_style : 1
Show size tables of quires.
$ propq
print quire size tables
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
4 18 26 42 74 138 266 522 1034 2058 4106
5 22 34 58 106 202 394 778 1546 3082 6154
6 26 42 74 138 266 522 1034 2058 4106 8202
7 30 50 90 170 330 650 1290 2570 5130 10250
8 34 58 106 202 394 778 1546 3082 6154 12298
9 38 66 122 234 458 906 1802 3594 7178 14346
10 42 74 138 266 522 1034 2058 4106 8202 16394
11 46 82 154 298 586 1162 2314 4618 9226 18442
12 50 90 170 330 650 1290 2570 5130 10250 20490
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
8 34 58 106 202 394 778 1546 3082 6154 12298
9 38 66 122 234 458 906 1802 3594 7178 14346
10 42 74 138 266 522 1034 2058 4106 8202 16394
11 46 82 154 298 586 1162 2314 4618 9226 18442
12 50 90 170 330 650 1290 2570 5130 10250 20490
13 54 98 186 362 714 1418 2826 5642 11274 22538
14 58 106 202 394 778 1546 3082 6154 12298 24586
15 62 114 218 426 842 1674 3338 6666 13322 26634
16 66 122 234 458 906 1802 3594 7178 14346 28682
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
16 66 122 234 458 906 1802 3594 7178 14346 28682
17 70 130 250 490 970 1930 3850 7690 15370 30730
18 74 138 266 522 1034 2058 4106 8202 16394 32778
19 78 146 282 554 1098 2186 4362 8714 17418 34826
20 82 154 298 586 1162 2314 4618 9226 18442 36874
21 86 162 314 618 1226 2442 4874 9738 19466 38922
22 90 170 330 650 1290 2570 5130 10250 20490 40970
23 94 178 346 682 1354 2698 5386 10762 21514 43018
24 98 186 362 714 1418 2826 5642 11274 22538 45066
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
24 98 186 362 714 1418 2826 5642 11274 22538 45066
25 102 194 378 746 1482 2954 5898 11786 23562 47114
26 106 202 394 778 1546 3082 6154 12298 24586 49162
27 110 210 410 810 1610 3210 6410 12810 25610 51210
28 114 218 426 842 1674 3338 6666 13322 26634 53258
29 118 226 442 874 1738 3466 6922 13834 27658 55306
30 122 234 458 906 1802 3594 7178 14346 28682 57354
31 126 242 474 938 1866 3722 7434 14858 29706 59402
32 130 250 490 970 1930 3850 7690 15370 30730 61450
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
32 130 250 490 970 1930 3850 7690 15370 30730 61450
33 134 258 506 1002 1994 3978 7946 15882 31754 63498
34 138 266 522 1034 2058 4106 8202 16394 32778 65546
35 142 274 538 1066 2122 4234 8458 16906 33802 67594
36 146 282 554 1098 2186 4362 8714 17418 34826 69642
37 150 290 570 1130 2250 4490 8970 17930 35850 71690
38 154 298 586 1162 2314 4618 9226 18442 36874 73738
39 158 306 602 1194 2378 4746 9482 18954 37898 75786
40 162 314 618 1226 2442 4874 9738 19466 38922 77834
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
40 162 314 618 1226 2442 4874 9738 19466 38922 77834
41 166 322 634 1258 2506 5002 9994 19978 39946 79882
42 170 330 650 1290 2570 5130 10250 20490 40970 81930
43 174 338 666 1322 2634 5258 10506 21002 41994 83978
44 178 346 682 1354 2698 5386 10762 21514 43018 86026
45 182 354 698 1386 2762 5514 11018 22026 44042 88074
46 186 362 714 1418 2826 5642 11274 22538 45066 90122
47 190 370 730 1450 2890 5770 11530 23050 46090 92170
48 194 378 746 1482 2954 5898 11786 23562 47114 94218
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
48 194 378 746 1482 2954 5898 11786 23562 47114 94218
49 198 386 762 1514 3018 6026 12042 24074 48138 96266
50 202 394 778 1546 3082 6154 12298 24586 49162 98314
51 206 402 794 1578 3146 6282 12554 25098 50186 100362
52 210 410 810 1610 3210 6410 12810 25610 51210 102410
53 214 418 826 1642 3274 6538 13066 26122 52234 104458
54 218 426 842 1674 3338 6666 13322 26634 53258 106506
55 222 434 858 1706 3402 6794 13578 27146 54282 108554
56 226 442 874 1738 3466 6922 13834 27658 55306 110602
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
56 226 442 874 1738 3466 6922 13834 27658 55306 110602
57 230 450 890 1770 3530 7050 14090 28170 56330 112650
58 234 458 906 1802 3594 7178 14346 28682 57354 114698
59 238 466 922 1834 3658 7306 14602 29194 58378 116746
60 242 474 938 1866 3722 7434 14858 29706 59402 118794
61 246 482 954 1898 3786 7562 15114 30218 60426 120842
62 250 490 970 1930 3850 7690 15370 30730 61450 122890
63 254 498 986 1962 3914 7818 15626 31242 62474 124938
64 258 506 1002 1994 3978 7946 15882 31754 63498 126986
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
64 258 506 1002 1994 3978 7946 15882 31754 63498 126986
65 262 514 1018 2026 4042 8074 16138 32266 64522 129034
66 266 522 1034 2058 4106 8202 16394 32778 65546 131082
67 270 530 1050 2090 4170 8330 16650 33290 66570 133130
68 274 538 1066 2122 4234 8458 16906 33802 67594 135178
69 278 546 1082 2154 4298 8586 17162 34314 68618 137226
70 282 554 1098 2186 4362 8714 17418 34826 69642 139274
71 286 562 1114 2218 4426 8842 17674 35338 70666 141322
72 290 570 1130 2250 4490 8970 17930 35850 71690 143370
Quire size table as a function of <nbits, es, capacity = 10>
Capacity is 2^10 accumulations of max_pos^2
nbits es value
+ 0 1 2 3 4 5 6 7 8 9
80 322 634 1258 2506 5002 9994 19978 39946 79882 159754
81 326 642 1274 2538 5066 10122 20234 40458 80906 161802
82 330 650 1290 2570 5130 10250 20490 40970 81930 163850
83 334 658 1306 2602 5194 10378 20746 41482 82954 165898
84 338 666 1322 2634 5258 10506 21002 41994 83978 167946
85 342 674 1338 2666 5322 10634 21258 42506 85002 169994
86 346 682 1354 2698 5386 10762 21514 43018 86026 172042
87 350 690 1370 2730 5450 10890 21770 43530 87050 174090
88 354 698 1386 2762 5514 11018 22026 44042 88074 176138