25 #ifndef UQ_INFO_THEORY_H 
   26 #define UQ_INFO_THEORY_H 
   28 #include <queso/Defines.h> 
   33 #include <gsl/gsl_sf_psi.h> 
   36 #define UQ_INFTH_ANN_NO_SMP        10000 
   37 #define UQ_INFTH_ANN_EPS           0.0 
   38 #define UQ_INFTH_ANN_KNN           6 
   42 void distANN_XY( 
const ANNpointArray dataX, 
const ANNpointArray dataY,
 
   44                  unsigned int dimX, 
unsigned int dimY,
 
   45                  unsigned int xN, 
unsigned int yN,
 
   46                  unsigned int k, 
double eps );
 
   48 void normalizeANN_XY( ANNpointArray dataXY, 
unsigned int dimXY,
 
   49                       ANNpointArray dataX, 
unsigned int dimX,
 
   50                       ANNpointArray dataY, 
unsigned int dimY,
 
   53 void whiteningANN_X_Y( ANNpointArray dataX1, ANNpointArray dataX2,
 
   54                        unsigned int dimX, 
unsigned int N1, 
unsigned int N2 );
 
   56 double computeMI_ANN( ANNpointArray dataXY,
 
   57                       unsigned int dimX, 
unsigned int dimY,
 
   58                       unsigned int k, 
unsigned int N, 
double eps );
 
   64 template<
template <
class P_V, 
class P_M> 
class RV, 
class P_V, 
class P_M>
 
   65 double estimateMI_ANN( 
const RV<P_V,P_M>& jointRV,
 
   66                        const unsigned int xDimSel[], 
unsigned int dimX,
 
   67                        const unsigned int yDimSel[], 
unsigned int dimY,
 
   68                        unsigned int k, 
unsigned int N, 
double eps );
 
   74 template<
class P_V, 
class P_M,
 
   75   template <
class P_V, 
class P_M> 
class RV_1,
 
   76   template <
class P_V, 
class P_M> 
class RV_2>
 
   77 double estimateMI_ANN( 
const RV_1<P_V,P_M>& xRV,
 
   78                        const RV_2<P_V,P_M>& yRV,
 
   79                        const unsigned int xDimSel[], 
unsigned int dimX,
 
   80                        const unsigned int yDimSel[], 
unsigned int dimY,
 
   81                        unsigned int k, 
unsigned int N, 
double eps );
 
   87 template <
class P_V, 
class P_M,
 
   88   template <
class P_V, 
class P_M> 
class RV_1,
 
   89   template <
class P_V, 
class P_M> 
class RV_2>
 
   90 double estimateKL_ANN( RV_1<P_V,P_M>& xRV,
 
   92                        unsigned int xDimSel[], 
unsigned int dimX,
 
   93                        unsigned int yDimSel[], 
unsigned int dimY,
 
   94                        unsigned int xN, 
unsigned int yN,
 
   95                        unsigned int k, 
double eps );
 
  101 template <
class P_V, 
class P_M,
 
  102   template <
class P_V, 
class P_M> 
class RV_1,
 
  103   template <
class P_V, 
class P_M> 
class RV_2>
 
  104 double estimateCE_ANN( RV_1<P_V,P_M>& xRV,
 
  106                        unsigned int xDimSel[], 
unsigned int dimX,
 
  107                        unsigned int yDimSel[], 
unsigned int dimY,
 
  108                        unsigned int xN, 
unsigned int yN,
 
  109                        unsigned int k, 
double eps );
 
  113 #endif // QUESO_HAS_ANN 
  115 #endif // UQ_INFO_THEORY_H