A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / all / dsin.ra
diff --git a/sw/os8/v3d/sources/fortran/all/dsin.ra b/sw/os8/v3d/sources/fortran/all/dsin.ra
new file mode 100644 (file)
index 0000000..4e70550
--- /dev/null
@@ -0,0 +1,214 @@
+/
+/
+/      D  S  I  N
+/      -  -  -
+/
+/SUBROUTINE    DSIN(X)
+/
+/ VERSION 5A 4-27-77  PT
+/
+       SECT    DSIN
+       JA      #DSIN
+       DPCHK
+       TEXT    +DSIN  +
+SINXR, SETX    XRSIN
+       SETB    BPSIN
+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
+BPSIN, F 0.0
+XRSIN, F 0.0
+X,     F 0.0
+       F 0.0
+       ORG     10*3+BPSIN
+       FNOP
+       JA      SINXR
+       0
+SINRTN,        JA      .
+SIN1,  F 0.0
+       F 0.0
+F3PIB2,        0003                    /4.71238898038468986
+       2266
+       2761
+       7714
+       6207
+       2212
+F1SIN, F 1.0
+       F 0.0
+/
+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
+       EXTERN  #ARGER
+DSNER, TRAP4   #ARGER
+\f