当前位置: 首页>>代码示例>>C++>>正文


C++ base::is_zero方法代码示例

本文整理汇总了C++中base::is_zero方法的典型用法代码示例。如果您正苦于以下问题:C++ base::is_zero方法的具体用法?C++ base::is_zero怎么用?C++ base::is_zero使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在base的用法示例。


在下文中一共展示了base::is_zero方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: extended_gcd

void base::extended_gcd(base &n, base &u, base &v, base &g, INT verbose_level)
{
	INT f_v = (verbose_level >= 1);
	//INT f_vv = (verbose_level >= 2);
	base sign1, sign2;
	INT c;
	
	if (f_v) {
		cout << "base::extended_gcd() m=" << *this << " n=" << n << endl;
		}
	c = compare_with_euklidean(n);
	if (c < 0) {
		n.extended_gcd(*this, v, u, g, verbose_level);
		return;
		}
	if (f_v) {
		cout << "base::extended_gcd() m=" << *this << "(" << kind_ascii(s_kind()) << ")" 
			<< "n=" << n << "(" << kind_ascii(n.s_kind()) << ")" << endl;
		}
	u = *this;
	v = n;
	if (/* c == 0 ||*/ n.is_zero()) {
		u.one();
		v.zero();
		g = *this;
		return;
		}

	if (s_kind() == INTEGER) {
		INT a;
		a = s_i_i();
		if (a < 0) {
			sign1.m_i_i(-1);
			m_i_i(-a);
			}
		else
			sign1.m_i_i(1);
		
		a = n.s_i_i();
		if (a < 0) {
			sign2.m_i_i(-1);
			n.m_i_i(-a);
			}
		else
			sign2.m_i_i(1);
		
		}


	base M, N, Q, R;
	base u1, u2, u3, v1, v2, v3;
	
	M = *this;
	N = n;
	u1 = *this; u1.one();
	u2 = *this; u2.zero();
	v1 = n; v1.zero();
	v2 = n; v2.one();
	while (TRUE) {
		if (f_v) {
			cout << "loop:" << endl;
			cout << "M=" << M << "(" << kind_ascii(M.s_kind()) << ") N=" 
				<< N << "(" << kind_ascii(N.s_kind()) << ")" << endl;
			cout << "before integral_division" << endl;
			}
		M.integral_division(N, Q, R, verbose_level);
		if (f_v) {
			cout << "after integral_division" << endl;
			cout << "Q=" << Q << " R=" << R << endl;
			}
		if (R.is_zero()) {
			break;
			}
		// u3 := u1 - Q * u2
		u3 = u2;
		u3 *= Q;
		u3.negate();
		u3 += u1;
		
		// v3 := v1 - Q * v2
		v3 = v2;
		v3 *= Q;
		v3.negate();
		v3 += v1;
		
		M = N;
		N = R;
		u1 = u2;
		u2 = u3;
		v1 = v2;
		v2 = v3;
		}
	u = u2;
	v = v2;
	g = N;
	if (s_kind() == INTEGER) {
		// cout << "sign1=" << sign1 << endl;
		// cout << "sign2=" << sign2 << endl;
		INT a;
		
//.........这里部分代码省略.........
开发者ID:SALAM2016,项目名称:orbiter,代码行数:101,代码来源:base.C


注:本文中的base::is_zero方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。