⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asinh.c

📁 数学运算库源码
💻 C
字号:
/*							asinh.c * *	Inverse hyperbolic sine * * * * SYNOPSIS: * * double x, y, asinh(); * * y = asinh( x ); * * * * DESCRIPTION: * * Returns inverse hyperbolic sine of argument. * * If |x| < 0.5, the function is approximated by a rational * form  x + x**3 P(x)/Q(x).  Otherwise, * *     asinh(x) = log( x + sqrt(1 + x*x) ). * * * * ACCURACY: * *                      Relative error: * arithmetic   domain     # trials      peak         rms *    DEC      -3,3         75000       4.6e-17     1.1e-17 *    IEEE     -1,1         30000       3.7e-16     7.8e-17 *    IEEE      1,3         30000       2.5e-16     6.7e-17 * *//*						asinh.c	*//*Cephes Math Library Release 2.8:  June, 2000Copyright 1984, 1995, 2000 by Stephen L. Moshier*/#include "mconf.h"#ifdef UNKstatic double P[] = {-4.33231683752342103572E-3,-5.91750212056387121207E-1,-4.37390226194356683570E0,-9.09030533308377316566E0,-5.56682227230859640450E0};static double Q[] = {/* 1.00000000000000000000E0,*/ 1.28757002067426453537E1, 4.86042483805291788324E1, 6.95722521337257608734E1, 3.34009336338516356383E1};#endif#ifdef DECstatic unsigned short P[] = {0136215,0173033,0110410,0105475,0140027,0076361,0020056,0164520,0140613,0173401,0160136,0053142,0141021,0070744,0000503,0176261,0140662,0021550,0073106,0133351};static unsigned short Q[] = {/* 0040200,0000000,0000000,0000000,*/0041116,0001336,0034120,0173054,0041502,0065300,0013144,0021231,0041613,0022376,0035516,0153063,0041405,0115216,0054265,0004557};#endif#ifdef IBMPCstatic unsigned short P[] = {0x1168,0x7221,0xbec3,0xbf71,0xdd2a,0x2405,0xef9e,0xbfe2,0xcacc,0x3c0b,0x7ee0,0xc011,0x7f96,0x8028,0x2e3c,0xc022,0xd6dd,0x0ec8,0x446d,0xc016};static unsigned short Q[] = {/* 0x0000,0x0000,0x0000,0x3ff0,*/0x1ec5,0xc70a,0xc05b,0x4029,0x8453,0x02cc,0x4d58,0x4048,0xdac6,0xc769,0x649f,0x4051,0xa12e,0xcb16,0xb351,0x4040};#endif#ifdef MIEEEstatic unsigned short P[] = {0xbf71,0xbec3,0x7221,0x1168,0xbfe2,0xef9e,0x2405,0xdd2a,0xc011,0x7ee0,0x3c0b,0xcacc,0xc022,0x2e3c,0x8028,0x7f96,0xc016,0x446d,0x0ec8,0xd6dd};static unsigned short Q[] = {0x4029,0xc05b,0xc70a,0x1ec5,0x4048,0x4d58,0x02cc,0x8453,0x4051,0x649f,0xc769,0xdac6,0x4040,0xb351,0xcb16,0xa12e};#endif#ifdef ANSIPROTextern double polevl ( double, void *, int );extern double p1evl ( double, void *, int );extern double sqrt ( double );extern double log ( double );#elsedouble log(), sqrt(), polevl(), p1evl();#endifextern double LOGE2, INFINITY;double asinh(xx)double xx;{double a, z, x;int sign;#ifdef MINUSZEROif( xx == 0.0 )  return(xx);#endifif( xx < 0.0 )	{	sign = -1;	x = -xx;	}else	{	sign = 1;	x = xx;	}if( x > 1.0e8 )	{#ifdef INFINITIES	  if( x == INFINITY )	    return(xx);#endif	return( sign * (log(x) + LOGE2) );	}z = x * x;if( x < 0.5 )	{	a = ( polevl(z, P, 4)/p1evl(z, Q, 4) ) * z;	a = a * x  +  x;	if( sign < 0 )		a = -a;	return(a);	}	a = sqrt( z + 1.0 );return( sign * log(x + a) );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -