home *** CD-ROM | disk | FTP | other *** search
- maelem(lra,nrow,ncol,a,i,j,scalar,iflag)
-
- /*this function is used to do some elementary matrix */
- /*operations on rows or columns.*/
-
- int i,iflag,j,lra,nrow,ncol;
- float a[],scalar;
-
- {
- int ii,ir,is,nflag;
- float c;
-
- nflag = iflag + 48; /* convert to ASCII */
- switch(nflag) {
- case '1': /* multiply a row by a constant */
- ir = (i - 1) * lra;
- for(ii = 0; ii <= ncol-1; ii++)
- {
- a[ir] *= scalar;
- ir++;
- };
- break; /* end of case 1 */
-
- case '2': /* switch two rows */
- ir = (i - 1) * lra;
- is = (j - 1) * lra;
- for( ii = 0; ii <= ncol-1; ii++)
- {
- c = a[ir];
- a[ir] = a[is];
- a[is] = c;
- ir++ ;
- is++ ;
- };
- break; /* end of case 2 */
-
- case '3': /* add multiple of one row to another */
- ir = (i - 1) * lra;
- is = (j - 1) * lra;
- for( ii = 0; ii <= ncol-1; ii++)
- {
- a[ir] += scalar * a[is];
- ir++;
- is++;
- };
- break; /* end of case 3 */
-
- case '4': /* multiply a column by a constant */
- ir = i - 1;
- for(ii = 0; ii <= nrow-1; ii++)
- {
- a[ir] *= scalar;
- ir += lra;
- };
- break; /* end of case 4 */
-
- case '5': /* switch 2 columns */
- ir = i - 1;
- is = j - 1;
- for(ii = 0; ii <= nrow-1; ii++)
- {
- c = a[ir];
- a[ir] = a[is];
- a[is] = c;
- ir += lra;
- is += lra;
- };
- break; /* end of case 5 */
-
- case '6': /* add multiple of one column to another */
- ir = i - 1;
- is = j - 1;
- for(ii = 0; ii <= nrow-1; ii++)
- {
- a[ir] += scalar * a[is];
- ir += lra;
- is += lra;
- };
- break; /* end of case 6 */
-
- default: /* error message*/
- printf("Case not found for IFLAG= %d\n",iflag);
- break;
-
- }
- }
-