/  FFPOW -- IFPOW   POWERS
/  FOR 23 BIT F. P. FORMAT
/  WRITTEN BY
/	PHILLIP SIEMENS
/	LAWRENCE LIVERMORE LAB
/	FEBRUARY 18, 1975

	ENTRY	FFPOW
	ENTRY	IFPOW

OPDEF	TADI	1400
OPDEF	DCAI	3400
OPDEF	JMPI	5400

	LAP

/ FLOATING BASE TO FLOATING EXPONENT
/ X**Y   WHERE X IS IN FAC
/	ALGORITHM    EXP(Y*ALOG(X))
/  NOTE   0**Y = 0
/   ALSO  0**0 = 0
/   (-X)**Y IS ERROR EVEN IF Y IS AN INTEGER

FFPER,	4614
	2027

FFPOW,	6140			/ENTRY
	0002
	TAD	FFPOW		/GET CDF TO CALLING FIELD
FFP0,	DCA	FFP1
FFP1,	  HLT			/GETS CDF
	TADI	FFPOW#		/GET CDF TO ARG
	DCA	LOGX
	INC	FFPOW#		/BUMP POINTER
	TADI	FFPOW#		/GET ARG ADDRESS
	DCA	LOGX#
	INC	FFPOW#		/BUMP POINTER
	TAD	ACH		/GET X
	SPA			/IS IT POSITIVE?
	JMP	MINUSX		/NO -- ERROR
	SNA CLA			/IS IT ZERO?
	JMP	FFP3		/YES -- EXIT WITH FAC=0
FFP4,	CALL 1,	ALOG		/ALOG(X)
	  ARG	ACH
	CALL 1,	FMP		/Y*ALOG(X)
LOGX,	  ARG	0
	CALL 1,	EXP		/EXP(Y*ALOG(X))
	  ARG	ACH
FFP3,	CLA CLL CML RTL		/FAST EXIT
	TAD	FFP1
	DCA	FFP2
FFP2,	  HLT
	JMPI	FFPOW#

MINUSX,	CALL 1,	ERROR
	  ARG	FFPER
	CALL 0,	CHS
	JMP	FFP4

/  INTEGER TO FLOATING POWER
/  FLOAT THE BASE

IFPOW,	6140			/ENTRY
	0002
	CALL 0,	FLOT
	TAD	IFPOW#
	DCA	FFPOW#
	TAD	IFPOW
	JMP	FFP0

END
