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

📄 mppi.c

📁 适合大型数值计算代码 现在网络上已经找不到了 购买需要20$
💻 C
字号:
#include <stdio.h>#define NRANSI#include "nrutil.h"#define IAOFF 48void mppi(int n){	void mp2dfr(unsigned char a[], unsigned char s[], int n, int *m);	void mpadd(unsigned char w[], unsigned char u[], unsigned char v[], int n);	void mpinv(unsigned char u[], unsigned char v[], int n, int m);	void mplsh(unsigned char u[], int n);	void mpmov(unsigned char u[], unsigned char v[], int n);	void mpmul(unsigned char w[], unsigned char u[], unsigned char v[], int n,		int m);	void mpsdv(unsigned char w[], unsigned char u[], int n, int iv, int *ir);	void mpsqrt(unsigned char w[], unsigned char u[], unsigned char v[], int n,		int m);	int ir,j,m;	unsigned char mm,*x,*y,*sx,*sxi,*t,*s,*pi;	x=cvector(1,n+1);	y=cvector(1,n<<1);	sx=cvector(1,n);	sxi=cvector(1,n);	t=cvector(1,n<<1);	s=cvector(1,3*n);	pi=cvector(1,n+1);	t[1]=2;	for (j=2;j<=n;j++) t[j]=0;	mpsqrt(x,x,t,n,n);	mpadd(pi,t,x,n);	mplsh(pi,n);	mpsqrt(sx,sxi,x,n,n);	mpmov(y,sx,n);	for (;;) {		mpadd(x,sx,sxi,n);		mpsdv(x,&x[1],n,2,&ir);		mpsqrt(sx,sxi,x,n,n);		mpmul(t,y,sx,n,n);		mpadd(&t[1],&t[1],sxi,n);		x[1]++;		y[1]++;		mpinv(s,y,n,n);		mpmul(y,&t[2],s,n,n);		mplsh(y,n);		mpmul(t,x,s,n,n);		mm=t[2]-1;		for (j=3;j<=n;j++) {			if (t[j] != mm) break;		}		m=t[n+1]-mm;		if (j <= n || m > 1 || m < -1) {				mpmul(s,pi,&t[1],n,n);				mpmov(pi,&s[1],n);				continue;		}		printf("pi=\n");		s[1]=pi[1]+IAOFF;		s[2]='.';		m=mm;		mp2dfr(&pi[1],&s[2],n-1,&m);		s[m+3]=0;		printf(" %64s\n",&s[1]);		free_cvector(pi,1,n+1);		free_cvector(s,1,3*n);		free_cvector(t,1,n<<1);		free_cvector(sxi,1,n);		free_cvector(sx,1,n);		free_cvector(y,1,n<<1);		free_cvector(x,1,n+1);		return;	}}#undef IAOFF#undef NRANSI

⌨️ 快捷键说明

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