46 #ifndef ___FIB_DATATYPS_H__
47 #define ___FIB_DATATYPS_H__
58 #define REALLY_SMALL_DOUBLE_DIFFERENCE 0.0000000000001
59 #define REALLY_SMALL_FLOAT_DIFFERENCE 0.000001
64 #define longFib long long
65 #define doubleFib double
66 #define unsignedIntFib unsigned int
67 #define unsignedLongFib unsigned long long
93 template <
class Type> Type
max(
const Type &value1,
const Type &value2 ){
95 if( value1 < value2 ){
110 std::list< Type > & liList,
unsigned long ulElementNumber ){
112 if ( ( ulElementNumber < 1 ) || ( liList.size() < ulElementNumber ) ){
115 typename std::list< Type >::iterator itrList = liList.begin();
116 for ( ; 1 < ulElementNumber; ulElementNumber--, itrList++ ){
131 const std::list< Type > & liList,
unsigned long ulElementNumber ){
133 if ( ( ulElementNumber < 1 ) || ( liList.size() < ulElementNumber ) ){
136 typename std::list< Type >::const_iterator itrList = liList.begin();
137 for ( ; 1 < ulElementNumber; ulElementNumber--, itrList++ ){
151 unsigned int getDigits(
unsigned long long llValue );
171 intFib * iSizeMantissa = NULL,
intFib * iSizeExponent = NULL );
198 float absF(
const float & dValue );
204 double absF(
const double & dValue );
232 bool compareDouble(
const double & dValue1,
const double & dValue2 );
242 bool compareDouble(
const float & dValue1,
const float & dValue2 );
253 template<
class tDouble>
255 const std::vector< tDouble > & vector2 ){
257 if ( vector1.size() != vector2.size() ){
261 const size_t uiNumberOfElements = vector1.size();
263 for (
size_t uiActualElement = 0; uiActualElement < uiNumberOfElements;
266 if ( !
fib::compareDouble( vector1[ uiActualElement ], vector2[ uiActualElement ] ) ){
284 template<
class tDouble>
285 tDouble
add(
const tDouble & dValue1,
const tDouble & dValue2 ){
289 return ((tDouble)(0));
291 return dValue1 + dValue2;
304 template<
class tDouble>
305 tDouble
sub(
const tDouble & dValue1,
const tDouble & dValue2 ){
309 return ((tDouble)(0));
311 return dValue1 - dValue2;
325 template<
class tDouble>
326 tDouble
addToFirst( tDouble & dValue1,
const tDouble & dValue2 ){
330 dValue1 = ((tDouble)(0));
331 return ((tDouble)(0));
348 template<
class tDouble>
353 dValue1 = ((tDouble)(0));
354 return ((tDouble)(0));
371 template<
class tDouble>
372 std::vector< tDouble >
addToFirst( std::vector< tDouble > & vecValue1,
373 const std::vector< tDouble > & vecValue2 ){
377 const size_t uiVecValue1Size = vecValue1.size();
378 const size_t uiVecValue2Size = vecValue2.size();
379 const size_t uiNumberOfElements = ( uiVecValue1Size < uiVecValue2Size )?
380 uiVecValue1Size : uiVecValue2Size ;
382 for (
size_t uiActualElement = 0; uiActualElement < uiNumberOfElements;
385 addToFirst( vecValue1[ uiActualElement ], vecValue2[ uiActualElement ] );
398 template<
class tDouble>
399 std::vector< tDouble >
multToFirst( std::vector< tDouble > & vecValue,
400 const tDouble & dValue ){
402 const size_t uiNumberOfElements = vecValue.size();
404 for (
size_t uiActualElement = 0; uiActualElement < uiNumberOfElements;
407 vecValue[ uiActualElement ] *= dValue;
416 #endif //___FIB_DATATYPS_H__