Update of /cvsroot/pure-data/externals/iem/iemmatrix/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30546
Modified Files: mtx_inverse.c Log Message: output a righthand bang if inversion fails
Index: mtx_inverse.c =================================================================== RCS file: /cvsroot/pure-data/externals/iem/iemmatrix/src/mtx_inverse.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** mtx_inverse.c 11 May 2005 14:07:18 -0000 1.4 --- mtx_inverse.c 11 May 2005 14:31:27 -0000 1.5 *************** *** 90,93 **** --- 90,95 ---- int col=atom_getfloat(argv+1);
+ int error=0; + t_matrixfloat *original, *inverted;
*************** *** 105,109 **** if (row==col){ /* fine, the matrix is square */ ! inverted=mtx_doInvert(original, row, 0); } else { /* we'll have to do the pseudo-inverse: --- 107,111 ---- if (row==col){ /* fine, the matrix is square */ ! inverted=mtx_doInvert(original, row, &error); } else { /* we'll have to do the pseudo-inverse: *************** *** 117,125 **** inverteeCol=col; invertee =mtx_doMultiply(col, transposed, row, original, col); ! inverted =mtx_doMultiply(col, mtx_doInvert(invertee, col, 0), col, transposed, row); } else { inverteeCol=row; invertee =mtx_doMultiply(row, original, col, transposed, row); ! inverted =mtx_doMultiply(col, transposed, row, mtx_doInvert(invertee, row, 0), row); } freebytes(transposed, sizeof(t_matrixfloat)*col*row); --- 119,127 ---- inverteeCol=col; invertee =mtx_doMultiply(col, transposed, row, original, col); ! inverted =mtx_doMultiply(col, mtx_doInvert(invertee, col, &error), col, transposed, row); } else { inverteeCol=row; invertee =mtx_doMultiply(row, original, col, transposed, row); ! inverted =mtx_doMultiply(col, transposed, row, mtx_doInvert(invertee, row, &error), row); } freebytes(transposed, sizeof(t_matrixfloat)*col*row); *************** *** 133,136 **** --- 135,140 ---- freebytes(original, sizeof(t_matrixfloat)*row*col);
+ if(error)outlet_bang(x->x_outlet); + /* 3c output the atombuf; */ matrix_bang(x); *************** *** 143,146 **** --- 147,151 ---- x->col=x->row=0; x->atombuffer=0; + x->x_outlet=outlet_new(&x->x_obj, 0);
return (x);