For a problem this long, perhaps it should be useful if you include a length and checksum table in your article, so that the user has an easy way to check if everything was keyed in correctly:

LABEL LENGTH CHECKSUM

------------------------

L 45 C89C

M 432 A45A

D 210 038E

V 150 9987

X 27 6AB0

A preference for *roman numerals* when choosing the labels or just a coincidence? I haven't checked your program with other problems, so the table should be checked against your own.

By the way, my n-order complex equation solver for the CASIO PB-700 finds the same answers to your test problem in 14.5 seconds.

Best regards,

Gerson.

-----------------------------------------------------------------------------------------------
10 CLS :CLEAR :INP T=R(L,J):R(L,J)=R(I, D=I(I,I):GOSUB 290

UT "Order: ",N:N=N-1 J):R(I,J)=T 210 R(I,N+1)=X:I(I,

:DIM R(N,N+1),I(N,N+ 100 T=I(L,J):I(L,J) N+1)=Y:NEXT I:BEEP :

1) =I(I,J):I(I,J)=T:NEX FOR I=0 TO N:CLS

20 FOR I=0 TO N:FO T J 220 PRINT "XR(";I+1

R J=0 TO N+1 110 FOR J=I+1 TO N ;"):";USING"#####.##

30 CLS :PRINT "R(" 120 A=R(J,I):B=I(J, ####";R(I,N+1);:LOCA

;I+1;",";J+1;"):";:L I):C=P:D=Q:GOSUB 290 TE 0,2

OCATE 0,2:PRINT "I(" :F=X:G=Y 230 PRINT "XI(";I+1

;I+1;",";J+1;"):"; 130 FOR K=I+1 TO N+ ;"):";USING"#####.##

40 LOCATE 12,0:INP 1:A=F:B=G:C=R(I,K):D ####";I(I,N+1);

UT "",R(I,J):LOCATE =I(I,K):GOSUB 280 240 X$=INKEY$:IF X$

12,2:INPUT "",I(I,J) 140 R(J,K)=R(J,K)-X ="" THEN 240 ELSE NE

:NEXT J:NEXT I :I(J,K)=I(J,K)-Y:NEX XT I

50 CLS :PRINT "Wai T K:NEXT J:NEXT I 250 IF X$=" " THEN

t...":FOR I=0 TO N-1 150 A=R(N,N):B=I(N, 10 ELSE CLS :END

:P=R(I,I):Q=I(I,I):L N):GOSUB 300:IF M<1E 260 CLS :BEEP :BEEP

=0 -10 THEN 260 :PRINT "No solution

60 FOR J=I+1 TO N: 160 FOR I=N TO 0 ST !"

A=R(J,I):B=I(J,I):GO EP -1:R=0:S=0:J=I 270 X$=INKEY$:IF X$

SUB 300:T=M:A=P:B=Q 170 IF J>N-1 THEN 2 ="" THEN 270 ELSE 25

70 GOSUB 300:IF T> 00 0

M THEN P=R(J,I):Q=I( 180 J=J+1:A=R(I,J): 280 X=A*C-B*D:Y=A*D

J,I):L=J B=I(I,J):C=R(J,N+1): +B*C:RETURN

80 NEXT J:A=P:B=Q: D=I(J,N+1) 290 M=C*C+D*D:X=(A*

GOSUB 300:IF M<1E-10 190 GOSUB 280:R=R+X C+B*D)/M:Y=(B*C-A*D)

THEN 260 ELSE IF L= :S=S+Y:GOTO 170 /M:RETURN

0 THEN 110 200 A=R(I,N+1)-R:B= 300 M=A*A+B*B:RETUR

90 FOR J=I TO N+1: I(I,N+1)-S:C=R(I,I): N

-----------------------------------------------------------------------------------------------

1 < N < 30 (with all three 4KB memory packs in place)

_{
Edited to correct a typo in line 130.
}

*Edited: 5 July 2007, 5:05 p.m. *