|
|
1.1 root 1: /* @(#)sin.s 4.1/4.2 10/31/84 CCI-CPG */
2:
3: /*
4: Double-precision floating point sin/cos function.
5: Calls modf.
6: Error criterion: absolute but fast!
7: Coefficients are #3305 from Hart & etc.(18.79D).
8: */
9: .data
10: .align 2
11: _twoopi:.long 0x4022f983, 0x6e4e4415 # .double 0.63661977236758134
12: .align 2
13: _p0: .long 0x40c90fda, 0xa22168c2 # .double 1.5707963267948966
14: .align 2
15: _p1: .long 0xc0255de7, 0x312df289 # .double -0.64596409750624607
16: .align 2
17: _p2: .long 0x3ea335e3, 0x3bad4fbb # .double 0.079692626246163792
18: .align 2
19: _p3: .long 0xbc996966, 0x731241b3 # .double -0.00468175413529264
20: .align 2
21: _p4: .long 0x3a283c1a, 0x41fa6b71 # .double 0.00016044118467438022
22: .align 2
23: _p5: .long 0xb77183a6, 0xab14afa2 # .double -3.5988429472773519e-06
24: .align 2
25: _p6: .long 0x3474799d, 0x8085b4eb # .double 5.692128547011138e-08
26: .align 2
27: _p7: .long 0xb137ba3b, 0xaacb5c1c # .double -6.6839665286786e-10
28: .align 2
29: _p8: .long 0x2dce43a2, 0xed891f06 # .double 5.86238129563e-12
30: .text
31: LL0: .align 1
32: .globl _cos
33: .set L22,0x0
34: .data
35: .text
36: _cos: .word L22
37: tstl 4(fp)
38: jgeq L27
39: lnd 4(fp)
40: std 4(fp)
41: L27: pushl $1
42: pushl 8(fp)
43: pushl 4(fp)
44: callf $16,_sinus
45: ret
46: .align 1
47: .globl _sin
48: .set L29,0x0
49: .data
50: .text
51: .data
52: .align 2
53: L40: .long 0x47fff800, 0x00000000 # .double 32764
54: .text
55: .data
56: .align 2
57: L41: .long 0x3f800000, 0x00000000 # .double 0.25
58: .text
59: .data
60: .align 2
61: L42: .long 0x41800000, 0x00000000 # .double 4
62: .text
63: .data
64: .align 2
65: L45: .long 0x40800000, 0x00000000 # .double 1
66: .text
67: .set L33,0x0
68: .data
69: .text
70: _sin: .word L29
71: pushl $0
72: pushl 8(fp)
73: pushl 4(fp)
74: callf $16,_sinus
75: ret
76: .align 1
77: _sinus: .word L33
78: subl3 $112,fp,sp
79: movl 8(fp),-80(fp)
80: movl 4(fp),-84(fp)
81: jgeq L38
82: lnd -84(fp)
83: std -84(fp)
84: addl2 $2,12(fp)
85: L38: ldd -84(fp)
86: muld _twoopi
87: std -84(fp)
88: cmpd2 -84(fp),L40
89: jleq L39
90: subl3 $60,fp,-(sp)
91: pushl -80(fp)
92: pushl -84(fp)
93: callf $16,_modf
94: movl r1,-88(fp)
95: movl r0,-92(fp)
96: cvld 12(fp)
97: addd -60(fp)
98: std -60(fp)
99: subl3 $68,fp,-(sp)
100: ldd L41
101: muld -60(fp)
102: pushd
103: callf $16,_modf
104: ldd L42
105: muld -68(fp)
106: std r0
107: ldd -60(fp)
108: subd r0
109: cvdl 12(fp)
110: jbr L43
111: L39: ldd -84(fp)
112: cvdl -96(fp)
113: cvld -96(fp)
114: std r0
115: ldd -84(fp)
116: subd r0
117: std -92(fp)
118: addl3 -96(fp),12(fp),r0
119: andl3 $3,r0,12(fp)
120: L43: bitl $1,12(fp)
121: jeql L44
122: ldd L45
123: subd -92(fp)
124: std -92(fp)
125: L44: cmpl 12(fp),$1
126: jleq L46
127: lnd -92(fp)
128: std -92(fp)
129: L46: ldd -92(fp)
130: muld -92(fp)
131: std -76(fp)
132: ldd _p8
133: muld -76(fp)
134: addd _p7
135: muld -76(fp)
136: addd _p6
137: muld -76(fp)
138: addd _p5
139: muld -76(fp)
140: addd _p4
141: muld -76(fp)
142: addd _p3
143: muld -76(fp)
144: addd _p2
145: muld -76(fp)
146: addd _p1
147: muld -76(fp)
148: addd _p0
149: std -104(fp)
150: muld -92(fp)
151: std r0
152: ret
153:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.