  STMT 
 NUMBER         *** STATEMENT ***
          C USE THE NORMAL EQUATIONS TO SOLVE THE LINEAR LEAST SQUARES PROBLEM.           
    1           TEST (M = 4, N = 3)                                                       
    2           DIMENSION (A(M,N), T(N,N), L(N,N), B(M), S(N), X(N), Y(N))                
    3           INPUT (A,B)                                                               
          C                                                                               
          C FORM THE NORMAL EQUATIONS.                                                    
    4           FOR I = 1 TO N BY 1                                                       
    5               FOR J = 1 TO I BY 1                                                   
    6                   T(I,J) = SUMMATION(A(K,I)*A(K,J),K=1 TO M)                        
    7                   END (J)                                                           
    8               S(I) = SUMMATION(A(K,I)*B(K), K = 1 TO M)                             
    9               END (I)                                                               
          C                                                                               
          C ===================================================================           
   10           COMPOSITION                                                               
          C ===================================================================           
          C                                                                               
          C USE THE CHOLESKY METHOD.  FACTOR T AS L*(L TRANSPOSE).                        
   11           FOR I = 1 TO N BY 1                                                       
   12               FOR J = 1 TO I-1 BY 1                                                 
   13                   TEMP = T(I,J) - SUMMATION(L(I,K)*L(J,K), K = 1 TO J-1)            
   14                   L(I,J) = TEMP/L(J,J)                                              
   15                   END (J)                                                           
   16               TEMP = T(I,I) - SUMMATION(L(I,K)*L(I,K),K = 1 TO I-1)                 
   17               L(I,I) = SQRT (TEMP)                                                  
   18               END (I)                                                               
          C                                                                               
          C FORWARD SUBSTITUTION.  SOLVE L*Y = B.                                         
   19           FOR I = 1 TO N BY 1                                                       
   20               Y(I) = (S(I) - SUMMATION(L(I,J)*Y(J), J = 1 TO I-1))/L(I,I)           
   21               END (I)                                                               
          C                                                                               
          C BACK SUBSTITUTION.  SOLVE (L TRANSPOSE)*X = Y.                                
   22           FOR I = N TO 1 BY -1                                                      
   23               X(I) = (Y(I) - SUMMATION(L(J,I)*X(J), J = I+1 TO N))/L(I,I)           
   24               END (I)                                                               
   25           OUTPUT (X)                                                                
   26           *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


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


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


   *OUT( 1) IS *INTR(100)     X(  1)           
   *OUT( 2) IS *INTR( 95)     X(  2)           
   *OUT( 3) IS *INTR( 92)     X(  3)           
0                   MINICOMPILER VERSION 2.1.79
