Research V7 development
[unix-history] / .ref-Research-V6 / usr / source / s3 / log.s
CommitLineData
6b92951c
KT
1.globl log, _log
2ldfps = 170100^tst
3stfps = 170200^tst
4ldexp = 176400^movif
5stexp = 175000^movfi
6/
7/ log accepts its argument and returns its result
8/ in fr0. The carry bit is set if the argument is
9/ zero or negative.
10/ The coefficients are #2705 from Hart & Cheney.
11/
12/ movf arg,fr0
13/ jsr pc,log
14/ movf fr0,...
15/
16_log:
17 mov r5,-(sp)
18 mov sp,r5
19 movf 4(r5),fr0
20 jsr pc,log
21 mov (sp)+,r5
22 rts pc
23
24log:
25 tstf fr0
26 cfcc
27 bgt 1f
28 movf $bigneg,fr0 /return -(big) on error
29 sec
30 rts pc
311:
32 stfps -(sp)
33 ldfps $200 /di mode
34 movf fr2,-(sp)
35 movf fr1,-(sp)
36/
37 stexp fr0,-(sp) /scale
38 ldexp $0,fr0
39 cmpf sqrt2o2,fr0
40 cfcc
41 blt 1f
42 ldexp $1,fr0
43 dec (sp)
441:
45 movf fr0,fr1 /(1/2)^(1/2) < x < 2^(1/2)
46 subf $one,fr0
47 addf $one,fr1
48 divf fr1,fr0 /z = (x-1)/(x+1)
49 movf fr0,fr1
50 mulf fr0,fr1 /z^2
51/
52 movf p3,fr2
53 mulf fr1,fr2
54 addf p2,fr2
55 mulf fr1,fr2
56 addf p1,fr2
57 mulf fr1,fr2
58 addf p0,fr2
59 mulf fr2,fr0 /zP(z)
60/
61 movf fr1,fr2
62 addf q2,fr2
63 mulf fr1,fr2
64 addf q1,fr2
65 mulf fr1,fr2
66 addf q0,fr2 /Q(z)
67/
68 divf fr2,fr0 /zP(z)/Q(z)
69 movif (sp)+,fr1
70 mulf log2,fr1
71 addf fr1,fr0
72/
73 movf (sp)+,fr1
74 movf (sp)+,fr2
75 ldfps (sp)+
76 rts pc
77/
78/
79one = 40200
80bigneg = 177777
81/
82.data
83sqrt2o2: 40065; 02363; 31771; 157145
84log2: 40061; 71027;173721;147572
85/
86p0: 141300; 16201; 02154; 10216
87p1: 41367;124211; 21611;114442
88p2: 141032; 31773; 64222; 40261
89p3: 37727;114303;110107;114145
90/
91q0: 141100; 16201; 02154; 10216
92q1: 41233;154404;136454; 22153
93q2: 141016;111747; 07541; 52530
94/
95/
96/p0 = -.24013 91795 59210 50986 8484 d2
97/p1 = .30957 29282 15376 50062 264 d2
98/p2 = -.96376 90933 68686 59324 d1
99/p3 = .42108 73712 17979 7145 d0
100/
101/q0 = -.12006 95897 79605 25471 7525 d2
102/q1 = .19480 96607 00889 73051 623 d2
103/q2 = -.89111 09027 93783 12337 d1
104/q3 = .1 d1
105/