#include <stdio.h>/* --------- printf */
#include <stdlib.h>/* -------- malloc(), free(), etc. */
#include <math.h>/* ---------- log(), exp(), etc. */
#include <R.h>/* ------------- R functions */
#include <Rinternals.h>

#define NR_END 1
#define FREE_ARG void*

/***********************************************************************
  EDGE-specific functions
***********************************************************************/
void odpScoreCluster(double *, double *, double *, int *, int *, int *, int *, int *, double *);
void kldistance(double *, double *, double *, double *, int *, int *, int *, double *);

/***********************************************************************
  utility functions
***********************************************************************/
void sortQK(int, int, int, double *);
void swapQK(int, int, double *);
double *vector(int, int);
void free_vector(double *, int, int);
int *ivector(int, int);
void free_ivector(int *, int, int);
double **matrix(int, int, int, int);
void free_matrix(double **, int, int, int, int);
int **imatrix(int, int, int, int);
void free_imatrix(int **, int, int, int, int);