File: DSIN.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text)
/D=DSIN(D) DOUBLE PREC. TRIG. SINE / / / VERSION 40A 28-MAY-80 WVDM / / SECT DSIN JA #DSIN DPCHK EXTERN #ARGER DSNER, TRAP4 #ARGER TEXT +DSIN + SINXR, SETX XRSIN SETB BPSIN BPSIN, F 0.0 XRSIN, F 0.0 X, F 0.0 F 0.0 SIN1, F 0.0 F 0.0 F1SIN, F 1.0 F 0.0 ORG 10*3+BPSIN FNOP JA SINXR 0 SINRTN, JA . / FPI2SN, 1 /PI DIVIDED BY 2 3110 3755 2421 0264 3016 / FPISIN, 2 /PI 3110 3755 2421 0264 3016 / F2PISN, 3 /TWO PI 3110 3755 2421 0264 3016 / F3PIB2, 0003 /4.71238898038468986 2266 2761 7714 6207 2212 / SINC17, 7720 /1/17! 3124 5435 6014 1265 1236 / SINC15, 7730 /-1/15! 4506 0060 3063 0437 4133 / SINC13, 7740 /1/13! 2604 4430 2352 0664 1151 / SINC11, 7747 /-1/11! 4506 3352 3002 5354 3710 / SINC9, 7756 /1/9! 2707 3616 4525 5434 6350 / SINC7, 7764 /-1/7! 4577 4577 4577 4577 4636 / SINC5, 7772 /1/5! 2104 2104 2104 2104 2104 / SINC3, 7776 /-1/3! 5252 5252 5252 5252 5244 / SINTST, 7770 2000 0000 0000 0000 0000 / SEVTHR, 0007 2217 7777 7777 7777 7777 / BASE 0 #DSIN, STARTD FLDA 10*3 FSTA SINRTN FLDA 0 SETX XRSIN SETB BPSIN BASE BPSIN LDX 1,1 LDX 73,2 FSTA BPSIN FLDA% BPSIN,1 /ADDR OF X FSTA BPSIN STARTE FLDA% BPSIN /GET X LDX -1,0 /SET SIGN TO POSITIVE. JGT SINMOD /IF POSITIVE BYPASS FUDGE. JEQ SINRTN /IF ZERO EXIT. FNEG /NEGATIVE. NEGATE AC. SIN(-X)=-SIN(X) LDX 0,0 /SET SIGN TO MINUS. SINMOD, FSTA X FDIV F2PISN /X/2PI ALN 2 FNORM FMUL F2PISN /*2PI FSTA SIN1 FLDA X FSUB SIN1 FSTA SIN1 FSTA X /CHECK FOR QUADRANT /1 0-PI/2 SIN(PI/2)=1 /2 PI/2-PI SIN(PI)=0 /3 PI-3PI/2 SIN(3PI/2)=-1 /4 3PI/2-2PI SIN(2PI)=0 / FLDA FPI2SN /PI/2 FSUB SIN1 JGT TAYLOR JEQ SPIB2 /=PI/2 FLDA FPISIN /PI FSUB SIN1 JLT S1 JEQ SPI /=PI FLDA FPISIN FSUB SIN1 /SIN(X)=SIN(PI-X) FSTA X JA TAYLOR / S1, FLDA F3PIB2 /3PI/2 FSUB SIN1 JLT S2 JEQ S3PIB2 /=3PI/2 FLDA SIN1 FSUB FPISIN FNEG FSTA X /SIN(X)=-SIN(X-PI) JA TAYLOR / S2, FLDA F2PISN /2PI FSUB SIN1 JLT DSNER /ERROR JEQ SPI FNEG FSTA X /CALCULATE SIN VIA TAYLOR SERIES TAYLOR, FLDA X /RECALL NUMBER TO BE WORKED ON. FMUL X /MULTIPLY OUT. FSTA SIN1 FMUL SINC17 /NOW DO THE STANDARD ITERATION. FADD SINC15 FMUL SIN1 FADD SINC13 FMUL SIN1 FADD SINC11 FMUL SIN1 FADD SINC9 FMUL SIN1 FADD SINC7 FMUL SIN1 FADD SINC5 FMUL SIN1 FADD SINC3 FMUL SIN1 FADD F1SIN /ADD IN 1 FOR SERIES FMUL X /DO THE FINAL MULTIPLY. SING, JXN SINRTN,0 /SHALL WE NEGATE FNEG /YEP JA SINRTN /AND RETURN. / SPIB2, FLDA F1SIN JA SING / SPI, FCLA JA SINRTN / S3PIB2, FLDA F1SIN FNEG JA SING