1  REM ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  **********************
2  REM
3  REM         COMPLX:  CAI IN ALGEBRA OF COMPLEX NUMBERS
4  REM
5  REM         36153 (A820) REV A -- 7/71
6  REM
7  REM ***  CONTRIBUTED PROGRAM  ***************************************
10  REM E.E PROGRAM BY C.M. SIEGEL AND E. DIXON
20  DIM A$[72]
30  PRINT '10'10
40  PRINT "FOR INSTRUCTIONS TYPE 1, OTHERWISE 0."
50  INPUT K
60  IF K#1 THEN 175
70  PRINT "COMPUTER AIDED PRACTICE IN ALGEBRA OF COMPLEX NUMBERS"
80  PRINT "AS USED IN A.C. CIRCUITS;  PREPARED BY C.M.SIEGEL"
90  PRINT "AND E. DIXON, JUNE 30, 1970.  (REV. 12/20/70)"
100  PRINT "SELECT THE KIND OF PROBLEM FROM THIS LIST."
110  PRINT TAB(4);"1. INTRODUCTION- SLIDE RULE INSTRUCTION, RECTANGULAR"
120  PRINT TAB(4);"TO POLAR CONVERSION."
130  PRINT TAB(4);"2.  CONVERT RECTANGULAR TO POLAR"
140  PRINT TAB(4);"3. FIND RECIPROCAL"
145  PRINT TAB(4);"4.  CONVERT POLAR TO RECTANGULAR FORM"
150  PRINT TAB(4);"5.  FIND R,X,G,B"
160  PRINT TAB(4);"6.  FIND COMPLEX POWER"
170  PRINT TAB(4);"99.  FINISHED"
171  PRINT "EXPECTED ANSWERS WILL BE SHOWN IN [ ]."
175  M8=1
177  K1=0
180  PRINT ""
190  PRINT "WHICH KIND?"
200  INPUT K
210  IF K=99 THEN 9990
220  PRINT 
230  GOSUB 800
370  GOSUB K OF 1000,2000,3000,6200,4000,7000
380  GOTO 180
630  N=INT(EXP(4.606*(RND(8)+.5)))
640  N9=RND(8)-.3
641  IF N9>0 THEN 644
642  K1=0
643  GOTO 650
644  K1=K1+1
645  IF K1 >= 4 THEN 640
650  IF N9=0 THEN 640
660  N=N*N9/ABS(N9)
670  RETURN 
800  GOSUB 630
810  N1=N
820  GOSUB 630
830  N2=N
840  N3=SQR(N1^2+N2^2)
850  N8=ATN(1)
860  N9=ATN(N2/N1)*45/N8
870  IF N1<0 THEN 890
880  GOTO 990
890  IF N2<0 THEN 910
900  GOTO 930
910  N9=N9-180
920  GOTO 990
930  N9=N9+180
990  RETURN 
1000  GOSUB 8100
1010  PRINT "WHAT IS ITS POLAR FORM?"
1020  PRINT "FIND IT VIA THE FOLLOWING STEPS."
1030  PRINT "FIND THE SHORT-SIDE VALUE ON THE SLIDE RULE D-SCALE."
1040  PRINT "PUT THE HAIR LINE THERE.  WHAT IS THAT NUMBER?"
1050  N7=N1
1060  N6=N2
1070  IF ABS(N1)<ABS(N2) THEN 1100
1080  N7=N2
1090  N6=N1
1100  INPUT A1
1110  IF ABS(LOG(ABS(A1/N7)))<.1 THEN 1140
1120  PRINT "WRONG, USE THE SMALLER NUMBER; TRY AGAIN"
1130  GOTO 1100
1140  IF ABS(LOG(ABS(A1/N7)))<.002 THEN 1170
1150  PRINT "USE THE EXACT VALUE GIVEN; TRY AGAIN"
1160  GOTO 1100
1170  PRINT "O.K."
1180  PRINT 
1190  PRINT "MOVE THE SLIDE(NOT THE HAIR LINE) SO THAT THE"
1200  PRINT "RIGHT* OR LEFT*END OF THE S,T AND ST SCALES LIES OVER"
1210  PRINT "THE LONG SIDE VALUE ON THE D-SCALE. (* THE WRONG"
1220  PRINT "CHOICE OF END WILL NOT LEAVE THE S,T AND ST SCALES"
1230  PRINT "BENEATH THE HAIR LINE.)"
1240  PRINT "WHAT IS THAT NUMBER?"
1250  INPUT A2
1260  IF ABS(LOG(ABS(A2/N6)))<.002 THEN 1290
1270  PRINT "USE THE LARGER OF THE GIVEN NUMBERS, EXACTLY; TRY AGAIN"
1280  GOTO 1250
1290  PRINT "O.K."
1300  PRINT 
1310  PRINT "OBTAIN THE ANGLE FROM THE READING ON THE T(OR ST) SCALE"
1320  PRINT "BENEATH THE HAIR LINE."
1330  GOSUB 5750
1340  PRINT 
1350  PRINT "MOVE THE SLIDE UNTIL THAT SAME READING (ON THE T SCALE)"
1360  PRINT "APPEARS ON THE S-SCALE# BENEATH THE HAIR LINE"
1370  PRINT "(# IF RATIO, SHORT-SIDE/LONG-SIDE, IS < .1 USE THE ST"
1380  PRINT "SCALE: NO SLIDE MOVEMENT NEEDED.)"
1390  PRINT "ONE END OF THE S,T OR ST SCALES SHOULD NOW LIE"
1400  PRINT "OVER THE HYPOTENUSE-VALUE ON THE D-SCALE"
1410  GOSUB 5040
1420  PRINT 
1990  RETURN 
2000  GOSUB 8100
2010  PRINT "WHAT IS ITS POLAR FORM?"
2330  GOSUB 5750
2410  GOSUB 5040
2420  PRINT 
2990  RETURN 
3000  PRINT 
3005  GOSUB 8100
3010  PRINT "WHAT IS THE RECIPROCAL(MAGNITUDE, ANGLE)?"
3020  INPUT B3,B9
3030  IF ABS(B9/N9-1)<.005 THEN 3130
3040  GOTO 3170
3050  IF ABS(B9/N9-1)<.015 THEN 3110
3060  IF ABS(B9/N9+1)<.01 THEN 3090
3070  PRINT "WRONG ANGLE; TRY AGAIN"
3080  GOTO 3150
3090  PRINT "ANGLE IS CORRECT; ["-N9"]"
3100  GOTO 3200
3110  PRINT "WRONG SIGN FOR ANGLE; TRY THE ANGLE AGAIN"
3120  GOTO 3170
3130  PRINT "WRONG SIGN FOR ANGLE; SHOULD BE "-N9"DEGREES"
3140  GOTO 3200
3150  INPUT B9
3160  GOTO 3050
3170  IF ABS(B9/N9+1)>.005 THEN 3190
3180  GOTO 3200
3190  PRINT "WRONG ANGLE; SHOULD BE ["-N9" DEGREES]"
3200  B7=ABS(B3*N3-1)
3210  IF B7<.01 THEN 3320
3220  IF B7<.05 THEN 3300
3230  IF K=3 THEN 3270
3240  PRINT "MAGNITUDE SHOULD BE RECIPROCAL OF THE ORIGINAL."
3250  PRINT "GIVE CORRECTED MAGNITUDE"
3260  GOTO 3280
3270  PRINT "MAGNITUDE WRONG; TRY AGAIN"
3280  N3=1/N3
3285  T=2
3290  GOSUB 5048
3295  GOTO 3990
3300  PRINT "YOU ARE WITHIN 5 PER CENT; YOU CAN BE MORE ACCURATE."
3305  GOTO 3250
3320  N3=1/N3
3330  PRINT "THE MAGNITUDE IS CORRECT; ["N3"]"
3990  RETURN 
4000  N8=INT(1.999*RND(8)+1)
4001  T=1
4010  GOTO N8 OF 4020,4040
4020  PRINT "FOR R,X= "N1","N2"OHMS, WHAT ARE THE VALUES OF G,B?"
4030  GOTO 4050
4040  PRINT "FOR G,B= "N1","N2"MHOS, WHAT ARE THE VALUES OF R,X?"
4050  B1=N1/(N3*N3)
4060  B2=(-1)*N2/(N3*N3)
4070  INPUT A1,A2
4080  IF ABS(A1/B1-1)>.01 THEN 4120
4090  IF ABS(A2/B2-1)>.01 THEN 4120
4100  PRINT "CLOSE ENOUGH IN "T" TRY(S);"
4105  PRINT "["B1","B2"]"
4110  GOTO 4990
4120  IF ABS(A1/B1-1)>.05 THEN 4160
4130  IF ABS(A2/B2-1)>.05 THEN 4160
4140  PRINT "BOTH ARE WITHIN 5 PER CENT; TRY AGAIN FOR BETTER ACCURACY"
4150  GOTO 4170
4160  IF ABS(A1/B1+1)<.05 THEN 4165
4161  IF ABS(A2/B2+1)<.05 THEN 4165
4162  PRINT "WRONG, TRY AGAIN."
4163  GOTO 4170
4165  PRINT "WATCH YOUR SIGNS; TRY AGAIN."
4170  T=T+1
4175  IF T>9 THEN 4300
4180  IF T#5 THEN 4070
4187  IF K=4 THEN 4276
4188  IF K=6 THEN 4300
4190  PRINT "ENOUGH TRIES; TRY IT IN STEPS;"
4195  PRINT "FOR THE GIVEN NUMBERS FIND THE POLAR FORM."
4200  GOSUB 2330
4210  PRINT "NOW,"
4220  GOSUB 3010
4230  PRINT "NOW FIND THE COMPONENTS,"
4235  T=1
4240  GOTO N8 OF 4250,4270
4250  PRINT "     (G,B) = ("N3" COS 0, "N3" SIN 0)"
4260  GOTO 4290
4270  PRINT "     (R,X) = ("N3" COS 0, "N3" SIN 0)"
4275  GOTO 4290
4276  PRINT "SKETCH THE COMPLEX NUMBER TO SHOW THE ANGLE IN ITS"
4277  PRINT " PROPER PROPORTIONS; THEN SET ONE END OF THE SLIDE"
4278  PRINT " OVER "N3" ON THE D-SCALE; PUT THE HAIR LINE"
4279  PRINT " OVER THE APPROPRIATE ANGLE ON THE SINE AND COSINE"
4280  PRINT " SCALES; READ, FROM THE D-SCALE UNDER THE HAIRLINE,"
4281  PRINT " THE VALUES, ("N3;"COS 0, "N3;"SIN 0;)"
4290  PRINT "(NOTE: 0 REPRESENTS THE ANGLE.)"
4291  PRINT "WHAT ARE THEIR VALUES?"
4292  GOTO 4070
4300  PRINT "ENOUGH TRIES,"
4310  GOTO 4105
4990  RETURN 
5040  PRINT "THE MAGNITUDE EQUALS?"
5047  T=1
5048  C9=N3
5053  INPUT A3
5060  A4=ABS(A3-N3)/(.01*N3)
5070  IF A4 <= 1 THEN 5130
5080  IF A4 <= 5 THEN 5110
5090  PRINT "YOU ARE NOT WITHIN 5 PER CENT; TRY AGAIN"
5100  GOTO 5150
5110  PRINT "YOU ARE OFF BY LESS THAN 5 PER CENT; TRY TO GET CLOSER"
5120  GOTO 5150
5130  GOSUB 8000
5140  GOTO 5490
5150  T=T+1
5160  IF T<6 THEN 5053
5170  GOSUB 8002
5490  RETURN 
5750  PRINT "WHAT IS THE ANGLE(DEGREES)?"
5760  PRINT "(SHOW REGARD FOR THE PROPER QUADRANT; CHOSE ANGLE"
5770  PRINT "BETWEEN -180 AND +180)"
5774  T=1
5775  C9=N9
5780  N7=ABS(N9)
5790  IF N7<45 THEN 5890
5800  N7=N7-45
5810  GOTO 5790
5820  C9=N9
5890  INPUT A9
5900  N6=ABS(N9-A9)/N7
5910  N5=INT(5*N7)/100
5920  IF N6 <= .01 THEN 5990
5930  IF N6 <= .05 THEN 5960
5935  IF ABS(N9+A9)/N7>.05 THEN 5940
5936  PRINT "WRONG SIGN!"
5937  GOTO 5992
5940  PRINT "YOU ARE NOT WITHIN "N5" OR MORE DEGREES"
5950  GOTO 5992
5960  PRINT "YOU ARE OFF BY LESS THAN "N5" DEGREES; YOU SHOULD BE"
5970  PRINT "ABLE TO GET CLOSER; "
5980  GOTO 5992
5990  GOSUB 8000
5991  GOTO 5999
5992  T=T+1
5993  IF T<6 THEN 5996
5994  GOSUB 8002
5995  GOTO 5999
5996  PRINT "TRY THE ANGLE AGAIN."
5997  GOTO 5890
5999  RETURN 
6200  PRINT "FOR A COMPLEX NUMBER HAVING"
6210  PRINT "     MAGNITUDE = "N3
6220  PRINT "     AND PHASE = "N9" DEGREES,"
6230  PRINT "WHAT ARE THE RECTANGULAR COMPONENTS (U,V)?"
6240  B1=N1
6250  B2=N2
6255  T=1
6260  GOSUB 4070
6270  RETURN 
7000  B3=N3
7010  B9=N9
7030  GOSUB 800
7050  PRINT "FOR "B3" VOLTS (RMS) AT  "B9"  DEGREES, AND "
7060  PRINT "FOR "N3" AMPERES (RMS) AT  "N9"  DEGREES,"
7070  PRINT "HOW MANY VA HAVE WE?"
7080  C3=B3*N3
7085  N3=C3
7090  GOSUB 5047
7180  PRINT "WHAT IS THE POWER FACTOR IN PER CENT?"
7190  PRINT "     (IF IT IS NEGATIVE DISCARD THE SIGN.)"
7210  C4=B9-N9
7220  C4=COS(C4*ATN(1)/45)
7230  C5=100*ABS(C4)
7235  N3=C5
7240  GOSUB 5047
7300  PRINT "WHAT ARE THE REAL AND REACTIVE POWER,"
7310  PRINT "WATTS, VARS?"
7320  B1=C3*C4
7330  B2=C3*SIN((B9-N9)*ATN(1)/45)
7335  T=1
7340  GOSUB 4070
7350  N=INT(EXP(4.606*(RND(8)+.5)))
7360  N9=RND(8)-.3
7370  IF N9=0 THEN 7360
7380  N=N*N9/ABS(N9)
7390  RETURN 
8000  PRINT "CORRECT IN "T" TRY(S)"
8001  GOTO 8003
8002  PRINT "ENOUGH TRIES, "
8003  PRINT "["C9"]"
8009  RETURN 
8100  M9=-1*M8/2+1.5
8110  GOTO M9 OF 8120,8140
8120  PRINT "FOR Z = "N1","N2
8130  GOTO 8190
8140  IF N2<0 THEN 8170
8150  PRINT "FOR Z = "N1" + J"N2
8160  GOTO 8190
8170  M2=ABS(N2)
8180  PRINT "FOR Z = "N1" - J"M2
8190  M8=-1*M8
8200  RETURN 
9990  END 
