idamnjanovic@51: /************************************************************************** idamnjanovic@51: * idamnjanovic@51: * File name: myblas.c idamnjanovic@51: * idamnjanovic@51: * Ron Rubinstein idamnjanovic@51: * Computer Science Department idamnjanovic@51: * Technion, Haifa 32000 Israel idamnjanovic@51: * ronrubin@cs idamnjanovic@51: * idamnjanovic@51: * Version: 1.1 idamnjanovic@51: * Last updated: 13.8.2009 idamnjanovic@51: * idamnjanovic@51: *************************************************************************/ idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: #include "myblas.h" idamnjanovic@51: #include idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /* find maximum of absolute values */ idamnjanovic@51: idamnjanovic@51: mwIndex maxabs(double c[], mwSize m) idamnjanovic@51: { idamnjanovic@51: mwIndex maxid=0, k; idamnjanovic@51: double absval, maxval = SQR(*c); /* use square which is quicker than absolute value */ idamnjanovic@51: idamnjanovic@51: for (k=1; k maxval) { idamnjanovic@51: maxval = absval; idamnjanovic@51: maxid = k; idamnjanovic@51: } idamnjanovic@51: } idamnjanovic@51: return maxid; idamnjanovic@51: } idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /* compute y := alpha*x + y */ idamnjanovic@51: idamnjanovic@51: void vec_sum(double alpha, double x[], double y[], mwSize n) idamnjanovic@51: { idamnjanovic@51: mwIndex i; idamnjanovic@51: idamnjanovic@51: for (i=0; i maxval) { idamnjanovic@51: maxval = val; idamnjanovic@51: maxid = k; idamnjanovic@51: } idamnjanovic@51: } idamnjanovic@51: return maxid; idamnjanovic@51: } idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /* solve L*x = b */ idamnjanovic@51: idamnjanovic@51: void backsubst_L(double L[], double b[], double x[], mwSize n, mwSize k) idamnjanovic@51: { idamnjanovic@51: mwIndex i, j; idamnjanovic@51: double rhs; idamnjanovic@51: idamnjanovic@51: for (i=0; i=1; --i) { idamnjanovic@51: rhs = b[i-1]; idamnjanovic@51: for (j=i; j=1; --i) { idamnjanovic@51: rhs = b[i-1]; idamnjanovic@51: for (j=i; j