home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / s3 / sin.s < prev    next >
Encoding:
Text File  |  1975-05-13  |  2.0 KB  |  126 lines

  1. ldfps = 170100^tst
  2. stfps = 170200^tst
  3. /
  4. .globl sin, _sin
  5. .globl cos, _cos
  6. /
  7. /    floating point sin/cos
  8. /    replaces the value in fr0 by its sin/cos
  9. /    there are no error exits
  10. /    coefficients are #3370 from Hart & Cheney
  11. /
  12. _sin:
  13.     mov    r5,-(sp)
  14.     mov    sp,r5
  15.     movf    4(r5),fr0
  16.     jsr    pc,sin
  17.     br    1f
  18.  
  19. _cos:
  20.     mov    r5,-(sp)
  21.     mov    sp,r5
  22.     movf    4(r5),fr0
  23.     jsr    pc,cos
  24. 1:
  25.     mov    (sp)+,r5
  26.     rts    pc
  27.  
  28. cos:
  29.     absf    fr0
  30.     mov    $1,-(sp)
  31.     br    1f
  32. sin:
  33.     clr    -(sp)
  34. 1:
  35.     stfps    -(sp)
  36.     ldfps    $200
  37.     movf    fr1,-(sp)
  38.     movf    fr2,-(sp)
  39.     mov    r0,-(sp)
  40. /
  41. /    quadrant reduction -  arg = (2/J)x
  42. /    -1 < arg < 1
  43. /
  44.     movf    fr0,-(sp)
  45.     absf    fr0
  46.     modf    frpi2,fr0
  47.     modf    $fourth,fr1
  48.     mulf    $four,fr1
  49.     movfi    fr1,r0
  50.     add    34(sp),r0
  51.     movf    $one,fr1
  52.     inc    r0
  53.     ror    r0
  54.     bcs    1f
  55.     subf    $one,fr0
  56. 1:
  57.     ror    r0
  58.     bcc    1f
  59.     negf    fr0
  60. 1:
  61.     tstf    (sp)+
  62.     cfcc
  63.     bpl    1f
  64.     negf    fr0
  65. 1:
  66.     movf    fr0,fr1
  67.     mulf    fr0,fr1        /arg^2
  68. /
  69.     movf    p4,fr2
  70.     mulf    fr1,fr2
  71.     addf    p3,fr2
  72.     mulf    fr1,fr2
  73.     addf    p2,fr2
  74.     mulf    fr1,fr2
  75.     addf    p1,fr2
  76.     mulf    fr1,fr2
  77.     addf    p0,fr2
  78.     mulf    fr2,fr0        / zP(z^2)
  79. /
  80.     movf    fr1,fr2
  81.     addf    q3,fr2
  82.     mulf    fr1,fr2
  83.     addf    q2,fr2
  84.     mulf    fr1,fr2
  85.     addf    q1,fr2
  86.     mulf    fr1,fr2
  87.     addf    q0,fr2        / Q(z^2)
  88. /
  89.     divf    fr2,fr0        / zP(z^2)/Q(z^2)
  90. /
  91.     mov    (sp)+,r0
  92.     movf    (sp)+,fr2
  93.     movf    (sp)+,fr1
  94.     ldfps    (sp)+
  95.     tst    (sp)+
  96. /    clc        /tst clears carry
  97.     rts    pc
  98. /
  99. fourth    = 37600
  100. one    = 40200
  101. four    = 40600
  102. /
  103. .data
  104. frpi2:    40042;174603; 67116; 42025
  105. /
  106. p0:    046117;031130;175220;165273
  107. p1:    145626;154170;031651;104637
  108. p2:    044726;162341;133224;052302
  109. p3:    143530;056427;005061;125021
  110. p4:    042021;174005;170441;175607
  111. q0:    046003;163716;123445;167144
  112. q1:    044707;047147;032436;120046
  113. q2:    043423;156142;064161;007314
  114. q3:    042004;123513;026637;160477
  115. /
  116. /p0 =  .13578 84097 87737 56690 92680 d8
  117. /p1 = -.49429 08100 90284 41611 58627 d7
  118. /p2 =  .44010 30535 37526 65019 44918 d6
  119. /p3 = -.13847 27249 98245 28730 54457 d5
  120. /p4 =  .14596 88406 66576 87222 26959 d3
  121. /q0 =  .86445 58652 92253 44299 15149 d7
  122. /q1 =  .40817 92252 34329 97493 95779 d6
  123. /q2 =  .94630 96101 53820 81805 71257 d4
  124. /q3 =  .13265 34908 78613 63589 11494 d3
  125. /q4 =  .1                             d1
  126.