1 /POWERS SUBROUTINE OS8 FORTRAN II LIBRARY
11 /COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
47 / VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
48 ENTRY IFPOW / INTEGER TO FLOATING POWER
49 ENTRY FFPOW / FLOATING TO FLOATING POWER
50 ENTRY EXP / E TO A POWER
51 ENTRY ALOG / NATURAL LOGARITHM
57 / INTERNAL SUBROUTINE POL
59 / COMPUTES N TERMS OF POLYNOMIAL (NO CONSTANT TERM)
60 / N IN AC ... X IN FLOATING AC
61 / COEFFICIENTS START IN LOCATION WHOSE ADDRESS FOLLOWS JMS TO POL
71 / DCA ARG1# /THIS CODE PROBABLY EXTRANEOUS
75 ARG1, ARG EXS / ADDRESS STORED HERE
85 CPAGE 17 / CANT BREAK UP THIS TABLE
86 EXS, 1464 /7.9608942E-9 CONSTANTS FOR EXP
106 COF, 5716 /-6.4535442E-3 CONSTANTS FOR LOGS
131 ER16, 2014 /1.0644944
135 LN2, 1755 /8.6643397E-2
143 / ALOG - NATURAL LOGARITHM
145 / ALOG(X)=N*ALOG(2)+ALOG(M) WHERE 1/2 OR EQUAL TO M
146 / ALOG(M)=ALTERNATING SERIES (K**I)/I WHERE K=2M-1 AND M AS ABOVE
149 LGER, 0114 / "ALOG" ERROR AT LOC XXXXX
161 TAD ACH / GET EXPONENT
163 JMP LGERR /LOG OF X<=0 - ERROR
167 TAD ACH / GET M WITHOUT SIGN
173 TAD (D8 / 8 TERMS OF SERIES
176 CALL 1,STO / ALOG(M) INTO Y
179 CALL 0,FLOT / FLOAT IT
180 CALL 1,FMP / N *ALOG(2)
182 CALL 1,FAD / N *ALOG(2) ALOG(M)(ALOG(X)
191 / E**X=SERIES (X**I)/(I!)
192 / IF B=E**(1/16) AND X IS BETWEEN -1 AND 1 THEN
193 / B**X=1 SUMA(I)*(X**I) FOR I FROM I=1 TO I=5
194 / WHERE A(I)(1/((I!)*16**2))
215 TAD (-4271 /TEST FOR FLTG. AC <88.2
224 CALL 1,FAD / EXPRESS Y AS INTEGER N AND FRACTION F
235 TAD (5 / 5 TERMS OF SERIES
240 CALL 1,STO / GIVES B**F
246 CALL 1,FMP / B**(N+F)=(B**16X)(E**X)
260 / IFPOW - INTEGER TO FLOATING POWER
262 / JUST FLOAT BASE AND GO TO FFPOW
267 TAD IFPOW / FROM BANK
268 DCA FFPOW / TO PROPER LOCATION
269 TAD IFPOW# // FROM ADDRESS
270 DCA FFPOW# /TO PROPER LOC
271 JMP ML / SNEAK INTO ROUTINE
274 / FFPOW- FLOATING TO FLOATING POWER
276 / IDENTITY USED ... X**Y=EXP(Y*ALOG(X))
283 ML, TAD I FFPOW / GET CDF TO EXPONENT
285 INC FFPOW# / INCREMENT TO EXPONENT ADDRESS
286 TAD I FFPOW / GET EXPONENT ADDRESS
288 INC FFPOW# / INCREMENT FOR EXIT
289 TAD I LXP / HIGH ORDER WORD OF EXPONENT
291 JMP FFP5 / YES ... RESULT=1
292 TAD ACH / BASE IS IN FLOATING POINT AC
295 SZA CLA / IF BASE EQUALS ZERO ... RESULT EQUALS ZERO
297 RETRN FFPOW / ZERO RESULT EXIT
298 FFP1, CALL 1,STO / SAVE BASE
302 CALL 1,FMP / Y*LOG(X)
303 LXP, ARG 0 / ADDRESS STORED HERE
309 FFP5, CALL 0,CLEAR / ANYTHING TO ZERO POWER IS 1