number_eps1< CHAR, TScalar, TScalarPair > Class Template Reference
[Algebra objectsField and Ring elements]

Class representing elements of F_q[epsilon];
compact datatype for (x,eps)-Pair; field characteristic is parametrized during compile time. More...

#include <fastNumber.h>

Collaboration diagram for number_eps1< CHAR, TScalar, TScalarPair >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef TScalar scalarType

Public Member Functions

Constructors

 number_eps1 ()
 number_eps1 (int epsPrec, string dummy)
 einheitlicher Konstruktor fuer eine Zahl mit beliebigen EpsPrecision - notwendig ???
 number_eps1 (scalarType x)
 constructs (x,0) from x
 number_eps1 (const number_eps1 &z_x)
 copy constructor
 number_eps1 (scalarType x, scalarType eps)
 constructs x + eps*EPS
properties

unsigned short getEpsPrecision () const
void setEpsPrecision (int epsPrecision) const
 returns 1
short getEpsDegree () const
 returns 1
data access

scalarType getX () const
 get x from (x,eps)
scalarType getEps () const
 get eps from (x,eps)
void setX (scalarType x)
 set x in (x,eps)
void setEps (scalarType eps)
 set eps in (x,eps)
void setValue (unsigned short _epsPrecision, scalarType val)
 setzt entweder .x oder .eps gleich 'val', je nach 'eps_exponent'-Wert
int getValue (unsigned short _epsPrecision)
operators

bool isZero () const
bool isNotZero () const
bool nearlyEqual (const number_eps1 &z) const
 compare x-components, eps-parts are ignored
int operator== (const number_eps1< CHAR, TScalar, TScalarPair > &z) const
int operator!= (const number_eps1< CHAR, TScalar, TScalarPair > &z) const

Static Public Member Functions

safety

static bool memsetClearAllowed ()
 returns true, if it is allowed to initialise class objects with memset(0)
static bool wellDefined (unsigned int characteristic)
static bool wellDefined ()
regular index computation interface

static size_t getSingleIndex (const number_eps1< CHAR, TScalar, TScalarPair > b, const TScalar characteristic)
 returns b.epsx
static size_t getSingleIndexByRef (const number_eps1< CHAR, TScalar, TScalarPair > &b, const TScalar &characteristic)
 returns b.epsx
static size_t getPairIndex (const number_eps1< CHAR, TScalar, TScalarPair > a, const number_eps1< CHAR, TScalar, TScalarPair > b, const TScalar characteristic)
 computes a*(2^(fullbitsize)) + b.epsx
static size_t getPairIndexByRef (const number_eps1< CHAR, TScalar, TScalarPair > &a, const number_eps1< CHAR, TScalar, TScalarPair > &b, const TScalar &characteristic)
 computes a*(2^(fullbitsize)) + b.epsx
static size_t getMaxSingleIndex (const TScalar characteristic)
static size_t getMaxPairIndex (const TScalar characteristic)
reduced index computation interface

static size_t getSingleIndex (const number_eps1< CHAR, TScalar, TScalarPair > b)
 returns b.epsx
static size_t getSingleIndexByRef (const number_eps1< CHAR, TScalar, TScalarPair > &b)
 returns b.epsx
static size_t getPairIndex (const number_eps1< CHAR, TScalar, TScalarPair > a, const number_eps1< CHAR, TScalar, TScalarPair > b)
 computes a*(2^(fullbitsize)) + b.epsx
static size_t getPairIndexByRef (const number_eps1< CHAR, TScalar, TScalarPair > &a, const number_eps1< CHAR, TScalar, TScalarPair > &b)
 computes a*(2^(fullbitsize)) + b.epsx

Public Attributes

value representation

TScalarPair epsx
 data

static data



enum  { bitsize = needbits<CHAR>::value }
enum  { fullbitsize = needbits<CHAR>::doubledvalue }
enum  { maskx = pow2<needbits<CHAR>::value>::valueMinusOne }
enum  { maskeps = pow2<needbits<CHAR>::doubledvalue>::valueMinusOne - ( pow2<needbits<CHAR>::value>::valueMinusOne) }
 

bitmask for eps

More...
static const number_eps1 Zero = number_eps1<CHAR, TScalar, TScalarPair>(0)
static const number_eps1 One = number_eps1<CHAR, TScalar, TScalarPair>(1)

Detailed Description

template<int CHAR, typename TScalar, typename TScalarPair>
class number_eps1< CHAR, TScalar, TScalarPair >

datatype for (x,eps)-Pair; -----------number_eps1 DATA LAYOUT
Data is stored compact in a 'short int' as follows:
first 'bitsize' bits for 'x' and next 'bitsize' bits for 'eps'
MSB ist the first bit of 'x'
LSB ist the last bit of 'eps'
Der Template-Parameter CHAR ist die Charakteristik des Koerpers, dessen Werte in number_eps1.x , bzw number_eps1.eps
dargestellbar sein sollen. CHAR ist auf 256 beschraenkt!

Todo:
security check: Template-Parameter CHAR <=sizeof(TScalar) and (CHAR*CHAR)<=sizeof(TScalarPair) !
Todo:
statt (int getPairIndex) (size_t getPairIndex)?
Todo:
herausfinden, warum und um wieviel uebergabe per referenz in manchen Fällen schneller ist. basierend auf diesem Wissen könnte man sich die Funktionen getxxxByRef eventzell ersparen!

Definition at line 59 of file fastNumber.h.


Member Typedef Documentation

template<int CHAR, typename TScalar, typename TScalarPair>
typedef TScalar number_eps1< CHAR, TScalar, TScalarPair >::scalarType

Definition at line 63 of file fastNumber.h.


Member Enumeration Documentation

template<int CHAR, typename TScalar, typename TScalarPair>
anonymous enum
Enumerator:
bitsize 

Definition at line 75 of file fastNumber.h.

template<int CHAR, typename TScalar, typename TScalarPair>
anonymous enum
Enumerator:
fullbitsize 

Definition at line 76 of file fastNumber.h.

template<int CHAR, typename TScalar, typename TScalarPair>
anonymous enum
Enumerator:
maskx 

Definition at line 78 of file fastNumber.h.

template<int CHAR, typename TScalar, typename TScalarPair>
anonymous enum
Enumerator:
maskeps 

Definition at line 81 of file fastNumber.h.


Constructor & Destructor Documentation

template<int CHAR, typename TScalar , typename TScalarPair >
number_eps1< CHAR, TScalar, TScalarPair >::number_eps1 (  )  [inline]

Definition at line 50 of file fastNumber.cpp.

template<int CHAR, typename TScalar, typename TScalarPair>
number_eps1< CHAR, TScalar, TScalarPair >::number_eps1 ( int  epsPrec,
string  dummy 
) [inline]
Todo:
allgemeiner Konstruktor fuer eine Zahl mit belibigen EpsPrecision: Problem: eine 0 wird als leerer String interpretiert, bzw, ein char als ein Integer-Wert Insgesamt noch keine gute Loesung
template<int CHAR, typename TScalar , typename TScalarPair >
number_eps1< CHAR, TScalar, TScalarPair >::number_eps1 ( scalarType  x  )  [inline]

constructs (x,0) from x

Todo:
wieso scheitert dieser Test bei der Kombination char/short und Charakteristik =29 ? - nein, scheitert nicht für Charakteristik=29 sondern für Charakteristik=197.

Definition at line 77 of file fastNumber.cpp.

template<int CHAR, typename TScalar , typename TScalarPair >
number_eps1< CHAR, TScalar, TScalarPair >::number_eps1 ( const number_eps1< CHAR, TScalar, TScalarPair > &  z_x  )  [inline]

Konstruiert number_eps1 (x,eps) aus number_eps1(x,eps).

Todo:
: bereits waehrend des Compilevorgangs prüfen, ob die Datenstrukturen gross genug ausgelegt sind - , es reicht aber auch, vor der ersten Verwendung die Tests Durchzuführen.

Definition at line 93 of file fastNumber.cpp.

template<int CHAR, typename TScalar , typename TScalarPair >
number_eps1< CHAR, TScalar, TScalarPair >::number_eps1 ( scalarType  x,
scalarType  eps 
) [inline]

Konstruiert number_eps1(x,eps) aus (x,eps).

Definition at line 103 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::fullbitsize.


Member Function Documentation

template<int CHAR, typename TScalar , typename TScalarPair >
TScalar number_eps1< CHAR, TScalar, TScalarPair >::getEps (  )  const [inline]
template<int CHAR, typename TScalar , typename TScalarPair >
short number_eps1< CHAR, TScalar, TScalarPair >::getEpsDegree (  )  const [inline]

returns the highest EpsExponent where the Coeffitient is not zero.

Definition at line 112 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::getEps(), and number_eps1< CHAR, TScalar, TScalarPair >::getX().

Here is the call graph for this function:

template<int CHAR, typename TScalar, typename TScalarPair>
unsigned short number_eps1< CHAR, TScalar, TScalarPair >::getEpsPrecision (  )  const [inline]

Definition at line 120 of file fastNumber.h.

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getMaxPairIndex ( const TScalar  characteristic  )  [inline, static]

Definition at line 425 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::getPairIndex().

Here is the call graph for this function:

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getMaxSingleIndex ( const TScalar  characteristic  )  [inline, static]

Definition at line 409 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::getSingleIndex().

Here is the call graph for this function:

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getPairIndex ( const number_eps1< CHAR, TScalar, TScalarPair >  a,
const number_eps1< CHAR, TScalar, TScalarPair >  b 
) [inline, static]

Definition at line 320 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getPairIndex ( const number_eps1< CHAR, TScalar, TScalarPair >  a,
const number_eps1< CHAR, TScalar, TScalarPair >  b,
const TScalar  characteristic 
) [inline, static]
template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getPairIndexByRef ( const number_eps1< CHAR, TScalar, TScalarPair > &  a,
const number_eps1< CHAR, TScalar, TScalarPair > &  b 
) [inline, static]

Definition at line 335 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getPairIndexByRef ( const number_eps1< CHAR, TScalar, TScalarPair > &  a,
const number_eps1< CHAR, TScalar, TScalarPair > &  b,
const TScalar &  characteristic 
) [inline, static]

Definition at line 393 of file fastNumber.cpp.

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getSingleIndex ( const number_eps1< CHAR, TScalar, TScalarPair >  b  )  [inline, static]

Definition at line 292 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getSingleIndex ( const number_eps1< CHAR, TScalar, TScalarPair >  b,
const TScalar  characteristic 
) [inline, static]
template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getSingleIndexByRef ( const number_eps1< CHAR, TScalar, TScalarPair > &  b  )  [inline, static]

Definition at line 306 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
size_t number_eps1< CHAR, TScalar, TScalarPair >::getSingleIndexByRef ( const number_eps1< CHAR, TScalar, TScalarPair > &  b,
const TScalar &  characteristic 
) [inline, static]

Definition at line 365 of file fastNumber.cpp.

template<int CHAR, typename TScalar, typename TScalarPair>
int number_eps1< CHAR, TScalar, TScalarPair >::getValue ( unsigned short  _epsPrecision  )  [inline]

Definition at line 139 of file fastNumber.h.

References number_eps1< CHAR, TScalar, TScalarPair >::getEps(), and number_eps1< CHAR, TScalar, TScalarPair >::getX().

Here is the call graph for this function:

template<int CHAR, typename TScalar , typename TScalarPair >
TScalar number_eps1< CHAR, TScalar, TScalarPair >::getX (  )  const [inline]
template<int CHAR, typename TScalar , typename TScalarPair >
bool number_eps1< CHAR, TScalar, TScalarPair >::isNotZero (  )  const [inline]

Definition at line 252 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
bool number_eps1< CHAR, TScalar, TScalarPair >::isZero (  )  const [inline]

Definition at line 246 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar, typename TScalarPair>
static bool number_eps1< CHAR, TScalar, TScalarPair >::memsetClearAllowed (  )  [inline, static]

Definition at line 88 of file fastNumber.h.

template<int CHAR, typename TScalar , typename TScalarPair >
bool number_eps1< CHAR, TScalar, TScalarPair >::nearlyEqual ( const number_eps1< CHAR, TScalar, TScalarPair > &  z  )  const [inline]

Definition at line 260 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::getX().

Here is the call graph for this function:

template<int CHAR, typename TScalar , typename TScalarPair >
int number_eps1< CHAR, TScalar, TScalarPair >::operator!= ( const number_eps1< CHAR, TScalar, TScalarPair > &  z  )  const [inline]

Definition at line 277 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
int number_eps1< CHAR, TScalar, TScalarPair >::operator== ( const number_eps1< CHAR, TScalar, TScalarPair > &  z  )  const [inline]

Definition at line 269 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::epsx.

template<int CHAR, typename TScalar , typename TScalarPair >
void number_eps1< CHAR, TScalar, TScalarPair >::setEps ( scalarType  eps  )  [inline]
template<int CHAR, typename TScalar, typename TScalarPair>
void number_eps1< CHAR, TScalar, TScalarPair >::setEpsPrecision ( int  epsPrecision  )  const [inline]

Definition at line 122 of file fastNumber.h.

template<int CHAR, typename TScalar , typename TScalarPair >
void number_eps1< CHAR, TScalar, TScalarPair >::setValue ( unsigned short  _epsPrecision,
scalarType  val 
) [inline]
Parameters:
_epsPrecision beinhaltet die epsilon--Potenz von val - mit val ist gemeint $ VAL=val*(eps^eps\_exponent) $
val der Koeffizient von ($ eps^\_epsPrecision $)
Todo:
Funktionsbezeichnung ungluecklich, setMonom passt aber auch nicht.

Definition at line 231 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::setEps(), and number_eps1< CHAR, TScalar, TScalarPair >::setX().

Here is the call graph for this function:

template<int CHAR, typename TScalar , typename TScalarPair >
void number_eps1< CHAR, TScalar, TScalarPair >::setX ( scalarType  x  )  [inline]
template<int CHAR, typename TScalar , typename TScalarPair >
bool number_eps1< CHAR, TScalar, TScalarPair >::wellDefined (  )  [inline, static]
Todo:
Grenzen fuer enums ueberpruefen
Todo:
Grenzen fuer enums ueberpruefen

trage in Tscalar test2 an jede zulässige Bitstelle Einsen ein.

Definition at line 134 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::bitsize, number_eps1< CHAR, TScalar, TScalarPair >::fullbitsize, and make::test().

Referenced by number_eps0< CHAR, TScalar >::wellDefined(), and number_eps1< CHAR, TScalar, TScalarPair >::wellDefined().

Here is the call graph for this function:

template<int CHAR, typename TScalar , typename TScalarPair >
bool number_eps1< CHAR, TScalar, TScalarPair >::wellDefined ( unsigned int  characteristic  )  [inline, static]

Definition at line 125 of file fastNumber.cpp.

References number_eps1< CHAR, TScalar, TScalarPair >::wellDefined().

Here is the call graph for this function:


Member Data Documentation

template<int CHAR, typename TScalar, typename TScalarPair>
TScalarPair number_eps1< CHAR, TScalar, TScalarPair >::epsx
template<int CHAR, typename TScalar, typename TScalarPair>
const number_eps1< CHAR, TScalar, TScalarPair > number_eps1< CHAR, TScalar, TScalarPair >::One = number_eps1<CHAR, TScalar, TScalarPair>(1) [inline, static]

Definition at line 73 of file fastNumber.h.

template<int CHAR, typename TScalar, typename TScalarPair>
const number_eps1< CHAR, TScalar, TScalarPair > number_eps1< CHAR, TScalar, TScalarPair >::Zero = number_eps1<CHAR, TScalar, TScalarPair>(0) [inline, static]

Definition at line 72 of file fastNumber.h.


The documentation for this class was generated from the following files:
Generated on Tue Nov 23 13:10:53 2010 for centerfocus by  doxygen 1.6.3