/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/EDIT 2   9-25-70
       .TITLE .BD    RAISE DOUBLE BASE (A) TO INTEGER POWER (B)  A**B
       .GLOBL .BD,.DE,.AS,.AP,.AW,.DF,.AB,.ER
/             CALLING SEQUENCE   (A**B = EXP(B * LOGE(A)))
/      JMS*   (.BD)           SUBR CALL (A IN FLOAT ACC)
/      LAC(*) ADDR            ADDR OF B (* IF INDIRECT)
/      NEXT   INSTRUCTION     SUBR RETURN (RESULT IN FLOAT ACC)
/
.BD    CAL    0              /ENTRY-EXIT
       LAC*   .AB
       DAC    BD01           /SAVE BASE SIGN
       AND    (377777)
	SZA			/IS BASE 0?
	JMP BD10
	XCT* .BD		/EXAMINE EXP.
	SPA!SNA!CLA
	JMS* .ER		/EXP<-0
	AND 15			/DUMMY INSTRUCT.
	JMP BD11		/ANSWER=BASE
BD10	DAC*   .AB            /ABSOLUTE BASE
       JMS*   .DE            /COMPUTE LOG2(A) (.DE)
       JMS*   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   BD05           / (LOG2(A) * LOGE(2) = LOGE(A))
       JMS*   .AP            /STORE DOUBLE (.AP)
       .DSA   BD07           /(TEMP)
       XCT*   .BD            /GET EXP
       JMS*   .AW            / FLOAT B (.AW)
       JMS*   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   BD07           / (B * LOGE(A))
       JMS*   .DF            /COMPUTE EXP (.DF) (EXP(B * LOGE(A)))
       XCT*   .BD
       RTR
       AND    BD01           /DETERMINE ANSWER SIGN
       AND    (400000)       /AS (-1) ** POWER
       XOR*   .AB
       DAC*   .AB            /SET ANSWER SIGN
BD11       ISZ    .BD            /BUMP EXIT
       JMP*   .BD            /EXIT
BD05          0              /LOGE(2) (1)  (0.6931471806)
              261344         /        (2)
              137700         /        (3)
BD07   CAL    0              /TEMP (1)                                L
       CAL    0              /     (2)
       CAL    0              /     (3)
BD01   .DSA   0
       .END
