]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/02/15 17:49:54 mclareni | |
6 | * Kernlib | |
7 | * | |
8 | * | |
9 | #include "kerngen/pilot.h" | |
10 | SUBROUTINE TRINV (T,S,N) | |
11 | C | |
12 | C CERN PROGLIB# F112 TRINV .VERSION KERNFOR 4.15 861204 | |
13 | C ORIG. 18/12/74 WH | |
14 | C | |
15 | #if defined(CERNLIB_INTDOUBL) | |
16 | DOUBLE PRECISION SUM, R | |
17 | #endif | |
18 | DIMENSION T(*),S(*) | |
19 | C | |
20 | MX = (N*N+N)/2 | |
21 | IPIV = MX | |
22 | C | |
23 | I = N | |
24 | 10 R = 0. | |
25 | IF (T(IPIV).GT.0.) R=1./T(IPIV) | |
26 | S(IPIV) = R | |
27 | NDSTEP = N | |
28 | IND = MX - N + I | |
29 | C | |
30 | 20 IF (IND.EQ.IPIV) GO TO 50 | |
31 | SUM = 0. | |
32 | IF (R.EQ.0.) GO TO 40 | |
33 | LHOR = IPIV | |
34 | LVER = IND | |
35 | J = I | |
36 | C | |
37 | 30 LHOR = LHOR + J | |
38 | LVER = LVER + 1 | |
39 | SUM = SUM + T(LHOR)*S(LVER) | |
40 | J = J + 1 | |
41 | IF (LHOR.LT.IND) GO TO 30 | |
42 | C | |
43 | 40 S(IND) = - SUM*R | |
44 | NDSTEP = NDSTEP - 1 | |
45 | IND = IND - NDSTEP | |
46 | GO TO 20 | |
47 | C | |
48 | 50 IPIV = IPIV - I | |
49 | I = I - 1 | |
50 | IF (I.GT.0) GO TO 10 | |
51 | C | |
52 | RETURN | |
53 | END |