| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | /*							coshl.c * *	Hyperbolic cosine, long double precision * * * * SYNOPSIS: * * long double x, y, coshl(); * * y = coshl( x ); * * * * DESCRIPTION: * * Returns hyperbolic cosine of argument in the range MINLOGL to * MAXLOGL. * * cosh(x)  =  ( exp(x) + exp(-x) )/2. * * * * ACCURACY: * *                      Relative error: * arithmetic   domain     # trials      peak         rms *    IEEE     +-10000      30000       1.1e-19     2.8e-20 * * * ERROR MESSAGES: * *   message         condition              value returned * cosh overflow    |x| > MAXLOGL+LOGE2L      INFINITYL * * *//*Cephes Math Library Release 2.7:  May, 1998Copyright 1985, 1991, 1998 by Stephen L. Moshier*/#include <math.h>extern long double MAXLOGL, MAXNUML, LOGE2L;#ifdef ANSIPROTextern long double expl ( long double );extern int isnanl ( long double );#elselong double expl(), isnanl();#endif#ifdef INFINITIESextern long double INFINITYL;#endif#ifdef NANSextern long double NANL;#endiflong double coshl(x)long double x;{long double y;#ifdef NANSif( isnanl(x) )	return(x);#endifif( x < 0 )	x = -x;if( x > (MAXLOGL + LOGE2L) )	{	mtherr( "coshl", OVERFLOW );#ifdef INFINITIES	return( INFINITYL );#else	return( MAXNUML );#endif	}	if( x >= (MAXLOGL - LOGE2L) )	{	y = expl(0.5L * x);	y = (0.5L * y) * y;	return(y);	}y = expl(x);y = 0.5L * (y + 1.0L / y);return( y );}
 |