10 REM *** HP TIME-SHARED BASIC PROGRAM LIBRARY ********************* 11 REM 12 REM CXEXP: VECTOR EXPONENTIATION 13 REM 14 REM 36119 (A303) REV A -- 7/71 15 REM 16 REM *** CONTRIBUTED PROGRAM ************************************** 17 REM 100 PRINT "THIS PROGRAM WILL RAISE A COMPLEX NUMBER" 110 PRINT "TO ANY REAL OR COMPLEX POWER." 120 PRINT 130 PRINT "WHEN ASKED 'POWER?' TYPE 1 FOR REAL EXPONENTS" 140 PRINT " TYPE 2 FOR COMPLEX EXPONENTS" 150 PRINT "WHEN ASKED 'AGAIN?' TYPE 0 TO STOP THE PROGRAM" 160 PRINT " TYPE 1 TO CONTINUE THE PROGRAM" 170 PRINT 180 PRINT "POWER"; 190 INPUT Z 200 IF Z=1 THEN 240 210 IF Z=2 THEN 330 220 PRINT "YOU GOOFED! TRY AGAIN!" 230 GOTO 180 240 PRINT "REAL PART"; 250 INPUT A 260 PRINT "IMAGINARY PART"; 270 INPUT B 280 PRINT "EXPONENT"; 290 INPUT C 300 LET D=0 310 GOSUB 520 320 GOTO 420 330 PRINT "REAL PART"; 340 INPUT A 350 PRINT "IMAGINARY PART"; 360 INPUT B 370 PRINT "EXPONENT REAL PART"; 380 INPUT C 390 PRINT "EXPONENT IMAGINARY PART"; 400 INPUT D 410 GOSUB 520 420 PRINT 430 PRINT "RESULTANT REAL PART = ";E 440 PRINT "RESULTANT IMAGINARY PART = ";F 450 PRINT 460 PRINT "AGAIN"; 470 INPUT Z 480 IF Z=0 THEN 680 490 IF Z=1 THEN 180 500 PRINT "YOU GOOFED! TRY AGAIN!" 510 GOTO 460 520 LET X=SQR(A^2+B^2) 530 IF A=0 THEN 610 540 LET Y=ATN(B/A) 550 IF A>0 THEN 650 560 IF B>0 THEN 590 570 LET Y=Y-3.14159 580 GOTO 650 590 LET Y=Y+3.14159 600 GOTO 650 610 IF B >= 0 THEN 640 620 LET Y=-3.14159/2 630 GOTO 650 640 LET Y=3.14159/2 650 LET E=X^C/EXP(D*Y)*COS(C*Y+D*LOG(X)) 660 LET F=X^C/EXP(D*Y)*SIN(C*Y+D*LOG(X)) 670 RETURN 680 END