A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / sinh.ra
CommitLineData
81e70d48
PH
1/
2/
3/ S I N H
4/ - - - -
5/
6/SUBROUTINE SINH(X)
7/
8/ VERSION 5A 4-27-77 PT
9/
10 SECT SINH
11 JA #SINH
12 TEXT +SINH +
13SINHXR, SETX XRSINH
14 SETB BPSINH
15BPSINH, FNOP
16 0
17 0
18XRSINH, F 0.0
19SINH6, F 0.0
20SINH7, F 0.0
21SINH8, F 0.0
22F1SINH, F 1.
23F2SINH, F 2.
24 ORG 10*3+BPSINH
25 FNOP
26 JA SINHXR
27 0
28SNHRTN, JA .
29/
30SINHLG, 0
31 2613
32 4412
33/
34SINH1, F .1
35/
36SINH2, F 87.929
37/
38SINH3, F 6.
39/
40SINH4, F 120.
41 BASE 0
42#SINH, STARTD
43 FLDA 10*3
44 FSTA SNHRTN
45 FLDA 0
46 SETX XRSINH
47 SETB BPSINH
48 BASE BPSINH
49 LDX 1,1
50 FSTA BPSINH
51 FLDA% BPSINH,1 /ADDR OF X
52 FSTA BPSINH
53 STARTF
54 FLDA% BPSINH /GET X
55 FSTA SINH8 /SAVE THE ARGUMENT.
56 JGE .+3 /MAKE IT POSITIVE.
57 FNEG
58 FSTA SINH7 /AND SAVE ABS VALUE IN CASE WE NEED IT.
59 FSUB SINH1 /IS IT LESS THEN .1?
60 JLE SINHSR /YES. USE SERIES APPROXIMATION.
61 FSUB SINH2 /IS IT GREATER THEN 88.029?
62 JGE SINHAP /YES. USE LOG(2) APPROXIMATION.
63 EXTERN EXP
64 JSR EXP /EXP(X)
65 JA .+4
66 JA SINH8
67 FSTA SINH7
68 FLDA F1SINH
69 FDIV SINH7 /1/EXP(X)
70 FNEG /-1/EXP(X)
71 FADD SINH7 /EXP(X)-1/EXP(X)
72 FDIV F2SINH / 1/2(EXP(X)-1/EXP(X))
73 JA SNHRTN /AND RETURN NOW.
74/
75/
76SINHAP, FLDA SINH7 /RECALL ABSOULTE VALUE.
77 FSUB SINHLG /ABS(X)-LN(2)
78 FSTA SINH7 /EXP(ABS(X)-LN(2))
79 EXTERN EXP
80 JSR EXP
81 JA .+4
82 JA SINH7
83 FSTA SINH7
84 FLDA SINH8 /GET SIGN OF ARGUMENT.
85 JGE SPLR /LOAD POSITIVE IF ARG WAS POSITIVE.
86 FLDA SINH7
87 FNEG /ELSE NEGATE IT.
88 JA SNHRTN /AND RETURN.
89SPLR, FLDA SINH7
90 JA SNHRTN
91/
92/
93SINHSR, FLDA SINH8 /X SERIES IF X<.1
94 FMUL SINH8 /X^2
95 FSTA SINH7 /X^2
96 FMUL SINH8 /X^3
97 FSTA SINH6 /X^3
98 FMULM SINH7 /X^5
99 FDIV SINH3 /X^3/6
100 FADDM SINH8 /X+X^3/6
101 FLDA SINH7 /X^5
102 FDIV SINH4 /X^5/120
103 FADD SINH8 /X+X^3/6+X^5/120
104 JA SNHRTN /VOILA. WE ARE DONE.
105\f