Files
Include/EgtNumUtils.h
T
Dario Sassi 31436bfb7c Include :
- aggiunta funzione Pow per potenze con esponente intere caclolate in modo efficiente
- aggiunti prototipi di funzioni per impostazione tolleranze per superfici di Bezier.
2025-08-22 11:29:30 +02:00

58 lines
1.5 KiB
C

//----------------------------------------------------------------------------
// EgalTech 2016-2023
//----------------------------------------------------------------------------
// File : EgtNumUtils.h Data : 16.08.23 Versione : 2.5h2
// Contenuto : Funzioni numeriche di base.
//
//
//
// Modifiche : 05.11.16 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include <cmath>
//----------------------------------------------------------------------------
inline
int Clamp( int nVal, int nMin, int nMax)
{
return ( nVal < nMin ? nMin : ( nVal > nMax ? nMax : nVal)) ;
}
//----------------------------------------------------------------------------
inline
double Clamp( double dVal, double dMin, double dMax)
{
return ( dVal < dMin ? dMin : ( dVal > dMax ? dMax : dVal)) ;
}
//----------------------------------------------------------------------------
inline
bool IsEven( int nVal)
{
return ( ( nVal % 2) == 0) ;
}
//----------------------------------------------------------------------------
inline
double Pow( double dBase, int nExp)
{
if ( nExp == 0)
return 1 ;
else if ( nExp < 0) {
if ( dBase < -DBL_EPSILON || dBase > DBL_EPSILON)
return Pow( 1 / dBase, -nExp) ;
else
return NAN ;
}
else {
double dVal = 1 ;
for ( int i = 1 ; i <= nExp ; ++ i)
dVal *= dBase ;
return dVal ;
}
}