📄 sinh.c
字号:
#ifndef lintstatic char sccsid[] = "@(#)sinh.c 1.1 92/07/30 SMI";#endif/* * Copyright (c) 1986 by Sun Microsystems, Inc. *//* sinh(x) * Code originated from 4.3bsd. * Modified by K.C. Ng for SUN 4.0 libm. * Method : * 1. reduce x to non-negative by sinh(-x) = - sinh(x). * 2. * * expm1(x) + expm1(x)/(expm1(x)+1) * 0 <= x <= lnovft : sinh(x) := -------------------------------- * 2 * lnovft <= x < INF : sinh(x) := exp(x-1024*ln2)*2**1023 * * * Special cases: * sinh(x) is x if x is +INF, -INF, or NaN. * only sinh(0)=0 is exact for finite argument. * */#include <math.h>#include "libm.h"double sinh(x)double x;{ double r,t; if(!finite(x)) return x+x; /* sinh of NaN or +-INF is itself */ r=fabs(x); if(r<lnovft) {t=expm1(r); r = copysign((t+t/(1.0+t))*0.5,x);} else { if (r<1000.0) x = copysign(exp((r-1024*ln2hi)-1024*ln2lo),x); r = scalbn(x,1023); } if (!finite(r)) r = SVID_libm_err(x,x,25); return r;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -