Newer
Older
/***************************************************************************
mfuncs.h - description
-------------------
begin : 2005/07/05
copyright : (C) 2005 by Tomas Oberhuber
email : tomas.oberhuber@fjfi.cvut.cz
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef mfuncsH
#define mfuncsH
Tomáš Oberhuber
committed
#include <math.h>
#include <stdlib.h>
Tomáš Oberhuber
committed
template< typename Type1, typename Type2 >
Type1 Min( const Type1& a, const Type2& b )
{
return a < b ? a : b;
};
template< typename Type1, typename Type2 >
Type1 Max( const Type1& a, const Type2& b )
{
return a > b ? a : b;
};
a = b;
b = tmp;
};
Tomáš Oberhuber
committed
if( a < ( T ) 0 ) return -1;
if( a == ( T ) 0 ) return 0;
Tomáš Oberhuber
committed
};
template< class T >
Tomáš Oberhuber
committed
T tnlAbs( const T& n )
{
if( n < ( T ) 0 )
return -n;
return n;
};
Tomáš Oberhuber
committed
inline int tnlAbs( const int& n )
{
return abs( n );
};
Tomáš Oberhuber
committed
inline float tnlAbs( const float& f )
{
return fabs( f );
};
Tomáš Oberhuber
committed
inline double tnlAbs( const double& d )
{
return fabs( d );
};
bool isSmall( const Real& v,
const Real& tolerance = 1.0e-5 )
{
return ( -tolerance <= v && v <= tolerance );
}
inline int roundUpDivision( const int num, const int div )
{
return num / div + ( num % div != 0 );
}
inline int roundToMultiple( int number, int multiple )
{
return multiple*( number/ multiple + ( number % multiple != 0 ) );
}
__cuda_callable__
inline bool isPow2( int x )
{
return ( x & ( x - 1 ) == 0 );
}
__cuda_callable__
inline bool isPow2( long int x )
{
return ( x & ( x - 1 ) == 0 );
}