plgndr.c

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

C
37
字号
#include <math.h>float plgndr(int l, int m, float x){	void nrerror(char error_text[]);	float fact,pll,pmm,pmmp1,somx2;	int i,ll;	if (m < 0 || m > l || fabs(x) > 1.0)		nrerror("Bad arguments in routine plgndr");	pmm=1.0;	if (m > 0) {		somx2=sqrt((1.0-x)*(1.0+x));		fact=1.0;		for (i=1;i<=m;i++) {			pmm *= -fact*somx2;			fact += 2.0;		}	}	if (l == m)		return pmm;	else {		pmmp1=x*(2*m+1)*pmm;		if (l == (m+1))			return pmmp1;		else {			for (ll=m+2;ll<=l;ll++) {				pll=(x*(2*ll-1)*pmmp1-(ll+m-1)*pmm)/(ll-m);				pmm=pmmp1;				pmmp1=pll;			}			return pll;		}	}}

⌨️ 快捷键说明

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