ASMB,R,L,C
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS      * 
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
* 
*   NAME: PART OF MATH LIBRARY
*   SOURCE:  24998-18XXX  SEE NAM FOR LAST THREE DIGITS 
*   RELOC: PART OF 24998-12001
*   PGMR: BG & JTS
* 
      HED ".DTOD" DOUBLE TO DOUBLE POWER (DLB)
      NAM .DTOD,6 24998-1X123 REV.2001 750701 
      ENT .DTOD 
      EXT .ZRNT 
      EXT DEXP,DLOG,.XMPY,.DFER,.ENTC 
XMPY  EQU .XMPY 
      SPC 2 
* 
*     CALLING SEQUENCE: Y = D ** P
*     JSB .DTOD 
*     DEF Y 
*     DEF D 
*     DEF P 
*     (ERROR RETURN)
*     (NORMAL RETURN) 
      SPC 1 
TDB   NOP 
      DEC 9 
      NOP 
T     REP 3         TEMPORARY 
      NOP 
Y     NOP           ADDRESS OF Y
D     NOP           ADDRESS OF D
P     NOP           ADDRESS OF P
.DTOD NOP 
      JSB .ZRNT 
      DEF LIBX
      JSB .ENTC     GET PRAM ADDRESSES
      DEF Y 
      STA TDB+2     SET RETURN ADDRESS
      LDA D,I 
      LDB P,I 
      SZA           D = 0 ? 
      JMP NOT0      NO. 
      SSB,RSS       P < 0 
      SZB,RSS        OR P = 0 ? 
      JMP ERROR     YES. ERROR
      JMP ANS0      NO. ANSWER = 0
NOT0  SZB,RSS 
      JMP ANS1      ANS MUST BE 1.0 
      SSA           NEGATIVE? 
      JMP ERROR     YES 
      JSB DLOG      T = LN(D) 
      DEF *+3 
      DEF T 
      DEF D,I 
      NOP           NO CHANCE FOR ERROR 
      JSB XMPY      T = P * LN(D) 
      DEF T 
      DEF T 
      DEF P,I 
      JSB DEXP      T = DEXP(P * LN(D)) 
      DEF *+3 
      DEF Y,I       PUT IN CALLERS VALUE
      DEF T 
      JMP ERROR+2   ERROR CONDITION:
      JMP ANSOK     RETURN OK 
ANS0  LDA ADZRO     GET ADDRESS OF DEX 0.0
      RSS 
ANS1  LDA ADONE     GET ADDRESS OF DEX 1.0
      STA D         SAVE TEMPORARY
      JSB .DFER     MOVE VALUE TO OUTPUT VALUE
      DEF Y,I       OUTPUT VALUE ADDRESS
      DEF D,I       INTERNAL VALUE
ANSOK ISZ TDB+2     BUMP RETURN ADDRESS TO P+5
      JMP LIBX      RETURN DONE 
ERROR LDA MSG 
      LDB MSG+1 
LIBX  JMP TDB+2,I 
      DEF TDB 
ZERO  DEX 0.0 
ADZRO DEF ZERO
ADONE DEF ONE 
ONE   DEX 1.0 
MSG   ASC 2,13UN    ERROR MESSAGE 
      END 
* 
                                          