Update of /cvsroot/pure-data/pd/extra/choice In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10939/pd/extra/choice
Modified Files: choice.c Log Message: 0.38 test 9 (mostly bug fixes)
Index: choice.c =================================================================== RCS file: /cvsroot/pure-data/pd/extra/choice/choice.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** choice.c 29 Jul 2002 17:06:16 -0000 1.1.1.1 --- choice.c 6 Nov 2004 16:07:22 -0000 1.2 *************** *** 51,60 **** for (j = 0; j < x->x_n; j++) { ! t_elem *e = x->x_vec + j; ! t_float *w = e->e_weight; ! post("%2d age %2d \ w %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f", ! j, (int)(e->e_age), w[0], w[1], w[2], w[3], w[4], w[5], ! w[6], w[7], w[8], w[9]); } } --- 51,60 ---- for (j = 0; j < x->x_n; j++) { ! t_elem *e = x->x_vec + j; ! t_float *w = e->e_weight; ! post("%2d age %2d \ w %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f", ! j, (int)(e->e_age), w[0], w[1], w[2], w[3], w[4], w[5], ! w[6], w[7], w[8], w[9]); } } *************** *** 66,70 **** float sum, normal; x->x_vec = (t_elem *)resizebytes(x->x_vec, oldn * sizeof(t_elem), ! newn * sizeof(t_elem)); x->x_n = newn; e = x->x_vec + oldn; --- 66,70 ---- float sum, normal; x->x_vec = (t_elem *)resizebytes(x->x_vec, oldn * sizeof(t_elem), ! newn * sizeof(t_elem)); x->x_n = newn; e = x->x_vec + oldn; *************** *** 73,83 **** for (i = 0, sum = 0; i < DIMENSION; i++) { ! float f = atom_getfloatarg(i, argc, argv); ! e->e_weight[i] = f; ! sum += f*f; } normal = (float)(sum > 0 ? 1./sqrt(sum) : 1); for (i = 0; i < DIMENSION; i++) ! e->e_weight[i] *= normal; }
--- 73,83 ---- for (i = 0, sum = 0; i < DIMENSION; i++) { ! float f = atom_getfloatarg(i, argc, argv); ! e->e_weight[i] = f; ! sum += f*f; } normal = (float)(sum > 0 ? 1./sqrt(sum) : 1); for (i = 0; i < DIMENSION; i++) ! e->e_weight[i] *= normal; }
*************** *** 89,112 **** t_float invec[DIMENSION]; for (i = 0; i < DIMENSION; i++) ! invec[i] = atom_getfloatarg(i, argc, argv); for (j = 0; j < x->x_n; j++) { ! t_elem *e = x->x_vec + j; ! float sum; ! for (i = 0, sum = 0; i < DIMENSION; i++) ! sum += e->e_weight[i] * invec[i]; ! if (x->x_nonrepeat) sum *= (float)(log(e->e_age)); ! if (sum > bestsum) ! { ! bestsum = sum; ! sum = 1; ! bestindex = j; ! } } if (bestindex >= 0) { ! for (j = 0; j < x->x_n; j++) ! x->x_vec[j].e_age += 1.; ! x->x_vec[bestindex].e_age = 1; } outlet_float(x->x_obj.ob_outlet, (float)bestindex); --- 89,112 ---- t_float invec[DIMENSION]; for (i = 0; i < DIMENSION; i++) ! invec[i] = atom_getfloatarg(i, argc, argv); for (j = 0; j < x->x_n; j++) { ! t_elem *e = x->x_vec + j; ! float sum; ! for (i = 0, sum = 0; i < DIMENSION; i++) ! sum += e->e_weight[i] * invec[i]; ! if (x->x_nonrepeat) sum *= (float)(log(e->e_age)); ! if (sum > bestsum) ! { ! bestsum = sum; ! sum = 1; ! bestindex = j; ! } } if (bestindex >= 0) { ! for (j = 0; j < x->x_n; j++) ! x->x_vec[j].e_age += 1.; ! x->x_vec[bestindex].e_age = 1; } outlet_float(x->x_obj.ob_outlet, (float)bestindex); *************** *** 121,125 **** { choice_class = class_new(gensym("choice"), (t_newmethod)choice_new, ! (t_method)choice_free, sizeof(t_choice), 0, A_DEFFLOAT, 0); class_addmethod(choice_class, (t_method)choice_add, gensym("add"), A_GIMME, 0); class_addmethod(choice_class, (t_method)choice_clear, gensym("clear"), 0); --- 121,125 ---- { choice_class = class_new(gensym("choice"), (t_newmethod)choice_new, ! (t_method)choice_free, sizeof(t_choice), 0, A_DEFFLOAT, 0); class_addmethod(choice_class, (t_method)choice_add, gensym("add"), A_GIMME, 0); class_addmethod(choice_class, (t_method)choice_clear, gensym("clear"), 0);