exp.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 45 行

C
45
字号
/*	exp returns the exponential function of its	floating-point argument.	The coefficients are #1069 from Hart and Cheney. (22.35D)*/#include <math.h>#include <errno.h>#define	p0  .2080384346694663001443843411e7#define	p1  .3028697169744036299076048876e5#define	p2  .6061485330061080841615584556e2#define	q0  .6002720360238832528230907598e7#define	q1  .3277251518082914423057964422e6#define	q2  .1749287689093076403844945335e4#define	log2e  1.4426950408889634073599247#define	sqrt2  1.4142135623730950488016887#define	maxf  10000doubleexp(double arg){	double fract, temp1, temp2, xsq;	int ent;	if(arg == 0)		return 1;	if(arg < -maxf) {		errno = ERANGE;		return 0;	}	if(arg > maxf) {		errno = ERANGE;		return HUGE_VAL;	}	arg *= log2e;	ent = floor(arg);	fract = (arg-ent) - 0.5;	xsq = fract*fract;	temp1 = ((p2*xsq+p1)*xsq+p0)*fract;	temp2 = ((xsq+q2)*xsq+q1)*xsq + q0;	return ldexp(sqrt2*(temp2+temp1)/(temp2-temp1), ent);}

⌨️ 快捷键说明

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