home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 500 / 471 / rccl100 < prev    next >
Text File  |  1987-03-02  |  1KB  |  62 lines

  1. # double float sin(),cos()
  2. #coefficients are from Hart & Cheney  SIN3370 (18.80D)
  3. .text
  4. .align 1
  5. .globl _sin
  6. .globl _cos
  7. _sin:
  8.     .word 0x03c0
  9.     clrl    r9    
  10.     movd    4(ap),r0
  11.     jgeq    range
  12.     movl    $2,r9
  13.     jbr    negarg
  14.  
  15. .align 1
  16. _cos:
  17.     .word    0x0fc0
  18.     movl    $1,r9
  19.     movd    4(ap),r0
  20.     jgeq    range
  21. negarg:
  22.     mnegd    r0,r0
  23.  
  24. range:
  25.     emodd    twoopi,twoopix,r0,r8,r6
  26.     addl2    r9,r8
  27.     bicb2    $~03,r8
  28.     caseb    r8,$0,$3
  29. bse:    .word    qda-bse,qdb-bse,qdc-bse,qdd-bse
  30. qdb:    subd3    r6,$0d1.0e+0,r6
  31.     jbr    qda
  32. qdc:    mnegd    r6,r6
  33.     jbr    qda
  34. qdd:    subd2    $0d1.0e+0,r6
  35. qda:
  36.     cvtdf   r0,r0
  37.     cvtdf   r6,r6
  38.     cvtdf   r8,r8
  39.  
  40.     mulf3   r6,r6,r8
  41.     polyf   r8,$4,pcoef
  42.     mulf2   r0,r6
  43.     polyf   r8,$4,qcoef
  44.     divf3   r0,r6,r0
  45.  
  46.     cvtfd   r0,r0
  47.     ret
  48. .data
  49. .align 2
  50. twoopi:.double    0d6.36619772367581340000e-01
  51. qcoef:.float    0d1.00000000000000000000e+00
  52.  .float         0d1.32653490878613630000e+02
  53.  .float         0d9.46309610153820810000e+03
  54.  .float         0d4.08179225234329970000e+05
  55.  .float         0d8.64455865292253430000e+06
  56. pcoef:.float    0d1.45968840666576870000e+02
  57.  .float         0d-1.38472724998245280000e+04
  58.  .float         0d4.40103053537526640000e+05
  59.  .float         0d-4.94290810090284410000e+06
  60.  .float         0d1.35788409787737560000e+07
  61. twoopix: .byte 0x29
  62.