
             Edinburgh IMP77 Compiler - Version 8.4


        LANG 0000
        PUSHI #0x00000000
        DEF V_0001 NIL  record, name, format=0, constant
        INIT 1
        DEF V_0002 REM  integer, function, format=1, prim-spec-indirect
        START
        DEF V_0003 P  integer, simple, format=1, 0
        DEF V_0004 Q  integer, simple, format=1, 0
        FINISH
        DEF V_0003 FLOAT  real, function, format=1, prim-spec-indirect
        START
        DEF V_0004 N  integer, simple, format=1, 0
        FINISH
        DEF V_0004 TOSTRING  string, function, format=1, prim-spec-indirect
        START
        DEF V_0005 C  integer, simple, format=1, 0
        FINISH
        DEF V_0005 ADDR  integer, function, format=1, prim-spec-indirect
        START
        DEF V_0006 P  type=0, name, format=0, 0
        FINISH
        DEF V_0006 INTEGER  integer, map, format=1, prim-spec
        START
        DEF V_0007 N  integer, simple, format=1, 0
        FINISH
        DEF V_0007 BYTEINTEGER  byte-integer, map, format=2, prim-spec
        START
        DEF V_0008 N  integer, simple, format=1, 0
        FINISH
        DEF V_0008 STRING  string, map, format=0, prim-spec
        START
        DEF V_0009 N  integer, simple, format=1, 0
        FINISH
        DEF V_0009 RECORD  record, map, format=0, prim-spec
        START
        DEF V_000a N  integer, simple, format=1, 0
        FINISH
        DEF V_000a REAL  real, map, format=1, prim-spec
        START
        DEF V_000b N  integer, simple, format=1, 0
        FINISH
        DEF V_000b LONGREAL  long-real, map, format=4, prim-spec
        START
        DEF V_000c N  integer, simple, format=1, 0
        FINISH
        DEF V_000c LENGTH  byte-integer, map, format=2, prim-spec
        START
        DEF V_000d S  string, simple, format=255, 0
        FINISH
        DEF V_000d CHARNO  byte-integer, map, format=2, prim-spec
        START
        DEF V_000e S  string, simple, format=255, 0
        DEF V_000f N  integer, simple, format=1, 0
        FINISH
        DEF V_000e INT  integer, function, format=1, prim-spec-indirect
        START
        DEF V_000f R  long-real, simple, format=4, 0
        FINISH
        DEF V_000f SHORTINTEGER  short-integer, map, format=3, prim-spec
        START
        DEF V_0010 N  integer, simple, format=1, 0
        FINISH
        DEF V_0010 TYPEOF  integer, function, format=1, external-spec-indirect
        START
        DEF V_0011 N  type=0, name, format=0, 0
        FINISH
        DEF V_0011 SIZEOF  integer, function, format=1, external-spec-indirect
        START
        DEF V_0012 N  type=0, name, format=0, 0
        FINISH
        DEF V_0012 TYPENAME  string, function, format=255, external-spec-indirect
        START
        DEF V_0013 T  integer, simple, format=1, 0
        FINISH
        DEF V_0013 ARRAYENTRYSIZE  integer, function, format=1, external-spec-indirect
        START
        DEF V_0014 N  type=0, name, format=0, 0
        FINISH
        DEF V_0014 ARRAYENTRYTYPE  integer, function, format=1, external-spec-indirect
        START
        DEF V_0015 N  type=0, name, format=0, 0
        FINISH
        DEF V_0015 ARRAYDIMENSIONS  integer, function, format=1, external-spec-indirect
        START
        DEF V_0016 N  type=0, name, format=0, 0
        FINISH
        DEF V_0016 ARRAYLOWERBOUND  integer, function, format=1, external-spec-indirect
        START
        DEF V_0017 N  type=0, name, format=0, 0
        DEF V_0018 INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_0017 ARRAYUPPERBOUND  integer, function, format=1, external-spec-indirect
        START
        DEF V_0018 N  type=0, name, format=0, 0
        DEF V_0019 INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_0018 EVENTFM  record, record-format, format=24, 0
        START
        DEF V_0000 EVENT  integer, simple, format=1, 0
        DEF V_0000 SUB  integer, simple, format=1, 0
        DEF V_0000 INFO  integer, simple, format=1, 0
        DEF V_0000 LINE  integer, simple, format=1, 0
        DEF V_0000 MESSAGE  string, simple, format=255, 0
        FINISH
        DEF V_0019 EVENT  record, map, format=24, external-spec
        START
        FINISH
        DEF V_001a INPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_001b INPUTNAME  string, function, format=255, external-spec-indirect
        START
        FINISH
        DEF V_001c SELECTINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_001d N  integer, simple, format=1, 0
        FINISH
        DEF V_001d OPENINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_001e N  integer, simple, format=1, 0
        DEF V_001f FD  string, simple, format=255, 0
        FINISH
        DEF V_001e OPENBINARYINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_001f N  integer, simple, format=1, 0
        DEF V_0020 FD  string, simple, format=255, 0
        FINISH
        DEF V_001f CLOSEINPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0020 RESETINPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0021 SEEKINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0022 DISPLACEMENT  integer, simple, format=1, 0
        DEF V_0023 STARTPOINT  integer, simple, format=1, 0
        FINISH
        DEF V_0022 TELLINPUT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0023 READSYMBOL  type=0, routine, format=0, external-spec
        START
        DEF V_0024 P  type=0, name, format=0, 0
        FINISH
        DEF V_0024 NEXTSYMBOL  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0025 READBUFFER  integer, function, format=1, external-spec-indirect
        START
        DEF V_0026 PTR  type=0, name, format=0, 0
        DEF V_0027 COUNT  integer, simple, format=1, 0
        FINISH
        DEF V_0026 PROMPT  type=0, routine, format=0, external-spec
        START
        DEF V_0027 S  string, simple, format=31, 0
        FINISH
        DEF V_0027 CURRENTPROMPT  string, function, format=31, external-spec-indirect
        START
        FINISH
        DEF V_0028 GETMAXINPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0029 FILEEND  type=0, predicate, format=0, external-spec
        START
        FINISH
        DEF V_002a ALLOWEOFEVENT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_002b BLOCKEOFEVENT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_002c OUTPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_002d OUTPUTNAME  string, function, format=255, external-spec-indirect
        START
        FINISH
        DEF V_002e SELECTOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_002f N  integer, simple, format=1, 0
        FINISH
        DEF V_002f OPENOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0030 N  integer, simple, format=1, 0
        DEF V_0031 FD  string, simple, format=255, 0
        FINISH
        DEF V_0030 OPENBINARYOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0031 N  integer, simple, format=1, 0
        DEF V_0032 FD  string, simple, format=255, 0
        FINISH
        DEF V_0031 CLOSEOUTPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0032 RESETOUTPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0033 SEEKOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0034 DISPLACEMENT  integer, simple, format=1, 0
        DEF V_0035 STARTPOINT  integer, simple, format=1, 0
        FINISH
        DEF V_0034 TELLOUTPUT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0035 PRINTSYMBOL  type=0, routine, format=0, external-spec
        START
        DEF V_0036 SYM  integer, simple, format=1, 0
        FINISH
        DEF V_0036 WRITEBUFFER  integer, function, format=1, external-spec-indirect
        START
        DEF V_0037 PTR  type=0, name, format=0, 0
        DEF V_0038 COUNT  integer, simple, format=1, 0
        FINISH
        DEF V_0037 DEBUGSYMBOL  type=0, routine, format=0, external-spec
        START
        DEF V_0038 SYM  integer, simple, format=1, 0
        FINISH
        DEF V_0038 DEBUGREAL  type=0, routine, format=0, external-spec
        START
        DEF V_0039 D  long-real, simple, format=4, 0
        FINISH
        DEF V_0039 GETMAXOUTPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_003a FLUSHOUTPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_003b SKIPSYMBOL  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_003c PRINTSTRING  type=0, routine, format=0, external-spec
        START
        DEF V_003d S  string, simple, format=255, 0
        FINISH
        DEF V_003d DEBUGSTRING  type=0, routine, format=0, external-spec
        START
        DEF V_003e S  string, simple, format=255, 0
        FINISH
        DEF V_003e DEBUGNEWLINE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_003f DEBUGSPACE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0040 DEBUGSPACES  type=0, routine, format=0, external-spec
        START
        DEF V_0041 COUNT  integer, simple, format=1, 0
        FINISH
        DEF V_0041 WRITE  type=0, routine, format=0, external-spec
        START
        DEF V_0042 V  integer, simple, format=1, 0
        DEF V_0043 P  integer, simple, format=1, 0
        FINISH
        DEF V_0042 SPACE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0043 SPACES  type=0, routine, format=0, external-spec
        START
        DEF V_0044 N  integer, simple, format=1, 0
        FINISH
        DEF V_0044 NEWLINE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0045 NEWLINES  type=0, routine, format=0, external-spec
        START
        DEF V_0046 N  integer, simple, format=1, 0
        FINISH
        DEF V_0046 PRINTFL  type=0, routine, format=0, external-spec
        START
        DEF V_0047 F  long-real, simple, format=4, 0
        DEF V_0048 DP  integer, simple, format=1, 0
        FINISH
        DEF V_0047 PRINTREAL  type=0, routine, format=0, external-spec
        START
        DEF V_0048 F  long-real, simple, format=4, 0
        DEF V_0049 SF  integer, simple, format=1, 0
        DEF V_004a PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_0048 PRINTFLOAT  type=0, routine, format=0, external-spec
        START
        DEF V_0049 F  long-real, simple, format=4, 0
        DEF V_004a SF  integer, simple, format=1, 0
        FINISH
        DEF V_0049 INTPT  integer, function, format=1, external-spec-indirect
        START
        DEF V_004a R  long-real, simple, format=4, 0
        FINISH
        DEF V_004a TOUPPER  type=0, routine, format=0, external-spec
        START
        DEF V_004b S  string, name, format=0, 0
        FINISH
        DEF V_004b TOLOWER  type=0, routine, format=0, external-spec
        START
        DEF V_004c S  string, name, format=0, 0
        FINISH
        DEF V_004c ITOS  string, function, format=255, external-spec-indirect
        START
        DEF V_004d N  integer, simple, format=1, 0
        DEF V_004e PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_004d FTOS  string, function, format=255, external-spec-indirect
        START
        DEF V_004e F  long-real, simple, format=4, 0
        DEF V_004f SF  integer, simple, format=1, 0
        DEF V_0050 PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_004e FTOSP  string, function, format=255, external-spec-indirect
        START
        DEF V_004f F  long-real, simple, format=4, 0
        DEF V_0050 PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_004f READ  type=0, routine, format=0, external-spec
        START
        DEF V_0050 PTR  type=0, name, format=0, 0
        FINISH
        DEF V_0050 SUBSTRING  string, function, format=255, external-spec-indirect
        START
        DEF V_0051 S  string, simple, format=255, 0
        DEF V_0052 FROM  integer, simple, format=1, 0
        DEF V_0053 TO  integer, simple, format=1, 0
        FINISH
        DEF V_0051 TRIM  string, function, format=255, external-spec-indirect
        START
        DEF V_0052 S  string, simple, format=255, 0
        DEF V_0053 MAX  integer, simple, format=1, 0
        FINISH
        DEF V_0052 SETDEBUG  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0053 CLEARDEBUG  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0054 DEBUGMODE  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0055 SHOWDEBUG  type=0, predicate, format=0, external-spec
        START
        FINISH
        DEF V_0056 SETDEBUGLEVEL  type=0, routine, format=0, external-spec
        START
        DEF V_0057 LVL  integer, simple, format=1, 0
        FINISH
        DEF V_0057 INT2ASCII  string, function, format=255, external-spec-indirect
        START
        DEF V_0058 NN  integer, simple, format=1, 0
        DEF V_0059 BASE  integer, simple, format=1, 0
        DEF V_005a PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_0058 FORMATNUMBER  string, function, format=255, external-spec-indirect
        START
        DEF V_0059 N  integer, simple, format=1, 0
        DEF V_005a BASE  integer, simple, format=1, 0
        DEF V_005b PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_0059 INT2HEX  string, function, format=255, external-spec-indirect
        START
        DEF V_005a NN  integer, simple, format=1, 0
        DEF V_005b PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_005a INT2BIN  string, function, format=32, external-spec-indirect
        START
        DEF V_005b NN  integer, simple, format=1, 0
        FINISH
        DEF V_005b SHORT2BIN  string, function, format=16, external-spec-indirect
        START
        DEF V_005c NN  short-integer, simple, format=3, 0
        FINISH
        DEF V_005c GETENVCOUNT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_005d GETENVNAME  string, function, format=255, external-spec-indirect
        START
        DEF V_005e INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_005e GETENV  string, function, format=255, external-spec-indirect
        START
        DEF V_005f INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_005f GETENVINDEX  integer, function, format=1, external-spec-indirect
        START
        DEF V_0060 VARNAME  string, simple, format=255, 0
        FINISH
        DEF V_0060 GETENVASSTRING  string, function, format=255, external-spec-indirect
        START
        DEF V_0061 ENVNAME  string, simple, format=255, 0
        FINISH
        DEF V_0061 GETENVASINTEGER  integer, function, format=1, external-spec-indirect
        START
        DEF V_0062 VARNAME  string, simple, format=255, 0
        FINISH
        DEF V_0062 GETARGCOUNT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0063 GETARG  string, function, format=255, external-spec-indirect
        START
        DEF V_0064 INDEX  integer, simple, format=1, 0
        FINISH
        ALIAS "_imp_cliparam"
        DEF V_0064 CLIPARAM  string, function, format=255, external-spec-indirect
        START
        FINISH
        DEF V_0065 NEW  record, map, format=0, external-spec
        START
        DEF V_0066 TEMPLATE  type=0, name, format=0, 0
        FINISH
        DEF V_0066 DISPOSE  type=0, routine, format=0, external-spec
        START
        DEF V_0067 TEMPLATE  type=0, name, format=0, 0
        FINISH
        DEF V_0067 SQRT  long-real, function, format=4, external-spec-indirect
        START
        DEF V_0068 X  long-real, simple, format=4, 0
        FINISH
        DEF V_0068 PI  long-real, function, format=4, external-spec-indirect
        START
        FINISH
        DEF V_0069 SINE  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006a X  long-real, simple, format=4, 0
        FINISH
        DEF V_006a COSINE  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006b X  long-real, simple, format=4, 0
        FINISH
        DEF V_006b LOG2  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006c X  long-real, simple, format=4, 0
        FINISH
        DEF V_006c LOG  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006d X  long-real, simple, format=4, 0
        FINISH
        DEF V_006d LOG10  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006e X  long-real, simple, format=4, 0
        FINISH
        DEF V_006e EXIT  type=0, routine, format=0, external-spec
        START
        DEF V_006f STATUS  integer, simple, format=1, 0
        FINISH
        LINE 6
     1  ! compare this to tests/imptoc/rt25a.i which broke 'Q'
     2  ! I *think* the issue may be what happens after a scope is
     3  ! closed.  Did I fail to remove one of the tables? Or did I
     4  ! remove the wrong table too soon? (i.e. an off-by-one error?)
     5  
     6  %BEGIN
        BEGIN
        LINE 7
     7  %CONSTINTEGER NMAX=4
        LINE 8
     8  %ROUTINESPEC TEST MATRIX(%LONGREALARRAYNAME A, %INTEGER N)
        DEF V_006f TESTMATRIX  type=0, routine, format=0, 0-spec
        START
        DEF V_0070 A  long-real, 12, format=4, 0
        DEF V_0071 N  integer, simple, format=1, 0
        FINISH
        LINE 9
     9  %ROUTINESPEC HOUSEHOLDER(%LONGREALARRAYNAME A,W, %INTEGER N,K)
        DEF V_0070 HOUSEHOLDER  type=0, routine, format=0, 0-spec
        START
        DEF V_0071 A  long-real, 12, format=4, 0
        DEF V_0072 W  long-real, 12, format=4, 0
        DEF V_0073 N  integer, simple, format=1, 0
        DEF V_0074 K  integer, simple, format=1, 0
        FINISH
        LINE 10
    10  %INTEGER I
        DEF V_0071 I  integer, simple, format=1, 0
        LINE 11
    11  %LONGREALARRAY A(1:NMAX,1:NMAX)
        DEF V_0072 A  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSHI #0x00000004
        PUSHI #0x00000001
        PUSHI #0x00000004
        DIM 0002 0001
        LINE 12
    12  %LONGREALARRAY W(1:NMAX)
        DEF V_0073 W  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSHI #0x00000004
        DIM 0001 0001
        LINE 13
    13        TEST MATRIX(A,NMAX)
        LINE 14
    14        PRINTSTRING("
        PUSH V_003c
        PUSHS "\nTEST MATRIX EIGENVALUES\n"
        ASSPAR
        CALL
        LINE 17
    15  TEST MATRIX EIGENVALUES
    16  ")
    17        HOUSEHOLDER(A,W,NMAX,1)
        LINE 18
    18        %CYCLE I=1,1,NMAX
        PUSH V_0071
        PUSHI #0x00000001
        PUSHI #0x00000004
        PUSHI #0x00000001
        FOR L_0003
        LINE 19
    19           PRINT FL(W(I),8)
        PUSH V_0046
        PUSH V_0073
        PUSH V_0071
        ACCESS
        ASSPAR
        PUSHI #0x00000008
        ASSPAR
        CALL
        LINE 20
    20           NEWLINE
        PUSH V_0044
        CALL
        LINE 21
    21        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 22
    22        pprofile
        LINE 23
    23        %STOP
        EVENT 0000
        LINE 47
    24  !%LONG %REAL %FN SQRT(%LONG %REAL ARG)
    25  !!***********************************************************************
    26  !!*    THIS ROUTINE SCALES WITH A LOOP AND HENCE IS VERY SLOW           *
    27  !!*    MUCHFASTER M-C DEPENDENT SCALING IS POSSIBLE                     *
    28  !!***********************************************************************
    29  !%INTEGER I,J,h,n
    30  !%LONG %REAL Y,OLD,NEW,f,ta
    31  !      %IF ARG<0.0 %THEN ARG=-ARG
    32  !      %IF ARG=0 %THEN %RESULT=0.0
    33  !      i=0
    34  !      y=arg
    35  !      y=y/16 %AND i=1+1 %WHILE y>1.0
    36  !      y=y*16.0 %AND i=i-1 %WHILE y<1/16
    37  !      %IF Y>0.34375 %THEN OLD=Y/2+0.4368 %ELSE OLD=Y/2+0.381
    38  !      %CYCLE J=0,1,14
    39  !         NEW=(OLD+Y/OLD)/2
    40  !         %IF MOD(NEW-OLD)<0.000000000000005 %THEN %EXIT
    41  !         OLD=NEW
    42  !      %REPEAT
    43  !      %IF I>0 %THEN NEW=NEW*4.0**i
    44  !      %IF i<0 %THEN new=new/(4.0**imod(i))
    45  !      %RESULT=NEW
    46  !%END
    47  %ROUTINE TEST MATRIX(%LONGREALARRAYNAME A, %INTEGER N)
        GOTO L_0000
        DEF V_006f TESTMATRIX  type=0, routine, format=0, 0
        START
        DEF V_0074 A  long-real, 12, format=4, 0
        DEF V_0075 N  integer, simple, format=1, 0
        FINISH
        LINE 48
    48  %INTEGER I,J
        DEF V_0076 I  integer, simple, format=1, 0
        DEF V_0077 J  integer, simple, format=1, 0
        LINE 49
    49  %LONGREAL T,C,D,F
        DEF V_0078 T  long-real, simple, format=4, 0
        DEF V_0079 C  long-real, simple, format=4, 0
        DEF V_007a D  long-real, simple, format=4, 0
        DEF V_007b F  long-real, simple, format=4, 0
        LINE 50
    50        C=N*(N+1)*(2*N-5)/6
        PUSH V_0079
        PUSH V_0075
        PUSH V_0075
        PUSHI #0x00000001
        ADD
        MUL
        PUSHI #0x00000002
        PUSH V_0075
        MUL
        PUSHI #0x00000005
        SUB
        MUL
        PUSHI #0x00000006
        DIVIDE
        ASSVAL
        LINE 51
    51        D=1/C
        PUSH V_007a
        PUSHI #0x00000001
        PUSH V_0079
        DIVIDE
        ASSVAL
        LINE 52
    52        A(N,N)=-D
        LINE 53
    53        %CYCLE I=1,1,N-1
        PUSH V_0076
        PUSHI #0x00000001
        PUSH V_0075
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0003
        LINE 54
    54           F=I
        PUSH V_007b
        PUSH V_0076
        ASSVAL
        LINE 55
    55           A(I,N)=D*F
        LINE 56
    56           A(N,I)=A(I,N)
        LINE 57
    57           A(I,I)=D*(C-F**2)
        LINE 58
    58           %CYCLE J=1,1,I-1
        PUSH V_0077
        PUSHI #0x00000001
        PUSH V_0076
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0006
        LINE 59
    59              T=J
        PUSH V_0078
        PUSH V_0077
        ASSVAL
        LINE 60
    60              A(I,J)=-D*F*T
        LINE 61
    61              A(J,I)=A(I,J)
        LINE 62
    62           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 63
    63        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 64
    64        %CYCLE I=1,1,N
        PUSH V_0076
        PUSHI #0x00000001
        PUSH V_0075
        PUSHI #0x00000001
        FOR L_0003
        LINE 65
    65           %CYCLE J=1,1,N
        PUSH V_0077
        PUSHI #0x00000001
        PUSH V_0075
        PUSHI #0x00000001
        FOR L_0006
        LINE 66
    66              PRINTFL(A(I,J),4)
        LINE 67
    67           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 68
    68           NEWLINE
        PUSH V_0044
        CALL
        LINE 69
    69        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 70
    70  %END
        END
        LOCATE L_0000
        LINE 71
    71  %ROUTINE HOUSEHOLDER(%LONGREALARRAYNAME A,W, %INTEGER N,K)
        GOTO L_0000
        DEF V_0070 HOUSEHOLDER  type=0, routine, format=0, 0
        START
        DEF V_0074 A  long-real, 12, format=4, 0
        DEF V_0075 W  long-real, 12, format=4, 0
        DEF V_0076 N  integer, simple, format=1, 0
        DEF V_0077 K  integer, simple, format=1, 0
        FINISH
        LINE 72
    72  %ROUTINESPEC HOUSEHOLDER TRIDIAGONALISATION(%LONGREALARRAYNAME A,B,C,
        DEF V_0078 HOUSEHOLDERTRIDIAGONALISATION  type=0, routine, format=0, 0-spec
        START
        DEF V_0079 A  long-real, 12, format=4, 0
        DEF V_007a B  long-real, 12, format=4, 0
        DEF V_007b C  long-real, 12, format=4, 0
        DEF V_007c N  integer, simple, format=1, 0
        FINISH
        LINE 74
    73      %INTEGER N)
    74  %ROUTINESPEC TRIDIBISECTION(%LONGREALARRAYNAME C,B,W, %INTEGER N,
        DEF V_0079 TRIDIBISECTION  type=0, routine, format=0, 0-spec
        START
        DEF V_007a C  long-real, 12, format=4, 0
        DEF V_007b B  long-real, 12, format=4, 0
        DEF V_007c W  long-real, 12, format=4, 0
        DEF V_007d N  integer, simple, format=1, 0
        DEF V_007e NORM  long-real, name, format=4, 0
        FINISH
        LINE 76
    75      %LONGREALNAME NORM)
    76  %ROUTINESPEC TRIDIINVERSE ITERATION(%LONGREALARRAYNAME C,B,W,Z, %INTEGER N,
        DEF V_007a TRIDIINVERSEITERATION  type=0, routine, format=0, 0-spec
        START
        DEF V_007b C  long-real, 12, format=4, 0
        DEF V_007c B  long-real, 12, format=4, 0
        DEF V_007d W  long-real, 12, format=4, 0
        DEF V_007e Z  long-real, 12, format=4, 0
        DEF V_007f N  integer, simple, format=1, 0
        DEF V_0080 NORM  long-real, simple, format=4, 0
        FINISH
        LINE 78
    77      %LONGREAL NORM)
    78  %ROUTINESPEC BACKTRANSFORMATION(%LONGREALARRAYNAME A,B,Z, %INTEGER N)
        DEF V_007b BACKTRANSFORMATION  type=0, routine, format=0, 0-spec
        START
        DEF V_007c A  long-real, 12, format=4, 0
        DEF V_007d B  long-real, 12, format=4, 0
        DEF V_007e Z  long-real, 12, format=4, 0
        DEF V_007f N  integer, simple, format=1, 0
        FINISH
        LINE 79
    79  %LONGREALARRAY Z(1:N,1:N)
        DEF V_007c Z  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSH V_0076
        PUSHI #0x00000001
        PUSH V_0076
        DIM 0002 0001
        LINE 80
    80  %LONGREALARRAY B,C(1:N)
        DEF V_007d B  long-real, array, format=4, 0
        DEF V_007e C  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSH V_0076
        DIM 0001 0002
        LINE 81
    81  %INTEGER I,J
        DEF V_007f I  integer, simple, format=1, 0
        DEF V_0080 J  integer, simple, format=1, 0
        LINE 82
    82  %LONGREAL NORM
        DEF V_0081 NORM  long-real, simple, format=4, 0
        LINE 83
    83  %CONSTLONGREAL TEN=10
        PUSHI #0x0000000a
        DEF V_0082 TEN  long-real, simple, format=4, constant-indirect
        INIT 1
        LINE 84
    84        HOUSEHOLDER TRIDIAGONALISATION(A,B,C,N)
        PUSH V_0078
        PUSH V_0074
        ASSPAR
        PUSH V_007d
        ASSPAR
        PUSH V_007e
        ASSPAR
        PUSH V_0076
        ASSPAR
        CALL
        LINE 90
    85  !      %CYCLE I=1,1,N
    86  !         PRINTFL(B(I),6)
    87  !         PRINTFL(C(I),6)
    88  !         NEWLINE
    89  !      %REPEAT
    90        TRIDIBISECTION(C,B,W,N,NORM)
        PUSH V_0079
        PUSH V_007e
        ASSPAR
        PUSH V_007d
        ASSPAR
        PUSH V_0075
        ASSPAR
        PUSH V_0076
        ASSPAR
        PUSH V_0081
        ASSPAR
        CALL
        LINE 91
    91        %IF K=2 %THENRETURN
        PUSH V_0077
        PUSHI #0x00000002
        JUMPIF # L_0004
        RETURN
        LOCATE L_0004
        LINE 92
    92        %CYCLE I=1,1,N
        PUSH V_007f
        PUSHI #0x00000001
        PUSH V_0076
        PUSHI #0x00000001
        FOR L_0003
        LINE 93
    93           PRINTFL(B(I),6)
        PUSH V_0046
        PUSH V_007d
        PUSH V_007f
        ACCESS
        ASSPAR
        PUSHI #0x00000006
        ASSPAR
        CALL
        LINE 94
    94           PRINTFL(C(I),6)
        PUSH V_0046
        PUSH V_007e
        PUSH V_007f
        ACCESS
        ASSPAR
        PUSHI #0x00000006
        ASSPAR
        CALL
        LINE 95
    95           PRINTFL(W(I),6)
        PUSH V_0046
        PUSH V_0075
        PUSH V_007f
        ACCESS
        ASSPAR
        PUSHI #0x00000006
        ASSPAR
        CALL
        LINE 96
    96           NEWLINE
        PUSH V_0044
        CALL
        LINE 97
    97        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 98
    98        TRIDIINVERSE ITERATION(C,B,W,Z,N,NORM)
        LINE 99
    99        BACKTRANSFORMATION(A,B,Z,N)
        LINE 100
   100        %CYCLE I=1,1,N
        PUSH V_007f
        PUSHI #0x00000001
        PUSH V_0076
        PUSHI #0x00000001
        FOR L_0003
        LINE 101
   101           %CYCLE J=1,1,N
        PUSH V_0080
        PUSHI #0x00000001
        PUSH V_0076
        PUSHI #0x00000001
        FOR L_0006
        LINE 102
   102              A(I,J)=Z(I,J)
        LINE 103
   103           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 104
   104        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 105
   105        %RETURN
        RETURN
        LINE 106
   106  %ROUTINE HOUSEHOLDER TRIDIAGONALISATION(%LONGREALARRAYNAME A,B,C, %INTEGER N)
        GOTO L_0000
        DEF V_0078 HOUSEHOLDERTRIDIAGONALISATION  type=0, routine, format=0, 0
        START
        DEF V_0083 A  long-real, 12, format=4, 0
        DEF V_0084 B  long-real, 12, format=4, 0
        DEF V_0085 C  long-real, 12, format=4, 0
        DEF V_0086 N  integer, simple, format=1, 0
        FINISH
        LINE 107
   107  %INTEGER I,J,K
        DEF V_0087 I  integer, simple, format=1, 0
        DEF V_0088 J  integer, simple, format=1, 0
        DEF V_0089 K  integer, simple, format=1, 0
        LINE 108
   108  %LONGREAL AI,SIGMA,H,BJ,BIGK,BI
        DEF V_008a AI  long-real, simple, format=4, 0
        DEF V_008b SIGMA  long-real, simple, format=4, 0
        DEF V_008c H  long-real, simple, format=4, 0
        DEF V_008d BJ  long-real, simple, format=4, 0
        DEF V_008e BIGK  long-real, simple, format=4, 0
        DEF V_008f BI  long-real, simple, format=4, 0
        LINE 109
   109  %LONGREALARRAY Q0(1:N-1)
        DEF V_0090 Q0  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000001
        SUB
        DIM 0001 0001
        LINE 110
   110        %CYCLE I=N,-1,3
        PUSH V_0087
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000003
        PUSH V_0086
        FOR L_0003
        LINE 111
   111           SIGMA=0
        PUSH V_008b
        PUSHI #0x00000000
        ASSVAL
        LINE 112
   112           %CYCLE K=1,1,I-1
        PUSH V_0089
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0006
        LINE 113
   113              SIGMA=SIGMA+A(I,K)**2
        LINE 114
   114           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 115
   115           AI=A(I,I-1)
        LINE 116
   116           %IF AI>=0 %THEN BI=-SQRT(SIGMA) %ELSE BI=SQRT(SIGMA)
        PUSH V_008a
        PUSHI #0x00000000
        JUMPIF < L_0007
        PUSH V_008f
        PUSH V_0067
        PUSH V_008b
        ASSPAR
        CALL
        NEGATE
        ASSVAL
        GOTO L_0006
        LOCATE L_0007
        PUSH V_008f
        PUSH V_0067
        PUSH V_008b
        ASSPAR
        CALL
        ASSVAL
        LOCATE L_0006
        LINE 117
   117           B(I-1)=BI
        PUSH V_0084
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        ACCESS
        PUSH V_008f
        ASSVAL
        LINE 118
   118        printfl(bi,5); printfl(sigma,5); newline
        PUSH V_0046
        PUSH V_008f
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 118
        PUSH V_0046
        PUSH V_008b
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 118
        PUSH V_0044
        CALL
        LINE 119
   119           %IF BI=0 %THENCONTINUE
        PUSH V_008f
        PUSHI #0x00000000
        JUMPIF # L_0007
        GOTO L_0005
        LOCATE L_0007
        LINE 120
   120           H=SIGMA-AI*BI
        PUSH V_008c
        PUSH V_008b
        PUSH V_008a
        PUSH V_008f
        MUL
        SUB
        ASSVAL
        LINE 121
   121           A(I,I-1)=AI-BI
        LINE 122
   122           %CYCLE J=I-1,-1,1
        PUSH V_0088
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        FOR L_0006
        LINE 123
   123              BJ=0
        PUSH V_008d
        PUSHI #0x00000000
        ASSVAL
        LINE 124
   124              %CYCLE K=I-1,-1,J
        PUSH V_0089
        PUSHI #0x00000001
        NEGATE
        PUSH V_0088
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        FOR L_0009
        LINE 125
   125                 BJ=BJ+A(K,J)*A(I,K)
        LINE 126
   126              %REPEAT
        REPEAT L_0009
        LOCATE L_000a
        LINE 127
   127              %CYCLE K=J-1,-1,1
        PUSH V_0089
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0088
        PUSHI #0x00000001
        SUB
        FOR L_0009
        LINE 128
   128                 BJ=BJ+A(J,K)*A(I,K)
        LINE 129
   129              %REPEAT
        REPEAT L_0009
        LOCATE L_000a
        LINE 130
   130              Q0(J)=BJ/H
        PUSH V_0090
        PUSH V_0088
        ACCESS
        PUSH V_008d
        PUSH V_008c
        DIVIDE
        ASSVAL
        LINE 131
   131           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 132
   132           BIGK=0
        PUSH V_008e
        PUSHI #0x00000000
        ASSVAL
        LINE 133
   133           %CYCLE J=I-1,-1,1
        PUSH V_0088
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        FOR L_0006
        LINE 134
   134              BIGK=BIGK+A(I,J)*Q0(J)
        LINE 135
   135           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 136
   136           BIGK=BIGK/(2*H)
        PUSH V_008e
        PUSH V_008e
        PUSHI #0x00000002
        PUSH V_008c
        MUL
        DIVIDE
        ASSVAL
        LINE 137
   137           %CYCLE J=I-1,-1,1
        PUSH V_0088
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        FOR L_0006
        LINE 138
   138              Q0(J)=Q0(J)-BIGK*A(I,J)
        LINE 139
   139           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 140
   140           %CYCLE J=I-1,-1,1
        PUSH V_0088
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        FOR L_0006
        LINE 141
   141              %CYCLE K=J,-1,1
        PUSH V_0089
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0088
        FOR L_0009
        LINE 142
   142                 A(J,K)=A(J,K)-A(I,J)*Q0(K)-A(I,K)*Q0(J)
        LINE 143
   143              %REPEAT
        REPEAT L_0009
        LOCATE L_000a
        LINE 144
   144           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 145
   145        %REPEAT
        LOCATE L_0005
        REPEAT L_0003
        LOCATE L_0004
        LINE 146
   146        %CYCLE I=N,-1,1
        PUSH V_0087
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0086
        FOR L_0003
        LINE 147
   147           C(I)=A(I,I)
        LINE 148
   148        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 149
   149        B(1)=A(2,1)
        LINE 150
   150        B(N)=0
        PUSH V_0084
        PUSH V_0086
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 151
   151  %END
        END
        LOCATE L_0000
        LINE 152
   152  %ROUTINE TRIDIINVERSE ITERATION(%LONGREALARRAYNAME C,B,W,Z, %INTEGER N,
        GOTO L_0000
        DEF V_007a TRIDIINVERSEITERATION  type=0, routine, format=0, 0
        START
        DEF V_0083 C  long-real, 12, format=4, 0
        DEF V_0084 B  long-real, 12, format=4, 0
        DEF V_0085 W  long-real, 12, format=4, 0
        DEF V_0086 Z  long-real, 12, format=4, 0
        DEF V_0087 N  integer, simple, format=1, 0
        DEF V_0088 NORM  long-real, simple, format=4, 0
        FINISH
        LINE 154
   153      %LONGREAL NORM)
   154  %INTEGER I,J
        DEF V_0089 I  integer, simple, format=1, 0
        DEF V_008a J  integer, simple, format=1, 0
        LINE 155
   155  %LONGREAL BI,BI1,Z1,LAMBDA,U,S,V,H,EPS,ETA
        DEF V_008b BI  long-real, simple, format=4, 0
        DEF V_008c BI1  long-real, simple, format=4, 0
        DEF V_008d Z1  long-real, simple, format=4, 0
        DEF V_008e LAMBDA  long-real, simple, format=4, 0
        DEF V_008f U  long-real, simple, format=4, 0
        DEF V_0090 S  long-real, simple, format=4, 0
        DEF V_0091 V  long-real, simple, format=4, 0
        DEF V_0092 H  long-real, simple, format=4, 0
        DEF V_0093 EPS  long-real, simple, format=4, 0
        DEF V_0094 ETA  long-real, simple, format=4, 0
        LINE 156
   156  %LONGREALARRAY M,P,Q,R,INT(1:N)
        DEF V_0095 M  long-real, array, format=4, 0
        DEF V_0096 P  long-real, array, format=4, 0
        DEF V_0097 Q  long-real, array, format=4, 0
        DEF V_0098 R  long-real, array, format=4, 0
        DEF V_0099 INT  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSH V_0087
        DIM 0001 0005
        LINE 157
   157  %LONGREALARRAY X(1:N+2)
        DEF V_009a X  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000002
        ADD
        DIM 0001 0001
        LINE 158
   158        LAMBDA=NORM
        PUSH V_008e
        PUSH V_0088
        ASSVAL
        LINE 159
   159        EPS=NORM/(TEN**11)
        LINE 160
   160        %CYCLE J=1,1,N
        PUSH V_008a
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        FOR L_0003
        LINE 161
   161           LAMBDA=LAMBDA-EPS
        PUSH V_008e
        PUSH V_008e
        PUSH V_0093
        SUB
        ASSVAL
        LINE 162
   162           %IF W(J)<LAMBDA %THEN LAMBDA=W(J)
        PUSH V_0085
        PUSH V_008a
        ACCESS
        PUSH V_008e
        JUMPIF >= L_0007
        PUSH V_008e
        PUSH V_0085
        PUSH V_008a
        ACCESS
        ASSVAL
        LOCATE L_0007
        LINE 163
   163           U=C(1)-LAMBDA; V=B(1)
        PUSH V_008f
        PUSH V_0083
        PUSHI #0x00000001
        ACCESS
        PUSH V_008e
        SUB
        ASSVAL
        LINE 163
        PUSH V_0091
        PUSH V_0084
        PUSHI #0x00000001
        ACCESS
        ASSVAL
        LINE 164
   164           %IF V=0 %THEN V=EPS
        PUSH V_0091
        PUSHI #0x00000000
        JUMPIF # L_0007
        PUSH V_0091
        PUSH V_0093
        ASSVAL
        LOCATE L_0007
        LINE 165
   165           %CYCLE I=1,1,N-1
        PUSH V_0089
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0006
        LINE 166
   166              BI=B(I)
        PUSH V_008b
        PUSH V_0084
        PUSH V_0089
        ACCESS
        ASSVAL
        LINE 167
   167              %IF BI=0 %THEN BI=EPS
        PUSH V_008b
        PUSHI #0x00000000
        JUMPIF # L_000a
        PUSH V_008b
        PUSH V_0093
        ASSVAL
        LOCATE L_000a
        LINE 168
   168              BI1=B(I+1)
        PUSH V_008c
        PUSH V_0084
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        ASSVAL
        LINE 169
   169              %IF BI1=0 %THEN BI1=EPS
        PUSH V_008c
        PUSHI #0x00000000
        JUMPIF # L_000a
        PUSH V_008c
        PUSH V_0093
        ASSVAL
        LOCATE L_000a
        LINE 170
   170              %IF MOD(U)>MOD(BI) %THENSTART
        LINE 171
   171                 M(I+1)=BI/U
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_008b
        PUSH V_008f
        DIVIDE
        ASSVAL
        LINE 172
   172                 P(I)=U; Q(I)=V; R(I)=0
        PUSH V_0096
        PUSH V_0089
        ACCESS
        PUSH V_008f
        ASSVAL
        LINE 172
        PUSH V_0097
        PUSH V_0089
        ACCESS
        PUSH V_0091
        ASSVAL
        LINE 172
        PUSH V_0098
        PUSH V_0089
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 173
   173                 U=C(I+1)-LAMBDA-M(I+1)*V
        PUSH V_008f
        PUSH V_0083
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_008e
        SUB
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_0091
        MUL
        SUB
        ASSVAL
        LINE 174
   174                 V=BI1; INT(I+1)=-1
        PUSH V_0091
        PUSH V_008c
        ASSVAL
        LINE 174
        PUSH V_0099
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSHI #0x00000001
        NEGATE
        ASSVAL
        LINE 176
   175  
   176              %FINISHELSESTART
        GOTO L_0009
        LOCATE L_000a
        LINE 177
   177                 M(I+1)=U/BI
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_008f
        PUSH V_008b
        DIVIDE
        ASSVAL
        LINE 178
   178                 %IF M(I+1)=0 %AND BI<=EPS %THEN M(I+1)=1
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSHI #0x00000000
        JUMPIF # L_000d
        PUSH V_008b
        PUSH V_0093
        JUMPIF > L_000d
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSHI #0x00000001
        ASSVAL
        LOCATE L_000d
        LINE 179
   179                 P(I)=BI; Q(I)=C(I+1)-LAMBDA
        PUSH V_0096
        PUSH V_0089
        ACCESS
        PUSH V_008b
        ASSVAL
        LINE 179
        PUSH V_0097
        PUSH V_0089
        ACCESS
        PUSH V_0083
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_008e
        SUB
        ASSVAL
        LINE 180
   180                 R(I)=BI1
        PUSH V_0098
        PUSH V_0089
        ACCESS
        PUSH V_008c
        ASSVAL
        LINE 181
   181                 U=V-M(I+1)*Q(I)
        PUSH V_008f
        PUSH V_0091
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_0097
        PUSH V_0089
        ACCESS
        MUL
        SUB
        ASSVAL
        LINE 182
   182                 V=-M(I+1)*R(I)
        PUSH V_0091
        PUSH V_0095
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_0098
        PUSH V_0089
        ACCESS
        MUL
        NEGATE
        ASSVAL
        LINE 183
   183                 INT(I+1)=1
        PUSH V_0099
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSHI #0x00000001
        ASSVAL
        LINE 184
   184              %FINISH
        LOCATE L_0009
        LINE 185
   185           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 186
   186           P(N)=U; Q(N)=0; R(N)=0
        PUSH V_0096
        PUSH V_0087
        ACCESS
        PUSH V_008f
        ASSVAL
        LINE 186
        PUSH V_0097
        PUSH V_0087
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 186
        PUSH V_0098
        PUSH V_0087
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 187
   187           X(N+1)=0; X(N+2)=0; H=0; ETA=1/N
        PUSH V_009a
        PUSH V_0087
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 187
        PUSH V_009a
        PUSH V_0087
        PUSHI #0x00000002
        ADD
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 187
        PUSH V_0092
        PUSHI #0x00000000
        ASSVAL
        LINE 187
        PUSH V_0094
        PUSHI #0x00000001
        PUSH V_0087
        DIVIDE
        ASSVAL
        LINE 188
   188           %CYCLE I=N,-1,1
        PUSH V_0089
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0087
        FOR L_0006
        LINE 189
   189              U=ETA-Q(I)*X(I+1)-R(I)*X(I+2)
        PUSH V_008f
        PUSH V_0094
        PUSH V_0097
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        MUL
        SUB
        PUSH V_0098
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000002
        ADD
        ACCESS
        MUL
        SUB
        ASSVAL
        LINE 190
   190              %IF P(I)\=0 %THEN X(I)=U/P(I) %ELSE X(I)=U/EPS
        PUSH V_0096
        PUSH V_0089
        ACCESS
        PUSHI #0x00000000
        JUMPIF = L_000a
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_008f
        PUSH V_0096
        PUSH V_0089
        ACCESS
        DIVIDE
        ASSVAL
        GOTO L_0009
        LOCATE L_000a
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_008f
        PUSH V_0093
        DIVIDE
        ASSVAL
        LOCATE L_0009
        LINE 191
   191              H=H+MOD(X(I))
        LINE 192
   192           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 193
   193           H=1/H
        PUSH V_0092
        PUSHI #0x00000001
        PUSH V_0092
        DIVIDE
        ASSVAL
        LINE 194
   194           %CYCLE I=1,1,N
        PUSH V_0089
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        FOR L_0006
        LINE 195
   195              X(I)=X(I)*H
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_0092
        MUL
        ASSVAL
        LINE 196
   196           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 197
   197           %CYCLE I=2,1,N
        PUSH V_0089
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000002
        FOR L_0006
        LINE 198
   198              %IF INT(I)<=0 %THEN X(I)=X(I)-M(I)*X(I-1) %ELSESTART
        PUSH V_0099
        PUSH V_0089
        ACCESS
        PUSHI #0x00000000
        JUMPIF > L_000a
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_0095
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        ACCESS
        MUL
        SUB
        ASSVAL
        GOTO L_0009
        LOCATE L_000a
        LINE 199
   199                 U=X(I-1)
        PUSH V_008f
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        ACCESS
        ASSVAL
        LINE 200
   200                 X(I-1)=X(I)
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        ACCESS
        PUSH V_009a
        PUSH V_0089
        ACCESS
        ASSVAL
        LINE 201
   201                 X(I)=U-M(I)*X(I-1)
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_008f
        PUSH V_0095
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        ACCESS
        MUL
        SUB
        ASSVAL
        LINE 202
   202              %FINISH
        LOCATE L_0009
        LINE 203
   203           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 204
   204           H=0
        PUSH V_0092
        PUSHI #0x00000000
        ASSVAL
        LINE 205
   205           %CYCLE I=N,-1,1
        PUSH V_0089
        PUSHI #0x00000001
        NEGATE
        PUSHI #0x00000001
        PUSH V_0087
        FOR L_0006
        LINE 206
   206              U=X(I)-Q(I)*X(I+1)-R(I)*X(I+2)
        PUSH V_008f
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_0097
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000001
        ADD
        ACCESS
        MUL
        SUB
        PUSH V_0098
        PUSH V_0089
        ACCESS
        PUSH V_009a
        PUSH V_0089
        PUSHI #0x00000002
        ADD
        ACCESS
        MUL
        SUB
        ASSVAL
        LINE 207
   207              %IF P(I)=0 %THEN X(I)=U/EPS %ELSE X(I)=U/P(I)
        PUSH V_0096
        PUSH V_0089
        ACCESS
        PUSHI #0x00000000
        JUMPIF # L_000a
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_008f
        PUSH V_0093
        DIVIDE
        ASSVAL
        GOTO L_0009
        LOCATE L_000a
        PUSH V_009a
        PUSH V_0089
        ACCESS
        PUSH V_008f
        PUSH V_0096
        PUSH V_0089
        ACCESS
        DIVIDE
        ASSVAL
        LOCATE L_0009
        LINE 208
   208              H=H+X(I)**2
        LINE 209
   209           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 210
   210           H=1/SQRT(H)
        PUSH V_0092
        PUSHI #0x00000001
        PUSH V_0067
        PUSH V_0092
        ASSPAR
        CALL
        DIVIDE
        ASSVAL
        LINE 211
   211           %CYCLE I=1,1,N
        PUSH V_0089
        PUSHI #0x00000001
        PUSH V_0087
        PUSHI #0x00000001
        FOR L_0006
        LINE 212
   212              Z(J,I)=X(I)*H
        LINE 213
   213           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 214
   214        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 215
   215  %END
        END
        LOCATE L_0000
        LINE 216
   216  %ROUTINE TRIDIBISECTION(%LONGREALARRAYNAME C,B,W, %INTEGER N,
        GOTO L_0000
        DEF V_0079 TRIDIBISECTION  type=0, routine, format=0, 0
        START
        DEF V_0083 C  long-real, 12, format=4, 0
        DEF V_0084 B  long-real, 12, format=4, 0
        DEF V_0085 W  long-real, 12, format=4, 0
        DEF V_0086 N  integer, simple, format=1, 0
        DEF V_0087 NORM  long-real, name, format=4, 0
        FINISH
        LINE 218
   217      %LONGREALNAME NORM)
   218  %LONGREAL L,G,H,LAMBDA,P1,Q1,Y
        DEF V_0088 L  long-real, simple, format=4, 0
        DEF V_0089 G  long-real, simple, format=4, 0
        DEF V_008a H  long-real, simple, format=4, 0
        DEF V_008b LAMBDA  long-real, simple, format=4, 0
        DEF V_008c P1  long-real, simple, format=4, 0
        DEF V_008d Q1  long-real, simple, format=4, 0
        DEF V_008e Y  long-real, simple, format=4, 0
        LINE 219
   219  %INTEGER I,J,K,A1,A2
        DEF V_008f I  integer, simple, format=1, 0
        DEF V_0090 J  integer, simple, format=1, 0
        DEF V_0091 K  integer, simple, format=1, 0
        DEF V_0092 A1  integer, simple, format=1, 0
        DEF V_0093 A2  integer, simple, format=1, 0
        LINE 220
   220  %LONGREALARRAY P(1:N)
        DEF V_0094 P  long-real, array, format=4, 0
        PUSHI #0x00000001
        PUSH V_0086
        DIM 0001 0001
        LINE 221
   221        P(1)=0
        PUSH V_0094
        PUSHI #0x00000001
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 222
   222        NORM=MOD(C(1))+MOD(B(1))
        LINE 223
   223        %CYCLE I=2,1,N
        PUSH V_008f
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000002
        FOR L_0003
        LINE 224
   224           L=MOD(B(I-1))+MOD(C(I))+MOD(B(I))
        LINE 225
   225           %IF L>NORM %THEN NORM=1
        PUSH V_0088
        PUSH V_0087
        JUMPIF <= L_0007
        PUSH V_0087
        PUSHI #0x00000001
        ASSVAL
        LOCATE L_0007
        LINE 226
   226        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 227
   227        %CYCLE I=1,1,N-1
        PUSH V_008f
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0003
        LINE 228
   228           %IF B(I)=0 %THEN P(I+1)=NORM*NORM/TEN**23 %ELSE P(I+1)=B(I)**2
        LINE 229
   229        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 230
   230        %CYCLE K=1,1,N
        PUSH V_0091
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000001
        FOR L_0003
        LINE 231
   231           G=NORM; H=-NORM
        PUSH V_0089
        PUSH V_0087
        ASSVAL
        LINE 231
        PUSH V_008a
        PUSH V_0087
        NEGATE
        ASSVAL
        LINE 232
   232           %CYCLE J=1,1,39
        PUSH V_0090
        PUSHI #0x00000001
        PUSHI #0x00000027
        PUSHI #0x00000001
        FOR L_0006
        LINE 233
   233              LAMBDA=(G+H)/2
        PUSH V_008b
        PUSH V_0089
        PUSH V_008a
        ADD
        PUSHI #0x00000002
        DIVIDE
        ASSVAL
        LINE 234
   234              P1=0; Q1=1; A1=0
        PUSH V_008c
        PUSHI #0x00000000
        ASSVAL
        LINE 234
        PUSH V_008d
        PUSHI #0x00000001
        ASSVAL
        LINE 234
        PUSH V_0092
        PUSHI #0x00000000
        ASSVAL
        LINE 235
   235              %CYCLE I=1,1,N
        PUSH V_008f
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000001
        FOR L_0009
        LINE 236
   236                 Y=(C(I)-LAMBDA)*Q1-P(I)*P1
        PUSH V_008e
        PUSH V_0083
        PUSH V_008f
        ACCESS
        PUSH V_008b
        SUB
        PUSH V_008d
        MUL
        PUSH V_0094
        PUSH V_008f
        ACCESS
        PUSH V_008c
        MUL
        SUB
        ASSVAL
        LINE 238
   237  !                  %if k=3 %and j<4 %start
   238                 printstring("$"); printfl(p1,5); printfl(q1,5); printfl(y,5); newline
        PUSH V_003c
        PUSHS "$"
        ASSPAR
        CALL
        LINE 238
        PUSH V_0046
        PUSH V_008c
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 238
        PUSH V_0046
        PUSH V_008d
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 238
        PUSH V_0046
        PUSH V_008e
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 238
        PUSH V_0044
        CALL
        LINE 240
   239  !             %finish
   240                 P1=Q1; Q1=Y
        PUSH V_008c
        PUSH V_008d
        ASSVAL
        LINE 240
        PUSH V_008d
        PUSH V_008e
        ASSVAL
        LINE 241
   241                 %IF (P1>=0 %AND Q1>=0) %OR (P1<0 %AND Q1<0) %THEN %start
        PUSH V_008c
        PUSHI #0x00000000
        JUMPIF < L_000f
        PUSH V_008d
        PUSHI #0x00000000
        JUMPIF >= L_000e
        LOCATE L_000f
        PUSH V_008c
        PUSHI #0x00000000
        JUMPIF >= L_000d
        PUSH V_008d
        PUSHI #0x00000000
        JUMPIF >= L_000d
        LOCATE L_000e
        LINE 242
   242                    A1=A1+1
        PUSH V_0092
        PUSH V_0092
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 244
   243  !                  %if k=3 %and j<4 %start
   244                       printstring("+");write(a1,1); printfl(p1,5); printfl(q1,5); printfl(lambda,5); newline
        PUSH V_003c
        PUSHS "+"
        ASSPAR
        CALL
        LINE 244
        PUSH V_0041
        PUSH V_0092
        ASSPAR
        PUSHI #0x00000001
        ASSPAR
        CALL
        LINE 244
        PUSH V_0046
        PUSH V_008c
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 244
        PUSH V_0046
        PUSH V_008d
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 244
        PUSH V_0046
        PUSH V_008b
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 244
        PUSH V_0044
        CALL
        LINE 246
   245  !                  %finish
   246                 %finish
        LOCATE L_000d
        LINE 247
   247              %REPEAT
        REPEAT L_0009
        LOCATE L_000a
        LINE 248
   248              %IF Q1=0 %AND P1>0 %THEN %start
        PUSH V_008d
        PUSHI #0x00000000
        JUMPIF # L_000a
        PUSH V_008c
        PUSHI #0x00000000
        JUMPIF <= L_000a
        LINE 249
   249                A1=A1-1
        PUSH V_0092
        PUSH V_0092
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 250
   250                    %if k=3 %and j<4 %start
        PUSH V_0091
        PUSHI #0x00000003
        JUMPIF # L_000d
        PUSH V_0090
        PUSHI #0x00000004
        JUMPIF >= L_000d
        LINE 251
   251                       printstring("-");write(a1,1); printfl(p1,5); printfl(q1,5); newline
        PUSH V_003c
        PUSHS "-"
        ASSPAR
        CALL
        LINE 251
        PUSH V_0041
        PUSH V_0092
        ASSPAR
        PUSHI #0x00000001
        ASSPAR
        CALL
        LINE 251
        PUSH V_0046
        PUSH V_008c
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 251
        PUSH V_0046
        PUSH V_008d
        ASSPAR
        PUSHI #0x00000005
        ASSPAR
        CALL
        LINE 251
        PUSH V_0044
        CALL
        LINE 252
   252                    %finish
        LOCATE L_000d
        LINE 253
   253              %finish
        LOCATE L_000a
        LINE 254
   254              %IF A1>=K %THEN H=LAMBDA %ELSE G=LAMBDA
        PUSH V_0092
        PUSH V_0091
        JUMPIF < L_000a
        PUSH V_008a
        PUSH V_008b
        ASSVAL
        GOTO L_0009
        LOCATE L_000a
        PUSH V_0089
        PUSH V_008b
        ASSVAL
        LOCATE L_0009
        LINE 255
   255              %if k=3 %and j<4 %start
        PUSH V_0091
        PUSHI #0x00000003
        JUMPIF # L_000a
        PUSH V_0090
        PUSHI #0x00000004
        JUMPIF >= L_000a
        LINE 256
   256                printstring("/"); write(a1,2); write(k,2); printfl(h,4); printfl(g,4); printfl(lambda,4); newline
        PUSH V_003c
        PUSHS "/"
        ASSPAR
        CALL
        LINE 256
        PUSH V_0041
        PUSH V_0092
        ASSPAR
        PUSHI #0x00000002
        ASSPAR
        CALL
        LINE 256
        PUSH V_0041
        PUSH V_0091
        ASSPAR
        PUSHI #0x00000002
        ASSPAR
        CALL
        LINE 256
        PUSH V_0046
        PUSH V_008a
        ASSPAR
        PUSHI #0x00000004
        ASSPAR
        CALL
        LINE 256
        PUSH V_0046
        PUSH V_0089
        ASSPAR
        PUSHI #0x00000004
        ASSPAR
        CALL
        LINE 256
        PUSH V_0046
        PUSH V_008b
        ASSPAR
        PUSHI #0x00000004
        ASSPAR
        CALL
        LINE 256
        PUSH V_0044
        CALL
        LINE 257
   257              %finish
        LOCATE L_000a
        LINE 258
   258           %REPEAT
        REPEAT L_0006
        LOCATE L_0007
        LINE 259
   259           W(K)=(G+H)/2
        PUSH V_0085
        PUSH V_0091
        ACCESS
        PUSH V_0089
        PUSH V_008a
        ADD
        PUSHI #0x00000002
        DIVIDE
        ASSVAL
        LINE 260
   260        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 261
   261        %RETURN
        RETURN
        LINE 262
   262  %END
        END
        LOCATE L_0000
        LINE 263
   263  %ROUTINE BACKTRANSFORMATION(%LONGREALARRAYNAME A,B,Z, %INTEGER N)
        GOTO L_0000
        DEF V_007b BACKTRANSFORMATION  type=0, routine, format=0, 0
        START
        DEF V_0083 A  long-real, 12, format=4, 0
        DEF V_0084 B  long-real, 12, format=4, 0
        DEF V_0085 Z  long-real, 12, format=4, 0
        DEF V_0086 N  integer, simple, format=1, 0
        FINISH
        LINE 264
   264  %INTEGER I,J,K
        DEF V_0087 I  integer, simple, format=1, 0
        DEF V_0088 J  integer, simple, format=1, 0
        DEF V_0089 K  integer, simple, format=1, 0
        LINE 265
   265  %LONGREAL S
        DEF V_008a S  long-real, simple, format=4, 0
        LINE 266
   266        %CYCLE J=1,1,N
        PUSH V_0088
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000001
        FOR L_0003
        LINE 267
   267           %CYCLE K=3,1,N
        PUSH V_0089
        PUSHI #0x00000001
        PUSH V_0086
        PUSHI #0x00000003
        FOR L_0006
        LINE 268
   268              %IF B(K-1)=0 %THENCONTINUE
        PUSH V_0084
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        ACCESS
        PUSHI #0x00000000
        JUMPIF # L_000a
        GOTO L_0008
        LOCATE L_000a
        LINE 269
   269              S=0
        PUSH V_008a
        PUSHI #0x00000000
        ASSVAL
        LINE 270
   270              %CYCLE I=1,1,K-1
        PUSH V_0087
        PUSHI #0x00000001
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0009
        LINE 271
   271                 S=S+A(K,I)*Z(J,I)
        LINE 272
   272              %REPEAT
        REPEAT L_0009
        LOCATE L_000a
        LINE 273
   273              S=S/(B(K-1)*A(K,K-1))
        LINE 274
   274              %CYCLE I=1,1,K-1
        PUSH V_0087
        PUSHI #0x00000001
        PUSH V_0089
        PUSHI #0x00000001
        SUB
        PUSHI #0x00000001
        FOR L_0009
        LINE 275
   275                 Z(J,I)=Z(J,I)+S*A(K,I)
        LINE 276
   276              %REPEAT
        REPEAT L_0009
        LOCATE L_000a
        LINE 277
   277           %REPEAT
        LOCATE L_0008
        REPEAT L_0006
        LOCATE L_0007
        LINE 278
   278        %REPEAT
        REPEAT L_0003
        LOCATE L_0004
        LINE 279
   279  %END
        END
        LOCATE L_0000
        LINE 280
   280  %END
        END
        LOCATE L_0000
        LINE 281
   281  %ENDOFPROGRAM
        END
        END
