|
|
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 0x0c0
15: movd 4(ap),r6
16: jgtr a1
17: mnegd r6,r6
18: a1: cmpd r6,$0d1.0e+0
19: jleq a2
20: movl $EDOM,_errno
21: clrd r0
22: ret
23: #
24: a2: muld3 r6,r6,r0
25: subd3 r0,$0d1.0e+0,-(sp)
26: calls $2,_sqrt
27: cmpd r6,$0d0.6875
28: jleq a3
29: divd2 r6,r0
30: jsb satan
31: subd3 r0,pio2,r0
32: jbr a4
33: a3: divd3 r0,r6,r0
34: jsb satan
35: a4: tstd 4(ap)
36: jleq a5
37: ret
38: a5: mnegd r0,r0
39: ret
40: .data
41: .align 2
42: pio2: .double 0d1.57079632679489661923e+0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.