#include #include "mpl_blas.h" #define PRECISION float /*************************************************************************** * * * DATA PARALLEL BLAS based on MPL * * * * Internal routine, this routine is not supposed to be * * called by user programs. * * * * Version 1.0 1/4-92 , * * For MasPar MP-1 computers * * * * para//ab, University of Bergen, NORWAY * * * * The calling sequence may be changed in a future version. * * Please report any BUGs, ideas for improvement or other * * comments to * * adm@parallab.uib.no * * * * Future versions may then reflect your suggestions. * * The most current version of this software is available * * from netlib@nac.no , send the message `send index from maspar' * * * * REVISIONS: * * * ***************************************************************************/ /* A solver for lower-triangular system, for nxproc*nxproc Matrix on a rectangular MasPar (nyproc = nxproc/2). The matrix is suppose to be lower triangular, but the physical lay-out on the processor array, transposes the matrix. The algorithm is the straightforward column update algorithm, (but remember: Matrix columns = Physical rows of processors, Thus we update date on rows of processors) For 64 iy && ix < m) a0 = a0/temp; /* first half */ for (i=0; i< iter; i++) { if (iy == i) { if(ix ==i) xnetcE[m-i].temp = btemp; if (ix > i) { btemp -= a0*temp; xnetS[1].btemp = btemp; } } } /* if scaled, scale the results, spread it out and put into the pointer */ temp = btemp; if (diag != 'U' && diag != 'u') if ((ix == iy)&&(ix iy2 && ix < m) a1 = a1/temp; for (i=ny; i< m; i++) { ii = i-ny; if (iy == ii){ if( ix ==i) xnetcE[m-i].temp = btemp; if (ix > i){ btemp -= a1*temp; xnetS[1].btemp = btemp; } } } /* if scaled, scale the results */ if (diag != 'U' && diag != 'u') if ((ix == iy2)&&(ix