.TITLE .DPSC / / DOUBLE PRECISION SINE AND COSINE ROUTINES / .GLOBL DSIN,DCOS,.DSIN,.DCOS .GLOBL .DPRML,.DPADD,.LODBD,.DPRST,.DPRLD,.DPSER .GLOBL .CMPLA,.CMPLB,.FLOTB,.FIX,.DBLE .GLOBL .MODEA,.SIGNA,.B3,.B4,.INT2,.ADDR2,.CNTR .GLOBL .GRAB / DSIN XX JMS* .GRAB JMS .DSIN JMP* DSIN / DCOS XX JMS* .GRAB JMS .DCOS JMP* DCOS / / .DSIN XX JMS* .DBLE /CHECK MODE LAC (PIBY2 JMS* .DPRLD /-PI/2 TO ACC B JMS* .DPADD LAC* .MODEA JMS .DCOS /SIN(X)=COS(X-PI/2) JMP* .DSIN / .DCOS XX JMS* .DBLE /CHECK MODE DZM* .SIGNA /COS FUNCTION IS EVEN, TAKE POSITIVE VALUE LAC (TOBYPI JMS* .DPRLD JMS* .DPRML /DIVIDE BY PI/2 JMS* .FIX LAC* .INT2 RTR DAC FLAG /FLAG<0 IF QUADRANT IS 2 OR 4 SZL!SPA /SKIP IF AC0=L=0 CML!CMA SZL!SPA!CLL!CLA /SKIP WILL OCCUR IF AC0 WAS =L STL RAR DAC SIGN /SIGN IS MINUS IF QUADRANT IS 2 OR 3 JMS* .FLOTB DZM* .B3 DZM* .B4 /ZERO EXTENSION JMS* .CMPLB JMS* .DPADD /CALCULATE T LAC FLAG SMA!CLA JMP SERIES LAC (C0 /T=1.-T IF QUADRANT IS 2 OR 4 JMS* .DPRLD JMS* .CMPLA JMS* .DPADD SERIES JMS* .LODBD /ACC A TO ACC B JMS* .DPRML /CALCULATE T**2 LAC .ADDR2 JMS* .DPRST /STORE IT IN ADDR2 LAW -14 DAC* .CNTR LAC (C12 /SERIES SET UP JMS* .DPSER LAC SIGN DAC* .SIGNA /SET SIGN JMP* .DCOS / PIBY2 1; 444177; 325042; 055060; 432305 TOBYPI 0; 213714; 033344; 710405; 224774 C12 777700; 407066; 075031; 027777; 656535 777710; 245271; 404407; 736115; 211076 777717; 736670; 302153; 321607; 072010 777727; 124061; 544327; 603050; 441253 777736; 101430; 260571; 327751; 245602 777744; 555611; 475045; 422436; 266734 777752; 763516; 050673; 074605; 067270 777760; 515507; 712420; 112427; 246465 777765; 703724; 032110; 672565; 721444 777772; 253517; 437436; 277763; 761245 777776; 007406; 702015; 532607; 315230 1; 167517; 462337; 105674; 551126 C0 1; 0; 0; 0; 0 FLAG;SIGN / .END