Files
EgtExecutor/LUA_PolynomialRoots.cpp
T
DarioS 5cf50ee9a8 EgtExecutor :
- sistemate maiuscole/minuscole nei nomi dei file inclusi.
2022-02-26 17:53:38 +01:00

68 lines
2.2 KiB
C++

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