/** @(#) mathpos/mathpos.cpp */ #include "mathpos.h" // array---------------------------------------------------------------------- // vector--------------------------------------------------------------------- /** Convierte un vector de long en float. */ void vectorLongToFloat(long *pLong, float *pFloat, int count) { int i; for (i = 0; i < count; ++i) { pFloat[i] = static_cast<float>( pLong[i] ); } } /** Solo usarlo con tipos numericos: int, long, float, double. */ //template <class TC> void vectorToZero(long *pVector, int count) { int i; for (i = 0; i < count; ++i) { pVector[i] = 0L; } } // math----------------------------------------------------------------------- /** Si alguno es casi cero, la comparacion es absoluta. En otro caso, * la diferencia es relativa. Usa SQRT_MACHEPS. * @return true: Diferencia relativa no significativa. false: otro caso. */ // No hacerlo template, float se convierte automaticamente bool areAlmostEqual(double a, double b) { // Caso 0.0 == 0.0 double absDiff; // Si alguno es casi cero if ((fabs(a) < SQRT_MACHEPS) || (fabs(b) < SQRT_MACHEPS)) { absDiff = fabs(b - a); // diferencia absoluta } else { absDiff = fabs( (b - a) / b); // diferencia relativa } return ( (absDiff < SQRT_MACHEPS) ? true : false); } /** Calcula la precision actual de la computadora. */ double calculateMachineps() { double macheps = 1.0; do { macheps /= 2.0; } while ( (1.0 + macheps) != 1.0); macheps *= 2.0; return macheps; } /** computes shift value (mu_c) used in modified newton method * to build Hc = (Nabla^2)(f)(xc) + mu_c * I * @param l Lower boundaries for the eigenvalues of (Nabla^2)(f)(xc). * @param u Upper boundaries for the eigenvalues of (Nabla^2)(f)(xc). */ double calculateMu(double l, double u ) { double m; if ( fabs(l) >= fabs(u) ) { m = fabs(l) + MACHEPS; } else { m = fabs(u) + MACHEPS; } return m; } //template <class TObj> // constructor, ~, friend----------------------------------------------------- /* Constructor predeterminado. */ /** Construye. */ /* Destructor predeterminado. */ /** Libera recursos. */ // operator------------------------------------------------------------------- // public--------------------------------------------------------------------- // private-------------------------------------------------------------------- /** * * @param * @param * @return * @see paq1.paq2.MyClass#MyMethod(int,Object) * @throws Exception */ // Fin------------------------------------------------------------------------