Annotation of researchv10no/cmd/view2d/num/sgesl.f, revision 1.1

1.1     ! root        1:       subroutine sgesl(a,lda,n,ipvt,b,job)
        !             2:       integer lda,n,ipvt(1),job
        !             3:       real a(lda,1),b(1)
        !             4: c
        !             5: c     sgesl solves the real system
        !             6: c     a * x = b  or  trans(a) * x = b
        !             7: c     using the factors computed by sgeco or sgefa.
        !             8: c
        !             9: c     on entry
        !            10: c
        !            11: c        a       real(lda, n)
        !            12: c                the output from sgeco or sgefa.
        !            13: c
        !            14: c        lda     integer
        !            15: c                the leading dimension of the array  a .
        !            16: c
        !            17: c        n       integer
        !            18: c                the order of the matrix  a .
        !            19: c
        !            20: c        ipvt    integer(n)
        !            21: c                the pivot vector from sgeco or sgefa.
        !            22: c
        !            23: c        b       real(n)
        !            24: c                the right hand side vector.
        !            25: c
        !            26: c        job     integer
        !            27: c                = 0         to solve  a*x = b ,
        !            28: c                = nonzero   to solve  trans(a)*x = b  where
        !            29: c                            trans(a)  is the transpose.
        !            30: c
        !            31: c     on return
        !            32: c
        !            33: c        b       the solution vector  x .
        !            34: c
        !            35: c     error condition
        !            36: c
        !            37: c        a division by zero will occur if the input factor contains a
        !            38: c        zero on the diagonal.  technically this indicates singularity
        !            39: c        but it is often caused by improper arguments or improper
        !            40: c        setting of lda .  it will not occur if the subroutines are
        !            41: c        called correctly and if sgeco has set rcond .gt. 0.0
        !            42: c        or sgefa has set info .eq. 0 .
        !            43: c
        !            44: c     to compute  inverse(a) * c  where  c  is a matrix
        !            45: c     with  p  columns
        !            46: c           call sgeco(a,lda,n,ipvt,rcond,z)
        !            47: c           if (rcond is too small) go to ...
        !            48: c           do 10 j = 1, p
        !            49: c              call sgesl(a,lda,n,ipvt,c(1,j),0)
        !            50: c        10 continue
        !            51: c
        !            52: c     linpack. this version dated 08/14/78 .
        !            53: c     cleve moler, university of new mexico, argonne national lab.
        !            54: c
        !            55: c     subroutines and functions
        !            56: c
        !            57: c     blas saxpy,sdot
        !            58: c
        !            59: c     internal variables
        !            60: c
        !            61:       real sdot,t
        !            62:       integer k,kb,l,nm1
        !            63: c
        !            64:       nm1 = n - 1
        !            65:       if (job .ne. 0) go to 50
        !            66: c
        !            67: c        job = 0 , solve  a * x = b
        !            68: c        first solve  l*y = b
        !            69: c
        !            70:          if (nm1 .lt. 1) go to 30
        !            71:          do 20 k = 1, nm1
        !            72:             l = ipvt(k)
        !            73:             t = b(l)
        !            74:             if (l .eq. k) go to 10
        !            75:                b(l) = b(k)
        !            76:                b(k) = t
        !            77:    10       continue
        !            78:             call saxpy(n-k,t,a(k+1,k),1,b(k+1),1)
        !            79:    20    continue
        !            80:    30    continue
        !            81: c
        !            82: c        now solve  u*x = y
        !            83: c
        !            84:          do 40 kb = 1, n
        !            85:             k = n + 1 - kb
        !            86:             b(k) = b(k)/a(k,k)
        !            87:             t = -b(k)
        !            88:             call saxpy(k-1,t,a(1,k),1,b(1),1)
        !            89:    40    continue
        !            90:       go to 100
        !            91:    50 continue
        !            92: c
        !            93: c        job = nonzero, solve  trans(a) * x = b
        !            94: c        first solve  trans(u)*y = b
        !            95: c
        !            96:          do 60 k = 1, n
        !            97:             t = sdot(k-1,a(1,k),1,b(1),1)
        !            98:             b(k) = (b(k) - t)/a(k,k)
        !            99:    60    continue
        !           100: c
        !           101: c        now solve trans(l)*x = y
        !           102: c
        !           103:          if (nm1 .lt. 1) go to 90
        !           104:          do 80 kb = 1, nm1
        !           105:             k = n - kb
        !           106:             b(k) = b(k) + sdot(n-k,a(k+1,k),1,b(k+1),1)
        !           107:             l = ipvt(k)
        !           108:             if (l .eq. k) go to 70
        !           109:                t = b(l)
        !           110:                b(l) = b(k)
        !           111:                b(k) = t
        !           112:    70       continue
        !           113:    80    continue
        !           114:    90    continue
        !           115:   100 continue
        !           116:       return
        !           117:       end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.