Commit | Line | Data |
---|---|---|
babb2635 TL |
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 3 | |
42 | pio2: .double 0d1.57079632679489661923e+0 |