       .TITLE .DB    COMPUTE SINE OF ARGUMENT IN FLOATING ACCUMULATOR
/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/EDIT 2  10-22-70
       .GLOBL .DB,.AB,.AS,.AP,.AX,.AW,.AU,.DC
/             CALLING SEQUENCE       (DOUBLE PRECISION)
/      JMS*   (.DB)           SUBR CALL (ARG IN FLT ACC)
/      NEXT   INSTRUCTION     SUBR RETURN (RESULT IN FLT ACC)
/
.DB    CAL    0              /ENTRY-EXIT
       LAC*   .AB            /GET SIGN WORD (.AB)
       AND    SINE02
       DAC    SINE03         /STORE ANS SIGN
       LAC*   .AB            /MAKE SIGN WORD POSITIVE
       AND    SINE04
       DAC*   .AB
       JMS*   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   SINE06         / (2/PI * ARG)
       JMS*   .AP            /STORE DOUBLE (.AP)
       .DSA   SINE08         / (TEMP)
       JMS*   .AX            /FIX FOR INTEGER (.AX)
       DAC    SINE10         /STORE INTEGER FOR QUADRANT DETERMINATION
       JMS*   .AW            /FLOAT INTEGER ONLY (.AW)
       JMS*   .AU            /REVERSE SUBTRACT DOUBLE (.AU)
       .DSA   SINE08         / (TEMP(ARG*2/P)-ACC(INT ARG*2/P)FOR FRACT
       LAC    SINE10         /GET INTEGER
       RCR                   /B17 TO LINK
       SNL                   /IF SET-COMPUTE 1-F (QUAD II OR IV)
       JMP    SINE13         /OR TEST B16
       JMS*   .AU            /REVERSE SUBTRACT DOUBLE
       .DSA   SINE14         / (1-F)
SINE13 LAC    SINE10         /GET INTEGER AGAIN
       RTR                   /B16 TO LINK
       SNL                   /IF SET-NEGATE ANS SIGN (QUAD III OR IV)
       JMP    SINE15
       LAC    SINE02         /GET SIGN BIT
       XOR    SINE03         /XOR ANS SIGN
       DAC    SINE03         /STORE ANS SIGN
SINE15 JMS*   .DC            /POLYNOMIAL EVALUATE (.DC)
       .DSA   SINE17         /FWA OF CALL SEQUENCE
       LAC*   .AB            /GET SIGN WORD OF ANSWER (.AB)
       AND    SINE04         /STRIP SIGN
       XOR    SINE03         /INSERT ANS SIGN
	SAD SINE02		/CHECK FOR -0.0 CASE
	CLA		/YES.  MAKE -0.0 A 0.0
       DAC*   .AB            /RESTORE
       JMP*   .DB            /EXIT
SINE02        400000
SINE03 CAL    0              /ANS SIGN
SINE04        377777
SINE06        0              / 2/PI (1)  (0.63661977236)
              242763         /      (2)
              015566         /      (3)
SINE08 CAL    0              /TEMP STORAGE (1)
       CAL    0              /             (2)
       CAL    0              /             (3)
SINE10 CAL    0              /INTEGER STORAGE
SINE14        1              /FLOATING 1 (1)
              200000         /           (2)
              0              /           (3)
SINE17        777772         /(N-1) (5)
       777750; 351732; 333236 /0.54465285D-7
       777756; 761211; 460000 /-0.3595184353D-5
       777764; 250166; 553372 /0.16043839964D-3
       777771; 631322; 620016 /-0.4681752998D-2
       777775; 243153; 614634 /+0.796926260D-1
       000000; 645273; 634612 /-0.6459640975D0
       000001; 311037; 552422 /+1.57079632680D0
       .END
