#include "sopnamsp.h" #include "machdefs.h" #include #include #include #include #ifdef __MWERKS__ #include "mwerksmath.h" // Portage mac D. Y. #include "unixmac.h" #endif #include #include #include "pexceptions.h" #include "generalfunc.h" //================================================================ // GeneralFunction //================================================================ /*! \class SOPHYA::GeneralFunction \ingroup NTools Classe de fonctions parametrees a plusieurs variables: \f$ F[x1,x2,x3,...:a1,a2,a3,...] \f$ */ ////////////////////////////////////////////////////////////////////// /*! Creation d'une fonction de `nVar' variables et `nPar' parametres: \f$ F[x(1),x(2),x(3),...x(nVar) : a(1),a(2),a(3),...,a(nPar)] \f$ */ GeneralFunction::GeneralFunction(unsigned int nVar, unsigned int nPar) : mNVar(nVar), mNPar(nPar) { if(nVar==0 || nPar==0) throw SzMismatchError("GeneralFunction::GeneralFunction_Error: nVar==0 || nPar==0 !"); deltaParm = new double[nPar]; tmpParm = new double[nPar]; } GeneralFunction::~GeneralFunction() { if(deltaParm != NULL) delete[] deltaParm; if(tmpParm != NULL) delete[] tmpParm; } ////////////////////////////////////////////////////////////////////// /*! Valeur et Derivees de la fonction (fct virtuelle par defaut). */ double GeneralFunction::Val_Der(double const xp[], double const* parm , double *DgDpar) { for(int i=0;i= mNPar) throw SzMismatchError("GeneralFunction::SetDeltaParm_Error: numPar<0 || numPar>=mNPar !"); deltaParm[numPar] = d; } /*! Idem precedente fonction mais pour tous les parametres */ void GeneralFunction::SetDeltaParm(double const* dparam) { for(int i=0;i