Skip to content
Snippets Groups Projects
mfuncs.h 2.59 KiB
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

#include <core/tnlCuda.h>
template< typename Type1, typename Type2 >
Type1 Min( const Type1& a, const Type2& b )
template< typename Type1, typename Type2 >
Type1 Max( const Type1& a, const Type2& b )
template< typename Type >
void Swap( Type& a, Type& b )
   Type tmp( a );
template< class T >
T Sign( const T& a )
   if( a < ( T ) 0 ) return -1;
   if( a == ( T ) 0 ) return 0;
__cuda_callable__
__cuda_callable__
__cuda_callable__
inline double tnlAbs( const double& d )
{
   return fabs( d );
};
template< typename Real >
__cuda_callable__
bool isSmall( const Real& v,
              const Real& tolerance = 1.0e-5 )
{
   return ( -tolerance <= v && v <= tolerance );
}
__cuda_callable__
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 );
}