	.TITLE	.SPHYP
/
/ SINGLE PRECISION HYPERBOLIC FUNCTIONS
/
	.GLOBL	SINH,COSH,TANH,.SINH,.COSH
	.GLOBL	.SNGL,.EXP,.SPRST,.SPRLD,.LODBS,.SPRML,.SPRDV,.SPADD
	.GLOBL	.LDPT5,.ADDR1,.EXPB,.EXPA,.CMPLA,.LOAD1,.MODEA,.SIGNA
	.GLOBL	.GRAB
/
SINH	XX
	JMS*	.GRAB
	JMS	.SINH
	JMP*	SINH
/
COSH	XX
	JMS*	.GRAB
	JMS	.COSH
	JMP*	COSH
/
.SINH	XX
	JMS*	.SNGL	/SET MODE
	LAC	(400000	/SET SIGN TO MINUS
	DAC	SIGN
HYPTIE	LAC*	.MODEA
	JMS*	.EXP	/E**X
	LAC	.ADDR1
	JMS*	.SPRST
	JMS*	.LODBS
	JMS*	.SPRML	/E**2*X
	LAC	SIGN
	JMS*	.LDPT5
	ISZ*	.EXPB	/+ OR - 1.0
	JMS*	.SPADD	/E**2*X (+ OR -) 1.0
	LAC	.ADDR1
	JMS*	.SPRLD
	ISZ*	.EXPB	/2*E**X
	JMS*	.SPRDV
	JMP*	.SINH
/
.COSH	XX
	JMS*	.SNGL	/SET MODE
	DZM	SIGN	/SET SIGN TO POSITIVE
	LAC	.COSH
	DAC	.SINH
	JMP	HYPTIE
/
TANH	XX
	JMS*	.GRAB	/ FETCH THE ARGUMENT
	JMS*	.SNGL	/SET MODE
	LAW	-5
	TAD*	.EXPA
	SMA!CLA!STL
	JMP	TANH1	/X.GT.16., TANH=1.0
	ISZ*	.EXPA	/MULTIPLY X BY 2
	SKP!RTR		/RESTORE MODE
	JMP	.-2	/-0 TO +0, TRY AGAIN
	JMS*	.EXP	/CALCULATE E**2X
	CLA
	JMS*	.LDPT5
	ISZ*	.EXPB	/LOAD 1.0
	JMS*	.SPADD
	JMS*	.LODBS	/ACC A TO ACC B
	JMS*	.LOAD1
	ISZ*	.EXPA	/ACC A=2.0
	JMS*	.SPRDV
	CLA
	JMS*	.LDPT5
	ISZ*	.EXPB	/ACC B=1.0
	JMS*	.CMPLA
	JMS*	.SPADD
	JMP*	TANH
/
TANH1	LAC*	.SIGNA
	DAC	SIGN
	JMS*	.LOAD1
	LAC	SIGN
	DAC*	.SIGNA
	JMP*	TANH
/
SIGN
/
	.END
