mpdiv.c

来自「可以用于科学计算的库」· C语言 代码 · 共 34 行

C
34
字号

#define NRANSI
#include "nrutil.h"
#define MACC 6

void mpdiv(unsigned char q[], unsigned char r[], unsigned char u[],
	unsigned char v[], int n, int m)
{
	void mpinv(unsigned char u[], unsigned char v[], int n, int m);
	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 mpsad(unsigned char w[], unsigned char u[], int n, int iv);
	void mpsub(int *is, unsigned char w[], unsigned char u[], unsigned char v[],
		int n);
	int is;
	unsigned char *rr,*s;

	rr=cvector(1,(n+MACC)<<1);
	s=cvector(1,(n+MACC)<<1);
	mpinv(s,v,n+MACC,m);
	mpmul(rr,s,u,n+MACC,n);
	mpsad(s,rr,n+MACC-1,1);
	mpmov(q,&s[2],n-m+1);
	mpmul(rr,q,v,n-m+1,m);
	mpsub(&is,&rr[1],u,&rr[1],n);
	if (is) nrerror("MACC too small in mpdiv");
	mpmov(r,&rr[n-m+1],m);
	free_cvector(s,1,(n+MACC)<<1);
	free_cvector(rr,1,(n+MACC)<<1);
}
#undef MACC
#undef NRANSI

⌨️ 快捷键说明

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