File: majz.f

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (53 lines) | stat: -rw-r--r-- 1,223 bytes parent folder | download | duplicates (4)
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
      subroutine majz(n,np,nt,y,s,z,ys,zs,diag,index)
c
c     mise a jour de ({z}(i),zs(i), i=1,np).
c     {z}(i)=[b](i-1)*{s}(i), [b](i) est definie par ({y}(j),{s}(j),{z}(j)
c     , j=1,i) et {diag}.
c     zs(i)=<z>(i)*{s}(i)
c
c     Copyright INRIA
c
      implicit double precision (a-h,o-z)
      dimension     y(nt,n),s(nt,n),z(nt,n),ys(nt),zs(nt),diag(n)
      integer  index(nt)
c
      l=index(1)
      do 100 jj=1,n
         z(l,jj)=diag(jj)*s(l,jj)
100   continue
c
      zs(l)=0
      do 110 jj=1,n
         zs(l)=zs(l)+z(l,jj)*s(l,jj)
110   continue
c
c
      if(np.eq.1) return
c
      do 200 i=2,np
         l=index(i)
         do 210 jj=1,n
            z(l,jj)=diag(jj)*s(l,jj)
210      continue
         do 220 j=1,i-1
            psy=0
            psz=0
            jl=index(j)
            do 230 jj=1,n
               psy=psy+y(jl,jj)*s(l,jj)
               psz=psz+z(jl,jj)*s(l,jj)
230         continue
            do 240 jj=1,n
               z(l,jj)=z(l,jj)+psy*y(jl,jj)/ys(jl)-psz*z(jl,jj)
     &                 /zs(jl)
240         continue
220      continue
c
         zs(l)=0
         do 250 jj=1,n
            zs(l)=zs(l)+z(l,jj)*s(l,jj)
250      continue
200   continue
c
      return
      end