IT++ Logo
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
itpp::Fix Class Reference

Fixed-point data type. More...

#include <itpp/fixed/fix.h>

Inheritance diagram for itpp::Fix:
itpp::Fix_Base itpp::Fixed< w, e, o, q >

Public Member Functions

 Fix (double x=0.0, int s=0, int w=MAX_WORDLEN, e_mode e=TC, o_mode o=WRAP, q_mode q=TRN, Stat *ptr=0)
 Default constructor. More...
 
 Fix (const Fix_Factory &f)
 Constructor. More...
 
 Fix (fixrep r, int s, int, int)
 Constructor for internal use. No restrictions are applied. The dummies help to avoid ambiguities. More...
 
 Fix (const Fix &x, int w=MAX_WORDLEN, e_mode e=TC, o_mode o=WRAP, q_mode q=TRN, Stat *ptr=0)
 Copy constructor. More...
 
virtual ~Fix ()
 Destructor. More...
 
Fixoperator= (const Fix &x)
 Assignment from Fix. More...
 
Fixoperator= (const int x)
 Assignment from int. More...
 
Fixoperator+= (const Fix &x)
 Addition of Fix. More...
 
Fixoperator+= (const int x)
 Addition of int. More...
 
Fixoperator-= (const Fix &x)
 Subtraction of Fix. More...
 
Fixoperator-= (const int x)
 Subtraction of int. More...
 
Fixoperator*= (const Fix &x)
 Multiplication with Fix. More...
 
Fixoperator*= (const int x)
 Multiplication with int. More...
 
Fixoperator/= (const Fix &x)
 Division with Fix using quantization mode TRN. More...
 
Fixoperator/= (const int x)
 Division with int using quantization mode TRN. More...
 
Fix operator- () const
 Unary negative of Fix. More...
 
Fixoperator<<= (const int n)
 Left shift n bits. More...
 
Fixoperator>>= (const int n)
 Right shift n bits using quantization mode qmode (constructor argument) More...
 
void set (double x, int n)
 Set to x * pow2(n) using quantization mode qmode (constructor argument) More...
 
void set (double x, int n, q_mode q)
 Set to x * pow2(n) using quantization mode q (function argument) More...
 
void set_re (fixrep x)
 Set data representation (mainly for internal use since it reveals the representation type) More...
 
void lshift (int n)
 Left shift n bits. More...
 
void rshift (int n)
 Right shift n bits using quantization mode qmode (constructor argument) More...
 
void rshift (int n, q_mode q)
 Right shift n bits using quantization mode q (function argument) More...
 
virtual void print () const
 Print restrictions. More...
 
fixrep get_re () const
 Get data representation (mainly for internal use since it reveals the representation type) More...
 
double unfix () const
 Conversion to double. More...
 
 operator double () const
 Conversion to double. More...
 
void set_shift (int s)
 Set shift (without shifting) More...
 
int get_shift () const
 Get shift. More...
 
int get_wordlen () const
 Get word length. More...
 
e_mode get_e_mode () const
 Get sign encoding mode. More...
 
o_mode get_o_mode () const
 Get overflow mode. More...
 
q_mode get_q_mode () const
 Get quantization mode. More...
 
output_mode get_output_mode () const
 Get output mode. More...
 
fixrep get_max () const
 Get maximum value of data representation. More...
 
fixrep get_min () const
 Get minimum value of data representation. More...
 

Static Public Member Functions

static void set_output_mode (output_mode o)
 Set output mode to OUTPUT_FIX, OUTPUT_FIX_SHIFT, OUTPUT_FLOAT or OUTPUT_FLOAT_SHIFT. Static member function. More...
 
static void set_output_mode (std::string o)
 Set output mode to "OUTPUT_FIX", "OUTPUT_FIX_SHIFT", "OUTPUT_FLOAT" or "OUTPUT_FLOAT_SHIFT". Static member function. More...
 

Protected Member Functions

void init ()
 Calculate help variables min, max and n_unused_bits. More...
 
fixrep apply_o_mode (fixrep x) const
 Handle overflows using overflow mode omode and make call to statistics object (if any) More...
 
fixrep scale_and_apply_modes (double x) const
 Convert from double to fixrep using shift and quantization mode qmode, then call limit() More...
 
fixrep scale_and_apply_modes (double x, q_mode q) const
 Convert from double to fixrep using shift and quantization mode q, then call limit() More...
 
fixrep rshift_and_apply_q_mode (fixrep x, int n) const
 Right shift n bits using quantization mode qmode and make call to statistics object (if any) More...
 
fixrep rshift_and_apply_q_mode (fixrep x, int n, q_mode q) const
 Right shift n bits using quantization mode q and make call to statistics object (if any) More...
 

Protected Attributes

fixrep re
 Data representation. More...
 
int shift
 Accumulated bitshift (positive means left-shifted, negative means right-shifted) More...
 
int wordlen
 Word length. More...
 
e_mode emode
 Sign encoding mode. More...
 
o_mode omode
 Overflow mode. More...
 
q_mode qmode
 Quantization mode. More...
 
Statstat_ptr
 Pointer to statistics object. More...
 
fixrep min
 Minimum allowed value (help variable to speed up calculations) More...
 
fixrep max
 Maximum allowed value (help variable to speed up calculations) More...
 
int n_unused_bits
 Number of unused (MSB) bits (help variable to speed up calculations) More...
 

Friends

class CFix
 
template<int , e_mode , o_mode , q_mode >
class Fixed
 
template<int , e_mode , o_mode , q_mode >
class CFixed
 
ITPP_EXPORT int assert_shifts (const CFix &x, const Fix &y)
 Check that x.shift==y.shift OR x==0 OR y==0 and return the shift (for the non-zero argument) More...
 
ITPP_EXPORT int assert_shifts (const Fix &x, const Fix &y)
 Check that x.shift==y.shift OR x==0 OR y==0 and return the shift (for the non-zero argument) More...
 
ITPP_EXPORT int assert_shifts (const Fix &x, int y)
 Check that x.shift==0 OR x==0 OR y==0 and return x.shift. More...
 

Detailed Description

Fixed-point data type.

See the Detailed Description in the Fixed-point Module module.

Definition at line 51 of file fix.h.

Constructor & Destructor Documentation

◆ Fix() [1/4]

itpp::Fix::Fix ( double  x = 0.0,
int  s = 0,
int  w = MAX_WORDLEN,
e_mode  e = TC,
o_mode  o = WRAP,
q_mode  q = TRN,
Stat ptr = 0 
)
inline

Default constructor.

Definition at line 58 of file fix.h.

Referenced by operator-().

◆ Fix() [2/4]

itpp::Fix::Fix ( const Fix_Factory f)
inlineexplicit

Constructor.

Definition at line 61 of file fix.h.

◆ Fix() [3/4]

itpp::Fix::Fix ( fixrep  r,
int  s,
int  ,
int   
)
inline

Constructor for internal use. No restrictions are applied. The dummies help to avoid ambiguities.

Definition at line 64 of file fix.h.

◆ Fix() [4/4]

itpp::Fix::Fix ( const Fix x,
int  w = MAX_WORDLEN,
e_mode  e = TC,
o_mode  o = WRAP,
q_mode  q = TRN,
Stat ptr = 0 
)
inline

Copy constructor.

Definition at line 67 of file fix.h.

◆ ~Fix()

virtual itpp::Fix::~Fix ( )
inlinevirtual

Destructor.

Definition at line 70 of file fix.h.

Member Function Documentation

◆ operator=() [1/2]

Fix & itpp::Fix::operator= ( const Fix x)

Assignment from Fix.

Definition at line 38 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), re, and itpp::Fix_Base::shift.

◆ operator=() [2/2]

Fix & itpp::Fix::operator= ( const int  x)

Assignment from int.

Definition at line 45 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), re, and itpp::Fix_Base::shift.

◆ operator+=() [1/2]

Fix & itpp::Fix::operator+= ( const Fix x)

Addition of Fix.

Definition at line 52 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), assert_shifts, re, and itpp::Fix_Base::shift.

◆ operator+=() [2/2]

Fix & itpp::Fix::operator+= ( const int  x)

Addition of int.

Definition at line 59 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), assert_shifts, and re.

◆ operator-=() [1/2]

Fix & itpp::Fix::operator-= ( const Fix x)

Subtraction of Fix.

Definition at line 66 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), assert_shifts, re, and itpp::Fix_Base::shift.

◆ operator-=() [2/2]

Fix & itpp::Fix::operator-= ( const int  x)

Subtraction of int.

Definition at line 73 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), assert_shifts, and re.

◆ operator*=() [1/2]

Fix & itpp::Fix::operator*= ( const Fix x)

Multiplication with Fix.

Definition at line 80 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), re, and itpp::Fix_Base::shift.

◆ operator*=() [2/2]

Fix & itpp::Fix::operator*= ( const int  x)

Multiplication with int.

Definition at line 87 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), and re.

◆ operator/=() [1/2]

Fix & itpp::Fix::operator/= ( const Fix x)

Division with Fix using quantization mode TRN.

Definition at line 93 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), re, and itpp::Fix_Base::shift.

◆ operator/=() [2/2]

Fix & itpp::Fix::operator/= ( const int  x)

Division with int using quantization mode TRN.

Definition at line 100 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), and re.

◆ operator-()

Fix itpp::Fix::operator- ( ) const

Unary negative of Fix.

Definition at line 106 of file fix.cpp.

References Fix(), re, and itpp::Fix_Base::shift.

◆ operator<<=()

Fix & itpp::Fix::operator<<= ( const int  n)

Left shift n bits.

Definition at line 111 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), it_assert_debug, re, and itpp::Fix_Base::shift.

◆ operator>>=()

Fix & itpp::Fix::operator>>= ( const int  n)

Right shift n bits using quantization mode qmode (constructor argument)

Definition at line 119 of file fix.cpp.

References re, itpp::Fix_Base::rshift_and_apply_q_mode(), and itpp::Fix_Base::shift.

◆ set() [1/2]

void itpp::Fix::set ( double  x,
int  n 
)

Set to x * pow2(n) using quantization mode qmode (constructor argument)

Definition at line 126 of file fix.cpp.

References re, itpp::Fix_Base::scale_and_apply_modes(), and itpp::Fix_Base::shift.

Referenced by itpp::operator>>(), and itpp::set_fix().

◆ set() [2/2]

void itpp::Fix::set ( double  x,
int  n,
q_mode  q 
)

Set to x * pow2(n) using quantization mode q (function argument)

Definition at line 132 of file fix.cpp.

References re, itpp::Fix_Base::scale_and_apply_modes(), and itpp::Fix_Base::shift.

◆ set_re()

void itpp::Fix::set_re ( fixrep  x)
inline

Set data representation (mainly for internal use since it reveals the representation type)

Definition at line 104 of file fix.h.

Referenced by itpp::operator>>().

◆ lshift()

void itpp::Fix::lshift ( int  n)

Left shift n bits.

Definition at line 138 of file fix.cpp.

References itpp::Fix_Base::apply_o_mode(), it_assert_debug, re, and itpp::Fix_Base::shift.

Referenced by itpp::lshift_fix().

◆ rshift() [1/2]

void itpp::Fix::rshift ( int  n)

Right shift n bits using quantization mode qmode (constructor argument)

Definition at line 145 of file fix.cpp.

References re, itpp::Fix_Base::rshift_and_apply_q_mode(), and itpp::Fix_Base::shift.

Referenced by itpp::rshift_fix().

◆ rshift() [2/2]

void itpp::Fix::rshift ( int  n,
q_mode  q 
)

Right shift n bits using quantization mode q (function argument)

Definition at line 151 of file fix.cpp.

References re, itpp::Fix_Base::rshift_and_apply_q_mode(), and itpp::Fix_Base::shift.

◆ print()

void itpp::Fix::print ( ) const
virtual

Print restrictions.

Reimplemented from itpp::Fix_Base.

Definition at line 163 of file fix.cpp.

References itpp::Fix_Base::print(), and re.

◆ get_re()

fixrep itpp::Fix::get_re ( ) const
inline

Get data representation (mainly for internal use since it reveals the representation type)

Definition at line 116 of file fix.h.

Referenced by itpp::abs(), itpp::operator*(), itpp::operator+(), itpp::operator-(), itpp::operator/(), and itpp::operator<<().

◆ unfix()

double itpp::Fix::unfix ( ) const

Conversion to double.

Definition at line 157 of file fix.cpp.

References itpp::DOUBLE_POW2, it_assert_debug, re, and itpp::Fix_Base::shift.

Referenced by itpp::unfix().

◆ operator double()

itpp::Fix::operator double ( ) const
inline

Conversion to double.

Definition at line 122 of file fix.h.

References itpp::DOUBLE_POW2, and it_assert_debug.

◆ set_shift()

void itpp::Fix_Base::set_shift ( int  s)
inlineinherited

Set shift (without shifting)

Definition at line 994 of file fix_base.h.

Referenced by itpp::operator>>().

◆ set_output_mode() [1/2]

static void itpp::Fix_Base::set_output_mode ( output_mode  o)
inlinestaticinherited

Set output mode to OUTPUT_FIX, OUTPUT_FIX_SHIFT, OUTPUT_FLOAT or OUTPUT_FLOAT_SHIFT. Static member function.

Definition at line 996 of file fix_base.h.

Referenced by itpp::operator<<().

◆ set_output_mode() [2/2]

void itpp::Fix_Base::set_output_mode ( std::string  o)
staticinherited

Set output mode to "OUTPUT_FIX", "OUTPUT_FIX_SHIFT", "OUTPUT_FLOAT" or "OUTPUT_FLOAT_SHIFT". Static member function.

Definition at line 40 of file fix_base.cpp.

References it_error, itpp::OUTPUT_FIX, itpp::OUTPUT_FIX_SHIFT, itpp::OUTPUT_FLOAT, and itpp::OUTPUT_FLOAT_SHIFT.

◆ get_shift()

int itpp::Fix_Base::get_shift ( ) const
inlineinherited

◆ get_wordlen()

int itpp::Fix_Base::get_wordlen ( ) const
inlineinherited

Get word length.

Definition at line 1003 of file fix_base.h.

◆ get_e_mode()

e_mode itpp::Fix_Base::get_e_mode ( ) const
inlineinherited

Get sign encoding mode.

Definition at line 1005 of file fix_base.h.

◆ get_o_mode()

o_mode itpp::Fix_Base::get_o_mode ( ) const
inlineinherited

Get overflow mode.

Definition at line 1007 of file fix_base.h.

◆ get_q_mode()

q_mode itpp::Fix_Base::get_q_mode ( ) const
inlineinherited

Get quantization mode.

Definition at line 1009 of file fix_base.h.

◆ get_output_mode()

output_mode itpp::Fix_Base::get_output_mode ( ) const
inlineinherited

Get output mode.

Definition at line 1011 of file fix_base.h.

Referenced by itpp::operator<<().

◆ get_max()

fixrep itpp::Fix_Base::get_max ( ) const
inlineinherited

Get maximum value of data representation.

Definition at line 1013 of file fix_base.h.

References itpp::max().

◆ get_min()

fixrep itpp::Fix_Base::get_min ( ) const
inlineinherited

Get minimum value of data representation.

Definition at line 1015 of file fix_base.h.

References itpp::min().

◆ init()

void itpp::Fix_Base::init ( )
protectedinherited

◆ apply_o_mode()

fixrep itpp::Fix_Base::apply_o_mode ( fixrep  x) const
protectedinherited

◆ scale_and_apply_modes() [1/2]

fixrep itpp::Fix_Base::scale_and_apply_modes ( double  x) const
inlineprotectedinherited

Convert from double to fixrep using shift and quantization mode qmode, then call limit()

Definition at line 1044 of file fix_base.h.

References itpp::Fix_Base::scale_and_apply_modes().

Referenced by itpp::Fix_Base::scale_and_apply_modes(), itpp::CFix::set(), and set().

◆ scale_and_apply_modes() [2/2]

fixrep itpp::Fix_Base::scale_and_apply_modes ( double  x,
q_mode  q 
) const
protectedinherited

◆ rshift_and_apply_q_mode() [1/2]

fixrep itpp::Fix_Base::rshift_and_apply_q_mode ( fixrep  x,
int  n 
) const
inlineprotectedinherited

Right shift n bits using quantization mode qmode and make call to statistics object (if any)

Definition at line 1048 of file fix_base.h.

References itpp::Fix_Base::rshift_and_apply_q_mode().

Referenced by itpp::CFix::operator>>=(), operator>>=(), itpp::CFix::rshift(), rshift(), and itpp::Fix_Base::rshift_and_apply_q_mode().

◆ rshift_and_apply_q_mode() [2/2]

fixrep itpp::Fix_Base::rshift_and_apply_q_mode ( fixrep  x,
int  n,
q_mode  q 
) const
protectedinherited

Right shift n bits using quantization mode q and make call to statistics object (if any)

Definition at line 182 of file fix_base.cpp.

References it_assert_debug, it_error, itpp::RND, itpp::RND_CONV, itpp::RND_CONV_ODD, itpp::RND_INF, itpp::RND_MIN_INF, itpp::RND_ZERO, itpp::Stat::sample(), itpp::Fix_Base::stat_ptr, itpp::TRN, and itpp::TRN_ZERO.

Friends And Related Function Documentation

◆ CFix

friend class CFix
friend

Definition at line 53 of file fix.h.

◆ Fixed

template<int , e_mode , o_mode , q_mode >
friend class Fixed
friend

Definition at line 54 of file fix.h.

◆ CFixed

template<int , e_mode , o_mode , q_mode >
friend class CFixed
friend

Definition at line 55 of file fix.h.

◆ assert_shifts [1/3]

ITPP_EXPORT int assert_shifts ( const CFix x,
const Fix y 
)
friend

Check that x.shift==y.shift OR x==0 OR y==0 and return the shift (for the non-zero argument)

Definition at line 265 of file cfix.cpp.

Referenced by operator+=(), and operator-=().

◆ assert_shifts [2/3]

ITPP_EXPORT int assert_shifts ( const Fix x,
const Fix y 
)
friend

Check that x.shift==y.shift OR x==0 OR y==0 and return the shift (for the non-zero argument)

Definition at line 169 of file fix.cpp.

◆ assert_shifts [3/3]

ITPP_EXPORT int assert_shifts ( const Fix x,
int  y 
)
friend

Check that x.shift==0 OR x==0 OR y==0 and return x.shift.

Definition at line 185 of file fix.cpp.

Member Data Documentation

◆ re

fixrep itpp::Fix::re
protected

◆ shift

int itpp::Fix_Base::shift
protectedinherited

◆ wordlen

int itpp::Fix_Base::wordlen
protectedinherited

Word length.

Definition at line 1023 of file fix_base.h.

Referenced by itpp::Fix_Base::init(), and itpp::Fix_Base::print().

◆ emode

e_mode itpp::Fix_Base::emode
protectedinherited

Sign encoding mode.

Definition at line 1025 of file fix_base.h.

Referenced by itpp::Fix_Base::init(), and itpp::Fix_Base::print().

◆ omode

o_mode itpp::Fix_Base::omode
protectedinherited

Overflow mode.

Definition at line 1027 of file fix_base.h.

Referenced by itpp::Fix_Base::apply_o_mode(), and itpp::Fix_Base::print().

◆ qmode

q_mode itpp::Fix_Base::qmode
protectedinherited

Quantization mode.

Definition at line 1029 of file fix_base.h.

Referenced by itpp::Fix_Base::print().

◆ stat_ptr

Stat* itpp::Fix_Base::stat_ptr
protectedinherited

Pointer to statistics object.

Definition at line 1031 of file fix_base.h.

Referenced by itpp::Fix_Base::apply_o_mode(), itpp::Fix_Base::print(), and itpp::Fix_Base::rshift_and_apply_q_mode().

◆ min

fixrep itpp::Fix_Base::min
protectedinherited

Minimum allowed value (help variable to speed up calculations)

Definition at line 1033 of file fix_base.h.

Referenced by itpp::Fix_Base::apply_o_mode(), itpp::Fix_Base::init(), and itpp::Fix_Base::print().

◆ max

fixrep itpp::Fix_Base::max
protectedinherited

Maximum allowed value (help variable to speed up calculations)

Definition at line 1035 of file fix_base.h.

Referenced by itpp::Fix_Base::apply_o_mode(), itpp::Fix_Base::init(), and itpp::Fix_Base::print().

◆ n_unused_bits

int itpp::Fix_Base::n_unused_bits
protectedinherited

Number of unused (MSB) bits (help variable to speed up calculations)

Definition at line 1037 of file fix_base.h.

Referenced by itpp::Fix_Base::apply_o_mode(), itpp::Fix_Base::init(), and itpp::Fix_Base::print().


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

Generated on Tue Aug 17 2021 10:59:15 for IT++ by Doxygen 1.9.4