|
|
1.1 root 1: #double asin(arg)
2: #double arg; -1.0<=arg<=1.0 or an out of range error return
3: #method: call atan() after range reduction
4: # calls: satan (internal entry point of atan.s), _sqrt
5: # J F Jarvis August 8, 1078
6: .globl _asin
7: .globl _errno
8: .globl _sqrt
9: .globl satan
10: .set EDOM,33
11: .text
12: .align 1
13: _asin:
14: .word 0x3c0
15: bispsw $0xe0
16: movd 4(ap),r6
17: jgtr a1
18: mnegd r6,r6
19: a1: cmpd r6,$0d1.0e+0
20: jleq a2
21: movl $EDOM,_errno
22: clrd r0
23: ret
24: #
25: a2: muld3 r6,r6,r0
26: subd3 r0,$0d1.0e+0,-(sp)
27: calls $2,_sqrt
28: cmpd r6,$0d0.6875
29: jleq a3
30: divd2 r6,r0
31: jsb satan
32: subd3 r0,pio2,r0
33: jbr a4
34: a3: divd3 r0,r6,r0
35: jsb satan
36: a4: tstd 4(ap)
37: jleq a5
38: ret
39: a5: mnegd r0,r0
40: ret
41: .data
42: .align 2
43: pio2: .double 0d1.57079632679489661923e+0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.