File: EXPCI.RA of Tape: OS8/OS8-Latest/new-10
(Source file text) 

/C=C**R COMPLEX RAISED TO INTEGER OR REAL INT. FUNC.
/
/
/ VERSION 40A 27-MAY-80 WVDM
/
/
/C=A+I*B
/C^D=R^D*EXP(D*I*THETA)
/
/C IS IN #BASE
/D IS IN AC
/
/ENTER IN STARTF,EXIT IN STARTE
/
	SECT	#EXPCI
	ENTRY	#EXPCR
	DPCHK
	EXTERN	SQRT
	EXTERN	ATAN2
	EXTERN	SIN
	EXTERN	COS
	EXTERN	EXP3
	EXTERN	#CAC
/
	BASE	0
#EXPCR,	JA	.
	FSTA	EXPON,0
	FLDA	0		/REAL
	FSTA	A,0
	FLDA	3		/IMAG
	FSTA	B,0
/
	BASE	.+2000		/SET DUMMY BASE PAGE
/
	FLDA	A		/R=SQRT(A*A+B*B)
	FMUL	A
	FSTA	R
	FLDA	B
	FMUL	B
	FADD	R
	FSTA	R
	JSR	SQRT
	JA	.+4
	JA	R
	FSTA	R
	JSR	EXP3		/R^EXPON
	JA	.+6
	JA	R
	JA	EXPON
	FSTA	R
	JSR	ATAN2		/THETA=ATAN(B/A)
	JA	.+6
	JA	B
	JA	A
	FMUL	EXPON		/THETA*EXPON
	FSTA	A		/PHASE ANGLE
	JSR	SIN		/IMAG=R*SIN(PHASE)
	JA	.+4
	JA	A
	FMUL	R
	FSTA	B
	JSR	COS		/REAL=R*COS(PHASE)
	JA	.+4
	JA	A
	FMUL	R
	FSTA	A
	JGE	.+3		/SKIP IF RESULT IS POS
	FNEG			/IF NOT,MAKE IT POS
	FSUB	LOWLIM		/TEST FOR ZERO
	JGE	.+5		/JUMP IF NOT 0
	FCLA			/ASSUME RESULT SHOULD BE 0
	FSTA	A		/AND STORE A 0
	STARTE			/RETURN RESULT IN #CAC AND STARTE
	FLDA	A
	FSTA	#CAC
	JA	#EXPCR
/
A,	F 0.0
B,	F 0.0
EXPON,	F 0.0
R,	F 0.0
LOWLIM,	F 0.000009	/NUMBERS >= 1.E-5 OK