File: SINH.RA of Tape: OS8/OS8-Latest/new-10
(Source file text) 

/R=SINH(R) SINGLE PREC. HYPERBOLIC SINE
/
/
/ VERSION 40A 26-MAY-80 WVDM
/
/
	SECT	SINH
	JA	#SINH
	TEXT	+SINH  +
SINHXR,	SETX	XRSINH
	SETB	BPSINH
BPSINH,	FNOP
	0
	0
XRSINH,	F 0.0
SINH6,	F 0.0
SINH7,	F 0.0
SINH8,	F 0.0
F1SINH,	F 1.
F2SINH,	F 2.
F3SINH,	F 20.
	ORG	10*3+BPSINH
	FNOP
	JA	SINHXR
	0
SNHRTN,	JA	.
/
SINHLG,	0			/LN(2)
	2613
	4412
/
SINH1,	F .1
/
SINH2,	F 88.02969		/LN(2^127)
/
SINH3,	F 6.

	BASE	0
#SINH,	STARTD
	FLDA	10*3
	FSTA	SNHRTN
	FLDA	0
	SETX	XRSINH
	SETB	BPSINH
	BASE	BPSINH
	LDX	1,1
	FSTA	BPSINH
	FLDA%	BPSINH,1	/ADDR OF X
	FSTA	BPSINH
	STARTF
	FLDA%	BPSINH		/GET X
	FSTA	SINH8		/SAVE THE ARGUMENT.
	JGE	.+3		/MAKE IT POSITIVE.
	FNEG
	FSTA	SINH7		/AND SAVE ABS VALUE IN CASE WE NEED IT.
	FSUB	SINH1		/IS IT LESS THEN .1?
	JLE	SINHSR		/YES. USE SERIES APPROXIMATION.
	FSUB	SINH2		/IS IT GREATER THEN 88.029?
	JGE	SINHAP		/YES. USE LOG(2) APPROXIMATION.
	EXTERN	EXP
	JSR	EXP		/EXP(X)
	JA	.+4
	JA	SINH8
	FSTA	SINH7
	FLDA	F1SINH
	FDIV	SINH7		/1/EXP(X)
	FNEG			/-1/EXP(X)
	FADD	SINH7		/EXP(X)-1/EXP(X)
	FDIV	F2SINH		/ 1/2(EXP(X)-1/EXP(X))
	JA	SNHRTN		/AND RETURN NOW.
/
/
SINHAP,	FLDA	SINH7		/RECALL ABSOLUTE VALUE.
	FSUB	SINHLG		/ABS(X)-LN(2)
	FSTA	SINH7		/EXP(ABS(X)-LN(2))
	EXTERN	EXP
	JSR	EXP
	JA	.+4
	JA	SINH7
	FSTA	SINH7
	FLDA	SINH8		/GET SIGN OF ARGUMENT.
	JGE	SPLR		/LOAD POSITIVE IF ARG WAS POSITIVE.
	FLDA	SINH7
	FNEG			/ELSE NEGATE IT.
	JA	SNHRTN		/AND RETURN.
SPLR,	FLDA	SINH7
	JA	SNHRTN
/
/
SINHSR,	FLDA	SINH8		/X  SERIES IF X<.1
	FMUL	SINH8		/X^2
	FSTA	SINH7		/X^2
	FMUL	SINH8		/X^3
	FDIV	SINH3		/X^3/6
	FSTA	SINH6		/X^3/6
	FMUL	SINH7		/X^5/6
	FDIV	F3SINH		/ /20=X^5/120
	FADD	SINH6		/X^5/120+X^3/6
	FADD	SINH8		/X+X^3/6+X^5/120
	JA	SNHRTN		/VOILA. WE ARE DONE.