BSD 4_3_Reno release
[unix-history] / usr / src / old / libm / liboldnm / sinh.s
#
# Copyright (c) 1980 Regents of the University of California.
# All rights reserved. The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#
# @(#)sinh.s 5.1 (Berkeley) 5/8/85
#
#
# double _sinh(arg)
# double _cosh(arg)
# double arg
# method: compute from exp except for sinh where -.5<arg<.5
# then a polynimial approx. is uded
# JF Jarvis, August 12,1978
.globl _sinh
.globl _cosh
.globl _exp
.text
.align 1
_sinh:
.word 0x0c0
bispsw $0xe0
movd 4(ap),r6
cmpd r6,$0d0.5e+0
jgeq expfrm
cmpd r6,$0d-0.5e+0
jleq expfrm
muld3 r6,r6,r0 # Hart&Cheney SINH 1985
polyd r0,$5,pcoef
muld2 r6,r0
ret
expfrm:
movd r6,-(sp) # sinh(x)=(exp(x)-exp(-x))/2
calls $2,_exp
divd3 r0,$0d1.0e+0,r2
subd2 r2,r0
muld2 $0d0.5e+0,r0
ret
.align 1
_cosh:
.word 0x0
bispsw $0xe0
movd 4(ap),-(sp)
calls $2,_exp
divd3 r0,$0d1.0e+0,r2
addd2 r2,r0
muld2 $0d0.5e+0,r0
ret
.data
.align 2
pcoef:
.double 0d0.251726188251e-7
.double 0d0.275569807356154e-5
.double 0d0.1984127027907999e-3
.double 0d0.833333333307759961e-2
.double 0d0.16666666666667212324e+0
.double 0d0.99999999999999998116e+0