mpadd.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 55 行

C
55
字号
#include "os.h"#include <mp.h>#include "dat.h"// sum = abs(b1) + abs(b2), i.e., add the magnitudesvoidmpmagadd(mpint *b1, mpint *b2, mpint *sum){	int m, n;	mpint *t;	// get the sizes right	if(b2->top > b1->top){		t = b1;		b1 = b2;		b2 = t;	}	n = b1->top;	m = b2->top;	if(n == 0){		mpassign(mpzero, sum);		return;	}	if(m == 0){		mpassign(b1, sum);		return;	}	mpbits(sum, (n+1)*Dbits);	sum->top = n+1;	mpvecadd(b1->p, n, b2->p, m, sum->p);	sum->sign = 1;	mpnorm(sum);}// sum = b1 + b2voidmpadd(mpint *b1, mpint *b2, mpint *sum){	int sign;	if(b1->sign != b2->sign){		if(b1->sign < 0)			mpmagsub(b2, b1, sum);		else			mpmagsub(b1, b2, sum);	} else {		sign = b1->sign;		mpmagadd(b1, b2, sum);		if(sum->top != 0)			sum->sign = sign;	}}

⌨️ 快捷键说明

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