//---------------------------------------------------------------------------- // EgalTech 2018-2018 //---------------------------------------------------------------------------- // File : LUA_PolynomialRoots.cpp Data : 07.08.18 Versione : 1.8h1 // Contenuto : Funzioni di calcolo radici di polinomi per LUA. // // // // Modifiche : 07.08.18 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "LUA.h" #include "/EgtDev/Include/ENkPolynomialRoots.h" #include "/EgtDev/Include/ENmLuaAux.h" #include "/EgtDev/Include/EGnStringUtils.h" using namespace std ; //------------------------------------------------------------------------------- static int LuaPolynomialRoots( lua_State* L) { // 1 parametro DBLVECTOR vdPoly ; LuaCheckParam( L, 1, vdPoly) LuaClearStack( L) ; // eseguo il calcolo delle radici del polinomio a coefficienti reali int nDegree = int( vdPoly.size() - 1) ; DBLVECTOR vdRoot ; int nZeros = PolynomialRoots( nDegree, vdPoly, vdRoot) ; // restituisco il risultato LuaSetParam( L, nZeros) ; LuaSetParam( L, vdRoot) ; return 2 ; } //------------------------------------------------------------------------------- static int LuaCplxPolynomialRoots( lua_State* L) { // 1 parametro CPLXVECTOR vcpPoly ; LuaCheckParam( L, 1, vcpPoly) LuaClearStack( L) ; // eseguo il calcolo delle radici del polinomio a coefficienti reali int nDegree = int( vcpPoly.size() - 1) ; CPLXVECTOR vcpRoot ; int nZeros = PolynomialRoots( nDegree, vcpPoly, vcpRoot) ; // restituisco il risultato LuaSetParam( L, nZeros) ; LuaSetParam( L, vcpRoot) ; return 2 ; } //------------------------------------------------------------------------------- bool LuaInstallPolynomialRoots( LuaMgr& luaMgr) { bool bOk = ( &luaMgr != nullptr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtPolynomialRoots", LuaPolynomialRoots) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCplxPolynomialRoots", LuaCplxPolynomialRoots) ; return bOk ; }