redo include files for kernel reorg
[unix-history] / usr / src / sys / tahoe / math / Katanf.s
CommitLineData
a6730a00 1/* Katanf.s 1.4 90/12/04 */
2b252132 2
9d1834ba 3#include "../tahoe/SYS.h"
2b252132 4
8eb02f2a 5 .text
2b252132 6ENTRY(Katanf, 0)
8eb02f2a 7 tstl 4(fp) # if (arg > 0)
2b252132 8 jleq 1f
8eb02f2a
SL
9 pushl 20(fp) # hfs
10 pushl 8(fp)
11 pushl 4(fp)
2b252132 12 callf $16,satan
8eb02f2a 13 ret # return(satan(arg));
2b252132 141: # else
8eb02f2a
SL
15 pushl 20(fp) # hfs
16 lnd 4(fp)
17 pushd
2b252132 18 callf $16,satan
8eb02f2a
SL
19 lnf r0
20 stf r0
21 ret # return(-satan(-arg));
8eb02f2a 22
9d1834ba 23ASENTRY(satan, R2|R3)
8eb02f2a
SL
24 subl3 $60,fp,sp
25 cmpd2 4(fp),_sq2m1 # if (arg < sq2m1)
2b252132 26 jgeq 1f
8eb02f2a
SL
27 pushl 12(fp) # hfs
28 pushl 8(fp)
29 pushl 4(fp)
2b252132 30 callf $16,xatan
8eb02f2a 31 ret # return(xatan(arg));
2b252132
SL
321:
33 cmpd2 4(fp),_sq2p1 # else if (arg > sq2p1)
34 jgtr 9f
8eb02f2a 35 pushl 12(fp) # hfs
2b252132
SL
36 ldd one; pushd
37 ldd 4(fp); pushd
8eb02f2a
SL
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
2b252132
SL
43 ldd one; pushd
44 ldd 4(fp); pushd
8eb02f2a
SL
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
2b252132 52 callf $16,xatan # xatan((ag-1.0)/(arg+1.0))
8eb02f2a
SL
53 pushl 12(fp) # hfs
54 pushl r1
55 pushl r0
2b252132 56 ldd _pio4; pushd
8eb02f2a 57 callf $24,_Kaddd
2b252132 58 ldd r0; cvdf; stf r0
8eb02f2a
SL
59 ret # return(pio4+xatan((xatan(...)));
60
2b252132
SL
619:
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
9d1834ba 78ASENTRY(xatan, 0)
8eb02f2a
SL
79 subl3 $68,fp,sp
80 pushl 12(fp) # hfs
2b252132 81 ldd 4(fp); pushd; pushd
8eb02f2a
SL
82 callf $24,_Kmuld # argsq = arg*arg;
83 ldd r0
84 std -60(fp) # argsq
85 pushl 12(fp) # hfs
86 pushd
2b252132 87 ldd _p5; pushd
8eb02f2a
SL
88 callf $24,_Kmuld # p5*argsq
89 pushl 12(fp) # hfs
2b252132
SL
90 ldd _p4; pushd
91 ldd r0; pushd
8eb02f2a
SL
92 callf $24,_Kaddd # (p5*argsq+p4)
93 pushl 12(fp) # hfs
2b252132
SL
94 ldd -60(fp); pushd
95 ldd r0; pushd
8eb02f2a
SL
96 callf $24,_Kmuld # (p5*argsq+p4)*argsq
97 pushl 12(fp) # hfs
2b252132
SL
98 ldd _p3; pushd
99 ldd r0; pushd
8eb02f2a
SL
100 callf $24,_Kaddd # ((p5*argsq+p4)*argsq+p3)
101 pushl 12(fp) # hfs
2b252132
SL
102 ldd -60(fp); pushd
103 ldd r0; pushd
8eb02f2a
SL
104 callf $24,_Kmuld # (..)*argsq
105 pushl 12(fp) # hfs
2b252132
SL
106 ldd _p2; pushd
107 ldd r0; pushd
8eb02f2a
SL
108 callf $24,_Kaddd # (..)*argsq+p2)
109 pushl 12(fp) # hfs
2b252132
SL
110 ldd -60(fp); pushd
111 ldd r0; pushd
8eb02f2a
SL
112 callf $24,_Kmuld # ((..)*argsq+p2)*argsq
113 pushl 12(fp) # hfs
2b252132
SL
114 ldd _p1; pushd
115 ldd r0; pushd
8eb02f2a
SL
116 callf $24,_Kaddd # ((..)*argsq+p2)*argsq+p1)
117 pushl 12(fp) # hfs
2b252132
SL
118 ldd -60(fp); pushd
119 ldd r0; pushd
8eb02f2a
SL
120 callf $24,_Kmuld # (..)*argsq
121 pushl 12(fp) # hfs
2b252132
SL
122 ldd _p0; pushd
123 ldd r0; pushd
8eb02f2a
SL
124 callf $24,_Kaddd # ((..)*argsq+p1)*argsq+p0)
125 pushl 12(fp) # hfs
2b252132
SL
126 ldd 4(fp); pushd
127 ldd r0; pushd
8eb02f2a
SL
128 callf $24,_Kmuld # (..)*arg
129 ldd r0
2b252132 130 std -68(fp); cvdf; stf r0 # value
8eb02f2a 131 ret
2b252132
SL
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
145one: .long 0x40800000, 0x00000000 # .double 1