/* @(#)e_sinh.c 1.3 95/01/18 */
/*
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright ( C ) 1993 by Sun Microsystems , Inc . All rights reserved .
*
* Developed at SunSoft , a Sun Microsystems , Inc . business .
* Permission to use , copy , modify , and distribute this
* software is freely granted , provided that this notice
* is preserved .
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
*/
//#include <sys/cdefs.h>
//__FBSDID("$FreeBSD$");
/* __ieee754_sinh(x)
* Method :
* mathematically sinh ( x ) if defined to be ( exp ( x ) - exp ( - x ) ) / 2
* 1 . Replace x by | x | ( sinh ( - x ) = - sinh ( x ) ) .
* 2 .
* E + E / ( E + 1 )
* 0 < = x < = 22 : sinh ( x ) : = - - - - - - - - - - - - - - , E = expm1 ( x )
* 2
*
* 22 < = x < = lnovft : sinh ( x ) : = exp ( x ) / 2
* lnovft < = x < = ln2ovft : sinh ( x ) : = exp ( x / 2 ) / 2 * exp ( x / 2 )
* ln2ovft < x : sinh ( x ) : = x * shuge ( overflow )
*
* Special cases :
* sinh ( x ) is | x | if x is + INF , - INF , or NaN .
* only sinh ( 0 ) = 0 is exact for finite x .
*/
#include <float .h>
#include <math.h>
#include "math_private.h"
static const double one = 1 .0 , shuge = 1 .0 e307;
double
__ieee754_sinh(double x)
{
double t,h;
int32_t ix,jx;
/* High word of |x|. */
GET_HIGH_WORD(jx,x);
ix = jx&0 x7fffffff;
/* x is INF or NaN */
if (ix>=0 x7ff00000) return x+x;
h = 0 .5 ;
if (jx<0 ) h = -h;
/* |x| in [0,22], return sign(x)*0.5*(E+E/(E+1))) */
if (ix < 0 x40360000) { /* |x|<22 */
if (ix<0 x3e300000) /* |x|<2**-28 */
if (shuge+x>one) return x;/* sinh(tiny) = tiny with inexact */
t = expm1(fabs(x));
if (ix<0 x3ff00000) return h*(2 .0 *t-t*t/(t+one));
return h*(t+t/(t+one));
}
/* |x| in [22, log(maxdouble)] return 0.5*exp(|x|) */
if (ix < 0 x40862E42) return h*__ieee754_exp(fabs(x));
/* |x| in [log(maxdouble), overflowthresold] */
if (ix<=0 x408633CE)
return h*2 .0 *__ldexp_exp(fabs(x), -1 );
/* |x| > overflowthresold, sinh(x) overflow */
return x*shuge;
}
Messung V0.5 in Prozent C=82 H=100 G=91
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet am 2026-08-23)
¤
*© Formatika GbR, Deutschland