| 1 | / |
| 2 | /EXPIC |
| 3 | /INTEGER OR REAL RAISED TO COMPLEX |
| 4 | / |
| 5 | / VERSION 5A 4-26-77 MH |
| 6 | / |
| 7 | /(A)^(C+I*D) |
| 8 | /A=0 YIELDS 0 |
| 9 | /D=0 MEANS USE EXP3 TO CALCULATE A^C |
| 10 | /C+D=0 YIELDS 1.0 |
| 11 | /ENTER + EXIT IN STARTE |
| 12 | SECT #EXPIC |
| 13 | DPCHK |
| 14 | EXTERN #CAC |
| 15 | EXTERN EXP |
| 16 | EXTERN COS |
| 17 | EXTERN SIN |
| 18 | EXTERN ALOG |
| 19 | EXTERN EXP3 |
| 20 | EXTERN SQRT |
| 21 | BASE 0 |
| 22 | EXPIC, JA . |
| 23 | FSTA C,0 |
| 24 | STARTF |
| 25 | FLDA 0 /BASE |
| 26 | FSTA A,0 |
| 27 | BASE .+2000 |
| 28 | XTA 0 |
| 29 | FSTA T1 /SAVE XR 0 |
| 30 | FLDA A |
| 31 | JNE EX1 /A NOT 0 |
| 32 | STARTE /A=B=0 |
| 33 | FCLA |
| 34 | EX, FSTA #CAC /RESULT = 0 |
| 35 | JA EXPIC |
| 36 | EX1, FLDA C /C+D=0? |
| 37 | JNE EX2 |
| 38 | FLDA D |
| 39 | JNE EX2 |
| 40 | STARTE |
| 41 | FLDA FP1 /RESULT = 1 IF C=D=0 |
| 42 | JA EX |
| 43 | EX2, FLDA D |
| 44 | JNE EX3 /USE EXP3 IF D=0 |
| 45 | JSR EXP3 |
| 46 | JA .+6 |
| 47 | JA A |
| 48 | JA C |
| 49 | FSTA A |
| 50 | STARTE |
| 51 | FLDA A /RETURN AS REAL PART |
| 52 | JA EX |
| 53 | / |
| 54 | /LOGR=ALOG(SQRT(A*A)) |
| 55 | EX3, FLDA A |
| 56 | FMUL A |
| 57 | FSTA LOGR |
| 58 | JSR SQRT |
| 59 | JA .+4 |
| 60 | JA LOGR |
| 61 | FSTA LOGR |
| 62 | JSR ALOG |
| 63 | JA .+4 |
| 64 | JA LOGR |
| 65 | FSTA LOGR |
| 66 | /ARG=C+D*LOGR |
| 67 | FLDA D |
| 68 | FMUL LOGR |
| 69 | FADD C |
| 70 | FSTA ARG |
| 71 | / |
| 72 | /CALCULATE SIN AND COS OF ARG. SAVE SIGN OF EACH |
| 73 | JSR SIN |
| 74 | JA .+4 |
| 75 | JA ARG |
| 76 | FSTA SINE |
| 77 | JSR COS |
| 78 | JA .+4 |
| 79 | JA ARG |
| 80 | FSTA CSINE |
| 81 | /CALL C*LOGR-D |
| 82 | FLDA C |
| 83 | FMUL LOGR |
| 84 | FSUB D |
| 85 | FSTA REST |
| 86 | /REAL = EXP(REST+ALOG(CSINE)) |
| 87 | FLDA CSINE /REAL |
| 88 | JLT .+6 |
| 89 | LDX 0,1 /=1 IF POSITIVE |
| 90 | JA .+3 |
| 91 | FNEG |
| 92 | JSA DO |
| 93 | JXN .+3,0 /SKIP IF POS |
| 94 | FNEG |
| 95 | FSTA C |
| 96 | FLDA SINE /IMAG |
| 97 | JLT .+6 |
| 98 | LDX 0,1 |
| 99 | JA .+5 |
| 100 | LDX 0,0 |
| 101 | FNEG |
| 102 | JSA DO |
| 103 | JXN .+3,0 |
| 104 | FNEG /RESTORE SIGN |
| 105 | FSTA D |
| 106 | FLDA T1 /RESTORE XR0 |
| 107 | ATX 0 |
| 108 | STARTE |
| 109 | FLDA C |
| 110 | FSTA #CAC |
| 111 | JA EXPIC |
| 112 | / |
| 113 | DO, JA . |
| 114 | FSTA LOGR |
| 115 | JSR ALOG |
| 116 | JA .+4 |
| 117 | JA LOGR |
| 118 | FADD REST |
| 119 | FSTA ARG |
| 120 | JSR EXP |
| 121 | JA .+4 |
| 122 | JA ARG |
| 123 | FSTA ARG |
| 124 | FLDA LOGR /CHECK SIGN |
| 125 | JGE DOX |
| 126 | FLDA ARG |
| 127 | FNEG |
| 128 | FSTA ARG |
| 129 | DOX, FLDA ARG |
| 130 | JA DO |
| 131 | A, F 0.0 |
| 132 | C, F 0.0 |
| 133 | D, F 0.0 |
| 134 | LOGR, F 0.0 |
| 135 | ARG, F 0.0 |
| 136 | SINE, F 0.0 |
| 137 | CSINE, F 0.0 |
| 138 | REST, F 0.0 |
| 139 | FP1, F 1.0 |
| 140 | F 0.0 |
| 141 | T1, F 0.0 |
| 142 | \f |