// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.

// AdvApp2Var_ApproxF2var.hxx
/*---------------------------------------------------------------
|  description de la macro et du prototype des routines 
|  de l'approximation a deux variables
|  a utiliser dans AdvApp2Var
|--------------------------------------------------------------*/
#ifndef ApproxF2var_HeaderFile
#define ApproxF2var_HeaderFile

#include <Standard_Macro.hxx>
#include <AdvApp2Var_Data_f2c.hxx>
#include <AdvApp2Var_EvaluatorFunc2Var.hxx>
//
class AdvApp2Var_ApproxF2var {
 public:
  
Standard_EXPORT static int mma2fnc_(integer *ndimen, 
				    integer *nbsesp, 
				    integer *ndimse, 
				    doublereal *uvfonc, 
				    const AdvApp2Var_EvaluatorFunc2Var& foncnp,
				    doublereal *tconst, 
				    integer *isofav, 
				    integer *nbroot, 
				    doublereal *rootlg, 
				    integer *iordre, 
				    integer *ideriv, 
				    integer *ndgjac, 
				    integer *nbcrmx, 
				    integer *ncflim, 
				    doublereal *epsapr, 
				    integer *ncoeff, 
				    doublereal *courbe, 
				    integer *nbcrbe, 
				    doublereal *somtab, 
				    doublereal *diftab, 
				    doublereal *contr1, 
				    doublereal *contr2, 
				    doublereal *tabdec, 
				    doublereal *errmax, 
				    doublereal *errmoy, 
				    integer *iercod);


Standard_EXPORT static int mma2roo_(integer *nbpntu, 
				    integer *nbpntv, 
				    doublereal *urootl, 
				    doublereal *vrootl);


Standard_EXPORT static int mma2jmx_(integer *ndgjac, 
				    integer *iordre, 
				    doublereal *xjacmx);

Standard_EXPORT static int mmapptt_(const integer * , 
				    const integer * , 
				    const integer *  , 
				    doublereal * , 
				    integer * );

Standard_EXPORT static int mma2cdi_(integer *ndimen, 
				    integer *nbpntu, 
				    doublereal *urootl, 
				    integer *nbpntv, 
				    doublereal *vrootl, 
				    integer *iordru, 
				    integer *iordrv, 
				    doublereal *contr1, 
				    doublereal *contr2, 
				    doublereal *contr3, 
				    doublereal *contr4, 
				    doublereal *sotbu1, 
				    doublereal *sotbu2, 
				    doublereal *ditbu1, 
				    doublereal *ditbu2, 
				    doublereal *sotbv1, 
				    doublereal *sotbv2, 
				    doublereal *ditbv1, 
				    doublereal *ditbv2, 
				    doublereal *sosotb, 
				    doublereal *soditb, 
				    doublereal *disotb, 
				    doublereal *diditb, 
				    integer *iercod);


Standard_EXPORT static int mma2ds1_(integer *ndimen, 
				    doublereal *uintfn, 
				    doublereal *vintfn,
				    const AdvApp2Var_EvaluatorFunc2Var& foncnp,
				    integer *nbpntu, 
				    integer *nbpntv, 
				    doublereal *urootb, 
				    doublereal *vrootb,
				    integer *isofav,
				    doublereal *sosotb,
				    doublereal *disotb,
				    doublereal *soditb,
				    doublereal *diditb,
				    doublereal *fpntab, 
				    doublereal *ttable,
				    integer *iercod);

Standard_EXPORT static int mma2ce1_(integer *numdec, 
				    integer *ndimen, 
				    integer *nbsesp, 
				    integer *ndimse, 
				    integer *ndminu, 
				    integer *ndminv, 
				    integer *ndguli, 
				    integer *ndgvli, 
				    integer *ndjacu, 
				    integer *ndjacv, 
				    integer *iordru, 
				    integer *iordrv, 
				    integer *nbpntu, 
				    integer *nbpntv, 
				    doublereal *epsapr, 
				    doublereal *sosotb, 
				    doublereal *disotb, 
				    doublereal *soditb, 
				    doublereal *diditb, 
				    doublereal *patjac, 
				    doublereal *errmax, 
				    doublereal *errmoy, 
				    integer *ndegpu, 
				    integer *ndegpv, 
				    integer *itydec, 
				    integer *iercod);


Standard_EXPORT static int mma2can_(const integer *  , 
				  const integer *  , 
				  const integer *  ,
				  const integer *  , 
				  const integer *  ,
				  const integer *  , 
				  const integer *  , 
				  const doublereal *,
				  doublereal * , 
				  doublereal * , 
				  integer *  );


Standard_EXPORT static int mma1her_(const integer *  , 
				    doublereal * , 
				    integer *   );


Standard_EXPORT static int mma2ac2_(const integer *  , 
				   const integer *  , 
				   const integer *  , 
				   const integer *  , 
				   const integer *  , 
				   const integer * , 
				   const doublereal * ,
				   const integer *  , 
				   const doublereal * , 
				   const doublereal * ,
				   doublereal * );


Standard_EXPORT static int mma2ac3_(const integer * , 
				   const integer *  , 
				   const integer *  , 
				   const integer *  , 
				   const integer *  , 
				   const integer *  ,
				   const doublereal * ,
				   const integer *  , 
				   const doublereal * ,
				   const doublereal * ,
				   doublereal * );


Standard_EXPORT static int mma2ac1_(const integer *  , 
				   const integer *  , 
				   const integer *  , 
				   const integer *  ,
				   const integer *  , 
				   const doublereal * , 
				   const doublereal * ,
				   const doublereal * ,
				   const doublereal * ,
				   const doublereal * , 
				   const doublereal * , 
				   doublereal * );


Standard_EXPORT static int mma2fx6_(integer *ncfmxu,
				    integer *ncfmxv, 
				    integer *ndimen, 
				    integer *nbsesp, 
				    integer *ndimse, 
				    integer *nbupat, 
				    integer *nbvpat, 
				    integer *iordru, 
				    integer *iordrv, 
				    doublereal *epsapr, 
				    doublereal *epsfro, 
				    doublereal *patcan, 
				    doublereal *errmax, 
				    integer *ncoefu, 
				    integer *ncoefv);
};

#endif
