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

📄 atanf.c

📁 linux下用PCMCIA无线网卡虚拟无线AP的程序源码
💻 C
字号:
/*							atanf.c * *	Inverse circular tangent *      (arctangent) * * * * SYNOPSIS: * * float x, y, atanf(); * * y = atanf( x ); * * * * DESCRIPTION: * * Returns radian angle between -pi/2 and +pi/2 whose tangent * is x. * * Range reduction is from four intervals into the interval * from zero to  tan( pi/8 ).  A polynomial approximates * the function in this basic interval. * * * * ACCURACY: * *                      Relative error: * arithmetic   domain     # trials      peak         rms *    IEEE      -10, 10     100000      1.9e-7      4.1e-8 * *//*							atan2f() * *	Quadrant correct inverse circular tangent * * * * SYNOPSIS: * * float x, y, z, atan2f(); * * z = atan2f( y, x ); * * * * DESCRIPTION: * * Returns radian angle whose tangent is y/x. * Define compile time symbol ANSIC = 1 for ANSI standard, * range -PI < z <= +PI, args (y,x); else ANSIC = 0 for range * 0 to 2PI, args (x,y). * * * * ACCURACY: * *                      Relative error: * arithmetic   domain     # trials      peak         rms *    IEEE      -10, 10     100000      1.9e-7      4.1e-8 * See atan.c. * *//*							atan.c *//*Cephes Math Library Release 2.2:  June, 1992Copyright 1984, 1987, 1989, 1992 by Stephen L. MoshierDirect inquiries to 30 Frost Street, Cambridge, MA 02140*//* Single precision circular arcsine * test interval: [-tan(pi/8), +tan(pi/8)] * trials: 10000 * peak relative error: 7.7e-8 * rms relative error: 2.9e-8 */#include <math.h>extern float PIF, PIO2F, PIO4F;float atanf( float xx ){float x, y, z;int sign;x = xx;/* make argument positive and save the sign */if( xx < 0.0 )	{	sign = -1;	x = -xx;	}else	{	sign = 1;	x = xx;	}/* range reduction */if( x > 2.414213562373095 )  /* tan 3pi/8 */	{	y = PIO2F;	x = -( 1.0/x );	}else if( x > 0.4142135623730950 ) /* tan pi/8 */	{	y = PIO4F;	x = (x-1.0)/(x+1.0);	}else	y = 0.0;z = x * x;y +=((( 8.05374449538e-2 * z  - 1.38776856032E-1) * z  + 1.99777106478E-1) * z  - 3.33329491539E-1) * z * x  + x;if( sign < 0 )	y = -y;return( y );}float atan2f( float y, float x ){float z, w;int code;code = 0;if( x < 0.0 )	code = 2;if( y < 0.0 )	code |= 1;if( x == 0.0 )	{	if( code & 1 )		{#if ANSIC		return( -PIO2F );#else		return( 3.0*PIO2F );#endif		}	if( y == 0.0 )		return( 0.0 );	return( PIO2F );	}if( y == 0.0 )	{	if( code & 2 )		return( PIF );	return( 0.0 );	}switch( code )	{	default:#if ANSIC	case 0:	case 1: w = 0.0; break;	case 2: w = PIF; break;	case 3: w = -PIF; break;#else	case 0: w = 0.0; break;	case 1: w = 2.0 * PIF; break;	case 2:	case 3: w = PIF; break;#endif	}z = atanf( y/x );return( w + z );}

⌨️ 快捷键说明

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