wolffd@0: /* convert_to_sparse_table.c convert a sparse discrete CPD with evidence into sparse table */ wolffd@0: /* convert_to_pot.m located in ../CPDs/discrete_CPD call it */ wolffd@0: /* 3 input */ wolffd@0: /* CPD prhs[0] with 1D sparse CPT */ wolffd@0: /* domain prhs[1] */ wolffd@0: /* evidence prhs[2] */ wolffd@0: /* 1 output */ wolffd@0: /* T plhs[0] sparse table */ wolffd@0: wolffd@0: #include wolffd@0: #include "mex.h" wolffd@0: wolffd@0: void ind_subv(int index, const int *cumprod, const int n, int *bsubv){ wolffd@0: int i; wolffd@0: wolffd@0: for (i = n-1; i >= 0; i--) { wolffd@0: bsubv[i] = ((int)floor(index / cumprod[i])); wolffd@0: index = index % cumprod[i]; wolffd@0: } wolffd@0: } wolffd@0: wolffd@0: int subv_ind(const int n, const int *cumprod, const int *subv){ wolffd@0: int i, index=0; wolffd@0: wolffd@0: for(i=0; i