]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/kernlib/kerngen/tcgen/smxinv.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / tcgen / smxinv.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/02/15 17:49:53 mclareni
6* Kernlib
7*
8*
9#include "kerngen/pilot.h"
10#if !defined(CERNLIB_TCGEN)
11 SUBROUTINE SMXINV (A,NDIM,IFAIL)
12C
13C CERN PROGLIB# F107 SMXINV .VERSION KERNFOR 1.0 720503
14C ORIG. 03/05/72 CL
15C
16 DIMENSION A(*),INDEX(100),RI(100)
17C
18 DATA TOL / 1.E-12/
19C
20 IFAIL=0
21 N=NDIM
22 NP1=N+1
23 DO 10 I=1,N
24 10 INDEX(I)=1
25C
26 DO 80 I=1,N
27C
28C-- FIND PIVOT
29 PIVOT=0.
30 JJ=1
31 DO 20 J=1,N
32 IF (INDEX(J).EQ.0) GO TO 19
33 ELM=ABS (A(JJ))
34 IF (ELM.LE.PIVOT) GO TO 19
35 PIVOT=ELM
36 K=J
37 KK=JJ
38 19 JJ=JJ+NP1
39 20 CONTINUE
40 IF (PIVOT/ABS(A(1)).LT.TOL) GO TO 100
41 INDEX(K)=0
42 PIVOT=-A(KK)
43C
44C-- ELIMINATION
45 KJ=K
46 NP=N
47C
48 DO 70 J=1,N
49 IF (J-K) 34,30,34
50C
51 30 A(KJ)=1./PIVOT
52 RI(J)=0.
53 NP=1
54 GO TO 70
55C
56 34 ELM=-A(KJ)
57 40 RI(J)=ELM/PIVOT
58 IF (ELM.EQ.0.) GO TO 50
59C
60 JL=J
61 DO 45 L=1,J
62 A(JL)=A(JL)+ELM*RI(L)
63 45 JL=JL+N
64C
65 50 A(KJ)=RI(J)
66C
67 70 KJ=KJ+NP
68C
69 80 CONTINUE
70C
71C-- CHANGE THE SIGN AND PROVISIONAL FILL-UP
72 IJ0=1
73 JI0=1
74 DO 95 I=1,N
75 IJ=IJ0
76 JI=JI0
77C
78 DO 90 J=1,I
79 A(IJ)=-A(IJ)
80 A(JI)=A(IJ)
81 IJ=IJ+N
82 JI=JI+1
83 90 CONTINUE
84C
85 IJ0=IJ0+1
86 JI0=JI0+N
87 95 CONTINUE
88 RETURN
89C
90C-- FAILURE RETURN
91 100 IFAIL=1
92 RETURN
93 END
94#endif