home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 500 / 471 / rccl116 < prev    next >
Text File  |  1987-03-02  |  726b  |  43 lines

  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
  43.