|
|
1.1 root 1: /* Katanf.s 1.3 86/01/05 */
2:
3: #include "../tahoe/SYS.h"
4:
5: .text
6: ENTRY(Katanf, 0)
7: tstl 4(fp) # if (arg > 0)
8: jleq 1f
9: pushl 20(fp) # hfs
10: pushl 8(fp)
11: pushl 4(fp)
12: callf $16,satan
13: ret # return(satan(arg));
14: 1: # else
15: pushl 20(fp) # hfs
16: lnd 4(fp)
17: pushd
18: callf $16,satan
19: lnf r0
20: stf r0
21: ret # return(-satan(-arg));
22:
23: ASENTRY(satan, R2|R3)
24: subl3 $60,fp,sp
25: cmpd2 4(fp),_sq2m1 # if (arg < sq2m1)
26: jgeq 1f
27: pushl 12(fp) # hfs
28: pushl 8(fp)
29: pushl 4(fp)
30: callf $16,xatan
31: ret # return(xatan(arg));
32: 1:
33: cmpd2 4(fp),_sq2p1 # else if (arg > sq2p1)
34: jgtr 9f
35: pushl 12(fp) # hfs
36: ldd one; pushd
37: ldd 4(fp); pushd
38: callf $24,_Kaddd # (arg+1.0)
39: pushl 12(fp) # hfs of _Kdivd
40: pushl r1
41: pushl r0
42: pushl 12(fp) # hfs
43: ldd one; pushd
44: ldd 4(fp); pushd
45: callf $24,_Ksubd # (arg-1.0)
46: pushl r1
47: pushl r0
48: callf $24,_Kdivd # (arg-1.0)/(arg+1.0)
49: pushl 12(fp) # hfs
50: pushl r1
51: pushl r0
52: callf $16,xatan # xatan((ag-1.0)/(arg+1.0))
53: pushl 12(fp) # hfs
54: pushl r1
55: pushl r0
56: ldd _pio4; pushd
57: callf $24,_Kaddd
58: ldd r0; cvdf; stf r0
59: ret # return(pio4+xatan((xatan(...)));
60:
61: 9:
62: pushl 12(fp)
63: ldd 4(fp); pushd
64: ldd one; pushd
65: callf $24,_Kdivd # (1.0/arg)
66: pushl 12(fp) # hfs
67: ldd r0; pushd
68: callf $16,xatan
69: # clrl -60+4(fp)
70: # movl r0,-60(fp)
71: pushl 12(fp) # hfs
72: ldd r0; pushd
73: ldd _pio2; pushd
74: callf $24,_Ksubd
75: ldd r0; cvdf; stf r0
76: ret
77:
78: ASENTRY(xatan, 0)
79: subl3 $68,fp,sp
80: pushl 12(fp) # hfs
81: ldd 4(fp); pushd; pushd
82: callf $24,_Kmuld # argsq = arg*arg;
83: ldd r0
84: std -60(fp) # argsq
85: pushl 12(fp) # hfs
86: pushd
87: ldd _p5; pushd
88: callf $24,_Kmuld # p5*argsq
89: pushl 12(fp) # hfs
90: ldd _p4; pushd
91: ldd r0; pushd
92: callf $24,_Kaddd # (p5*argsq+p4)
93: pushl 12(fp) # hfs
94: ldd -60(fp); pushd
95: ldd r0; pushd
96: callf $24,_Kmuld # (p5*argsq+p4)*argsq
97: pushl 12(fp) # hfs
98: ldd _p3; pushd
99: ldd r0; pushd
100: callf $24,_Kaddd # ((p5*argsq+p4)*argsq+p3)
101: pushl 12(fp) # hfs
102: ldd -60(fp); pushd
103: ldd r0; pushd
104: callf $24,_Kmuld # (..)*argsq
105: pushl 12(fp) # hfs
106: ldd _p2; pushd
107: ldd r0; pushd
108: callf $24,_Kaddd # (..)*argsq+p2)
109: pushl 12(fp) # hfs
110: ldd -60(fp); pushd
111: ldd r0; pushd
112: callf $24,_Kmuld # ((..)*argsq+p2)*argsq
113: pushl 12(fp) # hfs
114: ldd _p1; pushd
115: ldd r0; pushd
116: callf $24,_Kaddd # ((..)*argsq+p2)*argsq+p1)
117: pushl 12(fp) # hfs
118: ldd -60(fp); pushd
119: ldd r0; pushd
120: callf $24,_Kmuld # (..)*argsq
121: pushl 12(fp) # hfs
122: ldd _p0; pushd
123: ldd r0; pushd
124: callf $24,_Kaddd # ((..)*argsq+p1)*argsq+p0)
125: pushl 12(fp) # hfs
126: ldd 4(fp); pushd
127: ldd r0; pushd
128: callf $24,_Kmuld # (..)*arg
129: ldd r0
130: std -68(fp); cvdf; stf r0 # value
131: ret
132:
133: .data
134: .align 2
135: _sq2p1: .long 0x411A8279, 0x99FCEF31 # .double 2.414213562373095
136: _sq2m1: .long 0x3FD413CC, 0xCFE77990 # .double .41421356237309503
137: _pio2: .long 0x40C90FDA, 0xA22168C1 # .double 1.5707963267948966
138: _pio4: .long 0x40490FDA, 0xA22168C1 # .double .78539816339744829
139: _p0: .long 0x407FFFFF, 0xFD687A4B # .double .99999999939652999
140: _p1: .long 0xBFAAAAA2, 0x09F9DBF2 # .double -.3333330762079
141: _p2: .long 0x3F4CC820, 0x0670059B # .double .199982166665
142: _p3: .long 0xBF11D182, 0x6601878B # .double -.142400777317
143: _p4: .long 0x3ED88B47, 0x4EFC9AF9 # .double .10573440275
144: _p5: .long 0xBE772E4B, 0x0E689AEB # .double -.060346883
145: one: .long 0x40800000, 0x00000000 # .double 1
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.