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