Overview
Comment: | Initial revision |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
1a24a30c1d39ec39dad32f5473357d8d |
User & Date: | gawthrop@users.sourceforge.net on 1998-08-14 07:58:13 |
Other Links: | branch diff | manifest | tags |
Context
1998-08-14
| ||
10:03:59 | *** empty log message *** check-in: 3639621440 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
07:58:13 | Initial revision check-in: 1a24a30c1d user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
1998-08-13
| ||
16:25:07 | Removed some documentation form odeo.m check-in: 631107f592 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Added mttroot/mtt/bin/trans/p/mtt_ludcmp.p version [9ed894c7d7].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | PROCEDURE ludcmp(VAR a: glnpbynp; n,np: integer; VAR indx: glindx; VAR d: real); (* Programs using LUDCMP must define the types { ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ############################################################### } TYPE glnpbynp = ARRAY [1..np,1..np] OF real; glnarray = ARRAY [1..n] OF real; glindx = ARRAY [1..n] OF integer; in the main routine. *) CONST tiny=1.0e-20; VAR k,j,imax,i: integer; sum,dum,big: real; vv: glnarray; BEGIN d := 1.0; FOR i := 1 TO n DO BEGIN big := 0.0; FOR j := 1 TO n DO IF (abs(a[i,j]) > big) THEN big := abs(a[i,j]); IF (big = 0.0) THEN BEGIN writeln('pause in LUDCMP - singular matrix'); readln END; vv[i] := 1.0/big END; FOR j := 1 TO n DO BEGIN FOR i := 1 TO j-1 DO BEGIN sum := a[i,j]; FOR k := 1 TO i-1 DO BEGIN sum := sum-a[i,k]*a[k,j] END; a[i,j] := sum END; big := 0.0; FOR i := j TO n DO BEGIN sum := a[i,j]; FOR k := 1 TO j-1 DO BEGIN sum := sum-a[i,k]*a[k,j] END; a[i,j] := sum; dum := vv[i]*abs(sum); IF (dum > big) THEN BEGIN big := dum; imax := i END END; IF (j <> imax) THEN BEGIN FOR k := 1 TO n DO BEGIN dum := a[imax,k]; a[imax,k] := a[j,k]; a[j,k] := dum END; d := -d; vv[imax] := vv[j] END; indx[j] := imax; IF (a[j,j] = 0.0) THEN a[j,j] := tiny; IF (j <> n) THEN BEGIN dum := 1.0/a[j,j]; FOR i := j+1 TO n DO BEGIN a[i,j] := a[i,j]*dum END END END; END; |