#include <ComPackSignedExpFloat.h>
Inheritance diagram for ComPackSignedExpFloat:
Public Types | |
enum | StatusCode { TAG_OK, TAG_BAD, TAG_RANGE_ERROR, TAG_VAL_ROUND_DOWN, TAG_VAL_ROUND_UP } |
enum | StatusCode { TAG_OK, TAG_BAD, TAG_RANGE_ERROR, TAG_VAL_ROUND_DOWN, TAG_VAL_ROUND_UP } |
Public Member Functions | |
d_ULong | bitMask () const |
d_ULong | bitMask () const |
d_ULong | bitRange () const |
d_ULong | bitRange () const |
ComPackSignedExpFloat (unsigned nbits, unsigned maxexponent, double maxval, bool invert=false, bool center=false) | |
ComPackSignedExpFloat (unsigned nbits, unsigned maxexponent, double maxval, bool invert=false, bool center=false) | |
virtual const double & | getMaxVal () const |
virtual const double & | getMaxVal () const |
virtual const double & | getMinVal () const |
virtual const double & | getMinVal () const |
virtual const double & | getRange () const |
virtual const double & | getRange () const |
virtual StatusCode | pack (const double, d_ULong &) const |
virtual StatusCode | pack (const double, d_ULong &) const |
void | print (std::ostream &s=std::cout) const |
void | print (std::ostream &s=std::cout) const |
virtual StatusCode | unpack (const d_ULong, double &) const |
virtual StatusCode | unpack (const d_ULong, double &) const |
virtual | ~ComPackSignedExpFloat () |
virtual | ~ComPackSignedExpFloat () |
Protected Attributes | |
d_ULong | _bitMask |
d_ULong | _bitRange |
double | _maxVal |
double | _minVal |
double | _valRange |
Private Attributes | |
ComPackExpFloat | _packer |
unsigned | _signbit |
unsigned | _signmask |
|
00035 { 00036 TAG_OK, TAG_BAD, TAG_RANGE_ERROR, TAG_VAL_ROUND_DOWN, TAG_VAL_ROUND_UP 00037 };
|
|
00035 { 00036 TAG_OK, TAG_BAD, TAG_RANGE_ERROR, TAG_VAL_ROUND_DOWN, TAG_VAL_ROUND_UP 00037 };
|
|
00034 : 00035 ComPackBase<double>(-maxval,maxval,nbits), 00036 _packer(nbits-1,maxexponent,invert?maxval:0.0, 00037 invert?0.0:maxval, center), 00038 _signbit(1<<nbits-1),_signmask(~(1<<nbits-1)) 00039 { 00040 assert(maxval>0.0); 00041 }
|
|
00044 {;}
|
|
|
|
|
|
00075 { return _bitMask; }
|
|
00075 { return _bitMask; }
|
|
00074 { return _bitRange; }
|
|
00074 { return _bitRange; }
|
|
00071 { return _maxVal;};
|
|
00071 { return _maxVal;};
|
|
00070 { return _minVal;};
|
|
00070 { return _minVal;};
|
|
00072 { return _valRange;};
|
|
00072 { return _valRange;};
|
|
Implements ComPackBase< double >. |
|
Implements ComPackBase< double >. 00047 { 00048 // first, pack the absolute value 00049 ComPackBase<double>::StatusCode retval = 00050 _packer.pack(fabs(value),packdata); 00051 if(retval != TAG_BAD){ 00052 if(value>0) 00053 packdata &= _signmask; 00054 else 00055 packdata |= _signbit; 00056 } 00057 return retval; 00058 }
|
|
|
|
00072 { 00073 os << "Signed exponential packer using exponential packer as follows:"<<endl; 00074 _packer.print(os); 00075 }
|
|
Implements ComPackBase< double >. |
|
Implements ComPackBase< double >. 00061 { 00062 ComPackBase<double>::StatusCode retval = 00063 _packer.unpack(packdata,value); 00064 if (value < 0) 00065 value = 0; 00066 else if(packdata&_signbit) 00067 value *= -1.0; 00068 return retval; 00069 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|