C++数值算法原书代码

源代码在线查看: spread.cpp

软件大小: 378 K
上传用户: starsrain1
关键词: 数值算法 代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				#include "nr.h"
				
				void NR::spread(const DP y, Vec_IO_DP &yy, const DP x, const int m)
				{
					static int nfac[11]={0,1,1,2,6,24,120,720,5040,40320,362880};
					int ihi,ilo,ix,j,nden;
					DP fac;
				
					int n=yy.size();
					if (m > 10) nrerror("factorial table too small in spread");
					ix=int(x);
					if (x == DP(ix)) yy[ix-1] += y;
					else {
						ilo=MIN(MAX(int(x-0.5*m),0),int(n-m));
						ihi=ilo+m;
						nden=nfac[m];
						fac=x-ilo-1;
						for (j=ilo+1;j						yy[ihi-1] += y*fac/(nden*(x-ihi));
						for (j=ihi-1;j>ilo;j--) {
							nden=(nden/(j-ilo))*(j-ihi);
							yy[j-1] += y*fac/(nden*(x-j));
						}
					}
				}
							

相关资源