Re: A Third Order Complex Linear Equation Solver for the hp 33s Message #4 Posted by Gerson W. Barbosa on 4 July 2007, 3:41 p.m., in response to message #1 by Palmer O. Hanson, Jr.
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 norder complex equation solver for the CASIO PB700 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=N1 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 N1 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>N1 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*CB*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<1E10 190 GOSUB 280:R=R+X C+B*D)/M:Y=(B*CA*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.
