  STMT 
 NUMBER         *** STATEMENT ***
          C=-------- CS 8 HOUSEHOLDER TRANSFORMATIONS FOR LEAST-SQUARES PROBLEMS          
          C SOLUTION OF THE LINEAR LEAST SQUARES PROBLEM BY HOUSEHOLDER                   
          C TRANSFORMATIONS.                                                              
    1           TEST (M=4,N=3)                                                            
    2           DIMENSION (A(M,N), B(M), X(N), DIAG(N))                                   
    3           INPUT (A,B)                                                               
          C                                                                               
    4           FOR K = 1 TO N BY 1                                                       
          C     COMPUTE THE K-TH HOUSEHOLDER TRANSFORMATION.                              
    5               SUM =  SUMMATION (A(I,K)*A(I,K), I = K TO M)                          
    6               S = SQRT(SUM)                                                         
          C         WE COULD ALSO USE S = -SQRT(SUM)                                      
    7               DIAG (K) = -S                                                         
    8               A(K,K) = A(K,K) + S                                                   
    9               P = S*A(K,K)                                                          
   10               FOR J = K+1 TO N BY 1                                                 
          C         TRANSFORM THE REMAINING COLUMNS AND B.                                
   11                   T = SUMMATION (A(I,K)*A(I,J), I = K TO M)/P                       
   12                   FOR I = K TO M BY 1                                               
   13                       A(I,J) = A(I,J) - T*A(I,K)                                    
   14                       END (I)                                                       
   15                   END (J)                                                           
   16               T = SUMMATION (A(I,K)*B(I), I = K TO M)/P                             
   17               FOR I = K TO M BY 1                                                   
   18                   B(I) = B(I) - T*A(I,K)                                            
   19                   END (I)                                                           
   20               END (K)                                                               
          C                                                                               
          C BACK SUBSTITUTION.                                                            
   21           FOR I = N TO 1 BY -1                                                      
   22               X(I) = (B(I) - SUMMATION (A(I,J)*X(J),J=I+1 TO N))/DIAG(I)            
   23               END (I)                                                               
   24           OUTPUT (X)                                                                
   25           *STOP                                                                     
                        0 COMPILATION ERROR(S) FOUND
                        0 EXECUTION ERROR(S) FOUND
1*DATA(I) DENOTES THE I-TH DATA VALUE


   *DATA( 1) IS A(  1,  1)       
   *DATA( 2) IS A(  2,  1)       
   *DATA( 3) IS A(  3,  1)       
   *DATA( 4) IS A(  4,  1)       
   *DATA( 5) IS A(  1,  2)       
   *DATA( 6) IS A(  2,  2)       
   *DATA( 7) IS A(  3,  2)       
   *DATA( 8) IS A(  4,  2)       
   *DATA( 9) IS A(  1,  3)       
   *DATA(10) IS A(  2,  3)       
   *DATA(11) IS A(  3,  3)       
   *DATA(12) IS A(  4,  3)       
   *DATA(13) IS B(  1)           
   *DATA(14) IS B(  2)           
   *DATA(15) IS B(  3)           
   *DATA(16) IS B(  4)           


 *CONS(I) DENOTES THE I-TH CONSTANT


   *CONS( 1) IS 0.0       


 *INTR(I) DENOTES THE I-TH INTERMEDIATE VALUE


    5   *INTR(  1)   =   *DATA(  1)    *    *DATA(  1)                           
    5   *INTR(  2)   =   *DATA(  2)    *    *DATA(  2)                           
    5   *INTR(  3)   =   *INTR(  1)    +    *INTR(  2)                           
    5   *INTR(  4)   =   *DATA(  3)    *    *DATA(  3)                           
    5   *INTR(  5)   =   *INTR(  3)    +    *INTR(  4)                           
    5   *INTR(  6)   =   *DATA(  4)    *    *DATA(  4)                           
    5   *INTR(  7)   =   *INTR(  5)    +    *INTR(  6)          SUM              
    6   *INTR(  8)   =              SQRT    *INTR(  7)          S                
    7   *INTR(  9)   =                 -    *INTR(  8)          DIAG(  1)        
    8   *INTR( 10)   =   *DATA(  1)    +    *INTR(  8)          A(  1,  1)       
    9   *INTR( 11)   =   *INTR(  8)    *    *INTR( 10)          P                
   11   *INTR( 12)   =   *INTR( 10)    *    *DATA(  5)                           
   11   *INTR( 13)   =   *DATA(  2)    *    *DATA(  6)                           
   11   *INTR( 14)   =   *INTR( 12)    +    *INTR( 13)                           
   11   *INTR( 15)   =   *DATA(  3)    *    *DATA(  7)                           
   11   *INTR( 16)   =   *INTR( 14)    +    *INTR( 15)                           
   11   *INTR( 17)   =   *DATA(  4)    *    *DATA(  8)                           
   11   *INTR( 18)   =   *INTR( 16)    +    *INTR( 17)                           
   11   *INTR( 19)   =   *INTR( 18)    /    *INTR( 11)          T                
   13   *INTR( 20)   =   *INTR( 19)    *    *INTR( 10)                           
   13   *INTR( 21)   =   *DATA(  5)    -    *INTR( 20)          A(  1,  2)       
   13   *INTR( 22)   =   *INTR( 19)    *    *DATA(  2)                           
   13   *INTR( 23)   =   *DATA(  6)    -    *INTR( 22)          A(  2,  2)       
   13   *INTR( 24)   =   *INTR( 19)    *    *DATA(  3)                           
   13   *INTR( 25)   =   *DATA(  7)    -    *INTR( 24)          A(  3,  2)       
   13   *INTR( 26)   =   *INTR( 19)    *    *DATA(  4)                           
   13   *INTR( 27)   =   *DATA(  8)    -    *INTR( 26)          A(  4,  2)       
   11   *INTR( 28)   =   *INTR( 10)    *    *DATA(  9)                           
   11   *INTR( 29)   =   *DATA(  2)    *    *DATA( 10)                           
   11   *INTR( 30)   =   *INTR( 28)    +    *INTR( 29)                           
   11   *INTR( 31)   =   *DATA(  3)    *    *DATA( 11)                           
   11   *INTR( 32)   =   *INTR( 30)    +    *INTR( 31)                           
   11   *INTR( 33)   =   *DATA(  4)    *    *DATA( 12)                           
   11   *INTR( 34)   =   *INTR( 32)    +    *INTR( 33)                           
   11   *INTR( 35)   =   *INTR( 34)    /    *INTR( 11)          T                
   13   *INTR( 36)   =   *INTR( 35)    *    *INTR( 10)                           
   13   *INTR( 37)   =   *DATA(  9)    -    *INTR( 36)          A(  1,  3)       
   13   *INTR( 38)   =   *INTR( 35)    *    *DATA(  2)                           
   13   *INTR( 39)   =   *DATA( 10)    -    *INTR( 38)          A(  2,  3)       
   13   *INTR( 40)   =   *INTR( 35)    *    *DATA(  3)                           
   13   *INTR( 41)   =   *DATA( 11)    -    *INTR( 40)          A(  3,  3)       
   13   *INTR( 42)   =   *INTR( 35)    *    *DATA(  4)                           
   13   *INTR( 43)   =   *DATA( 12)    -    *INTR( 42)          A(  4,  3)       
   16   *INTR( 44)   =   *INTR( 10)    *    *DATA( 13)                           
   16   *INTR( 45)   =   *DATA(  2)    *    *DATA( 14)                           
   16   *INTR( 46)   =   *INTR( 44)    +    *INTR( 45)                           
   16   *INTR( 47)   =   *DATA(  3)    *    *DATA( 15)                           
   16   *INTR( 48)   =   *INTR( 46)    +    *INTR( 47)                           
   16   *INTR( 49)   =   *DATA(  4)    *    *DATA( 16)                           
   16   *INTR( 50)   =   *INTR( 48)    +    *INTR( 49)                           
   16   *INTR( 51)   =   *INTR( 50)    /    *INTR( 11)          T                
   18   *INTR( 52)   =   *INTR( 51)    *    *INTR( 10)                           
   18   *INTR( 53)   =   *DATA( 13)    -    *INTR( 52)          B(  1)           
   18   *INTR( 54)   =   *INTR( 51)    *    *DATA(  2)                           
   18   *INTR( 55)   =   *DATA( 14)    -    *INTR( 54)          B(  2)           
   18   *INTR( 56)   =   *INTR( 51)    *    *DATA(  3)                           
   18   *INTR( 57)   =   *DATA( 15)    -    *INTR( 56)          B(  3)           
   18   *INTR( 58)   =   *INTR( 51)    *    *DATA(  4)                           
   18   *INTR( 59)   =   *DATA( 16)    -    *INTR( 58)          B(  4)           
    5   *INTR( 60)   =   *INTR( 23)    *    *INTR( 23)                           
    5   *INTR( 61)   =   *INTR( 25)    *    *INTR( 25)                           
    5   *INTR( 62)   =   *INTR( 60)    +    *INTR( 61)                           
    5   *INTR( 63)   =   *INTR( 27)    *    *INTR( 27)                           
    5   *INTR( 64)   =   *INTR( 62)    +    *INTR( 63)          SUM              
    6   *INTR( 65)   =              SQRT    *INTR( 64)          S                
    7   *INTR( 66)   =                 -    *INTR( 65)          DIAG(  2)        
    8   *INTR( 67)   =   *INTR( 23)    +    *INTR( 65)          A(  2,  2)       
    9   *INTR( 68)   =   *INTR( 65)    *    *INTR( 67)          P                
   11   *INTR( 69)   =   *INTR( 67)    *    *INTR( 39)                           
   11   *INTR( 70)   =   *INTR( 25)    *    *INTR( 41)                           
   11   *INTR( 71)   =   *INTR( 69)    +    *INTR( 70)                           
   11   *INTR( 72)   =   *INTR( 27)    *    *INTR( 43)                           
   11   *INTR( 73)   =   *INTR( 71)    +    *INTR( 72)                           
   11   *INTR( 74)   =   *INTR( 73)    /    *INTR( 68)          T                
   13   *INTR( 75)   =   *INTR( 74)    *    *INTR( 67)                           
   13   *INTR( 76)   =   *INTR( 39)    -    *INTR( 75)          A(  2,  3)       
   13   *INTR( 77)   =   *INTR( 74)    *    *INTR( 25)                           
   13   *INTR( 78)   =   *INTR( 41)    -    *INTR( 77)          A(  3,  3)       
   13   *INTR( 79)   =   *INTR( 74)    *    *INTR( 27)                           
   13   *INTR( 80)   =   *INTR( 43)    -    *INTR( 79)          A(  4,  3)       
   16   *INTR( 81)   =   *INTR( 67)    *    *INTR( 55)                           
   16   *INTR( 82)   =   *INTR( 25)    *    *INTR( 57)                           
   16   *INTR( 83)   =   *INTR( 81)    +    *INTR( 82)                           
   16   *INTR( 84)   =   *INTR( 27)    *    *INTR( 59)                           
   16   *INTR( 85)   =   *INTR( 83)    +    *INTR( 84)                           
   16   *INTR( 86)   =   *INTR( 85)    /    *INTR( 68)          T                
   18   *INTR( 87)   =   *INTR( 86)    *    *INTR( 67)                           
   18   *INTR( 88)   =   *INTR( 55)    -    *INTR( 87)          B(  2)           
   18   *INTR( 89)   =   *INTR( 86)    *    *INTR( 25)                           
   18   *INTR( 90)   =   *INTR( 57)    -    *INTR( 89)          B(  3)           
   18   *INTR( 91)   =   *INTR( 86)    *    *INTR( 27)                           
   18   *INTR( 92)   =   *INTR( 59)    -    *INTR( 91)          B(  4)           
    5   *INTR( 93)   =   *INTR( 78)    *    *INTR( 78)                           
    5   *INTR( 94)   =   *INTR( 80)    *    *INTR( 80)                           
    5   *INTR( 95)   =   *INTR( 93)    +    *INTR( 94)          SUM              
    6   *INTR( 96)   =              SQRT    *INTR( 95)          S                
    7   *INTR( 97)   =                 -    *INTR( 96)          DIAG(  3)        
    8   *INTR( 98)   =   *INTR( 78)    +    *INTR( 96)          A(  3,  3)       
    9   *INTR( 99)   =   *INTR( 96)    *    *INTR( 98)          P                
   16   *INTR(100)   =   *INTR( 98)    *    *INTR( 90)                           
   16   *INTR(101)   =   *INTR( 80)    *    *INTR( 92)                           
   16   *INTR(102)   =   *INTR(100)    +    *INTR(101)                           
   16   *INTR(103)   =   *INTR(102)    /    *INTR( 99)          T                
   18   *INTR(104)   =   *INTR(103)    *    *INTR( 98)                           
   18   *INTR(105)   =   *INTR( 90)    -    *INTR(104)          B(  3)           
   22   *INTR(106)   =   *INTR(105)    /    *INTR( 97)          X(  3)           
   22   *INTR(107)   =   *INTR( 76)    *    *INTR(106)                           
   22   *INTR(108)   =   *INTR( 88)    -    *INTR(107)                           
   22   *INTR(109)   =   *INTR(108)    /    *INTR( 66)          X(  2)           
   22   *INTR(110)   =   *INTR( 21)    *    *INTR(109)                           
   22   *INTR(111)   =   *INTR( 37)    *    *INTR(106)                           
   22   *INTR(112)   =   *INTR(110)    +    *INTR(111)                           
   22   *INTR(113)   =   *INTR( 53)    -    *INTR(112)                           
   22   *INTR(114)   =   *INTR(113)    /    *INTR(  9)          X(  1)           


 *OUT(I) DENOTES THE I-TH OUTPUT VALUE


   *OUT( 1) IS *INTR(114)     X(  1)           
   *OUT( 2) IS *INTR(109)     X(  2)           
   *OUT( 3) IS *INTR(106)     X(  3)           
0                   MINICOMPILER VERSION 2.1.79
