home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTRAN / LLSQ.ZIP / BNDACC.FOR next >
Encoding:
Text File  |  1984-02-23  |  5.9 KB  |  75 lines

  1.       SUBROUTINE BNDACC (G,MDG,NB,IP,IR,MT,JT)                          BND00100
  2. C     C.L.LAWSON AND R.J.HANSON, JET PROPULSION LABORATORY, 1973 JUN 12 BND00200
  3. C     TO APPEAR IN 'SOLVING LEAST SQUARES PROBLEMS', PRENTICE-HALL, 1974BND00300
  4. C          SEQUENTIAL ALGORITHM FOR BANDED LEAST SQUARES PROBLEM..      BND00400
  5. C          ACCUMULATION PHASE.      FOR SOLUTION PHASE USE BNDSOL.      BND00500
  6. C                                                                       BND00600
  7. C     THE CALLING PROGRAM MUST SET IR=1 AND IP=1 BEFORE THE FIRST CALL  BND00700
  8. C     TO BNDACC FOR A NEW CASE.                                         BND00800
  9. C                                                                       BND00900
  10. C     THE SECOND SUBSCRIPT OF G( ) MUST BE DIMENSIONED AT LEAST         BND01000
  11. C     NB+1 IN THE CALLING PROGRAM.                                      BND01100
  12.       DIMENSION G(MDG,1)                                                BND01200
  13.       ZERO=0.                                                           BND01300
  14. C                                                                       BND01400
  15. C              ALG. STEPS 1-4 ARE PERFORMED EXTERNAL TO THIS SUBROUTINE.BND01500
  16. C                                                                       BND01600
  17.       NBP1=NB+1                                                         BND01700
  18.       IF (MT.LE.0) RETURN                                               BND01800
  19. C                                             ALG. STEP 5               BND01900
  20.       IF (JT.EQ.IP) GO TO 70                                            BND02000
  21. C                                             ALG. STEPS 6-7            BND02100
  22.       IF (JT.LE.IR) GO TO 30                                            BND02200
  23. C                                             ALG. STEPS 8-9            BND02300
  24.       DO 10 I=1,MT                                                      BND02400
  25.         IG1=JT+MT-I                                                     BND02500
  26.         IG2=IR+MT-I                                                     BND02600
  27.         DO 10 J=1,NBP1                                                  BND02700
  28.    10   G(IG1,J)=G(IG2,J)                                               BND02800
  29. C                                             ALG. STEP 10              BND02900
  30.       IE=JT-IR                                                          BND03000
  31.       DO 20 I=1,IE                                                      BND03100
  32.         IG=IR+I-1                                                       BND03200
  33.         DO 20 J=1,NBP1                                                  BND03300
  34.    20   G(IG,J)=ZERO                                                    BND03400
  35. C                                             ALG. STEP 11              BND03500
  36.       IR=JT                                                             BND03600
  37. C                                             ALG. STEP 12              BND03700
  38.    30 MU=MIN0(NB-1,IR-IP-1)                                             BND03800
  39.       IF (MU.EQ.0) GO TO 60                                             BND03900
  40. C                                             ALG. STEP 13              BND04000
  41.       DO 50 L=1,MU                                                      BND04100
  42. C                                             ALG. STEP 14              BND04200
  43.         K=MIN0(L,JT-IP)                                                 BND04300
  44. C                                             ALG. STEP 15              BND04400
  45.         LP1=L+1                                                         BND04500
  46.         IG=IP+L                                                         BND04600
  47.         DO 40 I=LP1,NB                                                  BND04700
  48.           JG=I-K                                                        BND04800
  49.    40     G(IG,JG)=G(IG,I)                                              BND04900
  50. C                                             ALG. STEP 16              BND05000
  51.         DO 50 I=1,K                                                     BND05100
  52.         JG=NBP1-I                                                       BND05200
  53.    50   G(IG,JG)=ZERO                                                   BND05300
  54. C                                             ALG. STEP 17              BND05400
  55.    60 IP=JT                                                             BND05500
  56. C                                             ALG. STEPS 18-19          BND05600
  57.    70 MH=IR+MT-IP                                                       BND05700
  58.       KH=MIN0(NBP1,MH)                                                  BND05800
  59. C                                             ALG. STEP 20              BND05900
  60.       DO 80 I=1,KH                                                      BND06000
  61.    80   CALL H12 (1,I,MAX0(I+1,IR-IP+1),MH,G(IP,I),1,RHO,               BND06100
  62.      1            G(IP,I+1),1,MDG,NBP1-I)                               BND06200
  63. C                                             ALG. STEP 21              BND06300
  64.       IR=IP+KH                                                          BND06400
  65. C                                             ALG. STEP 22              BND06500
  66.       IF (KH.LT.NBP1) GO TO 100                                         BND06600
  67. C                                             ALG. STEP 23              BND06700
  68.       DO 90 I=1,NB                                                      BND06800
  69.    90   G(IR-1,I)=ZERO                                                  BND06900
  70. C                                             ALG. STEP 24              BND07000
  71.   100 CONTINUE                                                          BND07100
  72. C                                             ALG. STEP 25              BND07200
  73.       RETURN                                                            BND07300
  74.       END                                                               BND07400
  75.