mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-14 23:46:14 +00:00
* Remove static char *id = from all source files. The same information is included in a comment in each source file. * Remove unused template file 'id'
71 lines
1.5 KiB
C
71 lines
1.5 KiB
C
/* $Id: lptran.c,v 1.2 1999/01/03 02:07:20 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved
|
|
*/
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* (C) Copyright 1989-95 Venue. All Rights Reserved. */
|
|
/* Manufactured in the United States of America. */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
#include "version.h"
|
|
|
|
#include "lpdefs.h"
|
|
#include "lpglobl.h"
|
|
|
|
#ifdef alliant
|
|
#pragma global safe(Eta_rownr, Eta_value)
|
|
#pragma global assoc
|
|
#endif
|
|
|
|
void ftran(int start, int end, double *pcol)
|
|
{
|
|
int i, j;
|
|
int k, r;
|
|
double theta;
|
|
|
|
#ifdef alliant
|
|
#pragma safe(pcol, Endetacol)
|
|
#pragma routine permutation(Eta_rownr)
|
|
#endif
|
|
|
|
if (Verbose) printf("ftran\n");
|
|
for (i = start; i <= end; i++) {
|
|
k = Endetacol[i] - 1;
|
|
r = Eta_rownr[k];
|
|
theta = pcol[r];
|
|
if (theta != 0)
|
|
for (j = Endetacol[i - 1]; j < k; j++)
|
|
pcol[Eta_rownr[j]] += theta * Eta_value[j]; /* cpu expensive line */
|
|
pcol[r] *= Eta_value[k];
|
|
}
|
|
|
|
#ifdef alliant
|
|
#pragma loop novector
|
|
#endif
|
|
|
|
for (i = 0; i <= Rows; i++)
|
|
if (abs(pcol[i]) < EPSEL) pcol[i] = 0;
|
|
} /* ftran */
|
|
|
|
void btran(int numc, double *row)
|
|
{
|
|
int i, j, k;
|
|
double f;
|
|
|
|
#ifdef alliant
|
|
#pragma safe(row, Endetacol)
|
|
#endif
|
|
|
|
if (Verbose) printf("btran\n");
|
|
for (i = numc; i >= 1; i--) {
|
|
f = 0;
|
|
k = Endetacol[i];
|
|
for (j = Endetacol[i - 1]; j < k; j++) f += row[Eta_rownr[j]] * Eta_value[j];
|
|
if (abs(f) < EPSEL)
|
|
row[Eta_rownr[k - 1]] = 0;
|
|
else
|
|
row[Eta_rownr[k - 1]] = f;
|
|
}
|
|
} /* btran */
|