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

  1.       SUBROUTINE G1 (A,B,COS,SIN,SIG)                                   G1000100
  2. C     C.L.LAWSON AND R.J.HANSON, JET PROPULSION LABORATORY, 1973 JUN 12 G1000200
  3. C     TO APPEAR IN 'SOLVING LEAST SQUARES PROBLEMS', PRENTICE-HALL, 1974G1000300
  4. C                                                                       G1000400
  5. C                                                                       G1000500
  6. C     COMPUTE ORTHOGONAL ROTATION MATRIX..                              G1000600
  7. C     COMPUTE.. MATRIX   (C, S) SO THAT (C, S)(A) = (SQRT(A**2+B**2))   G1000700
  8. C                        (-S,C)         (-S,C)(B)   (   0          )    G1000800
  9. C     COMPUTE SIG = SQRT(A**2+B**2)                                     G1000900
  10. C        SIG IS COMPUTED LAST TO ALLOW FOR THE POSSIBILITY THAT         G1001000
  11. C        SIG MAY BE IN THE SAME LOCATION AS A OR B .                    G1001100
  12. C                                                                       G1001200
  13.       ZERO=0.                                                           G1001300
  14.       ONE=1.                                                            G1001400
  15.       IF (ABS(A).LE.ABS(B)) GO TO 10                                    G1001500
  16.       XR=B/A                                                            G1001600
  17.       YR=SQRT(ONE+XR**2)                                                G1001700
  18.       COS=SIGN(ONE/YR,A)                                                G1001800
  19.       SIN=COS*XR                                                        G1001900
  20.       SIG=ABS(A)*YR                                                     G1002000
  21.       RETURN                                                            G1002100
  22.    10 IF (B) 20,30,20                                                   G1002200
  23.    20 XR=A/B                                                            G1002300
  24.       YR=SQRT(ONE+XR**2)                                                G1002400
  25.       SIN=SIGN(ONE/YR,B)                                                G1002500
  26.       COS=SIN*XR                                                        G1002600
  27.       SIG=ABS(B)*YR                                                     G1002700
  28.       RETURN                                                            G1002800
  29.    30 SIG=ZERO                                                          G1002900
  30.       COS=ZERO                                                          G1003000
  31.       SIN=ONE                                                           G1003100
  32.       RETURN                                                            G1003200
  33.       END                                                               G1003300
  34.