#include <ComPackSignedExpFloat.h>
Inheritance diagram for ComPackSignedExpFloat:
Public Types | |
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 | |
ComPackSignedExpFloat (unsigned nbits, unsigned maxexponent, double maxval, bool invert=false, bool center=false) | |
virtual | ~ComPackSignedExpFloat () |
virtual StatusCode | pack (const double, d_ULong &) const |
virtual StatusCode | unpack (const d_ULong, double &) const |
void | print (std::ostream &s=std::cout) const |
virtual StatusCode | pack (const double, d_ULong &) const =0 |
virtual const double & | getMinVal () const |
virtual const double & | getMaxVal () const |
virtual const double & | getRange () const |
d_ULong | bitRange () const |
d_ULong | bitMask () const |
Protected Attributes | |
double | _minVal |
double | _maxVal |
double | _valRange |
d_ULong | _bitRange |
d_ULong | _bitMask |
Private Attributes | |
ComPackExpFloat | _packer |
unsigned | _signbit |
unsigned | _signmask |
Definition at line 29 of file ComPackSignedExpFloat.h.
enum ComPackBaseBase::StatusCode [inherited] |
Definition at line 35 of file ComPackBaseBase.h.
00035 { 00036 TAG_OK, TAG_BAD, TAG_RANGE_ERROR, TAG_VAL_ROUND_DOWN, TAG_VAL_ROUND_UP 00037 };
ComPackSignedExpFloat::ComPackSignedExpFloat | ( | unsigned | nbits, | |
unsigned | maxexponent, | |||
double | maxval, | |||
bool | invert = false , |
|||
bool | center = false | |||
) |
Definition at line 30 of file ComPackSignedExpFloat.cxx.
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 }
ComPackSignedExpFloat::~ComPackSignedExpFloat | ( | ) | [virtual] |
d_ULong ComPackBase< double >::bitMask | ( | ) | const [inline, inherited] |
Definition at line 75 of file ComPackBase.h.
References ComPackBase< T >::_bitMask.
00075 { return _bitMask; }
d_ULong ComPackBase< double >::bitRange | ( | ) | const [inline, inherited] |
Definition at line 74 of file ComPackBase.h.
References ComPackBase< T >::_bitRange.
00074 { return _bitRange; }
virtual const double & ComPackBase< double >::getMaxVal | ( | ) | const [inline, virtual, inherited] |
Definition at line 71 of file ComPackBase.h.
References ComPackBase< T >::_maxVal.
00071 { return _maxVal;};
virtual const double & ComPackBase< double >::getMinVal | ( | ) | const [inline, virtual, inherited] |
Definition at line 70 of file ComPackBase.h.
References ComPackBase< T >::_minVal.
00070 { return _minVal;};
virtual const double & ComPackBase< double >::getRange | ( | ) | const [inline, virtual, inherited] |
Definition at line 72 of file ComPackBase.h.
References ComPackBase< T >::_valRange.
00072 { return _valRange;};
virtual StatusCode ComPackBase< double >::pack | ( | const | T, | |
d_ULong & | ||||
) | const [pure virtual, inherited] |
ComPackBase< double >::StatusCode ComPackSignedExpFloat::pack | ( | const | double, | |
d_ULong & | ||||
) | const [virtual] |
Definition at line 47 of file ComPackSignedExpFloat.cxx.
References _packer, _signbit, _signmask, ComPackExpFloat::pack(), and ComPackBaseBase::TAG_BAD.
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 }
void ComPackSignedExpFloat::print | ( | std::ostream & | s = std::cout |
) | const |
ComPackBase< double >::StatusCode ComPackSignedExpFloat::unpack | ( | const | d_ULong, | |
double & | ||||
) | const [virtual] |
Implements ComPackBase< double >.
Definition at line 61 of file ComPackSignedExpFloat.cxx.
References _packer, _signbit, and ComPackExpFloat::unpack().
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 }
d_ULong ComPackBase< double >::_bitMask [protected, inherited] |
Definition at line 88 of file ComPackBase.h.
Referenced by ComPackFlatFloat::ComPackFlatFloat(), ComPackFlatFloat::pack(), and ComPackFlatFloat::unpack().
d_ULong ComPackBase< double >::_bitRange [protected, inherited] |
Definition at line 87 of file ComPackBase.h.
Referenced by ComPackExpFloat::ComPackExpFloat(), and ComPackFlatFloat::ComPackFlatFloat().
double ComPackBase< double >::_maxVal [protected, inherited] |
Definition at line 85 of file ComPackBase.h.
Referenced by ComPackExpFloat::ComPackExpFloat(), ComPackFlatFloat::ComPackFlatFloat(), and ComPackFlatFloat::testMe().
double ComPackBase< double >::_minVal [protected, inherited] |
Definition at line 84 of file ComPackBase.h.
Referenced by ComPackExpFloat::ComPackExpFloat(), ComPackFlatFloat::ComPackFlatFloat(), ComPackFlatFloat::pack(), ComPackExpFloat::pack(), ComPackFlatFloat::testMe(), and ComPackFlatFloat::unpack().
unsigned ComPackSignedExpFloat::_signbit [private] |
unsigned ComPackSignedExpFloat::_signmask [private] |
double ComPackBase< double >::_valRange [protected, inherited] |
Definition at line 86 of file ComPackBase.h.
Referenced by ComPackExpFloat::ComPackExpFloat(), ComPackFlatFloat::ComPackFlatFloat(), and ComPackFlatFloat::testMe().