//Programa chi2.  Calcula la distribucion chi2 con nu grados de libertad.
//Compilar con g++ -I. -o chi2 chi2main.cpp chi2x.cpp chi2.cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <cmath>
#include "chi2.h"

int npuntos = 200;

using namespace std;
int
main()
{
//Lee numero de grados de libertad
    double nu;

    cout << "Grados de libertad para chi2? ";
    cin >> nu;
    if (nu <= 0)
        cout << "nu debe ser positivo" << endl;

    string fichero = "chi2-nu" + convierteAString(nu) + ".d";
    string fichero2 = "pchi2-nu" + convierteAString(nu) + ".d";
    string fichero3 = "gammap-nu" + convierteAString(nu) + ".d";

//Intenta abrir el fichero para escritura
    ofstream fcout(fichero.c_str(), ios::out);
    ofstream fcout2(fichero2.c_str(), ios::out);
    ofstream fcout3(fichero3.c_str(), ios::out);

    if (!fcout) {
        cout << "Imposible abrir fichero de salida" << endl;
    }
    double chi2 = 0;
    double h = nu * 5.0 / npuntos;

    for (int i = 1; i <= npuntos; i++) {
        chi2 += h;
        fcout << chi2 << " "
            << Chi2(chi2, nu) << endl;
        fcout2 << chi2 << " "
            << Chi2P(chi2, nu) << endl;

    }
    h = 15.0 / npuntos;
    double x = 0;

    for (int i = 1; i <= npuntos; i++) {
        fcout3 << x << " "
            << GammaP(nu, x) << endl;
        x += h;
    }

    return 0;
}
