A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / all / sin.ra
CommitLineData
81e70d48
PH
1/
2/
3/ S I N
4/ - - -
5/
6/SUBROUTINE SIN(X)
7/
8/ VERSION 5A 4-27-77 PT
9/
10 SECT SIN
11 JA #SIN
12 EXTERN #ARGER
13SINER, TRAP4 #ARGER
14 TEXT +SIN +
15SINXR, SETX XRSIN
16 SETB BPSIN
17BPSIN, F 0.0
18XRSIN, F 0.0
19SIN1, F 0.0
20SIN2, F 0.0
21F1SIN, F 1.
22FPI2SN, 1 /PI DIVIDED BY 2
23 3110
24 3755
25FPISIN, 2 /PI
26 3110
27 3755
28F2PISN, 3 /TWO PI
29 3110
30 3755
31 ORG 10*3+BPSIN
32 FNOP
33 JA SINXR
34 0
35SINRTN, JA .
36/
37SINC9, 7764
38 2501
39 7015
40/
41SINC7, 7771
42 5464
43 5515
44/
45SINC5, 7775
46 2431
47 5362
48/
49SINC3, 0000
50 5325
51 0414
52/
53SINTST, 7770
54 2000
55 0000
56 BASE 0
57#SIN, STARTD
58 FLDA 10*3
59 FSTA SINRTN
60 FLDA 0
61 SETX XRSIN
62 SETB BPSIN
63 BASE BPSIN
64 LDX 1,1
65 FSTA BPSIN
66 FLDA% BPSIN,1 /ADDR OF X
67 FSTA BPSIN
68 STARTF
69 FLDA% BPSIN /GET X
70 LDX -1,0 /SET SIGN TO POSITIVE.
71 JGT SINMOD /IF POSITIVE BYPASS FUDGE.
72 JEQ SINRTN /IF ZERO EXIT.
73 FNEG /NEGATIVE. NEGATE AC. SIN(-X)=-SIN(X)
74 LDX 0,0 /SET SIGN TO MINUS.
75SINMOD, JAL SINER /IF SIGN CAN T INT, THEN ERROR.
76 FDIV F2PISN /REDUCE TO BELOW TWO PI.
77 FSTA SIN1 /SAVE IN A TEMP.
78 ALN 0
79 FNORM /INTERGIZE IT.
80 FNEG
81 FADD SIN1 /RECALL NUMBER. AC NOW <0
82 FMUL F2PISN /NOW MULTIPLY BACK.
83 FSTA SIN2 /AND SAVE AWAY.
84 FSUB FPISIN /SUBTRACT OFF PI.
85 JLT SINP /LESS THEN PI.
86 FSTA SIN2 /RESTORE AS 2.
87 XTA 0 /INVERT THE SIGN.
88 FNEG
89 FSUB F1SIN /SIN(X-PI)=-SIN(X)
90 ATX 0 /AND PUT BACK.
91/
92SINP, FLDA SIN2 /RECALL MAGIC GOODY.
93 FSUB FPI2SN /TEST TO SEE IF X<PI/2
94 JLT SINPP /YEP.
95/
96 FLDA FPISIN /SIN(X)=SIN(PI-X)
97 FSUB SIN2
98 FSTA SIN2 /AND STORE IT BACK.
99/
100SINPP, FLDA SIN2 /GET THE MAGIC NUMBER.
101 FSUB SINTST /SEE IF ITS CLOSE TO AN EDGE
102 JGT SINPPP /IT IS NOT
103 FLDA SIN2 /RECALL NUMBER IF TOO SMALE
104 JXN SINRTN,0 /EXIT IF SAME SIGN.
105 FNEG /ELSE NEGATE IT.
106 JA SINRTN
107SINPPP, FLDA SIN2 /RECALL NUMBER TO BE WORKED ON.
108 FDIV FPI2SN /DIVIDE BY PI OVER TWO.
109 FSTA SIN2 /AND STORE BACK.
110 FMUL SIN2 /MULTIPLY OUT.
111 FSTA SIN1
112 FMUL SINC9 /NOW DO THE STANDARD ITERATION.
113 FADD SINC7
114 FMUL SIN1
115 FADD SINC5
116 FMUL SIN1
117 FADD SINC3
118 FMUL SIN1
119 FADD FPI2SN /ADD IN PI OVER 2
120 FMUL SIN2 /DO THE FINAL MULTIPLY.
121 JXN SINRTN,0 /SHALL WE NEGATE
122 FNEG /YEP
123 JA SINRTN /AND RETURN.
124\f