* Implementation of the simple LBG algorithm for just two codebooks
*/
static int simple_lbg(int dim,
- int centroid[3][dim],
+ int *centroid[3],
int newutility[3],
int *points,
cell *cells)
* @param newcentroid A vector with the position of the new centroids
*/
static void shift_codebook(elbg_data *elbg, int *indexes,
- int newcentroid[3][elbg->dim])
+ int *newcentroid[3])
{
cell *tempdata;
cell **pp = &elbg->cells[indexes[2]];
int j, k, olderror=0, newerror, cont=0;
int newutility[3];
int newcentroid[3][elbg->dim];
+ int *newcentroid_ptrs[3] = { newcentroid[0], newcentroid[1], newcentroid[2] };
cell *tempcell;
for (j=0; j<3; j++)
newerror = newutility[2];
- newerror += simple_lbg(elbg->dim, newcentroid, newutility, elbg->points,
+ newerror += simple_lbg(elbg->dim, newcentroid_ptrs, newutility, elbg->points,
elbg->cells[idx[1]]);
if (olderror > newerror) {
- shift_codebook(elbg, idx, newcentroid);
+ shift_codebook(elbg, idx, newcentroid_ptrs);
elbg->error += newerror - olderror;