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

📄 exp10.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic	char sccsid[] = "@(#)exp10.c 1.1 92/07/30 SMI";#endif/* * Copyright (c) 1987 by Sun Microsystems, Inc. *//* exp10(x) * Code by K.C. Ng for SUN 4.0 libm. * Method : *	n = nint(x*(log10/log2)) ; *	exp10(x) = 10**x = exp(x*ln(10)) = exp(n*ln2+(x*ln10-n*ln2)) *		 = 2**n*exp(ln10*(x-n*log2/log10))) *	If x is an integer < 23 then use repeat multiplication. For *	10**22 is the largest representable integer. */#include <math.h>#include "libm.h"static double lg10    =  3.3219280948736234787,	/* log(10)/log(2)      */ln10    =  2.3025850929940456840,	/* log(10)	       */logt2hi =  3.0102999565860955045E-1,	/* log(2)/log(10) high */logt2lo =  5.3716447674669983622E-12,	/* log(2)/log(10) low  */tiny	=  1.0e-30;double exp10(x)double x ;{	register double t,ten;	register k;	if (!finite(x)) { if(x!=x||x>0) return x+x; else return 0.0;}	if(fabs(x)<tiny) return 1+x;	if( x < 310.0)	    if ( x > -330.0) {		k = x;		if (0<=k&&k<23&&(double)k==x) { /* x is a small +integer */		    t = 1.0;		    ten = 10.0; if(k&1) t*=ten; k >>=1;		    while(k) {ten*=ten; if(k&1) t*=ten; k>>=1;}		    return t;		}		t = anint(x*lg10);		return scalbn(exp(ln10*((x-t*logt2hi)-t*logt2lo)), (int)t);	    } else 		return scalbn( 1.0, -5000);	/* underflow */	else		return scalbn( 1.0,  5000);	/* overflow  */}

⌨️ 快捷键说明

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