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 
