20 constexpr unsigned int max_short_flt = 0x7f7f7fff;
21 vc.reserve(vf.size());
22 for (
const auto& value : vf){
23 auto u = std::bit_cast<unsigned int>(value);
24 if ( (u & 0x7fffffff) > max_short_flt) vc.push_back (u>>16);
25 else vc.push_back((u+0x8000)>>16);
40 vi.reserve(vf.size()*
m_bits/16+17);
42 unsigned int format=0;
43 unsigned int vfs=vf.size();
53 int rounding=0x1<<(bshift-1);
54 unsigned int vmax= 0x7f7<<20;
55 vmax |= 0x000fffff xor (rounding);
56 unsigned int rems=0xffffffff;
66 unsigned int CUR=0;
int IN=0;
67 for (
const auto& value : vf){
68 auto u = std::bit_cast<unsigned int>(value);
69 if ( (u & 0x7fffffff) > vmax) IN=u>>bshift;
70 else IN=(u+rounding)>>bshift;
98 for (
const auto& value : vf){
99 vi.push_back(std::bit_cast<unsigned int>(value));
111 std::vector<unsigned int>::const_iterator i=vi.begin();
113 int format=(*i); ++i;
119 unsigned int vecs=(format>>6)&0xfffffff;
123 vf.reserve(vi.size()*
m_bits/16+17);
127 int CP=0;
int FP=0;
int REM=0;
128 unsigned int V=0xffffffff>>(32-L);
unsigned int R=0;
135 R = ( ui >> (32-FP) ) & V;
137 vf.push_back(std::bit_cast<float>(R));
148 R = ( ui & (0xffffffff >>
CP) ) << REM;
151 R |= ui >> (32-REM) ;
153 if (
m_sign) R &= 0x7fffffff;
154 vf.push_back(std::bit_cast<float>(R));