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