//---------------------------------------------------------------------------- // 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 //---------------------------------------------------------------------------- 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 ; } }