ei.c

来自「适合大型数值计算代码 现在网络上已经找不到了 购买需要20$」· C语言 代码 · 共 47 行

C
47
字号
#include <math.h>#define EULER 0.57721566#define MAXIT 100#define FPMIN 1.0e-30#define EPS 6.0e-8float ei(float x){	void nrerror(char error_text[]);	int k;	float fact,prev,sum,term;	if (x <= 0.0) nrerror("Bad argument in ei");	if (x < FPMIN) return log(x)+EULER;	if (x <= -log(EPS)) {		sum=0.0;		fact=1.0;		for (k=1;k<=MAXIT;k++) {			fact *= x/k;			term=fact/k;			sum += term;			if (term < EPS*sum) break;		}		if (k > MAXIT) nrerror("Series failed in ei");		return sum+log(x)+EULER;	} else {		sum=0.0;		term=1.0;		for (k=1;k<=MAXIT;k++) {			prev=term;			term *= k/x;			if (term < EPS) break;			if (term < prev) sum += term;			else {				sum -= prev;				break;			}		}		return exp(x)*(1.0+sum)/x;	}}#undef EPS#undef EULER#undef MAXIT#undef FPMIN

⌨️ 快捷键说明

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