/ 
/ 
/                   FIRST PRINTING, FEBRUARY 1974
/ 
/ THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO 
/ CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED
/ AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
/ DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPON-
/ SIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS
/ DOCUMENT.
/ 
/ THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FUR-
/ NISHED TO THE PURCHASER UNDER A LICENSE FOR USE ON
/ A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH
/ INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR 
/ USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE BE PRO-
/ VIDED IN WRITING BY DIGITAL.
/ 
/ DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/ FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIP-
/ MENT THAT IS NOT SUPPLIED BY DIGITAL.
/ 
/ COPYRIGHT (C) 1974, BY DIGITAL EQUIPMENT CORPORATION
/ 
/ 
        .EJECT
/COPYRIGHT 1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/EDIT 8   2-27-71
/FOR HARDWARE FLOATING POINT PROCESSOR (FPP), DEFINE % FPP,
       .TITLE .BG    RAISE DOUBLE BASE (A) TO REAL POWER (B)  A**B
	.GLOBL .CB,.DE,.DF,.ER,.BG
	.IFUND %FPP
	.GLOBL .AS,.AK,.AB
	.ENDC
	.IFUND %FPP
	.DEFIN DMP%,A
	JMS* A			/DOUBLE MULTIPLY (.AS)
	.ENDM
	.ENDC
	.IFDEF %FPP
DMP=711540
	.DEFIN DMP%
	DMP
	.ENDM
	.ENDC
	.IFUND %FPP
	.DEFIN FMP%,A
	JMS* A			/FLOATING MULTIPLY (.AK)
	.ENDM
	.ENDC
	.IFDEF %FPP
FMP=711440
	.DEFIN FMP%
	FMP
	.ENDM
	.ENDC
/             CALLING SEQUENCE    (A**B = EXP (B * LOGE(A)))
/      JMS*   (.BG)           SUBR CALL  (A IN FLOAT ACC)
/      CAL/XCT ADDR           ADDR OF B  (XCT IF INDIRECT
/      NEXT   INSTRUCTION     SUBR RETURN (RESULT IN FLOAT ACC)
/DIRECT ASSIGN. FOR FPP
	.IFDEF %FPP
BNA=716610
	.ENDC
/
.BG    CAL    0              /ENTRY-EXIT
       JMS*   .CB            /SHORT GET ARG (.CB)
BG02   CAL    0              /ADDR OF B
	.IFDEF %FPP
	BNA			/BR IF NOT EQUAL 0
	BG06
	.ENDC
	.IFUND %FPP
	LAC* .AB		/CHECK BASE
	SZA
	JMP BG06
	.ENDC
	ISZ BG02		/BY PASS EXP WORD
	LAC* BG02		/CHECK EXP MANTISSA
	SPA!SNA!CLA
	JMS* .ER		/OTS 15
	AND 15			/DUMMY INSTR. (500015)
	JMP* .BG		/ANS=BASE
BG06	JMS*   .DE            /COMPUTE LOG2(A) (.DE)
       DMP%   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   BG05           / (LOG2(A) * LOGE(2) = LOGE(A))
       FMP%   .AK            /MULTIPLY REAL (.AK)
       .DSA   BG02+400000    / (B X LOGE(A))
       JMS*   .DF            /COMPUTE EXP (.DF) (EXP (B * LOGE(A)))
       JMP*   .BG            /EXIT
BG05          0              /LOGE(2) (1)  (0.6931471806)
              261344         /        (2)
              137700         /        (3)
       .END
