#ifdef SUPERLU_EXPORTS
#define SUPERLU_API __declspec(dllexport)
#else
#define SUPERLU_API __declspec(dllimport)
#endif


class CChol 
	{

	private:

	public:

		static int d_G_Factorization ( int *M, int *nnz_A, double *csrMatrix_A, int *csrColInd_A, int *csrRowPtr_A, 
			int *nnz_U, double **csr_U, int **csrColInd_U, int **csrRowPtr_U,
			double **csrL_Diagonal);
		
		static int SUPERLU_API d_J_Factorization(int *M, int *N, int *nnz_J, 
			double *csrMatrix_J, int *csrColInd_J, int *csrRowPtr_J,
			double *Weight,
			int *nnz_U, double **csr_U, int **csrColInd_U, int **csrRowPtr_U,
			double **csrL_Diagonal);

		static int SUPERLU_API d_J_Solver(int *M, int *N, int *nnz_J, 
			double *csrMatrix_J, int *csrColInd_J, int *csrRowPtr_J, 
			double *RHS, double **Solution, int *Phase);

		static int SUPERLU_API d_Get_J_Permutation(int *M, int *N, int *nnz_J, 
			double *csrMatrix_J_r, double *csrMatrix_J_i, int *csrColInd_J, int *csrRowPtr_J,
			double *Weight,
			int **Permutation_G);

		static void SUPERLU_API Free_Memory_d_J_Factorization(void);
		static void SUPERLU_API Free_Memory_d_J_Solver(void);
		static void SUPERLU_API Free_Memory_Get_J_Permutation(void);

//static void SUPERLU_API Free_Memory_Get_Gain(void);
/*
		static int SUPERLU_API d_Get_G_Permutation(int *M, int *nnz_A, double *csrMatrix_A, int *csrColInd_A, int *csrRowPtr_A, 
			int **Permutation);

		static int SUPERLU_API d_Get_J_Permutation(int *M, int *N, int *nnz_J, 
			double *csrMatrix_J, int *csrColInd_J, int *csrRowPtr_J,
			double *Weight, 
			int **Permutation);*/
};