CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
ComPackSignedExpFloat Class Reference

#include <ComPackSignedExpFloat.h>

+ Inheritance diagram for ComPackSignedExpFloat:

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
 
- Public Member Functions inherited from ComPackBase< double >
 ComPackBase ()
 
 ComPackBase (double minval, double maxval, d_ULong bitrange)
 
 ComPackBase (const ComPackBase &)
 
virtual ~ComPackBase ()
 
virtual StatusCode pack (const double, d_ULong &) const=0
 
virtual StatusCode unpack (const d_ULong, double &) 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
 
ComPackBaseoperator= (const ComPackBase &)
 

Additional Inherited Members

- Public Types inherited from ComPackBaseBase
enum  StatusCode {
  TAG_OK , TAG_BAD , TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN ,
  TAG_VAL_ROUND_UP
}
 
- Protected Types inherited from ComPackBase< double >
enum  
 
- Protected Attributes inherited from ComPackBase< double >
double _minVal
 
double _maxVal
 
double _valRange
 
d_ULong _bitRange
 
d_ULong _bitMask
 

Detailed Description

Definition at line 29 of file ComPackSignedExpFloat.h.

Constructor & Destructor Documentation

◆ ComPackSignedExpFloat()

ComPackSignedExpFloat::ComPackSignedExpFloat ( unsigned  nbits,
unsigned  maxexponent,
double  maxval,
bool  invert = false,
bool  center = false 
)

Definition at line 30 of file ComPackSignedExpFloat.cxx.

34 :
35 ComPackBase<double>(-maxval,maxval,nbits),
36 _packer(nbits-1,maxexponent,invert?maxval:0.0,
37 invert?0.0:maxval, center),
38 _signbit(1<<nbits-1),_signmask(~(1<<nbits-1))
39{
40 assert(maxval>0.0);
41}

◆ ~ComPackSignedExpFloat()

ComPackSignedExpFloat::~ComPackSignedExpFloat ( )
virtual

Definition at line 43 of file ComPackSignedExpFloat.cxx.

44{;}

Member Function Documentation

◆ pack()

ComPackBase< double >::StatusCode ComPackSignedExpFloat::pack ( const double  value,
d_ULong packdata 
) const
virtual

Definition at line 47 of file ComPackSignedExpFloat.cxx.

47 {
48// first, pack the absolute value
50 _packer.pack(fabs(value),packdata);
51 if(retval != TAG_BAD){
52 if(value>0)
53 packdata &= _signmask;
54 else
55 packdata |= _signbit;
56 }
57 return retval;
58}
virtual StatusCode pack(const double, d_ULong &) const

◆ print()

void ComPackSignedExpFloat::print ( std::ostream &  s = std::cout) const

Definition at line 72 of file ComPackSignedExpFloat.cxx.

72 {
73 os << "Signed exponential packer using exponential packer as follows:"<<endl;
74 _packer.print(os);
75}
void print(std::ostream &os) const

◆ unpack()

ComPackBase< double >::StatusCode ComPackSignedExpFloat::unpack ( const d_ULong  packdata,
double &  value 
) const
virtual

Implements ComPackBase< double >.

Definition at line 61 of file ComPackSignedExpFloat.cxx.

61 {
63 _packer.unpack(packdata,value);
64 if (value < 0)
65 value = 0;
66 else if(packdata&_signbit)
67 value *= -1.0;
68 return retval;
69}
virtual StatusCode unpack(const d_ULong, double &) const

The documentation for this class was generated from the following files: