/** @(#) numericalap/logisticnewtondogleg.h */

#ifndef LOGISTICNEWTONDOGLEG_H
#define LOGISTICNEWTONDOGLEG_H
//----------------------------------------------------------------------------
#include "../adjustedrecipes/qrdcmp.cpp"
#include "../adjustedrecipes/qrsolv.cpp"
#include "../functionnd/functionnd.h"
#include "../functionnd/functionnd_1d.h"
#include "../matrixdouble/squaredmatrix.h"
#include "../matrixdouble/vectordouble.h"
#include "../mathpos/mathpos.h"	// sign, MACHEPS
#include "../utilpos/interfacepos.h"
#include "factorizecholesky.cpp"
#include "doglegdriver.cpp"
//#include "finitejacobi.cpp";
#include <iostream>	// salida
#include <fstream>
#include <algorithm>	// max
#include <cmath>
#include <iostream>
#include <stdexcept>	// runtime_exception
using namespace std;

void logisticMatrices(VectorDouble &t, VectorDouble &P, VectorDouble &xc,
		VectorDouble &ri, RectangularMatrix &J,
		VectorDouble &g, SquaredMatrix &H);

void logisticNewtonDogLeg(int n, VectorDouble &t, VectorDouble &P,
		VectorDouble &xc, double &fc,
		VectorDouble &Sx,
		int iterations,
                double maxstep, double steptol,
                double &delta,
        	double eta,
                int logType, int waitType,
                string pathFile)
                throw (runtime_error);

void checkLogisticNewtonDogLeg(int n, VectorDouble &t, VectorDouble &P,
		VectorDouble &xc, double &fc,
		VectorDouble &Sx,
		int iterations,
                double maxstep, double steptol,
                double &delta,
        	double eta,
                int logType, int waitType,
                string pathFile)
                throw (invalid_argument, runtime_error);
//----------------------------------------------------------------------------
#endif
// Fin------------------------------------------------------------------------